@devtable/dashboard 10.62.2 → 10.62.3

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.
@@ -102,11 +102,11 @@ export declare function getOption(conf: IParetoChartConf, data: TPanelData, _var
102
102
  color: string;
103
103
  };
104
104
  data: ({
105
- type: string;
105
+ coord: (string | number)[];
106
106
  xAxis?: undefined;
107
107
  } | {
108
108
  xAxis: string | number;
109
- type?: undefined;
109
+ coord?: undefined;
110
110
  })[][];
111
111
  } | undefined;
112
112
  barMaxWidth?: undefined;
@@ -29,11 +29,11 @@ export declare function getMarkLineAndArea(conf: IParetoChartConf, lineData: TLi
29
29
  color: string;
30
30
  };
31
31
  data: ({
32
- type: string;
32
+ coord: (string | number)[];
33
33
  xAxis?: undefined;
34
34
  } | {
35
35
  xAxis: string | number;
36
- type?: undefined;
36
+ coord?: undefined;
37
37
  })[][];
38
38
  };
39
39
  };
@@ -65,11 +65,11 @@ export declare function getSeries(conf: IParetoChartConf, data: TPanelData, form
65
65
  color: string;
66
66
  };
67
67
  data: ({
68
- type: string;
68
+ coord: (string | number)[];
69
69
  xAxis?: undefined;
70
70
  } | {
71
71
  xAxis: string | number;
72
- type?: undefined;
72
+ coord?: undefined;
73
73
  })[][];
74
74
  } | undefined;
75
75
  barMaxWidth?: undefined;
@@ -1715,7 +1715,7 @@ class Ei {
1715
1715
  }), this.instanceRegistry.clear(), this.factoryRegistry.clear();
1716
1716
  }
1717
1717
  }
1718
- const sc = "10.62.2", Rm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1718
+ const sc = "10.62.3", Rm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1719
1719
  __proto__: null,
1720
1720
  version: sc
1721
1721
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12220,7 +12220,7 @@ function vw(e, t) {
12220
12220
  color: "rgba(47, 140, 192, 0.05)"
12221
12221
  },
12222
12222
  data: [[{
12223
- type: "min"
12223
+ coord: ["min", 0]
12224
12224
  }, {
12225
12225
  xAxis: a
12226
12226
  }]]
@@ -53,7 +53,7 @@ Check the top-level render call using <`+A+">.")}return D}}function Zc(w,D){{if(
53
53
  </table>
54
54
  `;function ps(e,t){const n=Object.keys(t),r=Object.values(t);try{return new Function(...n,`return \`${e}\`;`)(...r)}catch(i){throw n.length===0&&e.includes("$")?new Error("[formatSQL] insufficient payload"):i}}function hs(e,t){try{return ps(e,t)}catch(n){return console.error(n),n.message}}function Zu({sql:e,pre_process:t}){if(!t.trim())return e;try{return new Function(`return ${t}`)()({sql:e},pt)}catch(n){return console.error(n),e}}function Hu(e,t,n){if(!e.trim())return t;try{return new Function(`return ${e}`)()(t,pt,n)}catch(r){return console.error(r),t}}function ed(e){e=e||{};const t=Object.keys(e).sort(),n=[];for(let r=0;r<t.length;r++){const i=t[r];if(i!="authentication"&&e[i])n.push(t[r]+"="+(typeof e[i]=="object"?JSON.stringify(e[i]):e[i]));else{const o=Object.keys(e[i]).sort();for(let l=0;l<o.length;l++){const c=o[l];c!="sign"&&e[i][c]&&n.push(o[l]+"="+(typeof e[i][c]=="object"?JSON.stringify(e[i][c]):e[i][c]))}}}return n.sort().join("&")}function td(e,t){let n=ed(e);return n+="&key="+t,Ru.MD5(n).toString().toUpperCase()}class Yi{constructor(){this.type="default_api_client",this.baseURL="http://localhost:31200",this.app_id="",this.app_secret=""}getAuthentication(t){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:td({app_id:this.app_id,nonce_str:n,...t},this.app_secret)}}getRequest(t,n){return(r,i,o,l)=>{const c=this.buildHeader(o),u=this.buildAxiosConfig(t,r,i,o,c,n);return tt(u).then(d=>l?d:d.data).catch(d=>Promise.reject(d))}}get(t){return this.getRequest("GET",t)}post(t){return this.getRequest("POST",t)}put(t){return this.getRequest("PUT",t)}buildAxiosConfig(t,n,r,i,o,l){const c={baseURL:this.baseURL,method:t,url:n,params:t==="GET"?r:i.params,headers:o,signal:l};return["POST","PUT"].includes(t)&&(c.data=i.string?JSON.stringify(r):r,c.data.authentication=this.getAuthentication(c.data)),c}buildHeader(t){const n=window.localStorage.getItem("token");return{"X-Requested-With":"XMLHttpRequest","Content-Type":t.string?"application/x-www-form-urlencoded":"application/json",authorization:n?`bearer ${n}`:"",...t.headers}}}class nd{constructor(t){this.implementation=t}getRequest(t,n){return this.implementation.getRequest(t,n)}get(t){return this.getRequest("GET",t)}post(t){return this.getRequest("POST",t)}put(t){return this.getRequest("PUT",t)}}class Xi extends Yi{constructor(){super(...arguments);P(this,"makeQueryENV",null)}query(n){return async(r,i={})=>{var o;return r.env||(r.env=((o=this.makeQueryENV)==null?void 0:o.call(this))??{error:"failed to run makeQueryENV"}),this.post(n)("/query",r,i)}}httpDataSourceQuery(n){return async(r,i={})=>{var o;return r.env||(r.env=((o=this.makeQueryENV)==null?void 0:o.call(this))??{error:"failed to run makeQueryENV"}),this.getRequest("POST",n)("/query",r,i,!0)}}structure(n){return async(r,i={})=>this.post(n)("/query/structure",r,i)}}class Ji{constructor(t){this.implementation=t}query(t){return this.implementation.query(t)}httpDataSourceQuery(t){return this.implementation.httpDataSourceQuery(t)}structure(t){return this.implementation.structure(t)}getRequest(t,n){return this.implementation.getRequest(t,n)}get(t){return this.getRequest("GET",t)}post(t){return this.getRequest("POST",t)}put(t){return this.getRequest("PUT",t)}}const It=new Xi;function xs(e){It.baseURL!==e.apiBaseURL&&(It.baseURL=e.apiBaseURL),e.app_id&&(It.app_id=e.app_id),e.app_secret&&(It.app_secret=e.app_secret),e.makeQueryENV&&(It.makeQueryENV=e.makeQueryENV)}const Zi=new Ji(It),Je=Zi,Qt=f.forwardRef(function({value:t,onChange:n,...r},i){return s.jsx(a.TextInput,{ref:i,value:t,onChange:n,...r})});function z(e){const[t,n]=e.split(".");return{queryID:t,columnKey:n}}function sd(e){return e.includes(".")?z(e):{queryID:"",columnKey:e}}function st(e,t){var i;const{queryID:n,columnKey:r}=z(t);return n?r?((i=e[n])==null?void 0:i.map(o=>o[r]))??[]:e[n]:[]}function Ut(e,t){const{queryID:n}=z(t);return n?e[n]:[]}function rd(e){return Object.values(e)[0]}function hn(e,t){const{queryID:n,columnKey:r}=z(t);return e[r]}const Hi=["function aggregation({ queryData }, utils) {",' return "Aggregation Result";',"}"].join(`
55
55
  `),Mt={type:"none",config:{},fallback:"0"};function id(e){const t=Array.from(e).sort((r,i)=>r-i),n=Math.floor(t.length/2);return t.length%2===0?(t[n-1]+t[n])/2:t[n]}function ad(e,t){switch(t.type){case"sum":return y.sum(e);case"mean":return y.mean(e);case"median":return id(e);case"max":return y.max(e);case"min":return y.min(e);case"quantile":return Ft.quantile(e,t.config.p);case"CV":const n=pn.std(...e),r=pn.mean(...e);return r?n/r:Number.NaN;case"std":return pn.std(...e);default:return e}}function fs(e,t){const n=e.map(Number),r=ad(n,t);return typeof r=="number"?Number.isFinite(r)?r:t.fallback:r??t.fallback}function od(e,t,n){try{const r=Ut(e,t);return new Function(`return ${n.config.func}`)()({queryData:r},pt)}catch(r){return console.error(r),r.message}}function xn(e,t,n){try{return n.type==="custom"?od(e,t,n):fs(st(e,t),n)}catch(r){return console.error(r),null}}class ld{constructor({valueRange:t,colorRange:n}){P(this,"mapper");this.mapper=mt.interpolate(t,n)}getColor(t){return this.mapper(t)}}const be={mantissa:0,output:"number",trimMantissa:!1,average:!1,absolute:!1};function W(e,{absolute:t,...n}){if(e===null)return String(e);try{let r=os(e).value();if(r===void 0)throw new Error(`[formatNumber]Not a number: ${e}`);return t&&(r=Math.abs(r)),os(r).format(n)}catch(r){return console.debug(r),String(e)}}function cd(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function rt({data_field:e,aggregation:t},n){return xn(n,e,t)}function Le({formatter:e,aggregation:t},n){if(typeof n!="string"&&typeof n!="number")return cd(n);if(t.type==="custom")return n;try{return W(n,e)}catch(r){return console.error(r),n}}function ud(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{if(typeof t!="number")throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}`);return new ld(e).getColor(t)}catch(n){return console.error(n),"black"}return"black"}function dd(e,t){const{color:n,data_field:r,aggregation:i,size:o,weight:l}=e,c=xn(t,r,i),u=Le(e,c);return s.jsx(a.Text,{sx:{fontSize:o,display:"inline"},color:ud(n,c),weight:l,children:u})}function pd(e,t){const n={};return e.forEach(r=>{const i=r.name;n[i]=dd(r,t)}),n}function hd(e){return e.split(" ").map((t,n)=>s.jsxs(f.Fragment,{children:[t," "]},n))}function xd(e){const n=e.replaceAll("<br />","<br/>").replaceAll(`
56
- `,"<br/>").split("<br/>");return n.map((i,o)=>{const l=[hd(i)];return o!==n.length-1&&l.push(s.jsx("br",{},`br-${o}`)),l}).flat().filter(i=>i!==void 0)}function gs(e){return xd(e)}function Kt(e,t,n){const r=pd(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map((o,l)=>{const c=i.exec(o);if(!c)return gs(o);const u=r[c[1]];if(!u)return gs(o);const d=c[2]??"";return s.jsxs(f.Fragment,{children:[u,gs(d)]},`${o}-${l}`)})}function fd(e,t){const{data_field:n,aggregation:r}=e,i=xn(t,n,r);return Le(e,i)}function ea(e,t){const n={};return e.forEach(r=>{n[r.name]=fd(r,t)}),n}function fn(e,t,n){const r=ea(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{const l=i.exec(o);if(!l)return o;const c=r[l[1]];if(!c)return o;const u=l[2]??"";return`${c}${u}`}).join("")}const ms={grid:{axis:"#97999D",scope:"rgba(47,140,192,0.1)",boundary:"#789AB4",reference:"#CFCFD8"},graphics:{compared:{blueDark:"#3E7CAB",blue:"#6398C7",blueLight:"#7CB0DF",blue10:"#6398C71a",redDark:"#AF5F6B",red:"#CD7C88",redLight:"#E794A0",red10:"#CD7C881a"},gradient:{distributed:"linear-gradient(90deg, #1babe6 0%, #2fc8c8 28.63%, #98d44b 48.86%, #ffd057 67.53%, #f5ae53 80.6%, #e76441 91.18%, #b90000 100%)",protrude:"linear-gradient(180deg, #ec73734d 0%, #ec737300 100%)"},level:{lv0:"#6398C7",lv1:"#61B5BF",lv2:"#54D4BB",lv3:"#F5D277",lv4:"#E8BB7F",lv5:"#DB9E84",lv6:"#CB8089"},depth:{dp0:"#FFF7F8",dp1:"#FFE1E1",dp2:"#FDBCBC",dp3:"#F39494",dp4:"#FA4242",dp5:"#E21212"},multiple:{c1:"#66B4DB",c2:"#E46464",c3:"#EEBA00",c4:"#33A678",c5:"#9D88CB",c6:"#939943",c7:"#E49792",c8:"#09A2B8",c9:"#AF5F6B",c10:"#6CA157",c11:"#3E7CAB",c12:"#6398C7",c13:"#E692BA",c14:"#97B566",c15:"#8CACE2",c16:"#CA79AC",c17:"#6DBC80",c18:"#B08F4B",c19:"#39BFA2",c20:"#826BAF"}}};function gd(){K.registerTheme("merico-light",{color:Object.values(ms.graphics.multiple),visualMap:{color:Object.values(ms.graphics.depth).reverse()},axes:[{type:"all",name:"通用坐标轴",axisLineColor:"#97999D",axisTickColor:"#97999D",axisLabelShow:!0,axisLabelColor:"#818388",splitLineShow:!0,splitLineColor:["#E0E6F1"]}]})}function ta(){gd()}function*md(e){const t=ms.graphics[e];if(!t)throw new Error("Invalid palette key provided");const n=Object.values(t);let r=0;for(;;)yield n[r%n.length],r++}function na(){return{filters:{},context:{}}}function ys(e){const t=na();if(!e)return na();const{filters:n=t.filters,context:r=t.context}=e;return{filters:n,context:r}}class Se extends f.Component{constructor(t){super(t),this.state={error:null}}componentDidCatch(t){this.setState({error:t})}render(){var t;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(a.Box,{children:[s.jsx(a.Text,{size:"xs",children:(t=this.state.error)==null?void 0:t.message}),s.jsx(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function yd(e,t){return new Function(`return ${e}`)()(t,pt)}function bd(e,t,n){return yd(e,{context:t,filters:n})}function vd(e,t){try{return new Function(`return ${e.config.processing.pre}`)()(t,pt)}catch(n){return console.error(n),t}}function jd(e,t){return new Function(`return ${e.config.processing.post}`)()(t,pt)}function wd(e,t,n){return e?new Function(`return ${e}`)()(t,pt,n):t}const gn=e=>y.cloneDeepWith(e,(t,n)=>{if(n!==void 0&&t)return R.toJS(t)}),mn={sqlSnippet:new RegExp("(?<=sql_snippets\\.)([^\\?}.]+)","gm"),context:new RegExp("(?<=context\\.)([^\\?}.]+)","gm"),filter:new RegExp("(?<=filters\\.)([^\\?}.]+)","gm")};function Cd(e,t){const n=Di.decode(t);n!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:n}),console.groupEnd())}async function Sd({query:e,name:t,payload:n,additionals:r},i){if(!e.sql)return[];const{type:o,key:l,sql:c,pre_process:u,post_process:d}=e,p=ps(c,n),h=Zu({sql:p,pre_process:u}),x=Di.encode(h);Cd(h,x);let m=await Je.query(i)({type:o,key:l,query:x,...r},{params:{name:t}});return m=Hu(d,m,ys(n)),m}async function _d({type:e,key:t,configString:n,name:r,additionals:i},o){try{return await Je.httpDataSourceQuery(o)({type:e,key:t,query:n,...i},{params:{name:r}})}catch(l){if(tt.isCancel(l))throw l;return console.error(l),l}}async function bs(){try{return(await Je.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function sa(){try{return(await Je.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class ra{constructor(t){P(this,"rootRef");this.rootRef=R.observable({current:t})}async deleteItem(t){R.runInAction(()=>{y.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?R.toJS(this.rootRef.current):y.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(y.isObject(n))R.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else R.runInAction(()=>{y.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,r){return R.reaction(()=>this.getValueFromRoot(t),(i,o)=>{n(i,o)},{requiresObservable:!0,fireImmediately:y.get(r,"fireImmediately",!1)})}}class kd{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new Ii)}getChannel(t){const n=this.channels.get(t);if(n)return n;const r=new Ii;return this.channels.set(t,r),r}}class Td{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const n=this.instances.get(t.id);if(n)return n;const r={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new kd,instanceData:new ra(t.viz.conf)};return this.instances.set(t.id,r),r}}function ia(e,t,n,r){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new ra({}),colorPalette:{getColor(){return()=>""}},data:t,variables:r}}const Dd=e=>{const{panel:t,vizManager:n,data:r,variables:i}=e,o=n.resolveComponent(t.viz.type),l=n.getOrCreateInstance(t),c={...ia(l,r,n,i),viewport:{width:t.layout.w,height:t.layout.h}},u=o.viewRender;return s.jsx(u,{context:c,instance:l,...y.omit(e,["panel","vizManager","data"])})},Id=e=>{const{vizManager:t,panel:n,data:r,variables:i}=e,o=t.resolveComponent(n.viz.type),l=t.getOrCreateInstance(n),c={...ia(l,r,t,i)},u=o.configRender;return s.jsx(u,{context:c,instance:l,...y.omit(e,["panel","vizManager","data"])})},aa=(e,t)=>{const n=nt.bezier(e),r=nt.bezier(t);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},yn=e=>{const t=nt.bezier(e);return function(n){return t(n/100).hex()}},Md={type:"interpolation",displayName:"Red / Green",getColor:aa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},zd={type:"interpolation",displayName:"Yellow / Blue",getColor:aa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ad={type:"interpolation",displayName:"Red",getColor:yn(["#fff7f1","darkred"]),name:"red",category:"sequential"},Ed={type:"interpolation",displayName:"Green",getColor:yn(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Pd={type:"interpolation",displayName:"Blue",getColor:yn(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Ld={type:"interpolation",displayName:"Orange",getColor:yn(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Od{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function it(e){return new Od(e)}class vs{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new vs;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const n=this.factoryRegistry.get(t.symbol);if(n){const r=n(this);return this.instanceRegistry.set(t.symbol,r),r}if(this.parent)return this.parent.get(t)}provideFactory(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,n),this}provideValue(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(t=>{const n=y.get(t,"dispose");y.isFunction(n)&&n.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const oa="10.62.2",Bd=Object.freeze(Object.defineProperty({__proto__:null,version:oa},Symbol.toStringTag,{value:"Module"}));class $d{constructor(t){P(this,"staticColors",new Map);P(this,"interpolations",new Map);t.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const n=this.encodeColor(t);t.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(n,t)):t.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(n,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Vd{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const n=this.vizComponents.get(t);if(n)return n;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const n of t.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 Nd{constructor(){P(this,"migrations",[])}version(t,n){return this.migrations.push({version:t,handler:n}),this}run(t,n,r){var l;if(t.from===t.to)return n;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const i=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),o=y.orderBy(i,"version","asc");if(((l=y.last(o))==null?void 0:l.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,u)=>u.handler(c,r),n)}}class ie extends Nd{constructor(){super(),this.configVersions()}version(t,n){return super.version(t,(r,i)=>({version:t,...n(r,i)}))}async migrate({configData:t,panelModel:n}){const r=await t.getItem(null),i=y.get(r,"version",0),o=this.run({from:i,to:this.VERSION},r,{panelModel:n});await t.setItem(null,o)}async needMigration({configData:t}){const n=await t.getItem(null);return y.get(n,"version",0)<this.VERSION}}const $=(e,t)=>{const[n,{setFalse:r}]=V.useBoolean(!0),[i,o]=f.useState();f.useEffect(()=>(e.getItem(t).then(c=>{o(c),r()}),e.watchItem(t,c=>{o(c)})));const l=f.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:n,value:i,set:l}},De={top:16,right:16,bottom:16,left:16},Qe=e=>Math.max(0,e-De.left-De.right),Ue=e=>Math.max(0,e-De.top-De.bottom),Yt=(e,t)=>({width:Qe(e),height:Ue(t)}),Ie=({width:e,height:t,children:n})=>s.jsx(a.Box,{pt:De.top,pr:De.right,pb:De.bottom,pl:De.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:n}),js={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"}};K.use([O.GridComponent,O.VisualMapComponent,O.LegendComponent,O.TooltipComponent,Ce.CanvasRenderer]);function qd({context:e}){const{value:t}=$(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=y.defaults({},t,js),h=f.useMemo(()=>Ut(n,o),[n,o]),{x,y:m,z:v}=f.useMemo(()=>({x:z(o),y:z(l),z:z(c)}),[o,l,c]),{min:C,max:T}=f.useMemo(()=>{const E=y.minBy(h,H=>H[v.columnKey]),F=y.maxBy(h,H=>H[v.columnKey]);return{min:y.get(E,v.columnKey),max:y.get(F,v.columnKey)}},[h,v]),M={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:C,max:T,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:u,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(E=>[E[x.columnKey],E[m.columnKey],E[v.columnKey]])}]};return t?s.jsx(Ie,{width:r,height:i,children:s.jsx(we,{echarts:K,option:M,style:Yt(r,i),notMerge:!0,theme:"merico-light"})}):null}const la=f.createContext(null),ws=la.Provider;function Cs(){const e=f.useContext(la);if(!e)throw new Error("Please use DashboardModelContextProvider");return e}const Y=()=>Cs(),Ss=()=>Cs(),ca=f.createContext({searchButtonProps:{}}),_s=ca.Provider;function ua(){return f.useContext(ca)}const da=f.createContext(null),ks=da.Provider;function pa(){const e=f.useContext(da);if(!e)throw new Error("Please use ContentModelContextProvider");return e}const X=()=>pa(),ce=()=>pa(),Fd={inEditMode:!1},bn=f.createContext(Fd),ha=f.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),Ts=ha.Provider;function xa(){const e=f.useContext(ha);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const ht=()=>xa(),Oe=()=>xa(),Gd={fullScreenPanelID:"",setFullScreenPanelID:y.noop},Ds=f.createContext(Gd);function fa(){const e=f.useContext(Ds);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const B=S.observer(f.forwardRef(({label:e,required:t,value:n,onChange:r,clearable:i=!1,sx:o,...l},c)=>{const{panel:u}=Oe(),d=f.useMemo(()=>u.dataFieldOptions(n,i),[n,i]);if(d.length===0){const p=u.explainDataKey(n);return s.jsxs(a.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[s.jsx(a.HoverCard.Target,{children:s.jsx(a.Box,{children:s.jsx(a.TextInput,{label:e,required:t,defaultValue:p.columnKey,readOnly:!0,disabled:!0})})}),s.jsx(a.HoverCard.Dropdown,{children:s.jsxs(a.Group,{position:"left",spacing:0,children:[s.jsx(a.Text,{size:"xs",color:p.queryName?"black":"red",sx:{fontFamily:"monospace"},children:p.queryName??p.queryID}),s.jsx(a.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),s.jsx(a.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:p.columnKey})]})})]})}return s.jsx(a.Select,{ref:c,label:e,data:d,value:n,onChange:r,required:t,sx:o,maxDropdownHeight:500,...l})}));function Wd({context:e}){const{value:t,set:n}=$(e.instanceData,"config"),r=y.defaults({},t,js),{control:i,handleSubmit:o,reset:l}=b.useForm({defaultValues:r});return f.useEffect(()=>{l(r)},[t]),t?s.jsx(a.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:o(n),children:[s.jsx(a.Text,{children:"X Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>s.jsx(B,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(a.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>s.jsx(B,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(a.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>s.jsx(B,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(a.Button,{color:"blue",type:"submit",children:[s.jsx(k.DeviceFloppy,{size:20}),s.jsx(a.Text,{ml:"md",children:"Save"})]})})]})}):null}function Rd(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=u=>u&&`${n}.${u}`,{x_axis_data_key:i,y_axis_data_key:o,z_axis_data_key:l,...c}=e;return{...c,x_axis_data_key:r(i),y_axis_data_key:r(o),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class Qd extends ie{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:i}=n;return{...n,version:2,config:Rd(i,r)}})}}const Ud={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Qd,name:"bar-3d",viewRender:qd,configRender:Wd,createConfig(){return{version:2,config:y.cloneDeep(js)}}},Be={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
56
+ `,"<br/>").split("<br/>");return n.map((i,o)=>{const l=[hd(i)];return o!==n.length-1&&l.push(s.jsx("br",{},`br-${o}`)),l}).flat().filter(i=>i!==void 0)}function gs(e){return xd(e)}function Kt(e,t,n){const r=pd(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map((o,l)=>{const c=i.exec(o);if(!c)return gs(o);const u=r[c[1]];if(!u)return gs(o);const d=c[2]??"";return s.jsxs(f.Fragment,{children:[u,gs(d)]},`${o}-${l}`)})}function fd(e,t){const{data_field:n,aggregation:r}=e,i=xn(t,n,r);return Le(e,i)}function ea(e,t){const n={};return e.forEach(r=>{n[r.name]=fd(r,t)}),n}function fn(e,t,n){const r=ea(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{const l=i.exec(o);if(!l)return o;const c=r[l[1]];if(!c)return o;const u=l[2]??"";return`${c}${u}`}).join("")}const ms={grid:{axis:"#97999D",scope:"rgba(47,140,192,0.1)",boundary:"#789AB4",reference:"#CFCFD8"},graphics:{compared:{blueDark:"#3E7CAB",blue:"#6398C7",blueLight:"#7CB0DF",blue10:"#6398C71a",redDark:"#AF5F6B",red:"#CD7C88",redLight:"#E794A0",red10:"#CD7C881a"},gradient:{distributed:"linear-gradient(90deg, #1babe6 0%, #2fc8c8 28.63%, #98d44b 48.86%, #ffd057 67.53%, #f5ae53 80.6%, #e76441 91.18%, #b90000 100%)",protrude:"linear-gradient(180deg, #ec73734d 0%, #ec737300 100%)"},level:{lv0:"#6398C7",lv1:"#61B5BF",lv2:"#54D4BB",lv3:"#F5D277",lv4:"#E8BB7F",lv5:"#DB9E84",lv6:"#CB8089"},depth:{dp0:"#FFF7F8",dp1:"#FFE1E1",dp2:"#FDBCBC",dp3:"#F39494",dp4:"#FA4242",dp5:"#E21212"},multiple:{c1:"#66B4DB",c2:"#E46464",c3:"#EEBA00",c4:"#33A678",c5:"#9D88CB",c6:"#939943",c7:"#E49792",c8:"#09A2B8",c9:"#AF5F6B",c10:"#6CA157",c11:"#3E7CAB",c12:"#6398C7",c13:"#E692BA",c14:"#97B566",c15:"#8CACE2",c16:"#CA79AC",c17:"#6DBC80",c18:"#B08F4B",c19:"#39BFA2",c20:"#826BAF"}}};function gd(){K.registerTheme("merico-light",{color:Object.values(ms.graphics.multiple),visualMap:{color:Object.values(ms.graphics.depth).reverse()},axes:[{type:"all",name:"通用坐标轴",axisLineColor:"#97999D",axisTickColor:"#97999D",axisLabelShow:!0,axisLabelColor:"#818388",splitLineShow:!0,splitLineColor:["#E0E6F1"]}]})}function ta(){gd()}function*md(e){const t=ms.graphics[e];if(!t)throw new Error("Invalid palette key provided");const n=Object.values(t);let r=0;for(;;)yield n[r%n.length],r++}function na(){return{filters:{},context:{}}}function ys(e){const t=na();if(!e)return na();const{filters:n=t.filters,context:r=t.context}=e;return{filters:n,context:r}}class Se extends f.Component{constructor(t){super(t),this.state={error:null}}componentDidCatch(t){this.setState({error:t})}render(){var t;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(a.Box,{children:[s.jsx(a.Text,{size:"xs",children:(t=this.state.error)==null?void 0:t.message}),s.jsx(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function yd(e,t){return new Function(`return ${e}`)()(t,pt)}function bd(e,t,n){return yd(e,{context:t,filters:n})}function vd(e,t){try{return new Function(`return ${e.config.processing.pre}`)()(t,pt)}catch(n){return console.error(n),t}}function jd(e,t){return new Function(`return ${e.config.processing.post}`)()(t,pt)}function wd(e,t,n){return e?new Function(`return ${e}`)()(t,pt,n):t}const gn=e=>y.cloneDeepWith(e,(t,n)=>{if(n!==void 0&&t)return R.toJS(t)}),mn={sqlSnippet:new RegExp("(?<=sql_snippets\\.)([^\\?}.]+)","gm"),context:new RegExp("(?<=context\\.)([^\\?}.]+)","gm"),filter:new RegExp("(?<=filters\\.)([^\\?}.]+)","gm")};function Cd(e,t){const n=Di.decode(t);n!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:n}),console.groupEnd())}async function Sd({query:e,name:t,payload:n,additionals:r},i){if(!e.sql)return[];const{type:o,key:l,sql:c,pre_process:u,post_process:d}=e,p=ps(c,n),h=Zu({sql:p,pre_process:u}),x=Di.encode(h);Cd(h,x);let m=await Je.query(i)({type:o,key:l,query:x,...r},{params:{name:t}});return m=Hu(d,m,ys(n)),m}async function _d({type:e,key:t,configString:n,name:r,additionals:i},o){try{return await Je.httpDataSourceQuery(o)({type:e,key:t,query:n,...i},{params:{name:r}})}catch(l){if(tt.isCancel(l))throw l;return console.error(l),l}}async function bs(){try{return(await Je.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function sa(){try{return(await Je.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class ra{constructor(t){P(this,"rootRef");this.rootRef=R.observable({current:t})}async deleteItem(t){R.runInAction(()=>{y.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?R.toJS(this.rootRef.current):y.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(y.isObject(n))R.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else R.runInAction(()=>{y.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,r){return R.reaction(()=>this.getValueFromRoot(t),(i,o)=>{n(i,o)},{requiresObservable:!0,fireImmediately:y.get(r,"fireImmediately",!1)})}}class kd{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new Ii)}getChannel(t){const n=this.channels.get(t);if(n)return n;const r=new Ii;return this.channels.set(t,r),r}}class Td{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const n=this.instances.get(t.id);if(n)return n;const r={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new kd,instanceData:new ra(t.viz.conf)};return this.instances.set(t.id,r),r}}function ia(e,t,n,r){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new ra({}),colorPalette:{getColor(){return()=>""}},data:t,variables:r}}const Dd=e=>{const{panel:t,vizManager:n,data:r,variables:i}=e,o=n.resolveComponent(t.viz.type),l=n.getOrCreateInstance(t),c={...ia(l,r,n,i),viewport:{width:t.layout.w,height:t.layout.h}},u=o.viewRender;return s.jsx(u,{context:c,instance:l,...y.omit(e,["panel","vizManager","data"])})},Id=e=>{const{vizManager:t,panel:n,data:r,variables:i}=e,o=t.resolveComponent(n.viz.type),l=t.getOrCreateInstance(n),c={...ia(l,r,t,i)},u=o.configRender;return s.jsx(u,{context:c,instance:l,...y.omit(e,["panel","vizManager","data"])})},aa=(e,t)=>{const n=nt.bezier(e),r=nt.bezier(t);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},yn=e=>{const t=nt.bezier(e);return function(n){return t(n/100).hex()}},Md={type:"interpolation",displayName:"Red / Green",getColor:aa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},zd={type:"interpolation",displayName:"Yellow / Blue",getColor:aa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ad={type:"interpolation",displayName:"Red",getColor:yn(["#fff7f1","darkred"]),name:"red",category:"sequential"},Ed={type:"interpolation",displayName:"Green",getColor:yn(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Pd={type:"interpolation",displayName:"Blue",getColor:yn(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Ld={type:"interpolation",displayName:"Orange",getColor:yn(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Od{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function it(e){return new Od(e)}class vs{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new vs;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const n=this.factoryRegistry.get(t.symbol);if(n){const r=n(this);return this.instanceRegistry.set(t.symbol,r),r}if(this.parent)return this.parent.get(t)}provideFactory(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,n),this}provideValue(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(t=>{const n=y.get(t,"dispose");y.isFunction(n)&&n.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const oa="10.62.3",Bd=Object.freeze(Object.defineProperty({__proto__:null,version:oa},Symbol.toStringTag,{value:"Module"}));class $d{constructor(t){P(this,"staticColors",new Map);P(this,"interpolations",new Map);t.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const n=this.encodeColor(t);t.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(n,t)):t.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(n,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Vd{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const n=this.vizComponents.get(t);if(n)return n;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const n of t.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 Nd{constructor(){P(this,"migrations",[])}version(t,n){return this.migrations.push({version:t,handler:n}),this}run(t,n,r){var l;if(t.from===t.to)return n;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const i=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),o=y.orderBy(i,"version","asc");if(((l=y.last(o))==null?void 0:l.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,u)=>u.handler(c,r),n)}}class ie extends Nd{constructor(){super(),this.configVersions()}version(t,n){return super.version(t,(r,i)=>({version:t,...n(r,i)}))}async migrate({configData:t,panelModel:n}){const r=await t.getItem(null),i=y.get(r,"version",0),o=this.run({from:i,to:this.VERSION},r,{panelModel:n});await t.setItem(null,o)}async needMigration({configData:t}){const n=await t.getItem(null);return y.get(n,"version",0)<this.VERSION}}const $=(e,t)=>{const[n,{setFalse:r}]=V.useBoolean(!0),[i,o]=f.useState();f.useEffect(()=>(e.getItem(t).then(c=>{o(c),r()}),e.watchItem(t,c=>{o(c)})));const l=f.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:n,value:i,set:l}},De={top:16,right:16,bottom:16,left:16},Qe=e=>Math.max(0,e-De.left-De.right),Ue=e=>Math.max(0,e-De.top-De.bottom),Yt=(e,t)=>({width:Qe(e),height:Ue(t)}),Ie=({width:e,height:t,children:n})=>s.jsx(a.Box,{pt:De.top,pr:De.right,pb:De.bottom,pl:De.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:n}),js={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"}};K.use([O.GridComponent,O.VisualMapComponent,O.LegendComponent,O.TooltipComponent,Ce.CanvasRenderer]);function qd({context:e}){const{value:t}=$(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=y.defaults({},t,js),h=f.useMemo(()=>Ut(n,o),[n,o]),{x,y:m,z:v}=f.useMemo(()=>({x:z(o),y:z(l),z:z(c)}),[o,l,c]),{min:C,max:T}=f.useMemo(()=>{const E=y.minBy(h,H=>H[v.columnKey]),F=y.maxBy(h,H=>H[v.columnKey]);return{min:y.get(E,v.columnKey),max:y.get(F,v.columnKey)}},[h,v]),M={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:C,max:T,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:u,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(E=>[E[x.columnKey],E[m.columnKey],E[v.columnKey]])}]};return t?s.jsx(Ie,{width:r,height:i,children:s.jsx(we,{echarts:K,option:M,style:Yt(r,i),notMerge:!0,theme:"merico-light"})}):null}const la=f.createContext(null),ws=la.Provider;function Cs(){const e=f.useContext(la);if(!e)throw new Error("Please use DashboardModelContextProvider");return e}const Y=()=>Cs(),Ss=()=>Cs(),ca=f.createContext({searchButtonProps:{}}),_s=ca.Provider;function ua(){return f.useContext(ca)}const da=f.createContext(null),ks=da.Provider;function pa(){const e=f.useContext(da);if(!e)throw new Error("Please use ContentModelContextProvider");return e}const X=()=>pa(),ce=()=>pa(),Fd={inEditMode:!1},bn=f.createContext(Fd),ha=f.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),Ts=ha.Provider;function xa(){const e=f.useContext(ha);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const ht=()=>xa(),Oe=()=>xa(),Gd={fullScreenPanelID:"",setFullScreenPanelID:y.noop},Ds=f.createContext(Gd);function fa(){const e=f.useContext(Ds);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const B=S.observer(f.forwardRef(({label:e,required:t,value:n,onChange:r,clearable:i=!1,sx:o,...l},c)=>{const{panel:u}=Oe(),d=f.useMemo(()=>u.dataFieldOptions(n,i),[n,i]);if(d.length===0){const p=u.explainDataKey(n);return s.jsxs(a.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[s.jsx(a.HoverCard.Target,{children:s.jsx(a.Box,{children:s.jsx(a.TextInput,{label:e,required:t,defaultValue:p.columnKey,readOnly:!0,disabled:!0})})}),s.jsx(a.HoverCard.Dropdown,{children:s.jsxs(a.Group,{position:"left",spacing:0,children:[s.jsx(a.Text,{size:"xs",color:p.queryName?"black":"red",sx:{fontFamily:"monospace"},children:p.queryName??p.queryID}),s.jsx(a.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),s.jsx(a.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:p.columnKey})]})})]})}return s.jsx(a.Select,{ref:c,label:e,data:d,value:n,onChange:r,required:t,sx:o,maxDropdownHeight:500,...l})}));function Wd({context:e}){const{value:t,set:n}=$(e.instanceData,"config"),r=y.defaults({},t,js),{control:i,handleSubmit:o,reset:l}=b.useForm({defaultValues:r});return f.useEffect(()=>{l(r)},[t]),t?s.jsx(a.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:o(n),children:[s.jsx(a.Text,{children:"X Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>s.jsx(B,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(a.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>s.jsx(B,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(a.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>s.jsx(B,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>s.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(a.Button,{color:"blue",type:"submit",children:[s.jsx(k.DeviceFloppy,{size:20}),s.jsx(a.Text,{ml:"md",children:"Save"})]})})]})}):null}function Rd(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=u=>u&&`${n}.${u}`,{x_axis_data_key:i,y_axis_data_key:o,z_axis_data_key:l,...c}=e;return{...c,x_axis_data_key:r(i),y_axis_data_key:r(o),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class Qd extends ie{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:i}=n;return{...n,version:2,config:Rd(i,r)}})}}const Ud={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Qd,name:"bar-3d",viewRender:qd,configRender:Wd,createConfig(){return{version:2,config:y.cloneDeep(js)}}},Be={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
57
57
  `)},ga={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Yd,configRender:Kd,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 Kd(e){return s.jsx(s.Fragment,{})}function Yd(e){return s.jsx(a.Text,{children:"Click chart's series"})}const Xd=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],vn=f.forwardRef(({sectionTitle:e,value:t,onChange:n},r)=>{const i=o=>l=>{const c=y.cloneDeep(t);y.set(c,o,l),n(c)};return s.jsxs(a.Stack,{spacing:0,children:[e&&s.jsx(a.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",labelProps:{color:"dimmed"}}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(a.NumberInput,{label:"Max Width",hideControls:!0,value:t.width,onChange:i("width")}),s.jsx(a.Select,{label:"Overflow",data:Xd,value:t.overflow,onChange:i("overflow")}),s.jsx(a.TextInput,{label:"Ellipsis",value:t.ellipsis,disabled:!0})]})]})}),Ke=f.forwardRef(({value:e,onChange:t},n)=>{const r=o=>{t({...e,on_axis:o})},i=o=>{t({...e,in_tooltip:o})};return s.jsxs(a.Stack,{ref:n,spacing:0,children:[s.jsx(vn,{sectionTitle:"Overflow on Axis",value:e.on_axis,onChange:r}),s.jsx(vn,{sectionTitle:"Overflow in Tooltip",value:e.in_tooltip,onChange:i})]})});function Me(){return{on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}}}function $e({overflow:e,width:t}){const n={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],r=e==="truncate"?"nowrap":"initial",i={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
58
58
  max-width: ${t}px;
59
59
  word-break: ${n};
@@ -164,7 +164,7 @@ Check the top-level render call using <`+A+">.")}return D}}function Zc(w,D){{if(
164
164
  </table>
165
165
  `}})}const Mm=({value:e,onChange:t})=>{const n=r=>{r&&t(r)};return s.jsx(a.Box,{children:s.jsx(me,{height:"500px",defaultLanguage:"javascript",value:e,onChange:n,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},uo={static:{type:"static",value:10},dynamic:{type:"dynamic",value:["function getValue({ variables }, { lodash, interpolate }) {"," // your code goes here"," return 100;","}"].join(`
166
166
  `)}},zm=({value:e,onChange:t})=>{const[n,{setTrue:r,setFalse:i}]=V.useBoolean(),[o,l]=f.useState(e),c=()=>{i();const{type:h,value:x}=o,m={type:h,value:x};l(m),t(m)},u=()=>{i(),l(e)},d=h=>{l(x=>({...x,value:h}))},p=()=>{d(uo.dynamic.value)};return s.jsxs(s.Fragment,{children:[s.jsx(a.Box,{sx:{width:"50%"},children:s.jsx(a.Button,{variant:"filled",mt:24,onClick:r,sx:{flexGrow:0},children:"Setup"})}),s.jsx(a.Modal,{size:800,title:"Setup dynamic value",opened:n,onClose:i,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:n&&s.jsxs(a.Stack,{children:[s.jsx(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),s.jsx(Mm,{value:o.value,onChange:d}),s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Button,{onClick:p,color:"red",leftIcon:s.jsx(k.Recycle,{size:20}),children:"Reset"}),s.jsxs(a.Group,{position:"right",children:[s.jsx(a.Button,{onClick:u,variant:"subtle",children:"Cancel"}),s.jsx(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Am=({value:e,onChange:t})=>e.type!=="dynamic"?null:s.jsx(zm,{value:e,onChange:t}),Em=({value:e,onChange:t})=>{if(e.type!=="static")return null;const n=r=>{t({...e,value:r})};return s.jsx(a.NumberInput,{defaultValue:18,label:" ",hideControls:!0,value:e.value,onChange:n})},Pm=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],Ot=f.forwardRef(({label:e="Value",value:t,onChange:n},r)=>{const i=o=>{n({...uo[o]})};return s.jsxs(a.SimpleGrid,{cols:2,children:[s.jsx(a.Select,{ref:r,label:e,data:Pm,value:t.type,onChange:i,sx:{flexGrow:1}}),s.jsx(Em,{value:t,onChange:n}),s.jsx(Am,{value:t,onChange:n})]})});function Bt(e,t,n){if(!e.type)return n;if(e.type==="static"){const{value:i}=e;return i}const{value:r}=e;try{return new Function(`return ${r}`)()({variables:t},{lodash:y,interpolate:mt.interpolate})}catch(i){return console.error(`[getNumberOrDynamicValue] failed parsing custom function, error: ${i.message}`),10}}function Lm(e,t){const n=Bt(e.heat_block.min,t),r=Bt(e.heat_block.max,t);return{min:n,max:r,calculable:!0,orient:"horizontal",left:"center",top:0,itemWidth:15}}function Om(e,t,n){const{overflow:r,rotate:i}=e.x_axis.axisLabel,o=Ve(r.on_axis);return{id:"main-x-axis",type:"category",data:t,name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:i,...o,formatter:n},splitArea:{show:!0},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:2}}function Bm(e,t,n){const{nameAlignment:r,data_key:i,...o}=e.y_axis,{overflow:l,rotate:c}=e.y_axis.axisLabel,u=Ve(l.on_axis);return{...o,type:"category",data:t,axisLabel:{rotate:c,...u,formatter:n},axisLine:{show:!0,color:"blue"},axisTick:{show:!0,alignWithLabel:!0},splitArea:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,z:2}}function $m(e,t,n,r){return n<e*10||r<t*10?0:n<e*20||r<t*20?1:2}function Vm(e,t,n,r,i){if(!e.x_axis.data_key||!e.y_axis.data_key||!e.heat_block.data_key)return{};const o=n.reduce((T,M)=>{const E=rt(M,t);return T[M.name]=Le(M,E),T},{}),l=Cm(e),c=Sm(e),u=z(e.x_axis.data_key),d=z(e.y_axis.data_key),p=z(e.heat_block.data_key),h=y.uniq(t[u.queryID].map(T=>T[u.columnKey])),x=y.uniq(t[u.queryID].map(T=>T[d.columnKey])),m=t[u.queryID].map(T=>[y.get(T,u.columnKey),y.get(T,d.columnKey),y.get(T,p.columnKey)]),v=$m(h.length,x.length,r,i);return{xAxis:Om(e,h,l.x_axis),yAxis:Bm(e,x,l.y_axis),series:km(e,m,v),tooltip:Im(e,t,l,c),grid:_m(e),visualMap:Lm(e,o)}}function Nm(e){return s.jsx(s.Fragment,{})}function qm(e){return s.jsx(a.Text,{children:"Click heat block"})}const po={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:qm,configRender:Nm,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},lr={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:Me(),formatter:{...Be}}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:Me(),formatter:{...Be}}},heat_block:{min:{type:"static",value:0},max:{type:"static",value:100},name:"Value",data_key:"",value_formatter:be,label:{show:!1,fontSize:10}},tooltip:{metrics:[]}};K.use([O.DataZoomComponent,ne.HeatmapChart,O.GridComponent,O.LegendComponent,O.TooltipComponent,O.VisualMapComponent,Ce.CanvasRenderer]);function Fm({conf:e,data:t,width:n,height:r,interactionManager:i,variables:o}){const l=f.useMemo(()=>{const h=z(e.x_axis.data_key),x=z(e.y_axis.data_key);return y.keyBy(t[h.queryID],m=>`${m[h.columnKey]}---${m[x.columnKey]}`)},[t,e.x_axis.data_key,e.y_axis.data_key]),c=Ne(i.triggerManager,po.id),u=f.useCallback(h=>{const[x,m]=h.value,v=y.get(l,`${x}---${m}`,{error:"rowData is not found"});c.forEach(C=>{i.runInteraction(C.id,{...h,rowData:v})})},[l,c,i]),d=f.useMemo(()=>({click:u}),[u]),p=f.useMemo(()=>Vm(e,t,o,n,r),[e,t,n,r]);return s.jsx(we,{echarts:K,option:p,style:{width:n,height:r},onEvents:d,notMerge:!0,theme:"merico-light"})}function Gm({context:e,instance:t}){const n=qe({vizManager:e.vizManager,instance:t}),{value:r}=$(e.instanceData,"config"),{variables:i}=e,o=f.useMemo(()=>y.defaults({},r,lr),[r]),l=e.data,{width:c,height:u}=e.viewport;return!c||!u?null:s.jsx(Ie,{width:c,height:u,children:s.jsx(Fm,{variables:i,width:Qe(c),height:Ue(u),data:l,conf:o,interactionManager:n})})}function Wm({control:e,watch:t}){t(["heat_block"]);const n=t("heat_block.label.show");return s.jsxs(a.Stack,{children:[s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"heat_block.data_key",control:e,render:({field:r})=>s.jsx(B,{label:"Data Field",required:!0,sx:{flex:1},...r})}),s.jsx(b.Controller,{name:"heat_block.name",control:e,render:({field:r})=>s.jsx(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"heat_block.min",control:e,render:({field:r})=>s.jsx(Ot,{label:"Min Value",...r})}),s.jsx(b.Controller,{name:"heat_block.max",control:e,render:({field:r})=>s.jsx(Ot,{label:"Max Value",...r})})]}),s.jsx(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),s.jsx(b.Controller,{name:"heat_block.value_formatter",control:e,render:({field:r})=>s.jsx(Fe,{...r})}),s.jsx(a.Divider,{mb:-5,variant:"dashed",label:"Label",labelPosition:"center"}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"heat_block.label.show",control:e,render:({field:r})=>s.jsx(a.Switch,{label:"Show label",checked:r.value,onChange:i=>r.onChange(i.currentTarget.checked),sx:{flexGrow:1}})}),s.jsx(b.Controller,{name:"heat_block.label.fontSize",control:e,render:({field:r})=>s.jsx(a.NumberInput,{size:"xs",icon:s.jsx(_.IconTextSize,{size:16}),disabled:!n,...r})})]})]})}const Rm=({control:e,index:t,remove:n})=>s.jsxs(a.Stack,{children:[s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:r})=>s.jsx(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),s.jsx(b.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:r})=>s.jsx(B,{label:"Value Field",required:!0,sx:{flex:1},...r})})]}),s.jsx(a.Divider,{mb:-10,mt:10,variant:"dashed"}),s.jsx(a.Button,{leftIcon:s.jsx(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>n(t),sx:{top:15,right:5},children:"Delete this Metric"})]}),Qm=({control:e,watch:t})=>{const{fields:n,append:r,remove:i}=b.useFieldArray({control:e,name:"tooltip.metrics"}),o=t("tooltip.metrics"),l=n.map((h,x)=>({...h,...o[x]})),c=()=>r({id:Date.now().toString(),data_key:"",name:""}),u=t("tooltip.metrics.0.id"),[d,p]=f.useState(()=>u??null);return f.useEffect(()=>{u&&p(h=>h!==null?h:u)},[u]),s.jsxs(s.Fragment,{children:[s.jsxs(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[s.jsx(k.InfoCircle,{size:14,color:"#888"}),s.jsx(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),s.jsx(a.Divider,{variant:"dashed",my:10}),s.jsxs(a.Tabs,{value:d,onTabChange:h=>p(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[s.jsxs(a.Tabs.List,{children:[l.map((h,x)=>s.jsx(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),s.jsx(a.Tabs.Tab,{onClick:c,value:"add",children:s.jsx(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,x)=>s.jsx(a.Tabs.Panel,{value:h.id,children:s.jsx(Rm,{control:e,index:x,remove:i},h.id)},h.id))]})]})};function Um({control:e,watch:t}){return s.jsx(Qm,{control:e,watch:t})}const Km=({disabled:e,value:t,onChange:n})=>{const r=i=>{i&&n(i)};return s.jsxs(a.Box,{sx:{position:"relative"},children:[e&&s.jsx(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),s.jsx(me,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Ym={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
167
- `)},ho=f.forwardRef(({value:e,onChange:t},n)=>{const[r,{setTrue:i,setFalse:o}]=V.useBoolean(),[l,c]=f.useState(e);f.useEffect(()=>{c(e)},[e]);const u=m=>{c({...l,enabled:m})},d=()=>{o();const{enabled:m,func_content:v}=l,C={enabled:m,func_content:v};c(C),t(C)},p=()=>{o(),c(e)},h=m=>{c(v=>({...v,func_content:m}))},x=()=>{h(Ym.func_content)};return s.jsxs(s.Fragment,{children:[s.jsx(a.Button,{variant:"filled",mt:24,onClick:i,sx:{flexGrow:0},children:"Customize Label"}),s.jsx(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&s.jsxs(a.Stack,{children:[s.jsx(a.Checkbox,{mt:10,label:"Enabled",checked:l.enabled,onChange:m=>u(m.currentTarget.checked)}),s.jsx(Km,{value:l.func_content,onChange:h,disabled:!l.enabled}),s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Button,{onClick:x,color:"red",leftIcon:s.jsx(k.Recycle,{size:20}),children:"Reset"}),s.jsxs(a.Group,{position:"right",children:[s.jsx(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),s.jsx(a.Button,{onClick:d,children:"OK"})]})]})]})})]})});function Xm({control:e,watch:t}){return t(["x_axis"]),s.jsxs(a.Stack,{children:[s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.data_key",control:e,render:({field:n})=>s.jsx(B,{label:"Data Field",required:!0,sx:{flex:1},...n})}),s.jsx(b.Controller,{name:"x_axis.name",control:e,render:({field:n})=>s.jsx(a.TextInput,{label:"Name",sx:{flex:1},...n})})]}),s.jsx(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),s.jsx(b.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:n})=>s.jsx(Ke,{...n})}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:n})=>s.jsx(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:s.jsx(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...n})}),s.jsx(b.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:n})=>s.jsx(ho,{...n})})]})]})}const Jm=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function Zm({control:e,watch:t}){return t(["y_axis"]),s.jsxs(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"y_axis.data_key",control:e,render:({field:n})=>s.jsx(B,{label:"Data Field",required:!0,sx:{flex:1},...n})}),s.jsx(b.Controller,{name:"y_axis.name",control:e,render:({field:n})=>s.jsx(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...n})})]}),s.jsx(a.Group,{grow:!0,noWrap:!0,children:s.jsx(b.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:n})=>s.jsx(a.Select,{label:"Name Alignment",required:!0,data:Jm,sx:{flex:1},...n})})}),s.jsx(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),s.jsx(b.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:n})=>s.jsx(Ke,{...n})}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:n})=>s.jsx(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:s.jsx(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...n})}),s.jsx(b.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:n})=>s.jsx(ho,{...n})})]})]})}function Hm({context:e}){const{value:t,set:n}=$(e.instanceData,"config"),r=f.useMemo(()=>y.defaultsDeep({},t,lr),[t]),i=f.useMemo(()=>y.cloneDeep(r),[r]);f.useEffect(()=>{!y.isEqual(r,i)&&(console.log("config malformed, resetting to defaults",r,i),n(i))},[r,i]);const{control:o,handleSubmit:l,watch:c,getValues:u,reset:d}=b.useForm({defaultValues:i});f.useEffect(()=>{d(i)},[i]);const p=u(),h=f.useMemo(()=>!y.isEqual(p,r),[p,r]);return s.jsx("form",{onSubmit:l(n),style:{flexGrow:1},children:s.jsxs(a.Stack,{spacing:"xs",sx:{height:"100%"},children:[s.jsxs(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[s.jsx(a.Text,{children:"Chart Config"}),s.jsx(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:s.jsx(k.DeviceFloppy,{size:20})})]}),s.jsxs(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{root:{flexGrow:1},tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[s.jsxs(a.Tabs.List,{children:[s.jsx(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),s.jsx(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),s.jsx(a.Tabs.Tab,{value:"Heat Block",children:"Heat Block"}),s.jsx(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"})]}),s.jsx(a.Tabs.Panel,{value:"X Axis",children:s.jsx(Xm,{control:o,watch:c})}),s.jsx(a.Tabs.Panel,{value:"Y Axis",children:s.jsx(Zm,{control:o,watch:c})}),s.jsx(a.Tabs.Panel,{value:"Heat Block",children:s.jsx(Wm,{control:o,watch:c})}),s.jsx(a.Tabs.Panel,{value:"Tooltip",children:s.jsx(Um,{control:o,watch:c})})]})]})})}function ey(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=d=>d&&`${n}.${d}`,{x_axis:i,y_axis:o,heat_block:l,tooltip:c,...u}=e;return{...u,x_axis:{...i,data_key:r(i.data_key)},y_axis:{...o,data_key:r(o.data_key)},heat_block:{...l,data_key:r(l.data_key)},tooltip:{...c,metrics:c.metrics.map(d=>({...d,data_key:r(d.data_key)}))}}}catch(n){throw console.error("[Migration failed]",n),n}}function ty(e){return y.defaultsDeep({},e,{heat_block:{label:{show:!1,fontSize:10}}})}function ny(e){const{heat_block:t}=e;let{min:n,max:r}=t;return typeof n!="number"&&(n=0),typeof r!="number"&&(r=100),{...e,heat_block:{...t,min:{type:"static",value:n},max:{type:"static",value:r}}}}class sy extends ie{constructor(){super(...arguments);P(this,"VERSION",4)}configVersions(){this.version(1,n=>(console.log("🟥 unexpected calling"),{version:1,config:n})),this.version(2,(n,r)=>({...n,version:2,config:ey(n.config,r)})),this.version(3,n=>({...n,version:3,config:ty(n.config)})),this.version(4,n=>({...n,version:4,config:ny(n.config)}))}}const ry={displayName:"Heatmap",displayGroup:"ECharts-based charts",migrator:new sy,name:"heatmap",viewRender:Gm,configRender:Hm,createConfig:()=>({version:4,config:lr}),triggers:[po]},xo={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:ay,configRender:iy,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'line' | 'bar'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function iy(e){return s.jsx(s.Fragment,{})}function ay(e){return s.jsx(a.Text,{children:"Click chart's series"})}const fo={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"#789AB4"},cr={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...Be},overflow:Me()}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:be},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:Et,markLine:fo};function Bn(e){return W(e,{output:"percent",mantissa:0,absolute:!1})}function oy(e){const t=e.value[1];try{return Bn(t)}catch(n){return console.error(n),t}}function ly(e){function t(n){let r=n;if(typeof n=="object"&&(Array.isArray(n.value)&&n.value.length===2?r=n.value[1]:r=n.value),!e.bar.label_formatter)return r;try{return W(r,e.bar.label_formatter)}catch(i){return console.error(i),r}}return{bar:t,line:oy,lineValue:Bn}}function cy(e,t,n){const{label_template:r}=e.markLine;if(!r)return"";const i={...e,percentage:t,count:n},o=Object.keys(i),l=Object.values(i);return new Function(...o,`return \`${r}\`;`)(...l)}function uy(e,t){if(t.length===0)return{};const n=t.findIndex(c=>c[1]>=.8);if(n===-1)return{};const r=t[n],i={x:Bn((n+1)/t.length),y:Bn(r[1])},o={left:n+1,right:t.length-n-1},l=r[0];return l?{markLine:{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:l,lineStyle:{color:e.markLine.color},label:{formatter:cy(e,i,o)}}]},markArea:{name:"",silent:!0,itemStyle:{color:"rgba(47, 140, 192, 0.05)"},data:[[{type:"min"},{xAxis:l}]]}}:{}}function dy(e,t,n){const{x_axis:r,data_key:i}=e;if(!r.data_key||!i)return[];const o=z(r.data_key),l=z(i);if(o.queryID!==l.queryID)throw new Error("Please use the same query for X & Y axis");const c=t[o.queryID].map(x=>[x[o.columnKey],Number(x[l.columnKey])]).sort((x,m)=>m[1]-x[1]),u=c.reduce((x,m)=>x+m[1],0),d=c.reduce((x,m,v)=>{const C=v===0?0:x[v-1][1];return x.push([m[0],C+m[1]]),x},[]).map(x=>[x[0],x[1]/u]),{markLine:p,markArea:h}=uy(e,d);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:n.bar},yAxisIndex:0,data:c},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1,shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:1},label:{show:!1,position:"top",formatter:n.line},yAxisIndex:1,data:d,markLine:p,markArea:h}]}const py=(e,t)=>n=>{const r=Array.isArray(n)?n:[n];if(r.length===0)return"";const i=r.map((c,u)=>{const d=c.seriesName,[p,h]=c.value;if(!d)return h;const x=u===0?t.bar:t.lineValue;return`
167
+ `)},ho=f.forwardRef(({value:e,onChange:t},n)=>{const[r,{setTrue:i,setFalse:o}]=V.useBoolean(),[l,c]=f.useState(e);f.useEffect(()=>{c(e)},[e]);const u=m=>{c({...l,enabled:m})},d=()=>{o();const{enabled:m,func_content:v}=l,C={enabled:m,func_content:v};c(C),t(C)},p=()=>{o(),c(e)},h=m=>{c(v=>({...v,func_content:m}))},x=()=>{h(Ym.func_content)};return s.jsxs(s.Fragment,{children:[s.jsx(a.Button,{variant:"filled",mt:24,onClick:i,sx:{flexGrow:0},children:"Customize Label"}),s.jsx(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&s.jsxs(a.Stack,{children:[s.jsx(a.Checkbox,{mt:10,label:"Enabled",checked:l.enabled,onChange:m=>u(m.currentTarget.checked)}),s.jsx(Km,{value:l.func_content,onChange:h,disabled:!l.enabled}),s.jsxs(a.Group,{position:"apart",children:[s.jsx(a.Button,{onClick:x,color:"red",leftIcon:s.jsx(k.Recycle,{size:20}),children:"Reset"}),s.jsxs(a.Group,{position:"right",children:[s.jsx(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),s.jsx(a.Button,{onClick:d,children:"OK"})]})]})]})})]})});function Xm({control:e,watch:t}){return t(["x_axis"]),s.jsxs(a.Stack,{children:[s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.data_key",control:e,render:({field:n})=>s.jsx(B,{label:"Data Field",required:!0,sx:{flex:1},...n})}),s.jsx(b.Controller,{name:"x_axis.name",control:e,render:({field:n})=>s.jsx(a.TextInput,{label:"Name",sx:{flex:1},...n})})]}),s.jsx(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),s.jsx(b.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:n})=>s.jsx(Ke,{...n})}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:n})=>s.jsx(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:s.jsx(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...n})}),s.jsx(b.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:n})=>s.jsx(ho,{...n})})]})]})}const Jm=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function Zm({control:e,watch:t}){return t(["y_axis"]),s.jsxs(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"y_axis.data_key",control:e,render:({field:n})=>s.jsx(B,{label:"Data Field",required:!0,sx:{flex:1},...n})}),s.jsx(b.Controller,{name:"y_axis.name",control:e,render:({field:n})=>s.jsx(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...n})})]}),s.jsx(a.Group,{grow:!0,noWrap:!0,children:s.jsx(b.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:n})=>s.jsx(a.Select,{label:"Name Alignment",required:!0,data:Jm,sx:{flex:1},...n})})}),s.jsx(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),s.jsx(b.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:n})=>s.jsx(Ke,{...n})}),s.jsxs(a.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:n})=>s.jsx(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:s.jsx(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...n})}),s.jsx(b.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:n})=>s.jsx(ho,{...n})})]})]})}function Hm({context:e}){const{value:t,set:n}=$(e.instanceData,"config"),r=f.useMemo(()=>y.defaultsDeep({},t,lr),[t]),i=f.useMemo(()=>y.cloneDeep(r),[r]);f.useEffect(()=>{!y.isEqual(r,i)&&(console.log("config malformed, resetting to defaults",r,i),n(i))},[r,i]);const{control:o,handleSubmit:l,watch:c,getValues:u,reset:d}=b.useForm({defaultValues:i});f.useEffect(()=>{d(i)},[i]);const p=u(),h=f.useMemo(()=>!y.isEqual(p,r),[p,r]);return s.jsx("form",{onSubmit:l(n),style:{flexGrow:1},children:s.jsxs(a.Stack,{spacing:"xs",sx:{height:"100%"},children:[s.jsxs(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[s.jsx(a.Text,{children:"Chart Config"}),s.jsx(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:s.jsx(k.DeviceFloppy,{size:20})})]}),s.jsxs(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{root:{flexGrow:1},tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[s.jsxs(a.Tabs.List,{children:[s.jsx(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),s.jsx(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),s.jsx(a.Tabs.Tab,{value:"Heat Block",children:"Heat Block"}),s.jsx(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"})]}),s.jsx(a.Tabs.Panel,{value:"X Axis",children:s.jsx(Xm,{control:o,watch:c})}),s.jsx(a.Tabs.Panel,{value:"Y Axis",children:s.jsx(Zm,{control:o,watch:c})}),s.jsx(a.Tabs.Panel,{value:"Heat Block",children:s.jsx(Wm,{control:o,watch:c})}),s.jsx(a.Tabs.Panel,{value:"Tooltip",children:s.jsx(Um,{control:o,watch:c})})]})]})})}function ey(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=d=>d&&`${n}.${d}`,{x_axis:i,y_axis:o,heat_block:l,tooltip:c,...u}=e;return{...u,x_axis:{...i,data_key:r(i.data_key)},y_axis:{...o,data_key:r(o.data_key)},heat_block:{...l,data_key:r(l.data_key)},tooltip:{...c,metrics:c.metrics.map(d=>({...d,data_key:r(d.data_key)}))}}}catch(n){throw console.error("[Migration failed]",n),n}}function ty(e){return y.defaultsDeep({},e,{heat_block:{label:{show:!1,fontSize:10}}})}function ny(e){const{heat_block:t}=e;let{min:n,max:r}=t;return typeof n!="number"&&(n=0),typeof r!="number"&&(r=100),{...e,heat_block:{...t,min:{type:"static",value:n},max:{type:"static",value:r}}}}class sy extends ie{constructor(){super(...arguments);P(this,"VERSION",4)}configVersions(){this.version(1,n=>(console.log("🟥 unexpected calling"),{version:1,config:n})),this.version(2,(n,r)=>({...n,version:2,config:ey(n.config,r)})),this.version(3,n=>({...n,version:3,config:ty(n.config)})),this.version(4,n=>({...n,version:4,config:ny(n.config)}))}}const ry={displayName:"Heatmap",displayGroup:"ECharts-based charts",migrator:new sy,name:"heatmap",viewRender:Gm,configRender:Hm,createConfig:()=>({version:4,config:lr}),triggers:[po]},xo={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:ay,configRender:iy,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'line' | 'bar'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function iy(e){return s.jsx(s.Fragment,{})}function ay(e){return s.jsx(a.Text,{children:"Click chart's series"})}const fo={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"#789AB4"},cr={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...Be},overflow:Me()}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:be},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:Et,markLine:fo};function Bn(e){return W(e,{output:"percent",mantissa:0,absolute:!1})}function oy(e){const t=e.value[1];try{return Bn(t)}catch(n){return console.error(n),t}}function ly(e){function t(n){let r=n;if(typeof n=="object"&&(Array.isArray(n.value)&&n.value.length===2?r=n.value[1]:r=n.value),!e.bar.label_formatter)return r;try{return W(r,e.bar.label_formatter)}catch(i){return console.error(i),r}}return{bar:t,line:oy,lineValue:Bn}}function cy(e,t,n){const{label_template:r}=e.markLine;if(!r)return"";const i={...e,percentage:t,count:n},o=Object.keys(i),l=Object.values(i);return new Function(...o,`return \`${r}\`;`)(...l)}function uy(e,t){if(t.length===0)return{};const n=t.findIndex(c=>c[1]>=.8);if(n===-1)return{};const r=t[n],i={x:Bn((n+1)/t.length),y:Bn(r[1])},o={left:n+1,right:t.length-n-1},l=r[0];return l?{markLine:{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:l,lineStyle:{color:e.markLine.color},label:{formatter:cy(e,i,o)}}]},markArea:{name:"",silent:!0,itemStyle:{color:"rgba(47, 140, 192, 0.05)"},data:[[{coord:["min",0]},{xAxis:l}]]}}:{}}function dy(e,t,n){const{x_axis:r,data_key:i}=e;if(!r.data_key||!i)return[];const o=z(r.data_key),l=z(i);if(o.queryID!==l.queryID)throw new Error("Please use the same query for X & Y axis");const c=t[o.queryID].map(x=>[x[o.columnKey],Number(x[l.columnKey])]).sort((x,m)=>m[1]-x[1]),u=c.reduce((x,m)=>x+m[1],0),d=c.reduce((x,m,v)=>{const C=v===0?0:x[v-1][1];return x.push([m[0],C+m[1]]),x},[]).map(x=>[x[0],x[1]/u]),{markLine:p,markArea:h}=uy(e,d);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:n.bar},yAxisIndex:0,data:c},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1,shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:1},label:{show:!1,position:"top",formatter:n.line},yAxisIndex:1,data:d,markLine:p,markArea:h}]}const py=(e,t)=>n=>{const r=Array.isArray(n)?n:[n];if(r.length===0)return"";const i=r.map((c,u)=>{const d=c.seriesName,[p,h]=c.value;if(!d)return h;const x=u===0?t.bar:t.lineValue;return`
168
168
  <tr>
169
169
  <th style="text-align: right; padding: 0 1em;">${d}</th>
170
170
  <td style="text-align: left; padding: 0 1em;">${x(h)}</td>