@devtable/dashboard 10.12.0 → 10.12.1

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.
@@ -1163,7 +1163,7 @@ class ra {
1163
1163
  }), this.instanceRegistry.clear(), this.factoryRegistry.clear();
1164
1164
  }
1165
1165
  }
1166
- const rc = "10.12.0", rf = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1166
+ const rc = "10.12.1", rf = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1167
1167
  __proto__: null,
1168
1168
  version: rc
1169
1169
  }, Symbol.toStringTag, { value: "Module" }));
@@ -23472,7 +23472,14 @@ function WT(t) {
23472
23472
  };
23473
23473
  }
23474
23474
  function Ur(t, e, n, r) {
23475
- return t.reduce((o, a) => (o[a[e]] = ea(a[n], r), o), {});
23475
+ return t.reduce((o, a) => {
23476
+ try {
23477
+ o[a[e]] = ea(a[n], r);
23478
+ } catch (s) {
23479
+ o[a[e]] = s.message;
23480
+ }
23481
+ return o;
23482
+ }, {});
23476
23483
  }
23477
23484
  class jT {
23478
23485
  constructor(e) {
@@ -51,7 +51,7 @@ Check the top-level render call using <`+P+">.")}return z}}function fu(S,z){{if(
51
51
  ${Au.map(zu).join("")}
52
52
  </tbody>
53
53
  </table>
54
- `;function fr(t,e){const n=Object.keys(e),r=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...r)}catch(a){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient payload"):a}}function gr(t,e){try{return fr(t,e)}catch(n){return console.error(n),n.message}}function Ou({sql:t,pre_process:e}){if(!e.trim())return t;try{return new Function(`return ${e}`)()({sql:t},Ot)}catch(n){return console.error(n),t}}function Lu(t,e){if(!t.trim())return e;try{return new Function(`return ${t}`)()(e,Ot)}catch(n){return console.error(n),e}}function Pu(t){t=t||{};const e=Object.keys(t).sort(),n=[];for(let r=0;r<e.length;r++){const a=e[r];if(a!="authentication"&&t[a])n.push(e[r]+"="+(typeof t[a]=="object"?JSON.stringify(t[a]):t[a]));else{const o=Object.keys(t[a]).sort();for(let l=0;l<o.length;l++){const u=o[l];u!="sign"&&t[a][u]&&n.push(o[l]+"="+(typeof t[a][u]=="object"?JSON.stringify(t[a][u]):t[a][u]))}}}return n.sort().join("&")}function Bu(t,e){let n=Pu(t);return n+="&key="+e,Ta.MD5(n).toString().toUpperCase()}const qe={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(t){if(!this.app_id||!this.app_secret)return;const e=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:e,sign:Bu({app_id:this.app_id,nonce_str:e,...t},this.app_secret)}},getRequest(t,e){return(n,r,a={})=>{const o=window.localStorage.getItem("token"),l={"X-Requested-With":"XMLHttpRequest","Content-Type":a.string?"application/x-www-form-urlencoded":"application/json",authorization:o?`bearer ${o}`:"",...a.headers},u={baseURL:this.baseURL,method:t,url:n,params:t==="GET"?r:a.params,headers:l,signal:e};return["POST","PUT"].includes(t)&&(u.data=a.string?JSON.stringify(r):r,u.data.authentication=this.getAuthentication(u.data)),ht(u).then(c=>c.data).catch(c=>Promise.reject(c))}},makeQueryENV:null,query(t){return async(e,n={})=>{var r;return e.env||(e.env=((r=this.makeQueryENV)==null?void 0:r.call(this))??{error:"failed to run makeQueryENV"}),this.getRequest("POST",t)("/query",e,n)}}};function Ya(t){qe.baseURL!==t.apiBaseURL&&(qe.baseURL=t.apiBaseURL),t.app_id&&(qe.app_id=t.app_id),t.app_secret&&(qe.app_secret=t.app_secret),t.makeQueryENV&&(qe.makeQueryENV=t.makeQueryENV)}async function Vu({query:t,payload:e},n){if(!t.sql)return[];const{type:r,key:a,sql:o,pre_process:l,post_process:u}=t,c=fr(o,e),d=Ou({sql:c,pre_process:l});let f=await qe.query(n)({type:r,key:a,query:d},{});return f=Lu(u,f),f}async function Nu({type:t,key:e,configString:n},r){return await qe.query(r)({type:t,key:e,query:n},{})}async function mr(){try{return(await qe.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}})).data}catch(t){return console.error(t),[]}}async function Qa(){try{return(await qe.getRequest("POST")("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}})).data}catch(t){return console.error(t),[]}}class Ka{constructor(e){q(this,"rootRef");this.rootRef=re.observable({current:e})}async deleteItem(e){re.runInAction(()=>{x.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?re.toJS(this.rootRef.current):x.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(x.isObject(n))re.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else re.runInAction(()=>{x.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return re.reaction(()=>this.getValueFromRoot(e),(a,o)=>{n(a,o)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class qu{constructor(){q(this,"channels",new Map);q(this,"globalChannel",new Da)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Da;return this.channels.set(e,r),r}}class Fu{constructor(e){q(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 qu,instanceData:new Ka(e.viz.conf)};return this.instances.set(e.id,r),r}}function Ua(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new Ka({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const Gu=t=>{const{panel:e,vizManager:n,data:r,variables:a}=t,o=n.resolveComponent(e.viz.type),l=n.getOrCreateInstance(e),u={...Ua(l,r,n,a),viewport:{width:e.layout.w,height:e.layout.h}},c=o.viewRender;return i(c,{context:u,instance:l,...x.omit(t,["panel","vizManager","data"])})},Wu=t=>{const{vizManager:e,panel:n,panelInfoEditor:r,data:a,variables:o}=t,l=e.resolveComponent(n.viz.type),u=e.getOrCreateInstance(n),c={...Ua(u,a,e,o),panelInfoEditor:r},d=l.configRender;return i(d,{context:c,instance:u,...x.omit(t,["panel","vizManager","data","panelInfoEditor"])})},Xa=(t,e)=>{const n=ot.bezier(t),r=ot.bezier(e);return function(a){return a<50?n(a*2/100).hex():r((a-50)*2/100).hex()}},bn=t=>{const e=ot.bezier(t);return function(n){return e(n/100).hex()}},Ru={type:"interpolation",displayName:"Red / Green",getColor:Xa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},ju={type:"interpolation",displayName:"Yellow / Blue",getColor:Xa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Yu={type:"interpolation",displayName:"Red",getColor:bn(["#fff7f1","darkred"]),name:"red",category:"sequential"},Qu={type:"interpolation",displayName:"Green",getColor:bn(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ku={type:"interpolation",displayName:"Blue",getColor:bn(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Uu={type:"interpolation",displayName:"Orange",getColor:bn(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Xu{constructor(e){q(this,"symbol");this.symbol=Symbol(e)}}function lt(t){return new Xu(t)}class yr{constructor(){q(this,"parent");q(this,"factoryRegistry",new Map);q(this,"instanceRegistry",new Map)}createScoped(){const e=new yr;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=x.get(e,"dispose");x.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Ja="10.12.0",Ju=Object.freeze(Object.defineProperty({__proto__:null,version:Ja},Symbol.toStringTag,{value:"Module"}));class Zu{constructor(e){q(this,"staticColors",new Map);q(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 Hu{constructor(){q(this,"plugins",new Map);q(this,"vizComponents",new Map);q(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 ec{constructor(){q(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 a=this.migrations.filter(u=>u.version>e.from&&u.version<=e.to),o=x.orderBy(a,"version","asc");if(((l=x.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 be extends ec{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,a)=>({version:e,...n(r,a)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),a=x.get(r,"version",0),o=this.run({from:a,to:this.VERSION},r,{panelModel:n});await e.setItem(null,o)}async needMigration({configData:e}){const n=await e.getItem(null);return x.get(n,"version",0)<this.VERSION}}const W=(t,e)=>{const[n,{setFalse:r}]=X.useBoolean(!0),[a,o]=y.useState();y.useEffect(()=>(t.getItem(e).then(u=>{o(u),r()}),t.watchItem(e,u=>{o(u)})));const l=y.useCallback(async u=>{await t.setItem(e,u),o(u)},[t,e]);return{loading:n,value:a,set:l}},br={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"}};function B(t){const[e,n]=t.split(".");return{queryID:e,columnKey:n}}function ut(t,e){var a;const{queryID:n,columnKey:r}=B(e);return n?r?((a=t[n])==null?void 0:a.map(o=>o[r]))??[]:t[n]:[]}function vn(t,e){const{queryID:n}=B(e);return n?t[n]:[]}function tc(t){return Object.values(t)[0]}function xn(t,e){const{queryID:n,columnKey:r}=B(e);return t[r]}oe.use([G.GridComponent,G.VisualMapComponent,G.LegendComponent,G.TooltipComponent,Ve.CanvasRenderer]);function nc({context:t}){const{value:e}=W(t.instanceData,"config"),n=t.data,{width:r,height:a}=t.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:c,yAxis3D:d,zAxis3D:f}=x.defaults({},e,br),h=y.useMemo(()=>vn(n,o),[n,o]),{x:g,y:m,z:C}=y.useMemo(()=>({x:B(o),y:B(l),z:B(u)}),[o,l,u]),{min:w,max:_}=y.useMemo(()=>{const I=x.minBy(h,N=>N[C.columnKey]),L=x.maxBy(h,N=>N[C.columnKey]);return{min:x.get(I,C.columnKey),max:x.get(L,C.columnKey)}},[h,C]),T={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:w,max:_,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:d,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(I=>[I[g.columnKey],I[m.columnKey],I[C.columnKey]])}]};return e?i(Ne,{echarts:oe,option:T,style:{width:r,height:a},notMerge:!0,theme:"merico-light"}):null}const Za=y.createContext(null),vr=Za.Provider;function xr(){const t=y.useContext(Za);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const me=()=>xr(),Ha=()=>xr(),es=y.createContext(null),wr=es.Provider;function ts(){const t=y.useContext(es);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const le=()=>ts(),ke=()=>ts(),rc={inEditMode:!1},wn=y.createContext(rc),ns=y.createContext({panel:null,data:{},loading:!1,errors:[]}),Cr=ns.Provider;function rs(){const t=y.useContext(ns);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const gt=()=>rs(),Je=()=>rs(),ic={fullScreenPanelID:"",setFullScreenPanelID:x.noop},Sr=y.createContext(ic);function is(){const t=y.useContext(Sr);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const R=k.observer(y.forwardRef(({label:t,required:e,value:n,onChange:r,clearable:a=!1,sx:o,...l},u)=>{const{panel:c}=Je(),d=y.useMemo(()=>{const f=[...c.dataFieldOptions];return a&&f.unshift({label:"unset",value:"",group:""}),f},[c.dataFieldOptions]);return i(s.Select,{ref:u,label:t,data:d,value:n,onChange:r,required:e,sx:o,maxDropdownHeight:500,...l})}));function ac({context:t}){const{value:e,set:n}=W(t.instanceData,"config"),r=x.defaults({},e,br),{control:a,handleSubmit:o,reset:l}=v.useForm({defaultValues:r});return y.useEffect(()=>{l(r)},[e]),e?i(s.Stack,{spacing:"xs",children:p("form",{onSubmit:o(n),children:[i(s.Text,{children:"X Axis"}),p(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[i(v.Controller,{name:"x_axis_data_key",control:a,render:({field:u})=>i(R,{label:"Data Field",required:!0,...u})}),i(v.Controller,{name:"xAxis3D.name",control:a,render:({field:u})=>i(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),i(s.Text,{mt:"lg",children:"Y Axis"}),p(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[i(v.Controller,{name:"y_axis_data_key",control:a,render:({field:u})=>i(R,{label:"Data Field",required:!0,...u})}),i(v.Controller,{name:"yAxis3D.name",control:a,render:({field:u})=>i(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),i(s.Text,{mt:"lg",children:"Z Axis"}),p(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[i(v.Controller,{name:"z_axis_data_key",control:a,render:({field:u})=>i(R,{label:"Data Field",required:!0,...u})}),i(v.Controller,{name:"zAxis3D.name",control:a,render:({field:u})=>i(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),i(s.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:p(s.Button,{color:"blue",type:"submit",children:[i(D.DeviceFloppy,{size:20}),i(s.Text,{ml:"md",children:"Save"})]})})]})}):null}function sc(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:a,y_axis_data_key:o,z_axis_data_key:l,...u}=t;return{...u,x_axis_data_key:r(a),y_axis_data_key:r(o),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class oc extends be{constructor(){super(...arguments);q(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:a}=n;return{...n,version:2,config:sc(a,r)}})}}const lc={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new oc,name:"bar-3d",viewRender:nc,configRender:ac,createConfig(){return{version:2,config:x.cloneDeep(br)}}};class Fe extends y.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 p(s.Box,{children:[i(s.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),i(s.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}const $e={mantissa:0,output:"number",trimMantissa:!1,average:!1};function uc({value:t,onChange:e},n){const r=u=>{e({...t,output:u})},a=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 p(s.Stack,{ref:n,children:[p(s.Group,{grow:!0,children:[i(s.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:r,sx:{flexGrow:1}}),i(s.Switch,{label:p(s.Stack,{spacing:0,children:[i(s.Text,{children:"Average"}),i(s.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"}}})]}),p(s.Group,{grow:!0,children:[i(s.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:a}),i(s.Switch,{label:"Trim mantissa",checked:t.trimMantissa,onChange:o,disabled:t.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),p(s.Stack,{spacing:0,children:[i(s.Text,{weight:"bold",children:"Preview"}),i(Fe,{children:p(s.Group,{position:"apart",children:[p(s.Text,{size:12,color:"gray",children:["123456789 ",i(D.ArrowRight,{size:9})," ",H(123456789).format(t)]}),p(s.Text,{size:12,color:"gray",children:["1234 ",i(D.ArrowRight,{size:9})," ",H(1234).format(t)]}),p(s.Text,{size:12,color:"gray",children:["0.1234 ",i(D.ArrowRight,{size:9})," ",H(.1234).format(t)]})]})})]})]})}const je=y.forwardRef(uc),rt={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
54
+ `;function fr(t,e){const n=Object.keys(e),r=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...r)}catch(a){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient payload"):a}}function gr(t,e){try{return fr(t,e)}catch(n){return console.error(n),n.message}}function Ou({sql:t,pre_process:e}){if(!e.trim())return t;try{return new Function(`return ${e}`)()({sql:t},Ot)}catch(n){return console.error(n),t}}function Lu(t,e){if(!t.trim())return e;try{return new Function(`return ${t}`)()(e,Ot)}catch(n){return console.error(n),e}}function Pu(t){t=t||{};const e=Object.keys(t).sort(),n=[];for(let r=0;r<e.length;r++){const a=e[r];if(a!="authentication"&&t[a])n.push(e[r]+"="+(typeof t[a]=="object"?JSON.stringify(t[a]):t[a]));else{const o=Object.keys(t[a]).sort();for(let l=0;l<o.length;l++){const u=o[l];u!="sign"&&t[a][u]&&n.push(o[l]+"="+(typeof t[a][u]=="object"?JSON.stringify(t[a][u]):t[a][u]))}}}return n.sort().join("&")}function Bu(t,e){let n=Pu(t);return n+="&key="+e,Ta.MD5(n).toString().toUpperCase()}const qe={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(t){if(!this.app_id||!this.app_secret)return;const e=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:e,sign:Bu({app_id:this.app_id,nonce_str:e,...t},this.app_secret)}},getRequest(t,e){return(n,r,a={})=>{const o=window.localStorage.getItem("token"),l={"X-Requested-With":"XMLHttpRequest","Content-Type":a.string?"application/x-www-form-urlencoded":"application/json",authorization:o?`bearer ${o}`:"",...a.headers},u={baseURL:this.baseURL,method:t,url:n,params:t==="GET"?r:a.params,headers:l,signal:e};return["POST","PUT"].includes(t)&&(u.data=a.string?JSON.stringify(r):r,u.data.authentication=this.getAuthentication(u.data)),ht(u).then(c=>c.data).catch(c=>Promise.reject(c))}},makeQueryENV:null,query(t){return async(e,n={})=>{var r;return e.env||(e.env=((r=this.makeQueryENV)==null?void 0:r.call(this))??{error:"failed to run makeQueryENV"}),this.getRequest("POST",t)("/query",e,n)}}};function Ya(t){qe.baseURL!==t.apiBaseURL&&(qe.baseURL=t.apiBaseURL),t.app_id&&(qe.app_id=t.app_id),t.app_secret&&(qe.app_secret=t.app_secret),t.makeQueryENV&&(qe.makeQueryENV=t.makeQueryENV)}async function Vu({query:t,payload:e},n){if(!t.sql)return[];const{type:r,key:a,sql:o,pre_process:l,post_process:u}=t,c=fr(o,e),d=Ou({sql:c,pre_process:l});let f=await qe.query(n)({type:r,key:a,query:d},{});return f=Lu(u,f),f}async function Nu({type:t,key:e,configString:n},r){return await qe.query(r)({type:t,key:e,query:n},{})}async function mr(){try{return(await qe.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}})).data}catch(t){return console.error(t),[]}}async function Qa(){try{return(await qe.getRequest("POST")("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}})).data}catch(t){return console.error(t),[]}}class Ka{constructor(e){q(this,"rootRef");this.rootRef=re.observable({current:e})}async deleteItem(e){re.runInAction(()=>{x.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?re.toJS(this.rootRef.current):x.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(x.isObject(n))re.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else re.runInAction(()=>{x.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return re.reaction(()=>this.getValueFromRoot(e),(a,o)=>{n(a,o)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class qu{constructor(){q(this,"channels",new Map);q(this,"globalChannel",new Da)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Da;return this.channels.set(e,r),r}}class Fu{constructor(e){q(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 qu,instanceData:new Ka(e.viz.conf)};return this.instances.set(e.id,r),r}}function Ua(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new Ka({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const Gu=t=>{const{panel:e,vizManager:n,data:r,variables:a}=t,o=n.resolveComponent(e.viz.type),l=n.getOrCreateInstance(e),u={...Ua(l,r,n,a),viewport:{width:e.layout.w,height:e.layout.h}},c=o.viewRender;return i(c,{context:u,instance:l,...x.omit(t,["panel","vizManager","data"])})},Wu=t=>{const{vizManager:e,panel:n,panelInfoEditor:r,data:a,variables:o}=t,l=e.resolveComponent(n.viz.type),u=e.getOrCreateInstance(n),c={...Ua(u,a,e,o),panelInfoEditor:r},d=l.configRender;return i(d,{context:c,instance:u,...x.omit(t,["panel","vizManager","data","panelInfoEditor"])})},Xa=(t,e)=>{const n=ot.bezier(t),r=ot.bezier(e);return function(a){return a<50?n(a*2/100).hex():r((a-50)*2/100).hex()}},bn=t=>{const e=ot.bezier(t);return function(n){return e(n/100).hex()}},Ru={type:"interpolation",displayName:"Red / Green",getColor:Xa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},ju={type:"interpolation",displayName:"Yellow / Blue",getColor:Xa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Yu={type:"interpolation",displayName:"Red",getColor:bn(["#fff7f1","darkred"]),name:"red",category:"sequential"},Qu={type:"interpolation",displayName:"Green",getColor:bn(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ku={type:"interpolation",displayName:"Blue",getColor:bn(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Uu={type:"interpolation",displayName:"Orange",getColor:bn(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Xu{constructor(e){q(this,"symbol");this.symbol=Symbol(e)}}function lt(t){return new Xu(t)}class yr{constructor(){q(this,"parent");q(this,"factoryRegistry",new Map);q(this,"instanceRegistry",new Map)}createScoped(){const e=new yr;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=x.get(e,"dispose");x.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Ja="10.12.1",Ju=Object.freeze(Object.defineProperty({__proto__:null,version:Ja},Symbol.toStringTag,{value:"Module"}));class Zu{constructor(e){q(this,"staticColors",new Map);q(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 Hu{constructor(){q(this,"plugins",new Map);q(this,"vizComponents",new Map);q(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 ec{constructor(){q(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 a=this.migrations.filter(u=>u.version>e.from&&u.version<=e.to),o=x.orderBy(a,"version","asc");if(((l=x.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 be extends ec{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,a)=>({version:e,...n(r,a)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),a=x.get(r,"version",0),o=this.run({from:a,to:this.VERSION},r,{panelModel:n});await e.setItem(null,o)}async needMigration({configData:e}){const n=await e.getItem(null);return x.get(n,"version",0)<this.VERSION}}const W=(t,e)=>{const[n,{setFalse:r}]=X.useBoolean(!0),[a,o]=y.useState();y.useEffect(()=>(t.getItem(e).then(u=>{o(u),r()}),t.watchItem(e,u=>{o(u)})));const l=y.useCallback(async u=>{await t.setItem(e,u),o(u)},[t,e]);return{loading:n,value:a,set:l}},br={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"}};function B(t){const[e,n]=t.split(".");return{queryID:e,columnKey:n}}function ut(t,e){var a;const{queryID:n,columnKey:r}=B(e);return n?r?((a=t[n])==null?void 0:a.map(o=>o[r]))??[]:t[n]:[]}function vn(t,e){const{queryID:n}=B(e);return n?t[n]:[]}function tc(t){return Object.values(t)[0]}function xn(t,e){const{queryID:n,columnKey:r}=B(e);return t[r]}oe.use([G.GridComponent,G.VisualMapComponent,G.LegendComponent,G.TooltipComponent,Ve.CanvasRenderer]);function nc({context:t}){const{value:e}=W(t.instanceData,"config"),n=t.data,{width:r,height:a}=t.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:c,yAxis3D:d,zAxis3D:f}=x.defaults({},e,br),h=y.useMemo(()=>vn(n,o),[n,o]),{x:g,y:m,z:C}=y.useMemo(()=>({x:B(o),y:B(l),z:B(u)}),[o,l,u]),{min:w,max:_}=y.useMemo(()=>{const I=x.minBy(h,N=>N[C.columnKey]),L=x.maxBy(h,N=>N[C.columnKey]);return{min:x.get(I,C.columnKey),max:x.get(L,C.columnKey)}},[h,C]),T={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:w,max:_,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:d,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(I=>[I[g.columnKey],I[m.columnKey],I[C.columnKey]])}]};return e?i(Ne,{echarts:oe,option:T,style:{width:r,height:a},notMerge:!0,theme:"merico-light"}):null}const Za=y.createContext(null),vr=Za.Provider;function xr(){const t=y.useContext(Za);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const me=()=>xr(),Ha=()=>xr(),es=y.createContext(null),wr=es.Provider;function ts(){const t=y.useContext(es);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const le=()=>ts(),ke=()=>ts(),rc={inEditMode:!1},wn=y.createContext(rc),ns=y.createContext({panel:null,data:{},loading:!1,errors:[]}),Cr=ns.Provider;function rs(){const t=y.useContext(ns);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const gt=()=>rs(),Je=()=>rs(),ic={fullScreenPanelID:"",setFullScreenPanelID:x.noop},Sr=y.createContext(ic);function is(){const t=y.useContext(Sr);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const R=k.observer(y.forwardRef(({label:t,required:e,value:n,onChange:r,clearable:a=!1,sx:o,...l},u)=>{const{panel:c}=Je(),d=y.useMemo(()=>{const f=[...c.dataFieldOptions];return a&&f.unshift({label:"unset",value:"",group:""}),f},[c.dataFieldOptions]);return i(s.Select,{ref:u,label:t,data:d,value:n,onChange:r,required:e,sx:o,maxDropdownHeight:500,...l})}));function ac({context:t}){const{value:e,set:n}=W(t.instanceData,"config"),r=x.defaults({},e,br),{control:a,handleSubmit:o,reset:l}=v.useForm({defaultValues:r});return y.useEffect(()=>{l(r)},[e]),e?i(s.Stack,{spacing:"xs",children:p("form",{onSubmit:o(n),children:[i(s.Text,{children:"X Axis"}),p(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[i(v.Controller,{name:"x_axis_data_key",control:a,render:({field:u})=>i(R,{label:"Data Field",required:!0,...u})}),i(v.Controller,{name:"xAxis3D.name",control:a,render:({field:u})=>i(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),i(s.Text,{mt:"lg",children:"Y Axis"}),p(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[i(v.Controller,{name:"y_axis_data_key",control:a,render:({field:u})=>i(R,{label:"Data Field",required:!0,...u})}),i(v.Controller,{name:"yAxis3D.name",control:a,render:({field:u})=>i(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),i(s.Text,{mt:"lg",children:"Z Axis"}),p(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[i(v.Controller,{name:"z_axis_data_key",control:a,render:({field:u})=>i(R,{label:"Data Field",required:!0,...u})}),i(v.Controller,{name:"zAxis3D.name",control:a,render:({field:u})=>i(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...u})})]}),i(s.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:p(s.Button,{color:"blue",type:"submit",children:[i(D.DeviceFloppy,{size:20}),i(s.Text,{ml:"md",children:"Save"})]})})]})}):null}function sc(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:a,y_axis_data_key:o,z_axis_data_key:l,...u}=t;return{...u,x_axis_data_key:r(a),y_axis_data_key:r(o),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class oc extends be{constructor(){super(...arguments);q(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:a}=n;return{...n,version:2,config:sc(a,r)}})}}const lc={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new oc,name:"bar-3d",viewRender:nc,configRender:ac,createConfig(){return{version:2,config:x.cloneDeep(br)}}};class Fe extends y.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 p(s.Box,{children:[i(s.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),i(s.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}const $e={mantissa:0,output:"number",trimMantissa:!1,average:!1};function uc({value:t,onChange:e},n){const r=u=>{e({...t,output:u})},a=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 p(s.Stack,{ref:n,children:[p(s.Group,{grow:!0,children:[i(s.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:r,sx:{flexGrow:1}}),i(s.Switch,{label:p(s.Stack,{spacing:0,children:[i(s.Text,{children:"Average"}),i(s.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"}}})]}),p(s.Group,{grow:!0,children:[i(s.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:a}),i(s.Switch,{label:"Trim mantissa",checked:t.trimMantissa,onChange:o,disabled:t.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),p(s.Stack,{spacing:0,children:[i(s.Text,{weight:"bold",children:"Preview"}),i(Fe,{children:p(s.Group,{position:"apart",children:[p(s.Text,{size:12,color:"gray",children:["123456789 ",i(D.ArrowRight,{size:9})," ",H(123456789).format(t)]}),p(s.Text,{size:12,color:"gray",children:["1234 ",i(D.ArrowRight,{size:9})," ",H(1234).format(t)]}),p(s.Text,{size:12,color:"gray",children:["0.1234 ",i(D.ArrowRight,{size:9})," ",H(.1234).format(t)]})]})})]})]})}const je=y.forwardRef(uc),rt={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
55
55
  `)},as={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:dc,configRender:cc,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 cc(t){return i(V,{})}function dc(t){return i(s.Text,{children:"Click chart's series"})}const pc=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],Cn=y.forwardRef(({sectionTitle:t,value:e,onChange:n},r)=>{const a=o=>l=>{const u=x.cloneDeep(e);x.set(u,o,l),n(u)};return p(s.Stack,{spacing:0,children:[t&&i(s.Divider,{mb:-5,mt:5,variant:"dotted",label:t,labelPosition:"right",labelProps:{color:"dimmed"}}),p(s.Group,{grow:!0,noWrap:!0,children:[i(s.NumberInput,{label:"Max Width",hideControls:!0,value:e.width,onChange:a("width")}),i(s.Select,{label:"Overflow",data:pc,value:e.overflow,onChange:a("overflow")}),i(s.TextInput,{label:"Ellipsis",value:e.ellipsis,disabled:!0})]})]})}),mt=y.forwardRef(({value:t,onChange:e},n)=>{const r=o=>{e({...t,on_axis:o})},a=o=>{e({...t,in_tooltip:o})};return p(s.Stack,{ref:n,spacing:0,children:[i(Cn,{sectionTitle:"Overflow on Axis",value:t.on_axis,onChange:r}),i(Cn,{sectionTitle:"Overflow in Tooltip",value:t.in_tooltip,onChange:a})]})}),Ze={on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}};function yt({overflow:t,width:e}){const n={truncate:"initial",break:"break-all",breakAll:"break-word"}[t],r=t==="truncate"?"nowrap":"initial",a={truncate:"ellipsis",break:"clip",breakAll:"clip"}[t];return`
56
56
  max-width: ${e}px;
57
57
  word-break: ${n};
@@ -415,7 +415,7 @@ Check the top-level render call using <`+P+">.")}return z}}function fu(S,z){{if(
415
415
  </table>
416
416
  `}},show_in_legend:!0}))}function $w(t,e,n,r){const a=B(e.data_key),o=e.name,l=n.map(u=>{const c=x.sumBy(r[u],a.columnKey);return[u,c]});return{type:"line",name:o,xAxisIndex:3,yAxisIndex:3,color:"#b41529",data:l,show_in_legend:!1}}function Ow(t,e,n,r){const l={barMinWidth:5,barMaxWidth:20};return[Mw(t,n,r),Ew(t,n,r,l),...zw(t,n,r,l),$w(t,e,n,r)]}function Lw(t,e){const{axisLabel:n}=t.x_axis;return[{data:e,id:"准确估算比例",gridIndex:0,axisTick:{show:!1},axisLabel:{show:!1},axisLine:{show:!1},type:"category"},{data:e,id:"平均偏差",gridIndex:1,axisTick:{show:!1},axisLabel:{show:!1},axisLine:{show:!0,lineStyle:{color:"#FFFFFF",width:2}},type:"category"},{data:e,id:"数量占比",gridIndex:2,axisTick:{show:!1},axisLabel:{show:!1},axisLine:{show:!1},type:"category"},{data:e,id:"代码当量",gridIndex:3,axisTick:{show:!1},type:"category",axisLabel:{...n,formatter:Is(n.formatter)},axisLine:{show:!1}}]}function Pw(t){return[{type:"category",name:"准确估算比例",nameRotate:0,nameGap:5,nameLocation:"end",nameTextStyle:{align:"left"},gridIndex:0,axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}},{type:"value",name:"平均偏差",nameGap:5,nameRotate:90,nameLocation:"middle",gridIndex:1,boundaryGap:[1,1],axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}},{type:"value",name:"数量占比",nameGap:5,nameRotate:90,nameLocation:"middle",gridIndex:2,axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1},min:0,max:1},{type:"value",gridIndex:3,position:"right",splitNumber:3,axisLabel:{show:!0,verticalAlign:"top",showMinLabel:!1,lineHeight:14},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}},{type:"value",name:t.name,nameGap:5,nameRotate:90,nameLocation:"middle",gridIndex:3,position:"left",axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}}]}function vi(t){return t==1||t==2?1:vi(t-2)+vi(t-1)}const Bw=Array.from(new Array(20),(t,e)=>vi(e+1));function Oo(t){return t<=1?t:Bw.findIndex(e=>t<=e)-1}function Vw(t,e){const{x_axis:n,deviation:r}=t,a=B(n.data_key),o=B(r.data_keys.estimated_value),l=B(r.data_keys.actual_value);return e[a.queryID].map(u=>{const c=Oo(u[o.columnKey]),d=Oo(u[l.columnKey]),f=c-d;return{...u,level:{estimated:c,actual:d,diff:f}}})}function Nw(t){return t==="rgba(255, 255, 255, 1)"?{borderColor:"rgba(0,0,0,.1)",borderWidth:1}:{}}function qw(t){return{show:!0,orient:"vertical",top:"middle",right:0,data:t.filter(n=>n.show_in_legend).reverse().map(n=>({name:`${n.name}`,color:n.color,itemStyle:Nw(n.color)})),tooltip:{show:!0,formatter:"档位偏差:{a}"}}}const Fw={tooltip:{trigger:"axis"}};function Gw(t,e){const{deviation:n,metrics:r}=t,a=r.find(l=>l.data_key===e);if(a)return a;const o=n.data_keys.actual_value;return{id:o,name:n.name,data_key:o}}function Ww(t,e,n){const r=Vw(t,n),a=B(t.x_axis.data_key),o=x.uniqBy(n[a.queryID],a.columnKey).map(f=>f[a.columnKey]),l=x.groupBy(r,a.columnKey),u=Gw(t,e),c=Ow(t,u,o,l),d={xAxis:Lw(t,o),yAxis:Pw(u),series:c,grid:Dw(),visualMap:[{min:0,max:1,calculable:!0,show:!1,seriesIndex:0,color:["#F0F0F0","#418AAF"]}],legend:qw(c)};return x.defaultsDeep({},d,Fw)}const Rw={input:{border:"none !important",paddingLeft:0,lineHeight:"1.55 !important"}},jw=({conf:t,metricKey:e,setMetricKey:n})=>{const{deviation:r,metrics:a}=t,o=y.useMemo(()=>{const l=a.map(u=>({label:u.name,value:u.data_key}));return l.push({label:r.name?r.name:r.data_keys.actual_value,value:r.data_keys.actual_value}),l},[r,a]);return p(s.Group,{spacing:1,children:[i(s.Text,{size:12,color:"dimmed",sx:{cursor:"default",userSelect:"none"},children:"基线指标"}),i(s.NativeSelect,{size:"xs",data:o,value:e,onChange:l=>n(l.currentTarget.value),styles:Rw})]})},Yw={"tbody th, tbody td":{padding:"7px 10px"},"tbody tr:not(:first-of-type) th":{borderTop:"1px solid #dee2e6"}};function Qw(){return p(s.HoverCard,{width:400,shadow:"md",children:[i(s.HoverCard.Target,{children:i(s.Button,{size:"xs",variant:"subtle",compact:!0,leftIcon:i($.IconInfoCircle,{size:14}),children:"指标说明"})}),i(s.HoverCard.Dropdown,{children:i(s.Table,{fontSize:14,sx:Yw,children:p("tbody",{children:[p("tr",{children:[i("th",{children:"估算偏差"}),i("td",{children:"使用斐波那契数列(1,2,3,5,8,13)估算故事点,每个数位为一个档位,计算issue实际故事点与估算故事点的档位偏差,即为估算偏差。如估算故事点为5,实际故事点为8,则估算偏差为-1。"})]}),p("tr",{children:[i("th",{children:"准确估算比例"}),i("td",{children:"偏差在 ± 1 档位内的 issue 均为准确估算,以此计算准确估算的比例。"})]})]})})})]})}function Kw(t){return p(s.Group,{position:"apart",children:[i(Qw,{}),i(jw,{...t})]})}oe.use([pe.BarChart,pe.LineChart,pe.HeatmapChart,G.GridComponent,G.LegendComponent,G.TooltipComponent,Ve.CanvasRenderer,G.VisualMapComponent]);function Uw({conf:t,data:e,width:n,height:r,metricKey:a}){const o=y.useMemo(()=>Ww(t,a,e),[t,e,a]);return i(Ne,{echarts:oe,option:o,style:{width:n,height:r},notMerge:!0,theme:"merico-light"})}function Xw({context:t}){const{value:e}=W(t.instanceData,"config"),n=y.useMemo(()=>x.defaults({},e,bi),[e]),r=t.data,{width:a,height:o}=t.viewport,{x_axis:l,deviation:u}=n,{estimated_value:c,actual_value:d}=u.data_keys,[f,h]=y.useState(d);if(y.useEffect(()=>{h(C=>C||d)},[d]),!l.data_key||!c||!d||!a||!o)return null;const g=Math.max(a,300),m=Math.max(o,370);return p(s.Box,{sx:{overflow:"hidden",height:m,width:g},children:[i(Kw,{conf:n,metricKey:f,setMetricKey:h}),i(Uw,{width:g,height:m-30,data:r,conf:n,metricKey:f})]})}function Jw({control:t,watch:e}){return e(["deviation"]),p(s.Stack,{children:[i(s.Group,{grow:!0,noWrap:!0,children:i(v.Controller,{name:"deviation.name",control:t,render:({field:n})=>i(s.TextInput,{label:"指标名称",sx:{flex:1},...n})})}),p(s.Group,{grow:!0,noWrap:!0,children:[i(v.Controller,{name:"deviation.data_keys.estimated_value",control:t,render:({field:n})=>i(R,{label:"估算值字段",required:!0,sx:{flex:1},...n})}),i(v.Controller,{name:"deviation.data_keys.actual_value",control:t,render:({field:n})=>i(R,{label:"实际值字段",required:!0,sx:{flex:1},...n})})]})]})}const Zw=({control:t,index:e,remove:n})=>p(s.Stack,{children:[p(s.Group,{grow:!0,noWrap:!0,children:[i(v.Controller,{name:`metrics.${e}.name`,control:t,render:({field:r})=>i(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),i(v.Controller,{name:`metrics.${e}.data_key`,control:t,render:({field:r})=>i(R,{label:"Value Field",required:!0,sx:{flex:1},...r})})]}),i(s.Divider,{mb:-10,mt:10,variant:"dashed"}),i(s.Button,{leftIcon:i(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>n(e),sx:{top:15,right:5},children:"Delete this Metric"})]}),Hw=({control:t,watch:e})=>{const{fields:n,append:r,remove:a}=v.useFieldArray({control:t,name:"metrics"}),o=e("metrics"),l=n.map((h,g)=>({...h,...o[g]})),u=()=>r({id:Date.now().toString(),data_key:"",name:""}),c=e("metrics.0.id"),[d,f]=y.useState(()=>c??null);return y.useEffect(()=>{c&&f(h=>h!==null?h:c)},[c]),p(V,{children:[p(s.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[i(D.InfoCircle,{size:14,color:"#888"}),i(s.Text,{size:14,color:"#888",children:"设置可以展示在基线图的指标,例如代码当量"})]}),i(s.Divider,{variant:"dashed",my:10}),p(s.Tabs,{value:d,onTabChange:h=>f(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(s.Tabs.List,{children:[l.map((h,g)=>i(s.Tabs.Tab,{value:h.id,children:h.name?h.name:g},h.id)),i(s.Tabs.Tab,{onClick:u,value:"add",children:i(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,g)=>i(s.Tabs.Panel,{value:h.id,children:i(Zw,{control:t,index:g,remove:a},h.id)},h.id))]})]})};function eC({control:t,watch:e}){return e(["x_axis"]),p(s.Stack,{children:[p(s.Group,{grow:!0,noWrap:!0,children:[i(v.Controller,{name:"x_axis.data_key",control:t,render:({field:n})=>i(R,{label:"数据字段",required:!0,sx:{flex:1},...n})}),i(v.Controller,{name:"x_axis.name",control:t,render:({field:n})=>i(s.TextInput,{label:"X轴名称",sx:{flex:1},...n})})]}),i(s.Divider,{mb:-15,label:"点位文案",labelPosition:"center"}),p(s.Group,{grow:!0,noWrap:!0,children:[i(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:n})=>i(s.NumberInput,{label:"旋转",hideControls:!0,min:-90,max:90,rightSection:i(s.Text,{color:"dimmed",children:"度"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...n})}),i(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:n})=>i(zs,{...n})})]})]})}function tC({context:t}){const{value:e,set:n}=W(t.instanceData,"config"),r=y.useMemo(()=>x.defaultsDeep({},e,bi),[e]),{control:a,handleSubmit:o,watch:l,getValues:u,reset:c}=v.useForm({defaultValues:r});y.useEffect(()=>{c(r)},[r]),l([]);const d=u(),f=y.useMemo(()=>!x.isEqual(d,r),[d,r]);return i(s.Stack,{spacing:"xs",children:p("form",{onSubmit:o(n),children:[p(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[i(s.Text,{children:"Merico Estimation Chart Config"}),i(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:i(D.DeviceFloppy,{size:20})})]}),p(s.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"12px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(s.Tabs.List,{children:[i(s.Tabs.Tab,{value:"X Axis",children:"X 轴"}),i(s.Tabs.Tab,{value:"Deviation",children:"偏差"}),i(s.Tabs.Tab,{value:"Additional Metrics",children:"指标"})]}),i(s.Tabs.Panel,{value:"X Axis",children:i(eC,{control:a,watch:l})}),i(s.Tabs.Panel,{value:"Deviation",children:i(Jw,{control:a,watch:l})}),i(s.Tabs.Panel,{value:"Additional Metrics",children:i(Hw,{control:a,watch:l})})]})]})})}function nC(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:a,deviation:o,metrics:l,...u}=t;return{...u,x_axis:{...a,data_key:r(a.data_key)},deviation:{...o,data_keys:{estimated_value:r(o.data_keys.estimated_value),actual_value:r(o.data_keys.actual_value)}},metrics:l.map(c=>({...c,data_key:r(c.data_key)}))}}catch(n){throw console.error("[Migration failed]",n),n}}class rC extends be{constructor(){super(...arguments);q(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:a}=n;return{...n,version:2,config:nC(a,r)}})}}const iC={displayName:"Merico Estimation Chart",displayGroup:"Merico suite",migrator:new rC,name:"mericoEstimationChart",viewRender:Xw,configRender:tC,createConfig:()=>({version:2,config:bi})},xi={styles:{justify:"space-around",align:"start"},metrics:[]};function aC(){return{id:new Date().getTime().toString(),names:{value:"Value",basis:"Basis"},data_keys:{value:"",basis:""},formatter:$e,postfix:{type:"text",value:""}}}const Lo=({postfix:t})=>t?p(V,{children:[i(s.Text,{size:"12px",color:"#818388",sx:{lineHeight:1},children:"/"}),i(s.Text,{size:"12px",color:"#818388",sx:{lineHeight:1},children:t})]}):null,sC=k.observer(({metric:t,variableValueMap:e})=>{const{names:n,data_keys:r,formatter:a,postfix:o}=t,l=ke(),u=y.useMemo(()=>{if(o.type==="text"&&o.value)return o.value;if(o.type==="filter-option-label"&&o.value){const c=l.filters.getSelectOption(o.value);return c?c.label:null}return null},[o,l]);return p(s.Stack,{spacing:18,children:[p(s.Stack,{spacing:12,children:[i(s.Text,{size:"14px",color:"#818388",children:n.value}),p(s.Group,{spacing:"2px",align:"baseline",children:[i(s.Text,{size:"24px",fw:"bold",color:"#3D3E45",sx:{lineHeight:1},children:H(e[r.value]).format(a)}),i(Lo,{postfix:u})]})]}),p(s.Stack,{spacing:12,children:[i(s.Text,{size:"14px",color:"#818388",children:n.basis}),p(s.Group,{spacing:"2px",align:"baseline",children:[i(s.Text,{size:"12px",color:"#3D3E45",sx:{lineHeight:1},children:H(e[r.basis]).format(a)}),i(Lo,{postfix:u})]})]})]})}),oC=k.observer(({context:t,instance:e})=>{const{value:n}=W(t.instanceData,"config"),{variables:r}=t,a=y.useMemo(()=>x.defaults({},n,xi),[n]),o=t.data,l=y.useMemo(()=>ps(o,r),[r,o]),{width:u,height:c}=t.viewport;return!u||!c||!a?null:i(s.Flex,{w:`${u}px`,h:`${c}px`,justify:a.styles.justify,align:a.styles.align,direction:"row",wrap:"nowrap",sx:{overflow:"hidden"},children:a.metrics.map(d=>i(sC,{metric:d,variableValueMap:l},d.id))})}),lC=[{label:"Text",value:"text"},{label:"Filter Option Label",value:"filter-option-label"}],uC=k.observer(y.forwardRef(({value:t,onChange:e},n)=>{const a=le().filters.selects,o=u=>{e({type:u,value:t.value})},l=u=>{e({type:t.type,value:u})};return p(s.Group,{grow:!0,noWrap:!0,children:[i(s.Select,{label:"Postfix Type",data:lC,value:t.type,onChange:o}),t.type==="text"&&i(s.TextInput,{label:"Postfix Content",value:t.value,onChange:u=>{l(u.currentTarget.value)}}),t.type==="filter-option-label"&&i(s.Select,{label:"Filter",value:t.value,onChange:l,data:a})]})}));function cC({control:t,index:e,remove:n,watch:r,variableOptions:a}){return r(`metrics.${e}.postfix`),p(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[p(s.Group,{grow:!0,noWrap:!0,children:[i(v.Controller,{name:`metrics.${e}.names.value`,control:t,render:({field:o})=>i(s.TextInput,{label:"Metric Name",required:!0,sx:{flex:1},...o})}),i(v.Controller,{name:`metrics.${e}.data_keys.value`,control:t,render:({field:o})=>i(s.Select,{label:"Metric Data",required:!0,data:a,sx:{flex:1},...o})})]}),p(s.Group,{grow:!0,noWrap:!0,children:[i(v.Controller,{name:`metrics.${e}.names.basis`,control:t,render:({field:o})=>i(s.TextInput,{label:"Basis Name",required:!0,sx:{flex:1},...o})}),i(v.Controller,{name:`metrics.${e}.data_keys.basis`,control:t,render:({field:o})=>i(s.Select,{label:"Basis Data",required:!0,data:a,sx:{flex:1},...o})})]}),i(s.Divider,{mb:-15,variant:"dashed",label:"Format",labelPosition:"center"}),i(v.Controller,{name:`metrics.${e}.formatter`,control:t,render:({field:o})=>i(je,{...o})}),i(s.Divider,{mb:-15,variant:"dashed",label:"Others",labelPosition:"center"}),i(v.Controller,{name:`metrics.${e}.postfix`,control:t,render:({field:o})=>i(uC,{...o})}),i(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},disabled:e===0,children:i(D.Trash,{size:16})})]},e)}const dC=({control:t,watch:e,variables:n})=>{const{fields:r,append:a,remove:o}=v.useFieldArray({control:t,name:"metrics"}),l=e("metrics"),u=r.map((C,w)=>({...C,...l[w]})),c=()=>{a(aC())},d=y.useMemo(()=>n.map(C=>({label:C.name,value:C.name})),[n]),f=x.get(u,"0.id",null),[h,g]=y.useState(f);y.useEffect(()=>{g(C=>C||f)},[f]);const m=C=>{o(C);const w=x.get(u,"0.id",null);g(w)};return p(V,{children:[i(s.Divider,{mt:15,variant:"dashed",label:"Metrics",labelPosition:"center"}),p(s.Tabs,{value:h,onTabChange:g,styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(s.Tabs.List,{children:[u.map((C,w)=>i(s.Tabs.Tab,{value:C.id,children:C.names.value?C.names.value:w+1},w)),i(s.Tabs.Tab,{onClick:c,value:"add",children:i($.IconPlus,{size:18,color:"#228be6"})})]}),u.map((C,w)=>i(s.Tabs.Panel,{value:C.id,children:i(cC,{control:t,index:w,remove:m,variableOptions:d,watch:e})},w))]})]})},pC=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"},{label:"Space Between",value:"space-between"},{label:"Space Around",value:"space-around"},{label:"Space Evenly",value:"space-evenly"}],hC=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"End",value:"end"},{label:"Stretch",value:"stretch"}];function fC({control:t,watch:e}){return e("styles"),p(V,{children:[i(s.Divider,{mt:15,variant:"dashed",label:"Styles",labelPosition:"center"}),p(s.Group,{children:[i(v.Controller,{name:"styles.justify",control:t,render:({field:n})=>i(s.Select,{label:"Justify Content",required:!0,data:pC,sx:{flex:1},...n})}),i(v.Controller,{name:"styles.align",control:t,render:({field:n})=>i(s.Select,{label:"Align",required:!0,data:hC,sx:{flex:1},...n})})]})]})}function gC({context:t}){const{value:e,set:n}=W(t.instanceData,"config"),{variables:r}=t,a=y.useMemo(()=>x.defaultsDeep({},e,xi),[e]),{control:o,handleSubmit:l,watch:u,getValues:c,reset:d}=v.useForm({defaultValues:a});y.useEffect(()=>{d(a)},[a]);const f=c(),h=y.useMemo(()=>!x.isEqual(f,a),[f,a]);return i("form",{onSubmit:l(n),children:p(s.Stack,{spacing:"xs",children:[p(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[i(s.Text,{children:"Merico Stats Config"}),i(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:i(D.DeviceFloppy,{size:20})})]}),i(fC,{control:o,watch:u}),i(dC,{control:o,watch:u,variables:r})]})})}function mC(t){const{metrics:e,...n}=t;return{...n,metrics:e.map(r=>({...r,postfix:r.postfix??{type:"text",value:""}}))}}class yC extends be{constructor(){super(...arguments);q(this,"VERSION",2)}configVersions(){this.version(1,n=>({...n,version:1,config:n.config})),this.version(2,n=>({...n,version:2,config:mC(n.config)}))}}const bC={displayName:"Merico Stats",displayGroup:"Merico suite",migrator:new yC,name:"merico-stats",viewRender:oC,configRender:gC,createConfig:()=>({version:2,config:xi})},vC=[{value:"#25262B",name:"Dark"},{value:"#868E96",name:"Gray"},{value:"#FA5252",name:"Red"},{value:"#E64980",name:"Pink"},{value:"#BE4BDB",name:"Grape"},{value:"#7950F2",name:"Violet"},{value:"#4C6EF5",name:"Indigo"},{value:"#228BE6",name:"Blue"},{value:"#15AABF",name:"Cyan"},{value:"#12B886",name:"Teal"},{value:"#40C057",name:"Green"},{value:"#82C91E",name:"Lime"},{value:"#FAB005",name:"Yellow"},{value:"#FD7E14",name:"Orange"}].map(t=>({name:t.name,value:t.value,type:"single",category:"basic"})),xC=[Ru,ju,Ku,Qu,Yu,Uu],Po=()=>({id:"dashboard",version:Ja,manifest:{viz:[pi,Lv,r0,pb,rx,zg,Tw,lc,Kd,rf,qf,q0,vg,Oh,Sv,nm,Am,d0,iC,bC,lp],color:[...vC,...xC]}}),on=new Hu,we={pluginManager:lt("pluginManager"),vizManager:lt("vizManager"),colorManager:lt("colorManager"),instanceScope:{panelModel:lt("panelModel"),vizInstance:lt("vizInstance"),interactionManager:lt("interactionManager"),migrator:lt("migrator"),operationManager:lt("operationManager"),triggerManager:lt("triggerManager")}},wi=()=>{try{on.install(Po())}catch{}const t=new Fu(on),e=new Zu(on);return{pluginManager:on,vizManager:t,colorManager:e}},st=y.createContext(wi());try{on.install(Po())}catch{}const Ci=y.createContext(null);function Zn(t){const e=y.useContext(Ci),n=X.useCreation(()=>t.configure(e||new yr),[t.configure]),r=X.usePrevious(n);return r&&r!==n&&r.dispose(),i(Ci.Provider,{value:n,children:t.children})}function Bo(){return y.useContext(Ci)}const wC={viewPanelInFullScreen:x.noop,inFullScreen:!1},Hn=y.createContext(wC),CC=({description:t,isDescriptionEmpty:e})=>e?null:i(s.Tooltip,{color:"white",label:i(Un,{value:t,styles:{root:{border:"none"},content:{padding:0}}}),styles:{tooltip:{border:"0.0625rem solid rgb(233, 236, 239)",boxShadow:"rgb(0 0 0 / 5%) 0px 0.0625rem 0.1875rem, rgb(0 0 0 / 5%) 0px 1.25rem 1.5625rem -0.3125rem, rgb(0 0 0 / 4%) 0px 0.625rem 0.625rem -0.3125rem"}},withArrow:!0,children:i(s.Box,{sx:{height:"16px",alignSelf:"center"},children:i($.IconInfoCircle,{size:16,color:"gray"})})}),SC=k.observer(({label:t,config:{default_value:e,description:n,isDescriptionEmpty:r,...a},value:o,onChange:l})=>p(s.Box,{children:[i(s.Text,{children:" "}),i(s.Checkbox,{label:p(s.Group,{noWrap:!0,position:"apart",align:"middle",spacing:6,children:[i(s.Box,{sx:{flexGrow:1},children:t}),i(CC,{description:n,isDescriptionEmpty:r})]}),checked:o||!1,onChange:u=>l(u.currentTarget.checked),...a,pt:".4em",styles:{input:{borderColor:"#e9ecef"}}})]})),Vo=k.observer(({label:t,config:e,value:n=[null,null],onChange:r})=>{const{inputFormat:a,...o}=e,l=Array.isArray(n)?n.map(f=>f?j(f).toDate():null):[null,null],u=f=>{r(f.map(h=>h&&j(h).format(a)))},c=e.getMinDate(l[0]),d=e.getMaxDate(l[0]);return i(Su.DatePickerInput,{type:"range",label:t,value:l,onChange:u,icon:i(D.Calendar,{size:16}),sx:{minWidth:"16em"},minDate:c,maxDate:d,valueFormat:a,styles:{input:{borderColor:"#e9ecef"}},...o})}),_C=s.createStyles((t,{radius:e=4})=>({root:{borderRadius:t.fn.radius(e),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef","&.rc-select.rc-select-open":{borderColor:"#228be6 !important",".rc-select-selection-overflow-item-rest":{display:"none"},".rc-select-selection-overflow-item-suffix":{display:"block"}},".rc-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"12px",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",flexGrow:1},".rc-select-selection-search-mirror":{display:"none"},".rc-select-selection-search":{flexGrow:1,width:"auto !important"},".rc-select-selection-overflow":{display:"flex",minHeight:"34px",alignItems:"center",flexWrap:"nowrap",marginLeft:"calc(-10px / 2)",boxSizing:"border-box"},".rc-select-selection-overflow-item":{display:"flex",alignItems:"center",backgroundColor:"#f1f3f5",color:"#495057",height:"24px",paddingLeft:"12px",paddingRight:"12px",fontWeight:500,fontSize:"12px",borderRadius:"4px",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",margin:"calc(10px / 2 - 2px) calc(10px / 2)"},".rc-select-selection-overflow-item-rest":{cursor:"pointer"},".rc-select-selection-overflow-item-suffix":{display:"none",backgroundColor:"transparent",width:"100%",maxWidth:"100%",height:"28px",margin:0,paddingLeft:0,paddingRight:0},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:t.fontSizes.sm,fontWeight:500,color:"#212529"},dropdown:{fontSize:t.fontSizes.xs,zIndex:300,backgroundColor:"#fff",border:"1px solid #e9ecef",marginTop:6,padding:0,boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px","&.rc-select-dropdown-slide-up-leave-active":{display:"none"},".rc-select-item-empty":{padding:"8px 12px"},".rc-select-item-option":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"8px 12px 8px 2px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden","&:hover":{backgroundColor:"#f1f3f5"},flexDirection:"row-reverse",".rc-select-item-option-state":{flexGrow:0,flexShrink:0,width:"30px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},".rc-select-item-option-content":{flexGrow:1}}}})),No=({errorMessage:t})=>t?i(s.Text,{color:"red",size:12,children:t}):i(s.Text,{color:"dimmed",size:12,children:"Not found"}),kC=({disabled:t,classNames:e,styles:n,unstyled:r,radius:a,style:o,label:l,value:u,onChange:c,options:d,errorMessage:f})=>{const{classes:h,cx:g}=_C({radius:a},{name:"MultiSelectWidget",classNames:e,styles:n,unstyled:r}),[m,C]=y.useState(!1),w=N=>{C(N)},_=m&&(u==null?void 0:u.length)>0,[T,I]=y.useState(""),L=y.useMemo(()=>{if(!T)return d;const N=T.toLowerCase(),O=A=>{var E;return((E=A.description)==null?void 0:E.toLowerCase().includes(N))||A.label.toLowerCase().includes(N)};return d.filter(O)},[T,d]);return p(s.Stack,{spacing:3,children:[p(s.Group,{position:"apart",children:[i(s.Text,{className:h.label,children:l}),_&&i(s.Tooltip,{label:`${u.length} selected`,children:i(s.Badge,{children:u.length})})]}),i(Ga,{disabled:t,allowClear:!0,className:g(h.root,"check-select"),dropdownClassName:g(h.dropdown,""),onDropdownVisibleChange:w,transitionName:"rc-select-dropdown-slide-up",choiceTransitionName:"rc-select-selection__choice-zoom",style:o,clearIcon:()=>i(s.CloseButton,{}),value:u,onChange:c,onSelect:console.log,mode:"multiple",maxTagCount:0,notFoundContent:i(No,{errorMessage:f}),maxTagTextLength:10,maxTagPlaceholder:N=>`${N.length} selected`,searchValue:T,onSearch:I,filterOption:!1,children:L.map(N=>i(Ga.Option,{children:i(s.Group,{noWrap:!0,children:p("div",{children:[i(s.Text,{size:"sm","data-role":"label",children:N.label}),N.description&&i(s.Text,{size:"xs",color:"dimmed","data-role":"description",children:N.description})]})})},N.value))})]})},TC=k.observer(({label:t,config:e,value:n,onChange:r})=>{const a=ke(),o=!!e.options_query_id,{state:l,error:u}=a.getDataStuffByID(e.options_query_id),c=l==="loading",d=e.min_width?e.min_width:"200px",f=o?c:!1,h=g=>r(g,!1);return i(kC,{label:t,options:e.options,style:{minWidth:"160px",width:d,maxWidth:f?d:"unset",borderColor:"#e9ecef"},disabled:f,value:n,onChange:h,errorMessage:u})}),DC=y.forwardRef(({label:t,description:e,...n},r)=>i("div",{ref:r,...n,children:i(s.Group,{noWrap:!0,children:p("div",{children:[i(s.Text,{size:"sm","data-role":"label",children:t}),i(s.Text,{size:"xs",color:"dimmed","data-role":"description",children:e})]})})})),MC=k.observer(({label:t,config:e,value:n,onChange:r})=>{const a=ke(),o=!!e.options_query_id,{state:l,error:u}=a.getDataStuffByID(e.options_query_id),c=l==="loading";return y.useEffect(()=>{var h;const{default_selection_count:d}=e;if(!d)return;const f=((h=e.options[0])==null?void 0:h.value)??"";console.log("Selecting the first option by default. New value: ",f),r(f,!0)},[e.default_selection_count,e.options]),i(s.Select,{label:t,data:e.options,disabled:o?c:!1,value:n,onChange:r,error:!!u,placeholder:u,maxDropdownHeight:500,styles:{root:{width:e.width?e.width:"200px"},input:{borderColor:"#e9ecef"}},sx:{".mantine-Select-item[data-selected] .mantine-Text-root[data-role=description]":{color:"rgba(255,255,255,.7)"}},itemComponent:DC})});function IC({label:t,config:e,value:n,onChange:r}){return i(s.TextInput,{label:t,value:n||"",onChange:a=>r(a.currentTarget.value),...e,styles:{input:{borderColor:"#e9ecef"}}})}const EC=({rotate:t,onClick:e})=>i("svg",{onClick:e,className:"caret-icon",viewBox:"0 0 1024 1024",focusable:"false","data-icon":"caret-down",width:"14px",height:"14px",fill:"currentColor","aria-hidden":"true",transform:`rotate(${t})`,children:i("path",{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"})}),AC=({expanded:t,isLeaf:e,value:n,onClick:r,...a})=>(n==="0-0-value"&&console.log(a),e?i("span",{style:{width:"14px",display:"inline-block"}}):i(EC,{rotate:t?"0":"-90",onClick:r,...a})),zC=({onClick:t})=>p("svg",{onClick:t,className:"checkbox-icon",width:"16",height:"16",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",children:[i("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),i("rect",{className:"border",x:"4",y:"4",width:"16",height:"16",rx:"2"}),i("rect",{className:"checkmark-indeterminate",x:"8",y:"8",width:"8",height:"8",rx:"2",stroke:"none"}),i("path",{className:"checkmark-checked",d:"M9 12l2 2l4 -4"})]}),$C=({onClick:t,...e})=>i(zC,{onClick:t,...e}),OC=s.createStyles((t,{radius:e=4})=>({root:{borderRadius:t.fn.radius(e),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef","&.rc-tree-select.rc-tree-select-open":{borderColor:"#228be6 !important",".rc-tree-select-selection-overflow-item-rest":{display:"none"},".rc-tree-select-selection-overflow-item-suffix":{display:"block"}},".rc-tree-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"12px",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",flexGrow:1},".rc-tree-select-selection-search-mirror":{display:"none"},".rc-tree-select-selection-search":{flexGrow:1,width:"auto !important"},".rc-tree-select-selection-overflow":{display:"flex",minHeight:"34px",alignItems:"center",flexWrap:"nowrap",marginLeft:"calc(-10px / 2)",boxSizing:"border-box"},".rc-tree-select-selection-overflow-item":{display:"flex",alignItems:"center",backgroundColor:"#f1f3f5",color:"#495057",height:"24px",paddingLeft:"12px",paddingRight:"12px",fontWeight:500,fontSize:"12px",borderRadius:"4px",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",margin:"calc(10px / 2 - 2px) calc(10px / 2)"},".rc-tree-select-selection-overflow-item-rest":{cursor:"pointer"},".rc-tree-select-selection-overflow-item-suffix":{display:"none",backgroundColor:"transparent",width:"100%",maxWidth:"100%",height:"28px",margin:0,paddingLeft:0,paddingRight:0},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-tree-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-tree-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-tree-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:t.fontSizes.sm,fontWeight:500,color:"#212529"},dropdown:{fontSize:t.fontSizes.xs,zIndex:300,paddingTop:"6px","&.rc-tree-select-dropdown-slide-up-leave-active":{display:"none"},".rc-tree-select-tree-list .rc-tree-select-tree-list-holder":{},".rc-tree-select-tree-list, .rc-tree-select-empty":{backgroundColor:"#fff",border:"1px solid #e9ecef",padding:0,boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px"},".rc-tree-select-empty":{padding:"8px 12px"},".rc-tree-select-tree-treenode":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"8px 12px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden","&:hover":{backgroundColor:"#f1f3f5"},"&.rc-tree-select-tree-treenode-checkbox-checked":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-checked":{stroke:"rgb(64, 192, 87)",animation:"check 200ms linear forwards"}},"&.rc-tree-select-tree-treenode-checkbox-indeterminate":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-indeterminate":{fill:"rgb(64, 192, 87)"}},".rc-tree-select-tree-switcher":{height:"16px",alignSelf:"center",paddingRight:"2px",transition:"color 200ms ease","&:hover":{color:"#228be6","svg.caret-icon":{color:"#228be6"}},"svg.caret-icon":{color:"#ced4da",transition:"all 200ms ease"}},".rc-tree-select-tree-node-content-wrapper":{display:"flex",flexWrap:"nowrap",overflow:"hidden",alignItems:"center",gap:"8px",transition:"color 200ms ease","&:hover":{color:"#228be6"}},".rc-tree-select-tree-iconEle":{height:"16px","svg .border":{stroke:"#ced4da"},".checkbox-icon .checkmark-indeterminate":{fill:"transparent",transition:"fill 200ms ease"},".checkbox-icon .checkmark-checked":{transform:"scale(1.2)",transformOrigin:"center center",strokeDasharray:10,strokeDashoffset:-10},"@keyframes check":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}},".rc-tree-select-tree-title":{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",".rc-tree-select-tree-title-desc":{fontSize:"12px",maxWidth:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}},".rc-tree-select-tree-indent":{flexGrow:0,height:0,verticalAlign:"bottom"},".rc-tree-select-tree-indent-unit":{display:"inline-block",width:"1em"}}}})),LC=({disabled:t,classNames:e,styles:n,unstyled:r,radius:a,style:o,label:l,value:u,onChange:c,treeData:d,errorMessage:f})=>{const{classes:h,cx:g}=OC({radius:a},{name:"FilterTreeSelectWidget",classNames:e,styles:n,unstyled:r}),[m,C]=y.useState(!1),w=T=>{C(T)},_=m&&(u==null?void 0:u.length)>0;return p(s.Stack,{spacing:3,children:[p(s.Group,{position:"apart",children:[i(s.Text,{className:h.label,children:l}),_&&i(s.Tooltip,{label:`${u.length} selected`,children:i(s.Badge,{children:u.length})})]}),i(Wa,{disabled:t,allowClear:!0,className:g(h.root,"check-select"),dropdownClassName:g(h.dropdown,""),onDropdownVisibleChange:w,transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:o,treeLine:!0,clearIcon:()=>i(s.CloseButton,{}),switcherIcon:AC,treeIcon:$C,maxTagTextLength:10,value:u,treeData:d,notFoundContent:i(No,{errorMessage:f}),treeNodeFilterProp:"filterBasis",treeCheckable:!0,showCheckedStrategy:Wa.SHOW_PARENT,onChange:c,onSelect:console.log,maxTagCount:0,maxTagPlaceholder:T=>`${T.length} selected`})]})},PC=k.observer(({label:t,config:e,value:n,onChange:r})=>{const{treeData:a,treeDataLoading:o,errorMessage:l}=e,u=e.min_width?e.min_width:"200px",d=!!e.options_query_id?o:!1;return i(LC,{disabled:d,style:{minWidth:"160px",width:u,maxWidth:d?u:"unset",borderColor:"#e9ecef"},value:n,onChange:f=>r(f,!1),treeData:a,errorMessage:l,label:t})}),BC=k.observer(({filter:{type:t,config:e,key:n,...r},formFieldProps:a})=>{switch(t){case"select":return i(MC,{...r,...a,config:e});case"multi-select":return i(TC,{...r,...a,config:e});case"tree-select":return i(PC,{...r,...a,config:e});case"text-input":return i(IC,{...r,...a,config:e});case"date-range":return i(Vo,{...r,...a,config:e});case"checkbox":return i(SC,{...r,...a,config:e});default:return null}}),qo=k.observer(y.forwardRef(({filter:t,...e},n)=>i("div",{className:"filter-root",ref:n,children:i(Fe,{children:i(BC,{filter:t,formFieldProps:e})})})));function VC(t){const e=le();y.useEffect(()=>{var n,r;(r=(n=e.filters).updatePreviewValues)==null||r.call(n,t)},[t])}const Fo=k.observer(function({view:e}){const n=ke(),{control:r,handleSubmit:a,reset:o}=v.useForm({defaultValues:n.filters.values,reValidateMode:"onBlur"}),l=v.useWatch({control:r});y.useEffect(()=>{o(n.filters.values)},[n.filters.values,o]),VC(l);const u=n.filters.visibleInView(e.id),c=y.useMemo(()=>u.every(g=>g.should_auto_submit),[u]),d=y.useMemo(()=>u.filter(g=>x.get(g,"config.required",!1)),[u]),f=y.useMemo(()=>d.length===0?!1:d.some(g=>!g.requiredAndPass(l[g.key])),[l,d]);if(u.length===0)return null;const h=(g,m)=>(C,w)=>{m(C),(g.should_auto_submit||w)&&n.filters.setValueByKey(g.key,C)};return i("form",{onSubmit:a(n.filters.setValues),children:p(s.Group,{className:"dashboard-filters",position:"apart",noWrap:!0,sx:c?{}:{border:"1px solid #e9ecef",borderRadius:"4px",padding:"16px"},children:[i(s.Group,{align:"flex-start",children:u.map(g=>i(v.Controller,{name:g.key,control:r,render:({field:m})=>i(qo,{filter:g,value:m.value,onChange:h(g,m.onChange)})},g.id))}),!c&&i(s.Group,{sx:{alignSelf:"flex-end"},children:i(s.Button,{color:"blue",size:"sm",type:"submit",disabled:f,children:"Search"})})]})})}),Go=b.types.model("MockContextMeta",{current:b.types.optional(b.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 Wo(t){return{current:t}}const NC=b.types.model("PanelLayoutMeta",{x:b.types.number,y:b.types.maybeNull(b.types.number),w:b.types.number,h:b.types.number,moved:b.types.optional(b.types.boolean,!1),static:b.types.optional(b.types.boolean,!1)}).views(t=>({get json(){const{x:e,y:n,w:r,h:a,moved:o}=t;return{h:a,w:r,x:e,y:n===null?0:n,moved:o,static:t.static}}})).actions(t=>({set(e){const{x:n,y:r,w:a,h:o,moved:l}=e;t.x=n,t.y=r,t.w=a,t.h=o,t.moved=!!l,t.static=!!e.static}})),qC=b.types.model("PanelStyleBorderMeta",{enabled:b.types.boolean}).views(t=>({get json(){const{enabled:e}=t;return{enabled:e}}})).actions(t=>({setEnabled(e){t.enabled=e}})),FC=b.types.model("PanelStyleMeta",{border:qC}).views(t=>({get json(){const{border:e}=t;return{border:e.json}}})).actions(t=>({})),GC=b.types.model("VariableMeta",{name:b.types.string,size:b.types.string,weight:b.types.string,color:b.types.union(b.types.model({type:b.types.literal("static"),staticColor:b.types.string}),b.types.model({type:b.types.literal("continuous"),valueRange:b.types.array(b.types.number),colorRange:b.types.array(b.types.string)}),b.types.model({type:b.types.literal("piecewise")})),formatter:b.types.model({output:b.types.enumeration("Output",["number","percent"]),average:b.types.optional(b.types.boolean,!1),mantissa:b.types.number,trimMantissa:b.types.optional(b.types.boolean,!1)}),data_field:b.types.string,aggregation:b.types.union(b.types.model({type:b.types.enumeration(["none","sum","mean","median","min","max","CV","std"]),config:b.types.frozen()}),b.types.model({type:b.types.literal("quantile"),config:b.types.model({p:b.types.number})}))}).views(t=>({get json(){const{name:e,size:n,weight:r,color:a,formatter:o,data_field:l,aggregation:u}=t;return x.cloneDeep({name:e,size:n,color:a,weight:r,formatter:o,data_field:l,aggregation:u})}})),WC=b.types.model("PanelVizMeta",{type:b.types.string,conf:b.types.frozen()}).views(t=>({get json(){return{conf:t.conf,type:t.type}}})).actions(t=>({setType(e){t.type=e},setConf(e){t.conf=e}})),RC=b.types.model({id:b.types.string,title:b.types.string,description:b.types.string,layout:NC,queryIDs:b.types.array(b.types.string),viz:WC,style:FC,variables:b.types.optional(b.types.array(GC),[])}).views(t=>({get json(){const{id:e,title:n,description:r,queryIDs:a}=t;return{id:e,viz:t.viz.json,style:t.style.json,title:n,layout:t.layout.json,queryIDs:[...a],variables:t.variables.map(o=>o.json),description:r}},get queryIDSet(){return new Set(t.queryIDs)}})).actions(t=>({setID(e){t.id=e},setTitle(e){t.title=e},setDescription(e){t.description=e},addQueryID(e){t.queryIDSet.has(e)||t.queryIDs.push(e)},removeQueryID(e){if(!t.queryIDSet.has(e))return;const n=new Set(t.queryIDSet);n.delete(e),t.queryIDs=b.cast(Array.from(n))},setQueryIDs(e){t.queryIDs=b.cast(e)},addVariable(e){t.variables.push(e)},removeVariable(e){t.variables.remove(e)}})),er=t=>x.cloneDeepWith(t,(e,n)=>{if(n!==void 0&&e)return re.toJS(e)});var Ce=(t=>(t.Postgresql="postgresql",t.MySQL="mysql",t.HTTP="http",t))(Ce||{});const jC=b.types.model("QueryMeta",{id:b.types.string,name:b.types.string,type:b.types.enumeration("DataSourceType",[Ce.Postgresql,Ce.MySQL,Ce.HTTP]),key:b.types.string,sql:b.types.string,pre_process:b.types.optional(b.types.string,""),post_process:b.types.optional(b.types.string,""),run_by:b.types.optional(b.types.array(b.types.string),[]),react_to:b.types.optional(b.types.array(b.types.string),[])}).views(t=>({get valid(){return t.id&&t.type&&t.key&&t.name?t.type===Ce.HTTP?!!t.pre_process:!!t.sql:!1},get json(){const{id:e,name:n,type:r,key:a,sql:o,run_by:l,react_to:u,pre_process:c,post_process:d}=t;return er({id:e,key:a,sql:o,name:n,type:r,run_by:l,react_to:u,pre_process:c,post_process:d})}})).actions(t=>({setName(e){t.name=e},setKey(e){t.key=e},setType(e){t.type=e},setSQL(e){t.sql=e},setRunBy(e){t.run_by.length=0,t.run_by.push(...e)},setReactTo(e){t.react_to.length=0,t.react_to.push(...e)},setPreProcess(e){t.pre_process=e},setPostProcess(e){t.post_process=e}})),YC=b.types.model("SQLSnippetMeta",{key:b.types.string,value:b.types.string}).views(t=>({get json(){const{key:e,value:n}=t;return{key:e,value:n}}})).actions(t=>({setKey(e){t.key=e},setValue(e){t.value=e}}));var Se=(t=>(t.Select="select",t.MultiSelect="multi-select",t.TreeSelect="tree-select",t.TextInput="text-input",t.Checkbox="checkbox",t.DateRange="date-range",t))(Se||{});const Ro=b.types.model("FilterCheckboxConfigMeta",{_name:b.types.literal("checkbox"),description:b.types.optional(b.types.string,""),default_value:b.types.boolean}).views(t=>({get json(){const{_name:e,description:n,default_value:r}=t;return{_name:e,description:n,default_value:r}},get isDescriptionEmpty(){const{description:e}=t;return e===""||e==="<p></p>"}})).actions(t=>({setDefaultValue(e){t.default_value=e},setDescription(e){t.description=e}})),QC=()=>Ro.create({_name:"checkbox",description:"",default_value:!1});function jo(t,e){return t.map(n=>{try{return n?j.tz(n,"UTC").format(e):null}catch{return console.log(`[date-range] failed parsing ${n}`),null}})}const KC=b.types.model("FilterDateRangeConfigMeta",{_name:b.types.literal("date-range"),required:b.types.boolean,inputFormat:b.types.enumeration("DateRangeInputFormat",["YYYY","YYYYMM","YYYYMMDD","YYYY-MM","YYYY-MM-DD"]),default_value:b.types.optional(b.types.array(b.types.union(b.types.string,b.types.null)),[null,null]),clearable:b.types.boolean,max_days:b.types.optional(b.types.number,0),allowSingleDateInRange:b.types.optional(b.types.boolean,!1)}).views(t=>({get json(){const{_name:e,max_days:n,required:r,clearable:a,inputFormat:o,default_value:l,allowSingleDateInRange:u}=t;return{_name:e,max_days:n,required:r,clearable:a,inputFormat:o,default_value:jo(l,o),allowSingleDateInRange:u}},truthy(e){return Array.isArray(e)&&e.length===2&&e.every(n=>!!n)}})).views(t=>({getMaxDate(e){const{max_days:n}=t;if(!(!n||!e))return j(e).startOf("day").add(n,"days").toDate()},getMinDate(e){const{max_days:n}=t;if(!(!n||!e))return j(e).startOf("day").subtract(n,"days").toDate()}})).actions(t=>({setFilterValue(e){try{const n=b.getParent(t);b.getRoot(t).filters.setValueByKey(n.key,e)}catch(n){console.error(n)}}})).actions(t=>({setRequired(e){t.required=e},setClearable(e){t.clearable=e},setInputFormat(e){t.inputFormat=e},setDefaultValue(e){t.default_value.length=0,t.default_value.push(...e),t.setFilterValue(e)},setMaxDays(e){t.max_days=e,e>0&&(t.clearable=!0)},setAllowSingleDateInRange(e){t.allowSingleDateInRange=e}})),Yo=b.types.snapshotProcessor(KC,{preProcessor({default_value:t,...e}){return{...e,default_value:t.map(n=>n===null?null:j.tz(n,"UTC").toISOString())}},postProcessor(t){const{default_value:e,...n}=t;return{...n,default_value:jo(e,n.inputFormat)}}}),UC=()=>Yo.create({_name:"date-range",required:!1,inputFormat:"YYYY-MM-DD",clearable:!1,default_value:[null,null]}),XC=b.types.model({label:b.types.string,value:b.types.string}).actions(t=>({setLabel(e){t.label=e},setValue(e){t.value=e}})),Si=b.types.model("FilterConfigModel_BaseSelect",{static_options:b.types.optional(b.types.array(XC),[]),options_query_id:b.types.optional(b.types.string,""),default_selection_count:b.types.optional(b.types.number,0)}).views(t=>({get usingQuery(){return!!t.options_query_id}})).views(t=>({get options(){if(!t.usingQuery)return t.static_options;const{data:e,state:n,error:r}=b.getRoot(t).content.getDataStuffByID(t.options_query_id);return n==="idle"?e:[]}})).actions(t=>({addStaticOption(e){t.static_options.push(e)},removeStaticOption(e){t.static_options.splice(e,1)},setDefaultSelectionCount(e){t.default_selection_count=e},setOptionsQueryID(e){t.options_query_id=e??""}})),Qo=b.types.compose("FilterMultiSelectConfigMeta",b.types.model({_name:b.types.literal("multi-select"),min_width:b.types.optional(b.types.string,""),default_value:b.types.optional(b.types.array(b.types.string),[])}),Si).views(t=>({get json(){const{_name:e,default_value:n,min_width:r,static_options:a,options_query_id:o,default_selection_count:l}=t;return er({_name:e,min_width:r,default_value:n,static_options:a,options_query_id:o,default_selection_count:l})},get default_selection(){return t.usingQuery?t.options.slice(0,t.default_selection_count).map(e=>e.value):t.default_value}})).actions(t=>({setDefaultValue(e){t.default_value=b.cast(e)},setMinWidth(e){t.min_width=e},setDefaultSelection(){const e=b.getRoot(t).content.filters,n=b.getParent(t).key;e.setValueByKey(n,t.default_selection)}})).actions(t=>({afterCreate(){b.addDisposer(t,re.reaction(()=>re.toJS(t.default_selection),t.setDefaultSelection,{fireImmediately:!0,delay:0}))}})),JC=()=>Qo.create({_name:"multi-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),Ko=b.types.compose("FilterConfigModel_Select",b.types.model({_name:b.types.literal("select"),default_value:b.types.string,required:b.types.boolean,width:b.types.optional(b.types.string,"")}),Si).views(t=>({get json(){const{_name:e,default_value:n,required:r,width:a,static_options:o,options_query_id:l,default_selection_count:u}=t;return er({_name:e,width:a,required:r,default_value:n,static_options:o,options_query_id:l,default_selection_count:u})},truthy(e){return!!e},getSelectOption(e){return t.options.find(n=>n.value===e)}})).actions(t=>({setRequired(e){t.required=e},setDefaultValue(e){t.default_value=e},setWidth(e){t.width=e}})),ZC=()=>Ko.create({_name:"select",required:!1,default_value:"",static_options:[],options_query_id:"",default_selection_count:0}),Uo=b.types.model("FilterTextInputConfigMeta",{_name:b.types.literal("text-input"),required:b.types.boolean,default_value:b.types.string}).views(t=>({get json(){const{_name:e,required:n,default_value:r}=t;return{_name:e,required:n,default_value:r}},truthy(e){return typeof e!="string"?!1:!!e.trim()}})).actions(t=>({setRequired(e){t.required=e},setDefaultValue(e){t.default_value=e}})),Xo=()=>Uo.create({_name:"text-input",required:!1,default_value:""});function HC(t){return _u.arrayToTree(t,{id:"value",parentId:"parent_value",childrenField:"children",dataField:null})}function e1(t){return t.map(e=>{const{label:n,description:r,...a}=e,o={...a,filterBasis:`${n}___${r??""}`,description:r,label:n};return r&&(o.label=y.createElement("div",{},[y.createElement(s.Text,{key:0,title:e.label},e.label),y.createElement(s.Text,{key:1,className:"rc-tree-select-tree-title-desc",color:"dimmed",title:e.description},e.description)])),o})}const Jo=b.types.compose("FilterTreeSelectConfigMeta",b.types.model({_name:b.types.literal("tree-select"),min_width:b.types.optional(b.types.string,""),default_value:b.types.optional(b.types.array(b.types.string),[])}),Si).views(t=>({get json(){const{_name:e,default_value:n,min_width:r,static_options:a,options_query_id:o,default_selection_count:l}=t;return{_name:e,min_width:r,default_value:n,static_options:a,options_query_id:o,default_selection_count:l}},get treeData(){const{data:e}=b.getRoot(t).content.getDataStuffByID(t.options_query_id),n=e1(e);return HC(n)},get errorMessage(){const{error:e}=b.getRoot(t).content.getDataStuffByID(t.options_query_id);return e},get treeDataLoading(){const{state:e}=b.getRoot(t).content.getDataStuffByID(t.options_query_id);return e==="loading"},get defaultSelection(){const{default_selection_count:e}=t;return e?this.treeData.slice(0,e).map(r=>r.value):[]}})).actions(t=>({setDefaultValue(e){t.default_value=b.cast(e)},setMinWidth(e){t.min_width=e},applyDefaultSelection(){const e=b.getParent(t,1).key;b.getRoot(t).content.filters.setValueByKey(e,t.defaultSelection)},afterCreate(){b.addDisposer(t,re.reaction(()=>JSON.stringify(t.defaultSelection),this.applyDefaultSelection,{fireImmediately:!0,delay:0}))}})),t1=()=>Jo.create({_name:"tree-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),Zo=b.types.model("FilterMeta",{id:b.types.identifier,key:b.types.string,label:b.types.string,order:b.types.number,visibleInViewsIDs:b.types.array(b.types.string),auto_submit:b.types.optional(b.types.boolean,!1),type:b.types.enumeration("DashboardFilterType",[Se.Select,Se.MultiSelect,Se.TreeSelect,Se.TextInput,Se.Checkbox,Se.DateRange]),config:b.types.union(Ko,Qo,Jo,Uo,Ro,Yo)}).views(t=>({get plainDefaultValue(){const e=t.config.default_value;return Array.isArray(e)?[...e]:e},get usingDefaultValue(){return t.type!==Se.TreeSelect},get auto_submit_supported(){return[Se.Select,Se.Checkbox,Se.DateRange].includes(t.type)}})).views(t=>({get json(){const{id:e,key:n,label:r,order:a,visibleInViewsIDs:o,auto_submit:l,type:u,config:c}=t;return{id:e,key:n,type:u,label:r,order:a,config:c.json,auto_submit:l,visibleInViewsIDs:re.toJS(o)}},get should_auto_submit(){return t.auto_submit_supported&&t.auto_submit},requiredAndPass(e){return x.get(t.config,"required",!1)?x.get(t.config,"truthy",()=>!0)(e):!1}})).actions(t=>({setKey(e){t.key=e},setLabel(e){t.label=e},setOrder(e){t.order=e},setType(e){switch(e){case Se.Select:t.config=ZC();break;case Se.MultiSelect:t.config=JC();break;case Se.TreeSelect:t.config=t1();break;case Se.TextInput:t.config=Xo();break;case Se.Checkbox:t.config=QC();break;case Se.DateRange:t.config=UC();break}t.type=e},setVisibleInViewsIDs(e){t.visibleInViewsIDs.length=0,t.visibleInViewsIDs.push(...e)},setAutoSubmit(e){t.auto_submit=t.auto_submit_supported&&e}}));var Y=(t=>(t.Division="div",t.Modal="modal",t.Tabs="tabs",t))(Y||{});const Ho=b.types.model("ViewDivisionConfig",{_name:b.types.literal(Y.Division)}).views(t=>({get json(){const{_name:e}=t;return{_name:e}}})),n1=()=>Ho.create({_name:Y.Division}),r1=b.types.model("CustomModalTitleModel",{enabled:b.types.optional(b.types.boolean,!1),func_content:b.types.optional(b.types.string,"")}).views(t=>({get json(){const{enabled:e,func_content:n}=t;return{enabled:e,func_content:n}},get value(){const{enabled:e,func_content:n}=t,r=b.getParent(t,2),a=b.getRoot(t);if(!e)return r.name;try{const o={filters:a.content.filters.values,context:a.context.current};return new Function(`return ${n}`)()(o)}catch(o){return console.error(o),r.name}}})).actions(t=>({setEnabled(e){t.enabled=e},setFuncContent(e){t.func_content=e},replace({enabled:e,func_content:n}){t.enabled=e,t.func_content=n}})),_i={enabled:!1,func_content:["function text({ filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
417
417
  `)},el=b.types.model("ViewModalConfig",{_name:b.types.literal(Y.Modal),width:b.types.string,height:b.types.string,custom_modal_title:b.types.optional(r1,_i)}).views(t=>({get json(){const{_name:e,width:n,height:r,custom_modal_title:a}=t;return{_name:e,width:n,height:r,custom_modal_title:a.json}}})).actions(t=>({setWidth(e){t.width=e},setHeight(e){t.height=e}})),i1=()=>el.create({_name:Y.Modal,width:"90vw",height:"90vh"}),a1=b.types.model("ViewTabsTabModel",{id:b.types.identifier,name:b.types.string,view_id:b.types.string,color:b.types.optional(b.types.string,"")}).views(t=>({get json(){const{id:e,name:n,view_id:r,color:a}=t;return{id:e,name:n,color:a,view_id:r}}})).actions(t=>({setName(e){t.name=e},setViewID(e){t.view_id=e},setColor(e){t.color=e}})),tl=b.types.model("ViewTabsConfig",{_name:b.types.literal(Y.Modal),tabs:b.types.optional(b.types.array(a1),[]),variant:b.types.optional(b.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:b.types.optional(b.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:b.types.optional(b.types.boolean,!1)}).views(t=>({get json(){const{_name:e,variant:n,orientation:r,tabs:a,grow:o}=t;return{grow:o,tabs:a.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=b.cast(e)},addTab(){const e=Ee.randomId(),n={id:e,name:e,view_id:""};t.tabs.push(n)},removeTab(e){t.tabs.splice(e,1)}})),s1=()=>tl.create({_name:Y.Modal,tabs:[]}),o1=b.types.model({id:b.types.identifier,name:b.types.string,type:b.types.enumeration("EViewComponentType",[Y.Division,Y.Modal,Y.Tabs]),config:b.types.union(Ho,el,tl),panelIDs:b.types.optional(b.types.array(b.types.string),[])}).views(t=>({get json(){const{id:e,name:n,type:r,config:a}=t;return{id:e,name:n,type:r,config:a.json,panelIDs:t.panelIDs}}})).actions(t=>({setName(e){t.name=e},setType(e){if(t.type!==e){switch(e){case Y.Division:t.config=n1();break;case Y.Modal:t.config=i1();break;case Y.Tabs:t.config=s1();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)}})),nl=b.types.model("DataSourceMetaModel",{id:b.types.string,type:b.types.enumeration("DataSourceType",[Ce.HTTP,Ce.MySQL,Ce.Postgresql]),key:b.types.string,config:b.types.frozen()}),l1=b.types.model("DataSourcesMetaModel",{list:b.types.optional(b.types.array(nl),[])}).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)}})),u1=b.types.model({id:b.types.string,content:b.types.string,create_time:b.types.string,update_time:b.types.string,is_preset:b.types.boolean}),rl=b.types.model("GlobalSQLSnippetsMeta",{list:b.types.optional(b.types.array(u1),[])}).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)}})),ki=b.types.model("ContextMeta",{current:b.types.optional(b.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 il(t){return ki.create({current:t})}const al=b.types.model("ViewsRenderModel",{current:b.types.optional(b.types.array(o1),[]),visibleViewIDs:b.types.array(b.types.string)}).views(t=>({get json(){return t.current.map(e=>er(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 c1(t){const e=t.length>0?[t[0].id]:[];return{current:t.map(r=>{const{_name:a=r.type}=r.config;return{...r,config:{...r.config,_name:a},panelIDs:r.panelIDs}}),visibleViewIDs:e}}const sl=RC.views(t=>({get contentModel(){return b.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.toJSON(),e),{})},get dataLoading(){return this.queries.some(e=>e.state==="loading")},get queryStateMessages(){return this.queries.map(e=>e.stateMessage).filter(e=>!!e)},get queryErrors(){return this.queries.map(e=>e.error).filter(e=>!!e)},get canRenderViz(){return this.queryErrors.length===0&&this.queryStateMessages.length===0&&!this.dataLoading}})).actions(t=>({refreshData(){t.queries.forEach(e=>e.fetchData())},downloadData(){b.getRoot(t).content.queries.downloadDataByQueryIDs(t.queryIDs)}}));function d1(t){return{id:t,layout:{x:0,y:1/0,w:18,h:300},title:t,description:"<p></p>",queryIDs:[],viz:{type:pi.name,conf:pi.createConfig()},style:{border:{enabled:!0}}}}const ol=b.types.model("PanelsRenderModel",{list:b.types.optional(b.types.array(sl),[])}).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(a=>{const o=t.idMap.get(a);o?n.push(o):console.warn(`Panel is not found, id:${a}`)});const r=n.map(a=>({...a.layout.json,i:a.id}));return{panels:n,layouts:r}}}));function ll(t,e){if(t===void 0)return t;if(e._name==="date-range")try{const[...n]=t;return n.map(r=>r===null?r:j.tz(r,"UTC").format(e.inputFormat)??r)}catch(n){return console.error(n),t}return t}function p1(t){return t.reduce((e,n)=>(e[n.key]=ll(n.config.default_value,n.config),e),{})}const ul=b.types.model("FiltersRenderModel",{current:b.types.optional(b.types.array(Zo),[]),values:b.types.optional(b.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 x.sortBy(t.current,"order")},get empty(){return t.current.length===0},visibleInView(e){return x.sortBy(t.current.filter(n=>n.visibleInViewsIDs.includes(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 cl(t){return{current:t,values:p1(t)}}const h1=jC.views(t=>({get conditionOptions(){if(!b.isAlive(t))return[];const{context:e,filters:n}=b.getRoot(t).content.payloadForSQL,r=Object.keys({...e}).map(l=>`context.${l}`),a=Object.keys(n).map(l=>`filters.${l}`);return[...r,...a].map(l=>({label:l.split(".")[1],value:l,group:x.capitalize(l.split(".")[0])}))},get unmetRunByConditions(){if(!b.isAlive(t))return[];const{run_by:e}=t;if(e.length===0)return[];const n=b.getRoot(t).content.payloadForSQL;return e.filter(r=>{const a=x.get(n,r);return Array.isArray(a)?a.length===0:typeof a=="number"?Number.isNaN(a):!a})}})).views(t=>({get reQueryKey(){const{react_to:e=[]}=t;if(e.length===0)return"";const n=b.getRoot(t).content.payloadForSQL,r=[...e].reduce((a,o)=>(a[o]=x.get(n,o),a),{});return JSON.stringify(r)},get runByConditionsMet(){return t.unmetRunByConditions.length===0},get conditionNames(){if(t.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:e}=b.getRoot(t).content.filters,n=t.unmetRunByConditions.filter(a=>a.startsWith("context.")).map(a=>a.split("context.")[0]),r=t.unmetRunByConditions.filter(a=>a.startsWith("filters.")).map(a=>x.get({filters:e},a)).filter(a=>!!a);return{context:n,filters:r}}}));function f1(t,e){return new Function(`return ${t}`)()(e,Ot)}function g1(t,e,n){return f1(t,{context:e,filters:n})}function m1(t,e){try{return new Function(`return ${t.config.processing.pre}`)()(e,Ot)}catch(n){return console.error(n),e}}function y1(t,e){return new Function(`return ${t.config.processing.post}`)()(e,Ot)}function b1(t,e){return t?new Function(`return ${t}`)()(e,Ot):e}const v1=b.types.compose("QueryRenderModel",h1,b.types.model({state:b.types.optional(b.types.enumeration(["idle","loading","error"]),"idle"),data:b.types.optional(b.types.array(b.types.frozen()),[]),error:b.types.frozen()})).views(t=>({get formattedSQL(){const e=b.getRoot(t).content.payloadForSQL;return gr(t.sql,e)},get typedAsSQL(){return[Ce.Postgresql,Ce.MySQL].includes(t.type)},get typedAsHTTP(){return[Ce.HTTP].includes(t.type)},get datasource(){const{key:e,type:n}=t;return b.getRoot(t).datasources.find({type:n,key:e})},get httpConfigString(){const{context:e,filters:n}=b.getRoot(t).content.payloadForSQL,{name:r,pre_process:a}=t.json,o=g1(a,e,n);return console.groupCollapsed(`Request config for: ${r}`),console.log(o),console.groupEnd(),JSON.stringify(o)}})).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:b.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=b.getRoot(t).content.payloadForSQL;t.data=yield*b.toGenerator(Vu({payload:n,title:t.name,query:t.json},t.controller.signal)),t.state="idle",t.error=null}catch(n){if(!ht.isCancel(n)){t.data.length=0;const r=x.get(n,"message","unkown error");t.error=x.get(n,"response.data.detail.message",r),t.state="error"}}}}),runHTTP:b.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:a}=t.json;let o=JSON.parse(t.httpConfigString);o=m1(t.datasource,o);const l=yield*b.toGenerator(Nu({type:n,key:r,configString:JSON.stringify(o)},t.controller.signal));let u=y1(t.datasource,l);u=b1(a,u),t.data=u,t.state="idle",t.error=null}catch(n){if(console.error(n),!ht.isCancel(n)){t.data.length=0;const r=x.get(n,"message","unkown error");t.error=x.get(n,"response.data.detail.message",r),t.state="error"}}}})})).actions(t=>({fetchData:()=>t.typedAsHTTP?t.runHTTP():t.runSQL(),beforeDestroy(){var e;(e=t.controller)==null||e.abort()}})).actions(t=>({afterCreate(){b.addDisposer(t,re.reaction(()=>{var e,n;return t.typedAsHTTP?`${t.id}--${t.key}--${t.reQueryKey}--${(e=t.datasource)==null?void 0:e.id}`:`${t.id}--${t.key}--${t.formattedSQL}--${t.pre_process}--${t.post_process}--${(n=t.datasource)==null?void 0:n.id}`},t.fetchData,{fireImmediately:!0,delay:0}))}})),dl="\uFEFF";function x1(t,e){const n=new Blob([dl+e],{type:"text/csv"});hr.saveAs(n,`${t}.csv`)}function w1(t,e){const n=new Blob([e],{type:"application/json"});hr.saveAs(n,`${t}.json`)}function pl(t){const e=new ku;t.forEach(({id:n,data:r})=>{e.file(`${n}.csv`,fl(r))}),e.generateAsync({type:"blob"}).then(n=>{hr.saveAs(n,"dashboard_data.zip")})}function hl(t){return typeof t=="string"&&t.includes(",")?`"${t}"`:t}function fl(t){if(!Array.isArray(t)||t.length===0)return"";const e=[],n=Object.keys(t[0]).map(hl);return e.push(n.join(",")),t.forEach(r=>{const a=Object.values(r).map(hl).join(",");e.push(a)}),dl+e.join(`
418
- `)}const gl=b.types.model("QueriesRenderModel",{current:b.types.optional(b.types.array(v1),[])}).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).map(e=>e.json)}})).actions(t=>({downloadAllData(){const e=t.current.map(({name:n,data:r})=>({id:n,data:r.toJSON()}));pl(e)},downloadDataByQueryIDs(e){const n=new Set(e),r=t.current.filter(a=>n.has(a.id)).map(({name:a,data:o})=>({id:a,data:o.toJSON()}));pl(r)},downloadDataByQueryID(e){const n=t.findByID(e);if(!n){console.log("[downloadDataByQueryID] query not found");return}const{name:r,data:a}=n,o=fl(a);x1(r,o)},refetchDataByQueryID(e){const n=t.findByID(e);if(!n){console.error(new Error(`[downloadDataByQueryID] query by ID[${e}] not found`));return}return n.fetchData()}}));function C1(t){return{current:t}}const S1=YC.views(t=>({isADuplicatedKey(e){return!e||e===t.key?!1:!!b.getParent(t,2).findByKey(e)}})),ml=b.types.model("SQLSnippetsRenderModel",{current:b.types.optional(b.types.array(S1),[])}).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 _1(t){return{current:t}}function tr(t,e,n,r){return t.reduce((a,o)=>(a[o[e]]=fr(o[n],r),a),{})}class k1{constructor(e){q(this,"origin");q(this,"copy");this.origin=e,this.copy=b.clone(e),re.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!x.isEqual(b.getSnapshot(this.origin),b.getSnapshot(this.copy))}commit(){b.applySnapshot(this.origin,b.getSnapshot(this.copy))}update(e){b.applySnapshot(this.copy,e)}}const T1=t=>new k1(t),D1=k.observer(({view:t})=>{const e=me(),n=le(),r=Ue.useModals(),{panel:a}=Je(),{id:o}=a,{viewPanelInFullScreen:l,inFullScreen:u}=y.useContext(Hn),c=()=>{n.duplicatePanelByID(o,t.id)},d=()=>{e.editor.open(["_VIEWS_",t.id,"_PANELS_",o])},f=()=>r.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>n.removePanelByID(o,t.id),confirmProps:{color:"red"},zIndex:320}),h=y.useCallback(()=>{l(o)},[o,l]),g=!u&&t.type!==Y.Modal;return i(V,{children:i(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:p(s.Menu,{withinPortal:!0,children:[i(s.Menu.Target,{children:i(s.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),p(s.Menu.Dropdown,{children:[i(s.Menu.Item,{onClick:a.refreshData,icon:i(D.Refresh,{size:14}),children:"Refresh"}),i(s.Menu.Item,{onClick:a.downloadData,icon:i(D.Download,{size:14}),children:"Download Data"}),g&&i(s.Menu.Item,{onClick:h,icon:i(D.ArrowsMaximize,{size:14}),disabled:!0,children:"Full Screen"}),i(s.Divider,{label:"Edit",labelPosition:"center"}),i(s.Menu.Item,{onClick:d,icon:i(D.Settings,{size:14}),children:"Settings"}),i(s.Menu.Item,{onClick:c,icon:i(D.Copy,{size:14}),children:"Duplicate"}),i(s.Menu.Item,{color:"red",onClick:f,icon:i(D.Trash,{size:14}),children:"Delete"})]})]})})})});function M1(t){return t?["<p><br></p>","<p></p>"].includes(t):!0}const Ti=k.observer(()=>{const[t,e]=y.useState(!1),{panel:n}=gt();return M1(n.description)?null:p(V,{children:[i(s.Modal,{opened:t,onClose:()=>e(!1),title:n.title,withCloseButton:!1,withinPortal:!0,zIndex:310,children:i(Un,{value:n.description,styles:{root:{border:"none"},content:{padding:0}}})}),i(s.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:i(s.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>e(r=>!r),sx:{verticalAlign:"baseline",cursor:"pointer"},children:i(D.InfoCircle,{size:20})})})]})}),oM="",lM="",I1=k.observer(function(){const{panel:e}=gt(),{title:n}=e;return n?i(s.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:i(s.Text,{align:"center",lineClamp:1,weight:"bold",children:n})}):null});var yl=(t=>(t.migrated="migrated",t.nothingToMigrate="nothingToMigrate",t.checkFailed="checkFailed",t.migrationFailed="migrationFailed",t))(yl||{}),nr=(t=>(t.notStarted="notStarted",t.inProgress="inProgress",t.done="done",t))(nr||{});class E1{constructor(e){q(this,"vizInstance");q(this,"operationManager");q(this,"triggerManager");q(this,"vizManager");q(this,"runningMigration");q(this,"panelModel");q(this,"status","notStarted");this.panelModel=e.getRequired(we.instanceScope.panelModel),this.vizInstance=e.getRequired(we.instanceScope.vizInstance),this.operationManager=e.getRequired(we.instanceScope.operationManager),this.triggerManager=e.getRequired(we.instanceScope.triggerManager),this.vizManager=e.getRequired(we.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 bl(t){const{panel:e}=gt();return y.useCallback(n=>{const r=n.getRequired(we.vizManager),a=r.resolveComponent(t.viz.type);return n.createScoped().provideFactory(we.instanceScope.vizInstance,()=>r.getOrCreateInstance(t)).provideFactory(we.instanceScope.interactionManager,o=>{const l=o.getRequired(we.instanceScope.vizInstance);return new Tr(l,a,Sn)}).provideFactory(we.instanceScope.operationManager,o=>o.getRequired(we.instanceScope.interactionManager).operationManager).provideFactory(we.instanceScope.triggerManager,o=>o.getRequired(we.instanceScope.interactionManager).triggerManager).provideValue(we.instanceScope.panelModel,e).provideFactory(we.instanceScope.migrator,o=>new E1(o))},[t.viz.type,t.viz.conf])}function vl(t){const[e,n]=y.useState(!1),r=Bo().getRequired(we.instanceScope.migrator);return X.useAsyncEffect(async()=>{const a=r.status===nr.notStarted;n(r.status===nr.done),r.status===nr.notStarted&&r.runMigration().then(o=>{o===yl.migrated&&a&&(t==null||t())}).finally(()=>{n(!0)})},[r]),e}function xl(t,e){const n=Bo().getRequired(we.instanceScope.vizInstance);return y.useEffect(()=>(n.instanceData.setItem(null,e.viz.conf),n.instanceData.watchItem(null,r=>{t(r)})),[t,e.viz.type]),n}function A1({setVizConf:t,...e}){const{panel:n}=e,r=xl(t,n),a=vl(()=>{fn.showNotification({title:`${n.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return X.useAsyncEffect(async()=>{await r.instanceData.setItem(null,n.viz.conf)},[r,n.viz.type]),a?i(Wu,{...e}):i(s.Text,{children:"Checking update..."})}function z1(t){const{panel:e,setVizConf:n}=t;xl(n,e);const{inEditMode:r}=y.useContext(wn);return vl(()=>{r&&fn.showNotification({title:`${e.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?i(Gu,{...t}):i(s.Text,{children:"Checking update"})}const uM="";function $1(t,e){const{vizManager:n}=y.useContext(st),{panel:{viz:r,title:a,id:o,description:l,queryIDs:u,variables:c}}=gt(),d={title:a,id:o,description:l,queryIDs:u,viz:r,layout:e},f=bl(d);try{return n.resolveComponent(r.type),i(Zn,{configure:f,children:i(z1,{setVizConf:r.setConf,panel:d,data:t,variables:c,vizManager:n})})}catch(h){return console.info(x.get(h,"message")),null}}const wl=k.observer(function({data:e}){const{ref:n,width:r,height:a}=Ee.useElementSize(),o=$1(e,{w:r,h:a}),l=r>0&&a>0;return i("div",{className:"viz-root",ref:n,children:l&&i(Fe,{children:o})})}),Cl=k.observer(({panel:t})=>p(s.Stack,{children:[t.queryErrors.map((e,n)=>i(s.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:e},`${n}-${e}`)),t.queryStateMessages.map((e,n)=>i(s.Text,{color:"gray",align:"center",children:e},`${n}-${e}`))]})),Di=k.observer(({panel:t,height:e})=>p(s.Flex,{direction:"column",sx:{height:e,position:"relative",width:"100%"},children:[i(s.LoadingOverlay,{visible:t.dataLoading,exitTransitionDuration:0}),!t.canRenderViz&&i(Cl,{panel:t}),t.canRenderViz&&i(wl,{data:t.data})]})),O1={border:"1px solid #e9ecef"},Sl=k.observer(({panel:t,panelStyle:e,dropdownContent:n})=>{const r=t.title?"calc(100% - 25px - 5px)":"100%";return i(Cr,{value:{panel:t,data:t.data,loading:t.dataLoading,errors:t.queryErrors},children:p(s.Box,{className:"panel-root",p:5,pt:0,sx:{...O1,...e},children:[i(s.Box,{sx:{position:"absolute",left:0,top:0,height:28,zIndex:310},children:i(Ti,{})}),n,i(I1,{}),i(Di,{panel:t,height:r})]})})}),L1={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function P1(t){return t.style.border.enabled?{}:L1}const _l=k.observer(function({panel:e,view:n}){const r=P1(e);return i(Sl,{panel:e,panelStyle:r,dropdownContent:i(D1,{view:n})})});function B1(t){return!["richText","button"].includes(t)}const V1=k.observer(({view:t})=>{const{panel:e}=gt(),{id:n}=e,{viewPanelInFullScreen:r,inFullScreen:a}=y.useContext(Hn),o=y.useCallback(()=>{r(n)},[n,r]),l=!a&&t.type!==Y.Modal;return B1(e.viz.type)?i(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:p(s.Menu,{withinPortal:!0,children:[i(s.Menu.Target,{children:i(s.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),p(s.Menu.Dropdown,{children:[i(s.Menu.Item,{onClick:e.refreshData,icon:i(D.Refresh,{size:14}),children:"Refresh"}),i(s.Menu.Item,{onClick:e.downloadData,icon:i(D.Download,{size:14}),children:"Download Data"}),l&&i(s.Menu.Item,{onClick:o,icon:i(D.ArrowsMaximize,{size:14}),children:"Full Screen"})]})]})}):null});function N1(t){return t.style.border.enabled?{}:{border:"1px dashed transparent"}}const Mi=k.observer(({panel:t,view:e})=>{const n=N1(t);return i(Sl,{panel:t,panelStyle:n,dropdownContent:i(V1,{view:e})})}),q1={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},kl=k.observer(function({view:e,panel:n,exitFullScreen:r}){return i(s.Modal,{opened:!0,fullScreen:!0,onClose:r,title:i(s.Button,{color:"blue",size:"xs",onClick:r,leftIcon:i(D.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:q1,children:i(s.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:i(Mi,{view:e,panel:n})})})});function Tl(t,e,n){const{panels:r}=ke(),a=t.id==="Main",[o,l]=y.useState(()=>a&&r.findByID(e)?e:null),u=y.useCallback(h=>{l(h),a&&n(h)},[a,n]),c=y.useCallback(()=>{l(null),a&&n("")},[a,n]),d=o?r.findByID(o):null;return{viewPanelInFullScreen:u,exitFullScreen:c,inFullScreen:!!d,fullScreenPanel:d}}const cM="",F1=y.forwardRef(({h:t},e)=>i(s.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:i(D.ArrowsMove,{size:16})})),G1=y.forwardRef(({handleAxis:t,...e},n)=>i(s.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:i(D.ChevronDownRight,{size:16})})),W1=gn.WidthProvider(gn),R1=k.observer(({view:t,className:e="layout"})=>{const n=ke(),{panels:r,layouts:a}=n.panels.panelsByIDs(t.panelIDs),o=y.useCallback(u=>{u.forEach(({i:c,...d})=>{const f=n.panels.findByID(c);f&&f.layout.set(d)})},[n]),l=(u,c,d,f)=>{d.h<30&&(d.h=30,f.h=30),d.w<4&&(d.w=4,f.w=4)};return i(W1,{onLayoutChange:o,className:`dashboard-layout ${e}`,rowHeight:1,cols:36,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,layout:a,draggableHandle:".react-grid-customDragHandle",resizeHandle:i(G1,{}),onResize:l,children:r.map((u,c)=>p("div",{"data-grid":{...u.layout},className:"panel-grid-item",children:[i(F1,{h:u.layout.h}),i(_l,{view:t,panel:u})]},u.id))})}),j1=gn.WidthProvider(gn),Y1=k.observer(function({view:e,className:n="layout"}){const{panels:r,layouts:a}=ke().panels.panelsByIDs(e.panelIDs);return i(j1,{className:`dashboard-layout ${n}`,cols:36,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:a,children:r.map(o=>i("div",{"data-grid":{...o.layout},className:"panel-grid-item",children:i(Mi,{view:e,panel:o})},o.id))})}),Q1=k.observer(({children:t})=>i(s.Box,{pt:10,pb:100,children:t}));function Dl(t){return t.replace(/(vw|vh)/,"%")}const K1=k.observer(({children:t,view:e})=>{const n=e.config,{width:r,height:a}=y.useMemo(()=>({width:Dl(n.width),height:Dl(n.height)}),[n.width,n.height]);return i(s.Box,{sx:{height:"100%","> div:not(.mantine-Modal-root)":{height:"100%"}},children:i(s.Modal,{size:n.width,opened:!0,onClose:x.noop,withCloseButton:!1,title:n.custom_modal_title.value,trapFocus:!0,onDragStart:o=>{o.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:a,maxHeight:a},content:{border:"1px solid #efefef",height:"100%"},body:{maxHeight:"calc(100% - 48px)",overflow:"auto"}},withinPortal:!1,transitionProps:{duration:0},children:t})})}),U1=({variant:t,orientation:e})=>{const n={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},X1=t=>t.color?{"&[data-active], &[data-active]:hover":{borderColor:t.color?t.color:"..."}}:{},J1=k.observer(({children:t,view:e})=>{const n=Ue.useModals(),r=le(),a=y.useMemo(()=>r.views.options.filter(c=>c.type===Y.Division),[e.id,r.views.options]),o=e.config,l=c=>n.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{o.removeTab(c)},confirmProps:{color:"red"},zIndex:320}),u=o.tabs.length===0;return p(s.Box,{className:"preview-view-tabs",children:[p(s.Tabs,{variant:o.variant,orientation:o.orientation,defaultValue:o.tabs.length>0?o.tabs[0].id:"0",styles:U1(o),children:[p(s.Tabs.List,{grow:o.grow,children:[o.tabs.map(c=>i(s.Tabs.Tab,{value:c.id,sx:X1(c),children:c.name??c.id},c.id)),i(s.Tabs.Tab,{onClick:o.addTab,value:"add",className:"add-a-tab",children:i(D.Plus,{size:18,color:"#228be6"})})]}),o.tabs.map((c,d)=>{const f=r.views.findByID(c.view_id);return p(s.Tabs.Panel,{value:c.id,sx:{position:"relative"},children:[p(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:200},children:[i(s.Overlay,{opacity:.8,color:"#FFF",blur:10,zIndex:100}),p(s.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[i(s.TextInput,{label:"Tab Name",value:c.name,onChange:h=>c.setName(h.currentTarget.value)}),i(s.Select,{label:"View",value:c.view_id,onChange:c.setViewID,data:a}),i(s.ColorInput,{label:"Color",value:c.color,onChange:c.setColor,disabled:o.variant!=="default"}),f&&p(s.Button,{mt:20,variant:"gradient",leftIcon:i($.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>r.views.setIDOfVIE(f.id),children:["Swith to View: ",f.name]}),i(s.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>l(d),disabled:u,leftIcon:i($.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),f&&i(rr,{view:f})]},c.id)})]}),t]})}),Z1=k.observer(({view:t,children:e})=>{switch(t.type){case Y.Modal:return i(K1,{view:t,children:e});case Y.Tabs:return i(J1,{view:t,children:e});case Y.Division:default:return i(Q1,{children:e})}}),Ml=k.observer(function({view:e}){return i(Hn.Provider,{value:{viewPanelInFullScreen:x.noop,inFullScreen:!1},children:i(s.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:i(Z1,{view:e,children:p(s.Box,{sx:{position:"relative"},children:[i(s.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:i(Fo,{view:e})}),i(R1,{view:e})]})})})})}),H1=k.observer(({children:t})=>i(s.Box,{children:t})),eS=k.observer(({children:t,view:e})=>{const n=ke(),r=e.config,a=n.views.visibleViewIDs.includes(e.id),o=()=>n.views.rmVisibleViewID(e.id);return i(s.Modal,{size:r.width,centered:!0,opened:a,onClose:o,withCloseButton:!1,title:r.custom_modal_title.value,trapFocus:!0,onDragStart:l=>{l.stopPropagation()},styles:{root:{position:"fixed",zIndex:200,inset:0},overlay:{zIndex:"unset"},inner:{zIndex:"unset",padding:"0 !important"},content:{border:"1px solid #efefef"},body:{maxHeight:r.height,overflow:"auto"}},transitionProps:{duration:0},children:t})}),tS=t=>t.color?{"&[data-active], &[data-active]:hover":{borderColor:t.color?t.color:"..."}}:{},nS=k.observer(({children:t,view:e})=>{const n=ke(),r=e.config;return p(s.Box,{className:"render-view-tabs",children:[p(s.Tabs,{variant:r.variant,orientation:r.orientation,defaultValue:r.tabs.length>0?r.tabs[0].id:"0",styles:{panel:{padding:r.orientation==="horizontal"?"16px 0px":"0"}},keepMounted:!1,children:[i(s.Tabs.List,{grow:r.grow,children:r.tabs.map(a=>i(s.Tabs.Tab,{value:a.id,sx:tS(a),disabled:!a.view_id,children:a.name??a.id},a.id))}),r.tabs.map(a=>{const o=n.views.findByID(a.view_id);return o?i(s.Tabs.Panel,{value:a.id,children:i(rr,{view:o})},a.id):null})]}),t]})}),rS=k.observer(({view:t,children:e})=>{switch(t.type){case Y.Modal:return i(eS,{view:t,children:e});case Y.Tabs:return i(nS,{view:t,children:e});case Y.Division:default:return i(H1,{children:e})}}),rr=k.observer(function({view:e}){const{fullScreenPanelID:n,setFullScreenPanelID:r}=is(),{viewPanelInFullScreen:a,exitFullScreen:o,inFullScreen:l,fullScreenPanel:u}=Tl(e,n,r);return i(Hn.Provider,{value:{viewPanelInFullScreen:a,inFullScreen:l},children:p(s.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:[l&&i(kl,{view:e,panel:u,exitFullScreen:o}),i(rS,{view:e,children:p(s.Box,{sx:{position:"relative"},children:[!l&&i(s.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:i(Fo,{view:e})}),!l&&i(Y1,{view:e})]})})]})})});var Il=(t=>(t.Use="use",t.Edit="edit",t))(Il||{});const iS={[Y.Division]:"Division",[Y.Tabs]:"Tabs",[Y.Modal]:"Modal"},El={[Y.Division]:"rgba(255, 0, 0, 0.2)",[Y.Modal]:"rgba(0, 0, 0, 0.2)",[Y.Tabs]:"rgba(255, 200, 100, 0.4)"},aS={[Y.Division]:"#ff4000",[Y.Modal]:"#000",[Y.Tabs]:"#ffad18"},sS={definition:{sqlSnippets:[],queries:[],mock_context:{}},views:[{id:"Main",name:"Main",type:Y.Division,config:{},panelIDs:[]}],panels:[],filters:[],version:"9.19.0"};function oS(t,e,n){b.addDisposer(t,b.addMiddleware(t,(r,a)=>{a(r,()=>{b.getType(r.context)===e&&r.type==="action"&&n(r.name,r.context)})}))}const Al=b.types.compose("FiltersModel",ul,b.types.model("FiltersModel",{previewValues:b.types.optional(b.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===Se.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=b.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(){oS(t.current,Zo,(n,r)=>{if(n==="setType"){const a=ll(r.config.default_value,r.config);t.setValueByKey(r.key,a),t.updatePreviewValues({...t.previewValues,[r.key]:a})}})}return{afterCreate(){e()}}}),zl=gl.views(t=>({get options(){const e=t.current.map(n=>({value:n.id,label:n.name,_type:"query"}));return x.sortBy(e,n=>n.label.toLowerCase())}})).actions(t=>({replace(e){t.current=b.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&&(b.detach(n),t.current.remove(n))}})),$l=ml.views(t=>({get options(){const e=t.current.map(n=>({label:n.key,value:n.key,_type:"sql_snippet"}));return x.sortBy(e,n=>n.label.toLowerCase())}})).actions(t=>({replace(e){t.current=b.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)},replaceByIndex(e,n){t.current.splice(e,1,n)}})),lS=b.types.model({data:b.types.optional(b.types.frozen(),[]),state:b.types.optional(b.types.enumeration(["idle","loading","error"]),"idle"),error:b.types.frozen()}).views(t=>({get loading(){return t.state==="loading"},get empty(){return t.data.length===0},get sql(){const e=b.getParent(t,1),{type:n,table_name:r,table_schema:a}=e;if(n===Ce.MySQL)return`
418
+ `)}const gl=b.types.model("QueriesRenderModel",{current:b.types.optional(b.types.array(v1),[])}).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).map(e=>e.json)}})).actions(t=>({downloadAllData(){const e=t.current.map(({name:n,data:r})=>({id:n,data:r.toJSON()}));pl(e)},downloadDataByQueryIDs(e){const n=new Set(e),r=t.current.filter(a=>n.has(a.id)).map(({name:a,data:o})=>({id:a,data:o.toJSON()}));pl(r)},downloadDataByQueryID(e){const n=t.findByID(e);if(!n){console.log("[downloadDataByQueryID] query not found");return}const{name:r,data:a}=n,o=fl(a);x1(r,o)},refetchDataByQueryID(e){const n=t.findByID(e);if(!n){console.error(new Error(`[downloadDataByQueryID] query by ID[${e}] not found`));return}return n.fetchData()}}));function C1(t){return{current:t}}const S1=YC.views(t=>({isADuplicatedKey(e){return!e||e===t.key?!1:!!b.getParent(t,2).findByKey(e)}})),ml=b.types.model("SQLSnippetsRenderModel",{current:b.types.optional(b.types.array(S1),[])}).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 _1(t){return{current:t}}function tr(t,e,n,r){return t.reduce((a,o)=>{try{a[o[e]]=fr(o[n],r)}catch(l){a[o[e]]=l.message}return a},{})}class k1{constructor(e){q(this,"origin");q(this,"copy");this.origin=e,this.copy=b.clone(e),re.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!x.isEqual(b.getSnapshot(this.origin),b.getSnapshot(this.copy))}commit(){b.applySnapshot(this.origin,b.getSnapshot(this.copy))}update(e){b.applySnapshot(this.copy,e)}}const T1=t=>new k1(t),D1=k.observer(({view:t})=>{const e=me(),n=le(),r=Ue.useModals(),{panel:a}=Je(),{id:o}=a,{viewPanelInFullScreen:l,inFullScreen:u}=y.useContext(Hn),c=()=>{n.duplicatePanelByID(o,t.id)},d=()=>{e.editor.open(["_VIEWS_",t.id,"_PANELS_",o])},f=()=>r.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>n.removePanelByID(o,t.id),confirmProps:{color:"red"},zIndex:320}),h=y.useCallback(()=>{l(o)},[o,l]),g=!u&&t.type!==Y.Modal;return i(V,{children:i(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:p(s.Menu,{withinPortal:!0,children:[i(s.Menu.Target,{children:i(s.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),p(s.Menu.Dropdown,{children:[i(s.Menu.Item,{onClick:a.refreshData,icon:i(D.Refresh,{size:14}),children:"Refresh"}),i(s.Menu.Item,{onClick:a.downloadData,icon:i(D.Download,{size:14}),children:"Download Data"}),g&&i(s.Menu.Item,{onClick:h,icon:i(D.ArrowsMaximize,{size:14}),disabled:!0,children:"Full Screen"}),i(s.Divider,{label:"Edit",labelPosition:"center"}),i(s.Menu.Item,{onClick:d,icon:i(D.Settings,{size:14}),children:"Settings"}),i(s.Menu.Item,{onClick:c,icon:i(D.Copy,{size:14}),children:"Duplicate"}),i(s.Menu.Item,{color:"red",onClick:f,icon:i(D.Trash,{size:14}),children:"Delete"})]})]})})})});function M1(t){return t?["<p><br></p>","<p></p>"].includes(t):!0}const Ti=k.observer(()=>{const[t,e]=y.useState(!1),{panel:n}=gt();return M1(n.description)?null:p(V,{children:[i(s.Modal,{opened:t,onClose:()=>e(!1),title:n.title,withCloseButton:!1,withinPortal:!0,zIndex:310,children:i(Un,{value:n.description,styles:{root:{border:"none"},content:{padding:0}}})}),i(s.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:i(s.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>e(r=>!r),sx:{verticalAlign:"baseline",cursor:"pointer"},children:i(D.InfoCircle,{size:20})})})]})}),oM="",lM="",I1=k.observer(function(){const{panel:e}=gt(),{title:n}=e;return n?i(s.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:i(s.Text,{align:"center",lineClamp:1,weight:"bold",children:n})}):null});var yl=(t=>(t.migrated="migrated",t.nothingToMigrate="nothingToMigrate",t.checkFailed="checkFailed",t.migrationFailed="migrationFailed",t))(yl||{}),nr=(t=>(t.notStarted="notStarted",t.inProgress="inProgress",t.done="done",t))(nr||{});class E1{constructor(e){q(this,"vizInstance");q(this,"operationManager");q(this,"triggerManager");q(this,"vizManager");q(this,"runningMigration");q(this,"panelModel");q(this,"status","notStarted");this.panelModel=e.getRequired(we.instanceScope.panelModel),this.vizInstance=e.getRequired(we.instanceScope.vizInstance),this.operationManager=e.getRequired(we.instanceScope.operationManager),this.triggerManager=e.getRequired(we.instanceScope.triggerManager),this.vizManager=e.getRequired(we.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 bl(t){const{panel:e}=gt();return y.useCallback(n=>{const r=n.getRequired(we.vizManager),a=r.resolveComponent(t.viz.type);return n.createScoped().provideFactory(we.instanceScope.vizInstance,()=>r.getOrCreateInstance(t)).provideFactory(we.instanceScope.interactionManager,o=>{const l=o.getRequired(we.instanceScope.vizInstance);return new Tr(l,a,Sn)}).provideFactory(we.instanceScope.operationManager,o=>o.getRequired(we.instanceScope.interactionManager).operationManager).provideFactory(we.instanceScope.triggerManager,o=>o.getRequired(we.instanceScope.interactionManager).triggerManager).provideValue(we.instanceScope.panelModel,e).provideFactory(we.instanceScope.migrator,o=>new E1(o))},[t.viz.type,t.viz.conf])}function vl(t){const[e,n]=y.useState(!1),r=Bo().getRequired(we.instanceScope.migrator);return X.useAsyncEffect(async()=>{const a=r.status===nr.notStarted;n(r.status===nr.done),r.status===nr.notStarted&&r.runMigration().then(o=>{o===yl.migrated&&a&&(t==null||t())}).finally(()=>{n(!0)})},[r]),e}function xl(t,e){const n=Bo().getRequired(we.instanceScope.vizInstance);return y.useEffect(()=>(n.instanceData.setItem(null,e.viz.conf),n.instanceData.watchItem(null,r=>{t(r)})),[t,e.viz.type]),n}function A1({setVizConf:t,...e}){const{panel:n}=e,r=xl(t,n),a=vl(()=>{fn.showNotification({title:`${n.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return X.useAsyncEffect(async()=>{await r.instanceData.setItem(null,n.viz.conf)},[r,n.viz.type]),a?i(Wu,{...e}):i(s.Text,{children:"Checking update..."})}function z1(t){const{panel:e,setVizConf:n}=t;xl(n,e);const{inEditMode:r}=y.useContext(wn);return vl(()=>{r&&fn.showNotification({title:`${e.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?i(Gu,{...t}):i(s.Text,{children:"Checking update"})}const uM="";function $1(t,e){const{vizManager:n}=y.useContext(st),{panel:{viz:r,title:a,id:o,description:l,queryIDs:u,variables:c}}=gt(),d={title:a,id:o,description:l,queryIDs:u,viz:r,layout:e},f=bl(d);try{return n.resolveComponent(r.type),i(Zn,{configure:f,children:i(z1,{setVizConf:r.setConf,panel:d,data:t,variables:c,vizManager:n})})}catch(h){return console.info(x.get(h,"message")),null}}const wl=k.observer(function({data:e}){const{ref:n,width:r,height:a}=Ee.useElementSize(),o=$1(e,{w:r,h:a}),l=r>0&&a>0;return i("div",{className:"viz-root",ref:n,children:l&&i(Fe,{children:o})})}),Cl=k.observer(({panel:t})=>p(s.Stack,{children:[t.queryErrors.map((e,n)=>i(s.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:e},`${n}-${e}`)),t.queryStateMessages.map((e,n)=>i(s.Text,{color:"gray",align:"center",children:e},`${n}-${e}`))]})),Di=k.observer(({panel:t,height:e})=>p(s.Flex,{direction:"column",sx:{height:e,position:"relative",width:"100%"},children:[i(s.LoadingOverlay,{visible:t.dataLoading,exitTransitionDuration:0}),!t.canRenderViz&&i(Cl,{panel:t}),t.canRenderViz&&i(wl,{data:t.data})]})),O1={border:"1px solid #e9ecef"},Sl=k.observer(({panel:t,panelStyle:e,dropdownContent:n})=>{const r=t.title?"calc(100% - 25px - 5px)":"100%";return i(Cr,{value:{panel:t,data:t.data,loading:t.dataLoading,errors:t.queryErrors},children:p(s.Box,{className:"panel-root",p:5,pt:0,sx:{...O1,...e},children:[i(s.Box,{sx:{position:"absolute",left:0,top:0,height:28,zIndex:310},children:i(Ti,{})}),n,i(I1,{}),i(Di,{panel:t,height:r})]})})}),L1={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function P1(t){return t.style.border.enabled?{}:L1}const _l=k.observer(function({panel:e,view:n}){const r=P1(e);return i(Sl,{panel:e,panelStyle:r,dropdownContent:i(D1,{view:n})})});function B1(t){return!["richText","button"].includes(t)}const V1=k.observer(({view:t})=>{const{panel:e}=gt(),{id:n}=e,{viewPanelInFullScreen:r,inFullScreen:a}=y.useContext(Hn),o=y.useCallback(()=>{r(n)},[n,r]),l=!a&&t.type!==Y.Modal;return B1(e.viz.type)?i(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:p(s.Menu,{withinPortal:!0,children:[i(s.Menu.Target,{children:i(s.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),p(s.Menu.Dropdown,{children:[i(s.Menu.Item,{onClick:e.refreshData,icon:i(D.Refresh,{size:14}),children:"Refresh"}),i(s.Menu.Item,{onClick:e.downloadData,icon:i(D.Download,{size:14}),children:"Download Data"}),l&&i(s.Menu.Item,{onClick:o,icon:i(D.ArrowsMaximize,{size:14}),children:"Full Screen"})]})]})}):null});function N1(t){return t.style.border.enabled?{}:{border:"1px dashed transparent"}}const Mi=k.observer(({panel:t,view:e})=>{const n=N1(t);return i(Sl,{panel:t,panelStyle:n,dropdownContent:i(V1,{view:e})})}),q1={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},kl=k.observer(function({view:e,panel:n,exitFullScreen:r}){return i(s.Modal,{opened:!0,fullScreen:!0,onClose:r,title:i(s.Button,{color:"blue",size:"xs",onClick:r,leftIcon:i(D.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:q1,children:i(s.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:i(Mi,{view:e,panel:n})})})});function Tl(t,e,n){const{panels:r}=ke(),a=t.id==="Main",[o,l]=y.useState(()=>a&&r.findByID(e)?e:null),u=y.useCallback(h=>{l(h),a&&n(h)},[a,n]),c=y.useCallback(()=>{l(null),a&&n("")},[a,n]),d=o?r.findByID(o):null;return{viewPanelInFullScreen:u,exitFullScreen:c,inFullScreen:!!d,fullScreenPanel:d}}const cM="",F1=y.forwardRef(({h:t},e)=>i(s.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:i(D.ArrowsMove,{size:16})})),G1=y.forwardRef(({handleAxis:t,...e},n)=>i(s.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:i(D.ChevronDownRight,{size:16})})),W1=gn.WidthProvider(gn),R1=k.observer(({view:t,className:e="layout"})=>{const n=ke(),{panels:r,layouts:a}=n.panels.panelsByIDs(t.panelIDs),o=y.useCallback(u=>{u.forEach(({i:c,...d})=>{const f=n.panels.findByID(c);f&&f.layout.set(d)})},[n]),l=(u,c,d,f)=>{d.h<30&&(d.h=30,f.h=30),d.w<4&&(d.w=4,f.w=4)};return i(W1,{onLayoutChange:o,className:`dashboard-layout ${e}`,rowHeight:1,cols:36,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,layout:a,draggableHandle:".react-grid-customDragHandle",resizeHandle:i(G1,{}),onResize:l,children:r.map((u,c)=>p("div",{"data-grid":{...u.layout},className:"panel-grid-item",children:[i(F1,{h:u.layout.h}),i(_l,{view:t,panel:u})]},u.id))})}),j1=gn.WidthProvider(gn),Y1=k.observer(function({view:e,className:n="layout"}){const{panels:r,layouts:a}=ke().panels.panelsByIDs(e.panelIDs);return i(j1,{className:`dashboard-layout ${n}`,cols:36,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:a,children:r.map(o=>i("div",{"data-grid":{...o.layout},className:"panel-grid-item",children:i(Mi,{view:e,panel:o})},o.id))})}),Q1=k.observer(({children:t})=>i(s.Box,{pt:10,pb:100,children:t}));function Dl(t){return t.replace(/(vw|vh)/,"%")}const K1=k.observer(({children:t,view:e})=>{const n=e.config,{width:r,height:a}=y.useMemo(()=>({width:Dl(n.width),height:Dl(n.height)}),[n.width,n.height]);return i(s.Box,{sx:{height:"100%","> div:not(.mantine-Modal-root)":{height:"100%"}},children:i(s.Modal,{size:n.width,opened:!0,onClose:x.noop,withCloseButton:!1,title:n.custom_modal_title.value,trapFocus:!0,onDragStart:o=>{o.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:a,maxHeight:a},content:{border:"1px solid #efefef",height:"100%"},body:{maxHeight:"calc(100% - 48px)",overflow:"auto"}},withinPortal:!1,transitionProps:{duration:0},children:t})})}),U1=({variant:t,orientation:e})=>{const n={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},X1=t=>t.color?{"&[data-active], &[data-active]:hover":{borderColor:t.color?t.color:"..."}}:{},J1=k.observer(({children:t,view:e})=>{const n=Ue.useModals(),r=le(),a=y.useMemo(()=>r.views.options.filter(c=>c.type===Y.Division),[e.id,r.views.options]),o=e.config,l=c=>n.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{o.removeTab(c)},confirmProps:{color:"red"},zIndex:320}),u=o.tabs.length===0;return p(s.Box,{className:"preview-view-tabs",children:[p(s.Tabs,{variant:o.variant,orientation:o.orientation,defaultValue:o.tabs.length>0?o.tabs[0].id:"0",styles:U1(o),children:[p(s.Tabs.List,{grow:o.grow,children:[o.tabs.map(c=>i(s.Tabs.Tab,{value:c.id,sx:X1(c),children:c.name??c.id},c.id)),i(s.Tabs.Tab,{onClick:o.addTab,value:"add",className:"add-a-tab",children:i(D.Plus,{size:18,color:"#228be6"})})]}),o.tabs.map((c,d)=>{const f=r.views.findByID(c.view_id);return p(s.Tabs.Panel,{value:c.id,sx:{position:"relative"},children:[p(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:200},children:[i(s.Overlay,{opacity:.8,color:"#FFF",blur:10,zIndex:100}),p(s.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[i(s.TextInput,{label:"Tab Name",value:c.name,onChange:h=>c.setName(h.currentTarget.value)}),i(s.Select,{label:"View",value:c.view_id,onChange:c.setViewID,data:a}),i(s.ColorInput,{label:"Color",value:c.color,onChange:c.setColor,disabled:o.variant!=="default"}),f&&p(s.Button,{mt:20,variant:"gradient",leftIcon:i($.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>r.views.setIDOfVIE(f.id),children:["Swith to View: ",f.name]}),i(s.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>l(d),disabled:u,leftIcon:i($.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),f&&i(rr,{view:f})]},c.id)})]}),t]})}),Z1=k.observer(({view:t,children:e})=>{switch(t.type){case Y.Modal:return i(K1,{view:t,children:e});case Y.Tabs:return i(J1,{view:t,children:e});case Y.Division:default:return i(Q1,{children:e})}}),Ml=k.observer(function({view:e}){return i(Hn.Provider,{value:{viewPanelInFullScreen:x.noop,inFullScreen:!1},children:i(s.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:i(Z1,{view:e,children:p(s.Box,{sx:{position:"relative"},children:[i(s.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:i(Fo,{view:e})}),i(R1,{view:e})]})})})})}),H1=k.observer(({children:t})=>i(s.Box,{children:t})),eS=k.observer(({children:t,view:e})=>{const n=ke(),r=e.config,a=n.views.visibleViewIDs.includes(e.id),o=()=>n.views.rmVisibleViewID(e.id);return i(s.Modal,{size:r.width,centered:!0,opened:a,onClose:o,withCloseButton:!1,title:r.custom_modal_title.value,trapFocus:!0,onDragStart:l=>{l.stopPropagation()},styles:{root:{position:"fixed",zIndex:200,inset:0},overlay:{zIndex:"unset"},inner:{zIndex:"unset",padding:"0 !important"},content:{border:"1px solid #efefef"},body:{maxHeight:r.height,overflow:"auto"}},transitionProps:{duration:0},children:t})}),tS=t=>t.color?{"&[data-active], &[data-active]:hover":{borderColor:t.color?t.color:"..."}}:{},nS=k.observer(({children:t,view:e})=>{const n=ke(),r=e.config;return p(s.Box,{className:"render-view-tabs",children:[p(s.Tabs,{variant:r.variant,orientation:r.orientation,defaultValue:r.tabs.length>0?r.tabs[0].id:"0",styles:{panel:{padding:r.orientation==="horizontal"?"16px 0px":"0"}},keepMounted:!1,children:[i(s.Tabs.List,{grow:r.grow,children:r.tabs.map(a=>i(s.Tabs.Tab,{value:a.id,sx:tS(a),disabled:!a.view_id,children:a.name??a.id},a.id))}),r.tabs.map(a=>{const o=n.views.findByID(a.view_id);return o?i(s.Tabs.Panel,{value:a.id,children:i(rr,{view:o})},a.id):null})]}),t]})}),rS=k.observer(({view:t,children:e})=>{switch(t.type){case Y.Modal:return i(eS,{view:t,children:e});case Y.Tabs:return i(nS,{view:t,children:e});case Y.Division:default:return i(H1,{children:e})}}),rr=k.observer(function({view:e}){const{fullScreenPanelID:n,setFullScreenPanelID:r}=is(),{viewPanelInFullScreen:a,exitFullScreen:o,inFullScreen:l,fullScreenPanel:u}=Tl(e,n,r);return i(Hn.Provider,{value:{viewPanelInFullScreen:a,inFullScreen:l},children:p(s.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:[l&&i(kl,{view:e,panel:u,exitFullScreen:o}),i(rS,{view:e,children:p(s.Box,{sx:{position:"relative"},children:[!l&&i(s.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:i(Fo,{view:e})}),!l&&i(Y1,{view:e})]})})]})})});var Il=(t=>(t.Use="use",t.Edit="edit",t))(Il||{});const iS={[Y.Division]:"Division",[Y.Tabs]:"Tabs",[Y.Modal]:"Modal"},El={[Y.Division]:"rgba(255, 0, 0, 0.2)",[Y.Modal]:"rgba(0, 0, 0, 0.2)",[Y.Tabs]:"rgba(255, 200, 100, 0.4)"},aS={[Y.Division]:"#ff4000",[Y.Modal]:"#000",[Y.Tabs]:"#ffad18"},sS={definition:{sqlSnippets:[],queries:[],mock_context:{}},views:[{id:"Main",name:"Main",type:Y.Division,config:{},panelIDs:[]}],panels:[],filters:[],version:"9.19.0"};function oS(t,e,n){b.addDisposer(t,b.addMiddleware(t,(r,a)=>{a(r,()=>{b.getType(r.context)===e&&r.type==="action"&&n(r.name,r.context)})}))}const Al=b.types.compose("FiltersModel",ul,b.types.model("FiltersModel",{previewValues:b.types.optional(b.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===Se.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=b.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(){oS(t.current,Zo,(n,r)=>{if(n==="setType"){const a=ll(r.config.default_value,r.config);t.setValueByKey(r.key,a),t.updatePreviewValues({...t.previewValues,[r.key]:a})}})}return{afterCreate(){e()}}}),zl=gl.views(t=>({get options(){const e=t.current.map(n=>({value:n.id,label:n.name,_type:"query"}));return x.sortBy(e,n=>n.label.toLowerCase())}})).actions(t=>({replace(e){t.current=b.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&&(b.detach(n),t.current.remove(n))}})),$l=ml.views(t=>({get options(){const e=t.current.map(n=>({label:n.key,value:n.key,_type:"sql_snippet"}));return x.sortBy(e,n=>n.label.toLowerCase())}})).actions(t=>({replace(e){t.current=b.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)},replaceByIndex(e,n){t.current.splice(e,1,n)}})),lS=b.types.model({data:b.types.optional(b.types.frozen(),[]),state:b.types.optional(b.types.enumeration(["idle","loading","error"]),"idle"),error:b.types.frozen()}).views(t=>({get loading(){return t.state==="loading"},get empty(){return t.data.length===0},get sql(){const e=b.getParent(t,1),{type:n,table_name:r,table_schema:a}=e;if(n===Ce.MySQL)return`
419
419
  SELECT ordinal_position, column_key, column_name, column_type, is_nullable, column_default, column_comment
420
420
  FROM information_schema.columns
421
421
  WHERE table_name = '${r}' AND table_schema = '${a}'