@devtable/dashboard 10.44.3 → 10.44.4

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.
@@ -1306,7 +1306,7 @@ class yi {
1306
1306
  }), this.instanceRegistry.clear(), this.factoryRegistry.clear();
1307
1307
  }
1308
1308
  }
1309
- const Rl = "10.44.3", Ix = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1309
+ const Rl = "10.44.4", Ix = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1310
1310
  __proto__: null,
1311
1311
  version: Rl
1312
1312
  }, Symbol.toStringTag, { value: "Module" }));
@@ -26432,6 +26432,9 @@ const lD = f.model("EditorModel", {
26432
26432
  return t.list.push({
26433
26433
  ...n.json,
26434
26434
  id: s,
26435
+ title: {
26436
+ ...n.json.title
26437
+ },
26435
26438
  layout: {
26436
26439
  ...n.layout,
26437
26440
  y: 1 / 0,
@@ -51,7 +51,7 @@ Check the top-level render call using <`+M+">.")}return T}}function Yl(j,T){{if(
51
51
  ${Qu.map(Uu).join("")}
52
52
  </tbody>
53
53
  </table>
54
- `;function ts(t,e){const n=Object.keys(e),r=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...r)}catch(i){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient payload"):i}}function ns(t,e){try{return ts(t,e)}catch(n){return console.error(n),n.message}}function Yu({sql:t,pre_process:e}){if(!e.trim())return t;try{return new Function(`return ${e}`)()({sql:t},xt)}catch(n){return console.error(n),t}}function Xu(t,e,n){if(!t.trim())return e;try{return new Function(`return ${t}`)()(e,xt,n)}catch(r){return console.error(r),e}}function Ju(t){t=t||{};const e=Object.keys(t).sort(),n=[];for(let r=0;r<e.length;r++){const i=e[r];if(i!="authentication"&&t[i])n.push(e[r]+"="+(typeof t[i]=="object"?JSON.stringify(t[i]):t[i]));else{const o=Object.keys(t[i]).sort();for(let l=0;l<o.length;l++){const u=o[l];u!="sign"&&t[i][u]&&n.push(o[l]+"="+(typeof t[i][u]=="object"?JSON.stringify(t[i][u]):t[i][u]))}}}return n.sort().join("&")}function Zu(t,e){let n=Ju(t);return n+="&key="+e,Fu.MD5(n).toString().toUpperCase()}class li{constructor(){this.type="default_api_client",this.baseURL="http://localhost:31200",this.app_id="",this.app_secret=""}getAuthentication(e){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:Zu({app_id:this.app_id,nonce_str:n,...e},this.app_secret)}}getRequest(e,n){return(r,i,o,l)=>{const u=this.buildHeader(o),c=this.buildAxiosConfig(e,r,i,o,u,n);return et(c).then(d=>l?d:d.data).catch(d=>Promise.reject(d))}}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}buildAxiosConfig(e,n,r,i,o,l){const u={baseURL:this.baseURL,method:e,url:n,params:e==="GET"?r:i.params,headers:o,signal:l};return["POST","PUT"].includes(e)&&(u.data=i.string?JSON.stringify(r):r,u.data.authentication=this.getAuthentication(u.data)),u}buildHeader(e){const n=window.localStorage.getItem("token");return{"X-Requested-With":"XMLHttpRequest","Content-Type":e.string?"application/x-www-form-urlencoded":"application/json",authorization:n?`bearer ${n}`:"",...e.headers}}}class Hu{constructor(e){this.implementation=e}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}class ui extends li{constructor(){super(...arguments);A(this,"makeQueryENV",null)}query(n){return async(r,i={})=>{var o;return r.env||(r.env=((o=this.makeQueryENV)==null?void 0:o.call(this))??{error:"failed to run makeQueryENV"}),this.post(n)("/query",r,i)}}httpDataSourceQuery(n){return async(r,i={})=>{var o;return r.env||(r.env=((o=this.makeQueryENV)==null?void 0:o.call(this))??{error:"failed to run makeQueryENV"}),this.getRequest("POST",n)("/query",r,i,!0)}}structure(n){return async(r,i={})=>this.post(n)("/query/structure",r,i)}}class ci{constructor(e){this.implementation=e}query(e){return this.implementation.query(e)}httpDataSourceQuery(e){return this.implementation.httpDataSourceQuery(e)}structure(e){return this.implementation.structure(e)}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}const Ct=new ui;function ss(t){Ct.baseURL!==t.apiBaseURL&&(Ct.baseURL=t.apiBaseURL),t.app_id&&(Ct.app_id=t.app_id),t.app_secret&&(Ct.app_secret=t.app_secret),t.makeQueryENV&&(Ct.makeQueryENV=t.makeQueryENV)}const di=new ci(Ct),Ke=di;function pi(){return{filters:{},context:{}}}function rs(t){const e=pi();if(!t)return pi();const{filters:n=e.filters,context:r=e.context}=t;return{filters:n,context:r}}async function ec({query:t,name:e,payload:n,additionals:r},i){if(!t.sql)return[];const{type:o,key:l,sql:u,pre_process:c,post_process:d}=t,p=ts(u,n),h=Yu({sql:p,pre_process:c});let x=await Ke.query(i)({type:o,key:l,query:h,...r},{params:{name:e}});return x=Xu(d,x,rs(n)),x}async function tc({type:t,key:e,configString:n,name:r,additionals:i},o){try{return await Ke.httpDataSourceQuery(o)({type:t,key:e,query:n,...i},{params:{name:r}})}catch(l){if(et.isCancel(l))throw l;return console.error(l),l}}async function is(){try{return(await Ke.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(t){return console.error(t),[]}}async function hi(){try{return(await Ke.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(t){return console.error(t),[]}}class xi{constructor(e){A(this,"rootRef");this.rootRef=W.observable({current:e})}async deleteItem(e){W.runInAction(()=>{b.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?W.toJS(this.rootRef.current):b.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(b.isObject(n))W.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else W.runInAction(()=>{b.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return W.reaction(()=>this.getValueFromRoot(e),(i,o)=>{n(i,o)},{requiresObservable:!0,fireImmediately:b.get(r,"fireImmediately",!1)})}}class nc{constructor(){A(this,"channels",new Map);A(this,"globalChannel",new Fr)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Fr;return this.channels.set(e,r),r}}class sc{constructor(e){A(this,"instances",new Map);this.pluginManager=e}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(e=>e.manifest.viz)}resolveComponent(e){return this.pluginManager.factory.viz(e)}getOrCreateInstance(e){const n=this.instances.get(e.id);if(n)return n;const r={id:e.id,name:e.viz.type,type:e.viz.type,messageChannels:new nc,instanceData:new xi(e.viz.conf)};return this.instances.set(e.id,r),r}}function fi(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new xi({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const rc=t=>{const{panel:e,vizManager:n,data:r,variables:i}=t,o=n.resolveComponent(e.viz.type),l=n.getOrCreateInstance(e),u={...fi(l,r,n,i),viewport:{width:e.layout.w,height:e.layout.h}},c=o.viewRender;return s.jsx(c,{context:u,instance:l,...b.omit(t,["panel","vizManager","data"])})},ic=t=>{const{vizManager:e,panel:n,data:r,variables:i}=t,o=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),u={...fi(l,r,e,i)},c=o.configRender;return s.jsx(c,{context:u,instance:l,...b.omit(t,["panel","vizManager","data"])})},gi=(t,e)=>{const n=tt.bezier(t),r=tt.bezier(e);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},on=t=>{const e=tt.bezier(t);return function(n){return e(n/100).hex()}},ac={type:"interpolation",displayName:"Red / Green",getColor:gi(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},oc={type:"interpolation",displayName:"Yellow / Blue",getColor:gi(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},lc={type:"interpolation",displayName:"Red",getColor:on(["#fff7f1","darkred"]),name:"red",category:"sequential"},uc={type:"interpolation",displayName:"Green",getColor:on(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},cc={type:"interpolation",displayName:"Blue",getColor:on(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},dc={type:"interpolation",displayName:"Orange",getColor:on(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class pc{constructor(e){A(this,"symbol");this.symbol=Symbol(e)}}function nt(t){return new pc(t)}class as{constructor(){A(this,"parent");A(this,"factoryRegistry",new Map);A(this,"instanceRegistry",new Map)}createScoped(){const e=new as;return e.parent=this,e}getRequired(e){return this.get(e)}get(e){if(this.instanceRegistry.has(e.symbol))return this.instanceRegistry.get(e.symbol);const n=this.factoryRegistry.get(e.symbol);if(n){const r=n(this);return this.instanceRegistry.set(e.symbol,r),r}if(this.parent)return this.parent.get(e)}provideFactory(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,n),this}provideValue(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(e=>{const n=b.get(e,"dispose");b.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const mi="10.44.3",hc=Object.freeze(Object.defineProperty({__proto__:null,version:mi},Symbol.toStringTag,{value:"Module"}));class xc{constructor(e){A(this,"staticColors",new Map);A(this,"interpolations",new Map);e.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(e){const n=this.encodeColor(e);e.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.staticColors.set(n,e)):e.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`,`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.interpolations.set(n,e))}decodeStaticColor(e){return this.staticColors.get(e)}encodeColor(e){return`\${${e.category}}.{${e.name}}`}decodeInterpolation(e){return this.interpolations.get(e)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class fc{constructor(){A(this,"plugins",new Map);A(this,"vizComponents",new Map);A(this,"factory",{viz:e=>{const n=this.vizComponents.get(e);if(n)return n;throw new Error(`Viz Component (${e}) not found`)}})}install(e){if(this.plugins.has(e.id))throw new Error(`Plugin (${e.id}) has been installed before`);this.plugins.set(e.id,e);for(const n of e.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class gc{constructor(){A(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n,r){var l;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(u=>u.version>e.from&&u.version<=e.to),o=b.orderBy(i,"version","asc");if(((l=b.last(o))==null?void 0:l.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return o.reduce((u,c)=>c.handler(u,r),n)}}class re extends gc{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,i)=>({version:e,...n(r,i)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),i=b.get(r,"version",0),o=this.run({from:i,to:this.VERSION},r,{panelModel:n});await e.setItem(null,o)}async needMigration({configData:e}){const n=await e.getItem(null);return b.get(n,"version",0)<this.VERSION}}const O=(t,e)=>{const[n,{setFalse:r}]=$.useBoolean(!0),[i,o]=f.useState();f.useEffect(()=>(t.getItem(e).then(u=>{o(u),r()}),t.watchItem(e,u=>{o(u)})));const l=f.useCallback(async u=>{await t.setItem(e,u),o(u)},[t,e]);return{loading:n,value:i,set:l}},ke={top:16,right:16,bottom:16,left:16},Ge=t=>Math.max(0,t-ke.left-ke.right),We=t=>Math.max(0,t-ke.top-ke.bottom),Nt=(t,e)=>({width:Ge(t),height:We(e)}),Te=({width:t,height:e,children:n})=>s.jsx(a.Box,{pt:ke.top,pr:ke.right,pb:ke.bottom,pl:ke.left,sx:{width:t,height:e,overflow:"hidden",position:"relative"},children:n});function I(t){const[e,n]=t.split(".");return{queryID:e,columnKey:n}}function mc(t){return t.includes(".")?I(t):{queryID:"",columnKey:t}}function st(t,e){var i;const{queryID:n,columnKey:r}=I(e);return n?r?((i=t[n])==null?void 0:i.map(o=>o[r]))??[]:t[n]:[]}function qt(t,e){const{queryID:n}=I(e);return n?t[n]:[]}function yc(t){return Object.values(t)[0]}function ln(t,e){const{queryID:n,columnKey:r}=I(e);return t[r]}const os={x_axis_data_key:"",y_axis_data_key:"",z_axis_data_key:"",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}};U.use([E.GridComponent,E.VisualMapComponent,E.LegendComponent,E.TooltipComponent,we.CanvasRenderer]);function bc({context:t}){const{value:e}=O(t.instanceData,"config"),n=t.data,{width:r,height:i}=t.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:c,yAxis3D:d,zAxis3D:p}=b.defaults({},e,os),h=f.useMemo(()=>qt(n,o),[n,o]),{x,y:m,z:v}=f.useMemo(()=>({x:I(o),y:I(l),z:I(u)}),[o,l,u]),{min:C,max:k}=f.useMemo(()=>{const B=b.minBy(h,se=>se[v.columnKey]),Y=b.maxBy(h,se=>se[v.columnKey]);return{min:b.get(B,v.columnKey),max:b.get(Y,v.columnKey)}},[h,v]),z={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:C,max:k,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(B=>[B[x.columnKey],B[m.columnKey],B[v.columnKey]])}]};return e?s.jsx(Te,{width:r,height:i,children:s.jsx(je,{echarts:U,option:z,style:Nt(r,i),notMerge:!0,theme:"merico-light"})}):null}const yi=f.createContext(null),ls=yi.Provider;function us(){const t=f.useContext(yi);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const Z=()=>us(),cs=()=>us(),bi=f.createContext({searchButtonProps:{}}),ds=bi.Provider;function vi(){return f.useContext(bi)}const ji=f.createContext(null),ps=ji.Provider;function wi(){const t=f.useContext(ji);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const J=()=>wi(),oe=()=>wi(),vc={inEditMode:!1},un=f.createContext(vc),Ci=f.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),hs=Ci.Provider;function Si(){const t=f.useContext(Ci);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const ut=()=>Si(),Le=()=>Si(),jc={fullScreenPanelID:"",setFullScreenPanelID:b.noop},xs=f.createContext(jc);function _i(){const t=f.useContext(xs);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const P=S.observer(f.forwardRef(({label:t,required:e,value:n,onChange:r,clearable:i=!1,sx:o,...l},u)=>{const{panel:c}=Le(),d=f.useMemo(()=>{const p=[...c.dataFieldOptions];return i&&p.unshift({label:"unset",value:"",group:""}),p},[c.dataFieldOptions]);return s.jsx(a.Select,{ref:u,label:t,data:d,value:n,onChange:r,required:e,sx:o,maxDropdownHeight:500,...l})}));function wc({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=b.defaults({},e,os),{control:i,handleSubmit:o,reset:l}=y.useForm({defaultValues:r});return f.useEffect(()=>{l(r)},[e]),e?s.jsx(a.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:o(n),children:[s.jsx(a.Text,{children:"X Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(y.Controller,{name:"x_axis_data_key",control:i,render:({field:u})=>s.jsx(P,{label:"Data Field",required:!0,...u})}),s.jsx(y.Controller,{name:"xAxis3D.name",control:i,render:({field:u})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),s.jsx(a.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(y.Controller,{name:"y_axis_data_key",control:i,render:({field:u})=>s.jsx(P,{label:"Data Field",required:!0,...u})}),s.jsx(y.Controller,{name:"yAxis3D.name",control:i,render:({field:u})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),s.jsx(a.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(y.Controller,{name:"z_axis_data_key",control:i,render:({field:u})=>s.jsx(P,{label:"Data Field",required:!0,...u})}),s.jsx(y.Controller,{name:"zAxis3D.name",control:i,render:({field:u})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),s.jsx(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(a.Button,{color:"blue",type:"submit",children:[s.jsx(_.DeviceFloppy,{size:20}),s.jsx(a.Text,{ml:"md",children:"Save"})]})})]})}):null}function Cc(t,{panelModel:e}){try{const n=e.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=c=>c&&`${n}.${c}`,{x_axis_data_key:i,y_axis_data_key:o,z_axis_data_key:l,...u}=t;return{...u,x_axis_data_key:r(i),y_axis_data_key:r(o),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class Sc extends re{constructor(){super(...arguments);A(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:i}=n;return{...n,version:2,config:Cc(i,r)}})}}const _c={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Sc,name:"bar-3d",viewRender:bc,configRender:wc,createConfig(){return{version:2,config:b.cloneDeep(os)}}};class Ce extends f.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(a.Box,{children:[s.jsx(a.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),s.jsx(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}const ye={mantissa:0,output:"number",trimMantissa:!1,average:!1};function kc({value:t,onChange:e},n){const r=u=>{e({...t,output:u})},i=u=>{const c=u===0?!1:t.trimMantissa;e({...t,mantissa:u,trimMantissa:c})},o=u=>{e({...t,trimMantissa:u.currentTarget.checked})},l=u=>{e({...t,average:u.currentTarget.checked})};return s.jsxs(a.Stack,{ref:n,children:[s.jsxs(a.Group,{grow:!0,children:[s.jsx(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:r,sx:{flexGrow:1}}),s.jsx(a.Switch,{label:s.jsxs(a.Stack,{spacing:0,children:[s.jsx(a.Text,{children:"Average"}),s.jsx(a.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:t.average,onChange:l,disabled:t.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),s.jsxs(a.Group,{grow:!0,children:[s.jsx(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:i}),s.jsx(a.Switch,{label:"Trim mantissa",checked:t.trimMantissa,onChange:o,disabled:t.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),s.jsxs(a.Stack,{spacing:0,children:[s.jsx(a.Text,{weight:"bold",children:"Preview"}),s.jsx(Ce,{children:s.jsxs(a.Group,{position:"apart",children:[s.jsxs(a.Text,{size:12,color:"gray",children:["123456789 ",s.jsx(_.ArrowRight,{size:9})," ",F(123456789).format(t)]}),s.jsxs(a.Text,{size:12,color:"gray",children:["1234 ",s.jsx(_.ArrowRight,{size:9})," ",F(1234).format(t)]}),s.jsxs(a.Text,{size:12,color:"gray",children:["0.1234 ",s.jsx(_.ArrowRight,{size:9})," ",F(.1234).format(t)]})]})})]})]})}const Ae=f.forwardRef(kc),Oe={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
54
+ `;function ts(t,e){const n=Object.keys(e),r=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...r)}catch(i){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient payload"):i}}function ns(t,e){try{return ts(t,e)}catch(n){return console.error(n),n.message}}function Yu({sql:t,pre_process:e}){if(!e.trim())return t;try{return new Function(`return ${e}`)()({sql:t},xt)}catch(n){return console.error(n),t}}function Xu(t,e,n){if(!t.trim())return e;try{return new Function(`return ${t}`)()(e,xt,n)}catch(r){return console.error(r),e}}function Ju(t){t=t||{};const e=Object.keys(t).sort(),n=[];for(let r=0;r<e.length;r++){const i=e[r];if(i!="authentication"&&t[i])n.push(e[r]+"="+(typeof t[i]=="object"?JSON.stringify(t[i]):t[i]));else{const o=Object.keys(t[i]).sort();for(let l=0;l<o.length;l++){const u=o[l];u!="sign"&&t[i][u]&&n.push(o[l]+"="+(typeof t[i][u]=="object"?JSON.stringify(t[i][u]):t[i][u]))}}}return n.sort().join("&")}function Zu(t,e){let n=Ju(t);return n+="&key="+e,Fu.MD5(n).toString().toUpperCase()}class li{constructor(){this.type="default_api_client",this.baseURL="http://localhost:31200",this.app_id="",this.app_secret=""}getAuthentication(e){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:Zu({app_id:this.app_id,nonce_str:n,...e},this.app_secret)}}getRequest(e,n){return(r,i,o,l)=>{const u=this.buildHeader(o),c=this.buildAxiosConfig(e,r,i,o,u,n);return et(c).then(d=>l?d:d.data).catch(d=>Promise.reject(d))}}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}buildAxiosConfig(e,n,r,i,o,l){const u={baseURL:this.baseURL,method:e,url:n,params:e==="GET"?r:i.params,headers:o,signal:l};return["POST","PUT"].includes(e)&&(u.data=i.string?JSON.stringify(r):r,u.data.authentication=this.getAuthentication(u.data)),u}buildHeader(e){const n=window.localStorage.getItem("token");return{"X-Requested-With":"XMLHttpRequest","Content-Type":e.string?"application/x-www-form-urlencoded":"application/json",authorization:n?`bearer ${n}`:"",...e.headers}}}class Hu{constructor(e){this.implementation=e}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}class ui extends li{constructor(){super(...arguments);A(this,"makeQueryENV",null)}query(n){return async(r,i={})=>{var o;return r.env||(r.env=((o=this.makeQueryENV)==null?void 0:o.call(this))??{error:"failed to run makeQueryENV"}),this.post(n)("/query",r,i)}}httpDataSourceQuery(n){return async(r,i={})=>{var o;return r.env||(r.env=((o=this.makeQueryENV)==null?void 0:o.call(this))??{error:"failed to run makeQueryENV"}),this.getRequest("POST",n)("/query",r,i,!0)}}structure(n){return async(r,i={})=>this.post(n)("/query/structure",r,i)}}class ci{constructor(e){this.implementation=e}query(e){return this.implementation.query(e)}httpDataSourceQuery(e){return this.implementation.httpDataSourceQuery(e)}structure(e){return this.implementation.structure(e)}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}const Ct=new ui;function ss(t){Ct.baseURL!==t.apiBaseURL&&(Ct.baseURL=t.apiBaseURL),t.app_id&&(Ct.app_id=t.app_id),t.app_secret&&(Ct.app_secret=t.app_secret),t.makeQueryENV&&(Ct.makeQueryENV=t.makeQueryENV)}const di=new ci(Ct),Ke=di;function pi(){return{filters:{},context:{}}}function rs(t){const e=pi();if(!t)return pi();const{filters:n=e.filters,context:r=e.context}=t;return{filters:n,context:r}}async function ec({query:t,name:e,payload:n,additionals:r},i){if(!t.sql)return[];const{type:o,key:l,sql:u,pre_process:c,post_process:d}=t,p=ts(u,n),h=Yu({sql:p,pre_process:c});let x=await Ke.query(i)({type:o,key:l,query:h,...r},{params:{name:e}});return x=Xu(d,x,rs(n)),x}async function tc({type:t,key:e,configString:n,name:r,additionals:i},o){try{return await Ke.httpDataSourceQuery(o)({type:t,key:e,query:n,...i},{params:{name:r}})}catch(l){if(et.isCancel(l))throw l;return console.error(l),l}}async function is(){try{return(await Ke.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(t){return console.error(t),[]}}async function hi(){try{return(await Ke.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(t){return console.error(t),[]}}class xi{constructor(e){A(this,"rootRef");this.rootRef=W.observable({current:e})}async deleteItem(e){W.runInAction(()=>{b.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?W.toJS(this.rootRef.current):b.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(b.isObject(n))W.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else W.runInAction(()=>{b.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return W.reaction(()=>this.getValueFromRoot(e),(i,o)=>{n(i,o)},{requiresObservable:!0,fireImmediately:b.get(r,"fireImmediately",!1)})}}class nc{constructor(){A(this,"channels",new Map);A(this,"globalChannel",new Fr)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Fr;return this.channels.set(e,r),r}}class sc{constructor(e){A(this,"instances",new Map);this.pluginManager=e}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(e=>e.manifest.viz)}resolveComponent(e){return this.pluginManager.factory.viz(e)}getOrCreateInstance(e){const n=this.instances.get(e.id);if(n)return n;const r={id:e.id,name:e.viz.type,type:e.viz.type,messageChannels:new nc,instanceData:new xi(e.viz.conf)};return this.instances.set(e.id,r),r}}function fi(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new xi({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const rc=t=>{const{panel:e,vizManager:n,data:r,variables:i}=t,o=n.resolveComponent(e.viz.type),l=n.getOrCreateInstance(e),u={...fi(l,r,n,i),viewport:{width:e.layout.w,height:e.layout.h}},c=o.viewRender;return s.jsx(c,{context:u,instance:l,...b.omit(t,["panel","vizManager","data"])})},ic=t=>{const{vizManager:e,panel:n,data:r,variables:i}=t,o=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),u={...fi(l,r,e,i)},c=o.configRender;return s.jsx(c,{context:u,instance:l,...b.omit(t,["panel","vizManager","data"])})},gi=(t,e)=>{const n=tt.bezier(t),r=tt.bezier(e);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},on=t=>{const e=tt.bezier(t);return function(n){return e(n/100).hex()}},ac={type:"interpolation",displayName:"Red / Green",getColor:gi(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},oc={type:"interpolation",displayName:"Yellow / Blue",getColor:gi(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},lc={type:"interpolation",displayName:"Red",getColor:on(["#fff7f1","darkred"]),name:"red",category:"sequential"},uc={type:"interpolation",displayName:"Green",getColor:on(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},cc={type:"interpolation",displayName:"Blue",getColor:on(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},dc={type:"interpolation",displayName:"Orange",getColor:on(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class pc{constructor(e){A(this,"symbol");this.symbol=Symbol(e)}}function nt(t){return new pc(t)}class as{constructor(){A(this,"parent");A(this,"factoryRegistry",new Map);A(this,"instanceRegistry",new Map)}createScoped(){const e=new as;return e.parent=this,e}getRequired(e){return this.get(e)}get(e){if(this.instanceRegistry.has(e.symbol))return this.instanceRegistry.get(e.symbol);const n=this.factoryRegistry.get(e.symbol);if(n){const r=n(this);return this.instanceRegistry.set(e.symbol,r),r}if(this.parent)return this.parent.get(e)}provideFactory(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,n),this}provideValue(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(e=>{const n=b.get(e,"dispose");b.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const mi="10.44.4",hc=Object.freeze(Object.defineProperty({__proto__:null,version:mi},Symbol.toStringTag,{value:"Module"}));class xc{constructor(e){A(this,"staticColors",new Map);A(this,"interpolations",new Map);e.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(e){const n=this.encodeColor(e);e.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.staticColors.set(n,e)):e.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`,`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.interpolations.set(n,e))}decodeStaticColor(e){return this.staticColors.get(e)}encodeColor(e){return`\${${e.category}}.{${e.name}}`}decodeInterpolation(e){return this.interpolations.get(e)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class fc{constructor(){A(this,"plugins",new Map);A(this,"vizComponents",new Map);A(this,"factory",{viz:e=>{const n=this.vizComponents.get(e);if(n)return n;throw new Error(`Viz Component (${e}) not found`)}})}install(e){if(this.plugins.has(e.id))throw new Error(`Plugin (${e.id}) has been installed before`);this.plugins.set(e.id,e);for(const n of e.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class gc{constructor(){A(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n,r){var l;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(u=>u.version>e.from&&u.version<=e.to),o=b.orderBy(i,"version","asc");if(((l=b.last(o))==null?void 0:l.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return o.reduce((u,c)=>c.handler(u,r),n)}}class re extends gc{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,i)=>({version:e,...n(r,i)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),i=b.get(r,"version",0),o=this.run({from:i,to:this.VERSION},r,{panelModel:n});await e.setItem(null,o)}async needMigration({configData:e}){const n=await e.getItem(null);return b.get(n,"version",0)<this.VERSION}}const O=(t,e)=>{const[n,{setFalse:r}]=$.useBoolean(!0),[i,o]=f.useState();f.useEffect(()=>(t.getItem(e).then(u=>{o(u),r()}),t.watchItem(e,u=>{o(u)})));const l=f.useCallback(async u=>{await t.setItem(e,u),o(u)},[t,e]);return{loading:n,value:i,set:l}},ke={top:16,right:16,bottom:16,left:16},Ge=t=>Math.max(0,t-ke.left-ke.right),We=t=>Math.max(0,t-ke.top-ke.bottom),Nt=(t,e)=>({width:Ge(t),height:We(e)}),Te=({width:t,height:e,children:n})=>s.jsx(a.Box,{pt:ke.top,pr:ke.right,pb:ke.bottom,pl:ke.left,sx:{width:t,height:e,overflow:"hidden",position:"relative"},children:n});function I(t){const[e,n]=t.split(".");return{queryID:e,columnKey:n}}function mc(t){return t.includes(".")?I(t):{queryID:"",columnKey:t}}function st(t,e){var i;const{queryID:n,columnKey:r}=I(e);return n?r?((i=t[n])==null?void 0:i.map(o=>o[r]))??[]:t[n]:[]}function qt(t,e){const{queryID:n}=I(e);return n?t[n]:[]}function yc(t){return Object.values(t)[0]}function ln(t,e){const{queryID:n,columnKey:r}=I(e);return t[r]}const os={x_axis_data_key:"",y_axis_data_key:"",z_axis_data_key:"",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}};U.use([E.GridComponent,E.VisualMapComponent,E.LegendComponent,E.TooltipComponent,we.CanvasRenderer]);function bc({context:t}){const{value:e}=O(t.instanceData,"config"),n=t.data,{width:r,height:i}=t.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:c,yAxis3D:d,zAxis3D:p}=b.defaults({},e,os),h=f.useMemo(()=>qt(n,o),[n,o]),{x,y:m,z:v}=f.useMemo(()=>({x:I(o),y:I(l),z:I(u)}),[o,l,u]),{min:C,max:k}=f.useMemo(()=>{const B=b.minBy(h,se=>se[v.columnKey]),Y=b.maxBy(h,se=>se[v.columnKey]);return{min:b.get(B,v.columnKey),max:b.get(Y,v.columnKey)}},[h,v]),z={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:C,max:k,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(B=>[B[x.columnKey],B[m.columnKey],B[v.columnKey]])}]};return e?s.jsx(Te,{width:r,height:i,children:s.jsx(je,{echarts:U,option:z,style:Nt(r,i),notMerge:!0,theme:"merico-light"})}):null}const yi=f.createContext(null),ls=yi.Provider;function us(){const t=f.useContext(yi);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const Z=()=>us(),cs=()=>us(),bi=f.createContext({searchButtonProps:{}}),ds=bi.Provider;function vi(){return f.useContext(bi)}const ji=f.createContext(null),ps=ji.Provider;function wi(){const t=f.useContext(ji);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const J=()=>wi(),oe=()=>wi(),vc={inEditMode:!1},un=f.createContext(vc),Ci=f.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),hs=Ci.Provider;function Si(){const t=f.useContext(Ci);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const ut=()=>Si(),Le=()=>Si(),jc={fullScreenPanelID:"",setFullScreenPanelID:b.noop},xs=f.createContext(jc);function _i(){const t=f.useContext(xs);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const P=S.observer(f.forwardRef(({label:t,required:e,value:n,onChange:r,clearable:i=!1,sx:o,...l},u)=>{const{panel:c}=Le(),d=f.useMemo(()=>{const p=[...c.dataFieldOptions];return i&&p.unshift({label:"unset",value:"",group:""}),p},[c.dataFieldOptions]);return s.jsx(a.Select,{ref:u,label:t,data:d,value:n,onChange:r,required:e,sx:o,maxDropdownHeight:500,...l})}));function wc({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=b.defaults({},e,os),{control:i,handleSubmit:o,reset:l}=y.useForm({defaultValues:r});return f.useEffect(()=>{l(r)},[e]),e?s.jsx(a.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:o(n),children:[s.jsx(a.Text,{children:"X Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(y.Controller,{name:"x_axis_data_key",control:i,render:({field:u})=>s.jsx(P,{label:"Data Field",required:!0,...u})}),s.jsx(y.Controller,{name:"xAxis3D.name",control:i,render:({field:u})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),s.jsx(a.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(y.Controller,{name:"y_axis_data_key",control:i,render:({field:u})=>s.jsx(P,{label:"Data Field",required:!0,...u})}),s.jsx(y.Controller,{name:"yAxis3D.name",control:i,render:({field:u})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),s.jsx(a.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(y.Controller,{name:"z_axis_data_key",control:i,render:({field:u})=>s.jsx(P,{label:"Data Field",required:!0,...u})}),s.jsx(y.Controller,{name:"zAxis3D.name",control:i,render:({field:u})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),s.jsx(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(a.Button,{color:"blue",type:"submit",children:[s.jsx(_.DeviceFloppy,{size:20}),s.jsx(a.Text,{ml:"md",children:"Save"})]})})]})}):null}function Cc(t,{panelModel:e}){try{const n=e.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=c=>c&&`${n}.${c}`,{x_axis_data_key:i,y_axis_data_key:o,z_axis_data_key:l,...u}=t;return{...u,x_axis_data_key:r(i),y_axis_data_key:r(o),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class Sc extends re{constructor(){super(...arguments);A(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:i}=n;return{...n,version:2,config:Cc(i,r)}})}}const _c={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Sc,name:"bar-3d",viewRender:bc,configRender:wc,createConfig(){return{version:2,config:b.cloneDeep(os)}}};class Ce extends f.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(a.Box,{children:[s.jsx(a.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),s.jsx(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}const ye={mantissa:0,output:"number",trimMantissa:!1,average:!1};function kc({value:t,onChange:e},n){const r=u=>{e({...t,output:u})},i=u=>{const c=u===0?!1:t.trimMantissa;e({...t,mantissa:u,trimMantissa:c})},o=u=>{e({...t,trimMantissa:u.currentTarget.checked})},l=u=>{e({...t,average:u.currentTarget.checked})};return s.jsxs(a.Stack,{ref:n,children:[s.jsxs(a.Group,{grow:!0,children:[s.jsx(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:r,sx:{flexGrow:1}}),s.jsx(a.Switch,{label:s.jsxs(a.Stack,{spacing:0,children:[s.jsx(a.Text,{children:"Average"}),s.jsx(a.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:t.average,onChange:l,disabled:t.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),s.jsxs(a.Group,{grow:!0,children:[s.jsx(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:i}),s.jsx(a.Switch,{label:"Trim mantissa",checked:t.trimMantissa,onChange:o,disabled:t.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),s.jsxs(a.Stack,{spacing:0,children:[s.jsx(a.Text,{weight:"bold",children:"Preview"}),s.jsx(Ce,{children:s.jsxs(a.Group,{position:"apart",children:[s.jsxs(a.Text,{size:12,color:"gray",children:["123456789 ",s.jsx(_.ArrowRight,{size:9})," ",F(123456789).format(t)]}),s.jsxs(a.Text,{size:12,color:"gray",children:["1234 ",s.jsx(_.ArrowRight,{size:9})," ",F(1234).format(t)]}),s.jsxs(a.Text,{size:12,color:"gray",children:["0.1234 ",s.jsx(_.ArrowRight,{size:9})," ",F(.1234).format(t)]})]})})]})]})}const Ae=f.forwardRef(kc),Oe={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
55
55
  `)},ki={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Dc,configRender:Tc,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'boxplot'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"Record of 'name', 'min', 'q1', 'median', 'q3', 'max'",valueType:"object"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function Tc(t){return s.jsx(s.Fragment,{})}function Dc(t){return s.jsx(a.Text,{children:"Click chart's series"})}const Ic=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],cn=f.forwardRef(({sectionTitle:t,value:e,onChange:n},r)=>{const i=o=>l=>{const u=b.cloneDeep(e);b.set(u,o,l),n(u)};return s.jsxs(a.Stack,{spacing:0,children:[t&&s.jsx(a.Divider,{mb:-5,mt:5,variant:"dotted",label:t,labelPosition:"right",labelProps:{color:"dimmed"}}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(a.NumberInput,{label:"Max Width",hideControls:!0,value:e.width,onChange:i("width")}),s.jsx(a.Select,{label:"Overflow",data:Ic,value:e.overflow,onChange:i("overflow")}),s.jsx(a.TextInput,{label:"Ellipsis",value:e.ellipsis,disabled:!0})]})]})}),Ye=f.forwardRef(({value:t,onChange:e},n)=>{const r=o=>{e({...t,on_axis:o})},i=o=>{e({...t,in_tooltip:o})};return s.jsxs(a.Stack,{ref:n,spacing:0,children:[s.jsx(cn,{sectionTitle:"Overflow on Axis",value:t.on_axis,onChange:r}),s.jsx(cn,{sectionTitle:"Overflow in Tooltip",value:t.in_tooltip,onChange:i})]})}),ze={on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}};function Xe({overflow:t,width:e}){const n={truncate:"initial",break:"break-all",breakAll:"break-word"}[t],r=t==="truncate"?"nowrap":"initial",i={truncate:"ellipsis",break:"clip",breakAll:"clip"}[t];return`
56
56
  max-width: ${e}px;
57
57
  word-break: ${n};
@@ -440,7 +440,7 @@ Check the top-level render call using <`+M+">.")}return T}}function Yl(j,T){{if(
440
440
  `)},So=g.types.model("ViewModalConfig",{_name:g.types.literal(L.Modal),width:g.types.string,height:g.types.string,custom_modal_title:g.types.optional(pS,gr)}).views(t=>({get json(){const{_name:e,width:n,height:r,custom_modal_title:i}=t;return{_name:e,width:n,height:r,custom_modal_title:i.json}}})).actions(t=>({setWidth(e){t.width=e},setHeight(e){t.height=e}})),hS=()=>So.create({_name:L.Modal,width:"90vw",height:"90vh"}),xS=g.types.model("ViewTabsTabModel",{id:g.types.identifier,name:g.types.string,view_id:g.types.string,color:g.types.optional(g.types.string,"")}).views(t=>({get json(){const{id:e,name:n,view_id:r,color:i}=t;return{id:e,name:n,color:i,view_id:r}}})).actions(t=>({setName(e){t.name=e},setViewID(e){t.view_id=e},setColor(e){t.color=e}})),_o=g.types.model("ViewTabsConfig",{_name:g.types.literal(L.Modal),tabs:g.types.optional(g.types.array(xS),[]),variant:g.types.optional(g.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:g.types.optional(g.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:g.types.optional(g.types.boolean,!1)}).views(t=>({get json(){const{_name:e,variant:n,orientation:r,tabs:i,grow:o}=t;return{grow:o,tabs:i.map(l=>l.json),_name:e,variant:n,orientation:r}}})).actions(t=>({setVariant(e){t.variant=e},setOrientation(e){t.orientation=e},setGrow(e){t.grow=e},setTabs(e){t.tabs.length=0,t.tabs=g.cast(e)},addTab(){const e=fe.randomId(),n={id:e,name:e,view_id:""};t.tabs.push(n)},removeTab(e){t.tabs.splice(e,1)}})),fS=()=>_o.create({_name:L.Modal,tabs:[]}),gS=g.types.model({id:g.types.identifier,name:g.types.string,type:g.types.enumeration("EViewComponentType",[L.Division,L.Modal,L.Tabs]),config:g.types.union(Co,So,_o),panelIDs:g.types.optional(g.types.array(g.types.string),[])}).views(t=>({get json(){const{id:e,name:n,type:r,config:i}=t;return{id:e,name:n,type:r,config:i.json,panelIDs:t.panelIDs}}})).actions(t=>({setName(e){t.name=e},setType(e){if(t.type!==e){switch(e){case L.Division:t.config=dS();break;case L.Modal:t.config=hS();break;case L.Tabs:t.config=fS();break}t.type=e}},appendPanelID(e){t.panelIDs.push(e)},removePanelID(e){const n=t.panelIDs.filter(r=>r!==e);t.panelIDs.length=0,t.panelIDs.push(...n)}})),ko=g.types.model("DataSourceMetaModel",{id:g.types.string,type:g.types.enumeration("DataSourceType",[Ie.HTTP,Ie.MySQL,Ie.Postgresql]),key:g.types.string,config:g.types.frozen()}),mS=g.types.model("DataSourcesMetaModel",{list:g.types.optional(g.types.array(ko),[])}).views(t=>({find({type:e,key:n}){return t.list.find(r=>r.key===n&&r.type===e)},get options(){return t.list.map(e=>({value:e.key,label:e.key}))}})).actions(t=>({replace(e){t.list.length=0,t.list.push(...e)}})),yS=g.types.model({id:g.types.string,content:g.types.string,create_time:g.types.string,update_time:g.types.string,is_preset:g.types.boolean}),To=g.types.model("GlobalSQLSnippetsMeta",{list:g.types.optional(g.types.array(yS),[])}).views(t=>({find(e){return t.list.find(n=>n.id===e)},get options(){return t.list.map(e=>({value:e.id,label:e.id}))}})).actions(t=>({replace(e){t.list.length=0,t.list.push(...e)}})),mr=g.types.model("ContextMeta",{current:g.types.optional(g.types.frozen(),{})}).views(t=>({get keys(){return Object.keys(t.current)},get entries(){return Object.entries(t.current)}})).actions(t=>({replace(e){t.current=e},get(e){return t.current[e]},set(e,n){t.current[e]=n}}));function Do(t){return mr.create({current:t})}const bS=g.types.compose("ViewRenderModel",gS,g.types.model({tab:g.types.optional(g.types.string,"")})).views(t=>({get defaultTab(){if(t.type!==L.Tabs)return"";const e=t.config;return e.tabs.length>0?e.tabs[0].id:""},get tabViewID(){var n;return t.type!==L.Tabs?"":((n=t.config.tabs.find(r=>r.id===t.tab))==null?void 0:n.view_id)??""},get contentModel(){return g.getParent(t,3)},get panels(){if(t.type!==L.Tabs)return this.contentModel.panels.panelsByIDs(t.panelIDs).panels;const e=this.tabViewID;return this.contentModel.views.findByID(e).panels},get renderViewIDs(){const e=[t.id];return t.type===L.Tabs&&e.push(this.tabViewID),e}})).actions(t=>({setTab(e){t.tab=e??""},afterCreate(){g.addDisposer(t,W.reaction(()=>t.defaultTab,e=>this.setTab(e),{fireImmediately:!0,delay:0}))}})),Io=g.types.model("ViewsRenderModel",{current:g.types.optional(g.types.array(bS),[]),visibleViewIDs:g.types.array(g.types.string)}).views(t=>({get json(){return t.current.map(e=>Nn(e.json))},get idMap(){const e=new Map;return t.current.forEach(n=>{e.set(n.id,n)}),e},findByID(e){return t.current.find(n=>n.id===e)},get firstVisibleView(){const[e]=t.visibleViewIDs;return t.current.find(({id:n})=>n===e)},get visibleViews(){const e=new Set(t.visibleViewIDs);return t.current.filter(({id:n})=>e.has(n))}})).actions(t=>({appendToVisibles(e){new Set(t.visibleViewIDs.map(r=>r)).has(e)||t.visibleViewIDs.push(e)},rmVisibleViewID(e){const n=t.visibleViewIDs.findIndex(r=>r===e);n!==-1&&t.visibleViewIDs.splice(n,1)}}));function vS(t){const e=t.length>0?[t[0].id]:[];return{current:t.map(r=>{const{_name:i=r.type}=r.config;return{...r,config:{...r.config,_name:i},panelIDs:r.panelIDs}}),visibleViewIDs:e}}const Mo=H0.views(t=>({get contentModel(){return g.getRoot(t).content}})).views(t=>({get queries(){return t.contentModel.queries.findByIDSet(t.queryIDSet)},get data(){return this.queries.reduce((e,n)=>(e[n.id]=n.data,e),{})},get dataLoading(){return this.queries.some(e=>e.state==="loading")},get queryStateMessages(){const e=this.queries.filter(o=>!o.runByConditionsMet);if(e.length===0)return"";const n=new Set,r=new Set;e.forEach(o=>{const l=o.conditionNames;l.context.forEach(u=>n.add(u)),l.filters.forEach(u=>r.add(u))});const i=[];return n.size>0&&(console.log(n),i.push(`context: ${Array.from(n).join(", ")}`)),r.size>0&&i.push(`filter${r.size>1?"s":""}: ${Array.from(r).join(", ")}`),i.length===2&&i.splice(1,0,"and"),i.unshift("Waiting for"),i.join(" ")},get queryErrors(){return this.queries.map(e=>e.error).filter(e=>!!e)},get canRenderViz(){return this.queryErrors.length===0&&this.queryStateMessages===""&&!this.dataLoading}})).actions(t=>({refreshData(){t.queries.forEach(e=>e.fetchData(!0))},downloadData(){g.getRoot(t).content.queries.downloadDataByQueryIDs(t.queryIDs)}}));function jS(t){return{id:t,name:t,layout:{x:0,y:1/0,w:18,h:300},title:{show:!0},description:"<p></p>",queryIDs:[],viz:{type:sr.name,conf:sr.createConfig()},style:{border:{enabled:!0}}}}const Ao=g.types.model("PanelsRenderModel",{list:g.types.optional(g.types.array(Mo),[])}).views(t=>({get json(){return t.list.map(e=>e.json)},findByID(e){return t.list.find(n=>n.id===e)},get idMap(){const e=new Map;return t.list.forEach(n=>{e.set(n.id,n)}),e}})).views(t=>({panelsByIDs(e){const n=[];e.forEach(i=>{const o=t.idMap.get(i);o?n.push(o):console.warn(`Panel is not found, id:${i}`)});const r=n.map(i=>({...i.layout.json,i:i.id}));return{panels:n,layouts:r}}}));function zo(t,e){if(t===void 0)return t;if(e._name==="date-range")try{const[...n]=t;return n.map(r=>r===null?r:V.tz(r,"UTC").format(e.inputFormat)??r)}catch(n){return console.error(n),t}return t}function wS(t){return t.reduce((e,n)=>(e[n.key]=zo(n.config.default_value,n.config),e),{})}const Eo=g.types.model("FiltersRenderModel",{current:g.types.optional(g.types.array(wo),[]),values:g.types.optional(g.types.frozen(),{})}).views(t=>({get json(){return t.current.map(e=>e.json)},get firstID(){if(t.current.length!==0)return t.current[0].id},findByID(e){return t.current.find(n=>n.id===e)},get inOrder(){return b.sortBy(t.current,"order")},get empty(){return t.current.length===0},visibleInView(e){return b.sortBy(t.current.filter(n=>n.visibleInViewsIDSet.has(e)),"order")},get firstFilterValueKey(){return Object.keys(t.values)[0]??""},get keyLabelMap(){return t.current.reduce((e,n)=>(e[n.key]=n.label,e),{})},getSelectOption(e){const n=this.findByID(e);if(!n||!("getSelectOption"in n.config))return null;const r=t.values[n.key];return n.config.getSelectOption(r)}})).actions(t=>({setValues(e){t.values=e},setValueByKey(e,n){t.values={...t.values,[e]:n}},getValueByKey(e){return t.values[e]}}));function Po(t){return{current:t,values:wS(t)}}const CS=new au.AsyncParser({withBOM:!0});async function Lo(t){return!Array.isArray(t)||t.length===0?"":await CS.parse(t).promise()}async function SS(t,e){const n=await Lo(e),r=new Blob([n],{type:"text/csv"});Hn.saveAs(r,`${t}.csv`)}function Oo(t){const e=new ou;t.forEach(({id:n,data:r})=>{e.file(`${n}.csv`,Lo(r))}),e.generateAsync({type:"blob"}).then(n=>{Hn.saveAs(n,"dashboard_data.zip")})}function Bo(t,e){const n=new Blob([e],{type:"application/json"});Hn.saveAs(n,`${t}.json`)}function _S(t,e){return new Function(`return ${t}`)()(e,xt)}function kS(t,e,n){return _S(t,{context:e,filters:n})}function TS(t,e){try{return new Function(`return ${t.config.processing.pre}`)()(e,xt)}catch(n){return console.error(n),e}}function DS(t,e){return new Function(`return ${t.config.processing.post}`)()(e,xt)}function IS(t,e,n){return t?new Function(`return ${t}`)()(e,xt,n):e}const MS=eS.views(t=>({get conditionOptions(){if(!g.isAlive(t))return[];const e=g.getRoot(t).content,{context:n}=e.payloadForSQL,r=Object.keys(n).map(o=>({group:"Context",label:o,value:`context.${o}`,description:void 0})),i=e.filters.keyLabelOptions.map(o=>({group:"Filters",label:o.label,value:`filters.${o.value}`,description:o.value}));return[...r,...i]},get unmetRunByConditions(){if(!g.isAlive(t))return[];const{run_by:e}=t;if(e.length===0)return[];const n=g.getRoot(t).content.payloadForSQL;return e.filter(r=>{const i=b.get(n,r);return Array.isArray(i)?i.length===0:typeof i=="number"?Number.isNaN(i):!i})}})).views(t=>({get reQueryKey(){const{react_to:e=[]}=t;if(e.length===0)return"";const n=g.getRoot(t).content.payloadForSQL,r=[...e].reduce((i,o)=>(i[o]=b.get(n,o),i),{});return JSON.stringify(r)},get runByConditionsMet(){return t.unmetRunByConditions.length===0},get conditionNames(){if(t.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:e}=g.getRoot(t).content.filters,n=t.unmetRunByConditions.filter(i=>i.startsWith("context.")).map(i=>i.split("context.")[0]),r=t.unmetRunByConditions.filter(i=>i.startsWith("filters.")).map(i=>b.get({filters:e},i)).filter(i=>!!i);return{context:n,filters:r}},get queries(){return g.getParent(t,2)},get inUse(){return this.queries.isQueryInUse(t.id)}})),AS=g.types.compose("QueryRenderModel",MS,g.types.model({state:g.types.optional(g.types.enumeration(["idle","loading","error"]),"idle"),data:g.types.optional(g.types.frozen([]),[]),error:g.types.frozen()})).views(t=>({get rootModel(){return g.getRoot(t)},get contentModel(){return this.rootModel.content},get payload(){return this.contentModel.payloadForSQL},get formattedSQL(){return ns(t.sql,this.payload)},get typedAsSQL(){return[Ie.Postgresql,Ie.MySQL].includes(t.type)},get typedAsHTTP(){return[Ie.HTTP].includes(t.type)},get datasource(){const{key:e,type:n}=t;return this.rootModel.datasources.find({type:n,key:e})},get httpConfigString(){const{context:e,filters:n}=this.payload,{name:r,pre_process:i}=t.json,o=kS(i,e,n);return console.groupCollapsed(`Request config for: ${r}`),console.log(o),console.groupEnd(),JSON.stringify(o)},get additionalQueryInfo(){return this.contentModel.getAdditionalQueryInfo(t.id)}})).views(t=>({get stateMessage(){if(t.state!=="idle")return"";if(!t.runByConditionsMet){const{context:e,filters:n}=t.conditionNames;if(e.length===0&&n.length===0)return"Waiting";const r=[];return e.length>0&&r.push(`context: ${e.join(", ")}`),n.length>0&&r.push(`filter${n.length>1?"s":""}: ${n.join(", ")}`),r.length===2&&r.splice(1,0,"and"),r.unshift("Waiting for"),r.join(" ")}return t.data.length>0?"":"Empty Data"}})).volatile(()=>({controller:new AbortController})).actions(t=>({runSQL:g.flow(function*(){var e;if(t.valid&&((e=t.controller)==null||e.abort(),!!t.runByConditionsMet)){t.controller=new AbortController,t.state="loading";try{const n=t.payload;t.data=yield*g.toGenerator(ec({payload:n,name:t.name,query:t.json,additionals:t.additionalQueryInfo},t.controller.signal)),t.state="idle",t.error=null}catch(n){if(!et.isCancel(n)){t.data=[];const r=b.get(n,"message","unkown error");t.error=b.get(n,"response.data.detail.message",r),t.state="error"}}}}),runHTTP:g.flow(function*(){var e;if(!(!t.valid||!t.datasource)&&((e=t.controller)==null||e.abort(),!!t.runByConditionsMet)){t.controller=new AbortController,t.state="loading";try{const{type:n,key:r,post_process:i}=t.json;let o=JSON.parse(t.httpConfigString);o=TS(t.datasource,o);const l=yield*g.toGenerator(tc({type:n,key:r,configString:JSON.stringify(o),name:t.name,additionals:t.additionalQueryInfo},t.controller.signal)),u=DS(t.datasource,l),c=IS(i,u,t.contentModel.dashboardState);t.data=c,t.state="idle",t.error=null}catch(n){if(console.error(n),!et.isCancel(n)){t.data=[];const r=b.get(n,"message","unkown error");t.error=b.get(n,"response.data.detail.message",r),t.state="error"}}}})})).actions(t=>({fetchData:e=>{if(!t.inUse&&!e){console.debug(`Skipping query[${t.name}]`);return}return t.typedAsHTTP?t.runHTTP():t.runSQL()},beforeDestroy(){var e;(e=t.controller)==null||e.abort()}})).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>{var n;return t.typedAsHTTP?`${t.inUse}--${t.id}--${t.key}--${t.reQueryKey}--${(n=t.datasource)==null?void 0:n.id}`:[t.inUse,t.id,t.key,t.formattedSQL,t.pre_process,t.post_process].join("--")},()=>t.fetchData(!1),{fireImmediately:!0,delay:0}))}})),$o=g.types.model("QueriesRenderModel",{current:g.types.optional(g.types.array(AS),[])}).views(t=>({get firstID(){if(t.current.length!==0)return t.current[0].id},findByID(e){return t.current.find(n=>n.id===e)},findByIDSet(e){return t.current.filter(n=>e.has(n.id))},get json(){return t.current.filter(e=>e.id&&e.key).map(e=>e.json)},get contentModel(){return g.getParent(t,1)},get visibleQueryIDSet(){const{views:e,filters:n}=this.contentModel,r=[];e.visibleViews.forEach(l=>{l.panels.forEach(u=>{r.push(...u.queryIDs)})});const i=b.uniq(e.visibleViews.map(l=>l.renderViewIDs).flat());n.current.forEach(l=>{const u=b.get(l,"config.options_query_id");if(!u)return;i.some(d=>l.visibleInViewsIDSet.has(d))&&r.push(u)});const o=new Set(r);return console.debug("QueryIDs:",o),o},isQueryInUse(e){return this.visibleQueryIDSet.has(e)}})).actions(t=>({downloadAllData(){const e=t.current.map(({name:n,data:r})=>({id:n,data:r}));Oo(e)},downloadDataByQueryIDs(e){const n=new Set(e),r=t.current.filter(i=>n.has(i.id)).map(({name:i,data:o})=>({id:i,data:o}));Oo(r)},downloadDataByQueryID(e){const n=t.findByID(e);if(!n){console.log("[downloadDataByQueryID] query not found");return}const{name:r,data:i}=n;SS(r,i)},refetchDataByQueryID(e){const n=t.findByID(e);if(!n){console.error(new Error(`[downloadDataByQueryID] query by ID[${e}] not found`));return}return n.fetchData(!0)}}));function zS(t){return{current:t}}const ES=tS.views(t=>({isADuplicatedKey(e){return!e||e===t.key?!1:!!g.getParent(t,2).findByKey(e)}})),Vo=g.types.model("SQLSnippetsRenderModel",{current:g.types.optional(g.types.array(ES),[])}).views(t=>({get json(){return t.current.map(e=>e.json)},get record(){return t.current.reduce((e,n)=>(e[n.key]=n.value,e),{})},get firstKey(){if(t.current.length!==0)return t.current[0].key},findByKey(e){return t.current.find(n=>n.key===e)}}));function PS(t){return{current:t}}function qn(t,e,n,r){return t.reduce((i,o)=>{try{i[o[e]]=ts(o[n],r)}catch(l){i[o[e]]=l.message}return i},{})}class LS{constructor(e){A(this,"origin");A(this,"copy");this.origin=e,this.copy=g.clone(e),W.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!b.isEqual(g.getSnapshot(this.origin),g.getSnapshot(this.copy))}commit(){g.applySnapshot(this.origin,g.getSnapshot(this.copy))}update(e){g.applySnapshot(this.copy,e)}}const OS=t=>new LS(t),BS=S.observer(({view:t})=>{const e=Z(),n=J(),r=Me.useModals(),{panel:i,downloadPanelScreenshot:o}=Le(),{id:l}=i,{viewPanelInFullScreen:u,inFullScreen:c}=f.useContext(Vn),d=()=>{n.duplicatePanelByID(l,t.id)},p=()=>{e.editor.open(["_VIEWS_",t.id,"_PANELS_",l])},h=()=>r.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>n.removePanelByID(l,t.id),confirmProps:{color:"red"},zIndex:320}),x=f.useCallback(()=>{u(l)},[l,u]),m=!c&&t.type!==L.Modal;return s.jsx(s.Fragment,{children:s.jsx(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:s.jsxs(a.Menu,{withinPortal:!0,children:[s.jsx(a.Menu.Target,{children:s.jsx(a.Box,{className:"panel-dropdown-target",sx:{width:"100%"}})}),s.jsxs(a.Menu.Dropdown,{children:[s.jsx(a.Menu.Item,{onClick:i.refreshData,icon:s.jsx(_.Refresh,{size:14}),children:"Refresh"}),s.jsx(a.Menu.Item,{onClick:i.downloadData,icon:s.jsx(_.Download,{size:14}),children:"Download Data"}),s.jsx(a.Menu.Item,{onClick:o,icon:s.jsx(D.IconCamera,{size:14}),children:"Screenshot"}),m&&s.jsx(a.Menu.Item,{onClick:x,icon:s.jsx(_.ArrowsMaximize,{size:14}),disabled:!0,children:"Full Screen"}),s.jsx(a.Divider,{label:"Edit",labelPosition:"center"}),s.jsx(a.Menu.Item,{onClick:p,icon:s.jsx(_.Settings,{size:14}),children:"Settings"}),s.jsx(a.Menu.Item,{onClick:d,icon:s.jsx(_.Copy,{size:14}),children:"Duplicate"}),s.jsx(a.Menu.Item,{color:"red",onClick:h,icon:s.jsx(_.Trash,{size:14}),children:"Delete"})]})]})})})});function $S(t){return t?["<p><br></p>","<p></p>"].includes(t):!0}const yr=S.observer(()=>{const[t,e]=f.useState(!1),{panel:n}=ut();return $S(n.description)?null:s.jsxs(s.Fragment,{children:[s.jsx(a.Modal,{opened:t,onClose:()=>e(!1),title:n.name,withCloseButton:!1,withinPortal:!0,zIndex:310,children:s.jsx(Sn,{value:n.description,styles:{root:{border:"none"},content:{padding:0}}})}),s.jsx(a.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>e(r=>!r),sx:{verticalAlign:"baseline",cursor:"pointer"},children:s.jsx(_.InfoCircle,{size:20})})})]})}),bD="",VS=S.observer(function(){const{panel:e}=ut(),{name:n,title:r}=e;return r.show?s.jsx(a.Group,{grow:!0,position:"center",className:"panel-title-wrapper",sx:{flexGrow:1},children:s.jsx(a.Text,{align:"center",lineClamp:1,className:"panel-title-text",children:n})}):null});function NS(t){const e=f.useRef(null);return{ref:e,downloadPanelScreenshot:()=>{const r=e.current;if(!r)return;const i=r.offsetWidth*2,o=r.offsetHeight*2;ii.toBlob(e.current,{bgcolor:"white",width:i,height:o,style:{border:"none",borderRadius:0,transformOrigin:"0 0",transform:"scale(2)"}}).then(l=>{window.saveAs(l,`${t.title?t.title:t.viz.type}.png`)})}}}var No=(t=>(t.migrated="migrated",t.nothingToMigrate="nothingToMigrate",t.checkFailed="checkFailed",t.migrationFailed="migrationFailed",t))(No||{}),Fn=(t=>(t.notStarted="notStarted",t.inProgress="inProgress",t.done="done",t))(Fn||{});class qS{constructor(e){A(this,"vizInstance");A(this,"operationManager");A(this,"triggerManager");A(this,"vizManager");A(this,"runningMigration");A(this,"panelModel");A(this,"status","notStarted");this.panelModel=e.getRequired(le.instanceScope.panelModel),this.vizInstance=e.getRequired(le.instanceScope.vizInstance),this.operationManager=e.getRequired(le.instanceScope.operationManager),this.triggerManager=e.getRequired(le.instanceScope.triggerManager),this.vizManager=e.getRequired(le.vizManager)}async createMigrationTask(){const e=[];try{await this.instanceNeedMigration()&&e.push(()=>this.runInstanceMigration()),await this.interactionNeedMigration()&&e.push(()=>this.runInteractionMigration())}catch(n){return console.warn("check migration failed",n),"checkFailed"}if(e.length===0)return"nothingToMigrate";try{return await Promise.all(e.map(n=>n())),"migrated"}catch(n){return console.warn("migration failed",n),"migrationFailed"}}async runMigration(){return this.runningMigration||(this.status="inProgress",this.runningMigration=this.createMigrationTask().then(e=>(this.status="done",e))),this.runningMigration}async runInteractionMigration(){await this.operationManager.runMigration(),await this.triggerManager.runMigration()}async runInstanceMigration(){const e=this.vizManager.resolveComponent(this.vizInstance.type),n={configData:this.vizInstance.instanceData,panelModel:this.panelModel};await e.migrator.migrate(n)}async instanceNeedMigration(){const e=this.vizManager.resolveComponent(this.vizInstance.type),n={configData:this.vizInstance.instanceData};return e.migrator.needMigration(n)}async interactionNeedMigration(){return await this.operationManager.needMigration()||await this.triggerManager.needMigration()}}function qo(t){const{panel:e}=ut();return f.useCallback(n=>{const r=n.getRequired(le.vizManager),i=r.resolveComponent(t.viz.type);return n.createScoped().provideFactory(le.instanceScope.vizInstance,()=>r.getOrCreateInstance(t)).provideFactory(le.instanceScope.interactionManager,o=>{const l=o.getRequired(le.instanceScope.vizInstance);return new ms(l,i,dn)}).provideFactory(le.instanceScope.operationManager,o=>o.getRequired(le.instanceScope.interactionManager).operationManager).provideFactory(le.instanceScope.triggerManager,o=>o.getRequired(le.instanceScope.interactionManager).triggerManager).provideValue(le.instanceScope.panelModel,e).provideFactory(le.instanceScope.migrator,o=>new qS(o))},[t.viz.type,t.viz.conf])}function Fo(t){const[e,n]=f.useState(!1),r=oo().getRequired(le.instanceScope.migrator);return $.useAsyncEffect(async()=>{const i=r.status===Fn.notStarted;n(r.status===Fn.done),r.status===Fn.notStarted&&r.runMigration().then(o=>{o===No.migrated&&i&&(t==null||t())}).finally(()=>{n(!0)})},[r]),e}function Go(t,e){const n=oo().getRequired(le.instanceScope.vizInstance);return f.useEffect(()=>(n.instanceData.setItem(null,e.viz.conf),n.instanceData.watchItem(null,r=>{t(r)})),[t,e.viz.type]),n}function FS({setVizConf:t,...e}){const{panel:n}=e,r=Go(t,n),i=Fo(()=>{sn.showNotification({title:`${n.name} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return $.useAsyncEffect(async()=>{await r.instanceData.setItem(null,n.viz.conf)},[r,n.viz.type]),i?s.jsx(ic,{...e}):s.jsx(a.Text,{children:"Checking update..."})}function GS(t){const{panel:e,setVizConf:n}=t;Go(n,e);const{inEditMode:r}=f.useContext(un);return Fo(()=>{r&&sn.showNotification({title:`${e.name} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?s.jsx(rc,{...t}):s.jsx(a.Text,{children:"Checking update"})}const vD="";function WS(t,e){const{vizManager:n}=f.useContext(He),{panel:{viz:r,title:i,id:o,name:l,description:u,queryIDs:c,variables:d}}=ut(),p={id:o,name:l,title:i,description:u,queryIDs:c,viz:r,layout:e},h=qo(p);try{return n.resolveComponent(r.type),s.jsx($n,{configure:h,children:s.jsx(GS,{setVizConf:r.setConf,panel:p,data:t,variables:d,vizManager:n})})}catch(x){return console.info(b.get(x,"message")),null}}const Wo=S.observer(function({data:e}){const{ref:n,width:r,height:i}=fe.useElementSize(),o=WS(e,{w:r,h:i}),l=r>0&&i>0;return s.jsx("div",{className:"viz-root",ref:n,children:s.jsx(a.Box,{sx:{width:r,height:i,overflow:"hidden"},children:l&&s.jsx(Ce,{children:o})})})}),Ro=S.observer(({panel:t})=>s.jsxs(a.Stack,{children:[t.queryErrors.map((e,n)=>s.jsx(a.Text,{color:"red",size:"sm",align:"center",sx:{fontFamily:"monospace"},children:e},`${n}-${e}`)),s.jsx(a.Text,{color:"gray",align:"center",size:"sm",children:t.queryStateMessages})]})),br=S.observer(({panel:t})=>s.jsxs(a.Flex,{className:"panel-viz-section",direction:"column",sx:{position:"relative",width:"100%"},children:[s.jsx(a.LoadingOverlay,{visible:t.dataLoading,exitTransitionDuration:0}),!t.canRenderViz&&s.jsx(Ro,{panel:t}),t.canRenderViz&&s.jsx(Wo,{data:t.data})]})),RS={border:"1px solid #e9ecef"},Qo=S.observer(({panel:t,panelStyle:e,dropdownContent:n})=>{const{ref:r,downloadPanelScreenshot:i}=NS(t);return t.title.show,s.jsx(hs,{value:{panel:t,data:t.data,loading:t.dataLoading,errors:t.queryErrors,downloadPanelScreenshot:i},children:s.jsxs(a.Box,{className:`panel-root ${t.title.show?"panel-root--show-title":""}`,ref:r,p:0,sx:{...RS,...e},children:[s.jsx(a.Box,{className:"panel-description-popover-wrapper",children:s.jsx(yr,{})}),n,s.jsx(VS,{}),s.jsx(br,{panel:t})]})})}),QS={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function US(t){return t.style.border.enabled?{}:QS}const Uo=S.observer(function({panel:e,view:n}){const r=US(e);return s.jsx(Qo,{panel:e,panelStyle:r,dropdownContent:s.jsx(BS,{view:n})})});function KS(t){return!["richText","button"].includes(t)}const YS=S.observer(({view:t})=>{const{panel:e,downloadPanelScreenshot:n}=ut(),{id:r}=e,{viewPanelInFullScreen:i,inFullScreen:o}=f.useContext(Vn),l=f.useCallback(()=>{i(r)},[r,i]),u=!o&&t.type!==L.Modal;return KS(e.viz.type)?s.jsx(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:s.jsxs(a.Menu,{withinPortal:!0,children:[s.jsx(a.Menu.Target,{children:s.jsx(a.Box,{className:"panel-dropdown-target"})}),s.jsxs(a.Menu.Dropdown,{children:[s.jsx(a.Menu.Item,{onClick:e.refreshData,icon:s.jsx(_.Refresh,{size:14}),children:"Refresh"}),s.jsx(a.Menu.Item,{onClick:e.downloadData,icon:s.jsx(_.Download,{size:14}),children:"Download Data"}),s.jsx(a.Menu.Item,{onClick:n,icon:s.jsx(D.IconCamera,{size:14}),children:"Screenshot"}),u&&s.jsx(a.Menu.Item,{onClick:l,icon:s.jsx(_.ArrowsMaximize,{size:14}),children:"Full Screen"})]})]})}):null});function XS(t){return t.style.border.enabled?{}:{border:"1px dashed transparent"}}const vr=S.observer(({panel:t,view:e})=>{const n=XS(t);return s.jsx(Qo,{panel:t,panelStyle:n,dropdownContent:s.jsx(YS,{view:e})})}),JS={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},Ko=S.observer(function({view:e,panel:n,exitFullScreen:r}){return s.jsx(a.Modal,{opened:!0,fullScreen:!0,onClose:r,title:s.jsx(a.Button,{color:"blue",size:"xs",onClick:r,leftIcon:s.jsx(_.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:JS,children:s.jsx(a.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:s.jsx(vr,{view:e,panel:n})})})});function Yo(t,e,n){const{panels:r}=oe(),i=t.id==="Main",[o,l]=f.useState(()=>i&&r.findByID(e)?e:null),u=f.useCallback(h=>{l(h),i&&n(h)},[i,n]),c=f.useCallback(()=>{l(null),i&&n("")},[i,n]),d=o?r.findByID(o):null;return{viewPanelInFullScreen:u,exitFullScreen:c,inFullScreen:!!d,fullScreenPanel:d}}const jD="",ZS=f.forwardRef(({h:t},e)=>s.jsx(a.ActionIcon,{ref:e,className:"react-grid-customDragHandle",sx:{userSelect:"none",cursor:"grab",position:"absolute",top:5,right:t>38?5:20,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",children:s.jsx(_.ArrowsMove,{size:16})})),HS=f.forwardRef(({handleAxis:t,...e},n)=>s.jsx(a.ActionIcon,{ref:n,className:"react-grid-customResizeHandle",sx:{userSelect:"none",cursor:"nwse-resize",position:"absolute",bottom:0,right:0,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",...e,children:s.jsx(_.ChevronDownRight,{size:16})})),e1=rn.WidthProvider(rn),t1=S.observer(({view:t,className:e="layout"})=>{const n=oe(),{panels:r,layouts:i}=n.panels.panelsByIDs(t.panelIDs),o=f.useCallback(u=>{u.forEach(({i:c,...d})=>{const p=n.panels.findByID(c);p&&p.layout.set(d)})},[n]),l=(u,c,d,p)=>{d.h<30&&(d.h=30,p.h=30),d.w<4&&(d.w=4,p.w=4)};return s.jsx(e1,{onLayoutChange:o,className:`dashboard-layout ${e}`,rowHeight:1,cols:36,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,layout:i,draggableHandle:".react-grid-customDragHandle",resizeHandle:s.jsx(HS,{}),onResize:l,children:r.map((u,c)=>s.jsxs("div",{"data-grid":{...u.layout},className:"panel-grid-item",children:[s.jsx(ZS,{h:u.layout.h}),s.jsx(Uo,{view:t,panel:u})]},u.id))})}),n1=rn.WidthProvider(rn),s1=S.observer(function({view:e,className:n="layout"}){const{panels:r,layouts:i}=oe().panels.panelsByIDs(e.panelIDs);return s.jsx(n1,{className:`dashboard-layout ${n}`,cols:36,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:i,children:r.map(o=>s.jsx("div",{"data-grid":{...o.layout},className:"panel-grid-item",children:s.jsx(vr,{view:e,panel:o})},o.id))})});function jr(t){const e=f.useRef(null);return{ref:e,downloadScreenshot:()=>{var l;const r=(l=e.current)==null?void 0:l.querySelector(".react-grid-layout");if(!r)return;const i=r.offsetWidth*2+10,o=r.offsetHeight*2+10;ii.toBlob(r,{bgcolor:"white",width:i,height:o,style:{transformOrigin:"0 0",transform:"scale(2)"}}).then(u=>{window.saveAs(u,`${t.name}.png`)})}}}const r1=S.observer(({downloadScreenShot:t})=>{const[e,{setTrue:n,setFalse:r}]=$.useBoolean(!1),i=cs(),o=oe(),l=()=>{const u=JSON.stringify(o.json,null,2),c=`${i.name}__${o.name}`;Bo(c,u)};return s.jsxs(a.Menu,{shadow:"md",width:200,trigger:"hover",openDelay:200,closeDelay:400,withinPortal:!0,position:"bottom-end",children:[s.jsx(a.Menu.Target,{children:s.jsx(a.Affix,{position:{bottom:"20px",right:"10px"},zIndex:1,children:s.jsx(a.ActionIcon,{size:"md",variant:"gradient",gradient:{from:"indigo",to:"cyan"},onMouseEnter:n,onMouseLeave:r,sx:{opacity:e?1:.6,transform:`translateX(${e?0:"2px"})`,transition:"all ease 300ms",borderRadius:"50%"},children:s.jsx(D.IconShare3,{size:"1rem"})})})}),s.jsxs(a.Menu.Dropdown,{children:[s.jsx(a.Menu.Item,{icon:s.jsx(D.IconCamera,{size:14}),onClick:t,children:"Screenshot"}),s.jsx(a.Menu.Divider,{}),s.jsx(a.Menu.Item,{icon:s.jsx(D.IconDownload,{size:14}),onClick:o.queries.downloadAllData,children:"Download Data"}),s.jsx(a.Menu.Item,{icon:s.jsx(D.IconCode,{size:14}),onClick:l,children:"Download Schema"})]})]})}),Xo=S.observer(({children:t,view:e,sx:n={}})=>{const{ref:r,downloadScreenshot:i}=jr(e);return s.jsxs(s.Fragment,{children:[s.jsx(a.Box,{ref:r,sx:n,children:t}),s.jsx(r1,{downloadScreenShot:i})]})}),Jo=S.observer(({downloadScreenshot:t})=>s.jsx(a.ActionIcon,{className:"download-screenshot-button",color:"blue",onClick:t,children:s.jsx(D.IconCamera,{size:14})})),i1=S.observer(({children:t,view:e})=>{const n=oe(),r=e.config,i=n.views.visibleViewIDs.includes(e.id),o=()=>n.views.rmVisibleViewID(e.id),{ref:l,downloadScreenshot:u}=jr(e);return s.jsx(a.Modal,{size:r.width,centered:!0,opened:i,onClose:o,withCloseButton:!1,title:s.jsxs(a.Group,{position:"apart",px:"1rem",h:"48px",children:[s.jsx(a.Box,{children:r.custom_modal_title.value}),s.jsx(Jo,{downloadScreenshot:u})]}),trapFocus:!0,onDragStart:c=>{c.stopPropagation()},styles:{root:{position:"fixed",zIndex:200,inset:0},overlay:{zIndex:"unset"},inner:{zIndex:"unset",padding:"0 !important"},content:{border:"1px solid #efefef",maxHeight:"unset !important",overflow:"hidden"},body:{maxHeight:r.height,overflow:"auto",position:"relative"},header:{padding:0},title:{flexGrow:1}},transitionProps:{duration:0},children:s.jsx(a.Box,{ref:l,children:t})})}),a1=t=>t.color?{"&[data-active], &[data-active]:hover":{borderColor:t.color?t.color:"..."}}:{},o1=S.observer(({view:t})=>{const e=oe(),n=t.config;return s.jsxs(a.Tabs,{className:"render-view-tabs",variant:n.variant,orientation:n.orientation,value:t.tab,onTabChange:t.setTab,styles:{root:{height:"100%",overflow:n.orientation==="horizontal"?"hidden":"auto"},panel:{padding:n.orientation==="horizontal"?"8px 0px 8px":"0",height:"100%",overflow:"auto"}},keepMounted:!1,children:[s.jsx(a.Tabs.List,{grow:n.grow,children:n.tabs.map(r=>s.jsx(a.Tabs.Tab,{value:r.id,sx:a1(r),disabled:!r.view_id,children:r.name??r.id},r.id))}),n.tabs.map(r=>{const i=e.views.findByID(r.view_id);return i?s.jsx(a.Tabs.Panel,{value:r.id,children:s.jsx(Gn,{view:i})},r.id):null})]})}),l1=S.observer(({view:t,children:e})=>{switch(t.type){case L.Modal:return s.jsx(i1,{view:t,children:e});case L.Tabs:return s.jsx(o1,{view:t});case L.Division:default:return s.jsx(Xo,{view:t,children:e})}}),u1=S.observer(({children:t,view:e})=>s.jsx(Xo,{sx:{paddingTop:"10px",paddingBottom:"100px"},view:e,children:t}));function Zo(t){return t.replace(/(vw|vh)/,"%")}const c1=S.observer(({children:t,view:e})=>{const n=e.config,{width:r,height:i}=f.useMemo(()=>({width:Zo(n.width),height:Zo(n.height)}),[n.width,n.height]),{ref:o,downloadScreenshot:l}=jr(e);return s.jsx(a.Box,{sx:{height:"100%","> div:not(.mantine-Modal-root)":{height:"100%"}},children:s.jsx(a.Modal,{size:n.width,opened:!0,onClose:b.noop,withCloseButton:!1,title:s.jsxs(a.Group,{position:"apart",px:"1rem",h:"48px",children:[s.jsx(a.Box,{children:n.custom_modal_title.value}),s.jsx(Jo,{downloadScreenshot:l})]}),trapFocus:!0,onDragStart:u=>{u.stopPropagation()},styles:{root:{position:"relative",height:"100%"},overlay:{position:"absolute !important"},inner:{position:"relative",top:"50%",left:"50%",right:"unset",bottom:"unset",transform:"translate(-50%, -50%)",padding:"0 !important",width:r,height:i,maxHeight:i},content:{border:"1px solid #efefef",height:"100%"},body:{maxHeight:"calc(100% - 48px)",overflow:"auto"},header:{padding:0},title:{flexGrow:1}},withinPortal:!1,transitionProps:{duration:0},children:s.jsx(a.Box,{ref:o,children:t})})})}),d1=({variant:t,orientation:e})=>{const n={root:{height:"100%",overflow:"hidden"},tab:{},panel:{padding:"16px"}};return t==="pills"&&e==="horizontal"&&(n.tab.paddingTop="6px",n.tab.paddingBottom="6px"),e==="vertical"&&(n.tab["&.add-a-tab"]={paddingTop:"1px",paddingBottom:"1px"},n.tab["&.add-a-tab .mantine-Tabs-tabLabel"]={marginLeft:"auto",marginRight:"auto"}),n},p1=t=>t.color?{"&[data-active], &[data-active]:hover":{borderColor:t.color?t.color:"..."}}:{},h1=S.observer(({view:t})=>{const e=Me.useModals(),n=J(),r=f.useMemo(()=>n.views.options.filter(u=>u.type===L.Division),[t.id,n.views.options]),i=t.config,o=u=>e.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{i.removeTab(u)},confirmProps:{color:"red"},zIndex:320}),l=i.tabs.length===0;return s.jsxs(a.Tabs,{className:"preview-view-tabs",variant:i.variant,orientation:i.orientation,value:t.tab,onTabChange:t.setTab,styles:d1(i),children:[s.jsxs(a.Tabs.List,{grow:i.grow,children:[i.tabs.map(u=>s.jsx(a.Tabs.Tab,{value:u.id,sx:p1(u),children:u.name??u.id},u.id)),s.jsx(a.Tabs.Tab,{onClick:i.addTab,value:"add",className:"add-a-tab",children:s.jsx(_.Plus,{size:18,color:"#228be6"})})]}),i.tabs.map((u,c)=>{const d=n.views.findByID(u.view_id);return s.jsxs(a.Tabs.Panel,{value:u.id,sx:{position:"relative"},children:[s.jsxs(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:200},children:[s.jsx(a.Overlay,{opacity:.8,color:"#FFF",blur:10,zIndex:100}),s.jsxs(a.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[s.jsx(a.TextInput,{label:"Tab Name",value:u.name,onChange:p=>u.setName(p.currentTarget.value)}),s.jsx(a.Select,{label:"View",value:u.view_id,onChange:u.setViewID,data:r}),s.jsx(a.ColorInput,{label:"Color",value:u.color,onChange:u.setColor,disabled:i.variant!=="default"}),d&&s.jsxs(a.Button,{mt:20,variant:"gradient",leftIcon:s.jsx(D.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>n.views.setIDOfVIE(d.id),children:["Swith to View: ",d.name]}),s.jsx(a.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>o(c),disabled:l,leftIcon:s.jsx(D.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),d&&s.jsx(Gn,{view:d})]},u.id)})]})}),x1=S.observer(({view:t,children:e})=>{switch(t.type){case L.Modal:return s.jsx(c1,{view:t,children:e});case L.Tabs:return s.jsx(h1,{view:t});case L.Division:default:return s.jsx(u1,{view:t,children:e})}}),Ho=S.observer(function({view:e}){return s.jsx(Vn.Provider,{value:{viewPanelInFullScreen:b.noop,inFullScreen:!1},children:s.jsx(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:s.jsx(x1,{view:e,children:s.jsxs(a.Box,{sx:{position:"relative"},children:[s.jsx(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:s.jsx(co,{view:e})}),s.jsx(t1,{view:e})]})})})})}),Gn=S.observer(function({view:e}){const{fullScreenPanelID:n,setFullScreenPanelID:r}=_i(),{viewPanelInFullScreen:i,exitFullScreen:o,inFullScreen:l,fullScreenPanel:u}=Yo(e,n,r);return s.jsx(Vn.Provider,{value:{viewPanelInFullScreen:i,inFullScreen:l},children:s.jsxs(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,sx:{height:e.type===L.Modal?"0 !important":"100%"},children:[l&&s.jsx(Ko,{view:e,panel:u,exitFullScreen:o}),s.jsx(l1,{view:e,children:s.jsxs(a.Box,{sx:{position:"relative"},children:[!l&&s.jsx(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:s.jsx(co,{view:e})}),!l&&s.jsx(s1,{view:e})]})})]})})});var el=(t=>(t.Use="use",t.Edit="edit",t))(el||{});const f1={[L.Division]:"Division",[L.Tabs]:"Tabs",[L.Modal]:"Modal"},tl={[L.Division]:"rgba(255, 0, 0, 0.2)",[L.Modal]:"rgba(0, 0, 0, 0.2)",[L.Tabs]:"rgba(255, 200, 100, 0.4)"},g1={[L.Division]:"#ff4000",[L.Modal]:"#000",[L.Tabs]:"#ffad18"},m1={definition:{sqlSnippets:[],queries:[],mock_context:{}},views:[{id:"Main",name:"Main",type:L.Division,config:{},panelIDs:[]}],panels:[],filters:[],version:"9.19.0"};function y1(t,e,n){g.addDisposer(t,g.addMiddleware(t,(r,i)=>{i(r,()=>{g.getType(r.context)===e&&r.type==="action"&&n(r.name,r.context)})}))}const nl=g.types.compose("FiltersModel",Eo,g.types.model("FiltersModel",{previewValues:g.types.optional(g.types.frozen(),{})})).views(t=>({get options(){return t.current.map(e=>({label:e.label??e.id,value:e.id,_type:"filter"}))},get selects(){return t.current.filter(e=>e.type===ue.Select).map(e=>({label:e.label??e.id,value:e.id}))},get keyLabelOptions(){return t.current.map(e=>({label:e.label??e.key,value:e.key}))}})).actions(t=>({replace(e){t.current=g.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(r=>r.id===e);n>=0&&t.current.splice(n,1)},updatePreviewValues(e){t.previewValues=e}})).actions(t=>{function e(){y1(t.current,wo,(n,r)=>{if(n==="setType"){const i=zo(r.config.default_value,r.config);t.setValueByKey(r.key,i),t.updatePreviewValues({...t.previewValues,[r.key]:i})}})}return{afterCreate(){e()}}}),sl=$o.views(t=>({get options(){const e=t.current.map(n=>({value:n.id,label:n.name,_type:"query"}));return b.sortBy(e,n=>n.label.toLowerCase())},get sortedList(){return b.sortBy(t.current,e=>e.name.toLowerCase())}})).actions(t=>({replace(e){t.current=g.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},removeQuery(e){const n=t.current.find(r=>r.id===e);n&&(g.detach(n),t.current.remove(n))},removeQueries(e){const n=new Set(e);t.current.forEach(i=>{n.has(i.id)&&g.detach(i)});const r=[...t.current];b.remove(r,i=>n.has(i.id)),t.current=g.cast(r)}})),rl=Vo.views(t=>({get sortedList(){return b.sortBy(t.current,e=>e.key.toLowerCase())},get options(){const e=t.current.map(n=>({label:n.key,value:n.key,_type:"sql_snippet"}));return b.sortBy(e,n=>n.label.toLowerCase())}})).actions(t=>({replace(e){t.current=g.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByKey(e){const n=t.current.findIndex(r=>r.key===e);n>=0&&t.current.splice(n,1)},removeByKeys(e){const n=new Set(e);t.current.forEach(i=>{n.has(i.key)&&g.detach(i)});const r=[...t.current];b.remove(r,i=>n.has(i.key)),t.current=g.cast(r)},replaceByIndex(e,n){t.current.splice(e,1,n)}})),b1=g.types.model({data:g.types.optional(g.types.frozen(),[]),state:g.types.optional(g.types.enumeration(["idle","loading","error"]),"idle"),error:g.types.frozen()}).views(t=>({get loading(){return t.state==="loading"},get empty(){return t.data.length===0}})),v1=g.types.model({data:g.types.optional(g.types.frozen(),[]),state:g.types.optional(g.types.enumeration(["idle","loading","error"]),"idle"),error:g.types.frozen()}).views(t=>({get loading(){return t.state==="loading"},get empty(){return t.data.length===0}})),j1=g.types.model({page:g.types.optional(g.types.number,1),limit:g.types.optional(g.types.number,20),data:g.types.optional(g.types.frozen(),[]),total:g.types.optional(g.types.number,0),state:g.types.optional(g.types.enumeration(["idle","loading","error"]),"idle"),error:g.types.frozen()}).views(t=>({get keywords(){return g.getParent(t,1)},get keywordString(){const{table_name:e,table_schema:n}=g.getParent(t,1);return`${n}||${e}`}})).views(t=>({get loading(){return t.state==="loading"},get empty(){return t.data.length===0},get maxPage(){return Math.ceil(t.total/t.limit)},get offset(){return(t.page-1)*t.limit},get countSql(){const{table_name:e,table_schema:n}=t.keywords;return`
441
441
  SELECT count(*) AS total
442
442
  FROM ${n}.${e}
443
- `}})).actions(t=>({setPage(e){t.page=e},resetPage(){t.page=1},setLimit(e){t.limit=e}})).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>t.keywordString,t.resetPage,{fireImmediately:!1,delay:0})),g.addDisposer(t,W.reaction(()=>t.limit,t.resetPage,{fireImmediately:!1,delay:0}))}})),w1=g.types.model({data:g.types.optional(g.types.frozen(),{}),state:g.types.optional(g.types.enumeration(["idle","loading","error"]),"idle"),error:g.types.frozen()}).views(t=>({get loading(){return t.state==="loading"},get empty(){return Object.keys(t.data).length===0}})),C1=g.types.compose("DataSourceModel",ko,g.types.model({tables:g.types.optional(w1,{}),columns:g.types.optional(b1,{}),tableData:g.types.optional(j1,{}),indexes:g.types.optional(v1,{}),table_schema:g.types.optional(g.types.string,""),table_name:g.types.optional(g.types.string,"")})).views(t=>({get sqlDataSourceType(){return t.type},get reloadConditionString(){const{type:e,table_name:n,table_schema:r}=t;return`${e};${n};${r}`}})).volatile(()=>({controllers:{tables:new AbortController,columns:new AbortController,indexes:new AbortController,tableData:new AbortController}})).actions(t=>({setKeywords(e,n){t.table_schema=e,t.table_name=n}})).actions(t=>({initKeywords(){if(t.tables.empty)return;const e=Object.keys(t.tables.data)[0],n=t.tables.data[e][0].table_name;t.setKeywords(e,n)}})).actions(t=>{const e=g.flow(function*(){var n;(n=t.controllers.tables)==null||n.abort(),t.controllers.tables=new AbortController,t.tables.state="loading";try{const r=yield*g.toGenerator(Ke.structure(t.controllers.tables.signal)({query_type:"TABLES",type:t.sqlDataSourceType,key:t.key,table_schema:"",table_name:""},{params:{query_type:"TABLES"}}));t.tables.data=b.groupBy(r,"table_schema"),t.tables.state="idle",t.tables.error=null,t.initKeywords()}catch(r){if(!et.isCancel(r)){t.tables.data={};const i=b.get(r,"message","unkown error");t.tables.error=b.get(r,"response.data.detail.message",i),t.tables.state="error"}}});return{loadTables:e,loadTablesIfEmpty(){t.tables.empty&&e()},loadColumns:g.flow(function*(){var n;(n=t.controllers.columns)==null||n.abort(),t.controllers.columns=new AbortController,t.columns.state="loading";try{t.columns.data=yield*g.toGenerator(Ke.structure(t.controllers.columns.signal)({query_type:"COLUMNS",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name},{params:{query_type:"COLUMNS"}})),t.columns.state="idle",t.columns.error=null}catch(r){if(et.isCancel(r))t.columns.state="idle",t.columns.error=null;else{t.columns.data=[];const i=b.get(r,"message","unkown error");t.columns.error=b.get(r,"response.data.detail.message",i),t.columns.state="error"}}}),loadIndexes:g.flow(function*(){var n;(n=t.controllers.indexes)==null||n.abort(),t.controllers.indexes=new AbortController,t.indexes.state="loading";try{t.indexes.data=yield*g.toGenerator(Ke.structure(t.controllers.indexes.signal)({query_type:"INDEXES",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name},{params:{query_type:"INDEXES"}})),t.indexes.state="idle",t.indexes.error=null}catch(r){if(et.isCancel(r))t.indexes.state="idle",t.indexes.error=null;else{t.indexes.data=[];const i=b.get(r,"message","unkown error");t.indexes.error=b.get(r,"response.data.detail.message",i),t.indexes.state="error"}}}),loadTableData:g.flow(function*(){var r;(r=t.controllers.tableData)==null||r.abort(),t.controllers.tableData=new AbortController;const n=t.tableData;n.state="loading";try{n.data=yield*g.toGenerator(Ke.structure(t.controllers.tableData.signal)({query_type:"DATA",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name,limit:n.limit,offset:n.offset},{params:{query_type:"DATA"}}));const[{total:i}]=yield*g.toGenerator(Ke.structure(t.controllers.tableData.signal)({query_type:"COUNT",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name},{params:{query_type:"COUNT"}}));n.total=Number(i),n.state="idle",n.error=null}catch(i){if(et.isCancel(i))n.state="idle",n.error=null;else{n.data=[];const o=b.get(i,"message","unkown error");n.error=b.get(i,"response.data.detail.message",o),n.state="error"}}})}}).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>t.reloadConditionString,t.loadColumns,{fireImmediately:!1,delay:500}))}})).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>t.reloadConditionString,t.loadIndexes,{fireImmediately:!1,delay:500})),g.addDisposer(t,W.reaction(()=>`${t.reloadConditionString};limit:${t.tableData.limit};offset:${t.tableData.offset}`,t.loadTableData,{fireImmediately:!1,delay:0}))}})),S1=g.types.model("DataSourcesModel",{list:g.types.optional(g.types.array(C1),[])}).views(t=>({find({type:e,key:n}){return t.list.find(r=>r.key===n&&r.type===e)},get options(){return t.list.map(e=>({value:e.key,label:e.key}))}})).actions(t=>({replace(e){t.list.length=0,t.list.push(...e)}}));function Et(t){return{label:t,value:t,_type:"ACTION",_action_type:t,Icon:null,children:null}}function _1(t){switch(t._type){case"GROUP":case"ACTION":return null;case"query_variables":return["_QUERY_VARS_"];case"mock_context":return["_MOCK_CONTEXT_"];case"filter":return["_FILTERS_",t.value];case"sql_snippet":return["_SQL_SNIPPETS_",t.value];case"query":return["_QUERIES_",t.value];case"view":return["_VIEWS_",t.value];case"panel":return t.parentID?["_VIEWS_",t.parentID,"_PANELS_",t.value]:(console.error("[getPathFromOption] parentID is required"),null)}}const k1=g.types.model("EditorModel",{path:g.types.optional(g.types.frozen(),[]),settings_open:g.types.optional(g.types.boolean,!1)}).views(t=>({get navOptions(){const{content:e}=g.getRoot(t),{filters:n,views:r,sqlSnippets:i,queries:o}=e;return[{label:"Query Variables",value:"_QUERY_VARS_",_type:"query_variables",Icon:D.IconVariable},{label:"Mock Context",value:"_MOCK_CONTEXT_",Icon:D.IconCodeDots,_type:"mock_context"},{label:"Filters",value:"_FILTERS_",Icon:D.IconFilter,children:[...n.options,Et("_Add_A_Filter_")],_type:"GROUP"},{label:"SQL Snippets",value:"_SQL_SNIPPETS_",Icon:D.IconCopy,children:[Et("_SQL_SNIPPETS_SETTINGS_"),...i.options,Et("_Add_A_SQL_SNIPPET_")],_type:"GROUP"},{label:"Queries",value:"_QUERIES_",Icon:D.IconDatabase,children:[Et("_QUERIES_SETTINGS_"),...o.options,Et("_Add_A_QUERY_")],_type:"GROUP"},{label:"Views",value:"_VIEWS_",Icon:D.IconBoxMultiple,children:[...r.editorOptions,Et("_Add_A_VIEW_")],_type:"GROUP"}]},isOptionActive(e,n){return e.length===0?!1:e[e.length-1]===n.value},isOptionOpened(e){const{path:n}=t;return n.length===0||!e.children||e.children.length===0?!1:n.includes(e.value)}})).actions(t=>({setPath(e){t.path=e},setSettingsOpen(e){t.settings_open=e}})).actions(t=>({open(e){t.setPath(e),t.setSettingsOpen(!0)},close(){t.setSettingsOpen(!1)},navigate(e){const n=_1(e);n&&t.setPath(n)}})),il=Mo.views(t=>({get dataFieldOptions(){return t.queryIDs.length===0?[]:t.queries.map(e=>{const n=e.data;return n.length===0?[]:Object.keys(n[0]).map(i=>({label:i,value:`${e.id}.${i}`,group:e.name}))}).flat()}})).actions(t=>({removeSelf(){g.getParent(t,2).removeByID(t.id)}})).actions(t=>({moveToView(e,n){g.getRoot(t).content.views.findByID(e).removePanelID(t.id),g.getRoot(t).content.views.findByID(n).appendPanelID(t.id),g.getRoot(t).editor.setPath(["_VIEWS_",n,"_PANELS_",t.id])}})),al=g.types.compose("PanelsModel",Ao,g.types.model({list:g.types.optional(g.types.array(il),[])})).views(t=>({editorOptions(e,n){const{panels:r}=t.panelsByIDs(n);r.length!==n.length&&console.warn(`Unfulfilled panels for View[${e}]`);const i=r.map(l=>({label:l.name,value:l.id,_type:"panel",parentID:e})),o="_Add_A_PANEL_";return i.push({label:o,value:o,_type:"ACTION",_action_type:o,parentID:e,Icon:null,children:null}),i}})).actions(t=>({replace(e){t.list=g.castToSnapshot(e)},append(e){t.list.push(e)},remove(e){t.list.splice(e,1)},removeByID(e){const n=t.list.findIndex(r=>r.id===e);n!==-1&&t.list.splice(n,1)},removeByIDs(e){e.forEach(n=>{this.removeByID(n)})},duplicateByID(e){const n=t.list.find(i=>i.id===e);if(!n){console.error(new Error(`[duplicate panel] Can't find a panel by id[${e}]`));return}const r=new Date().getTime().toString();return t.list.push({...n.json,id:r,layout:{...n.layout,y:1/0,moved:!1}}),r},replaceByIndex(e,n){t.list.splice(e,1,n)}})),ol=g.types.compose("ViewsModel",Io,g.types.model({idOfVIE:g.types.string})).views(t=>({get isVIETheFirstView(){return t.current.length===0||!t.idOfVIE?!1:t.current[0].id===t.idOfVIE},get VIE(){return t.current.find(({id:e})=>e===t.idOfVIE)},get options(){return t.current.map(e=>({label:e.name,value:e.id,type:e.type}))},get editorOptions(){const e=g.getRoot(t).content.panels;return t.current.map(n=>({label:n.name,value:n.id,_type:"view",children:e.editorOptions(n.id,n.panelIDs)}))}})).actions(t=>({setIDOfVIE(e){t.idOfVIE=e,t.visibleViewIDs.length=0,t.visibleViewIDs.push(e)},replace(e){t.current.replace(e)},addANewView(e,n,r,i){t.current.push({id:e,name:n,type:r,config:i,panelIDs:[]})},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(o=>o.id===e);if(n===-1)return;const r=t.current[n];g.getRoot(t).content.panels.removeByIDs(r.panelIDs),t.current.splice(n,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},addARandomNewView(){const e=new Date().getTime().toString();this.addANewView(e,L.Division,L.Division,{_name:L.Division}),this.setIDOfVIE(e)},removeVIE(){t.current.length!==1&&(this.removeByID(t.idOfVIE),this.setIDOfVIE(t.current[0].id))}}));function wr(t){const e=t.length>0?[t[0].id]:[],n=t.length>0?t[0].id:"";return{current:t.map(i=>{const{_name:o=i.type}=i.config;return{...i,config:{...i.config,_name:o},panelIDs:i.panelIDs}}),visibleViewIDs:e,idOfVIE:n}}const T1=g.types.model({id:g.types.string,name:g.types.string,dashboard_id:g.types.string,create_time:g.types.string,update_time:g.types.string,version:g.types.string,filters:nl,queries:sl,sqlSnippets:rl,views:ol,panels:al,mock_context:po,origin:g.types.maybe(g.types.frozen())}).views(t=>({get json(){return{id:t.id,name:t.name,create_time:t.create_time,update_time:t.update_time,dashboard_id:t.dashboard_id,content:{views:t.views.json,panels:t.panels.json,filters:t.filters.json,version:t.version,definition:{queries:t.queries.json,sqlSnippets:t.sqlSnippets.json,mock_context:t.mock_context.current}}}},get filtersChanged(){const e="filters.current";return!b.isEqual(g.getSnapshot(b.get(t,e)),b.get(t.origin,e))},get queriesChanged(){const e="queries.current",n=g.getSnapshot(b.get(t,e)).map(r=>b.pick(r,["id","name","key","type","sql","run_by","react_to","pre_process","post_process"]));return!b.isEqual(n,b.get(t.origin,e))},get sqlSnippetsChanged(){const e="sqlSnippets.current";return!b.isEqual(g.getSnapshot(b.get(t,e)),b.get(t.origin,e))},get viewsChanged(){const e="views.current";return!b.isEqual(t.views.json,b.get(t.origin,e))},get panelsChanged(){const e="panels.list";return!b.isEqual(g.getSnapshot(b.get(t,e)),b.get(t.origin,e))},get mockContextChanged(){const e="mock_context.current";return!b.isEqual(b.get(t,e),b.get(t.origin,e))},get payloadForSQL(){const e=g.getParent(t).context.current,n=g.getParent(t).globalSQLSnippets,r={context:{...t.mock_context.current,...e},filters:t.filters.values};return{...r,sql_snippets:qn(t.sqlSnippets.current,"key","value",r),global_sql_snippets:qn(n.list,"id","content",r)}},get payloadForViz(){const e=g.getParent(t).context.current;return{context:{...t.mock_context.current,...e},filters:t.filters.values}},get dashboardState(){return rs(this.payloadForSQL)},getAdditionalQueryInfo(e){return{content_id:t.id,query_id:e,params:this.dashboardState}},get changed(){return this.filtersChanged||this.queriesChanged||this.sqlSnippetsChanged||this.viewsChanged||this.panelsChanged||this.mockContextChanged},get data(){return t.queries.current.map(({id:n,data:r})=>({id:n,data:r})).reduce((n,r)=>(n[r.id]=r.data,n),{})},getDataStuffByID(e){const n=t.queries.findByID(e);return n?{data:n.data,len:n.data.length,state:n.state,error:n.error}:{data:[],len:0,state:"idle",error:void 0}}})).views(t=>({get queriesUsage(){const e=t.panels.idMap,n=[];t.views.current.forEach(i=>{i.panelIDs.forEach(o=>{const l=e.get(o);if(!l)return;const u="panel",c=l.name,d=[{id:i.id,label:i.name}];l.queryIDs.forEach(p=>{n.push({id:o,queryID:p,type:u,label:c,views:d})})})});const r=t.views.idMap;return t.filters.current.filter(i=>!!b.get(i,"config.options_query_id")).forEach(i=>{n.push({type:"filter",id:i.id,queryID:b.get(i,"config.options_query_id"),label:i.label,views:i.visibleInViewsIDs.map(o=>{var l;return{id:o,label:((l=r.get(o))==null?void 0:l.name)??o}})})}),b.groupBy(n,"queryID")},get hasUnusedQueries(){return t.queries.current.length>Object.keys(this.queriesUsage).length},findQueryUsage(e){return this.queriesUsage[e]??[]},get sqlSnippetsUsage(){const e=[],n=new RegExp("(?<=sql_snippets\\.)([^}.]+)","gm");return t.queries.current.forEach(r=>{if(!r.typedAsSQL)return;b.uniq(r.sql.match(n)).forEach(o=>{e.push({queryID:r.id,sqlSnippetKey:o,queryName:r.name})})}),b.groupBy(e,"sqlSnippetKey")},get hasUnusedSQLSnippets(){return t.sqlSnippets.current.length>Object.keys(this.sqlSnippetsUsage).length},findSQLSnippetUsage(e){return this.sqlSnippetsUsage[e]??[]}})).actions(t=>({removeUnusedQueries(){const e=new Set(Object.keys(t.queriesUsage)),n=t.queries.current.filter(r=>!e.has(r.id)).map(r=>r.id);t.queries.removeQueries(n)},removeUnusedSQLSnippets(){const e=new Set(Object.keys(t.sqlSnippetsUsage)),n=t.sqlSnippets.current.filter(r=>!e.has(r.key)).map(r=>r.key);t.sqlSnippets.removeByKeys(n)},duplicatePanelByID(e,n){var i;const r=t.panels.duplicateByID(e);r&&((i=t.views.findByID(n))==null||i.appendPanelID(r))},removePanelByID(e,n){var r;t.panels.removeByID(e),(r=t.views.findByID(n))==null||r.removePanelID(e)},addANewPanel(e){var r;const n=new Date().getTime().toString();t.panels.append(jS(n)),(r=t.views.findByID(e))==null||r.appendPanelID(n)}})).actions(t=>({reset(){g.applySnapshot(t.filters.current,t.origin.filters.current),g.applySnapshot(t.queries.current,t.origin.queries.current),g.applySnapshot(t.sqlSnippets.current,t.origin.sqlSnippets.current),g.applySnapshot(t.views.current,t.origin.views.current),g.applySnapshot(t.panels.list,t.origin.panels.list),t.mock_context.current=t.origin.mock_context.current},resetFilters(){g.applySnapshot(t.filters.current,t.origin.filters.current)},updateCurrent(e){const{id:n,name:r,content:i}=e;if(!i)throw new Error("unexpected null content when updating a content model");const{version:o,filters:l,views:u,panels:c,definition:{queries:d,sqlSnippets:p,mock_context:h={}}}=i;t.id=n,t.name=r,t.version=o,g.applySnapshot(t.filters.current,l),g.applySnapshot(t.views.current,wr(u).current),g.applySnapshot(t.panels.list,c),g.applySnapshot(t.queries.current,d),g.applySnapshot(t.sqlSnippets.current,p),t.mock_context.current=h}})),Cr=g.types.snapshotProcessor(T1,{preProcessor(t){return{...t,origin:t}},postProcessor(t){delete t.origin;const e=g.castToSnapshot(t.queries.current.map(n=>b.pick(n,["id","key","type","sql"])));return b.defaults({},{queries:{current:e}},t)}});function D1(t,e){e.filters&&g.applySnapshot(t.filters.current,e.filters)}function ll({id:t,name:e,dashboard_id:n,create_time:r,update_time:i,content:o}){if(!o)throw new Error("unexpected null content when creating a content model");const{version:l,filters:u,views:c,panels:d,definition:{queries:p,sqlSnippets:h,mock_context:x={}}}=o;return Cr.create({id:t,name:e,dashboard_id:n,create_time:r,update_time:i,version:l,filters:Po(u),queries:{current:p},sqlSnippets:{current:h},mock_context:ho(x),views:wr(c),panels:{list:d}})}const ul=g.types.model({id:g.types.identifier,name:g.types.string,group:g.types.string,content:Cr,content_id:g.types.string,datasources:S1,globalSQLSnippets:To,context:mr,editor:k1}).views(t=>({get json(){return{id:t.id,name:t.name,group:t.group,content_id:t.content_id}}})).actions(t=>({updateCurrentContent(e){t.content.updateCurrent(e)},updateCurrent(e,n){const{id:r,name:i,group:o,content_id:l}=e;t.id=r,t.name=i,t.group=o,t.content_id=l,this.updateCurrentContent(n)}}));function cl({id:t,name:e,group:n,content_id:r},i,o,l,u){return ul.create({id:t,name:e,group:n,content_id:r,content:ll(i),datasources:{list:o},globalSQLSnippets:{list:l},context:Do(u),editor:{}})}function dl(t,e){f.useEffect(()=>{const n=r=>{console.log(r);const{viewID:i}=r.detail;if(!i){console.error(new Error("[Open View] Needs to pick a view first"));return}t.views.appendToVisibles(i),e&&t.views.setIDOfVIE(i)};return window.addEventListener("open-view",n),()=>{window.removeEventListener("open-view",n)}},[t,e]),f.useEffect(()=>{const n=r=>{console.log(r);const{dictionary:i,payload:o}=r.detail;if(!o||Object.keys(o).length===0){console.error(new Error("[Set Filter Values] payload is empty"));return}Object.entries(i).forEach(([l,u])=>{t.filters.setValueByKey(l,b.get(o,u))})};return window.addEventListener("set-filter-values",n),()=>{window.removeEventListener("set-filter-values",n)}},[t]),f.useEffect(()=>{function n(i){return Array.isArray(i)?[]:typeof i=="object"?{}:typeof i=="boolean"?!1:typeof i=="string"?"":typeof i=="number"?0:i}const r=i=>{console.log(i);const{filter_keys:o}=i.detail;o.forEach(l=>{const u=b.get(t.filters.values,l),c=n(u);console.log(`${l}: ${c}`),t.filters.setValueByKey(l,c)})};return window.addEventListener("clear-filter-values",r),()=>{window.removeEventListener("clear-filter-values",r)}},[t]),f.useEffect(()=>{const n=r=>{console.log(r);const{urlTemplate:i,openInNewTab:o,enableEncoding:l=!1,payload:u}=r.detail;if(!i){console.error(new Error("[Open Link] URL is empty"));return}function c(h){return b.cloneDeepWith(h,m=>{if(l&&typeof m=="string")return encodeURIComponent(m)})}const p=b.template(i||"")(c({...u,filters:t.payloadForSQL.filters,context:t.payloadForSQL.context}));window.open(p,o?"_blank":"_self","noopener")};return window.addEventListener("open-link",n),()=>{window.removeEventListener("open-link",n)}},[t])}function pl(t){return f.useCallback(e=>e.provideValue(le.pluginManager,t.pluginManager).provideValue(le.vizManager,t.vizManager).provideValue(le.colorManager,t.colorManager),[])}const wD="",I1=S.observer(()=>{const t=cs(),e=J(),n=()=>{const r=JSON.stringify(e.json,null,2),i=`${t.name}__${e.name}`;Bo(i,r)};return s.jsxs(a.Menu,{shadow:"md",width:200,trigger:"hover",openDelay:100,closeDelay:400,withinPortal:!0,zIndex:310,children:[s.jsx(a.Menu.Target,{children:s.jsx(a.ActionIcon,{variant:"light",color:"blue",children:s.jsx(D.IconMenu2,{size:14})})}),s.jsxs(a.Menu.Dropdown,{children:[s.jsx(a.Menu.Item,{icon:s.jsx(D.IconDownload,{size:14}),onClick:e.queries.downloadAllData,children:"Download Data"}),s.jsx(a.Menu.Item,{icon:s.jsx(D.IconCode,{size:14}),onClick:n,children:"Download Schema"})]})]})}),M1=S.observer(({saveDashboardChanges:t})=>{const e=Me.useModals(),n=J(),r=()=>{e.openConfirmModal({title:s.jsxs(a.Group,{position:"left",children:[s.jsx(D.IconAlertTriangle,{size:18,color:"red"}),s.jsx(a.Text,{children:"You are reverting changes"})]}),labels:{confirm:"Confirm",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:()=>n.reset(),zIndex:320,withCloseButton:!1})},i=n.changed;return s.jsxs(a.Group,{spacing:0,children:[s.jsx(a.Button,{color:"green",variant:"filled",size:"xs",leftIcon:s.jsx(D.IconDeviceFloppy,{size:18}),onClick:t,disabled:!i,sx:{borderTopRightRadius:0,borderBottomRightRadius:0},children:"Save Changes"}),s.jsxs(a.Menu,{width:200,trigger:"hover",openDelay:100,closeDelay:400,withinPortal:!0,zIndex:320,disabled:!i,children:[s.jsx(a.Menu.Target,{children:s.jsx(a.ActionIcon,{variant:"default",disabled:!i,sx:{height:"30px",borderTopLeftRadius:0,borderBottomLeftRadius:0,svg:{fill:"rgb(173, 181, 189)",stroke:"none"}},children:s.jsx(D.IconCaretDown,{size:18})})}),s.jsx(a.Menu.Dropdown,{children:s.jsx(a.Menu.Item,{icon:s.jsx(D.IconRecycle,{size:14,color:"red"}),disabled:!i,onClick:r,children:"Revert Changes"})})]})]})}),A1=S.observer(({saveDashboardChanges:t,headerSlot:e=null})=>{const n=qu.useNavigate(),r=Z(),i=()=>{n(`/dashboard/${r.id}`)},o=Me.useModals(),l=()=>{o.openConfirmModal({title:s.jsxs(a.Group,{position:"left",children:[s.jsx(D.IconAlertTriangle,{size:18,color:"red"}),s.jsx(a.Text,{children:"There are unsaved changes"})]}),labels:{confirm:"Discard",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:i,zIndex:320,withCloseButton:!1})},u=r.content.changed;return s.jsx(a.Header,{height:60,px:"md",py:0,sx:{zIndex:299},children:s.jsxs(a.Group,{position:"apart",sx:{height:60,minWidth:"1000px",position:"relative"},children:[s.jsxs(a.Group,{children:[s.jsx(a.Button,{size:"xs",color:u?"red":"green",leftIcon:s.jsx(D.IconArrowLeft,{size:20}),onClick:u?l:i,children:s.jsxs(a.Group,{spacing:4,children:["End Editing",s.jsx(a.Text,{td:"underline",children:r.name})]})}),s.jsx(M1,{saveDashboardChanges:t})]}),s.jsxs(a.Group,{position:"right",sx:{flexGrow:1},children:[e,s.jsx(I1,{})]})]})})}),z1={position:"fixed",top:60,left:0,right:0,height:30,zIndex:299,borderBottom:"1px solid #e9ecef",background:"rgba(233,236,239, 0.15)"},E1=S.observer(()=>{var n;const t=J(),e=((n=t.views.VIE)==null?void 0:n.type)===L.Tabs;return s.jsx(a.Box,{sx:z1,pl:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},children:s.jsxs(a.Group,{position:"apart",align:"center",sx:{height:"30px"},pr:16,children:[s.jsx(a.Button,{variant:"outline",color:"blue",radius:0,size:"xs",disabled:!t.views.VIE||e,onClick:()=>t.addANewPanel(t.views.idOfVIE),leftIcon:s.jsx(D.IconPlaylistAdd,{size:20}),sx:{height:"30px",borderLeft:"none",borderTop:"none",borderRight:"1px solid #e9ecef",borderBottom:"1px solid #e9ecef",background:"rgb(231, 245, 255)"},children:"Add a Panel"}),s.jsx(a.Box,{}),s.jsx(a.Box,{})]})})}),P1=S.observer(t=>s.jsxs(s.Fragment,{children:[s.jsx(A1,{...t}),s.jsx(E1,{})]})),CD="";function L1(t,e,n){const r=[];return t.filter(i=>"__INTERACTIONS"in i.viz.conf).forEach((i,o)=>{const l=e[i.id];l.data.interactions=b.get(l,"data.interactions",[]);const{__INTERACTIONS:u,__OPERATIONS:c,__TRIGGERS:d}=i.viz.conf;Object.entries(c).forEach(([p,h])=>{const{schemaRef:x,data:m}=h,{config:v}=m;switch(x){case"builtin:op:open-link":let C=v.urlTemplate.substring(0,100);v.urlTemplate.length>=20&&(C+="..."),l.type="interaction",l.data.interactions.push({schemaRef:x,urlTemplate:v.urlTemplate,shortURLTemplate:C});return;case"builtin:op:open_view":r.push({id:`OPERATION--${p}`,source:i.id,target:v.viewID,label:"Open View",style:{stroke:"rgba(0,0,0,0.8)"},type:"default"});return;case"builtin:op:set_filter_values":l.type="interaction",l.data.interactions.push({schemaRef:x,filters:Object.keys(v.dictionary).map(k=>({key:k,label:n[k]}))});return;case"builtin:op:clear_filter_values":l.type="interaction",l.data.interactions.push({schemaRef:x,filters:v.filter_keys.map(k=>({key:k,label:n[k]}))});return;default:return}})}),r}function O1(t,e){const n=t.filters.keyLabelMap;return{edges:L1(t.panels.list,e,n),edgeNodes:[]}}function hl(t,e,n){return t*e+t*n}function B1(t,e,n){return t*e+(t-1)*n}const Wn=25,Sr=40,xl=25,_r=350,$1=150,V1=150,fl=150,gl=300,Rn=40,ml=25,N1=300;function q1(t,e){const n=b.keyBy(e,i=>i.id),r=[];return t.current.forEach((i,o)=>{i.panelIDs.forEach((l,u)=>{const c=hl(u,Rn,ml)+Sr,d=n[l];if(!d){r.push({id:l,_node_type:"panel",parentNode:i.id,data:{label:`!: ${l}`},position:{x:Wn,y:c},sourcePosition:be.Position.Right,targetPosition:be.Position.Left,style:{width:gl,height:Rn}});return}const p=d.name;r.push({id:d.id,_node_type:"panel",parentNode:i.id,data:{label:p},position:{x:Wn,y:c},sourcePosition:be.Position.Right,targetPosition:be.Position.Left,style:{width:gl,height:Rn}})})}),r}const F1={[L.Division]:"Div",[L.Modal]:"Modal",[L.Tabs]:"Tabs"},G1=tl;function W1(t){return t.current.map((n,r)=>{const i=B1(n.panelIDs.length,Rn,ml)+Sr+xl;let o=[];return n.type===L.Tabs&&(o=n.config.tabs.map(u=>u.view_id)),{id:n.id,_node_type:"view-root",_view_type:n.type,_view_level:0,_sub_view_ids:[],_tab_view_ids:o,data:{label:`${F1[n.type]}:${n.name}`},position:{x:0,y:0},sourcePosition:be.Position.Right,targetPosition:be.Position.Left,className:"light",style:{backgroundColor:G1[n.type],width:_r,height:i}}})}function R1(t){const e=b.keyBy(t,n=>n.id);t.forEach(n=>{n._node_type!=="view-root"||n._view_type!==L.Tabs||n._tab_view_ids.forEach(r=>{e[r].parentNode=n.id})})}function Q1(t){const e=W1(t.views);R1(e);const n=q1(t.views,t.panels.list);return[...e,...n]}function U1({nodeMap:t,nodes:e,edges:n}){e.forEach(r=>{r._node_type!=="view-root"||r._view_type!==L.Tabs||(r.sourcePosition=be.Position.Bottom,r.style.width=_r+Wn*2,r.style.height=xl+r._tab_view_ids.reduce((i,o)=>{const l=t[o];l.position.y=i,l.position.x=Wn;const u=l.style.height;return i+u+20},Sr))})}function K1({nodeMap:t,nodes:e,edges:n}){n.filter(r=>r.label==="Open View").forEach(r=>{const i=t[r.source],o=t[r.target];if(!i||!o||!i.parentNode)return;const l=t[i.parentNode];l._node_type!=="view-root"||o._node_type!=="view-root"||(o._view_level+=1+l._view_level,l._sub_view_ids.push(o.id))}),e.sort((r,i)=>r._node_type==="view-root"&&i._node_type==="view-root"?r._view_level-i._view_level:r._node_type!=="view-root"&&i._node_type!=="view-root"?0:r._node_type==="view-root"?-1:1)}function Y1({nodeMap:t,nodes:e,edges:n}){const r={};n.forEach(i=>{if(i.label!=="Open View")return;const o=t[i.source],l=t[i.target];if(o&&l&&o.parentNode){const u=t[o.parentNode],c=u.position.x,d=Number(b.get(l,"style.height",0)),p=Number(u.style.width);l.position.x=c+p+N1,u._view_level===0&&l._sub_view_ids.length===0&&(o.sourcePosition=be.Position.Left,l.targetPosition=be.Position.Right,l.position.x*=-1);const x=l.position.x,m=b.get(r,x,0);l.position.y=m,r[x]=m+d+fl}})}function X1({nodeMap:t,nodes:e,edges:n}){const r=new Set,i=new Set;n.forEach(l=>{r.add(l.source),i.add(l.target)}),e.filter(l=>l._node_type!=="view-root"||l.id==="Main"||l.parentNode?!1:!r.has(l.id)&&!i.has(l.id)).forEach((l,u)=>{l.position.x=hl(u,_r,V1),l.position.y=0-$1-fl})}function J1({nodeMap:t,nodes:e,edges:n}){const r={nodeMap:t,nodes:e,edges:n};return X1(r),K1(r),U1(r),Y1(r),{nodes:e,edges:n}}function Z1(t){const e=Q1(t),n=b.keyBy(e,c=>c.id),{edges:r,edgeNodes:i}=O1(t,n),o=[...e,...i],l=b.keyBy(o,c=>c.id),u={edges:b.uniqBy(r,c=>c.id),nodes:o,nodeMap:l};return J1(u)}const SD="",kr={"builtin:op:open-link":s.jsx(a.ThemeIcon,{color:"blue",size:20,radius:"xl",children:s.jsx(D.IconCircleDashed,{size:14})}),"builtin:op:set_filter_values":s.jsx(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:s.jsx(D.IconCircleDot,{size:14})}),"builtin:op:clear_filter_values":s.jsx(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:s.jsx(D.IconCircleOff,{size:14})})};function H1(t){const e=[];return t.forEach(n=>{switch(n.schemaRef){case"builtin:op:open-link":e.push({key:n.urlTemplate,icon:kr[n.schemaRef],text:s.jsxs(a.Group,{spacing:4,children:[s.jsx(a.Text,{children:"Open: "}),s.jsx(a.Text,{color:"dimmed",children:n.shortURLTemplate})]})});return;case"builtin:op:set_filter_values":n.filters.forEach(({key:r,label:i})=>{e.push({key:n.schemaRef+r,icon:kr[n.schemaRef],text:s.jsx(a.Group,{spacing:4,children:s.jsxs(a.Text,{children:["Set Filter: ",i]})})})});return;case"builtin:op:clear_filter_values":n.filters.forEach(({key:r,label:i})=>{e.push({key:n.schemaRef+r,icon:kr[n.schemaRef],text:s.jsx(a.Group,{spacing:4,children:s.jsxs(a.Text,{children:["Clear Filter: ",i]})})})});return}}),e}const e_=f.memo(({data:t,isConnectable:e,sourcePosition:n=be.Position.Right,targetPosition:r=be.Position.Left,...i})=>{const o=f.useMemo(()=>H1(t.interactions),[t.interactions]);return s.jsxs(s.Fragment,{children:[s.jsx(be.Handle,{type:"target",position:r,isConnectable:e}),s.jsx(a.Box,{sx:{position:"absolute",top:0,right:0},children:s.jsx(_.ChevronsUpRight,{size:12})}),s.jsxs(a.HoverCard,{shadow:"xl",withinPortal:!0,children:[s.jsx(a.HoverCard.Target,{children:s.jsx(a.Text,{children:t.label})}),s.jsx(a.HoverCard.Dropdown,{children:s.jsx(a.List,{spacing:"xs",size:"sm",center:!0,children:o.map(l=>s.jsx(a.List.Item,{icon:l.icon,children:l.text},l.key))})})]}),s.jsx(be.Handle,{type:"source",position:n,isConnectable:e})]})}),_D="",t_={interaction:e_},n_=S.observer(()=>{const t=oe(),{edges:e,nodes:n}=Z1(t);return s.jsxs(be,{nodes:n,edges:e,onNodesChange:b.noop,onEdgesChange:b.noop,onConnect:b.noop,className:"interactions-viewer",fitView:!0,nodeTypes:t_,children:[s.jsx(be.MiniMap,{}),s.jsx(be.Controls,{}),s.jsx(be.Background,{})]})}),s_=S.observer(({opened:t,close:e})=>s.jsx(a.Modal,{size:"96vw",opened:t,onClose:e,title:"Interactions",trapFocus:!0,onDragStart:n=>{n.stopPropagation()},styles:{body:{height:"calc(90vh - 54px)"},content:{transform:"none !important"}},zIndex:300,children:s.jsx(n_,{})})),r_={"> button":{"&:first-of-type":{borderTopRightRadius:0,borderBottomRightRadius:0,borderRightWidth:.5},":not(:first-of-type):not(:last-of-type)":{borderTopRightRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5,borderRightWidth:.5},"&:last-of-type":{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5}}};function i_({onClick:t,name:e,active:n,openSettings:r}){return s.jsxs(a.Box,{sx:{position:"relative"},children:[s.jsx(a.UnstyledButton,{sx:i=>({display:"block",width:"100%",padding:i.spacing.xs,borderRadius:0,position:"relative",color:i.black,"&:hover":{backgroundColor:i.colors.gray[0]},backgroundColor:n?i.colors.gray[2]:"transparent"}),children:s.jsx(a.Group,{sx:{width:"calc(100% - 28px)"},onClick:t,children:s.jsx(a.Text,{size:"sm",children:e})})}),n&&s.jsx(a.Tooltip,{label:"Edit",position:"right",withinPortal:!0,children:s.jsx(a.ActionIcon,{onClick:r,variant:"light",color:"blue",sx:{position:"absolute",top:0,bottom:0,height:"100%",right:0,zIndex:0,borderRadius:0},children:s.jsx(D.IconAdjustments,{size:16})})})]})}const a_=S.observer(()=>{const t=Z(),e=J(),n=f.useCallback(i=>()=>e.views.setIDOfVIE(i),[e]),r=i=>{t.editor.open(["_VIEWS_",i])};return s.jsxs(a.Box,{sx:{position:"relative"},children:[e.views.options.map(i=>s.jsx(i_,{active:e.views.idOfVIE===i.value,name:i.label,onClick:n(i.value),openSettings:()=>r(i.value)},i.value)),s.jsx(a.Divider,{variant:"dashed"}),s.jsx(a.Button,{variant:"subtle",rightIcon:s.jsx(D.IconPlus,{size:14}),size:"sm",px:"xs",color:"blue",onClick:e.views.addARandomNewView,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"space-between"}},children:"Add a View"})]})}),o_=S.observer(()=>{const t=Z(),e=J(),n=()=>{if(!e.queries.firstID){t.editor.open(["_QUERIES_",""]);return}t.editor.open(["_QUERIES_",e.queries.firstID])},r=()=>{if(!e.filters.firstID){t.editor.open(["_FILTERS_",""]);return}t.editor.open(["_FILTERS_",e.filters.firstID])},[i,o]=f.useState(!1),l=()=>o(!0),u=()=>o(!1);return s.jsxs(a.Navbar,{p:0,width:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},zIndex:299,children:[s.jsxs(a.Navbar.Section,{children:[s.jsxs(a.Group,{grow:!0,spacing:0,sx:{...r_,button:{borderWidth:0,borderBottomWidth:1,borderColor:"#e9ecef"}},children:[s.jsx(a.Tooltip,{label:"Filters",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"default",radius:0,size:"md",sx:{height:"30px"},onClick:r,children:s.jsx(D.IconFilter,{size:18})})}),s.jsx(a.Tooltip,{label:"Queries",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"default",radius:0,size:"md",sx:{height:"30px"},onClick:n,children:s.jsx(D.IconDatabase,{size:18})})}),s.jsx(a.Tooltip,{label:"Interactions Viewer",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"default",radius:0,size:"md",sx:{height:"30px"},onClick:l,children:s.jsx(D.IconLink,{size:18})})})]}),s.jsx(s_,{opened:i,close:u})]}),s.jsx(a.Navbar.Section,{py:5,sx:{borderBottom:"1px solid #eee"},children:s.jsx(a.Text,{align:"center",sx:{userSelect:"none",cursor:"default"},children:"Views"})}),s.jsx(a.Navbar.Section,{grow:!0,sx:{overflow:"auto"},children:s.jsx(a_,{})}),s.jsx(a.Navbar.Section,{children:s.jsx(a.Group,{grow:!0,p:"md",pt:"sm",sx:{borderTop:"1px solid #eee"},children:s.jsx(a.Button,{size:"xs",leftIcon:s.jsx(D.IconSettings,{size:20}),onClick:()=>t.editor.open([]),children:"Settings"})})})]})}),l_=S.observer(function({config:e}){return s.jsxs(s.Fragment,{children:[s.jsx(a.Checkbox,{checked:e.default_value,onChange:n=>e.setDefaultValue(n.currentTarget.checked),label:"Default Checked"}),s.jsx(Js,{label:"Description",value:e.description,onChange:e.setDescription,styles:{root:{flexGrow:1,minHeight:"400px"}}})]})}),u_=[{label:"2022",value:"YYYY"},{label:"202201",value:"YYYYMM"},{label:"20220101",value:"YYYYMMDD"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}],c_=S.observer(function({config:e}){return s.jsxs(s.Fragment,{children:[s.jsxs(a.Group,{children:[s.jsx(a.Checkbox,{checked:e.required,onChange:n=>e.setRequired(n.currentTarget.checked),label:"Required"}),s.jsx(a.Checkbox,{checked:e.clearable,onChange:n=>e.setClearable(n.currentTarget.checked),disabled:e.max_days>0,label:"Clearable"}),s.jsx(a.Checkbox,{checked:e.allowSingleDateInRange,onChange:n=>e.setAllowSingleDateInRange(n.currentTarget.checked),label:"Allow choosing 1 day"})]}),s.jsx(a.Select,{data:u_,label:"Display Format",value:e.inputFormat,onChange:e.setInputFormat}),s.jsx(lo,{label:"Default Value",config:e,value:e.default_value,onChange:e.setDefaultValue}),s.jsx(a.NumberInput,{label:"Max Days",description:s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Text,{children:"Set 0 to disable."}),s.jsxs(a.Group,{spacing:4,children:[s.jsx(a.Text,{children:"This feature requires"}),s.jsx(a.Text,{color:"blue",children:"Clearable"}),s.jsx(a.Text,{children:"to be checked"})]})]}),min:0,value:e.max_days,onChange:e.setMaxDays,hideControls:!0})]})}),Tr=S.observer(({value:t,onChange:e})=>{const n=Z(),r=J(),i=f.useMemo(()=>r.queries.options,[r.queries.current]),o=i.length===0,l=u=>{n.editor.setPath(["_QUERIES_",u])};return s.jsx(a.Select,{label:s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Text,{children:"Use query data as options"}),t&&s.jsx(a.Button,{size:"xs",leftIcon:s.jsx(D.IconArrowCurveRight,{size:16}),variant:"subtle",color:"blue",onClick:()=>l(t),children:"Open this query"})]}),data:i,value:t,onChange:e,allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:o,error:o?"You need to add a query in Data Settings":void 0,styles:{label:{display:"block"}}})}),d_=`
443
+ `}})).actions(t=>({setPage(e){t.page=e},resetPage(){t.page=1},setLimit(e){t.limit=e}})).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>t.keywordString,t.resetPage,{fireImmediately:!1,delay:0})),g.addDisposer(t,W.reaction(()=>t.limit,t.resetPage,{fireImmediately:!1,delay:0}))}})),w1=g.types.model({data:g.types.optional(g.types.frozen(),{}),state:g.types.optional(g.types.enumeration(["idle","loading","error"]),"idle"),error:g.types.frozen()}).views(t=>({get loading(){return t.state==="loading"},get empty(){return Object.keys(t.data).length===0}})),C1=g.types.compose("DataSourceModel",ko,g.types.model({tables:g.types.optional(w1,{}),columns:g.types.optional(b1,{}),tableData:g.types.optional(j1,{}),indexes:g.types.optional(v1,{}),table_schema:g.types.optional(g.types.string,""),table_name:g.types.optional(g.types.string,"")})).views(t=>({get sqlDataSourceType(){return t.type},get reloadConditionString(){const{type:e,table_name:n,table_schema:r}=t;return`${e};${n};${r}`}})).volatile(()=>({controllers:{tables:new AbortController,columns:new AbortController,indexes:new AbortController,tableData:new AbortController}})).actions(t=>({setKeywords(e,n){t.table_schema=e,t.table_name=n}})).actions(t=>({initKeywords(){if(t.tables.empty)return;const e=Object.keys(t.tables.data)[0],n=t.tables.data[e][0].table_name;t.setKeywords(e,n)}})).actions(t=>{const e=g.flow(function*(){var n;(n=t.controllers.tables)==null||n.abort(),t.controllers.tables=new AbortController,t.tables.state="loading";try{const r=yield*g.toGenerator(Ke.structure(t.controllers.tables.signal)({query_type:"TABLES",type:t.sqlDataSourceType,key:t.key,table_schema:"",table_name:""},{params:{query_type:"TABLES"}}));t.tables.data=b.groupBy(r,"table_schema"),t.tables.state="idle",t.tables.error=null,t.initKeywords()}catch(r){if(!et.isCancel(r)){t.tables.data={};const i=b.get(r,"message","unkown error");t.tables.error=b.get(r,"response.data.detail.message",i),t.tables.state="error"}}});return{loadTables:e,loadTablesIfEmpty(){t.tables.empty&&e()},loadColumns:g.flow(function*(){var n;(n=t.controllers.columns)==null||n.abort(),t.controllers.columns=new AbortController,t.columns.state="loading";try{t.columns.data=yield*g.toGenerator(Ke.structure(t.controllers.columns.signal)({query_type:"COLUMNS",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name},{params:{query_type:"COLUMNS"}})),t.columns.state="idle",t.columns.error=null}catch(r){if(et.isCancel(r))t.columns.state="idle",t.columns.error=null;else{t.columns.data=[];const i=b.get(r,"message","unkown error");t.columns.error=b.get(r,"response.data.detail.message",i),t.columns.state="error"}}}),loadIndexes:g.flow(function*(){var n;(n=t.controllers.indexes)==null||n.abort(),t.controllers.indexes=new AbortController,t.indexes.state="loading";try{t.indexes.data=yield*g.toGenerator(Ke.structure(t.controllers.indexes.signal)({query_type:"INDEXES",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name},{params:{query_type:"INDEXES"}})),t.indexes.state="idle",t.indexes.error=null}catch(r){if(et.isCancel(r))t.indexes.state="idle",t.indexes.error=null;else{t.indexes.data=[];const i=b.get(r,"message","unkown error");t.indexes.error=b.get(r,"response.data.detail.message",i),t.indexes.state="error"}}}),loadTableData:g.flow(function*(){var r;(r=t.controllers.tableData)==null||r.abort(),t.controllers.tableData=new AbortController;const n=t.tableData;n.state="loading";try{n.data=yield*g.toGenerator(Ke.structure(t.controllers.tableData.signal)({query_type:"DATA",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name,limit:n.limit,offset:n.offset},{params:{query_type:"DATA"}}));const[{total:i}]=yield*g.toGenerator(Ke.structure(t.controllers.tableData.signal)({query_type:"COUNT",type:t.sqlDataSourceType,key:t.key,table_schema:t.table_schema,table_name:t.table_name},{params:{query_type:"COUNT"}}));n.total=Number(i),n.state="idle",n.error=null}catch(i){if(et.isCancel(i))n.state="idle",n.error=null;else{n.data=[];const o=b.get(i,"message","unkown error");n.error=b.get(i,"response.data.detail.message",o),n.state="error"}}})}}).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>t.reloadConditionString,t.loadColumns,{fireImmediately:!1,delay:500}))}})).actions(t=>({afterCreate(){g.addDisposer(t,W.reaction(()=>t.reloadConditionString,t.loadIndexes,{fireImmediately:!1,delay:500})),g.addDisposer(t,W.reaction(()=>`${t.reloadConditionString};limit:${t.tableData.limit};offset:${t.tableData.offset}`,t.loadTableData,{fireImmediately:!1,delay:0}))}})),S1=g.types.model("DataSourcesModel",{list:g.types.optional(g.types.array(C1),[])}).views(t=>({find({type:e,key:n}){return t.list.find(r=>r.key===n&&r.type===e)},get options(){return t.list.map(e=>({value:e.key,label:e.key}))}})).actions(t=>({replace(e){t.list.length=0,t.list.push(...e)}}));function Et(t){return{label:t,value:t,_type:"ACTION",_action_type:t,Icon:null,children:null}}function _1(t){switch(t._type){case"GROUP":case"ACTION":return null;case"query_variables":return["_QUERY_VARS_"];case"mock_context":return["_MOCK_CONTEXT_"];case"filter":return["_FILTERS_",t.value];case"sql_snippet":return["_SQL_SNIPPETS_",t.value];case"query":return["_QUERIES_",t.value];case"view":return["_VIEWS_",t.value];case"panel":return t.parentID?["_VIEWS_",t.parentID,"_PANELS_",t.value]:(console.error("[getPathFromOption] parentID is required"),null)}}const k1=g.types.model("EditorModel",{path:g.types.optional(g.types.frozen(),[]),settings_open:g.types.optional(g.types.boolean,!1)}).views(t=>({get navOptions(){const{content:e}=g.getRoot(t),{filters:n,views:r,sqlSnippets:i,queries:o}=e;return[{label:"Query Variables",value:"_QUERY_VARS_",_type:"query_variables",Icon:D.IconVariable},{label:"Mock Context",value:"_MOCK_CONTEXT_",Icon:D.IconCodeDots,_type:"mock_context"},{label:"Filters",value:"_FILTERS_",Icon:D.IconFilter,children:[...n.options,Et("_Add_A_Filter_")],_type:"GROUP"},{label:"SQL Snippets",value:"_SQL_SNIPPETS_",Icon:D.IconCopy,children:[Et("_SQL_SNIPPETS_SETTINGS_"),...i.options,Et("_Add_A_SQL_SNIPPET_")],_type:"GROUP"},{label:"Queries",value:"_QUERIES_",Icon:D.IconDatabase,children:[Et("_QUERIES_SETTINGS_"),...o.options,Et("_Add_A_QUERY_")],_type:"GROUP"},{label:"Views",value:"_VIEWS_",Icon:D.IconBoxMultiple,children:[...r.editorOptions,Et("_Add_A_VIEW_")],_type:"GROUP"}]},isOptionActive(e,n){return e.length===0?!1:e[e.length-1]===n.value},isOptionOpened(e){const{path:n}=t;return n.length===0||!e.children||e.children.length===0?!1:n.includes(e.value)}})).actions(t=>({setPath(e){t.path=e},setSettingsOpen(e){t.settings_open=e}})).actions(t=>({open(e){t.setPath(e),t.setSettingsOpen(!0)},close(){t.setSettingsOpen(!1)},navigate(e){const n=_1(e);n&&t.setPath(n)}})),il=Mo.views(t=>({get dataFieldOptions(){return t.queryIDs.length===0?[]:t.queries.map(e=>{const n=e.data;return n.length===0?[]:Object.keys(n[0]).map(i=>({label:i,value:`${e.id}.${i}`,group:e.name}))}).flat()}})).actions(t=>({removeSelf(){g.getParent(t,2).removeByID(t.id)}})).actions(t=>({moveToView(e,n){g.getRoot(t).content.views.findByID(e).removePanelID(t.id),g.getRoot(t).content.views.findByID(n).appendPanelID(t.id),g.getRoot(t).editor.setPath(["_VIEWS_",n,"_PANELS_",t.id])}})),al=g.types.compose("PanelsModel",Ao,g.types.model({list:g.types.optional(g.types.array(il),[])})).views(t=>({editorOptions(e,n){const{panels:r}=t.panelsByIDs(n);r.length!==n.length&&console.warn(`Unfulfilled panels for View[${e}]`);const i=r.map(l=>({label:l.name,value:l.id,_type:"panel",parentID:e})),o="_Add_A_PANEL_";return i.push({label:o,value:o,_type:"ACTION",_action_type:o,parentID:e,Icon:null,children:null}),i}})).actions(t=>({replace(e){t.list=g.castToSnapshot(e)},append(e){t.list.push(e)},remove(e){t.list.splice(e,1)},removeByID(e){const n=t.list.findIndex(r=>r.id===e);n!==-1&&t.list.splice(n,1)},removeByIDs(e){e.forEach(n=>{this.removeByID(n)})},duplicateByID(e){const n=t.list.find(i=>i.id===e);if(!n){console.error(new Error(`[duplicate panel] Can't find a panel by id[${e}]`));return}const r=new Date().getTime().toString();return t.list.push({...n.json,id:r,title:{...n.json.title},layout:{...n.layout,y:1/0,moved:!1}}),r},replaceByIndex(e,n){t.list.splice(e,1,n)}})),ol=g.types.compose("ViewsModel",Io,g.types.model({idOfVIE:g.types.string})).views(t=>({get isVIETheFirstView(){return t.current.length===0||!t.idOfVIE?!1:t.current[0].id===t.idOfVIE},get VIE(){return t.current.find(({id:e})=>e===t.idOfVIE)},get options(){return t.current.map(e=>({label:e.name,value:e.id,type:e.type}))},get editorOptions(){const e=g.getRoot(t).content.panels;return t.current.map(n=>({label:n.name,value:n.id,_type:"view",children:e.editorOptions(n.id,n.panelIDs)}))}})).actions(t=>({setIDOfVIE(e){t.idOfVIE=e,t.visibleViewIDs.length=0,t.visibleViewIDs.push(e)},replace(e){t.current.replace(e)},addANewView(e,n,r,i){t.current.push({id:e,name:n,type:r,config:i,panelIDs:[]})},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(o=>o.id===e);if(n===-1)return;const r=t.current[n];g.getRoot(t).content.panels.removeByIDs(r.panelIDs),t.current.splice(n,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},addARandomNewView(){const e=new Date().getTime().toString();this.addANewView(e,L.Division,L.Division,{_name:L.Division}),this.setIDOfVIE(e)},removeVIE(){t.current.length!==1&&(this.removeByID(t.idOfVIE),this.setIDOfVIE(t.current[0].id))}}));function wr(t){const e=t.length>0?[t[0].id]:[],n=t.length>0?t[0].id:"";return{current:t.map(i=>{const{_name:o=i.type}=i.config;return{...i,config:{...i.config,_name:o},panelIDs:i.panelIDs}}),visibleViewIDs:e,idOfVIE:n}}const T1=g.types.model({id:g.types.string,name:g.types.string,dashboard_id:g.types.string,create_time:g.types.string,update_time:g.types.string,version:g.types.string,filters:nl,queries:sl,sqlSnippets:rl,views:ol,panels:al,mock_context:po,origin:g.types.maybe(g.types.frozen())}).views(t=>({get json(){return{id:t.id,name:t.name,create_time:t.create_time,update_time:t.update_time,dashboard_id:t.dashboard_id,content:{views:t.views.json,panels:t.panels.json,filters:t.filters.json,version:t.version,definition:{queries:t.queries.json,sqlSnippets:t.sqlSnippets.json,mock_context:t.mock_context.current}}}},get filtersChanged(){const e="filters.current";return!b.isEqual(g.getSnapshot(b.get(t,e)),b.get(t.origin,e))},get queriesChanged(){const e="queries.current",n=g.getSnapshot(b.get(t,e)).map(r=>b.pick(r,["id","name","key","type","sql","run_by","react_to","pre_process","post_process"]));return!b.isEqual(n,b.get(t.origin,e))},get sqlSnippetsChanged(){const e="sqlSnippets.current";return!b.isEqual(g.getSnapshot(b.get(t,e)),b.get(t.origin,e))},get viewsChanged(){const e="views.current";return!b.isEqual(t.views.json,b.get(t.origin,e))},get panelsChanged(){const e="panels.list";return!b.isEqual(g.getSnapshot(b.get(t,e)),b.get(t.origin,e))},get mockContextChanged(){const e="mock_context.current";return!b.isEqual(b.get(t,e),b.get(t.origin,e))},get payloadForSQL(){const e=g.getParent(t).context.current,n=g.getParent(t).globalSQLSnippets,r={context:{...t.mock_context.current,...e},filters:t.filters.values};return{...r,sql_snippets:qn(t.sqlSnippets.current,"key","value",r),global_sql_snippets:qn(n.list,"id","content",r)}},get payloadForViz(){const e=g.getParent(t).context.current;return{context:{...t.mock_context.current,...e},filters:t.filters.values}},get dashboardState(){return rs(this.payloadForSQL)},getAdditionalQueryInfo(e){return{content_id:t.id,query_id:e,params:this.dashboardState}},get changed(){return this.filtersChanged||this.queriesChanged||this.sqlSnippetsChanged||this.viewsChanged||this.panelsChanged||this.mockContextChanged},get data(){return t.queries.current.map(({id:n,data:r})=>({id:n,data:r})).reduce((n,r)=>(n[r.id]=r.data,n),{})},getDataStuffByID(e){const n=t.queries.findByID(e);return n?{data:n.data,len:n.data.length,state:n.state,error:n.error}:{data:[],len:0,state:"idle",error:void 0}}})).views(t=>({get queriesUsage(){const e=t.panels.idMap,n=[];t.views.current.forEach(i=>{i.panelIDs.forEach(o=>{const l=e.get(o);if(!l)return;const u="panel",c=l.name,d=[{id:i.id,label:i.name}];l.queryIDs.forEach(p=>{n.push({id:o,queryID:p,type:u,label:c,views:d})})})});const r=t.views.idMap;return t.filters.current.filter(i=>!!b.get(i,"config.options_query_id")).forEach(i=>{n.push({type:"filter",id:i.id,queryID:b.get(i,"config.options_query_id"),label:i.label,views:i.visibleInViewsIDs.map(o=>{var l;return{id:o,label:((l=r.get(o))==null?void 0:l.name)??o}})})}),b.groupBy(n,"queryID")},get hasUnusedQueries(){return t.queries.current.length>Object.keys(this.queriesUsage).length},findQueryUsage(e){return this.queriesUsage[e]??[]},get sqlSnippetsUsage(){const e=[],n=new RegExp("(?<=sql_snippets\\.)([^}.]+)","gm");return t.queries.current.forEach(r=>{if(!r.typedAsSQL)return;b.uniq(r.sql.match(n)).forEach(o=>{e.push({queryID:r.id,sqlSnippetKey:o,queryName:r.name})})}),b.groupBy(e,"sqlSnippetKey")},get hasUnusedSQLSnippets(){return t.sqlSnippets.current.length>Object.keys(this.sqlSnippetsUsage).length},findSQLSnippetUsage(e){return this.sqlSnippetsUsage[e]??[]}})).actions(t=>({removeUnusedQueries(){const e=new Set(Object.keys(t.queriesUsage)),n=t.queries.current.filter(r=>!e.has(r.id)).map(r=>r.id);t.queries.removeQueries(n)},removeUnusedSQLSnippets(){const e=new Set(Object.keys(t.sqlSnippetsUsage)),n=t.sqlSnippets.current.filter(r=>!e.has(r.key)).map(r=>r.key);t.sqlSnippets.removeByKeys(n)},duplicatePanelByID(e,n){var i;const r=t.panels.duplicateByID(e);r&&((i=t.views.findByID(n))==null||i.appendPanelID(r))},removePanelByID(e,n){var r;t.panels.removeByID(e),(r=t.views.findByID(n))==null||r.removePanelID(e)},addANewPanel(e){var r;const n=new Date().getTime().toString();t.panels.append(jS(n)),(r=t.views.findByID(e))==null||r.appendPanelID(n)}})).actions(t=>({reset(){g.applySnapshot(t.filters.current,t.origin.filters.current),g.applySnapshot(t.queries.current,t.origin.queries.current),g.applySnapshot(t.sqlSnippets.current,t.origin.sqlSnippets.current),g.applySnapshot(t.views.current,t.origin.views.current),g.applySnapshot(t.panels.list,t.origin.panels.list),t.mock_context.current=t.origin.mock_context.current},resetFilters(){g.applySnapshot(t.filters.current,t.origin.filters.current)},updateCurrent(e){const{id:n,name:r,content:i}=e;if(!i)throw new Error("unexpected null content when updating a content model");const{version:o,filters:l,views:u,panels:c,definition:{queries:d,sqlSnippets:p,mock_context:h={}}}=i;t.id=n,t.name=r,t.version=o,g.applySnapshot(t.filters.current,l),g.applySnapshot(t.views.current,wr(u).current),g.applySnapshot(t.panels.list,c),g.applySnapshot(t.queries.current,d),g.applySnapshot(t.sqlSnippets.current,p),t.mock_context.current=h}})),Cr=g.types.snapshotProcessor(T1,{preProcessor(t){return{...t,origin:t}},postProcessor(t){delete t.origin;const e=g.castToSnapshot(t.queries.current.map(n=>b.pick(n,["id","key","type","sql"])));return b.defaults({},{queries:{current:e}},t)}});function D1(t,e){e.filters&&g.applySnapshot(t.filters.current,e.filters)}function ll({id:t,name:e,dashboard_id:n,create_time:r,update_time:i,content:o}){if(!o)throw new Error("unexpected null content when creating a content model");const{version:l,filters:u,views:c,panels:d,definition:{queries:p,sqlSnippets:h,mock_context:x={}}}=o;return Cr.create({id:t,name:e,dashboard_id:n,create_time:r,update_time:i,version:l,filters:Po(u),queries:{current:p},sqlSnippets:{current:h},mock_context:ho(x),views:wr(c),panels:{list:d}})}const ul=g.types.model({id:g.types.identifier,name:g.types.string,group:g.types.string,content:Cr,content_id:g.types.string,datasources:S1,globalSQLSnippets:To,context:mr,editor:k1}).views(t=>({get json(){return{id:t.id,name:t.name,group:t.group,content_id:t.content_id}}})).actions(t=>({updateCurrentContent(e){t.content.updateCurrent(e)},updateCurrent(e,n){const{id:r,name:i,group:o,content_id:l}=e;t.id=r,t.name=i,t.group=o,t.content_id=l,this.updateCurrentContent(n)}}));function cl({id:t,name:e,group:n,content_id:r},i,o,l,u){return ul.create({id:t,name:e,group:n,content_id:r,content:ll(i),datasources:{list:o},globalSQLSnippets:{list:l},context:Do(u),editor:{}})}function dl(t,e){f.useEffect(()=>{const n=r=>{console.log(r);const{viewID:i}=r.detail;if(!i){console.error(new Error("[Open View] Needs to pick a view first"));return}t.views.appendToVisibles(i),e&&t.views.setIDOfVIE(i)};return window.addEventListener("open-view",n),()=>{window.removeEventListener("open-view",n)}},[t,e]),f.useEffect(()=>{const n=r=>{console.log(r);const{dictionary:i,payload:o}=r.detail;if(!o||Object.keys(o).length===0){console.error(new Error("[Set Filter Values] payload is empty"));return}Object.entries(i).forEach(([l,u])=>{t.filters.setValueByKey(l,b.get(o,u))})};return window.addEventListener("set-filter-values",n),()=>{window.removeEventListener("set-filter-values",n)}},[t]),f.useEffect(()=>{function n(i){return Array.isArray(i)?[]:typeof i=="object"?{}:typeof i=="boolean"?!1:typeof i=="string"?"":typeof i=="number"?0:i}const r=i=>{console.log(i);const{filter_keys:o}=i.detail;o.forEach(l=>{const u=b.get(t.filters.values,l),c=n(u);console.log(`${l}: ${c}`),t.filters.setValueByKey(l,c)})};return window.addEventListener("clear-filter-values",r),()=>{window.removeEventListener("clear-filter-values",r)}},[t]),f.useEffect(()=>{const n=r=>{console.log(r);const{urlTemplate:i,openInNewTab:o,enableEncoding:l=!1,payload:u}=r.detail;if(!i){console.error(new Error("[Open Link] URL is empty"));return}function c(h){return b.cloneDeepWith(h,m=>{if(l&&typeof m=="string")return encodeURIComponent(m)})}const p=b.template(i||"")(c({...u,filters:t.payloadForSQL.filters,context:t.payloadForSQL.context}));window.open(p,o?"_blank":"_self","noopener")};return window.addEventListener("open-link",n),()=>{window.removeEventListener("open-link",n)}},[t])}function pl(t){return f.useCallback(e=>e.provideValue(le.pluginManager,t.pluginManager).provideValue(le.vizManager,t.vizManager).provideValue(le.colorManager,t.colorManager),[])}const wD="",I1=S.observer(()=>{const t=cs(),e=J(),n=()=>{const r=JSON.stringify(e.json,null,2),i=`${t.name}__${e.name}`;Bo(i,r)};return s.jsxs(a.Menu,{shadow:"md",width:200,trigger:"hover",openDelay:100,closeDelay:400,withinPortal:!0,zIndex:310,children:[s.jsx(a.Menu.Target,{children:s.jsx(a.ActionIcon,{variant:"light",color:"blue",children:s.jsx(D.IconMenu2,{size:14})})}),s.jsxs(a.Menu.Dropdown,{children:[s.jsx(a.Menu.Item,{icon:s.jsx(D.IconDownload,{size:14}),onClick:e.queries.downloadAllData,children:"Download Data"}),s.jsx(a.Menu.Item,{icon:s.jsx(D.IconCode,{size:14}),onClick:n,children:"Download Schema"})]})]})}),M1=S.observer(({saveDashboardChanges:t})=>{const e=Me.useModals(),n=J(),r=()=>{e.openConfirmModal({title:s.jsxs(a.Group,{position:"left",children:[s.jsx(D.IconAlertTriangle,{size:18,color:"red"}),s.jsx(a.Text,{children:"You are reverting changes"})]}),labels:{confirm:"Confirm",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:()=>n.reset(),zIndex:320,withCloseButton:!1})},i=n.changed;return s.jsxs(a.Group,{spacing:0,children:[s.jsx(a.Button,{color:"green",variant:"filled",size:"xs",leftIcon:s.jsx(D.IconDeviceFloppy,{size:18}),onClick:t,disabled:!i,sx:{borderTopRightRadius:0,borderBottomRightRadius:0},children:"Save Changes"}),s.jsxs(a.Menu,{width:200,trigger:"hover",openDelay:100,closeDelay:400,withinPortal:!0,zIndex:320,disabled:!i,children:[s.jsx(a.Menu.Target,{children:s.jsx(a.ActionIcon,{variant:"default",disabled:!i,sx:{height:"30px",borderTopLeftRadius:0,borderBottomLeftRadius:0,svg:{fill:"rgb(173, 181, 189)",stroke:"none"}},children:s.jsx(D.IconCaretDown,{size:18})})}),s.jsx(a.Menu.Dropdown,{children:s.jsx(a.Menu.Item,{icon:s.jsx(D.IconRecycle,{size:14,color:"red"}),disabled:!i,onClick:r,children:"Revert Changes"})})]})]})}),A1=S.observer(({saveDashboardChanges:t,headerSlot:e=null})=>{const n=qu.useNavigate(),r=Z(),i=()=>{n(`/dashboard/${r.id}`)},o=Me.useModals(),l=()=>{o.openConfirmModal({title:s.jsxs(a.Group,{position:"left",children:[s.jsx(D.IconAlertTriangle,{size:18,color:"red"}),s.jsx(a.Text,{children:"There are unsaved changes"})]}),labels:{confirm:"Discard",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:i,zIndex:320,withCloseButton:!1})},u=r.content.changed;return s.jsx(a.Header,{height:60,px:"md",py:0,sx:{zIndex:299},children:s.jsxs(a.Group,{position:"apart",sx:{height:60,minWidth:"1000px",position:"relative"},children:[s.jsxs(a.Group,{children:[s.jsx(a.Button,{size:"xs",color:u?"red":"green",leftIcon:s.jsx(D.IconArrowLeft,{size:20}),onClick:u?l:i,children:s.jsxs(a.Group,{spacing:4,children:["End Editing",s.jsx(a.Text,{td:"underline",children:r.name})]})}),s.jsx(M1,{saveDashboardChanges:t})]}),s.jsxs(a.Group,{position:"right",sx:{flexGrow:1},children:[e,s.jsx(I1,{})]})]})})}),z1={position:"fixed",top:60,left:0,right:0,height:30,zIndex:299,borderBottom:"1px solid #e9ecef",background:"rgba(233,236,239, 0.15)"},E1=S.observer(()=>{var n;const t=J(),e=((n=t.views.VIE)==null?void 0:n.type)===L.Tabs;return s.jsx(a.Box,{sx:z1,pl:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},children:s.jsxs(a.Group,{position:"apart",align:"center",sx:{height:"30px"},pr:16,children:[s.jsx(a.Button,{variant:"outline",color:"blue",radius:0,size:"xs",disabled:!t.views.VIE||e,onClick:()=>t.addANewPanel(t.views.idOfVIE),leftIcon:s.jsx(D.IconPlaylistAdd,{size:20}),sx:{height:"30px",borderLeft:"none",borderTop:"none",borderRight:"1px solid #e9ecef",borderBottom:"1px solid #e9ecef",background:"rgb(231, 245, 255)"},children:"Add a Panel"}),s.jsx(a.Box,{}),s.jsx(a.Box,{})]})})}),P1=S.observer(t=>s.jsxs(s.Fragment,{children:[s.jsx(A1,{...t}),s.jsx(E1,{})]})),CD="";function L1(t,e,n){const r=[];return t.filter(i=>"__INTERACTIONS"in i.viz.conf).forEach((i,o)=>{const l=e[i.id];l.data.interactions=b.get(l,"data.interactions",[]);const{__INTERACTIONS:u,__OPERATIONS:c,__TRIGGERS:d}=i.viz.conf;Object.entries(c).forEach(([p,h])=>{const{schemaRef:x,data:m}=h,{config:v}=m;switch(x){case"builtin:op:open-link":let C=v.urlTemplate.substring(0,100);v.urlTemplate.length>=20&&(C+="..."),l.type="interaction",l.data.interactions.push({schemaRef:x,urlTemplate:v.urlTemplate,shortURLTemplate:C});return;case"builtin:op:open_view":r.push({id:`OPERATION--${p}`,source:i.id,target:v.viewID,label:"Open View",style:{stroke:"rgba(0,0,0,0.8)"},type:"default"});return;case"builtin:op:set_filter_values":l.type="interaction",l.data.interactions.push({schemaRef:x,filters:Object.keys(v.dictionary).map(k=>({key:k,label:n[k]}))});return;case"builtin:op:clear_filter_values":l.type="interaction",l.data.interactions.push({schemaRef:x,filters:v.filter_keys.map(k=>({key:k,label:n[k]}))});return;default:return}})}),r}function O1(t,e){const n=t.filters.keyLabelMap;return{edges:L1(t.panels.list,e,n),edgeNodes:[]}}function hl(t,e,n){return t*e+t*n}function B1(t,e,n){return t*e+(t-1)*n}const Wn=25,Sr=40,xl=25,_r=350,$1=150,V1=150,fl=150,gl=300,Rn=40,ml=25,N1=300;function q1(t,e){const n=b.keyBy(e,i=>i.id),r=[];return t.current.forEach((i,o)=>{i.panelIDs.forEach((l,u)=>{const c=hl(u,Rn,ml)+Sr,d=n[l];if(!d){r.push({id:l,_node_type:"panel",parentNode:i.id,data:{label:`!: ${l}`},position:{x:Wn,y:c},sourcePosition:be.Position.Right,targetPosition:be.Position.Left,style:{width:gl,height:Rn}});return}const p=d.name;r.push({id:d.id,_node_type:"panel",parentNode:i.id,data:{label:p},position:{x:Wn,y:c},sourcePosition:be.Position.Right,targetPosition:be.Position.Left,style:{width:gl,height:Rn}})})}),r}const F1={[L.Division]:"Div",[L.Modal]:"Modal",[L.Tabs]:"Tabs"},G1=tl;function W1(t){return t.current.map((n,r)=>{const i=B1(n.panelIDs.length,Rn,ml)+Sr+xl;let o=[];return n.type===L.Tabs&&(o=n.config.tabs.map(u=>u.view_id)),{id:n.id,_node_type:"view-root",_view_type:n.type,_view_level:0,_sub_view_ids:[],_tab_view_ids:o,data:{label:`${F1[n.type]}:${n.name}`},position:{x:0,y:0},sourcePosition:be.Position.Right,targetPosition:be.Position.Left,className:"light",style:{backgroundColor:G1[n.type],width:_r,height:i}}})}function R1(t){const e=b.keyBy(t,n=>n.id);t.forEach(n=>{n._node_type!=="view-root"||n._view_type!==L.Tabs||n._tab_view_ids.forEach(r=>{e[r].parentNode=n.id})})}function Q1(t){const e=W1(t.views);R1(e);const n=q1(t.views,t.panels.list);return[...e,...n]}function U1({nodeMap:t,nodes:e,edges:n}){e.forEach(r=>{r._node_type!=="view-root"||r._view_type!==L.Tabs||(r.sourcePosition=be.Position.Bottom,r.style.width=_r+Wn*2,r.style.height=xl+r._tab_view_ids.reduce((i,o)=>{const l=t[o];l.position.y=i,l.position.x=Wn;const u=l.style.height;return i+u+20},Sr))})}function K1({nodeMap:t,nodes:e,edges:n}){n.filter(r=>r.label==="Open View").forEach(r=>{const i=t[r.source],o=t[r.target];if(!i||!o||!i.parentNode)return;const l=t[i.parentNode];l._node_type!=="view-root"||o._node_type!=="view-root"||(o._view_level+=1+l._view_level,l._sub_view_ids.push(o.id))}),e.sort((r,i)=>r._node_type==="view-root"&&i._node_type==="view-root"?r._view_level-i._view_level:r._node_type!=="view-root"&&i._node_type!=="view-root"?0:r._node_type==="view-root"?-1:1)}function Y1({nodeMap:t,nodes:e,edges:n}){const r={};n.forEach(i=>{if(i.label!=="Open View")return;const o=t[i.source],l=t[i.target];if(o&&l&&o.parentNode){const u=t[o.parentNode],c=u.position.x,d=Number(b.get(l,"style.height",0)),p=Number(u.style.width);l.position.x=c+p+N1,u._view_level===0&&l._sub_view_ids.length===0&&(o.sourcePosition=be.Position.Left,l.targetPosition=be.Position.Right,l.position.x*=-1);const x=l.position.x,m=b.get(r,x,0);l.position.y=m,r[x]=m+d+fl}})}function X1({nodeMap:t,nodes:e,edges:n}){const r=new Set,i=new Set;n.forEach(l=>{r.add(l.source),i.add(l.target)}),e.filter(l=>l._node_type!=="view-root"||l.id==="Main"||l.parentNode?!1:!r.has(l.id)&&!i.has(l.id)).forEach((l,u)=>{l.position.x=hl(u,_r,V1),l.position.y=0-$1-fl})}function J1({nodeMap:t,nodes:e,edges:n}){const r={nodeMap:t,nodes:e,edges:n};return X1(r),K1(r),U1(r),Y1(r),{nodes:e,edges:n}}function Z1(t){const e=Q1(t),n=b.keyBy(e,c=>c.id),{edges:r,edgeNodes:i}=O1(t,n),o=[...e,...i],l=b.keyBy(o,c=>c.id),u={edges:b.uniqBy(r,c=>c.id),nodes:o,nodeMap:l};return J1(u)}const SD="",kr={"builtin:op:open-link":s.jsx(a.ThemeIcon,{color:"blue",size:20,radius:"xl",children:s.jsx(D.IconCircleDashed,{size:14})}),"builtin:op:set_filter_values":s.jsx(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:s.jsx(D.IconCircleDot,{size:14})}),"builtin:op:clear_filter_values":s.jsx(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:s.jsx(D.IconCircleOff,{size:14})})};function H1(t){const e=[];return t.forEach(n=>{switch(n.schemaRef){case"builtin:op:open-link":e.push({key:n.urlTemplate,icon:kr[n.schemaRef],text:s.jsxs(a.Group,{spacing:4,children:[s.jsx(a.Text,{children:"Open: "}),s.jsx(a.Text,{color:"dimmed",children:n.shortURLTemplate})]})});return;case"builtin:op:set_filter_values":n.filters.forEach(({key:r,label:i})=>{e.push({key:n.schemaRef+r,icon:kr[n.schemaRef],text:s.jsx(a.Group,{spacing:4,children:s.jsxs(a.Text,{children:["Set Filter: ",i]})})})});return;case"builtin:op:clear_filter_values":n.filters.forEach(({key:r,label:i})=>{e.push({key:n.schemaRef+r,icon:kr[n.schemaRef],text:s.jsx(a.Group,{spacing:4,children:s.jsxs(a.Text,{children:["Clear Filter: ",i]})})})});return}}),e}const e_=f.memo(({data:t,isConnectable:e,sourcePosition:n=be.Position.Right,targetPosition:r=be.Position.Left,...i})=>{const o=f.useMemo(()=>H1(t.interactions),[t.interactions]);return s.jsxs(s.Fragment,{children:[s.jsx(be.Handle,{type:"target",position:r,isConnectable:e}),s.jsx(a.Box,{sx:{position:"absolute",top:0,right:0},children:s.jsx(_.ChevronsUpRight,{size:12})}),s.jsxs(a.HoverCard,{shadow:"xl",withinPortal:!0,children:[s.jsx(a.HoverCard.Target,{children:s.jsx(a.Text,{children:t.label})}),s.jsx(a.HoverCard.Dropdown,{children:s.jsx(a.List,{spacing:"xs",size:"sm",center:!0,children:o.map(l=>s.jsx(a.List.Item,{icon:l.icon,children:l.text},l.key))})})]}),s.jsx(be.Handle,{type:"source",position:n,isConnectable:e})]})}),_D="",t_={interaction:e_},n_=S.observer(()=>{const t=oe(),{edges:e,nodes:n}=Z1(t);return s.jsxs(be,{nodes:n,edges:e,onNodesChange:b.noop,onEdgesChange:b.noop,onConnect:b.noop,className:"interactions-viewer",fitView:!0,nodeTypes:t_,children:[s.jsx(be.MiniMap,{}),s.jsx(be.Controls,{}),s.jsx(be.Background,{})]})}),s_=S.observer(({opened:t,close:e})=>s.jsx(a.Modal,{size:"96vw",opened:t,onClose:e,title:"Interactions",trapFocus:!0,onDragStart:n=>{n.stopPropagation()},styles:{body:{height:"calc(90vh - 54px)"},content:{transform:"none !important"}},zIndex:300,children:s.jsx(n_,{})})),r_={"> button":{"&:first-of-type":{borderTopRightRadius:0,borderBottomRightRadius:0,borderRightWidth:.5},":not(:first-of-type):not(:last-of-type)":{borderTopRightRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5,borderRightWidth:.5},"&:last-of-type":{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5}}};function i_({onClick:t,name:e,active:n,openSettings:r}){return s.jsxs(a.Box,{sx:{position:"relative"},children:[s.jsx(a.UnstyledButton,{sx:i=>({display:"block",width:"100%",padding:i.spacing.xs,borderRadius:0,position:"relative",color:i.black,"&:hover":{backgroundColor:i.colors.gray[0]},backgroundColor:n?i.colors.gray[2]:"transparent"}),children:s.jsx(a.Group,{sx:{width:"calc(100% - 28px)"},onClick:t,children:s.jsx(a.Text,{size:"sm",children:e})})}),n&&s.jsx(a.Tooltip,{label:"Edit",position:"right",withinPortal:!0,children:s.jsx(a.ActionIcon,{onClick:r,variant:"light",color:"blue",sx:{position:"absolute",top:0,bottom:0,height:"100%",right:0,zIndex:0,borderRadius:0},children:s.jsx(D.IconAdjustments,{size:16})})})]})}const a_=S.observer(()=>{const t=Z(),e=J(),n=f.useCallback(i=>()=>e.views.setIDOfVIE(i),[e]),r=i=>{t.editor.open(["_VIEWS_",i])};return s.jsxs(a.Box,{sx:{position:"relative"},children:[e.views.options.map(i=>s.jsx(i_,{active:e.views.idOfVIE===i.value,name:i.label,onClick:n(i.value),openSettings:()=>r(i.value)},i.value)),s.jsx(a.Divider,{variant:"dashed"}),s.jsx(a.Button,{variant:"subtle",rightIcon:s.jsx(D.IconPlus,{size:14}),size:"sm",px:"xs",color:"blue",onClick:e.views.addARandomNewView,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"space-between"}},children:"Add a View"})]})}),o_=S.observer(()=>{const t=Z(),e=J(),n=()=>{if(!e.queries.firstID){t.editor.open(["_QUERIES_",""]);return}t.editor.open(["_QUERIES_",e.queries.firstID])},r=()=>{if(!e.filters.firstID){t.editor.open(["_FILTERS_",""]);return}t.editor.open(["_FILTERS_",e.filters.firstID])},[i,o]=f.useState(!1),l=()=>o(!0),u=()=>o(!1);return s.jsxs(a.Navbar,{p:0,width:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},zIndex:299,children:[s.jsxs(a.Navbar.Section,{children:[s.jsxs(a.Group,{grow:!0,spacing:0,sx:{...r_,button:{borderWidth:0,borderBottomWidth:1,borderColor:"#e9ecef"}},children:[s.jsx(a.Tooltip,{label:"Filters",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"default",radius:0,size:"md",sx:{height:"30px"},onClick:r,children:s.jsx(D.IconFilter,{size:18})})}),s.jsx(a.Tooltip,{label:"Queries",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"default",radius:0,size:"md",sx:{height:"30px"},onClick:n,children:s.jsx(D.IconDatabase,{size:18})})}),s.jsx(a.Tooltip,{label:"Interactions Viewer",withinPortal:!0,children:s.jsx(a.ActionIcon,{variant:"default",radius:0,size:"md",sx:{height:"30px"},onClick:l,children:s.jsx(D.IconLink,{size:18})})})]}),s.jsx(s_,{opened:i,close:u})]}),s.jsx(a.Navbar.Section,{py:5,sx:{borderBottom:"1px solid #eee"},children:s.jsx(a.Text,{align:"center",sx:{userSelect:"none",cursor:"default"},children:"Views"})}),s.jsx(a.Navbar.Section,{grow:!0,sx:{overflow:"auto"},children:s.jsx(a_,{})}),s.jsx(a.Navbar.Section,{children:s.jsx(a.Group,{grow:!0,p:"md",pt:"sm",sx:{borderTop:"1px solid #eee"},children:s.jsx(a.Button,{size:"xs",leftIcon:s.jsx(D.IconSettings,{size:20}),onClick:()=>t.editor.open([]),children:"Settings"})})})]})}),l_=S.observer(function({config:e}){return s.jsxs(s.Fragment,{children:[s.jsx(a.Checkbox,{checked:e.default_value,onChange:n=>e.setDefaultValue(n.currentTarget.checked),label:"Default Checked"}),s.jsx(Js,{label:"Description",value:e.description,onChange:e.setDescription,styles:{root:{flexGrow:1,minHeight:"400px"}}})]})}),u_=[{label:"2022",value:"YYYY"},{label:"202201",value:"YYYYMM"},{label:"20220101",value:"YYYYMMDD"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}],c_=S.observer(function({config:e}){return s.jsxs(s.Fragment,{children:[s.jsxs(a.Group,{children:[s.jsx(a.Checkbox,{checked:e.required,onChange:n=>e.setRequired(n.currentTarget.checked),label:"Required"}),s.jsx(a.Checkbox,{checked:e.clearable,onChange:n=>e.setClearable(n.currentTarget.checked),disabled:e.max_days>0,label:"Clearable"}),s.jsx(a.Checkbox,{checked:e.allowSingleDateInRange,onChange:n=>e.setAllowSingleDateInRange(n.currentTarget.checked),label:"Allow choosing 1 day"})]}),s.jsx(a.Select,{data:u_,label:"Display Format",value:e.inputFormat,onChange:e.setInputFormat}),s.jsx(lo,{label:"Default Value",config:e,value:e.default_value,onChange:e.setDefaultValue}),s.jsx(a.NumberInput,{label:"Max Days",description:s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Text,{children:"Set 0 to disable."}),s.jsxs(a.Group,{spacing:4,children:[s.jsx(a.Text,{children:"This feature requires"}),s.jsx(a.Text,{color:"blue",children:"Clearable"}),s.jsx(a.Text,{children:"to be checked"})]})]}),min:0,value:e.max_days,onChange:e.setMaxDays,hideControls:!0})]})}),Tr=S.observer(({value:t,onChange:e})=>{const n=Z(),r=J(),i=f.useMemo(()=>r.queries.options,[r.queries.current]),o=i.length===0,l=u=>{n.editor.setPath(["_QUERIES_",u])};return s.jsx(a.Select,{label:s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Text,{children:"Use query data as options"}),t&&s.jsx(a.Button,{size:"xs",leftIcon:s.jsx(D.IconArrowCurveRight,{size:16}),variant:"subtle",color:"blue",onClick:()=>l(t),children:"Open this query"})]}),data:i,value:t,onChange:e,allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:o,error:o?"You need to add a query in Data Settings":void 0,styles:{label:{display:"block"}}})}),d_=`
444
444
  // row
445
445
  {
446
446
  label: string;