@aquera/data-visualizer-sdk 0.0.33 → 0.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunk-DDJDCTLO.js +2 -0
- package/{chunk-3CHM3VJC.js → chunk-FLBVD7RK.js} +3 -3
- package/{chunk-23DV3HTS.js → chunk-G6EFZAIZ.js} +1 -1
- package/chunk-KCJGBOLS.js +11 -0
- package/{chunk-IOTDUA53.js → chunk-KDB5RXST.js} +1 -1
- package/chunk-LO4RVBEE.js +22 -0
- package/{chunk-QPAU7APM.js → chunk-NXAJDSEQ.js} +692 -692
- package/{chunk-STUPIIQG.js → chunk-WNGIOI2D.js} +1 -1
- package/{chunk-4U4U4DDS.js → chunk-WYPKWUCR.js} +1 -1
- package/main.js +1 -1
- package/package.json +1 -1
- package/chunk-6LG7H6HC.js +0 -22
- package/chunk-EQ5QTRVH.js +0 -2
- package/chunk-QYGJCRGA.js +0 -11
package/chunk-QYGJCRGA.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{$a as un,Aa as Fe,Ca as Re,D as Wt,Da as tn,E as Ft,Ea as nn,F as Rt,Fa as an,G as Nt,Ga as q,H as j,I as Lt,J as zt,Ja as on,K as be,L as qt,M as $t,Ma as Ne,N as Vt,Na as rn,O as Bt,Oa as sn,P as Ae,Pa as Le,Qa as ze,R as Gt,Ra as dn,Sa as ln,T as Ut,Ua as Y,Va as qe,Wa as cn,Xa as gn,Ya as hn,Za as pn,_a as mn,a as st,ab as bn,b as dt,bb as nt,c as Dt,ca as Ie,cb as _n,da as Ht,ea as jt,eb as $e,f as Pt,fa as Kt,fb as Ve,ga as Jt,h as he,ha as Qt,i as pe,ia as Zt,jb as fn,k as Z,l as te,m as Mt,mb as Be,n as St,na as Yt,ob as it,p as Ot,pb as yn,r as kt,s as Et,sa as Xt,t as me,u as Tt,v as At,va as We,x as ue,y as It,ya as en,za as _e}from"./chunk-QPAU7APM.js";import{c as tt,d as Ee,f as we,g as Te}from"./chunk-XUJBDACP.js";import{Ab as Ze,B as ct,Bb as M,Fb as y,Gb as Ye,Hb as g,Kb as Se,La as ut,Lb as U,Ma as l,Mb as H,N as ee,Pb as yt,Qb as Xe,R as gt,Rb as Ct,S as f,Tb as m,Ua as bt,Ub as Q,Vb as V,Wb as Oe,X as C,Y as v,Z as ve,_ as Me,_a as xe,ac as vt,ba as ce,bb as G,bc as ke,cc as et,d as le,da as T,db as _t,ea as ht,ec as xt,fc as wt,gb as oe,ha as pt,ia as c,la as O,mb as $,mc as P,nb as b,ob as _,p as F,pb as ge,pc as ne,qa as mt,qb as ft,qc as A,rb as K,sb as J,tb as x,ub as s,vb as d,wb as p,xb as Ke,y as lt,yb as Je,zb as Qe}from"./chunk-3CHM3VJC.js";import{a as D,b as W,d as de}from"./chunk-ZW5NV4UO.js";var at="__dvDashboardsBusHub__";function Cn(){return typeof window>"u"?new le:(window[at]||(window[at]=new le),window[at])}var ie=class a{changes$=Cn().asObservable();notifyChanged(){Cn().next()}static \u0275fac=function(t){return new(t||a)};static \u0275prov=ee({token:a,factory:a.\u0275fac,providedIn:"root"})};var ae=class a{http=f(te);tokenStore=f(j);injectedBaseUrl=f(Ae,{optional:!0})??"";get baseUrl(){return zt()||this.injectedBaseUrl}permissions=c(new Set);roleSystemKey=c(null);roleName=c(null);loaded=c(!1);isOwner=P(()=>this.roleSystemKey()==="owner");inflight=null;inflightTenant=null;revalidatedForTenant=null;lastTenant=null;constructor(){O(()=>{let e=this.tokenStore.tenantId();if(!e){this.lastTenant&&(this.lastTenant=null,this.clear(),this.purgeCache());return}this.lastTenant&&this.lastTenant!==e&&this.clear(),this.lastTenant=e,this.hydrateFromCache(e),this.load(e)})}has(e){let t=e==="user.invite"?"user.create":e;return this.permissions().has(t)}ensureLoaded(){let e=this.tokenStore.tenantId();return!e||this.loaded()&&this.revalidatedForTenant===e?Promise.resolve():this.load(e)}load(e){return this.revalidatedForTenant===e&&this.loaded()?Promise.resolve():this.inflight&&this.inflightTenant===e?this.inflight:(this.inflightTenant=e,this.inflight=this.fetch(e).finally(()=>{this.inflight=null,this.inflightTenant=null}),this.inflight)}reload(){this.revalidatedForTenant=null;let e=this.tokenStore.tenantId();return e?this.load(e):Promise.resolve()}async fetch(e){let t=be();if(!t){this.clear();return}try{let n=`${this.baseUrl}/api/customers/${e}/products/${t}/workforce/access-control/me/permissions`,i=await F(this.http.get(n)),o=i?.data?.permissions??[],r=i?.data?.role?.systemKey??null,h=i?.data?.role?.name??null;this.permissions.set(new Set(o)),this.roleSystemKey.set(r),this.roleName.set(h),this.loaded.set(!0),this.revalidatedForTenant=e,this.writeCache(e,{permissions:o,systemKey:r,roleName:h})}catch{this.dropCache(e),this.clear()}}clear(){this.permissions.set(new Set),this.roleSystemKey.set(null),this.roleName.set(null),this.loaded.set(!1),this.revalidatedForTenant=null}cacheKey(e){let t=Nt(this.tokenStore.idToken()??this.tokenStore.accessToken());return t?`wfi.perms.${t}.${e}`:null}hydrateFromCache(e){if(this.loaded())return;let t=this.cacheKey(e);if(t)try{let n=sessionStorage.getItem(t);if(!n)return;let i=JSON.parse(n);if(!Array.isArray(i?.permissions))return;this.permissions.set(new Set(i.permissions)),this.roleSystemKey.set(i.systemKey??null),this.roleName.set(i.roleName??null),this.loaded.set(!0)}catch{}}writeCache(e,t){let n=this.cacheKey(e);if(n)try{sessionStorage.setItem(n,JSON.stringify(t))}catch{}}dropCache(e){let t=this.cacheKey(e);if(t)try{sessionStorage.removeItem(t)}catch{}}purgeCache(){try{let e=[];for(let t=0;t<sessionStorage.length;t++){let n=sessionStorage.key(t);n?.startsWith("wfi.perms.")&&e.push(n)}for(let t of e)sessionStorage.removeItem(t)}catch{}}static \u0275fac=function(t){return new(t||a)};static \u0275prov=ee({token:a,factory:a.\u0275fac,providedIn:"root"})};var se=class a{templateRef=f(bt);viewContainer=f(xe);perms=f(ae);viewRef=null;key="";constructor(){this.perms.ensureLoaded(),O(()=>{this.perms.permissions(),this.render()})}set hasPermission(e){this.key=e,this.render()}render(){let e=!!this.key&&this.perms.has(this.key);e&&!this.viewRef?this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef):!e&&this.viewRef&&(this.viewContainer.clear(),this.viewRef=null)}ngOnDestroy(){this.viewContainer.clear(),this.viewRef=null}static \u0275fac=function(t){return new(t||a)};static \u0275dir=_t({type:a,selectors:[["","hasPermission",""]],inputs:{hasPermission:"hasPermission"}})};function Dn(){return{enabled:!0,ask:!0,changeChartType:!0,manageFilters:!0,customizeColors:!0,chartData:!0,setAlert:!0,forecast:!0,addToStory:!0,exportPng:!0,exportCsv:!0,print:!0,tweak:!0,edit:!0,delete:!0}}function Pn(){return{mcpGateway:ue.MCP_GATEWAY_ENABLED??!1,create:!0,categoryFilter:!0,delete:!0,askAquera:!0,builder:!0,widgetMenu:Dn()}}function vn(){return{baseUrl:ue.baseUrl??"",mcpUrl:ue.MCP_URL??null,tokenizedOrigins:[ue.baseUrl].filter(a=>!!a),headers:{},customerId:null,productId:null,productName:null,authMode:"inherit",authToken:null,getToken:null,resolvedToken:null,onUnauthorized:null,ssoEnabled:ue.SSO_ENABLED??!1,features:Pn(),ui:{theme:"light",density:"comfortable",header:!0,canvasBackgroundColor:null,locale:"en",autoHeight:!1},hrefs:{askAquera:"/ask-aquera",builder:"/manage-dashboards"},initialDashboardId:null,initialDatasource:null,initialCreateDashboard:!1,initialTool:null}}var xn=Et("manageDashboards",vn);function I(){return xn.read()}function wn(a){let e=vn(),t=W(D(D({},e),me(a)),{features:W(D(D({},e.features),me(a.features??{})),{widgetMenu:D(D({},e.features.widgetMenu),me(a.features?.widgetMenu??{}))}),ui:D(D({},e.ui),me(a.ui??{})),hrefs:D(D({},e.hrefs),me(a.hrefs??{})),headers:D(D({},e.headers),a.headers??{})});return a.tokenizedOrigins||(t.tokenizedOrigins=[t.baseUrl,t.mcpUrl].filter(n=>!!n)),xn.write(t)}var k={get baseUrl(){return I().baseUrl},get MCP_URL(){return I().mcpUrl??""},get MCP_GATEWAY_ENABLED(){return I().features.mcpGateway},get SSO_ENABLED(){return I().ssoEnabled}};function ot(){return I().customerId??Ft("_TenantID")??""}function R(){return I().productId??""}var B=class a{requests$=new le;requests=this.requests$.asObservable();listState$=new le;listState=this.listState$.asObservable();reportListState(e){this.listState$.next(e)}dashboardId=c(null);datasource=c(null);search=c("");createDashboardRequest=c(0);initialTool=c(null);openTool(e){this.initialTool.set(e)}openDashboard(e){let t=I();if(!t.features.builder){this.requests$.next({to:`${t.hrefs.builder}/${e}`});return}this.dashboardId.set(e)}exitToList(){this.dashboardId.set(null)}requestCreateDashboard(){this.createDashboardRequest.update(e=>e+1)}selectDatasource(e){this.datasource.set(e)}toAskAquera(){this.requests$.next({to:I().hrefs.askAquera})}toAskAqueraDashboard(e,t){this.requests$.next({to:`${I().hrefs.askAquera}/dashboard/${e}`,queryParams:t})}static \u0275fac=function(t){return new(t||a)};static \u0275prov=ee({token:a,factory:a.\u0275fac})};function Mn(a,e){a&1&&(Ke(0,"nile-tooltip",0)(1,"span",2),Ye("mousedown",function(n){return n.stopPropagation()})("click",function(n){return n.stopPropagation()}),Qe(2,"nile-glyph",3),Je()())}function Sn(a,e){if(a&1){let t=M();Ke(0,"span",4),Ye("mousedown",function(i){return i.stopPropagation()})("click",function(i){C(t);let o=g();return i.stopPropagation(),v(o.deleteClick.emit(i))}),Qe(1,"nile-glyph",5),Je()}}var fe=class a{disabled=A(!1);deleteClick=new T;static \u0275fac=function(t){return new(t||a)};static \u0275cmp=G({type:a,selectors:[["dash-card-delete-action"]],inputs:{disabled:[1,"disabled"]},outputs:{deleteClick:"deleteClick"},decls:2,vars:1,consts:[["content","Auto-generated dashboards can't be deleted","placement","bottom"],["role","button","tabindex","0","aria-label","Delete dashboard",1,"dash-card__action"],["aria-label","Delete dashboard","aria-disabled","true",1,"dash-card__action","dash-card__action--disabled",3,"mousedown","click"],["name","ng-trash-01","method","stroke","size","14","color","#d0d5dd"],["role","button","tabindex","0","aria-label","Delete dashboard",1,"dash-card__action",3,"mousedown","click"],["name","ng-trash-01","method","stroke","size","14","color","#d92d20"]],template:function(t,n){t&1&&b(0,Mn,3,0,"nile-tooltip",0)(1,Sn,2,0,"span",1),t&2&&_(n.disabled()?0:1)},styles:["[_nghost-%COMP%]{display:contents}.dash-card__action-wrap[_ngcontent-%COMP%]{display:contents}.dash-card__action--disabled[_ngcontent-%COMP%]{cursor:default}"]})};var On=(a,e)=>e.id;function kn(a,e){if(a&1){let t=M();s(0,"div",1)(1,"span",11),m(2,"Category"),d(),s(3,"shared-category-filter-row",12),y("selectionChange",function(i){C(t);let o=g();return v(o.onCategoryChange(i))}),d()()}if(a&2){let t=g();l(3),x("selected",t.selectedCategory())}}function En(a,e){if(a&1&&p(0,"nile-skeleton-loader",16),a&2){let t=e.$implicit;$("height",t)}}function Tn(a,e){if(a&1&&(s(0,"div",13)(1,"div",14)(2,"div",15),K(3,En,1,1,"nile-skeleton-loader",16,ge),d()(),s(5,"div",17)(6,"div",18),p(7,"nile-skeleton-loader",19),d(),s(8,"div",20),p(9,"nile-skeleton-loader",21),d()()()),a&2){let t=g(2);l(3),J(t.skeletonBarHeights)}}function An(a,e){if(a&1&&(s(0,"div",3),K(1,Tn,10,0,"div",13,ge),d()),a&2){let t=g();l(),J(t.skeletonSlots)}}function In(a,e){if(a&1){let t=M();s(0,"nile-button",71),y("click",function(){C(t);let i=g(3);return v(i.openCreate())}),p(1,"nile-glyph",72),m(2," Create dashboard "),d()}}function Wn(a,e){a&1&&oe(0,In,3,0,"nile-button",70),a&2&&x("hasPermission","dashboard.create")}function Fn(a,e){if(a&1&&(s(0,"div",4)(1,"div",22),ve(),s(2,"svg",23)(3,"defs")(4,"linearGradient",24),p(5,"stop",25)(6,"stop",26),d()(),p(7,"rect",27)(8,"line",28)(9,"line",29)(10,"circle",30)(11,"circle",31)(12,"circle",32)(13,"circle",33)(14,"circle",34)(15,"circle",35)(16,"path",36),s(17,"circle",37),p(18,"animate",38),d(),s(19,"circle",39),p(20,"animate",40),d(),p(21,"rect",41)(22,"rect",42)(23,"rect",43)(24,"rect",44)(25,"rect",45)(26,"rect",46)(27,"rect",47)(28,"rect",48)(29,"rect",49)(30,"rect",50),s(31,"rect",51),p(32,"animate",52)(33,"animate",53),d(),s(34,"rect",54),p(35,"animate",55)(36,"animate",56),d(),s(37,"rect",57),p(38,"animate",58)(39,"animate",59),d(),s(40,"rect",60),p(41,"animate",61)(42,"animate",62),d(),s(43,"path",63),p(44,"animate",64),d(),s(45,"circle",65),p(46,"animate",66),d()()(),Me(),s(47,"h2",67),m(48,"Build your first dashboard"),d(),s(49,"p",68),m(50," Dashboards bring your data to life with charts, KPIs, and tables. Create one to start exploring. "),d(),b(51,Wn,1,1,"nile-button",69),d()),a&2){let t=g();l(51),_(t.features().create?51:-1)}}function Rn(a,e){a&1&&(s(0,"div",5)(1,"h2",67),m(2,"No dashboards match your search"),d(),s(3,"p",68),m(4,"Try a different name or clear the search to see all dashboards."),d()())}function Nn(a,e){if(a&1&&(s(0,"span",77),p(1,"nile-glyph",85),m(2),d()),a&2){let t=g().$implicit;l(2),Oe(" ",t.widgetCount," widget",t.widgetCount===1?"":"s"," ")}}function Ln(a,e){if(a&1&&(s(0,"span",86),m(1),d()),a&2){let t=e.$implicit,n=g(4);l(),Q(n.dashboardCategoryLabel(t))}}function zn(a,e){if(a&1&&(s(0,"nile-tooltip",87)(1,"span",88),m(2),d()()),a&2){let t=g(2).$implicit,n=g(2);x("content",n.hiddenCategoryLabels(t)),l(),$("aria-label",n.hiddenCategoryAriaLabel(t)),l(),V("+",n.hiddenCategoryCount(t))}}function qn(a,e){if(a&1&&(s(0,"span",78),K(1,Ln,2,1,"span",86,ft),b(3,zn,3,3,"nile-tooltip",87),d()),a&2){let t=g().$implicit,n=g(2);l(),J(n.visibleCategories(t)),l(2),_(n.hiddenCategoryCount(t)>0?3:-1)}}function $n(a,e){if(a&1&&(s(0,"div",79),p(1,"db-dash-card-chart",89),d()),a&2){let t=g().$implicit;l(),x("config",t.firstWidget.config)}}function Vn(a,e){a&1&&(s(0,"div",80)(1,"div",90),p(2,"span",91)(3,"span",92)(4,"span",93)(5,"span",94)(6,"span",95),d()())}function Bn(a,e){if(a&1){let t=M();s(0,"span",97),y("mousedown",function(i){return i.stopPropagation()})("click",function(i){C(t);let o=g(2).$implicit,r=g(2);return v(r.onCardEditClick(i,o))}),p(1,"nile-glyph",98),d()}}function Gn(a,e){if(a&1){let t=M();s(0,"dash-card-delete-action",100),y("deleteClick",function(i){C(t);let o=g(3).$implicit,r=g(2);return v(r.onCardDeleteClick(i,o.id))}),d()}}function Un(a,e){a&1&&oe(0,Gn,1,0,"dash-card-delete-action",99),a&2&&x("hasPermission","dashboard.delete")}function Hn(a,e){if(a&1&&(s(0,"span",82),oe(1,Bn,2,0,"span",96),b(2,Un,1,1,"dash-card-delete-action"),d()),a&2){let t=g(3);l(),x("hasPermission","dashboard.update"),l(),_(t.features().delete?2:-1)}}function jn(a,e){if(a&1&&(s(0,"span",83),m(1),d()),a&2){let t=g().$implicit,n=g(2);l(),V("Updated ",n.computeRelativeTime(t.updatedAt))}}function Kn(a,e){a&1&&(s(0,"span",84)(1,"nile-badge",101),m(2,"Auto-generated"),d()())}function Jn(a,e){if(a&1&&(s(0,"span",84)(1,"nile-badge"),m(2),d()()),a&2){let t=g().$implicit;l(),$("variant",t.status==="published"?"blue":"warning"),l(),V(" ",t.status==="published"?"Published":"Draft"," ")}}function Qn(a,e){if(a&1){let t=M();s(0,"div",76),y("click",function(){let i=C(t).$implicit,o=g(2);return v(o.onCardClick(i.id))})("keydown.enter",function(){let i=C(t).$implicit,o=g(2);return v(o.onCardClick(i.id))}),s(1,"div",14),b(2,Nn,3,2,"span",77),b(3,qn,4,1,"span",78),b(4,$n,2,1,"div",79)(5,Vn,7,0,"div",80),d(),s(6,"div",17)(7,"div",18)(8,"span",81),m(9),d(),b(10,Hn,3,2,"span",82),d(),s(11,"div",20),b(12,jn,2,1,"span",83),b(13,Kn,3,0,"span",84)(14,Jn,3,2,"span",84),d()()()}if(a&2){let t=e.$implicit,n=g(2);l(2),_(t.widgetCount!==void 0?2:-1),l(),_(n.visibleCategories(t).length?3:-1),l(),_(t.firstWidget?4:5),l(4),x("title",t.name),l(),Q(t.name),l(),_(t.isAutoGenerated?-1:10),l(2),_(t.updatedAt?12:-1),l(),_(t.isAutoGenerated?13:t.status?14:-1)}}function Zn(a,e){if(a&1){let t=M();s(0,"div",73),K(1,Qn,15,8,"div",74,On),d(),s(3,"nile-pagination",75),y("nile-change",function(i){C(t);let o=g();return v(o.onPageChange(i))}),d()}if(a&2){let t=g();l(),J(t.dashboards()),l(2),$("totalitems",t.totalCount())("currentpage",t.currentPage())("pagesize",t.pageSize())}}function Yn(a,e){if(a&1&&(m(0," Delete "),s(1,"strong"),m(2),d(),m(3,"? This action cannot be undone. ")),a&2){let t=g();l(2),Q(t.pendingDeleteName())}}function Xn(a,e){a&1&&m(0," Delete this dashboard? This action cannot be undone. ")}var Ge=class a{http=f(te);nav=f(B);tokenStore=f(j);publishRepo=f(q);dashboardsBus=f(ie);routeProgress=f(qe);dashboards=c([]);features(){return I().features}search=this.nav.search;selectedCategory=c(null);dashboardCategoryLabel=it;static MAX_VISIBLE_CATEGORIES=2;visibleCategories(e){return(e.category??[]).slice(0,a.MAX_VISIBLE_CATEGORIES)}hiddenCategoryCount(e){return Math.max(0,(e.category?.length??0)-a.MAX_VISIBLE_CATEGORIES)}hiddenCategoryLabels(e){return(e.category??[]).slice(a.MAX_VISIBLE_CATEGORIES).map(t=>it(t)).filter(t=>!!t).join(", ")}hiddenCategoryAriaLabel(e){let t=this.hiddenCategoryLabels(e),n=this.hiddenCategoryCount(e);return t?`${n} more categor${n===1?"y":"ies"}: ${t}`:`${n} more categor${n===1?"y":"ies"}`}onCategoryChange(e){this.selectedCategory.set(e),this.currentPage.set(1),this.loadDashboards()}pageSize=c(50);currentPage=c(1);totalCount=c(0);searchDebounceHandle;watchSearch(){let e=!0;O(()=>{if(this.nav.search(),e){e=!1;return}clearTimeout(this.searchDebounceHandle),this.searchDebounceHandle=setTimeout(()=>{this.currentPage.set(1),this.loadDashboards()},300)})}onPageChange(e){let t=e.detail;if(!t)return;let n=!1;typeof t.pageSize=="number"&&t.pageSize!==this.pageSize()?(this.pageSize.set(t.pageSize),this.currentPage.set(1),n=!0):typeof t.page=="number"&&t.page!==this.currentPage()&&(this.currentPage.set(t.page),n=!0),n&&this.loadDashboards()}isLoading=c(!0);skeletonSlots=Array.from({length:8});skeletonBarHeights=[42,70,95,57,79];pendingDeleteId=c(null);isDeleting=c(!1);pendingDeleteName=P(()=>{let e=this.pendingDeleteId();return e?this.dashboards().find(t=>t.id===e)?.name??"":""});constructor(){this.watchSearch(),this.watchListState()}watchListState(){O(()=>{this.nav.reportListState({total:this.totalCount(),shown:this.dashboards().length,loading:this.isLoading(),search:this.nav.search(),category:this.selectedCategory()})})}ngOnInit(){this.loadDashboards()}get customerId(){return this.tokenStore.tenantId()??""}get productId(){return be()}async loadDashboards(){let e=this.customerId;if(e){this.isLoading.set(!0);try{let t=(this.currentPage()-1)*this.pageSize(),n=new URLSearchParams({limit:String(this.pageSize()),offset:String(t)}),i=this.search().trim();i&&n.set("search",i);let o=this.selectedCategory();o&&n.set("category",o);let r=await this.routeProgress.track(F(this.http.get(`${k.baseUrl}/api/customers/${e}/products/${this.productId}/workforce/dashboards?${n.toString()}`))),h=r?.data??r??[],u=r?.pagination?.total??h.length;if(this.totalCount.set(u),h.length===0&&this.currentPage()>1&&t>=u)return this.currentPage.set(Math.max(1,Math.ceil(u/this.pageSize()))),this.loadDashboards();await Fe(h.map(w=>w.previewWidget).filter(w=>!!w));let E=new Map(this.dashboards().map(w=>[w.id,w])),N=h.map(w=>{let z=E.get(w.id),S=$e(w.previewWidget??void 0),L=ei(z?.firstWidget,S)?z?.firstWidget:S;return{id:w.id,name:w.name,updatedAt:w.updatedAt??z?.updatedAt,widgetCount:w.widgetCount,firstWidget:L,status:w.version??w.status??z?.status,isAutoGenerated:w.isAutoGenerated??z?.isAutoGenerated,category:w.category??z?.category}});this.dashboards.set(N)}catch(t){console.error("[all-dashboards-page] load failed",t)}finally{this.isLoading.set(!1)}}}computeRelativeTime(e){if(!e)return"";let t=new Date(e).getTime();if(!t)return"";let n=Date.now()-t,i=Math.round(n/6e4);if(i<1)return"just now";if(i<60)return`${i} min${i===1?"":"s"} ago`;let o=Math.round(i/60);if(o<24)return`${o} hour${o===1?"":"s"} ago`;let r=Math.round(o/24);if(r<30)return`${r} day${r===1?"":"s"} ago`;let h=Math.round(r/30);if(h<12)return`${h} month${h===1?"":"s"} ago`;let u=Math.round(h/12);return`${u} year${u===1?"":"s"} ago`}onCardClick(e){this.pendingDeleteId()||this.nav.openDashboard(e)}onCardEditClick(e,t){e.stopPropagation(),this.nav.openDashboard(t.id)}onCardDeleteClick(e,t){e.stopPropagation(),this.pendingDeleteId.set(t)}cancelDelete(){this.isDeleting()||this.pendingDeleteId.set(null)}async confirmDelete(){let e=this.pendingDeleteId();if(e){this.isDeleting.set(!0);try{await this.publishRepo.deleteDashboard(e),this.dashboardsBus.notifyChanged(),await this.loadDashboards()}catch(t){console.error("[all-dashboards-page] delete failed",t)}finally{this.isDeleting.set(!1),this.pendingDeleteId.set(null)}}}openCreate(){this.nav.toAskAquera()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=G({type:a,selectors:[["db-all-dashboards-page"]],decls:16,vars:7,consts:[[1,"all-dashboards-page","nile-theme-nxtgen"],[1,"all-dashboards-page__category-bar"],[1,"all-dashboards-page__body"],["aria-hidden","true",1,"all-dash-grid"],[1,"dash-empty-state"],[1,"dash-empty-state","dash-empty-state--search"],["label","Delete Dashboard",3,"nile-request-close","open"],[1,"layout-warning-text"],["slot","footer",1,"layout-popup-footer"],["variant","tertiary","size","small",3,"click"],["variant","primary","size","small",3,"click"],[1,"all-dashboards-page__category-label"],[3,"selectionChange","selected"],[1,"dash-card","dash-card--skeleton"],[1,"dash-card__preview"],[1,"dash-skeleton__bars"],["variant","rectangular","width","40",1,"dash-skeleton__bar"],[1,"dash-card__body"],[1,"dash-card__title-row"],["variant","text","width","70%","height","14"],[1,"dash-card__meta"],["variant","text","width","40%","height","12"],[1,"dash-empty-state__graphic"],["viewBox","0 0 380 140","aria-hidden","true","preserveAspectRatio","xMidYMid meet"],["id","dashFlowPage","x1","78","y1","70","x2","170","y2","70","gradientUnits","userSpaceOnUse"],["offset","0%","stop-color","#BFD7E9","stop-opacity","0.4"],["offset","100%","stop-color","#005EA6","stop-opacity","0.9"],["x","20","y","36","width","58","height","68","rx","6","fill","#fff","stroke","#C7CED4"],["x1","20","y1","50","x2","78","y2","50","stroke","#E6E9EB"],["x1","49","y1","36","x2","49","y2","104","stroke","#E6E9EB"],["cx","34","cy","62","r","2","fill","#80AED3"],["cx","64","cy","62","r","2","fill","#80AED3"],["cx","34","cy","76","r","2","fill","#80AED3"],["cx","64","cy","76","r","2","fill","#80AED3"],["cx","34","cy","90","r","2","fill","#80AED3"],["cx","64","cy","90","r","2","fill","#80AED3"],["d","M 78 70 L 170 70","fill","none","stroke","url(#dashFlowPage)","stroke-width","3","stroke-linecap","round","stroke-dasharray","4 4"],["cx","100","cy","70","r","3","fill","#005EA6"],["attributeName","cx","from","78","to","170","dur","2s","repeatCount","indefinite"],["cx","120","cy","70","r","3","fill","#80AED3","opacity","0.7"],["attributeName","cx","from","78","to","170","dur","2s","begin","0.6s","repeatCount","indefinite"],["x","170","y","22","width","190","height","96","rx","8","fill","#fff","stroke","#80AED3","stroke-width","1.5"],["x","180","y","32","width","48","height","22","rx","4","fill","#E6EFF6"],["x","184","y","38","width","22","height","3","rx","1.5","fill","#80AED3"],["x","184","y","44","width","14","height","5","rx","1.5","fill","#005EA6"],["x","234","y","32","width","48","height","22","rx","4","fill","#E6EFF6"],["x","238","y","38","width","22","height","3","rx","1.5","fill","#80AED3"],["x","238","y","44","width","14","height","5","rx","1.5","fill","#005EA6"],["x","288","y","32","width","62","height","22","rx","4","fill","#E6EFF6"],["x","292","y","38","width","22","height","3","rx","1.5","fill","#80AED3"],["x","292","y","44","width","14","height","5","rx","1.5","fill","#005EA6"],["x","180","y","86","width","6","height","22","rx","1","fill","#005EA6","opacity","0.7"],["attributeName","height","values","22;14;22","dur","1.8s","repeatCount","indefinite"],["attributeName","y","values","86;94;86","dur","1.8s","repeatCount","indefinite"],["x","192","y","80","width","6","height","28","rx","1","fill","#005EA6"],["attributeName","height","values","28;20;28","dur","1.8s","begin","0.2s","repeatCount","indefinite"],["attributeName","y","values","80;88;80","dur","1.8s","begin","0.2s","repeatCount","indefinite"],["x","204","y","76","width","6","height","32","rx","1","fill","#005EA6","opacity","0.85"],["attributeName","height","values","32;24;32","dur","1.8s","begin","0.4s","repeatCount","indefinite"],["attributeName","y","values","76;84;76","dur","1.8s","begin","0.4s","repeatCount","indefinite"],["x","216","y","84","width","6","height","24","rx","1","fill","#005EA6","opacity","0.6"],["attributeName","height","values","24;16;24","dur","1.8s","begin","0.6s","repeatCount","indefinite"],["attributeName","y","values","84;92;84","dur","1.8s","begin","0.6s","repeatCount","indefinite"],["d","M 250 102 L 268 92 L 286 96 L 304 84 L 322 88 L 340 76","fill","none","stroke","#005EA6","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["attributeName","stroke-dasharray","values","0 200;200 200","dur","2.4s","repeatCount","indefinite"],["cx","340","cy","76","r","3","fill","#005EA6"],["attributeName","opacity","values","0;1;1;0","dur","2.4s","repeatCount","indefinite"],[1,"dash-empty-state__title"],[1,"dash-empty-state__desc"],["variant","primary","size","medium"],["variant","primary","size","medium",3,"click",4,"hasPermission"],["variant","primary","size","medium",3,"click"],["slot","prefix","name","ng-plus","method","stroke","size","14","color","#fff"],[1,"all-dash-grid"],["role","button","tabindex","0",1,"dash-card"],["variant","fluid","pagesizeoptions","[25,50,100]",1,"all-dashboards-page__pagination",3,"nile-change"],["role","button","tabindex","0",1,"dash-card",3,"click","keydown.enter"],[1,"dash-card__chip"],[1,"dash-card__cats"],["aria-hidden","true",1,"dash-card__widget"],["aria-hidden","true",1,"dash-card__empty"],[1,"dash-card__name",3,"title"],[1,"dash-card__actions"],[1,"dash-card__meta-item"],[1,"dash-card__status"],["name","ng-grid-01","size","10","method","stroke"],[1,"dash-card__cat"],["placement","bottom","hoist","",3,"content"],[1,"dash-card__cat","dash-card__cat--more"],[3,"config"],[1,"dash-card__empty-bars"],[2,"height","38%"],[2,"height","64%"],[2,"height","86%"],[2,"height","52%"],[2,"height","72%"],["class","dash-card__action","role","button","tabindex","0","aria-label","Edit dashboard",3,"mousedown","click",4,"hasPermission"],["role","button","tabindex","0","aria-label","Edit dashboard",1,"dash-card__action",3,"mousedown","click"],["name","ng-edit-02","method","stroke","size","14","color","var(--ng-colors-border-brand)"],[3,"deleteClick",4,"hasPermission"],[3,"deleteClick"],["variant","purple"]],template:function(t,n){t&1&&(s(0,"div",0),b(1,kn,4,1,"div",1),s(2,"div",2),b(3,An,3,0,"div",3)(4,Fn,52,1,"div",4)(5,Rn,5,0,"div",5)(6,Zn,4,3),d(),s(7,"nile-dialog",6),y("nile-request-close",function(o){return o.stopPropagation(),n.cancelDelete()}),s(8,"p",7),b(9,Yn,4,1)(10,Xn,1,0),d(),s(11,"div",8)(12,"nile-button",9),y("click",function(){return n.cancelDelete()}),m(13," Cancel "),d(),s(14,"nile-button",10),y("click",function(){return n.confirmDelete()}),m(15),d()()()()),t&2&&(l(),_(n.features().categoryFilter?1:-1),l(2),_(n.isLoading()&&n.dashboards().length===0?3:n.dashboards().length===0&&!n.search().trim()?4:n.dashboards().length===0&&n.search().trim()?5:6),l(4),x("open",!!n.pendingDeleteId()),l(2),_(n.pendingDeleteName()?9:10),l(3),$("disabled",n.isDeleting()?"":null),l(2),$("disabled",n.isDeleting()?"":null),l(),V(" ",n.isDeleting()?"Deleting\u2026":"Delete"," "))},dependencies:[he,Ve,se,fe,yn],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:block;height:100%}.all-dashboards-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;background:var(--ng-colors-bg-secondary);font-family:var(--ng-font-family-display)}.all-dashboards-page__category-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:0 28px 14px}.all-dashboards-page__category-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--ng-colors-text-tertiary-600)}.all-dashboards-page__body[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:auto}.all-dashboards-page__loader[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;justify-content:center;padding:48px 0}.dash-card--skeleton[_ngcontent-%COMP%]{cursor:default}.dash-card--skeleton[_ngcontent-%COMP%]:hover{top:0;box-shadow:none;border-color:var(--ng-colors-border-secondary)}.dash-card--skeleton[_ngcontent-%COMP%] .dash-card__preview[_ngcontent-%COMP%]{background:var(--ng-colors-bg-primary)}.dash-card--skeleton[_ngcontent-%COMP%] .dash-card__preview[_ngcontent-%COMP%]:after{display:none}.dash-skeleton__chip[_ngcontent-%COMP%]{position:absolute;top:10px;right:10px;z-index:2}.dash-skeleton__bars[_ngcontent-%COMP%]{position:absolute;inset:auto 8px 8px;display:flex;align-items:flex-end;justify-content:center;gap:4px}.dash-skeleton__bar[_ngcontent-%COMP%]{flex:0 0 auto;width:40px}.dash-empty-state[_ngcontent-%COMP%]{margin:24px;padding:56px 32px;display:flex;flex-direction:column;align-items:center;text-align:center;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:12px}.dash-empty-state__graphic[_ngcontent-%COMP%]{width:380px;max-width:100%;height:140px;margin-bottom:24px;display:block}.dash-empty-state__graphic[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.dash-empty-state__title[_ngcontent-%COMP%]{margin:0 0 8px;font-size:20px;font-weight:600;color:var(--ng-colors-text-primary-900);letter-spacing:-.01em}.dash-empty-state__desc[_ngcontent-%COMP%]{margin:0 0 20px;max-width:480px;font-size:14px;line-height:1.5;color:var(--ng-colors-text-tertiary-600)}.all-dash-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;padding:0 28px 40px}.all-dashboards-page__pagination[_ngcontent-%COMP%]{display:block;padding:0 28px 24px}.dash-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;text-align:left;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:12px;padding:0;font:inherit;color:inherit;cursor:pointer;overflow:hidden;position:relative;top:0;transition:border-color .15s,box-shadow .15s,top .15s}.dash-card[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-tertiary);box-shadow:0 4px 12px -2px #0a0d120f,0 2px 4px -1px #0a0d120a;top:-1px}.dash-card[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--ng-colors-border-brand);outline-offset:2px}.dash-card__preview[_ngcontent-%COMP%]{position:relative;height:140px;background:var(--ng-colors-bg-primary);border-bottom:1px solid var(--ng-colors-border-secondary);overflow:hidden}.dash-card__preview[_ngcontent-%COMP%]:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(90deg,var(--ng-colors-bg-primary) 0%,rgba(255,255,255,0) 18%,rgba(255,255,255,0) 82%,var(--ng-colors-bg-primary) 100%),linear-gradient(0deg,var(--ng-colors-bg-primary) 0%,rgba(255,255,255,0) 28%)}.dash-card__widget[_ngcontent-%COMP%]{position:absolute;inset:0;pointer-events:none;transform:scale(1.2);transform-origin:center}.dash-card__widget[_ngcontent-%COMP%] > db-dash-card-chart[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.dash-card__empty[_ngcontent-%COMP%]{position:absolute;inset:14px;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.dash-card__empty-bars[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:8px;width:78%;height:80%}.dash-card__empty-bars[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{flex:1;background:linear-gradient(180deg,var(--ng-colors-border-secondary) 0%,var(--ng-colors-bg-tertiary) 100%);border-radius:3px 3px 0 0;min-height:8px}.dash-card__chip[_ngcontent-%COMP%]{position:absolute;top:10px;right:10px;z-index:2;display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;background:color-mix(in srgb,var(--ng-colors-bg-primary) 85%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--ng-colors-border-secondary);border-radius:999px;font-size:11px;font-weight:500;color:var(--ng-colors-text-tertiary-600)}.dash-card__cats[_ngcontent-%COMP%]{position:absolute;top:10px;left:10px;z-index:2;display:inline-flex;align-items:center;gap:4px;max-width:calc(100% - 20px)}.dash-card__cat[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:22px;max-width:96px;opacity:0;transition:opacity .15s;padding:0 8px;background:color-mix(in srgb,var(--ng-colors-bg-primary) 85%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--ng-colors-border-secondary);border-radius:999px;font-size:11px;font-weight:500;color:var(--ng-colors-text-tertiary-600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-card[_ngcontent-%COMP%]:hover .dash-card__cat[_ngcontent-%COMP%], .dash-card[_ngcontent-%COMP%]:focus-within .dash-card__cat[_ngcontent-%COMP%]{opacity:1}.dash-card__cat--more[_ngcontent-%COMP%]{max-width:none;padding:0 6px;color:var(--ng-colors-text-secondary-700);cursor:default}.dash-card__status[_ngcontent-%COMP%]{flex-shrink:0;margin-left:auto;display:inline-flex;align-items:center;font-size:10px;line-height:1}.dash-card__status[_ngcontent-%COMP%] nile-badge[_ngcontent-%COMP%]::part(base){display:inline-flex;align-items:center;padding:0 3px;height:auto;min-height:0}.dash-card__status[_ngcontent-%COMP%] nile-badge[_ngcontent-%COMP%]::part(content){font-size:12px}.dash-card__body[_ngcontent-%COMP%]{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px}.dash-card__title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;min-width:0}.dash-card__name[_ngcontent-%COMP%]{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--ng-colors-text-primary-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-card__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;opacity:0;transition:opacity .15s;flex-shrink:0}.dash-card[_ngcontent-%COMP%]:hover .dash-card__actions[_ngcontent-%COMP%], .dash-card[_ngcontent-%COMP%]:focus-within .dash-card__actions[_ngcontent-%COMP%]{opacity:1}.dash-card__action[_ngcontent-%COMP%]{cursor:pointer;padding:4px;border-radius:6px;line-height:0}.dash-card__action[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-secondary)}.dash-card__rename[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;min-width:0}.dash-card__rename-input[_ngcontent-%COMP%]{flex:1;min-width:0;height:28px;padding:0 8px;font:inherit;font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:6px;outline:none}.dash-card__rename-input[_ngcontent-%COMP%]:focus{border-color:var(--ng-colors-border-brand);box-shadow:0 0 0 3px var(--ng-colors-bg-brand-primary)}.dash-card__rename-input[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.dash-card__meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ng-colors-text-tertiary-600);min-height:16px}.dash-card__meta-item[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.dash-card--editing[_ngcontent-%COMP%]{cursor:default}.dash-card--editing[_ngcontent-%COMP%]:hover{top:0;box-shadow:none}.create-dash-fields[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;padding:8px 0}.create-dash-footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px}.layout-warning-text[_ngcontent-%COMP%]{font-size:14px;color:var(--ng-colors-text-secondary-700);line-height:1.5}.layout-popup-footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px}']})};function ei(a,e){if(a===e)return!0;if(!a||!e)return!1;try{return JSON.stringify(a.config)===JSON.stringify(e.config)}catch{return!1}}var re=class a{http=f(te);tokenStore=f(j);lastSentCustomerId=null;lastSentProductId=null;get customerId(){return this.tokenStore.tenantId()??""}mcpGatewayUrl(){return`${k.baseUrl}/dviz-mcp`}async callMcpTool(e,t={}){let n=this.customerId,i=R(),o={};n!==this.lastSentCustomerId&&(o.customerId=n),i!==this.lastSentProductId&&(o.productId=i);let r;try{r=await F(this.http.post(this.mcpGatewayUrl(),{jsonrpc:"2.0",id:Date.now(),method:"tools/call",params:{name:e,arguments:t}},{headers:{Accept:"application/json, text/event-stream"},params:o})),this.lastSentCustomerId=n,this.lastSentProductId=i}catch(u){throw u instanceof Z?new Error(u.error?.error?.message||u.error?.message||u.message):u}if(r.error)throw new Error(r.error.message);let h=r.result;if(h?.isError)throw new Error(h.structuredContent?.error?.message??h.content?.[0]?.text??`${e} failed`);return h?.structuredContent??{}}sessionHeader(e){return e?{headers:new pe({"x-session-id":e})}:{}}async fetchGridPage(e,t,n,i,o,r,h,u){let E=`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/data-grid/${e}?pageIndex=${t}&pageSize=${n}`,N=(i??[]).filter(w=>w&&w.value!=null&&String(w.value).trim()!=="");return N.length&&(E+=`&filters=${encodeURIComponent(JSON.stringify(N))}`),o&&Object.keys(o).length&&(E+=`&dashboardFilters=${encodeURIComponent(JSON.stringify(o))}`),h&&h.length&&(E+=`&resolvedFilters=${encodeURIComponent(JSON.stringify(h))}`),r&&(E+=`&dashboardId=${encodeURIComponent(r)}`),u&&(E+=`&conversationId=${encodeURIComponent(u)}`),F(this.http.get(E))}async getSuggestedPrompts(e){let t;try{t=await F(this.http.get(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/datasources/${e}/suggested-prompts`))}catch(n){throw n instanceof Z?new Error(n.error?.error||n.message):n}if(t.widgetSuggestions||t.dashboardSuggestions)return[...t.widgetSuggestions??[],...t.dashboardSuggestions??[]];if(t.data)return t.data;throw new Error("Failed to fetch suggested prompts")}async filterSuggest(e,t,n,i){let o=n.filter(u=>!!u.id).map(u=>{let E={widgetId:u.id};return u.queryMeta&&(E.queryMeta=u.queryMeta),u.dataSourceId&&(E.dataSourceId=u.dataSourceId),E}),r;try{r=await F(this.http.post(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/dashboards/${e}/filter/suggest?status=${i??"draft"}`,{query:t,refreshCache:!1,widgets:o}))}catch(u){throw u instanceof Z?new Error(u.error?.error||u.message):u}if(r?.success===!1)throw new Error(r.error||"Request failed");let h=r?.data??r??{};return{nextToken:h.nextToken,completions:Array.isArray(h.completions)?h.completions:[],suggestions:Array.isArray(h.suggestions)?h.suggestions:[]}}async applyFilters(e,t,n,i,o,r){let h=await new Promise((w,z)=>{let S=this.http.post(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/dashboards/${n}/filter/apply?status=${i??"draft"}`,tn(e,t,r)).subscribe({next:L=>w(L),error:L=>{L instanceof Z?z(new Error(L.error?.error||L.message)):z(L)}});if(o){if(o.aborted){S.unsubscribe();let L=new Error("Aborted");L.name="AbortError",z(L);return}o.addEventListener("abort",()=>{S.unsubscribe();let L=new Error("Aborted");L.name="AbortError",z(L)},{once:!0})}});if(h?.success===!1)throw new Error(h.error||"Request failed");let u=h?.data??h,E=Array.isArray(u)?u:u?.widgets;if(!Array.isArray(E))throw new Error("Invalid response from apply-filters API");let N=!Array.isArray(u)&&Array.isArray(u?.resolvedFilters)?u.resolvedFilters:[];return await Promise.all(E.map(w=>_e(w.config))),{widgets:E,resolvedFilters:N}}async generate(e,t,n,i,o){let r={prompt:e};t&&(r.dataSourceId=t),i&&(r.dashboardId=i);let h=await new Promise((N,w)=>{let z=this.http.post(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/widget/generate`,r,this.sessionHeader(n)).subscribe({next:S=>N(S),error:S=>{S instanceof Z?w(new Error(S.error?.error||S.message)):w(S)}});if(o){if(o.aborted){z.unsubscribe();let S=new Error("Aborted");S.name="AbortError",w(S);return}o.addEventListener("abort",()=>{z.unsubscribe();let S=new Error("Aborted");S.name="AbortError",w(S)},{once:!0})}});if(h?.success===!1)throw new Error(h.error||"Request failed");let u=h?.data??h;if(u?.dashboardTitle&&Array.isArray(u?.widgets)){let N=u;return await Promise.all(N.widgets.map(w=>_e(w.config))),N}if(!u?.config)throw new Error("Invalid response from generate API");let E=u;return await _e(E.config),E}async getWidgetSession(e){let t;try{t=await F(this.http.get(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/widget/sessions/${e}`))}catch(n){throw n instanceof Z?new Error(n.error?.error||n.message):n}if(t?.success===!1||!t?.data)throw new Error(t?.error||"Failed to fetch session");return await Promise.all(t.data.messages.map(n=>n.widgetConfig?_e(n.widgetConfig.config):Promise.resolve())),t.data}async getWidgetSessions(){let e;try{e=await F(this.http.get(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/widget/sessions`))}catch(t){throw t instanceof Z?new Error(t.error?.error||t.message):t}if(e?.success===!1)throw new Error(e.error||"Failed to fetch widget sessions");return e?.data??[]}async tweakWidget(e){let t="widgetId"in e?{widgetId:e.widgetId,prompt:e.prompt}:{widgetConfig:ti(e.widget,e.dataSourceId),prompt:e.prompt},n;if(k.MCP_GATEWAY_ENABLED)n=(await this.callMcpTool("modifyWidget",t))?.chart;else{let i;try{i=await F(this.http.post(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/widget/modify`,t))}catch(r){throw r instanceof Z?new Error(r.error?.error||r.message):r}if(i?.success===!1)throw new Error(i.error||"Tweak failed");n=i?.chart??i?.data??i}if(!n?.config)throw new Error("Invalid response from tweak API");return await _e(n.config),n}async previewWidgetDetailPanelDefinition(e){return(await F(this.http.post(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/workforce/widget-templates/preview-detail-panel`,{detailPanel:e}))).data}static \u0275fac=function(t){return new(t||a)};static \u0275prov=ee({token:a,factory:a.\u0275fac,providedIn:"root"})};function ti(a,e){return{title:a.title,widgetType:a.widgetType,layout:a.layout,dataSourceId:e??a.dataSourceId,config:a.config,drilldownBy:a.drilldownBy}}var ye=class a{constructor(e){this.http=e}http;tokenStore=f(j);CACHE_KEY="dv_datasources_cache";get customerId(){return this.tokenStore.tenantId()??""}getCached(){try{let e=sessionStorage.getItem(this.CACHE_KEY);return e?JSON.parse(e):[]}catch{return[]}}saveCache(e){try{sessionStorage.setItem(this.CACHE_KEY,JSON.stringify(e))}catch{}}mcpGatewayUrl(){return`${k.baseUrl}/dviz-mcp`}async callMcpTool(e,t={}){let n={customerId:this.customerId,productId:R()},i;try{i=await F(this.http.post(this.mcpGatewayUrl(),{jsonrpc:"2.0",id:Date.now(),method:"tools/call",params:{name:e,arguments:t}},{headers:{Accept:"application/json, text/event-stream"},params:n}))}catch(r){throw r instanceof Z?new Error(r.error?.error?.message||r.error?.message||r.message):r}if(i.error)throw new Error(i.error.message);let o=i.result;if(o?.isError)throw new Error(o.structuredContent?.error?.message??o.content?.[0]?.text??`${e} failed`);return o?.structuredContent??{}}async updateDatasourceDatasets(e,t){let n=new pe({"X-Customer-ID":this.customerId}),i=e.adapterType??(e.mssqlConnectionId?"mssql":"opensearch"),o={name:e.name,description:e.description??"",adapterType:i,indexName:e.indexName??t[0]?.tableName??"",timestampField:e.timestampField??"timestamp",datasets:t};i==="mssql"?o.mssqlConnectionId=e.mssqlConnectionId:o.connectionId=e.connectionId??e.opensearchConnectionId,await F(this.http.put(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/datasources/${e.id}`,o,{headers:n}))}async listDatasources(){let e;if(k.MCP_GATEWAY_ENABLED)e=(await this.callMcpTool("listDatasources",{}))?.datasources??[];else{let n=new pe({"X-Customer-ID":this.customerId});e=(await F(this.http.get(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/datasources`,{headers:n})))?.data??[]}return e.map(n=>({id:n.id,name:n.name??"",host:n.host,port:n.port,database:n.database,username:n.username,description:n.description,createdAt:n.createdAt??new Date().toISOString(),adapterType:n.adapterType,mssqlConnectionId:n.mssqlConnectionId,opensearchConnectionId:n.opensearchConnectionId,connectionId:n.connectionId,indexName:n.indexName,timestampField:n.timestampField,datasets:(n.datasets??[]).map(i=>({tableName:i.tableName,columnsSelected:(i.columnsSelected??[]).map(o=>({name:o.name,dataType:o.dataType,isPrimaryKey:o.isPrimaryKey??!1}))}))}))}async listConnections(){let e;if(k.MCP_GATEWAY_ENABLED)e=(await this.callMcpTool("listConnections",{}))?.connections??[];else{let t=new pe({"X-Customer-ID":this.customerId});e=(await F(this.http.get(`${k.baseUrl}/api/customers/${this.customerId}/products/${R()}/connections`,{headers:t})))?.data??[]}return e.map(t=>({id:t.id,name:t.name??""}))}static \u0275fac=function(t){return new(t||a)(gt(te))};static \u0275prov=ee({token:a,factory:a.\u0275fac,providedIn:"root"})};var ni=["aiExecutiveSummary"],ii=["pipelineHost"],ai=["erDiagram"],oi=["osViewer"],ri=["sliderGrid"],si=["reportHost"],di=()=>[],li=()=>[1,2,3,4],rt=(a,e)=>e.id,ci=(a,e)=>t=>t.tableName;function gi(a,e){a&1&&(s(0,"div",9),Ze(1,null,2),d())}function hi(a,e){if(a&1){let t=M();s(0,"div",10)(1,"div",36)(2,"span",37),m(3,"Report"),d(),s(4,"button",38),y("click",function(){C(t);let i=g();return v(i.closeTool())}),p(5,"nile-glyph",39),d()(),s(6,"div",40),Ze(7,null,3),d()()}}function pi(a,e){a&1&&(s(0,"div",42),m(1,"Create a pipeline to start moving your data."),d())}function mi(a,e){a&1&&(s(0,"nile-badge",49),m(1,"Active"),d())}function ui(a,e){if(a&1){let t=M();s(0,"nile-card",45),y("click",function(){let i=C(t).$implicit,o=g(3);return o.onPipelineRowClick(i.id),v(o.closeTool())}),s(1,"div",46)(2,"div",47),p(3,"nile-glyph",48),d(),b(4,mi,2,0,"nile-badge",49),d(),s(5,"span",50),m(6),d()()}if(a&2){let t=e.$implicit,n=g(3);l(4),_(t.id===n.selectedConnectionId()?4:-1),l(),x("title",t.name),l(),Q(t.name)}}function bi(a,e){if(a&1&&(s(0,"div",43),K(1,ui,7,3,"nile-card",44,rt),d()),a&2){let t=g(2);l(),J(t.connections())}}function _i(a,e){if(a&1){let t=M();s(0,"div",11)(1,"div",36)(2,"span",37),m(3,"All pipelines"),d(),s(4,"button",38),y("click",function(){C(t);let i=g();return v(i.closeTool())}),p(5,"nile-glyph",39),d()(),s(6,"div",41),b(7,pi,2,0,"div",42)(8,bi,3,0,"div",43),d()()}if(a&2){let t=g();l(7),_(t.connections().length===0?7:8)}}function fi(a,e){a&1&&p(0,"span",56)}function yi(a,e){if(a&1){let t=M();s(0,"div",51),p(1,"app-er-diagram",52,4),s(3,"div",53)(4,"nile-button",54),y("click",function(){C(t);let i=g(2);return v(i.closeTool())}),m(5,"Cancel"),d(),s(6,"nile-button",55),y("click",function(){C(t);let i=g(2);return v(i.updateDatasource())}),b(7,fi,1,0,"span",56),m(8," Update "),d()()()}if(a&2){let t,n=g(2);l(),x("connectionId",n.selectedConnection().mssqlConnectionId)("tables",((t=n.selectedConnection().datasets)==null?null:t.map(vt(6,ci,e)))??et(7,di))("preselectedColumns",n.datasetColumnsByTable()),l(5),$("loading",n.isUpdatingDatasource()?"":null)("disabled",n.isUpdatingDatasource()?"":null),l(),_(n.isUpdatingDatasource()?7:-1)}}function Ci(a,e){a&1&&p(0,"span",56)}function vi(a,e){if(a&1){let t=M();s(0,"div",51),p(1,"app-os-schema-viewer",57,5),s(3,"div",53)(4,"nile-button",54),y("click",function(){C(t);let i=g(2);return v(i.closeTool())}),m(5,"Cancel"),d(),s(6,"nile-button",55),y("click",function(){C(t);let i=g(2);return v(i.updateDatasource())}),b(7,Ci,1,0,"span",56),m(8," Update "),d()()()}if(a&2){let t=g(2);l(),x("connectionId",t.osSchemaConnectionId())("indexNames",t.osSchemaIndexNames())("preselectedFields",t.datasetColumnsByTable()),l(5),$("loading",t.isUpdatingDatasource()?"":null)("disabled",t.isUpdatingDatasource()?"":null),l(),_(t.isUpdatingDatasource()?7:-1)}}function xi(a,e){if(a&1){let t=M();s(0,"div",12)(1,"div",36)(2,"span",37),m(3),d(),s(4,"button",38),y("click",function(){C(t);let i=g();return v(i.closeTool())}),p(5,"nile-glyph",39),d()(),s(6,"div",40),b(7,yi,9,8,"div",51),b(8,vi,9,6,"div",51),d()()}if(a&2){let t,n,i=g();l(3),Q(((t=i.selectedConnection())==null?null:t.name)??"Schema"),l(4),_(i.isMssqlSchema()&&((n=i.selectedConnection())!=null&&n.mssqlConnectionId)?7:-1),l(),_(i.isOpenSearchSchema()&&i.osSchemaConnectionId()&&i.osSchemaIndexNames().length>0?8:-1)}}function wi(a,e){if(a&1){let t=M();s(0,"nile-button",60),y("click",function(){C(t);let i=g(2);return v(i.onCreateDashboardClick())}),p(1,"nile-glyph",61),m(2," Create dashboard "),d()}}function Di(a,e){if(a&1){let t=M();s(0,"nile-button",110),y("click",function(){C(t);let i=g(3);return v(i.onCreateDashboardClick())}),p(1,"nile-glyph",61),m(2," Create dashboard "),d()}}function Pi(a,e){a&1&&(s(0,"div",59)(1,"div",62),ve(),s(2,"svg",63)(3,"defs")(4,"linearGradient",64),p(5,"stop",65)(6,"stop",66),d()(),p(7,"rect",67)(8,"line",68)(9,"line",69)(10,"circle",70)(11,"circle",71)(12,"circle",72)(13,"circle",73)(14,"circle",74)(15,"circle",75)(16,"path",76),s(17,"circle",77),p(18,"animate",78),d(),s(19,"circle",79),p(20,"animate",80),d(),p(21,"rect",81)(22,"rect",82)(23,"rect",83)(24,"rect",84)(25,"rect",85)(26,"rect",86)(27,"rect",87)(28,"rect",88)(29,"rect",89)(30,"rect",90),s(31,"rect",91),p(32,"animate",92)(33,"animate",93),d(),s(34,"rect",94),p(35,"animate",95)(36,"animate",96),d(),s(37,"rect",97),p(38,"animate",98)(39,"animate",99),d(),s(40,"rect",100),p(41,"animate",101)(42,"animate",102),d(),s(43,"path",103),p(44,"animate",104),d(),s(45,"circle",105),p(46,"animate",106),d()()(),Me(),s(47,"h2",107),m(48,"Build your first dashboard"),d(),s(49,"p",108),m(50," Dashboards bring your data to life with charts, KPIs, and tables. Create one to start exploring. "),d(),oe(51,Di,3,0,"nile-button",109),d()),a&2&&(l(51),x("hasPermission","dashboard.create"))}function Mi(a,e){if(a&1&&(s(0,"span",114),p(1,"nile-glyph",126),m(2),d()),a&2){let t=g().$implicit;l(2),Oe(" ",t.widgetCount," widget",t.widgetCount===1?"":"s"," ")}}function Si(a,e){if(a&1&&(s(0,"span",115)(1,"nile-badge"),m(2),d()()),a&2){let t=g().$implicit;l(),$("variant",t.status==="published"?"success":"warning"),l(),V(" ",t.status==="published"?"Published":"Draft"," ")}}function Oi(a,e){if(a&1&&(s(0,"div",116),p(1,"db-dash-card-chart",127),d()),a&2){let t=g().$implicit;l(),x("config",t.firstWidget.config)}}function ki(a,e){a&1&&(s(0,"div",117)(1,"div",128),p(2,"span",129)(3,"span",130)(4,"span",131)(5,"span",132)(6,"span",133),d()())}function Ei(a,e){if(a&1){let t=M();s(0,"span",134),y("mousedown",function(i){return i.stopPropagation()})("click",function(i){C(t);let o=g().$implicit,r=g(3);return v(r.onDashboardRowEditClick(i,o))}),p(1,"nile-glyph",135),d()}}function Ti(a,e){if(a&1){let t=M();s(0,"dash-card-delete-action",136),y("deleteClick",function(i){C(t);let o=g().$implicit,r=g(3);return v(r.onDashboardRowDeleteClick(i,o.id))}),d()}if(a&2){let t=g().$implicit;x("disabled",!!t.isAutoGenerated)}}function Ai(a,e){a&1&&p(0,"span",137)}function Ii(a,e){if(a&1&&(s(0,"span",125),m(1),d(),b(2,Ai,1,0,"span",137)),a&2){let t=g().$implicit;l(),Q(t.firstWidget==null?null:t.firstWidget.title),l(),_(t.updatedAt?2:-1)}}function Wi(a,e){if(a&1&&(s(0,"span",125),m(1),d()),a&2){let t=g().$implicit,n=g(3);l(),V("Updated ",n.computeRelativeTime(t.updatedAt))}}function Fi(a,e){if(a&1){let t=M();s(0,"button",112),y("click",function(){let i=C(t).$implicit,o=g(3);return v(o.onDashboardRowClick(i.id))}),s(1,"div",113),b(2,Mi,3,2,"span",114),b(3,Si,3,2,"span",115),b(4,Oi,2,1,"div",116)(5,ki,7,0,"div",117),d(),s(6,"div",118)(7,"div",119)(8,"span",120),m(9),d(),s(10,"span",121),oe(11,Ei,2,0,"span",122)(12,Ti,1,1,"dash-card-delete-action",123),d()(),s(13,"div",124),b(14,Ii,3,2),b(15,Wi,2,1,"span",125),d()()()}if(a&2){let t=e.$implicit;l(2),_(t.widgetCount!==void 0?2:-1),l(),_(t.status?3:-1),l(),_(t.firstWidget?4:5),l(4),x("title",t.name),l(),Q(t.name),l(2),x("hasPermission","dashboard.update"),l(),x("hasPermission","dashboard.delete"),l(2),_(t.firstWidget!=null&&t.firstWidget.title?14:-1),l(),_(t.updatedAt?15:-1)}}function Ri(a,e){if(a&1&&(s(0,"div",43),K(1,Fi,16,9,"button",111,rt),d()),a&2){let t=g(2);l(),J(t.dashboardsList())}}function Ni(a,e){if(a&1&&(s(0,"div",13)(1,"div",36)(2,"span",37),m(3,"Dashboards"),d(),oe(4,wi,3,0,"nile-button",58),d(),s(5,"div",41),b(6,Pi,52,1,"div",59)(7,Ri,3,0,"div",43),d()()),a&2){let t=g();l(4),x("hasPermission","dashboard.create"),l(2),_(t.dashboardsList().length===0?6:7)}}function Li(a,e){a&1&&(s(0,"span",14),ve(),s(1,"svg",138),p(2,"rect",139)(3,"rect",140)(4,"rect",141)(5,"rect",142),d()())}function zi(a,e){if(a&1){let t=M();s(0,"nile-button",145),y("click",function(){C(t);let i=g(2);return v(i.openInAskAquera())}),p(1,"nile-glyph",146),m(2," Open in Ask Aquera "),d()}}function qi(a,e){if(a&1){let t=M();s(0,"div",15),b(1,zi,3,0,"nile-button",143),s(2,"shared-builder-toolbar",144),y("action",function(i){C(t);let o=g();return v(o.onMenuAction(i))}),d()()}if(a&2){let t=g();l(),_(t.loadedDashboardId()&&!t.autoGenerated()&&t.features().askAquera?1:-1),l(),x("canToggleFilter",!0)("hasFilter",t.hasFilter())("canToggleTimeFilter",!0)("hasTimeFilter",t.hasTimeFilter())("canForecast",!0)("anyForecastOn",t.anyForecastOn())("editMode",t.sliderView()!=="preview")("busy",t.isRearranging())("canUpdate",t.canUpdate())("canDelete",t.canDelete())("readOnly",t.autoGenerated())("showAskAquera",!1)}}function $i(a,e){if(a&1){let t=M();s(0,"div",147),y("mousedown",function(i){return i.stopPropagation()})("click",function(i){return i.stopPropagation()}),s(1,"input",148,6),y("input",function(){C(t);let i=yt(2),o=g();return v(o.onRenameInputChange(i.value))})("keydown",function(i){C(t);let o=g();return v(o.onRenameInputKeydown(i))}),d(),s(3,"button",149),y("click",function(){C(t);let i=g();return v(i.commitRenameDashboard())}),p(4,"nile-glyph",150),d(),s(5,"button",151),y("click",function(){C(t);let i=g();return v(i.cancelRenameDashboard())}),p(6,"nile-glyph",152),d()()}if(a&2){let t=g();l(),x("value",t.renamingValue())("disabled",t.isRenamingDashboard()),l(2),x("disabled",t.isRenamingDashboard()),l(2),x("disabled",t.isRenamingDashboard())}}function Vi(a,e){a&1&&p(0,"nile-skeleton-loader",153)}function Bi(a,e){if(a&1&&(s(0,"span",154),m(1),d()),a&2){let t=g(2);l(),Q(t.dashboardName()||"Untitled Dashboard")}}function Gi(a,e){a&1&&(s(0,"nile-tooltip",155)(1,"button",157),p(2,"nile-glyph",158),d()())}function Ui(a,e){if(a&1){let t=M();s(0,"button",159),y("click",function(){C(t);let i=g(3);return v(i.startEditDashboardName())}),p(1,"nile-glyph",135),d()}}function Hi(a,e){if(a&1&&b(0,Gi,3,0,"nile-tooltip",155)(1,Ui,2,0,"button",156),a&2){let t=g(2);_(t.autoGenerated()?0:1)}}function ji(a,e){if(a&1&&(s(0,"div",22),b(1,Vi,1,0,"nile-skeleton-loader",153)(2,Bi,2,1,"span",154),b(3,Hi,2,1),d()),a&2){let t=g();l(),_(t.dashboardLoading()?1:2),l(2),_(t.loadedDashboardId()?3:-1)}}function Ki(a,e){a&1&&(s(0,"nile-card",161)(1,"div",162),p(2,"nile-skeleton-loader",163),d(),s(3,"div",164),p(4,"nile-skeleton-loader",165)(5,"nile-skeleton-loader",166),d()())}function Ji(a,e){a&1&&(s(0,"div",160),K(1,Ki,6,0,"nile-card",161,ge),d()),a&2&&(l(),J(et(0,li)))}function Qi(a,e){a&1&&(s(0,"div",42),m(1,"Create charts, save widgets, and build your library."),d())}function Zi(a,e){a&1&&(s(0,"nile-badge",49),m(1,"Added"),d())}function Yi(a,e){if(a&1){let t=M();s(0,"nile-button",171),y("click",function(){C(t);let i=g().$implicit,o=g(3);return v(o.onGlobalWidgetAddClick(i.id))}),m(1," + Add to Dashboard "),d()}}function Xi(a,e){if(a&1){let t=M();s(0,"nile-card",161)(1,"div",162),p(2,"shared-nile-chart-widget",167),d(),s(3,"div",164),b(4,Zi,2,0,"nile-badge",49)(5,Yi,2,0,"nile-button",168),s(6,"span",169),y("click",function(){let i=C(t).$implicit,o=g(3);return v(o.onGlobalWidgetRemoveClick(i.id))})("keydown.enter",function(){let i=C(t).$implicit,o=g(3);return v(o.onGlobalWidgetRemoveClick(i.id))})("keydown.space",function(){let i=C(t).$implicit,o=g(3);return v(o.onGlobalWidgetRemoveClick(i.id))}),p(7,"nile-glyph",170),d()()()}if(a&2){let t=e.$implicit,n=g(3);l(2),x("config",t.config)("drilldownBy",t.drilldownBy),l(2),_(n.addedGlobalWidgetIds().has(t.id)?4:5)}}function ea(a,e){if(a&1&&(s(0,"div",160),K(1,Xi,8,3,"nile-card",161,rt),d()),a&2){let t=g(2);l(),J(t.globalWidgets())}}function ta(a,e){if(a&1){let t=M();s(0,"div",23)(1,"div",36)(2,"span",37),m(3,"Widget library"),d(),s(4,"button",38),y("click",function(){C(t);let i=g();return v(i.closeTool())}),p(5,"nile-glyph",39),d()(),s(6,"div",41),b(7,Ji,3,1,"div",160)(8,Qi,2,0,"div",42)(9,ea,3,0,"div",160),d()()}if(a&2){let t=g();l(7),_(t.globalWidgetsLoading()?7:t.globalWidgets().length===0?8:9)}}function na(a,e){a&1&&m(0),a&2&&V(" ",e," ")}function ia(a,e){a&1&&p(0,"nile-skeleton-loader",174)}function aa(a,e){if(a&1&&p(0,"nile-skeleton-loader",181),a&2){let t=e.$implicit;Xe("left",t.x/12*100,"%")("top",t.y*72,"px")("width","calc("+t.w/12*100+"% - 12px)")("height",t.h*72-12,"px")}}function oa(a,e){if(a&1&&(s(0,"div",179),K(1,aa,1,8,"nile-skeleton-loader",180,ge),d()),a&2){let t=g(3);Xe("height",t.widgetDetailPanelSkeletonHeight(),"px"),l(),J(t.widgetDetailPanelSkeletonSlots())}}function ra(a,e){a&1&&(s(0,"div",178)(1,"div",182),p(2,"nile-skeleton-loader",183)(3,"nile-skeleton-loader",183)(4,"nile-skeleton-loader",183),d(),p(5,"nile-skeleton-loader",184),d())}function sa(a,e){if(a&1&&b(0,oa,3,2,"div",177)(1,ra,6,0,"div",178),a&2){let t=g(2);_(t.widgetDetailPanelSkeletonSlots().length?0:1)}}function da(a,e){if(a&1&&p(0,"shared-dashboard-grid",176),a&2){let t=g(2);x("widgets",t.widgetDetailPanelWidgets())("editMode",!1)("selectable",!1)("showWidgetMenu",t.widgetMenu().enabled)("canAsk",t.widgetMenu().ask)("canChangeChartType",t.widgetMenu().changeChartType)("canManageFilters",t.widgetMenu().manageFilters)("canCustomizeColors",t.widgetMenu().customizeColors)("canViewChartData",t.widgetMenu().chartData)("canSetAlert",t.widgetMenu().setAlert)("canAddToStory",t.widgetMenu().addToStory)("canForecast",t.widgetMenu().forecast)("canExportPng",t.widgetMenu().exportPng)("canExportCsv",t.widgetMenu().exportCsv)("canPrint",t.widgetMenu().print)("canvasBackgroundColor",t.canvasBackgroundColor())}}function la(a,e){if(a&1){let t=M();s(0,"div",29)(1,"div",172)(2,"nile-breadcrumb",173),y("nile-click",function(){C(t);let i=g();return v(i.closeWidgetDetailPanel())}),s(3,"nile-breadcrumb-item"),m(4),d(),s(5,"nile-breadcrumb-item"),b(6,na,1,1)(7,ia,1,0,"nile-skeleton-loader",174),d()()(),s(8,"div",175),b(9,sa,2,1)(10,da,1,16,"shared-dashboard-grid",176),d()()}if(a&2){let t,n=g();l(4),V(" ",n.dashboardName()," "),l(2),_((t=n.widgetDetailPanelTitle())?6:7,t),l(3),_(n.widgetDetailPanelLoading()?9:10)}}function ca(a,e){if(a&1&&(m(0," Delete "),s(1,"strong"),m(2),d(),m(3,"? This action cannot be undone. ")),a&2){let t=g();l(2),Q(t.pendingDeleteDashboardName())}}function ga(a,e){a&1&&m(0," Delete this dashboard? This action cannot be undone. ")}var Pe=class a{aiExecutiveSummaryEl;pipelineHost;erDiagramRef;osViewerRef;sliderGridRef;reportHost;alertDrawerOpen=c(!1);alertWidget=c(null);onSetAlert(e){this.alertWidget.set(e),this.alertDrawerOpen.set(!0)}onAlertClosed(){this.alertDrawerOpen.set(!1)}canSetAlert=P(()=>this.dashboardsList().find(e=>e.id===this.loadedDashboardId())?.status==="published");pipelineRemoteRef=null;pipelineLoading=c(!1);reportRemoteRef=null;reportLoading=c(!1);addWidget=new T;saveWidgetToLibrary=new T;publishNewDashboard=new T;addWidgetsToDashboard=new T;connectionChange=new T;editDashboardWidget=new T;switchDashboard=new T;exitDashboard=new T;createDashboardClick=new T;addGlobalWidgetToDashboard=new T;removeGlobalWidgetFromLibrary=new T;loadGlobalWidgets=new T;loadDashboardsList=new T;toolClosed=new T;executiveSummaryClick=new T;exportPdfClick=new T;exportPngClick=new T;publishClick=new T;dashboardDeleted=new T;dashboardRenamed=new T;createPipelineClick=new T;removeWidget=new T;datasourceId=A("");connections=A([]);connectionsLoading=A(!1);selectedConnectionId=A("");loadedDashboardId=A(null);dashboardLoading=A(!1);loadedWidgetIds=A(new Set);dashboardName=A("");dashboardsList=A([]);globalWidgets=A([]);globalWidgetsLoading=A(!1);addedGlobalWidgetIds=A(new Set);initialTool=A(null);dashboardSummaryHtml=A("");dashboardSummaryLoading=A(!1);isDeleting=c(!1);showLayoutPopup=c(!1);sliderView=c("none");sliderFullscreen=c(!1);activeTool=c("none");dashboardsExpanded=c(!1);dashboardsShownCount=c(5);dashboardsPageSize=5;pipelinesExpanded=c(!1);pipelinesShownCount=c(5);pipelinesPageSize=5;toolSearchTerm=c("");dashboardMenuOpen=c(!1);showExecutiveSummary=c(!1);showCreatePipelineFlyer=c(!1);newPipelineName=c("");tweakingWidgetId=c(null);pendingDashboardWidgets=c({widgets:[]});addingGlobalWidgetIds=c(new Set);isUpdatingDatasource=c(!1);selectedConnection=P(()=>this.connections().find(e=>e.id===this.selectedConnectionId())??this.connections()[0]??null);isMssqlSchema=P(()=>{let e=this.selectedConnection();return e?e.adapterType==="mssql"||!e.adapterType&&!!e.mssqlConnectionId:!1});isOpenSearchSchema=P(()=>{let e=this.selectedConnection();return e?e.adapterType==="opensearch"||!e.adapterType&&!!e.opensearchConnectionId:!1});osSchemaConnectionId=P(()=>{let e=this.selectedConnection();return e?.opensearchConnectionId??e?.connectionId??""});osSchemaIndexNames=P(()=>{let e=this.selectedConnection();if(!e)return[];let t=(e.datasets??[]).map(n=>n.tableName).filter(Boolean);return t.length>0?t:e.indexName?[e.indexName]:[]});datasetColumnsByTable=P(()=>{let e=this.selectedConnection()?.datasets??[],t={};return e.forEach(n=>{t[n.tableName]=n.columnsSelected.map(i=>i.name)}),t});selectedConnectionName=P(()=>{let e=this.selectedConnectionId(),t=this.connections().find(n=>n.id===e);return t?.connectionName??t?.name??""});openAiService=f(re);dashboardState=f(Ne);publishRepo=f(q);forecastService=f(rn);destroyRef=f(ce);datasourcesService=f(ye);nav=f(B);perms=f(ae);timeFilterPref=f(pn);hasTimeFilter=this.timeFilterPref.enabled(this.loadedDashboardId);autoGenerated=c(!1);canUpdate=P(()=>(this.perms.permissions(),this.perms.has("dashboard.update")&&!this.autoGenerated()));canDelete=P(()=>(this.perms.permissions(),this.perms.has("dashboard.delete")&&!this.autoGenerated()));isWorkforceIntelligence=qt;isHrDataLake=$t;dashboardWidgets=c(this.dashboardState.snapshot.widgets);sliderWidgets=P(()=>this.dashboardWidgets().map(e=>({id:e.id,title:e.title,widgetType:e.widgetType,layout:e.layout,config:e.config,drilldownBy:e.drilldownBy,queryMeta:e.queryMeta,dataSourceId:e.dataSourceId,edited:e.edited})));hasWidgets=P(()=>this.dashboardWidgets().length>0);alertSource=c(null);widgetDetailPanelOpen=c(!1);widgetDetailPanelLoading=c(!1);widgetDetailPanelTitle=c(null);widgetDetailPanelRaw=c([]);widgetDetailPanelSkeletonSlots=c([]);widgetDetailPanelSkeletonHeight=P(()=>{let e=this.widgetDetailPanelSkeletonSlots();return e.length?Math.max(...e.map(t=>(t.y+t.h)*72)):0});widgetDetailPanelWidgets=P(()=>{let e=this.widgetDetailPanelRaw().map((t,n)=>({id:`detail-panel-${n}`,title:t.title,componentName:t.componentName,widgetType:t.widgetType??"chart",config:t.config,queryMeta:t.queryMeta,drilldownBy:[],layout:t.layout}));return e.every(t=>t.layout)?e:on(e)});constructor(){this.perms.ensureLoaded(),this.destroyRef.onDestroy(()=>this.clearPipelineMountTimeout()),this.dashboardState.state$.pipe(Y(this.destroyRef)).subscribe(t=>{this.dashboardWidgets.set(t.widgets),this.autoGenerated.set(t.isAutoGenerated===!0),this.alertSource.set({connectionId:t.connectionId,isPipeline:t.isPipeline,adapterType:t.adapterType}),t.isAutoGenerated===!0?(this.sliderView()==="none"||this.sliderView()==="edit")&&this.sliderView.set("preview"):this.sliderView()==="none"&&this.loadedDashboardId()&&this.sliderView.set("edit")}),O(()=>{this.dashboardWidgets(),this.loadedDashboardId(),queueMicrotask(()=>this.primeFilterWidgets())}),O(()=>{let t=this.loadedDashboardId(),n=sn(this.dashboardWidgets());!t||n===this.probedFingerprint||(this.probedFingerprint=n,this.loadForecastability(t))}),O(()=>{let t=this.dashboardWidgets(),n=this.loadedDashboardId();if(!n||t.length===0||this.initialFilterAppliedFor.has(n))return;let i=this.collectInitialFilters(t);i&&(this.initialFilterAppliedFor.add(n),this.applyInitialFilters(i))}),O(()=>{let t=this.dashboardSummaryLoading();queueMicrotask(()=>{let n=this.aiExecutiveSummaryEl?.nativeElement;n&&(n.loading=t)})}),O(()=>{let t=this.dashboardSummaryHtml(),n=this.dashboardName();queueMicrotask(()=>{let i=this.aiExecutiveSummaryEl?.nativeElement;i&&(i.config={summary:t,buttonLabel:"Executive Summary",buttonVariant:"secondary",drawerLabel:n?`${n} Summary`:"Dashboard Summary",typingSpeed:5,closeOnEscape:!0},i.open&&t&&i.startTyping?.())})});let e;O(()=>{let t=this.loadedDashboardId();e!==void 0&&e!==t&&(this.primedFilterWidgets.clear(),this.filterCatalogCache.clear(),this.activeDashboardFilters.set(null),this.activeResolvedFilters.set(null),this.applySummary.set(null)),t&&this.sliderView()==="none"&&this.sliderView.set(this.dashboardState.isAutoGenerated?"preview":"edit"),e=t})}ngAfterViewInit(){let e=this.aiExecutiveSummaryEl?.nativeElement;e&&(e.loading=this.dashboardSummaryLoading(),e.config={summary:this.dashboardSummaryHtml(),buttonLabel:"Executive Summary",buttonVariant:"secondary",drawerLabel:this.dashboardName()?`${this.dashboardName()} Summary`:"Dashboard Summary",typingSpeed:5,closeOnEscape:!0})}_lastInitialTool=null;_initialToolEffect=O(()=>{let e=this.initialTool();if(!e){this._lastInitialTool=null;return}e!==this._lastInitialTool&&(this._lastInitialTool=e,queueMicrotask(()=>this.openTool(e)))});onConnectionSelect(e){let t=this.selectedConnectionId()===e?"":e;this.connectionChange.emit(t)}onPipelineRowClick(e){this.connectionChange.emit(e),this.openTool("schema")}onViewSchema(){this.openTool("schema")}async updateDatasource(){let e=this.selectedConnection();if(!e)return;let t=this.erDiagramRef??this.osViewerRef;if(!t)return;let n=t.entities().map(i=>({tableName:i.schema?`${i.schema}.${i.tableName}`:i.tableName,referencedBy:i.referencedBy,columnsSelected:i.columns.filter(o=>i.selectedColumns.has(o.name))})).filter(i=>i.columnsSelected.length>0);if(n.length){this.isUpdatingDatasource.set(!0);try{await this.datasourcesService.updateDatasourceDatasets(e,n),this.closeTool()}catch(i){console.error("Failed to update datasource:",i)}finally{this.isUpdatingDatasource.set(!1)}}}toggleSliderView(e){let t=this.sliderView()===e?"none":e;this.sliderView.set(t),t==="none"&&this.sliderFullscreen()&&this.toggleSliderFullscreen()}closeSlider(){this.sliderView.set("none"),this.sliderFullscreen()&&this.toggleSliderFullscreen()}toggleSliderFullscreen(){!this.sliderFullscreen()?(this.sliderView()==="none"&&this.sliderView.set("preview"),this.sliderFullscreen.set(!0)):this.sliderFullscreen.set(!1),requestAnimationFrame(()=>window.dispatchEvent(new Event("resize")))}features(){return I().features}widgetMenu(){return I().features.widgetMenu}canvasBackgroundColor(){return I().ui.canvasBackgroundColor}autoHeight(){return I().ui.autoHeight}openInAskAquera(e){if(!this.features().askAquera)return;this.dashboardMenuOpen.set(!1);let t=this.loadedDashboardId();t&&this.nav.toAskAqueraDashboard(t,e?.summary?{summary:1}:void 0)}selectDashboardMenuItem(e){switch(this.dashboardMenuOpen.set(!1),e){case"preview":this.toggleSliderView("preview");break;case"edit":this.toggleSliderView("edit");break;case"globalWidgets":this.openTool("widgetLibrary");break;case"executiveSummary":this.runExecutiveSummary();break;case"exportPdf":this.emitExportAfterRender("pdf");break;case"exportPng":this.emitExportAfterRender("png");break;case"publish":this.publishClick.emit();break;case"rearrange":this.rearrangeDashboard();break;case"delete":this.requestDeleteDashboard(this.loadedDashboardId());break;case"askAquera":this.openInAskAquera();break}}forecastable=c({});forecastingWidgetId=c(null);forecastBusy=new Set;hasFilter=P(()=>this.sliderWidgets().some(e=>this.isFilterWidget(e)));anyForecastOn=P(()=>this.sliderWidgets().some(e=>!!e?.config?.forecast?.enabled));probedFingerprint="";async loadForecastability(e){if(!e)return;let t=this.dashboardWidgets(),n=t?.length?await this.forecastService.probeWidgets(t):await this.forecastService.probe(e);this.loadedDashboardId()===e&&this.forecastable.set(n)}async onForecast(e){let t=this.loadedDashboardId(),n=String(e.widget.id);if(!(!t||this.forecastBusy.has(n))){this.forecastBusy.add(n),this.forecastingWidgetId.set(n);try{let i=e.enable?await this.forecastService.addToWidget(t,n,e.settings??{}):await this.forecastService.removeFromWidget(t,n);if(e.enable&&i?.guardrails&&i.guardrails.passed===!1)return;i?.widget&&this.replaceForecastWidget(i.widget),ze({variant:"success",title:e.enable?"Forecast added":"Forecast removed",content:e.enable?"The projection is shown with its confidence range.":"The chart is back to its measured history."})}catch{}finally{this.forecastBusy.delete(n),this.forecastingWidgetId.set(null)}}}forecastingAll=c(!1);async onForecastDashboard(e){let t=this.loadedDashboardId();if(!(!t||this.forecastingAll())){this.forecastingAll.set(!0);try{let n=await this.forecastService.toggleDashboard(t,e);for(let r of n.widgets??[])this.replaceForecastWidget(r);let i=n.applied?.length??0,o=n.skipped?.length??0;i&&ze({variant:"success",title:`${e?"Forecast added to":"Forecast removed from"} ${i} widget${i===1?"":"s"}`,content:o?`${o} skipped \u2014 ${n.skipped[0]?.message??"not forecastable"}`:"Projections are shown with their confidence range."}),this.loadForecastability(t)}catch{}finally{this.forecastingAll.set(!1)}}}replaceForecastWidget(e){this.dashboardWidgets.update(t=>t.map(n=>String(n.id)===String(e.id)?W(D({},n),{config:e.config??n.config,nileConfig:e.config?.chart??n.nileConfig}):n))}onMenuAction(e){switch(e){case"preview":this.toggleSliderView("preview");break;case"edit":this.toggleSliderView("edit");break;case"widgetLibrary":this.selectDashboardMenuItem("globalWidgets");break;case"executiveSummary":this.selectDashboardMenuItem("executiveSummary");break;case"exportPdf":this.selectDashboardMenuItem("exportPdf");break;case"exportPng":this.selectDashboardMenuItem("exportPng");break;case"rearrange":this.selectDashboardMenuItem("rearrange");break;case"publish":this.selectDashboardMenuItem("publish");break;case"delete":this.selectDashboardMenuItem("delete");break;case"forecastAll":this.onForecastDashboard(!this.anyForecastOn());break;case"toggleFilter":this.onToggleFilter();break;case"toggleTimeFilter":this.timeFilterPref.toggle(this.loadedDashboardId());break;case"askAquera":this.openInAskAquera();break;case"promptGallery":break}}togglingFilter=c(!1);async onToggleFilter(){if(!this.togglingFilter()){this.togglingFilter.set(!0);try{await this.dashboardState.toggleFilterWidget(this.loadedDashboardId())}catch(e){ze({variant:"warning",title:"Filter not saved",content:ln(e instanceof Error?e.message:"","Couldn't update the dashboard filter. Please try again.")})}finally{this.togglingFilter.set(!1)}}}isRearranging=c(!1);rearrangeOptions=[];rearrangeIndex=0;rearrangeKey=null;widgetSetKey(e){return e.map(t=>t.id).sort().join("|")}applyRearrangeOption(e,t,n){this.dashboardState.updateWidgetLayouts(e.layouts);let i=n>1?` (${t+1} of ${n}: ${e.label})`:"",o=n>1?" Rearrange again for the next option.":"";this.pushSystemMessage("success",`Dashboard rearranged${i} \u2014 publish to save this layout.${o}`)}async rearrangeDashboard(){if(this.isRearranging())return;let e=this.loadedDashboardId(),t=this.dashboardState.snapshot.widgets;if(t.length===0){this.pushSystemMessage("info","No widgets to rearrange.");return}let n=this.widgetSetKey(t);if(n===this.rearrangeKey&&this.rearrangeOptions.length>1){this.rearrangeIndex=(this.rearrangeIndex+1)%this.rearrangeOptions.length,this.applyRearrangeOption(this.rearrangeOptions[this.rearrangeIndex],this.rearrangeIndex,this.rearrangeOptions.length);return}this.isRearranging.set(!0);try{let{layouts:i,options:o}=await this.publishRepo.rearrangeDashboard(t,e);if(i.length===0&&o.length===0){this.pushSystemMessage("info","No widgets to rearrange.");return}this.rearrangeOptions=o,this.rearrangeIndex=0,this.rearrangeKey=n,o.length>0?this.applyRearrangeOption(o[0],0,o.length):(this.dashboardState.updateWidgetLayouts(i),this.pushSystemMessage("success","Dashboard rearranged \u2014 publish to save this layout."))}catch(i){this.rearrangeOptions=[],this.rearrangeKey=null;let o=i instanceof Error?i.message:"Failed to rearrange \u2014 please retry";this.pushSystemMessage("error",`Rearrange failed: ${o}`)}finally{this.isRearranging.set(!1)}}renamingDashboardId=c(null);renamingValue=c("");isRenamingDashboard=c(!1);pendingDeleteDashboardId=c(null);isDeletingDashboard=c(!1);pendingDeleteDashboardName=P(()=>{let e=this.pendingDeleteDashboardId();return e?this.dashboardsList().find(t=>t.id===e)?.name??"":""});requestDeleteDashboard(e){if(!e){this.pushSystemMessage("error","No dashboard is currently loaded.");return}this.pendingDeleteDashboardId.set(e)}cancelDeleteDashboard(){this.isDeletingDashboard()||this.pendingDeleteDashboardId.set(null)}async confirmDeleteDashboard(){let e=this.pendingDeleteDashboardId();if(e){this.isDeletingDashboard.set(!0);try{await this.deleteDashboardById(e)}finally{this.isDeletingDashboard.set(!1),this.pendingDeleteDashboardId.set(null)}}}onDashboardRowEditClick(e,t){e.stopPropagation(),this.onDashboardRowClick(t.id)}startEditDashboardName(){let e=this.loadedDashboardId();!e||this.autoGenerated()||(this.renamingDashboardId.set(e),this.renamingValue.set(this.dashboardName()??""),requestAnimationFrame(()=>{let t=document.querySelector(".chat-header__rename-input");t?.focus(),t?.select()}))}isEditingDashboardName(){let e=this.loadedDashboardId();return!!e&&this.renamingDashboardId()===e}onDashboardRowDeleteClick(e,t){e.stopPropagation(),this.requestDeleteDashboard(t)}onRenameInputChange(e){this.renamingValue.set(e)}cancelRenameDashboard(){this.renamingDashboardId.set(null),this.renamingValue.set("")}async commitRenameDashboard(){let e=this.renamingDashboardId(),t=this.renamingValue().trim();if(!e||!t){this.cancelRenameDashboard();return}this.isRenamingDashboard.set(!0);try{await this.publishRepo.renameDashboard(e,t),this.pushSystemMessage("success","Dashboard renamed."),this.dashboardRenamed.emit({id:e,name:t}),this.cancelRenameDashboard()}catch(n){let i=n instanceof Error?n.message:"Failed to rename dashboard.";this.pushSystemMessage("error",`Rename failed: ${i}`)}finally{this.isRenamingDashboard.set(!1)}}onRenameInputKeydown(e){e.key==="Enter"?(e.preventDefault(),this.commitRenameDashboard()):e.key==="Escape"&&(e.preventDefault(),this.cancelRenameDashboard())}async deleteDashboardById(e){if(!e){this.pushSystemMessage("error","No dashboard is currently loaded.");return}try{await this.publishRepo.deleteDashboard(e),this.pushSystemMessage("success","Dashboard deleted."),this.dashboardDeleted.emit(e)}catch(t){let n=t instanceof Error?t.message:"Failed to delete dashboard.";this.pushSystemMessage("error",`Delete failed: ${n}`)}}closeExecutiveSummary(){this.showExecutiveSummary.set(!1)}emitExportAfterRender(e){let t=this.sliderView()==="none";t&&this.sliderView.set("preview");let n=()=>{e==="pdf"?this.exportPdfClick.emit():this.exportPngClick.emit()};t?setTimeout(n,300):requestAnimationFrame(()=>requestAnimationFrame(n))}openTool(e){if(this.activeTool()===e){this.closeTool();return}this.activeTool()==="report"&&e!=="report"&&this.disposeReportRemote(),this.toolSearchTerm.set(""),this.activeTool.set(e),this.dashboardsExpanded.set(!1),this.pipelinesExpanded.set(!1),e==="widgetLibrary"&&this.loadGlobalWidgets.emit(),e==="allDashboards"&&this.loadDashboardsList.emit(),e==="report"&&setTimeout(()=>{this.mountReportRemote()},0)}closeTool(){let e=this.activeTool();e==="report"&&this.disposeReportRemote(),this.activeTool.set("none"),this.toolSearchTerm.set(""),e!=="none"&&this.toolClosed.emit()}visibleDashboards=P(()=>this.dashboardsList().slice(0,this.dashboardsShownCount()));canLoadMoreDashboards=P(()=>this.dashboardsShownCount()<this.dashboardsList().length);remainingDashboardsCount=P(()=>Math.max(0,this.dashboardsList().length-this.dashboardsShownCount()));loadMoreDashboards(){this.dashboardsShownCount.set(this.dashboardsList().length)}toggleDashboardsInline(){let e=!this.dashboardsExpanded();this.dashboardsExpanded.set(e),e&&(this.pipelinesExpanded.set(!1),this.closeTool(),this.dashboardsShownCount.set(this.dashboardsPageSize),this.loadDashboardsList.emit())}visiblePipelines=P(()=>this.connections().slice(0,this.pipelinesShownCount()));canLoadMorePipelines=P(()=>this.pipelinesShownCount()<this.connections().length);remainingPipelinesCount=P(()=>Math.max(0,this.connections().length-this.pipelinesShownCount()));loadMorePipelines(){this.pipelinesShownCount.set(this.connections().length)}togglePipelinesInline(){let e=!this.pipelinesExpanded();this.pipelinesExpanded.set(e),e&&(this.dashboardsExpanded.set(!1),this.closeTool(),this.pipelinesShownCount.set(this.pipelinesPageSize))}pipelineMountTimeout=null;onCreatePipelineClick(){this.newPipelineName.set(""),this.showCreatePipelineFlyer.set(!0),this.createPipelineClick.emit(),this.clearPipelineMountTimeout(),this.pipelineMountTimeout=setTimeout(()=>{this.pipelineMountTimeout=null,this.mountPipelineRemote()},0)}closeCreatePipelineFlyer(){this.showCreatePipelineFlyer.set(!1),this.newPipelineName.set(""),this.clearPipelineMountTimeout(),this.disposePipelineRemote()}clearPipelineMountTimeout(){this.pipelineMountTimeout!==null&&(clearTimeout(this.pipelineMountTimeout),this.pipelineMountTimeout=null)}async mountPipelineRemote(){if(!(!this.pipelineHost||this.pipelineRemoteRef)){this.pipelineLoading.set(!0);try{let{init:e,loadRemote:t}=await import("./chunk-L4MRZUKM.js"),n=window.__mfRemotes__?.auth;n&&e({name:"dashboards",remotes:[{name:"auth",entry:n}]});let o=(await t("auth/DataConnector"))?.DataConnectorComponent;if(!o)return;this.pipelineHost.clear(),this.pipelineRemoteRef=this.pipelineHost.createComponent(o);let r=this.pipelineRemoteRef.instance;r.createMode=!0,r.showAddDialog=!0,r.pipelineCreated?.pipe(Y(this.destroyRef)).subscribe(({id:h})=>{this.connectionChange.emit(h),this.loadDashboardsList.emit(),this.closeCreatePipelineFlyer()}),r.cancelled?.pipe(Y(this.destroyRef)).subscribe(()=>this.closeCreatePipelineFlyer()),this.pipelineRemoteRef.changeDetectorRef.detectChanges()}catch(e){console.error("Failed to load pipeline create remote:",e),this.closeCreatePipelineFlyer()}finally{this.pipelineLoading.set(!1)}}}disposePipelineRemote(){this.pipelineRemoteRef?.destroy(),this.pipelineRemoteRef=null,this.pipelineHost?.clear()}async mountReportRemote(){if(!(!this.reportHost||this.reportRemoteRef)){this.reportLoading.set(!0);try{let{init:e,loadRemote:t}=await import("./chunk-L4MRZUKM.js"),n=window.__mfRemotes__?.report;n&&e({name:"dashboards",remotes:[{name:"report",entry:n}]});let o=(await t("report/ReportPage"))?.ReportPageComponent;if(!o)return;this.reportHost.clear(),this.reportRemoteRef=this.reportHost.createComponent(o),this.reportRemoteRef.changeDetectorRef.detectChanges()}catch(e){console.error("Failed to load report remote:",e)}finally{this.reportLoading.set(!1)}}}disposeReportRemote(){this.reportRemoteRef?.destroy(),this.reportRemoteRef=null,this.reportHost?.clear()}onToolSearch(e){this.toolSearchTerm.set(e)}onDashboardRowClick(e){this.renamingDashboardId()||this.pendingDeleteDashboardId()||(this.closeTool(),this.sliderView.set("edit"),e!==this.loadedDashboardId()&&this.switchDashboard.emit(e))}onCreateDashboardClick(){this.createDashboardClick.emit()}onGlobalWidgetAddClick(e){this.addGlobalWidgetToDashboard.emit(e),this.closeTool()}onGlobalWidgetRemoveClick(e){this.removeGlobalWidgetFromLibrary.emit(e)}filteredDashboardsList=P(()=>{let e=this.toolSearchTerm().toLowerCase().trim(),t=this.dashboardsList();return e?t.filter(n=>n.name.toLowerCase().includes(e)):t});toolDrawerLabel=P(()=>this.activeTool()==="widgetLibrary"?"Widget library":"");computeRelativeTime(e){if(e==null||e==="")return"";let t=typeof e=="number"?e:Date.parse(e);if(!Number.isFinite(t))return"";let n=Date.now()-t,i=Math.floor(n/6e4);if(i<1)return"just now";if(i<60)return`${i} min ago`;let o=Math.floor(i/60);if(o<24)return`${o} hour${o>1?"s":""} ago`;let r=Math.floor(o/24);if(r<30)return`${r} day${r>1?"s":""} ago`;let h=Math.floor(r/30);return`${h} month${h>1?"s":""} ago`}onSliderRemoveWidget(e){this.removeWidget.emit(e)}onSliderUpdateLayout(e){this.dashboardState.updateWidgetLayout(e.id,e.layout)}onLayoutUndoRedoKeydown(e){if(this.sliderView()!=="edit")return;let t=e.metaKey||e.ctrlKey,n=e.key.toLowerCase(),i=t&&n==="z"&&!e.shiftKey,o=t&&(n==="y"||n==="z"&&e.shiftKey);if(!i&&!o)return;let r=e.target;if(!(r&&(r.isContentEditable||/^(input|textarea|select)$/i.test(r.tagName))))if(o){if(!this.dashboardState.canRedoLayout)return;e.preventDefault(),this.dashboardState.redoLayout()}else{if(!this.dashboardState.canUndoLayout)return;e.preventDefault(),this.dashboardState.undoLayout()}}applyingFilters=c(!1);activeDashboardFilters=c(null);activeResolvedFilters=c(null);currentTimeRange=c(null);applySummary=c(null);isFilterWidget(e){return e?.config?.chart?.type==="filter"}filterSuggestTimers=new Map;filterSuggestSeq=new Map;filterCatalogCache=new Map;primedFilterWidgets=new Set;initialFilterAppliedFor=new Set;collectInitialFilters(e){let t={};for(let n of e){let i=n.config?.chart;if(i?.type==="filter")for(let o of i.controls??[]){if(!o.id)continue;let r=o.value;r!=null&&(typeof r=="string"&&r.trim()===""||(t[o.id]=r))}}return Object.keys(t).length>0?t:null}async applyInitialFilters(e){let t=this.dashboardState.snapshot.widgets.filter(r=>!this.isFilterWidget(r));if(t.length===0)return;let n=this.loadedDashboardId();if(!n)return;this.applyFiltersAbort?.abort();let i=new AbortController;this.applyFiltersAbort=i;let o=++this.applyFiltersSeq;this.applyingFilters.set(!0);try{let{widgets:r,resolvedFilters:h}=await this.openAiService.applyFilters(t,e,n,"draft",i.signal,{timeRange:this.currentTimeRange()??void 0});if(o!==this.applyFiltersSeq)return;this.dashboardState.applyFilterView(r),this.activeDashboardFilters.set(e),this.activeResolvedFilters.set(h),this.applySummary.set(Re(r,this.buildActiveFilters(e)))}catch(r){if(r?.name==="AbortError"||o!==this.applyFiltersSeq)return;let h=r instanceof Error?r.message:"Failed to apply filters.";this.pushSystemMessage("error",`Apply filters failed: ${h}`)}finally{o===this.applyFiltersSeq&&this.applyingFilters.set(!1)}}async onTimeRangeApply(e){if(this.currentTimeRange.set(e),!e&&this.isEmptyFilters(this.activeDashboardFilters())){await this.reloadDashboardForFilterClear();return}let t=this.dashboardState.snapshot.widgets.filter(r=>!this.isFilterWidget(r));if(t.length===0)return;let n=this.loadedDashboardId();if(!n)return;this.applyFiltersAbort?.abort();let i=new AbortController;this.applyFiltersAbort=i;let o=++this.applyFiltersSeq;this.applyingFilters.set(!0);try{let r=this.activeDashboardFilters()??{},{widgets:h,resolvedFilters:u}=await this.openAiService.applyFilters(t,r,n,"draft",i.signal,{resolvedFilters:this.activeResolvedFilters()??[],timeRange:e??void 0});if(o!==this.applyFiltersSeq)return;this.dashboardState.applyFilterView(h),this.activeResolvedFilters.set(u),this.applySummary.set(Re(h,this.buildActiveFilters(r)))}catch(r){if(r?.name==="AbortError"||o!==this.applyFiltersSeq)return;let h=r instanceof Error?r.message:"Failed to apply time range.";this.pushSystemMessage("error",`Apply time range failed: ${h}`)}finally{o===this.applyFiltersSeq&&this.applyingFilters.set(!1)}}onSliderFilterChange(e){if(!e.widgetId||!e.controlId||e.query!=="")return;let t=this.loadedDashboardId();if(!t)return;let n=this.dashboardWidgets(),{widgetId:i,controlId:o}=e;(async()=>{try{let r=await this.openAiService.filterSuggest(t,"",n,"draft");this.applyFilterSuggestions(i,o,r)}catch(r){console.warn("[sug] editor filterSuggest failed",r)}})()}primeFilterWidgets(){let e=this.loadedDashboardId();if(!e)return;let t=this.dashboardWidgets();for(let n of t){if(this.primedFilterWidgets.has(n.id))continue;let i=n.config?.chart;if(i?.type!=="filter")continue;let o=i.controls?.find(h=>h.variant==="prompt"||h.variant==="expression"||h.variant==="hybrid")??i.controls?.find(h=>h.id);if(!o?.id)continue;this.primedFilterWidgets.add(n.id);let r=o.id;(async()=>{try{let h=await this.openAiService.filterSuggest(e,"",t,"draft");this.applyFilterSuggestions(n.id,r,h)}catch(h){this.primedFilterWidgets.delete(n.id),console.warn("Filter suggest prime failed:",h)}})()}}applyFilterSuggestions(e,t,n){let i=Array.isArray(n.suggestions)?[...n.suggestions]:[];if(!i.length){n.nextToken&&i.push({id:n.nextToken.value,label:n.nextToken.label,type:"attribute"});for(let o of n.completions)i.push({label:o,type:"suggestion"})}i.length!==0&&(this.filterCatalogCache.set(e,i),this.sliderGridRef?.patchFilterSuggestions(e,t,i))}buildActiveFilters(e){return Ht(e,t=>this.filterFieldLabel(t))}filterFieldLabel(e){for(let t of this.filterCatalogCache.values()){let n=t.find(i=>i.type==="attribute"&&i.id===e);if(n)return n.label}return e}applyFiltersSeq=0;applyFiltersAbort;async onSliderFilterSubmit(e){if(this.isEmptyFilters(e.filters)){await this.reloadDashboardForFilterClear();return}let t=this.dashboardState.snapshot.widgets.filter(r=>!this.isFilterWidget(r));if(t.length===0)return;let n=this.loadedDashboardId();if(!n)return;this.applyFiltersAbort?.abort();let i=new AbortController;this.applyFiltersAbort=i;let o=++this.applyFiltersSeq;this.applyingFilters.set(!0);try{let{widgets:r,resolvedFilters:h}=await this.openAiService.applyFilters(t,e.filters,n,"draft",i.signal,{mode:e.mode,prompt:e.prompt,timeRange:this.currentTimeRange()??void 0});if(o!==this.applyFiltersSeq)return;this.dashboardState.applyFilterView(r),this.activeDashboardFilters.set(e.filters),this.activeResolvedFilters.set(h),this.applySummary.set(Re(r,this.buildActiveFilters(e.filters)))}catch(r){if(r?.name==="AbortError"||o!==this.applyFiltersSeq)return;let h=r instanceof Error?r.message:"Failed to apply filters.";this.pushSystemMessage("error",`Apply filters failed: ${h}`)}finally{o===this.applyFiltersSeq&&this.applyingFilters.set(!1)}}isEmptyFilters(e){if(!e)return!0;for(let t of Object.values(e))if(t!=null&&!(typeof t=="string"&&t.trim()==="")&&!(typeof t=="object"&&Object.keys(t).length===0))return!1;return!0}async reloadDashboardForFilterClear(){let e=this.loadedDashboardId();if(!e)return;this.applyFiltersAbort?.abort();let t=++this.applyFiltersSeq;this.applyingFilters.set(!0),this.activeDashboardFilters.set(null),this.activeResolvedFilters.set(null),this.applySummary.set(null);try{let n=await this.publishRepo.fetchDashboard(e);if(t!==this.applyFiltersSeq)return;this.dashboardState.replaceDashboard(n),this.forecastable.set(n.forecastable??{})}catch(n){if(t!==this.applyFiltersSeq)return;let i=n instanceof Error?n.message:"Failed to reload dashboard.";this.pushSystemMessage("error",`Reload dashboard failed: ${i}`)}finally{t===this.applyFiltersSeq&&this.applyingFilters.set(!1)}}onSliderEditWidget(e){this.editDashboardWidget.emit(e)}onSliderWidgetClicked(e){this.openWidgetDetailPanelForWidget(e)}async openWidgetDetailPanelForWidget(e){if(this.widgetDetailPanelLoading())return;let t=e.config?._meta?.detailPanel;if(t){this.widgetDetailPanelTitle.set(t.title??null),this.widgetDetailPanelSkeletonSlots.set((t.widgets??[]).map(n=>n.layout).filter(n=>!!n)),this.widgetDetailPanelLoading.set(!0),this.widgetDetailPanelOpen.set(!0);try{let n=await this.openAiService.previewWidgetDetailPanelDefinition(t);if(!n.widgets.length){this.widgetDetailPanelOpen.set(!1);return}this.widgetDetailPanelTitle.set(n.title),this.widgetDetailPanelRaw.set(n.widgets)}catch{this.widgetDetailPanelOpen.set(!1)}finally{this.widgetDetailPanelLoading.set(!1)}}}closeWidgetDetailPanel(){this.widgetDetailPanelOpen.set(!1),this.widgetDetailPanelRaw.set([]),this.widgetDetailPanelTitle.set(null),this.widgetDetailPanelSkeletonSlots.set([])}onSliderDslWidgetUpdated(e){this.dashboardState.updateWidget(e.id,{config:e.config,queryMeta:e.queryMeta})}onSliderWidgetChartTypeChanged(e){this.dashboardState.updateWidget(e.id,{componentName:e.componentName,config:e.config})}onSliderWidgetFiltersChanged(e){this.dashboardState.updateWidget(e.id,{config:e.config})}onSliderWidgetColorChanged(e){this.dashboardState.updateWidget(e.id,{config:e.config})}async onSliderTweakWidget(e){this.tweakingWidgetId.set(e.widgetId);try{let t=this.loadedWidgetIds().has(e.widgetId),n=this.dashboardState.snapshot.widgets.find(r=>r.id===e.widgetId),i=await this.openAiService.tweakWidget(t||!n?{widgetId:e.widgetId,prompt:e.prompt}:{widget:n,dataSourceId:this.datasourceId(),prompt:e.prompt}),o={config:i.config};i.title!==void 0&&(o.title=i.title),i.widgetType!==void 0&&(o.widgetType=i.widgetType),i.componentName!==void 0&&(o.componentName=i.componentName),i.summary!==void 0&&(o.summary=i.summary),i.layout&&(o.layout=i.layout),i.drilldownBy&&(o.drilldownBy=i.drilldownBy),this.dashboardState.updateWidget(e.widgetId,o)}catch(t){console.error("Tweak failed:",t)}finally{this.tweakingWidgetId.set(null)}}async runExecutiveSummary(){let e=this.loadedDashboardId();if(!e){this.pushSystemMessage("error","Save the dashboard before generating a summary.");return}this.showExecutiveSummary.set(!0);let t=this.aiExecutiveSummaryEl?.nativeElement;t&&(t.loading=!0,t.show?.());try{let n=await this.publishRepo.fetchDashboardSummary(e,!1),i=this.aiExecutiveSummaryEl?.nativeElement;i&&(i.config=W(D({},i.config??{}),{summary:n}),i.loading=!1,i.open&&i.startTyping?.())}catch(n){let i=n instanceof Error?n.message:"Failed to generate summary.",o=this.aiExecutiveSummaryEl?.nativeElement;o&&(o.config=W(D({},o.config??{}),{summary:dn(`**Couldn't generate an executive summary.** ${i}`)}),o.loading=!1,o.open&&o.startTyping?.()),this.pushSystemMessage("error",`Executive summary failed: ${i}`)}}pushSystemMessage(e,t){e==="success"&&this.showToast("success","Done",t)}emitAddWidget(e){let i=e,{id:t}=i,n=de(i,["id"]);this.addWidget.emit(n),this.pushSystemMessage("success","Widget added to your dashboard.")}isAddingToGlobal(e){return this.addingGlobalWidgetIds().has(e)}addToGlobalWidgets(e){this.addingGlobalWidgetIds().has(e.id)||(this.addingGlobalWidgetIds.update(t=>new Set(t).add(e.id)),this.saveWidgetToLibrary.emit(e.id))}finishSaveToLibrary(e,t,n){this.addingGlobalWidgetIds.update(i=>{let o=new Set(i);return o.delete(e),o}),this.pushSystemMessage(t,n)}findChatWidget(e){return null}onAddToThisDashboard(e,t){this.pendingDashboardWidgets.set({title:t,widgets:e}),this.showLayoutPopup.set(!0)}confirmAddToDashboard(){this.addWidgetsToDashboard.emit(this.pendingDashboardWidgets()),this.showLayoutPopup.set(!1),this.pendingDashboardWidgets.set({widgets:[]})}showToast(e,t,n){let i=document.createElement("nile-toast");i.variant=e,i.title=t,i.content=n,i.duration=5e3,i.closable=!0,i.toast(),Le()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=G({type:a,selectors:[["db-dashboard-editor"]],viewQuery:function(t,n){if(t&1&&Se(ni,5)(ii,5,xe)(ai,5)(oi,5)(ri,5)(si,5,xe),t&2){let i;U(i=H())&&(n.aiExecutiveSummaryEl=i.first),U(i=H())&&(n.pipelineHost=i.first),U(i=H())&&(n.erDiagramRef=i.first),U(i=H())&&(n.osViewerRef=i.first),U(i=H())&&(n.sliderGridRef=i.first),U(i=H())&&(n.reportHost=i.first)}},hostBindings:function(t,n){t&1&&y("keydown",function(o){return n.onLayoutUndoRedoKeydown(o)},ut)},inputs:{datasourceId:[1,"datasourceId"],connections:[1,"connections"],connectionsLoading:[1,"connectionsLoading"],selectedConnectionId:[1,"selectedConnectionId"],loadedDashboardId:[1,"loadedDashboardId"],dashboardLoading:[1,"dashboardLoading"],loadedWidgetIds:[1,"loadedWidgetIds"],dashboardName:[1,"dashboardName"],dashboardsList:[1,"dashboardsList"],globalWidgets:[1,"globalWidgets"],globalWidgetsLoading:[1,"globalWidgetsLoading"],addedGlobalWidgetIds:[1,"addedGlobalWidgetIds"],initialTool:[1,"initialTool"],dashboardSummaryHtml:[1,"dashboardSummaryHtml"],dashboardSummaryLoading:[1,"dashboardSummaryLoading"]},outputs:{addWidget:"addWidget",saveWidgetToLibrary:"saveWidgetToLibrary",publishNewDashboard:"publishNewDashboard",addWidgetsToDashboard:"addWidgetsToDashboard",connectionChange:"connectionChange",editDashboardWidget:"editDashboardWidget",switchDashboard:"switchDashboard",exitDashboard:"exitDashboard",createDashboardClick:"createDashboardClick",addGlobalWidgetToDashboard:"addGlobalWidgetToDashboard",removeGlobalWidgetFromLibrary:"removeGlobalWidgetFromLibrary",loadGlobalWidgets:"loadGlobalWidgets",loadDashboardsList:"loadDashboardsList",toolClosed:"toolClosed",executiveSummaryClick:"executiveSummaryClick",exportPdfClick:"exportPdfClick",exportPngClick:"exportPngClick",publishClick:"publishClick",dashboardDeleted:"dashboardDeleted",dashboardRenamed:"dashboardRenamed",createPipelineClick:"createPipelineClick",removeWidget:"removeWidget"},features:[ke([nn(),We(()=>{let e=f(j);return Be(()=>`${k.baseUrl}/api/customers/${e.tenantId()??""}/products/${be()}/workforce`)})])],decls:42,vars:53,consts:[["sliderGrid",""],["aiExecutiveSummary",""],["pipelineHost",""],["reportHost",""],["erDiagram",""],["osViewer",""],["headerRenameInput",""],[1,"qna-panel"],[1,"panel-right-side"],[1,"pipeline-flyer"],[1,"contained-panel","home-panel"],[1,"contained-panel","all-pipelines-panel"],[1,"contained-panel","schema-panel"],[1,"contained-panel","all-dashboards-panel"],["aria-label","Rearranging dashboard",1,"rearrange-indicator"],[1,"dashboard-toolbar"],[1,"chat-layout"],[1,"chat-header"],["content","Back to dashboards","placement","bottom"],["circle","","variant","ghost","size","small","aria-label","Back to dashboards",3,"click"],["name","ng-arrow-left","method","stroke","size","18"],[1,"chat-header__rename"],[1,"chat-header__title-group"],[1,"contained-panel","widget-library-panel"],[1,"dashboard-slider"],[1,"dashboard-slider__body"],[3,"forecast","remove","editWidget","updateLayout","tweakWidget","dslWidgetUpdated","widgetChartTypeChanged","widgetFiltersChanged","widgetColorChanged","filterSubmit","filterChange","setAlert","widgetClick","timeRangeApply","widgets","editMode","canvasBackgroundColor","autoHeight","dashboardId","tweakingWidgetId","loading","widgetsLoading","dashboardFilters","resolvedFilters","applySummary","showWidgetMenu","canAsk","canChangeChartType","canManageFilters","canCustomizeColors","canViewChartData","canSetAlert","canAddToStory","canForecast","canExportPng","canExportCsv","canPrint","canTweak","canEdit","canDelete","forecastable","forecastingWidgetId","detailPanel","detailRootLabel","timeFilterEnabled"],[3,"closed","saved","open","widget","dashboardId","source"],[1,"ai-executive-summary"],[1,"aq-detail-overlay"],["label","Delete Dashboard",3,"nile-request-close","open"],[1,"layout-warning-text"],["slot","footer",1,"layout-popup-footer"],["variant","tertiary","size","small",3,"click"],["variant","primary","size","small",3,"click"],["label","Add to Dashboard",3,"nile-request-close","open"],[1,"contained-panel__header"],[1,"contained-panel__title"],["type","button","aria-label","Close",1,"contained-panel__close",3,"click"],["name","close","size","16"],[1,"contained-panel__body","contained-panel__body--flush"],[1,"contained-panel__body"],[1,"tool-empty"],[1,"all-dash-grid"],["tabindex","0","role","button",1,"all-dash-card"],["tabindex","0","role","button",1,"all-dash-card",3,"click"],[1,"all-dash-card__head"],[1,"all-dash-card__icon"],["name","ng-dataflow-04","size","18","method","stroke"],["variant","success"],[1,"all-dash-card__name",3,"title"],[1,"schema-panel__body"],[3,"connectionId","tables","preselectedColumns"],[1,"schema-panel__footer"],["variant","tertiary",3,"click"],["variant","primary",3,"click"],["slot","prefix",1,"btn-spinner","btn-spinner--light"],[3,"connectionId","indexNames","preselectedFields"],["variant","primary","size","small","class","contained-panel__primary-action",3,"click",4,"hasPermission"],[1,"dash-empty-state"],["variant","primary","size","small",1,"contained-panel__primary-action",3,"click"],["slot","prefix","name","ng-plus","method","stroke","size","14","color","#fff"],[1,"dash-empty-state__graphic"],["viewBox","0 0 380 140","aria-hidden","true","preserveAspectRatio","xMidYMid meet"],["id","dashFlowAllDash","x1","78","y1","70","x2","170","y2","70","gradientUnits","userSpaceOnUse"],["offset","0%","stop-color","#BFD7E9","stop-opacity","0.4"],["offset","100%","stop-color","#005EA6","stop-opacity","0.9"],["x","20","y","36","width","58","height","68","rx","6","fill","#fff","stroke","#C7CED4"],["x1","20","y1","50","x2","78","y2","50","stroke","#E6E9EB"],["x1","49","y1","36","x2","49","y2","104","stroke","#E6E9EB"],["cx","34","cy","62","r","2","fill","#80AED3"],["cx","64","cy","62","r","2","fill","#80AED3"],["cx","34","cy","76","r","2","fill","#80AED3"],["cx","64","cy","76","r","2","fill","#80AED3"],["cx","34","cy","90","r","2","fill","#80AED3"],["cx","64","cy","90","r","2","fill","#80AED3"],["d","M 78 70 L 170 70","fill","none","stroke","url(#dashFlowAllDash)","stroke-width","3","stroke-linecap","round","stroke-dasharray","4 4"],["cx","100","cy","70","r","3","fill","#005EA6"],["attributeName","cx","from","78","to","170","dur","2s","repeatCount","indefinite"],["cx","120","cy","70","r","3","fill","#80AED3","opacity","0.7"],["attributeName","cx","from","78","to","170","dur","2s","begin","0.6s","repeatCount","indefinite"],["x","170","y","22","width","190","height","96","rx","8","fill","#fff","stroke","#80AED3","stroke-width","1.5"],["x","180","y","32","width","48","height","22","rx","4","fill","#E6EFF6"],["x","184","y","38","width","22","height","3","rx","1.5","fill","#80AED3"],["x","184","y","44","width","14","height","5","rx","1.5","fill","#005EA6"],["x","234","y","32","width","48","height","22","rx","4","fill","#E6EFF6"],["x","238","y","38","width","22","height","3","rx","1.5","fill","#80AED3"],["x","238","y","44","width","14","height","5","rx","1.5","fill","#005EA6"],["x","288","y","32","width","62","height","22","rx","4","fill","#E6EFF6"],["x","292","y","38","width","22","height","3","rx","1.5","fill","#80AED3"],["x","292","y","44","width","14","height","5","rx","1.5","fill","#005EA6"],["x","180","y","86","width","6","height","22","rx","1","fill","#005EA6","opacity","0.7"],["attributeName","height","values","22;14;22","dur","1.8s","repeatCount","indefinite"],["attributeName","y","values","86;94;86","dur","1.8s","repeatCount","indefinite"],["x","192","y","80","width","6","height","28","rx","1","fill","#005EA6"],["attributeName","height","values","28;20;28","dur","1.8s","begin","0.2s","repeatCount","indefinite"],["attributeName","y","values","80;88;80","dur","1.8s","begin","0.2s","repeatCount","indefinite"],["x","204","y","76","width","6","height","32","rx","1","fill","#005EA6","opacity","0.85"],["attributeName","height","values","32;24;32","dur","1.8s","begin","0.4s","repeatCount","indefinite"],["attributeName","y","values","76;84;76","dur","1.8s","begin","0.4s","repeatCount","indefinite"],["x","216","y","84","width","6","height","24","rx","1","fill","#005EA6","opacity","0.6"],["attributeName","height","values","24;16;24","dur","1.8s","begin","0.6s","repeatCount","indefinite"],["attributeName","y","values","84;92;84","dur","1.8s","begin","0.6s","repeatCount","indefinite"],["d","M 250 102 L 268 92 L 286 96 L 304 84 L 322 88 L 340 76","fill","none","stroke","#005EA6","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["attributeName","stroke-dasharray","values","0 200;200 200","dur","2.4s","repeatCount","indefinite"],["cx","340","cy","76","r","3","fill","#005EA6"],["attributeName","opacity","values","0;1;1;0","dur","2.4s","repeatCount","indefinite"],[1,"dash-empty-state__title"],[1,"dash-empty-state__desc"],["variant","primary","size","medium",3,"click",4,"hasPermission"],["variant","primary","size","medium",3,"click"],["type","button",1,"dash-card"],["type","button",1,"dash-card",3,"click"],[1,"dash-card__preview"],[1,"dash-card__chip"],[1,"dash-card__status"],["aria-hidden","true",1,"dash-card__widget"],["aria-hidden","true",1,"dash-card__empty"],[1,"dash-card__body"],[1,"dash-card__title-row"],[1,"dash-card__name",3,"title"],[1,"dash-card__actions"],["class","dash-card__action","role","button","tabindex","0","aria-label","Edit dashboard",3,"mousedown","click",4,"hasPermission"],[3,"disabled","deleteClick",4,"hasPermission"],[1,"dash-card__meta"],[1,"dash-card__meta-item"],["name","ng-grid-01","size","10","method","stroke"],[3,"config"],[1,"dash-card__empty-bars"],[2,"height","38%"],[2,"height","64%"],[2,"height","86%"],[2,"height","52%"],[2,"height","72%"],["role","button","tabindex","0","aria-label","Edit dashboard",1,"dash-card__action",3,"mousedown","click"],["name","ng-edit-02","method","stroke","size","14","color","var(--ng-colors-border-brand)"],[3,"deleteClick","disabled"],[1,"dash-card__meta-dot"],["viewBox","0 0 24 24","aria-hidden","true",1,"rearrange-svg"],["x","3","y","3","width","7","height","7","rx","1.5",1,"r","r-1"],["x","3","y","3","width","7","height","7","rx","1.5",1,"r","r-2"],["x","3","y","3","width","7","height","7","rx","1.5",1,"r","r-3","r-fill"],["x","3","y","3","width","7","height","7","rx","1.5",1,"r","r-4"],["variant","secondary","size","small"],[3,"action","canToggleFilter","hasFilter","canToggleTimeFilter","hasTimeFilter","canForecast","anyForecastOn","editMode","busy","canUpdate","canDelete","readOnly","showAskAquera"],["variant","secondary","size","small",3,"click"],["slot","prefix","name","ng-stars-02","method","stroke","size","14"],[1,"chat-header__rename",3,"mousedown","click"],["type","text",1,"chat-header__rename-input",3,"input","keydown","value","disabled"],["type","button","aria-label","Save dashboard name",1,"chat-header__rename-action",3,"click","disabled"],["name","ng-check","method","stroke","size","16","color","var(--ng-colors-border-brand)"],["type","button","aria-label","Cancel rename",1,"chat-header__rename-action",3,"click","disabled"],["name","ng-x-close","method","stroke","size","16"],[2,"width","180px","height","16px","border-radius","4px"],[1,"chat-header-title"],["content","Auto-generated dashboards can\u2019t be renamed","placement","bottom"],["type","button","aria-label","Rename dashboard",1,"chat-header__edit-btn"],["type","button","aria-label","Rename dashboard","disabled","",1,"chat-header__edit-btn"],["name","ng-edit-02","method","stroke","size","14","color","var(--ng-colors-text-placeholder)"],["type","button","aria-label","Rename dashboard",1,"chat-header__edit-btn",3,"click"],[1,"widget-lib-grid"],[1,"widget-lib-card"],[1,"widget-lib-card__preview"],[2,"width","100%","height","100%","border-radius","8px"],[1,"widget-lib-card__footer"],[2,"width","60%","height","16px","border-radius","4px"],[2,"width","30%","height","28px","border-radius","6px"],[3,"config","drilldownBy"],["variant","primary","size","small",1,"add-dashboard"],["role","button","tabindex","0","aria-label","Delete widget from library",1,"widget-lib-card__delete",3,"click","keydown.enter","keydown.space"],["name","ng-trash-01","method","stroke","size","14","color","var(--ng-colors-fg-error-primary)"],["variant","primary","size","small",1,"add-dashboard",3,"click"],[1,"aq-detail-overlay__crumbs"],[3,"nile-click"],["variant","text","width","160","height","16"],[1,"aq-detail-overlay__body"],[3,"widgets","editMode","selectable","showWidgetMenu","canAsk","canChangeChartType","canManageFilters","canCustomizeColors","canViewChartData","canSetAlert","canAddToStory","canForecast","canExportPng","canExportCsv","canPrint","canvasBackgroundColor"],[1,"aq-detail-skeleton-grid",3,"height"],[1,"aq-detail-skeleton"],[1,"aq-detail-skeleton-grid"],["variant","rectangular","border-radius","12px",1,"aq-detail-skeleton-slot",3,"left","top","width","height"],["variant","rectangular","border-radius","12px",1,"aq-detail-skeleton-slot"],[1,"aq-detail-skeleton__row"],["variant","rectangular","width","100%","height","96","border-radius","12px"],["variant","rectangular","width","100%","height","280","border-radius","12px"]],template:function(t,n){if(t&1){let i=M();s(0,"div",7)(1,"div",8),b(2,gi,3,0,"div",9),b(3,hi,9,0,"div",10),b(4,_i,9,1,"div",11),b(5,xi,9,3,"div",12),b(6,Ni,8,2,"div",13),b(7,Li,6,0,"span",14),b(8,qi,3,13,"div",15),s(9,"div",16)(10,"div",17)(11,"nile-tooltip",18)(12,"nile-button",19),y("click",function(){return n.exitDashboard.emit()}),p(13,"nile-glyph",20),d()(),b(14,$i,7,4,"div",21)(15,ji,4,2,"div",22),d(),b(16,ta,10,1,"div",23),s(17,"div",24)(18,"div",25)(19,"shared-dashboard-grid",26,0),y("forecast",function(r){return n.onForecast(r)})("remove",function(r){return n.onSliderRemoveWidget(r)})("editWidget",function(r){return n.onSliderEditWidget(r)})("updateLayout",function(r){return n.onSliderUpdateLayout(r)})("tweakWidget",function(r){return n.onSliderTweakWidget(r)})("dslWidgetUpdated",function(r){return n.onSliderDslWidgetUpdated(r)})("widgetChartTypeChanged",function(r){return n.onSliderWidgetChartTypeChanged(r)})("widgetFiltersChanged",function(r){return n.onSliderWidgetFiltersChanged(r)})("widgetColorChanged",function(r){return n.onSliderWidgetColorChanged(r)})("filterSubmit",function(r){return n.onSliderFilterSubmit(r)})("filterChange",function(r){return n.onSliderFilterChange(r)})("setAlert",function(r){return n.onSetAlert(r)})("widgetClick",function(r){return n.onSliderWidgetClicked(r)})("timeRangeApply",function(r){return n.onTimeRangeApply(r)}),d(),s(21,"app-alert-drawer",27),y("closed",function(){return n.onAlertClosed()})("saved",function(){return n.onAlertClosed()}),d()()()()()(),p(22,"nile-executive-summary",28,1),b(24,la,11,3,"div",29),s(25,"nile-dialog",30),y("nile-request-close",function(r){return C(i),r.stopPropagation(),v(n.cancelDeleteDashboard())}),s(26,"p",31),b(27,ca,4,1)(28,ga,1,0),d(),s(29,"div",32)(30,"nile-button",33),y("click",function(){return n.cancelDeleteDashboard()}),m(31," Cancel "),d(),s(32,"nile-button",34),y("click",function(){return n.confirmDeleteDashboard()}),m(33),d()()(),s(34,"nile-dialog",35),y("nile-request-close",function(r){return C(i),r.stopPropagation(),v(n.showLayoutPopup.set(!1))}),s(35,"p",31),m(36,"Adding to this dashboard may cause layout change."),d(),s(37,"div",32)(38,"nile-button",33),y("click",function(){return n.showLayoutPopup.set(!1)}),m(39," Cancel "),d(),s(40,"nile-button",34),y("click",function(){return n.confirmAddToDashboard()}),m(41," OK "),d()()()}t&2&&(l(2),_(n.showCreatePipelineFlyer()?2:-1),l(),_(n.activeTool()==="report"?3:-1),l(),_(n.activeTool()==="allPipelines"?4:-1),l(),_(n.activeTool()==="schema"?5:-1),l(),_(n.activeTool()==="allDashboards"?6:-1),l(),_(n.isRearranging()?7:-1),l(),_(n.activeTool()!=="schema"&&!n.dashboardLoading()?8:-1),l(6),_(n.isEditingDashboardName()?14:15),l(2),_(n.activeTool()==="widgetLibrary"?16:-1),l(),Ct("dashboard-slider--fullscreen",n.sliderFullscreen()),l(2),x("widgets",n.sliderWidgets())("editMode",n.sliderView()!=="preview")("canvasBackgroundColor",n.canvasBackgroundColor())("autoHeight",n.autoHeight())("dashboardId",n.loadedDashboardId())("tweakingWidgetId",n.tweakingWidgetId())("loading",n.dashboardLoading())("widgetsLoading",n.isRearranging()||n.applyingFilters()||n.forecastingAll()||n.togglingFilter())("dashboardFilters",n.activeDashboardFilters())("resolvedFilters",n.activeResolvedFilters())("applySummary",n.applySummary())("showWidgetMenu",n.widgetMenu().enabled)("canAsk",n.widgetMenu().ask)("canChangeChartType",n.widgetMenu().changeChartType)("canManageFilters",n.widgetMenu().manageFilters)("canCustomizeColors",n.widgetMenu().customizeColors)("canViewChartData",n.widgetMenu().chartData)("canSetAlert",n.canSetAlert()&&n.widgetMenu().setAlert)("canAddToStory",n.widgetMenu().addToStory)("canForecast",n.widgetMenu().forecast)("canExportPng",n.widgetMenu().exportPng)("canExportCsv",n.widgetMenu().exportCsv)("canPrint",n.widgetMenu().print)("canTweak",n.widgetMenu().tweak)("canEdit",n.widgetMenu().edit)("canDelete",n.widgetMenu().delete)("forecastable",n.forecastable())("forecastingWidgetId",n.forecastingWidgetId())("detailPanel",!0)("detailRootLabel",n.dashboardName()||"Dashboard")("timeFilterEnabled",!!n.loadedDashboardId()&&n.hasTimeFilter()),l(2),x("open",n.alertDrawerOpen())("widget",n.alertWidget())("dashboardId",n.loadedDashboardId())("source",n.alertSource()),l(3),_(n.widgetDetailPanelOpen()?24:-1),l(),x("open",!!n.pendingDeleteDashboardId()),l(2),_(n.pendingDeleteDashboardName()?27:28),l(3),$("disabled",n.isDeletingDashboard()?"":null),l(2),$("disabled",n.isDeletingDashboard()?"":null),l(),V(" ",n.isDeletingDashboard()?"Deleting\u2026":"Delete"," "),l(),x("open",n.showLayoutPopup()))},dependencies:[he,Ie,fn,jt,en,cn,gn,Ve,se,hn,fe],styles:['@charset "UTF-8";[_nghost-%COMP%]{position:relative;display:block;height:100%}.qna-panel[_ngcontent-%COMP%]{display:flex;height:100%;background:var(--ng-colors-bg-secondary);font-family:var(--ng-font-family-body)}.qna-panel[_ngcontent-%COMP%] .loading-all-chat[_ngcontent-%COMP%]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}@keyframes _ngcontent-%COMP%_sidebar-brand-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.panel-right-side[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0;background:var(--ng-colors-bg-primary);position:relative}.panel-right-side[_ngcontent-%COMP%] > .dashboard-toolbar[_ngcontent-%COMP%]{position:absolute;top:0;right:12px;height:56px;z-index:var(--z-floating);display:flex;align-items:center;gap:6px}.panel-right-side[_ngcontent-%COMP%] > .dashboard-toolbar[_ngcontent-%COMP%] > .dashboard-menu[_ngcontent-%COMP%]{position:static;display:flex;align-items:center}.panel-right-side[_ngcontent-%COMP%] > .rearrange-indicator[_ngcontent-%COMP%]{position:absolute;top:16px;right:88px;z-index:var(--z-floating);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;pointer-events:none}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%]{width:20px;height:20px;display:block;color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%] .r[_ngcontent-%COMP%]{fill:none;stroke:currentColor;stroke-width:1.5;animation:_ngcontent-%COMP%_rearrange-orbit 4s ease-in-out infinite}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%] .r-fill[_ngcontent-%COMP%]{fill:currentColor}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%] .r-1[_ngcontent-%COMP%]{animation-delay:0s}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%] .r-2[_ngcontent-%COMP%]{animation-delay:-1s}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%] .r-3[_ngcontent-%COMP%]{animation-delay:-2s}.panel-right-side[_ngcontent-%COMP%] .rearrange-svg[_ngcontent-%COMP%] .r-4[_ngcontent-%COMP%]{animation-delay:-3s}@keyframes _ngcontent-%COMP%_rearrange-orbit{0%,15%{transform:translate(0)}25%,40%{transform:translate(11px)}50%,65%{transform:translate(11px,11px)}75%,90%{transform:translateY(11px)}to{transform:translate(0)}}.panel-right-side[_ngcontent-%COMP%] > .close-panel-icon[_ngcontent-%COMP%]{position:absolute;top:20px;right:16px;z-index:var(--z-floating);cursor:pointer;color:var(--ng-colors-text-tertiary-600);transition:color .15s}.panel-right-side[_ngcontent-%COMP%] > .close-panel-icon[_ngcontent-%COMP%]:hover{color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] > .pipeline-flyer[_ngcontent-%COMP%]{position:absolute;inset:0;z-index:var(--z-floating);background:transparent}.panel-right-side[_ngcontent-%COMP%] > .pipeline-flyer[_ngcontent-%COMP%] .pipeline-flyer__loading[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fffc}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%]{height:56px;padding:0 16px;border-bottom:1px solid var(--ng-colors-border-secondary);flex-shrink:0;background:var(--ng-colors-bg-primary);display:flex;align-items:center;justify-content:flex-start;gap:8px;box-sizing:border-box}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%]:hover .chat-header__edit-btn[_ngcontent-%COMP%], .panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__edit-btn[_ngcontent-%COMP%]:focus-visible{opacity:1;pointer-events:auto}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header-title[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__title-group[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;min-width:0}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__edit-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;padding:0;background:transparent;border-radius:6px;color:var(--ng-colors-text-tertiary-600);cursor:pointer;opacity:0;pointer-events:none;transition:background .15s,opacity .15s}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__edit-btn[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-quaternary)}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__rename[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;flex:1 1 auto;max-width:calc(100% - 280px);min-width:0}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__rename-input[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;height:32px;padding:0 10px;font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:6px;outline:none}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__rename-input[_ngcontent-%COMP%]:focus{border-color:var(--ng-colors-border-brand);box-shadow:0 0 0 3px #2970ff29}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__rename-action[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;padding:0;background:transparent;border-radius:6px;cursor:pointer;transition:background .15s}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__rename-action[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--ng-colors-bg-quaternary)}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__rename-action[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.6}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .close-panel-icon[_ngcontent-%COMP%]{cursor:pointer;color:var(--ng-colors-text-tertiary-600);transition:color .15s}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .close-panel-icon[_ngcontent-%COMP%]:hover{color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] .chat-header[_ngcontent-%COMP%] .chat-header__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-shrink:0}.panel-right-side[_ngcontent-%COMP%] .dashboard-toolbar[_ngcontent-%COMP%] .dashboard-menu[_ngcontent-%COMP%]{flex-shrink:0}.panel-right-side[_ngcontent-%COMP%] .dashboard-menu__divider[_ngcontent-%COMP%]{height:1px;margin:4px 8px;background:var(--ng-colors-border-secondary)}.panel-right-side[_ngcontent-%COMP%] .dashboard-menu-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:4px;border:0;outline:0;background:transparent;color:var(--ng-colors-text-tertiary-600);cursor:pointer;transition:color .15s}.panel-right-side[_ngcontent-%COMP%] .dashboard-menu-btn[_ngcontent-%COMP%]:hover, .panel-right-side[_ngcontent-%COMP%] .dashboard-menu-btn[_ngcontent-%COMP%]:focus, .panel-right-side[_ngcontent-%COMP%] .dashboard-menu-btn[_ngcontent-%COMP%]:focus-visible, .panel-right-side[_ngcontent-%COMP%] .dashboard-menu-btn[_ngcontent-%COMP%]:active{background:transparent;outline:0;color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] .chat-layout[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;min-width:0;container-type:inline-size}.panel-right-side[_ngcontent-%COMP%] .dashboard-slider[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0;background:var(--ng-colors-bg-secondary);animation:_ngcontent-%COMP%_slider-in .25s ease-out}.panel-right-side[_ngcontent-%COMP%] .dashboard-slider__body[_ngcontent-%COMP%]{flex:1;min-height:0;min-width:0;overflow:auto;padding:0}.panel-right-side[_ngcontent-%COMP%] .dashboard-slider__body[_ngcontent-%COMP%] > shared-dashboard-grid[_ngcontent-%COMP%]{display:block;width:100%!important;min-width:100%!important}.panel-right-side[_ngcontent-%COMP%] .dashboard-slider__body[_ngcontent-%COMP%] .canvas-wrap{border-radius:0!important;padding:8!important}.panel-right-side[_ngcontent-%COMP%] .dashboard-slider__body[_ngcontent-%COMP%] gridster{border-radius:0!important}.panel-right-side[_ngcontent-%COMP%] .dashboard-slider.dashboard-slider--fullscreen[_ngcontent-%COMP%] .dashboard-slider__body[_ngcontent-%COMP%] > shared-dashboard-grid[_ngcontent-%COMP%]{width:100%!important;min-width:100%!important}@keyframes _ngcontent-%COMP%_slider-in{0%{transform:translate(24px);opacity:0}to{transform:translate(0);opacity:1}}.panel-right-side[_ngcontent-%COMP%] .loading-chat[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;justify-content:center}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%]{flex:1;overflow:auto;padding:20px 24px;display:flex;flex-direction:column-reverse}.panel-right-side[_ngcontent-%COMP%] .chat-message-container.recommend-window[_ngcontent-%COMP%]{justify-content:center;align-items:center;padding:32px 40px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .user-row[_ngcontent-%COMP%]{display:flex;flex-direction:row-reverse;gap:8px;margin-bottom:20px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .user[_ngcontent-%COMP%]{flex:0 1 auto;min-width:0}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .user[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-colors-text-primary-900);padding:9px 14px;border-radius:14px 14px 2px;font-size:14px;display:inline-block;max-width:100%;text-align:left}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .user-icon[_ngcontent-%COMP%]{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--ng-colors-bg-brand-primary);color:var(--ng-colors-border-brand);display:inline-flex;align-items:center;justify-content:center}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .assistant-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;margin-bottom:14px;min-width:0}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .assistant-icon[_ngcontent-%COMP%]{flex-shrink:0;width:28px;height:28px;color:var(--ng-colors-border-brand);display:inline-flex;align-items:center;justify-content:center}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .assistant[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;font-size:14px;line-height:1.65;color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .generating-loader[_ngcontent-%COMP%]{padding:10px 14px;height:40px;display:flex;gap:8px;align-items:center;background:var(--ng-colors-bg-secondary);border:1px solid var(--ng-colors-border-secondary);border-radius:8px;font-size:13px;color:var(--ng-colors-text-tertiary-600);width:fit-content}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .welcome-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:820px;text-align:center}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .welcome-section[_ngcontent-%COMP%] .welcome-icon-wrap[_ngcontent-%COMP%]{margin-bottom:4px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .welcome-section[_ngcontent-%COMP%] .welcome-title[_ngcontent-%COMP%]{margin:0;font-size:22px;font-weight:700;color:var(--ng-colors-text-primary-900);letter-spacing:-.02em}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .welcome-section[_ngcontent-%COMP%] .welcome-subtitle[_ngcontent-%COMP%]{margin:0 0 4px;font-size:14px;color:var(--ng-colors-text-tertiary-600);max-width:440px;line-height:1.6}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended[_ngcontent-%COMP%] .recommended-box[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;border:1px solid var(--ng-colors-border-secondary);border-radius:14px;padding:12px 16px;cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .15s;background:var(--ng-colors-bg-primary);text-align:left}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended[_ngcontent-%COMP%] .recommended-box[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand);box-shadow:0 6px 24px #2970ff1a;transform:translateY(-2px)}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended[_ngcontent-%COMP%] .recommended-box[_ngcontent-%COMP%] .rec-title[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);text-transform:capitalize;line-height:1.4}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended.recommended--copilot[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:680px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended.recommended--copilot[_ngcontent-%COMP%] .recommended-box[_ngcontent-%COMP%]{flex-direction:row;align-items:center;gap:10px;padding:12px 16px;border-radius:12px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended.recommended--copilot[_ngcontent-%COMP%] .recommended-box[_ngcontent-%COMP%] .rec-title[_ngcontent-%COMP%]{font-size:13px;font-weight:500;text-transform:none;color:var(--ng-colors-text-secondary-700);line-height:1.4;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}@container (max-width: 440px){.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .recommended.recommended--copilot[_ngcontent-%COMP%]{display:none}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .browse-more[_ngcontent-%COMP%]{align-self:center}}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .browse-more[_ngcontent-%COMP%]{margin-top:4px;align-self:flex-end;display:inline-flex;align-items:center;gap:6px;padding:6px 4px;background:transparent;border:0;cursor:pointer;font-size:12px;font-weight:500;color:var(--ng-colors-text-tertiary-600);transition:color .15s}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .browse-more[_ngcontent-%COMP%]:hover{color:var(--ng-colors-border-brand)}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .preview-card[_ngcontent-%COMP%]{border:var(--nile-border-width-1, var(--ng-stroke-width-1)) solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));border-radius:var(--nile-radius-radius-3xl, var(--ng-radius-xl))}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .chart-preview[_ngcontent-%COMP%]{height:300px;overflow:hidden}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .chart-preview--filter[_ngcontent-%COMP%]{height:auto}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .chart-add-action[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:8px 20px 20px 0}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--ng-colors-border-secondary);border-radius:10px;background:var(--ng-colors-bg-primary);cursor:pointer;transition:border-color .15s,box-shadow .15s;margin-bottom:10px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%]:hover, .panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%]:focus{border-color:var(--ng-colors-border-brand);box-shadow:0 2px 12px #2970ff1a;outline:none}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%] .dashboard-card-icon[_ngcontent-%COMP%]{flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--ng-colors-bg-brand-primary);border-radius:8px;color:var(--ng-colors-border-brand)}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%] .dashboard-card-info[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%] .dashboard-card-info[_ngcontent-%COMP%] .dashboard-card-name[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%] .dashboard-card-info[_ngcontent-%COMP%] .dashboard-card-meta[_ngcontent-%COMP%]{font-size:11px;color:var(--ng-colors-text-tertiary-600)}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-card[_ngcontent-%COMP%] .dashboard-card-arrow[_ngcontent-%COMP%]{flex-shrink:0;color:var(--ng-colors-text-tertiary-600)}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);margin-bottom:4px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-description[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-tertiary-600);margin:0 0 10px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-preview[_ngcontent-%COMP%]{border-radius:8px;border:1px solid var(--ng-colors-border-secondary);margin-bottom:10px}.panel-right-side[_ngcontent-%COMP%] .chat-message-container[_ngcontent-%COMP%] .dashboard-add-action[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:12px}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%]{padding:14px 24px 18px;display:flex;justify-content:center;flex-shrink:0;background:var(--ng-colors-bg-primary)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .chat-input-pill[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;width:100%;max-width:760px;padding:14px 16px 12px;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:24px;box-shadow:0 1px 2px #1018280a,0 8px 24px #1018280f;cursor:text;transition:border-color .15s,box-shadow .15s}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .chat-input-pill[_ngcontent-%COMP%]:focus-within{border-color:var(--ng-colors-border-brand);box-shadow:0 0 0 3px #2970ff1f}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .input-query[_ngcontent-%COMP%]{width:100%;min-width:0;border:0;outline:0;background:transparent;padding:6px 2px;font:inherit;font-size:15px;line-height:1.4;color:var(--ng-colors-text-primary-900);resize:none;overflow-y:auto;max-height:160px;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .input-query[_ngcontent-%COMP%]::placeholder{color:var(--ng-colors-text-tertiary-600)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .pill-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .pill-toolbar__left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .pill-toolbar__right[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .plus-dropdown[_ngcontent-%COMP%]{flex-shrink:0}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .plus-btn[_ngcontent-%COMP%]{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--ng-colors-border-secondary);background:var(--ng-colors-bg-primary);display:inline-flex;align-items:center;justify-content:center;color:var(--ng-colors-text-tertiary-600);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .plus-btn[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-tertiary);color:var(--ng-colors-border-brand);border-color:var(--ng-colors-border-brand)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:stretch;height:36px;border-radius:999px;border:1px solid var(--ng-colors-border-secondary);background:var(--ng-colors-bg-primary);color:var(--ng-colors-border-brand);font-size:13px;font-weight:500;overflow:hidden;max-width:280px;transition:border-color .15s}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__main[_ngcontent-%COMP%], .panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__schema[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;transition:background .15s;min-width:0}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__main[_ngcontent-%COMP%]:hover, .panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__schema[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-brand-primary)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__main[_ngcontent-%COMP%]{padding:0 10px 0 12px;max-width:180px}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__main[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__schema[_ngcontent-%COMP%]{padding:0 12px;color:var(--ng-colors-text-secondary-700)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__schema[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{color:var(--ng-colors-text-tertiary-600)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__sep[_ngcontent-%COMP%]{width:1px;background:var(--ng-colors-border-secondary)}@container (max-width: 440px){.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__main[_ngcontent-%COMP%], .panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__schema[_ngcontent-%COMP%]{padding-left:10px;padding-right:10px;gap:0}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__main[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip__schema[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:none}}@container (min-width: 441px){.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .datasource-chip[_ngcontent-%COMP%] nile-lite-tooltip[_ngcontent-%COMP%]{pointer-events:none}}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .mic-icon[_ngcontent-%COMP%]{flex-shrink:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;color:var(--ng-colors-text-tertiary-600);transition:background .15s,color .15s}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .mic-icon[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-tertiary);color:var(--ng-colors-border-brand)}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .mic-icon.mic-listening[_ngcontent-%COMP%]{color:var(--ng-colors-fg-error-primary);animation:_ngcontent-%COMP%_mic-pulse 1.2s ease-in-out infinite}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .send-icon[_ngcontent-%COMP%]{flex-shrink:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;transition:opacity .15s}.panel-right-side[_ngcontent-%COMP%] .input-query-container[_ngcontent-%COMP%] .send-icon.disabled[_ngcontent-%COMP%]{opacity:.2;pointer-events:none}.panel-right-side[_ngcontent-%COMP%] .input-query-container.input-query-container--welcome[_ngcontent-%COMP%]{border-top:0;background:transparent;padding:4px 0 12px;width:100%;max-width:680px}@keyframes _ngcontent-%COMP%_mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.3)}}.panel-right-side[_ngcontent-%COMP%] .kpi-preview[_ngcontent-%COMP%]{margin:8px 0;padding:16px;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:10px}.panel-right-side[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%]{padding:10px 16px;border-bottom:1px solid var(--ng-colors-border-secondary);flex-shrink:0;background:var(--ng-colors-bg-primary);display:flex;align-items:center;justify-content:space-between;position:relative;z-index:var(--z-floating)}.panel-right-side[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%] .crumb-back[_ngcontent-%COMP%]{cursor:pointer}.panel-right-side[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%] .crumb-back[_ngcontent-%COMP%] .preview-back[_ngcontent-%COMP%]{color:var(--ng-color-bluedark-700)}.panel-right-side[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%] .close-panel-icon[_ngcontent-%COMP%]{cursor:pointer;color:var(--ng-colors-text-tertiary-600);transition:color .15s}.panel-right-side[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%] .close-panel-icon[_ngcontent-%COMP%]:hover{color:var(--ng-colors-text-primary-900)}.panel-right-side[_ngcontent-%COMP%] .preview-scroll-area[_ngcontent-%COMP%]{flex:1;overflow:auto;padding:16px;position:relative;z-index:var(--z-floating);background:var(--ng-colors-bg-primary)}.panel-right-side[_ngcontent-%COMP%] .preview-action-bar[_ngcontent-%COMP%]{padding:12px 16px;border-top:1px solid var(--ng-colors-border-secondary);flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:12px;background:var(--ng-colors-bg-primary);position:relative;z-index:var(--z-floating)}.layout-warning-text[_ngcontent-%COMP%]{font-size:14px;color:var(--ng-colors-text-primary-900);margin:0}.layout-popup-footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px}.contained-panel[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;display:flex;flex-direction:column;background:var(--ng-colors-bg-primary);border-left:1px solid var(--ng-colors-border-secondary);box-shadow:-8px 0 24px #10182814;z-index:var(--z-floating);animation:contained-slide .25s ease-out}.contained-panel__header[_ngcontent-%COMP%]{height:56px;padding:0 16px;border-bottom:1px solid var(--ng-colors-border-secondary);flex-shrink:0;background:var(--ng-colors-bg-primary);display:flex;align-items:center;justify-content:space-between;gap:8px;box-sizing:border-box}.contained-panel__close[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:0;outline:0;background:transparent;color:var(--ng-colors-text-tertiary-600);cursor:pointer;transition:color .15s;flex-shrink:0}.contained-panel__close[_ngcontent-%COMP%]:hover, .contained-panel__close[_ngcontent-%COMP%]:focus, .contained-panel__close[_ngcontent-%COMP%]:focus-visible, .contained-panel__close[_ngcontent-%COMP%]:active{outline:0;background:transparent;color:var(--ng-colors-text-primary-900)}.contained-panel__title[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:var(--ng-colors-text-primary-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contained-panel__body[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:auto;padding:16px 20px 20px}.home-panel[_ngcontent-%COMP%], .all-dashboards-panel[_ngcontent-%COMP%], .all-pipelines-panel[_ngcontent-%COMP%], .schema-panel[_ngcontent-%COMP%]{width:100%;border-left:0;box-shadow:none}.schema-panel[_ngcontent-%COMP%] .contained-panel__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-height:0;overflow:hidden}.schema-panel__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.schema-panel__footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:var(--ng-spacing-2, 8px);padding:var(--ng-spacing-3, 12px) var(--ng-spacing-5, 20px);border-top:1px solid var(--ng-colors-border-secondary);background:var(--ng-colors-bg-primary);flex-shrink:0}.home-panel[_ngcontent-%COMP%] .contained-panel__body[_ngcontent-%COMP%]{overflow:visible;display:flex;flex-direction:column;position:relative}.home-panel[_ngcontent-%COMP%] .contained-panel__header[_ngcontent-%COMP%]{position:relative;z-index:1}.home-panel__loading[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fff9;z-index:2}.contained-panel__body--flush[_ngcontent-%COMP%]{padding:0}.all-dash-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;padding:22px 28px 40px}.dash-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;text-align:left;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:12px;padding:0;font:inherit;color:inherit;cursor:pointer;overflow:hidden;transition:border-color .15s,box-shadow .15s,transform .15s}.dash-card[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-tertiary);box-shadow:0 4px 12px -2px #0a0d120f,0 2px 4px -1px #0a0d120a;transform:translateY(-1px)}.dash-card[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--ng-colors-border-brand);outline-offset:2px}.dash-card__preview[_ngcontent-%COMP%]{position:relative;height:140px;background:var(--ng-colors-bg-primary);border-bottom:1px solid var(--ng-colors-border-secondary);overflow:hidden}.dash-card__preview[_ngcontent-%COMP%]:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(90deg,#fff,#fff0 18% 82%,#fff),linear-gradient(0deg,#fff,#fff0 28%)}.dash-card__widget[_ngcontent-%COMP%]{position:absolute;inset:0;pointer-events:none;transform:scale(1.2);transform-origin:center}.dash-card__widget[_ngcontent-%COMP%] > db-dash-card-chart[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.dash-card__empty[_ngcontent-%COMP%]{position:absolute;inset:14px;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.dash-card__empty-bars[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:8px;width:78%;height:80%}.dash-card__empty-bars[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{flex:1;background:linear-gradient(180deg,var(--ng-colors-border-secondary) 0%,var(--ng-colors-bg-tertiary) 100%);border-radius:3px 3px 0 0;min-height:8px}.dash-card__chip[_ngcontent-%COMP%]{position:absolute;top:10px;right:10px;z-index:2;display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;background:var(--ng-colors-bg-primary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--ng-colors-border-secondary);border-radius:999px;font-size:11px;font-weight:500;color:var(--ng-colors-text-tertiary-600)}.dash-card__status[_ngcontent-%COMP%]{position:absolute;top:10px;left:10px;z-index:2;display:inline-flex;align-items:center}.dash-card__body[_ngcontent-%COMP%]{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px}.dash-card__title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;min-width:0}.dash-card__name[_ngcontent-%COMP%]{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--ng-colors-text-primary-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-card__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;opacity:0;transition:opacity .15s;flex-shrink:0}.dash-card[_ngcontent-%COMP%]:hover .dash-card__actions[_ngcontent-%COMP%], .dash-card[_ngcontent-%COMP%]:focus-within .dash-card__actions[_ngcontent-%COMP%]{opacity:1}.dash-card__action[_ngcontent-%COMP%]{cursor:pointer;padding:4px;border-radius:6px;line-height:0}.dash-card__action[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-secondary)}.dash-card__rename[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;min-width:0}.dash-card__rename-input[_ngcontent-%COMP%]{flex:1;min-width:0;height:28px;padding:0 8px;font:inherit;font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:6px;outline:none}.dash-card__rename-input[_ngcontent-%COMP%]:focus{border-color:var(--ng-colors-border-brand);box-shadow:0 0 0 3px #2970ff26}.dash-card__rename-input[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.dash-card__meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ng-colors-text-tertiary-600);min-height:16px}.dash-card__meta-item[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.dash-card__meta-dot[_ngcontent-%COMP%]{width:3px;height:3px;border-radius:999px;background:currentColor;opacity:.5;flex-shrink:0}.dash-card--editing[_ngcontent-%COMP%]{cursor:default}.dash-card--editing[_ngcontent-%COMP%]:hover{transform:none;box-shadow:none}.dash-card--new[_ngcontent-%COMP%]{align-items:center;justify-content:center;gap:10px;min-height:220px;padding:28px 18px;text-align:center;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);color:var(--ng-colors-text-tertiary-600)}.dash-card--new[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-tertiary);box-shadow:0 4px 12px -2px #0a0d120f,0 2px 4px -1px #0a0d120a;transform:translateY(-1px)}.dash-card__new-icon[_ngcontent-%COMP%]{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--ng-colors-bg-brand-primary);color:var(--ng-colors-fg-brand-primary-600);transition:transform .15s,background .15s}.dash-card--new[_ngcontent-%COMP%]:hover .dash-card__new-icon[_ngcontent-%COMP%]{transform:scale(1.05);background:var(--ng-colors-bg-brand-secondary)}.dash-card__new-label[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--ng-colors-text-primary-900)}.dash-card__new-hint[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-tertiary-600)}.dash-empty-state[_ngcontent-%COMP%]{margin:24px;padding:56px 32px;display:flex;flex-direction:column;align-items:center;text-align:center;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:12px}.dash-empty-state__graphic[_ngcontent-%COMP%]{width:380px;max-width:100%;height:140px;margin-bottom:24px;display:block}.dash-empty-state__graphic[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.dash-empty-state__title[_ngcontent-%COMP%]{margin:0 0 8px;font-size:20px;font-weight:600;color:var(--ng-colors-text-primary-900);letter-spacing:-.01em}.dash-empty-state__desc[_ngcontent-%COMP%]{margin:0 0 20px;max-width:480px;font-size:14px;line-height:1.5;color:var(--ng-colors-text-tertiary-600)}.ai-executive-summary[_ngcontent-%COMP%]::part(trigger){display:none}.ai-executive-summary[_ngcontent-%COMP%]::part(header){height:56px;padding:0 20px;box-sizing:border-box;flex-direction:row-reverse;justify-content:flex-end;gap:8px}.ai-executive-summary[_ngcontent-%COMP%]::part(title){font-size:14px;font-weight:600}.ai-executive-summary[_ngcontent-%COMP%]::part(close){position:relative;color:transparent;margin-left:0;margin-right:4px}.ai-executive-summary[_ngcontent-%COMP%]::part(close):before{content:"\\2190";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ng-colors-text-tertiary-600);font-size:22px;line-height:1;font-weight:400}.ai-executive-summary[_ngcontent-%COMP%]::part(close):hover:before{color:var(--ng-colors-text-primary-900)}.tool-empty[_ngcontent-%COMP%]{padding:40px 16px;text-align:center;font-size:13px;color:var(--ng-colors-text-tertiary-600)}.widget-library-panel[_ngcontent-%COMP%]{width:33.37vw;max-width:100%}.widget-lib-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;gap:12px}.widget-lib-card[_ngcontent-%COMP%]{min-width:0;width:100%}.widget-lib-card[_ngcontent-%COMP%]::part(base){border-radius:12px;border:1px solid var(--ng-colors-border-secondary);width:100%;max-width:100%;box-sizing:border-box}.widget-lib-card[_ngcontent-%COMP%]::part(body__wrapper){padding:12px;gap:unset}.widget-lib-card__preview[_ngcontent-%COMP%]{width:100%;aspect-ratio:16/10;overflow:hidden;border-radius:8px;border:1px solid var(--ng-colors-border-secondary);background:var(--ng-colors-bg-primary);box-sizing:border-box}.widget-lib-card__preview[_ngcontent-%COMP%] shared-nile-chart-widget[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.widget-lib-card__footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:8px;border-top:1px solid var(--ng-colors-border-secondary);padding-top:12px;margin-top:10px}.widget-lib-card__title[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--ng-colors-text-primary-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.widget-lib-card__delete[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;cursor:pointer;color:var(--ng-colors-fg-error-primary)}.widget-lib-card__delete[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-error-secondary)}.widget-lib-card__delete[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--ng-colors-border-error);outline-offset:2px}.add-dashboard[_ngcontent-%COMP%]::part(base){height:30px}.aq-detail-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;z-index:50;display:flex;flex-direction:column;background:var(--ng-colors-bg-primary)}.aq-detail-overlay__crumbs[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;box-sizing:border-box;min-height:56px;padding:10px 20px;border-bottom:1px solid var(--ng-colors-border-secondary);flex-shrink:0}.aq-detail-overlay__crumbs[_ngcontent-%COMP%] nile-breadcrumb[_ngcontent-%COMP%]{display:inline-flex;align-items:center}.aq-detail-overlay__body[_ngcontent-%COMP%]{flex:1 1 auto;min-height:0;overflow:auto;padding:20px;background:var(--ng-colors-bg-secondary)}.aq-detail-skeleton[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;max-width:1000px}.aq-detail-skeleton__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.aq-detail-skeleton-grid[_ngcontent-%COMP%]{position:relative;width:100%}.aq-detail-skeleton-slot[_ngcontent-%COMP%]{position:absolute}'],data:{animation:[tt("slideWidth",[Te(":enter",[we({width:"0",overflow:"hidden"}),Ee("300ms ease-in",we({width:"*"}))]),Te(":leave",[Ee("300ms ease-in",we({width:"0",overflow:"hidden"}))])])]}})};var ha=["executiveSummary"],pa=["canvasArea"],ma=["nameInput"];function ua(a,e){if(a&1&&(s(0,"nile-badge"),m(1),xt(2,"titlecase"),d()),a&2){let t=g();l(),V(" ",t.editingWidget.widgetType==="kpi"||t.editingWidget.config.chart.type==="kpi"?"KPI Card":wt(2,1,t.editingWidget.config.chart.type)+" Chart"," ")}}var Ue=class a{aiPanelRef;executiveSummaryEl;canvasAreaRef;nameInputRef;isExporting=c(!1);showExportDropdown=c(!1);isEditingName=c(!1);isDashboardLoading=c(!1);isRefreshingData=c(!1);tweakingWidgetId=c(null);editingNameValue="";MAX_NAME_LENGTH=50;VALID_NAME_RE=/[a-zA-Z0-9]/;state$;dashboardName=c("");activeSummary=c("");showAddWidgetDialog=!1;showSaveDialog=c(!1);showGlobalWidgetsDialog=!1;editMode=!0;editingWidget=null;connections=c([]);connectionsLoading=c(!1);selectedConnectionId=c("");selectedDatasourceId=c("");connectionDropdownOpen=c(!1);globalWidgets=c([]);globalWidgetsLoading=c(!1);addedGlobalWidgetIds=c(new Set);globalToDashWidgetMap=new Map;isPublishing=c(!1);loadedDashboardId=null;loadedWidgetIds=c(new Set);removedWidgetIds=new Set;isSummaryLoading=c(!1);dashboardState=f(Ne);globalWidgetService=f(mn);publishRepo=f(q);connectionsService=f(ye);openAiService=f(re);dashboardId=A("");nav=f(B);ngZone=f(ht);destroyRef=f(ce);dashboardsBus=f(ie);routeProgress=f(qe);connectionsLoadPromise=null;constructor(){this.watchElementState(),this.state$=this.dashboardState.state$,this.dashboardName.set(this.dashboardState.snapshot.name),this.state$.pipe(Y(this.destroyRef)).subscribe(e=>{this.dashboardName.set(e.name)}),this.dashboardState.mutations$.pipe(lt(()=>!!this.loadedDashboardId),ct(0),Y(this.destroyRef)).subscribe(e=>{let t=this.loadedDashboardId;!t||!this.dashboardState.isDirty||this.isPublishing()||this.publishRepo.saveDraft(t,e).catch(n=>{console.error("Failed to save dashboard draft:",n)})}),O(()=>{let e=this.isSummaryLoading();queueMicrotask(()=>{let t=this.executiveSummaryEl?.nativeElement;t&&(t.loading=e)})}),O(()=>{let e=this.activeSummary(),t=this.dashboardName();queueMicrotask(()=>{let n=this.executiveSummaryEl?.nativeElement;n&&(n.config={summary:e,buttonLabel:"Executive Summary",buttonVariant:"secondary",drawerLabel:t?`${t} Summary`:"Dashboard Summary",typingSpeed:5,closeOnEscape:!0},n.open&&e&&n.startTyping())})})}ngAfterViewInit(){let e=this.executiveSummaryEl?.nativeElement;e&&(e.loading=this.isSummaryLoading(),e.config={summary:"",buttonLabel:"Executive Summary",buttonVariant:"secondary",drawerLabel:this.dashboardName()?`${this.dashboardName()} Summary`:"Dashboard Summary",typingSpeed:5,closeOnEscape:!0})}ngOnInit(){this.dashboardState.resetDashboard()}watchElementState(){O(()=>{let e=this.dashboardId();e&&e!==this.loadedDashboardId?(this.isDashboardLoading.set(!0),this.loadDashboardFromApi(e)):!e&&this.loadedDashboardId&&(this.loadedDashboardId="",this.dashboardState.resetDashboard())}),O(()=>{let e=this.nav.datasource();e&&(this.connections().some(t=>t.id===e)?this.onConnectionChange(e):this.loadConnections().then(()=>{this.connections().some(t=>t.id===e)&&this.onConnectionChange(e)}))}),O(()=>{this.nav.createDashboardRequest()!==0&&this.onAiCreateDashboardClick()}),O(()=>{let e=this.nav.initialTool();e==="allPipelines"||e==="widgetLibrary"||e==="allDashboards"?(this.aiInitialTool.set(e),e==="allPipelines"&&this.loadConnections()):this.aiInitialTool.set(null)})}loadConnections(){return this.connectionsLoadPromise||(this.connectionsLoadPromise=this.fetchConnections().finally(()=>{this.connectionsLoadPromise=null})),this.connectionsLoadPromise}async fetchConnections(){try{let[e,t]=await Promise.all([this.connectionsService.listDatasources(),this.connectionsService.listConnections().catch(()=>[])]),n=new Map(t.map(o=>[o.id,o.name])),i=e.map(o=>{let r=o.mssqlConnectionId??o.opensearchConnectionId??o.connectionId;return W(D({},o),{connectionName:r&&n.get(r)||o.name})});this.ngZone.run(()=>{this.connections.set(i),!this.selectedConnectionId()&&i.length>0&&(this.selectedConnectionId.set(i[0].id),this.selectedDatasourceId.set(i[0].id))})}catch(e){console.error("Failed to load connections:",e)}}async loadDashboardFromApi(e){let t=this.loadedDashboardId;this.loadedDashboardId=e;try{let n=await this.routeProgress.track(this.publishRepo.fetchDashboard(e));return this.ngZone.run(()=>{this.dashboardState.replaceDashboard(n),this.dashboardName.set(n.name),this.loadedWidgetIds.set(new Set(n.widgets.map(i=>i.id))),this.isDashboardLoading.set(!1)}),n.canRefresh&&this.refreshLoadedDashboardData(e),!0}catch{return this.ngZone.run(()=>{this.loadedDashboardId=t,this.dashboardState.resetDashboard(),this.isDashboardLoading.set(!1)}),!1}}async refreshLoadedDashboardData(e){this.ngZone.run(()=>this.isRefreshingData.set(!0));try{let{widgets:t}=await this.publishRepo.refreshDashboard(e);this.loadedDashboardId===e&&!this.dashboardState.isDirty&&this.ngZone.run(()=>{this.dashboardState.replaceDashboard(W(D({},this.dashboardState.snapshot),{widgets:t})),this.loadedWidgetIds.set(new Set(t.map(n=>n.id)))})}catch(t){console.error("Failed to refresh dashboard data:",t)}finally{this.ngZone.run(()=>this.isRefreshingData.set(!1))}}onConnectionChange(e){this.selectedConnectionId.set(e),this.selectedDatasourceId.set(e),this.connectionDropdownOpen.set(!1),e&&!this.connections().some(t=>t.id===e)&&this.loadConnections()}goBack(){this.nav.exitToList()}startEditName(){this.editingNameValue=this.dashboardName(),this.isEditingName.set(!0),setTimeout(()=>{let e=this.nameInputRef?.nativeElement;if(!e)return;e.innerText=this.editingNameValue,e.focus();let t=document.createRange(),n=window.getSelection();t.selectNodeContents(e),t.collapse(!1),n?.removeAllRanges(),n?.addRange(t)},0)}onNameInput(e){let t=e.target;if(t.innerText.length>this.MAX_NAME_LENGTH){t.innerText=t.innerText.slice(0,this.MAX_NAME_LENGTH);let n=document.createRange(),i=window.getSelection();n.selectNodeContents(t),n.collapse(!1),i?.removeAllRanges(),i?.addRange(n)}this.editingNameValue=t.innerText}saveNameEdit(){if(!this.isEditingName())return;let e=(this.nameInputRef?.nativeElement?.innerText??this.editingNameValue).trim();if(!e){this.isEditingName.set(!1);return}if(!this.VALID_NAME_RE.test(e)){this.isEditingName.set(!1);return}this.dashboardState.setDashboardName(e),this.isEditingName.set(!1)}cancelNameEdit(){this.isEditingName.set(!1)}onAiAddWidget(e){if(this.isFilterWidgetConfig(e.config)){this.addFilterAtTop(e);return}let t=W(D({},e),{config:W(D({},e.config),{aq:W(D({},e.config?.aq),{ai:{enabled:!0}})})});this.dashboardState.addWidget(t)}isFilterWidgetConfig(e){return e?.chart?.type==="filter"}addFilterAtTop(e){let i=this.dashboardState.snapshot.widgets.map(r=>r.layout?{id:r.id,layout:W(D({},r.layout),{y:r.layout.y+2})}:null).filter(r=>r!==null);i.length>0&&this.dashboardState.updateWidgetLayouts(i);let o={x:0,y:0,w:12,h:2};this.dashboardState.addWidget(W(D({},e),{layout:o}),{placeExplicitly:!0})}removeWidget(e){this.dashboardState.removeWidget(e),this.loadedWidgetIds().has(e)&&this.removedWidgetIds.add(e)}openEditWidget(e){let t=this.dashboardState.snapshot.widgets.find(n=>n.id===e);this.editingWidget=t?D({},t):null}onUpdateWidget(e){let t={config:e.config};e.title&&(t.title=e.title),this.dashboardState.updateWidget(e.id,t),this.refreshEditingWidget(e.id)}onUpdateLayout(e){this.dashboardState.updateWidgetLayout(e.id,e.layout),this.refreshEditingWidget(e.id)}onApplyDrilldown(e){this.dashboardState.updateWidget(e.id,{drilldownBy:e.drilldownBy}),this.refreshEditingWidget(e.id)}onDrilldownLoadingChange(e){this.tweakingWidgetId.set(e.loading?e.id:null),this.aiPanelRef?.tweakingWidgetId.set(e.loading?e.id:null)}async onTweakWidget(e){this.tweakingWidgetId.set(e.widgetId);try{let t=this.loadedWidgetIds().has(e.widgetId),n=this.dashboardState.snapshot.widgets.find(r=>r.id===e.widgetId),i=await this.openAiService.tweakWidget(t||!n?{widgetId:e.widgetId,prompt:e.prompt}:{widget:n,dataSourceId:this.selectedDatasourceId(),prompt:e.prompt}),o={title:i.title,widgetType:i.widgetType,componentName:i.componentName,summary:i.summary,config:i.config};i.layout&&(o.layout=i.layout),i.drilldownBy&&(o.drilldownBy=i.drilldownBy),this.dashboardState.updateWidget(e.widgetId,o),this.refreshEditingWidget(e.widgetId),this.aiPanelRef?.pushSystemMessage("success","Widget tweaked with your changes.")}catch(t){let n=t instanceof Error?t.message:"Tweak failed.";this.aiPanelRef?.pushSystemMessage("error",`Tweak failed: ${n}`)}finally{this.tweakingWidgetId.set(null)}}aiSessionMap=new Map;http=f(te);async onGridAiSend(e){if(!this.loadedDashboardId)return;let t=this.aiSessionMap.get(e.widgetId)??e.sessionId;this.aiSessionMap.set(e.widgetId,t);try{let n=ot(),i=await F(this.http.post(`${k.baseUrl}/api/customers/${n}/products/${R()}/workforce/dashboards/${this.loadedDashboardId}/widgets/${e.widgetId}/chat`,{message:e.message,sessionId:t})),o=i?.reply?.content;o&&(this.aiSessionMap.set(e.widgetId,i.sessionId??t),this.ngZone.run(()=>{e.chartEl?.addAiResponse?.(o)}))}catch(n){console.error("Chat request failed:",n),this.ngZone.run(()=>{e.chartEl?.addAiResponse?.("Sorry, I couldn't process your request. Please try again.")})}}refreshEditingWidget(e){let t=this.dashboardState.snapshot.widgets.find(n=>n.id===e);t&&(this.editingWidget=D({},t))}onModeToggle(e){let t=e;this.editMode=t.detail?.value==="edit"}saveDashboard(){let e=this.dashboardName().trim();if(e&&e!=="Untitled Dashboard"){this.publishDashboard(e);return}this.showSaveDialog.set(!0)}getCaptureTarget(){return document.querySelector(".dashboard-slider__body gridster")}async exportDashboardPdf(){if(this.isExporting())return;let e=this.getCaptureTarget();if(e){this.showExportDropdown.set(!1),this.isExporting.set(!0),await new Promise(t=>requestAnimationFrame(()=>requestAnimationFrame(t)));try{let t=e.scrollWidth,n=e.scrollHeight,i=await nt(e,{quality:1,width:t,height:n,cacheBust:!0,backgroundColor:"#ffffff",style:{height:`${n}px`,maxHeight:"none",overflow:"visible"}}),o=this.dashboardName()||"Dashboard",r=90,h=new _n({orientation:t>n?"landscape":"portrait",unit:"px",format:[t,n+r]});h.setFillColor(245,245,248),h.rect(0,0,t,r,"F"),h.setFont("helvetica","bold"),h.setFontSize(28),h.setTextColor(50,50,60),h.text(o,t/2,r/2+7,{align:"center"}),h.addImage(i,"JPEG",0,r,t,n),h.save(`${o}.pdf`)}finally{this.isExporting.set(!1)}}}async exportDashboardPng(){if(this.isExporting())return;let e=this.getCaptureTarget();if(e){this.showExportDropdown.set(!1),this.isExporting.set(!0),await new Promise(t=>requestAnimationFrame(()=>requestAnimationFrame(t)));try{let t=e.scrollWidth,n=e.scrollHeight,i=await nt(e,{quality:1,width:t,height:n,cacheBust:!0,backgroundColor:"#ffffff",style:{height:`${n}px`,maxHeight:"none",overflow:"visible"}}),o=this.dashboardName()||"Dashboard",r=90,h=document.createElement("canvas");h.width=t,h.height=n+r;let u=h.getContext("2d");u.fillStyle="#f5f5f8",u.fillRect(0,0,t,r),u.fillStyle="#32323c",u.font="bold 28px helvetica",u.textAlign="center",u.textBaseline="middle",u.fillText(o,t/2,r/2+7);let E=new Image;E.src=i,await new Promise(w=>{E.onload=()=>w()}),u.drawImage(E,0,r,t,n);let N=document.createElement("a");N.href=h.toDataURL("image/png"),N.download=`${o}.png`,N.click()}finally{this.isExporting.set(!1)}}}exportDashboard(){let e=this.dashboardState.snapshot,t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),n=URL.createObjectURL(t),i=document.createElement("a");i.href=n,i.download=`${e.name.replace(/\s+/g,"_")}_dashboard.json`,i.click(),URL.revokeObjectURL(n)}async publishDashboard(e){if(!this.loadedDashboardId){this.aiPanelRef?.pushSystemMessage("error","Dashboard not loaded.");return}let t=this.loadedDashboardId;this.isPublishing.set(!0);try{let n=this.dashboardState.snapshot;if(this.removedWidgetIds.size>0){for(let o of this.removedWidgetIds)await this.publishRepo.deleteWidget(t,o);this.removedWidgetIds.clear()}await this.ngZone.run(()=>this.publishRepo.saveDraft(t,n));let i=e.trim()||"Untitled Dashboard";i!==n.name&&await this.ngZone.run(()=>this.publishRepo.renameDashboard(t,i)),await this.ngZone.run(()=>this.publishRepo.publishDashboard(t,i)),this.dashboardState.setDashboardId(t),this.dashboardState.setDashboardName(e),this.dashboardState.markClean(),this.loadedWidgetIds.set(new Set(n.widgets.map(o=>o.id))),this.isPublishing.set(!1),this.showSaveDialog.set(!1),this.showToast("success","Dashboard Published","Dashboard published successfully."),this.dashboardsBus.notifyChanged()}catch(n){console.error("Publish failed:",n),this.isPublishing.set(!1)}}onAiAddWidgets(e){e.forEach(t=>{let o=t,{id:n}=o,i=de(o,["id"]);this.dashboardState.addWidget(W(D({},i),{config:W(D({},i.config),{aq:W(D({},i.config?.aq),{ai:{enabled:!0}})})}))})}dashboardSource(){let e=this.connections().find(t=>t.id===this.selectedDatasourceId())??this.connections().find(t=>t.id===this.selectedConnectionId());return e?{connectionId:e.connectionId??e.opensearchConnectionId??e.mssqlConnectionId,adapterType:e.adapterType}:void 0}async onPublishNewDashboard(e){this.isPublishing.set(!0);try{let t=await this.ngZone.run(()=>this.publishRepo.publishToApi(e.title,void 0,this.dashboardSource()));e.widgets.length>0&&await this.publishRepo.saveDraft(t,{id:t,name:e.title,widgets:e.widgets,updatedAt:new Date().toISOString()}),this.dashboardsBus.notifyChanged(),this.aiPanelRef?.pushSystemMessage("success",`Published "${e.title}" as a new dashboard.`),this.nav.openDashboard(t)}catch(t){let n=t instanceof Error?t.message:"Failed to publish dashboard";this.aiPanelRef?.pushSystemMessage("error",`Publish failed: ${n}`)}finally{this.isPublishing.set(!1)}}async onAddWidgetsToDashboard(e){let{title:t,widgets:n}=e,i=n.filter(S=>this.isFilterWidgetConfig(S.config)),o=n.filter(S=>!this.isFilterWidgetConfig(S.config)),r=this.dashboardState.snapshot.name?.trim(),h=t&&(!r||r==="Untitled Dashboard")?t:null;h&&this.dashboardState.setDashboardName(h);for(let S of i){let w=S,{id:L}=w,Ce=de(w,["id"]);this.addFilterAtTop(Ce)}if(o.length>0)for(let S of o){let z=S,{id:L}=z,Ce=de(z,["id"]);this.dashboardState.addWidget(W(D({},Ce),{config:W(D({},Ce.config),{aq:W(D({},Ce.config?.aq),{ai:{enabled:!0}})})}))}let u=n.length,E=`widget${u>1?"s":""}`;this.aiPanelRef?.pushSystemMessage("info",`Publishing ${u} ${E} to this dashboard\u2026`);let N=this.loadedDashboardId;if(!N){this.aiPanelRef?.pushSystemMessage("error","No dashboard loaded.");return}try{h&&await this.publishRepo.renameDashboard(N,h),await this.publishRepo.saveDraft(N,this.dashboardState.snapshot),this.aiPanelRef?.pushSystemMessage("success",`${u} ${E} added to your dashboard.`)}catch(S){let L=S instanceof Error?S.message:"Failed to add widgets.";this.aiPanelRef?.pushSystemMessage("error",L)}}showToast(e,t,n){let i=document.createElement("nile-toast");i.variant=e,i.title=t,i.content=n,i.duration=5e3,i.closable=!0,i.toast(),Le()}allRemoteDashboards=c([]);notifyDashboardsChanged(){try{window.dispatchEvent(new CustomEvent("dv:dashboards-changed"))}catch{}}aiInitialTool=c(null);openWidgetLibraryInAi(){this.editMode&&this.aiInitialTool.set("widgetLibrary")}aiDashboardsList=P(()=>this.allRemoteDashboards());aiGlobalWidgets=P(()=>this.globalWidgets().map(e=>({id:e.id,title:e.title,widgetType:e.widgetType,config:e.config,drilldownBy:e.drilldownBy})));onAiSwitchDashboard(e){e!==this.loadedDashboardId&&(this.isDashboardLoading.set(!0),this.nav.openDashboard(e))}onAiExitDashboard(){this.loadedDashboardId&&this.ngZone.run(()=>{this.loadedDashboardId=null,this.loadedWidgetIds.set(new Set),this.removedWidgetIds.clear(),this.dashboardName.set(""),this.dashboardState.resetDashboard(),this.activeSummary.set(""),this.nav.exitToList()})}onAiDashboardRenamed(e){this.ngZone.run(()=>{this.allRemoteDashboards.update(t=>t.map(n=>n.id===e.id?W(D({},n),{name:e.name}):n)),this.loadedDashboardId===e.id&&this.dashboardState.setDashboardName(e.name),this.dashboardsBus.notifyChanged()})}onAiDashboardDeleted(e){this.ngZone.run(()=>{this.allRemoteDashboards.update(t=>t.filter(n=>n.id!==e)),this.loadedDashboardId===e&&(this.loadedDashboardId=null,this.dashboardName.set(""),this.dashboardState.resetDashboard()),this.dashboardsBus.notifyChanged()})}aiCreatingDashboard=c(!1);async onAiCreateDashboardClick(){if(this.aiCreatingDashboard())return;this.aiCreatingDashboard.set(!0);let e="Untitled Dashboard";try{let t=await this.publishRepo.createDashboard(e,void 0,this.dashboardSource());this.ngZone.run(()=>{this.allRemoteDashboards.update(n=>[{id:t,name:e,widgetCount:0,status:"draft"},...n.filter(i=>i.id!==t)]),this.dashboardsBus.notifyChanged(),this.dropCreateDashboardQueryParam(),this.isDashboardLoading.set(!0),this.loadDashboardFromApi(t)})}catch{}finally{this.ngZone.run(()=>this.aiCreatingDashboard.set(!1))}}dropCreateDashboardQueryParam(){}onAiCreatePipelineClick(){}async onAiLoadDashboardsList(){try{let e=await F(this.http.get(`${k.baseUrl}/api/customers/${ot()}/products/${R()}/workforce/dashboards`)),t=e?.data??e??[];await Fe(t.map(i=>i.previewWidget).filter(i=>!!i));let n=t.map(i=>({id:i.id,name:i.name,updatedAt:i.updatedAt,widgetCount:i.widgetCount,firstWidget:$e(i.previewWidget??void 0),status:i.status,isAutoGenerated:i.isAutoGenerated===!0}));this.ngZone.run(()=>this.allRemoteDashboards.set(n))}catch(e){console.error("Failed to load dashboards list:",e)}}async onAiLoadGlobalWidgets(){if(this.addedGlobalWidgetIds.set(new Set),!this.globalWidgetsLoading()){this.globalWidgetsLoading.set(!0);try{let e=await this.globalWidgetService.getAll();this.ngZone.run(()=>this.globalWidgets.set(e))}catch{this.ngZone.run(()=>this.globalWidgets.set([]))}finally{this.ngZone.run(()=>this.globalWidgetsLoading.set(!1))}}}onAiAddGlobalWidget(e){let t=this.globalWidgets().find(n=>n.id===e);t&&(this.addGlobalWidgetToDashboard(t),this.aiPanelRef?.pushSystemMessage("success",`"${t.title}" added to your dashboard.`))}async onAiSaveWidgetToLibrary(e){let n=this.dashboardState.snapshot.widgets.find(i=>i.id===e)??this.aiPanelRef?.findChatWidget(e)??null;if(!n){this.aiPanelRef?.finishSaveToLibrary(e,"error","Could not save widget to library.");return}try{await this.globalWidgetService.add(n),this.aiPanelRef?.finishSaveToLibrary(e,"success","Widget saved to your widget library."),await this.onAiLoadGlobalWidgets()}catch(i){let o=i instanceof Error?i.message:"Could not save widget to library.";this.aiPanelRef?.finishSaveToLibrary(e,"error",o)}}async openGlobalExportWidgets(){if(this.editMode){this.addedGlobalWidgetIds.set(new Set),this.globalToDashWidgetMap=new Map,this.showGlobalWidgetsDialog=!0,this.globalWidgetsLoading.set(!0);try{let e=await this.globalWidgetService.getAll();this.ngZone.run(()=>{this.globalWidgets.set(e)})}catch{this.ngZone.run(()=>{this.globalWidgets.set([])})}finally{this.ngZone.run(()=>{this.globalWidgetsLoading.set(!1)})}}}addGlobalWidgetToDashboard(e){if(!this.editMode)return;let t=this.dashboardState.addWidget({title:e.title,summary:e.summary,widgetType:e.widgetType,componentName:e.componentName,layout:e.layout,config:e.config,drilldownBy:e.drilldownBy});this.addedGlobalWidgetIds.update(n=>new Set(n).add(e.id)),this.globalToDashWidgetMap.set(e.id,t)}async removeGlobalWidget(e){try{await this.globalWidgetService.remove(e),this.ngZone.run(()=>{this.globalWidgets.update(t=>t.filter(n=>n.id!==e)),this.addedGlobalWidgetIds.update(t=>{let n=new Set(t);return n.delete(e),n})})}catch(t){console.error("Failed to remove global widget:",t)}}addQuickChart(e){let n={bar:"Monthly Revenue by Region",column:"Quarterly Sales Comparison",line:"Website Traffic Over Time",spline:"Temperature Trend",area:"Cumulative Revenue Growth",pie:"Market Share Distribution",donut:"Expense Breakdown",scatter:"Height vs Weight Correlation",bubble:"Product Performance Matrix",radar:"Team Skills Assessment",gauge:"System CPU Usage",waterfall:"Profit & Loss Breakdown",trendline:"Stock Price Trend",anomaly:"Server Response Time Anomalies",bellcurve:"Test Score Distribution",boxplot:"Salary Range by Department",cluster:"Sales by Product Category",dumbbell:"Budget vs Actual Spend",fan:"Revenue Forecast",flame:"Application Call Stack",funnel:"Sales Pipeline Conversion",histogram:"Order Value Distribution",spiderweb:"Competitor Analysis",stacked:"Revenue by Channel (Stacked)",timeline:"Product Roadmap",kpi:"Key Performance Indicator"}[e],i={};switch(e){case"bar":i={yAxisTitle:"Revenue ($K)",categories:["Jan","Feb","Mar","Apr","May","Jun"],data:[{name:"North America",data:[120,156,98,210,175,190]},{name:"Europe",data:[90,110,85,140,130,155]},{name:"Asia Pacific",data:[70,95,78,120,115,135]}]};break;case"column":i={yAxisTitle:"Sales ($K)",categories:["Q1","Q2","Q3","Q4"],data:[{name:"2024",data:[450,520,480,610]},{name:"2025",data:[500,580,550,690]}]};break;case"line":i={yAxisTitle:"Visitors (K)",categories:["Jan","Feb","Mar","Apr","May","Jun"],data:[{name:"Organic",data:[42,48,55,60,72,85]},{name:"Paid",data:[28,35,40,38,50,62]},{name:"Referral",data:[15,18,22,20,25,30]}]};break;case"spline":i={yAxisTitle:"Temperature (\xB0C)",categories:["6 AM","9 AM","12 PM","3 PM","6 PM","9 PM"],data:[{name:"Indoor",data:[20,22,24,25,23,21]},{name:"Outdoor",data:[14,18,28,32,26,17]}]};break;case"area":i={yAxisTitle:"Revenue ($K)",categories:["Jan","Feb","Mar","Apr","May","Jun"],data:[{name:"Product Sales",data:[80,95,110,130,155,180]},{name:"Services",data:[40,50,55,65,80,95]}]};break;case"pie":i={seriesName:"Market Share",data:[{name:"Company A",y:35},{name:"Company B",y:25},{name:"Company C",y:20},{name:"Company D",y:12},{name:"Others",y:8}]};break;case"donut":i={seriesName:"Expenses",data:[{name:"Salaries",y:45},{name:"Marketing",y:18},{name:"Operations",y:15},{name:"R&D",y:12},{name:"Infrastructure",y:7},{name:"Other",y:3}]};break;case"funnel":i={seriesName:"Pipeline",data:[{name:"Leads",y:1200},{name:"Qualified",y:800},{name:"Proposals",y:450},{name:"Negotiations",y:200},{name:"Closed Won",y:120}]};break;case"scatter":i={xAxisTitle:"Height (cm)",yAxisTitle:"Weight (kg)",data:[{name:"Male",data:[[170,72],[175,80],[180,85],[168,68],[182,90],[177,78],[185,92],[172,75]]},{name:"Female",data:[[158,52],[162,58],[165,60],[155,50],[170,65],[160,55],[168,62],[163,57]]}]};break;case"bubble":i={xAxisTitle:"Market Size ($M)",yAxisTitle:"Growth Rate (%)",data:[{name:"Products",data:[[50,15,120],[80,22,200],[120,8,350],[30,35,80],[200,12,500],[150,18,280]]}]};break;case"radar":i={categories:["Coding","Design","Communication","Problem Solving","Teamwork","Leadership"],data:[{name:"Team Alpha",data:[85,60,75,90,80,70]},{name:"Team Beta",data:[70,85,90,65,75,80]}]};break;case"spiderweb":i={categories:["Performance","Usability","Security","Scalability","Cost","Support"],data:[{name:"Our Product",data:[90,75,85,80,65,70]},{name:"Competitor A",data:[70,85,60,75,80,90]},{name:"Competitor B",data:[60,70,90,85,55,65]}]};break;case"gauge":i={value:72,min:0,max:100,suffix:"%",bands:[{from:0,to:40,color:"#DF5353"},{from:40,to:70,color:"#DDDF0D"},{from:70,to:100,color:"#55BF3B"}]};break;case"waterfall":i={yAxisTitle:"Amount ($K)",data:[{name:"Revenue",y:420},{name:"COGS",y:-160},{name:"Gross Profit",y:0,isIntermediateSum:!0},{name:"Marketing",y:-60},{name:"Salaries",y:-120},{name:"Operations",y:-35},{name:"Other Income",y:15},{name:"Net Profit",y:0,isSum:!0}]};break;case"trendline":i={yAxisTitle:"Price ($)",categories:["Mon","Tue","Wed","Thu","Fri","Sat","Sun","Mon","Tue","Wed"],data:[{name:"Stock Price",data:[142,148,145,152,158,155,162,160,168,172]}]};break;case"anomaly":i={yAxisTitle:"Response (ms)",categories:["00:00","02:00","04:00","06:00","08:00","10:00","12:00","14:00","16:00","18:00","20:00","22:00"],data:[{name:"Latency",data:[45,42,48,50,120,55,52,200,58,46,44,42]}]};break;case"cluster":i={yAxisTitle:"Sales ($K)",categories:["Q1","Q2","Q3","Q4"],data:[{name:"Electronics",data:[320,380,290,420]},{name:"Clothing",data:[210,250,310,280]},{name:"Food & Beverage",data:[180,200,195,230]}]};break;case"stacked":i={yAxisTitle:"Revenue ($K)",categories:["Jan","Feb","Mar","Apr","May","Jun"],data:[{name:"Direct Sales",data:[80,95,90,110,105,120]},{name:"Online",data:[60,72,85,90,100,115]},{name:"Partners",data:[30,35,40,45,50,55]}]};break;case"bellcurve":i={xAxisTitle:"Score",yAxisTitle:"Density",data:[52,55,58,60,62,63,64,65,66,67,68,68,69,70,70,71,71,72,72,73,73,74,74,75,75,76,76,77,78,78,79,80,80,81,82,83,84,85,87,90,58,62,65,68,70,72,74,76,78,82]};break;case"boxplot":i={xAxisTitle:"Department",yAxisTitle:"Salary ($K)",categories:["Engineering","Marketing","Sales","Design","HR"],data:[{name:"Salary Distribution",data:[{low:75,q1:95,median:115,q3:140,high:180},{low:55,q1:70,median:85,q3:105,high:130},{low:45,q1:60,median:80,q3:110,high:160},{low:60,q1:80,median:95,q3:115,high:145},{low:50,q1:65,median:78,q3:95,high:120}]}]};break;case"dumbbell":i={yAxisTitle:"Amount ($K)",seriesName:"Budget vs Actual",data:[{name:"Marketing",low:150,high:220},{name:"Engineering",low:280,high:310},{name:"Sales",low:120,high:200},{name:"Operations",low:90,high:140},{name:"HR",low:60,high:85},{name:"R&D",low:200,high:350}]};break;case"fan":i={yAxisTitle:"Revenue ($K)",lineData:[{category:"Jan",y:100},{category:"Feb",y:108},{category:"Mar",y:115},{category:"Apr",y:122},{category:"May",y:130},{category:"Jun",y:138},{category:"Jul",y:145},{category:"Aug",y:150},{category:"Sep",y:155}],bands:[{name:"90% Confidence",data:[{category:"Jun",low:120,high:156},{category:"Jul",low:115,high:175},{category:"Aug",low:108,high:192},{category:"Sep",low:100,high:210}]},{name:"50% Confidence",data:[{category:"Jun",low:130,high:146},{category:"Jul",low:128,high:162},{category:"Aug",low:125,high:175},{category:"Sep",low:120,high:190}]}]};break;case"flame":i={data:[{name:"main()",value:100,x:0,low:0,high:4},{name:"processData()",value:60,x:0,low:0,high:3},{name:"renderUI()",value:40,x:1,low:0,high:3},{name:"fetchAPI()",value:35,x:0,low:0,high:2},{name:"parseJSON()",value:25,x:1,low:0,high:2},{name:"updateDOM()",value:30,x:2,low:0,high:2},{name:"httpCall()",value:20,x:0,low:0,high:1},{name:"validate()",value:15,x:1,low:0,high:1}]};break;case"histogram":i={xAxisTitle:"Order Value ($)",yAxisTitle:"Frequency",data:[12,15,18,22,25,28,30,32,35,38,40,42,42,45,48,50,52,55,55,58,60,62,65,68,70,72,75,78,80,85,90,95,100,110,120,45,50,55,60,65,35,40,45,50,55,60,48,52,58,62]};break;case"timeline":i={data:[{name:"2024-01-15",label:"Project Kickoff",description:"Initial planning and team formation"},{name:"2024-03-01",label:"Design Complete",description:"UI/UX designs approved by stakeholders"},{name:"2024-05-15",label:"Alpha Release",description:"Internal testing of core features"},{name:"2024-07-01",label:"Beta Launch",description:"Public beta with 500 users"},{name:"2024-09-01",label:"GA Release",description:"General availability launch"},{name:"2024-11-15",label:"V2 Planning",description:"Roadmap for next major version"}]};break;default:i={yAxisTitle:"Value",categories:["Jan","Feb","Mar","Apr","May","Jun"],data:[{name:"Series 1",data:[120,156,98,210,175,190]}]};break}this.dashboardState.addWidget({title:n,widgetType:"chart",config:{chart:D({type:e},i),aq:{chartTitle:n,ai:{enabled:!0}}}}),this.showAddWidgetDialog=!1}addQuickKpi(){this.dashboardState.addWidget({title:"Total Revenue",widgetType:"kpi",config:{chart:{type:"kpi",variant:"card",label:"Total Revenue",value:"$1,284,500",prefix:"$",trendValue:12.5,trendDirection:"up",trendLabel:"vs last quarter",description:"Combined revenue across all channels",sparkline:[820,880,920,960,1050,1120,1180,1284]},aq:{chartTitle:"Total Revenue",ai:{enabled:!0}}}}),this.showAddWidgetDialog=!1}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=G({type:a,selectors:[["db-builder-shell"]],viewQuery:function(t,n){if(t&1&&Se(Pe,5)(ha,5)(pa,5)(ma,5),t&2){let i;U(i=H())&&(n.aiPanelRef=i.first),U(i=H())&&(n.executiveSummaryEl=i.first),U(i=H())&&(n.canvasAreaRef=i.first),U(i=H())&&(n.nameInputRef=i.first)}},inputs:{dashboardId:[1,"dashboardId"]},decls:10,vars:20,consts:[[1,"shell","nile-theme-nxtgen"],[3,"addWidget","publishNewDashboard","addWidgetsToDashboard","connectionChange","editDashboardWidget","switchDashboard","exitDashboard","createDashboardClick","loadGlobalWidgets","loadDashboardsList","addGlobalWidgetToDashboard","saveWidgetToLibrary","removeGlobalWidgetFromLibrary","exportPdfClick","exportPngClick","publishClick","createPipelineClick","dashboardRenamed","dashboardDeleted","removeWidget","datasourceId","connections","selectedConnectionId","loadedDashboardId","dashboardLoading","loadedWidgetIds","dashboardName","dashboardsList","globalWidgets","globalWidgetsLoading","addedGlobalWidgetIds","initialTool","dashboardSummaryHtml","dashboardSummaryLoading"],["placement","end",1,"widget-settings-drawer",3,"nile-request-close","open"],["slot","label",1,"widget-settings-drawer__title"],[1,"widget-setting-header"],[3,"close","updateWidget","updateLayout","applyDrilldown","drilldownLoadingChange","widget"],["label","Publish",3,"nile-request-close","open"],[3,"publish","dismissed","dashboardName","isPublishing"]],template:function(t,n){t&1&&(s(0,"div",0)(1,"db-dashboard-editor",1),y("addWidget",function(o){return n.onAiAddWidget(o)})("publishNewDashboard",function(o){return n.onPublishNewDashboard(o)})("addWidgetsToDashboard",function(o){return n.onAddWidgetsToDashboard(o)})("connectionChange",function(o){return n.onConnectionChange(o)})("editDashboardWidget",function(o){return n.openEditWidget(o)})("switchDashboard",function(o){return n.onAiSwitchDashboard(o)})("exitDashboard",function(){return n.onAiExitDashboard()})("createDashboardClick",function(){return n.onAiCreateDashboardClick()})("loadGlobalWidgets",function(){return n.onAiLoadGlobalWidgets()})("loadDashboardsList",function(){return n.onAiLoadDashboardsList()})("addGlobalWidgetToDashboard",function(o){return n.onAiAddGlobalWidget(o)})("saveWidgetToLibrary",function(o){return n.onAiSaveWidgetToLibrary(o)})("removeGlobalWidgetFromLibrary",function(o){return n.removeGlobalWidget(o)})("exportPdfClick",function(){return n.exportDashboardPdf()})("exportPngClick",function(){return n.exportDashboardPng()})("publishClick",function(){return n.saveDashboard()})("createPipelineClick",function(){return n.onAiCreatePipelineClick()})("dashboardRenamed",function(o){return n.onAiDashboardRenamed(o)})("dashboardDeleted",function(o){return n.onAiDashboardDeleted(o)})("removeWidget",function(o){return n.removeWidget(o)}),d(),s(2,"nile-drawer",2),y("nile-request-close",function(){return n.editingWidget=null}),s(3,"div",3)(4,"span",4),m(5,"Widget Settings"),d(),b(6,ua,3,3,"nile-badge"),d(),s(7,"db-widget-settings",5),y("close",function(){return n.editingWidget=null})("updateWidget",function(o){return n.onUpdateWidget(o)})("updateLayout",function(o){return n.onUpdateLayout(o)})("applyDrilldown",function(o){return n.onApplyDrilldown(o)})("drilldownLoadingChange",function(o){return n.onDrilldownLoadingChange(o)}),d()(),s(8,"nile-dialog",6),y("nile-request-close",function(){return n.showSaveDialog.set(!1)}),s(9,"db-publish-dialog",7),y("publish",function(o){return n.publishDashboard(o)})("dismissed",function(){return n.showSaveDialog.set(!1)}),d()()()),t&2&&(l(),x("datasourceId",n.selectedDatasourceId())("connections",n.connections())("selectedConnectionId",n.selectedConnectionId())("loadedDashboardId",n.loadedDashboardId)("dashboardLoading",n.isDashboardLoading())("loadedWidgetIds",n.loadedWidgetIds())("dashboardName",n.dashboardName())("dashboardsList",n.aiDashboardsList())("globalWidgets",n.aiGlobalWidgets())("globalWidgetsLoading",n.globalWidgetsLoading())("addedGlobalWidgetIds",n.addedGlobalWidgetIds())("initialTool",n.aiInitialTool())("dashboardSummaryHtml",n.activeSummary())("dashboardSummaryLoading",n.isSummaryLoading()),l(),x("open",!!n.editingWidget),l(4),_(n.editingWidget?6:-1),l(),x("widget",n.editingWidget),l(),x("open",n.showSaveDialog()),l(),x("dashboardName",n.dashboardName())("isPublishing",n.isPublishing()))},dependencies:[he,Ie,Pe,bn,un,Pt],styles:["[_nghost-%COMP%]{display:block;height:100%}.shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;background:var(--ng-colors-bg-secondary);overflow:hidden}db-dashboard-editor[_ngcontent-%COMP%]{display:block;flex:1;min-height:0}.create-dash-fields[_ngcontent-%COMP%]{display:flex;flex-direction:column;row-gap:24px}.toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;height:var(--db-toolbar-height, 72px);padding:0 var(--ng-spacing-5, 20px);background:var(--ng-colors-bg-primary);border-bottom:1px solid var(--ng-colors-border-secondary);box-shadow:0 1px 3px #0000000f;position:fixed;top:var(--nav-height, 56px);left:0;right:0;z-index:var(--z-header)}nile-lite-tooltip[_ngcontent-%COMP%]{display:flex}.toolbar__left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--ng-spacing-3, 12px);min-width:0}.dashboard-title-stack[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:4px;min-width:0}.dashboard-name-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.dashboard-name-group[_ngcontent-%COMP%] .dashboard-name__edit-glyph[_ngcontent-%COMP%]{opacity:0;transition:opacity .12s ease;cursor:pointer;color:var(--ng-colors-fg-tertiary-600);flex-shrink:0}.dashboard-name-group[_ngcontent-%COMP%]:hover .dashboard-name__edit-glyph[_ngcontent-%COMP%]{opacity:1}.dashboard-name__text[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-md, 15px);font-weight:400;color:var(--ng-colors-text-primary-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.dashboard-name__input[_ngcontent-%COMP%]{display:inline-block;font-size:var(--ng-font-size-text-md, 15px);font-weight:400;color:var(--ng-colors-text-primary-900);padding:1px 4px;min-width:120px;max-width:280px;outline:none;cursor:text;white-space:nowrap;overflow:hidden}.toolbar__name-sep[_ngcontent-%COMP%]{width:1px;height:20px;background:var(--ng-colors-border-secondary);flex-shrink:0}.connection-name[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-sm, 14px);font-weight:var(--ng-font-weight-medium, 500);color:var(--ng-colors-border-brand);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.datasource-pill[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:0 10px;height:32px;background:var(--ng-colors-bg-secondary);border:1px solid var(--ng-colors-border-secondary);border-radius:6px}.datasource-pill__icon[_ngcontent-%COMP%]{color:var(--ng-colors-fg-quaternary-400);flex-shrink:0}.datasource-pill__sep[_ngcontent-%COMP%]{width:1px;height:14px;background:var(--ng-colors-border-secondary);flex-shrink:0;margin:0 2px}.widget-setting-header[_ngcontent-%COMP%]{font-size:16px;font-weight:500}.change-btn[_ngcontent-%COMP%]{all:unset;cursor:pointer;font-size:var(--ng-font-size-text-sm, 14px);font-weight:400;color:var(--ng-colors-border-brand);padding:2px 4px;border-radius:4px;transition:opacity .1s ease}.change-btn[_ngcontent-%COMP%]:hover{opacity:.8}.change-btn--compact[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--ng-colors-border-brand)}.change-btn--compact[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{color:var(--ng-colors-border-brand)}.change-btn__label--hoverable[_ngcontent-%COMP%]{max-width:0;overflow:hidden;white-space:nowrap;opacity:0;transition:max-width .16s ease,opacity .12s ease}.datasource-pill--compact[_ngcontent-%COMP%] .connection-name--hoverable[_ngcontent-%COMP%], .datasource-pill--compact[_ngcontent-%COMP%] .connection-chevron--hoverable[_ngcontent-%COMP%], .datasource-pill--compact[_ngcontent-%COMP%] .change-btn__label--hoverable[_ngcontent-%COMP%]{max-width:0;overflow:hidden;opacity:0;transition:max-width .16s ease,opacity .12s ease}.datasource-pill--compact[_ngcontent-%COMP%] .connection-chevron--hoverable[_ngcontent-%COMP%]{width:0}.datasource-pill--compact[_ngcontent-%COMP%] .connection-trigger--compact[_ngcontent-%COMP%]:hover .connection-name--hoverable[_ngcontent-%COMP%], .datasource-pill--compact[_ngcontent-%COMP%] .connection-trigger--compact[_ngcontent-%COMP%]:focus-within .connection-name--hoverable[_ngcontent-%COMP%]{max-width:200px;opacity:1}.datasource-pill--compact[_ngcontent-%COMP%] .connection-trigger--compact[_ngcontent-%COMP%]:hover .connection-chevron--hoverable[_ngcontent-%COMP%], .datasource-pill--compact[_ngcontent-%COMP%] .connection-trigger--compact[_ngcontent-%COMP%]:focus-within .connection-chevron--hoverable[_ngcontent-%COMP%]{max-width:16px;width:auto;opacity:1}.datasource-pill--compact[_ngcontent-%COMP%] .change-btn--compact[_ngcontent-%COMP%]:hover .change-btn__label--hoverable[_ngcontent-%COMP%], .datasource-pill--compact[_ngcontent-%COMP%] .change-btn--compact[_ngcontent-%COMP%]:focus-visible .change-btn__label--hoverable[_ngcontent-%COMP%]{max-width:120px;opacity:1}.connection-trigger[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;cursor:pointer;padding:2px 4px;border-radius:4px;transition:opacity .1s ease}.connection-trigger[_ngcontent-%COMP%]:hover{opacity:.8}.connection-chevron[_ngcontent-%COMP%]{color:var(--ng-colors-border-brand);flex-shrink:0}.toolbar__divider[_ngcontent-%COMP%]{width:1px;height:28px;background:linear-gradient(to bottom,transparent,var(--ng-colors-border-secondary),transparent);flex-shrink:0}.toolbar__title-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;min-width:0}.toolbar__title[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-md, 16px);font-weight:700;background:linear-gradient(135deg,var(--ng-colors-text-primary-900) 0%,var(--ng-colors-border-brand) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap;letter-spacing:-.01em}.toolbar__badge[_ngcontent-%COMP%]{font-size:9px;font-weight:700;letter-spacing:.06em;color:var(--ng-colors-border-brand);background:linear-gradient(135deg,var(--ng-colors-bg-brand-primary),var(--ng-colors-bg-brand-secondary));border:1px solid var(--ng-colors-bg-brand-secondary);border-radius:4px;padding:2px 5px;flex-shrink:0;line-height:1.4}.toolbar__right[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--ng-spacing-2, 8px)}.export-menu[_ngcontent-%COMP%] nile-menu-item[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-sm, 14px);font-weight:var(--ng-font-weight-medium, 500)}nile-button-toggle-group[_ngcontent-%COMP%]{flex-shrink:0}.content[_ngcontent-%COMP%]{display:flex;flex:1;min-height:0;padding:var(--ng-spacing-4, 16px) var(--ng-spacing-5, 20px);overflow-y:auto}.canvas-area[_ngcontent-%COMP%]{flex:1;min-width:0}nile-drawer[_ngcontent-%COMP%]::part(panel){width:340px;max-width:90vw}nile-drawer[_ngcontent-%COMP%]::part(body){padding:var(--ng-spacing-4, 16px) var(--ng-spacing-5, 20px)}.widget-settings-drawer[_ngcontent-%COMP%]::part(panel){width:40vw}.widget-settings-drawer[_ngcontent-%COMP%]::part(header){height:56px}.widget-settings-drawer[_ngcontent-%COMP%]::part(body){padding:0;overflow:hidden}.widget-settings-drawer__title[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:10px}.ai-drawer[_ngcontent-%COMP%]::part(panel){width:100vw;max-width:100vw}.ai-drawer[_ngcontent-%COMP%]::part(body){padding:0;overflow:hidden}.ai-drawer[_ngcontent-%COMP%]::part(header){display:none}nile-dialog[_ngcontent-%COMP%]::part(panel){width:640px;max-width:90vw;border-radius:var(--ng-radius-2xl, 16px)}.widget-picker[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--ng-spacing-4, 16px)}.picker-section[_ngcontent-%COMP%]{margin:0;font-size:var(--ng-font-size-text-sm, 14px);font-weight:var(--ng-font-weight-semibold, 600);color:var(--ng-colors-text-secondary-700)}.picker-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--ng-spacing-3, 12px)}.picker-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ng-spacing-2, 8px);padding:var(--ng-spacing-5, 20px) var(--ng-spacing-3, 12px);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-xl, 12px);cursor:pointer;transition:all .1s ease;font-size:var(--ng-font-size-text-sm, 14px);font-weight:var(--ng-font-weight-medium, 500);color:var(--ng-colors-text-secondary-700);background:var(--ng-colors-bg-primary)}.picker-card[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand);background:var(--ng-colors-bg-brand-primary);color:var(--ng-colors-text-brand-secondary-700)}.picker-icon[_ngcontent-%COMP%]{color:var(--ng-colors-fg-brand-primary-600)}.picker-kpi-icon[_ngcontent-%COMP%]{font-size:28px;font-weight:var(--ng-font-weight-bold, 700);color:var(--ng-colors-fg-brand-primary-600)}.global-widgets-drawer[_ngcontent-%COMP%]::part(panel){width:85%}.global-widgets-drawer[_ngcontent-%COMP%]::part(body){padding:16px;overflow-y:auto}.global-widgets-grid-view[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}.global-widget-card[_ngcontent-%COMP%]{min-width:0;width:100%}.global-widget-card[_ngcontent-%COMP%]::part(base){border-radius:12px;border:1px solid var(--ng-colors-border-secondary);width:100%;max-width:100%;box-sizing:border-box}.global-widget-card[_ngcontent-%COMP%]::part(body__wrapper){padding:12px;gap:unset}.gw-preview[_ngcontent-%COMP%]{height:220px;width:100%;overflow:hidden;box-sizing:border-box}.gw-preview[_ngcontent-%COMP%] db-nile-chart-widget[_ngcontent-%COMP%]{display:block;width:100%;height:100%}.gw-footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--ng-colors-border-secondary);padding-top:12px;margin-top:10px;gap:8px}.gw-title[_ngcontent-%COMP%]{font-weight:600;font-size:13px;color:var(--ng-colors-text-primary-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.no-global-widgets[_ngcontent-%COMP%]{text-align:center;padding:40px 20px;color:var(--ng-colors-text-secondary-700);font-size:14px}.btn-spinner[_ngcontent-%COMP%]{display:inline-block;width:14px;height:14px;border:2px solid rgba(0,0,0,.2);border-top-color:currentColor;border-radius:50%;animation:_ngcontent-%COMP%_btn-spin .7s linear infinite;flex-shrink:0}.btn-spinner--light[_ngcontent-%COMP%]{border-color:#ffffff59;border-top-color:var(--ng-colors-fg-white)}@keyframes _ngcontent-%COMP%_btn-spin{to{transform:rotate(360deg)}}"]})};function ba(a,e){a&1&&p(0,"db-builder-shell",0),a&2&&x("dashboardId",e)}function _a(a,e){a&1&&p(0,"db-all-dashboards-page")}var He=class a{nav=f(B);static \u0275fac=function(t){return new(t||a)};static \u0275cmp=G({type:a,selectors:[["dvz-manage-dashboards-page"]],decls:2,vars:1,consts:[[3,"dashboardId"]],template:function(t,n){if(t&1&&b(0,ba,1,1,"db-builder-shell",0)(1,_a,1,0,"db-all-dashboards-page"),t&2){let i;_((i=n.nav.dashboardId())?0:1,i)}},dependencies:[Ge,Ue],styles:["[_nghost-%COMP%]{display:block;height:100%;min-height:0}"],changeDetection:0})};function fa(a,e){a&1&&p(0,"dvz-manage-dashboards-page")}var je=class a{config=A(void 0);theme=A(void 0);view=A(void 0);search=A("");ready=ne({alias:"dvz-ready"});error=ne({alias:"dvz-error"});unauthorized=ne({alias:"dvz-unauthorized"});navigate=ne({alias:"dvz-navigate"});dashboardChanged=ne({alias:"dvz-dashboard-changed"});viewChanged=ne({alias:"dvz-view-changed"});listChanged=ne({alias:"dvz-list-changed"});host=f(mt);navigator=f(B);dashboardsBus=f(ie);destroyRef=f(ce);stopAdopting=null;stopTokenRefresh=null;stopUi=null;themeChanged=ne({alias:"dvz-theme-changed"});themeStore=f(Dt);syncThemeInput=O(()=>{let e=this.theme();e&&this.themeStore.set(e)});lastAnnouncedTheme=null;announceTheme=O(()=>{let e=this.themeStore.resolved();if(e===this.lastAnnouncedTheme)return;let t=this.lastAnnouncedTheme===null;this.lastAnnouncedTheme=e,t||this.themeChanged.emit({theme:e,choice:this.themeStore.choice()})});configured=!1;constructor(){O(()=>{let e=this.config();e&&this.apply(e)}),this.navigator.requests.pipe(Y(this.destroyRef)).subscribe(e=>this.navigate.emit(e)),this.dashboardsBus.changes$.pipe(Y(this.destroyRef)).subscribe(()=>this.dashboardChanged.emit()),this.navigator.listState.pipe(Y(this.destroyRef)).subscribe(e=>this.listChanged.emit(e)),O(()=>{let e=this.view();if(!e)return;let t=e.dashboardId??null;t===null?this.navigator.exitToList():this.navigator.openDashboard(t)}),O(()=>this.navigator.search.set(this.search()??"")),O(()=>{let e=this.navigator.dashboardId();this.configured&&this.viewChanged.emit({view:e?"builder":"list",dashboardId:e})}),queueMicrotask(()=>{let e=this.host.nativeElement.shadowRoot;e&&(this.stopAdopting=st(e))})}async apply(e){let t=e.auth;Lt(e.api.baseUrl),It(e.api,t);let n=wn({baseUrl:e.api.baseUrl,mcpUrl:e.api.mcpUrl,tokenizedOrigins:e.api.tokenizedOrigins,headers:e.api.headers,customerId:e.tenant.customerId??null,productId:e.tenant.productId,productName:e.tenant.productName??null,authMode:t.mode,authToken:t.mode==="token"?t.token:null,getToken:t.mode==="callback"?t.getToken:null,ssoEnabled:t.mode==="inherit"?t.ssoEnabled:void 0,onUnauthorized:()=>this.unauthorized.emit(),features:e.features,ui:e.ui,hrefs:e.hrefs,initialDashboardId:e.initial?.dashboardId??null,initialDatasource:e.initial?.datasource??null,initialCreateDashboard:e.initial?.createDashboard??!1,initialTool:e.initial?.tool??null});this.stopUi?.(),this.stopUi=dt(this.host.nativeElement,e.ui),this.themeStore.attach(this.host.nativeElement),this.theme()||this.themeStore.set(e.ui?.theme??"light"),Vt({productId:e.tenant.productId,name:e.tenant.productName}),Rt(()=>this.unauthorized.emit());let i=n;await Tt(i),this.stopTokenRefresh??=At(i),this.configured||(this.configured=!0,n.initialDashboardId&&this.navigator.openDashboard(n.initialDashboardId),n.initialDatasource&&this.navigator.selectDatasource(n.initialDatasource),n.initialCreateDashboard&&this.navigator.requestCreateDashboard(),n.initialTool&&this.navigator.openTool(n.initialTool),this.ready.emit({customerId:I().customerId??"",productId:I().productId??""}))}ngOnDestroy(){this.stopAdopting?.(),this.stopTokenRefresh?.(),this.stopUi?.()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=G({type:a,selectors:[["dvz-manage-dashboards-root"]],inputs:{config:[1,"config"],theme:[1,"theme"],view:[1,"view"],search:[1,"search"]},outputs:{ready:"dvz-ready",error:"dvz-error",unauthorized:"dvz-unauthorized",navigate:"dvz-navigate",dashboardChanged:"dvz-dashboard-changed",viewChanged:"dvz-view-changed",listChanged:"dvz-list-changed",themeChanged:"dvz-theme-changed"},features:[ke([B])],decls:1,vars:1,template:function(t,n){t&1&&b(0,fa,1,0,"dvz-manage-dashboards-page"),t&2&&_(n.config()?0:-1)},dependencies:[He],styles:[`:host{display:block;height:100%;min-height:0}
|
|
2
|
-
`],encapsulation:3,changeDetection:0})};kt();var ya="dvz-manage-dashboards";function Ca(a={}){return Ot(je,ya,[pt(),Wt(),Mt(St([Bt])),{provide:Ae,useFactory:()=>I().baseUrl},{provide:an,useValue:"workforce/dashboards"},Gt(re),Ut(q),Kt(q),Xt(q),Jt(q),Qt(q),Yt(q),Zt(q),We(()=>{let e=f(j);return Be(()=>`${k.baseUrl}/api/customers/${I().customerId??e.tenantId()??""}/products/${R()}/workforce`)})],a)}Ca();export{ya as a,Ca as b};
|
|
3
|
-
/*! Bundled license information:
|
|
4
|
-
|
|
5
|
-
@angular/animations/fesm2022/animations.mjs:
|
|
6
|
-
(**
|
|
7
|
-
* @license Angular v21.2.18
|
|
8
|
-
* (c) 2010-2026 Google LLC. https://angular.dev/
|
|
9
|
-
* License: MIT
|
|
10
|
-
*)
|
|
11
|
-
*/
|