@devtable/dashboard 13.13.5 → 13.13.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dashboard.es.js +2 -2
- package/dist/dashboard.umd.js +2 -2
- package/dist/stats.html +1 -1
- package/dist/version.json +2 -2
- package/package.json +1 -1
package/dist/dashboard.es.js
CHANGED
|
@@ -1733,7 +1733,7 @@ class Fi {
|
|
|
1733
1733
|
}), this.instanceRegistry.clear(), this.factoryRegistry.clear();
|
|
1734
1734
|
}
|
|
1735
1735
|
}
|
|
1736
|
-
const mc = "13.13.
|
|
1736
|
+
const mc = "13.13.6", dg = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1737
1737
|
__proto__: null,
|
|
1738
1738
|
version: mc
|
|
1739
1739
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -4161,7 +4161,7 @@ function tb(t) {
|
|
|
4161
4161
|
backgroundColor: s
|
|
4162
4162
|
} }) }),
|
|
4163
4163
|
/* @__PURE__ */ r.jsxs(Nn.Dropdown, { children: [
|
|
4164
|
-
/* @__PURE__ */ r.jsx(me, { withinPortal: !0, zIndex: 340, label: e("common.actions.close"), children: /* @__PURE__ */ r.jsx(vr, { size: "sm", color: "gray", onClick: T, style: {
|
|
4164
|
+
/* @__PURE__ */ r.jsx(me, { withinPortal: !0, zIndex: 340, label: e("common.actions.close"), children: /* @__PURE__ */ r.jsx(vr, { "data-testid": "palette-item-cancel", size: "sm", color: "gray", onClick: T, style: {
|
|
4165
4165
|
position: "absolute",
|
|
4166
4166
|
top: "0.5em",
|
|
4167
4167
|
right: "0.8em"
|
package/dist/dashboard.umd.js
CHANGED
|
@@ -53,7 +53,7 @@ Check the top-level render call using <`+P+">.")}return z}}function _u(C,z){{if(
|
|
|
53
53
|
</table>
|
|
54
54
|
`;function ks(t,e){const n=Object.keys(e),r=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...r)}catch(i){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient payload"):i}}function Ts(t,e){try{return ks(t,e)}catch(n){return console.error(n),n.message}}function vd({sql:t,pre_process:e}){if(!e.trim())return t;try{return new Function(`return ${e}`)()({sql:t},rt)}catch(n){return console.error(n),t}}function _d(t,e,n){if(!t.trim())return e;try{return new Function(`return ${t}`)()(e,rt,n)}catch(r){return console.error(r),e}}function jd(t){t=t||{};const e=Object.keys(t).sort(),n=[];for(let r=0;r<e.length;r++){const i=e[r];if(i!="authentication"&&t[i])n.push(e[r]+"="+(typeof t[i]=="object"?JSON.stringify(t[i]):t[i]));else{const a=Object.keys(t[i]).sort();for(let l=0;l<a.length;l++){const c=a[l];c!="sign"&&t[i][c]&&n.push(a[l]+"="+(typeof t[i][c]=="object"?JSON.stringify(t[i][c]):t[i][c]))}}}return n.sort().join("&")}function wd(t,e){let n=jd(t);return n+="&key="+e,hd.MD5(n).toString().toUpperCase()}class ha{constructor(){this.type="default_api_client",this.baseURL="http://localhost:31200",this.app_id="",this.app_secret=""}getAuthentication(e){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:wd({app_id:this.app_id,nonce_str:n,...e},this.app_secret)}}getRequest(e,n){return(r,i,a,l)=>{const c=this.buildHeader(a),u=this.buildAxiosConfig(e,r,i,a,c,n);return nt(u).then(d=>l?d:d.data).catch(d=>{if(nt.isCancel(d))return Promise.reject(d);const p=x.get(d,"response.data.detail.message",d.message);return Promise.reject(new Error(p))})}}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}buildAxiosConfig(e,n,r,i,a,l){const c={baseURL:this.baseURL,method:e,url:n,params:e==="GET"?r:i.params,headers:a,signal:l};return["POST","PUT"].includes(e)&&(c.data=i.string?JSON.stringify(r):r,c.data.authentication=this.getAuthentication(c.data)),c}buildHeader(e){const n=window.localStorage.getItem("token");return{"X-Requested-With":"XMLHttpRequest","Content-Type":e.string?"application/x-www-form-urlencoded":"application/json",authorization:n?`bearer ${n}`:"",...e.headers}}}class Cd{constructor(e){this.implementation=e}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}class ma extends ha{constructor(){super(...arguments);$(this,"makeQueryENV",null)}query(n){return async(r,i={})=>{var a;return r.env||(r.env=((a=this.makeQueryENV)==null?void 0:a.call(this))??{error:"failed to run makeQueryENV"}),this.post(n)("/query",r,i)}}httpDataSourceQuery(n){return async(r,i={})=>{var a;return r.env||(r.env=((a=this.makeQueryENV)==null?void 0:a.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 ga{constructor(e){this.implementation=e}query(e){return this.implementation.query(e)}httpDataSourceQuery(e){return this.implementation.httpDataSourceQuery(e)}structure(e){return this.implementation.structure(e)}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}const Ot=new ma;function Ds(t){Ot.baseURL!==t.apiBaseURL&&(Ot.baseURL=t.apiBaseURL),t.app_id&&(Ot.app_id=t.app_id),t.app_secret&&(Ot.app_secret=t.app_secret),t.makeQueryENV&&(Ot.makeQueryENV=t.makeQueryENV)}const fa=new ga(Ot),it=fa,on=m.forwardRef(function({value:e,onChange:n,...r},i){return s.jsx(o.TextInput,{ref:i,value:e,onChange:n,...r})});function E(t){const[e,n]=t.split(".");return{queryID:e,columnKey:n}}function Sd(t){return t.includes(".")?E(t):{queryID:"",columnKey:t}}function at(t,e){var i;const{queryID:n,columnKey:r}=E(e);return n?r?((i=t[n])==null?void 0:i.map(a=>a[r]))??[]:t[n]:[]}function Tn(t,e){const{queryID:n}=E(e);return n?t[n]:[]}function kd(t){return Object.values(t)[0]}function Dn(t,e){const{queryID:n,columnKey:r}=E(e);return t[r]}const xa=["function aggregation({ queryData }, utils) {",' return "Aggregation Result";',"}"].join(`
|
|
55
55
|
`),Vt={type:"none",config:{},fallback:"0"};function Td(t){const e=Array.from(t).sort((r,i)=>r-i),n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}function Dd(t,e){switch(e.type){case"sum":return x.sum(t);case"mean":return x.mean(t);case"median":return Td(t);case"max":return x.max(t);case"min":return x.min(t);case"quantile":return nn.quantile(t,e.config.p);case"CV":const n=qt.std(...t),r=qt.mean(...t);return r?n/r:Number.NaN;case"std":return qt.std(...t);default:return t}}function zs(t,e){const n=t.map(Number),r=Dd(n,e);return typeof r=="number"?Number.isFinite(r)?r:e.fallback:r??e.fallback}function zd(t,e,n){try{const r=Tn(t,e);return new Function(`return ${n.config.func}`)()({queryData:r},rt)}catch(r){return console.error(r),r.message}}function zn(t,e,n){try{return n.type==="custom"?zd(t,e,n):zs(at(t,e),n)}catch(r){return console.error(r),null}}class Md{constructor({valueRange:e,colorRange:n}){$(this,"mapper");this.mapper=kt.interpolate(e,n)}getColor(e){return this.mapper(e)}}const _e={mantissa:0,output:"number",trimMantissa:!1,average:!1,absolute:!1};function U(t,{absolute:e,...n}){if(t===null)return String(t);try{let r=Cn(t).value();if(r===void 0||Number.isNaN(r))throw new Error(`[formatNumber]Not a number: ${t}`);return e&&(r=Math.abs(r)),Cn(r).format(n)}catch(r){return console.debug(r),String(t)}}function Id(t){return t===null?"null":t===void 0?"undefined":Array.isArray(t)?`Array(${t.length})`:t.toString()}function ot({data_field:t,aggregation:e},n){return zn(n,t,e)}function Le({formatter:t,aggregation:e},n){if(typeof n!="string"&&typeof n!="number")return Id(n);if(e.type==="custom")return n;try{return U(n,t)}catch(r){return console.error(r),n}}function Ed(t,e){if(t.type==="static")return t.staticColor;if(t.type==="continuous")try{if(typeof e!="number")throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${e}`);return new Md(t).getColor(e)}catch(n){return console.error(n),"black"}return"black"}function Ad(t,e){const{color:n,data_field:r,aggregation:i,size:a,weight:l}=t,c=zn(e,r,i),u=Le(t,c);return s.jsx(o.Text,{sx:{fontSize:a,display:"inline"},color:Ed(n,c),weight:l,children:u})}function Pd(t,e){const n={};return t.forEach(r=>{const i=r.name;n[i]=Ad(r,e)}),n}function $d(t){return t.split(" ").map((e,n)=>s.jsxs(m.Fragment,{children:[e," "]},n))}function Bd(t){const n=t.replaceAll("<br />","<br/>").replaceAll(`
|
|
56
|
-
`,"<br/>").split("<br/>");return n.map((i,a)=>{const l=[$d(i)];return a!==n.length-1&&l.push(s.jsx("br",{},`br-${a}`)),l}).flat().filter(i=>i!==void 0)}function Ms(t){return Bd(t)}function ln(t,e,n){const r=Pd(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map((a,l)=>{const c=i.exec(a);if(!c)return Ms(a);const u=r[c[1]];if(!u)return Ms(a);const d=c[2]??"";return s.jsxs(m.Fragment,{children:[u,Ms(d)]},`${a}-${l}`)})}function Ld(t,e){const{data_field:n,aggregation:r}=t,i=zn(e,n,r);return Le(t,i)}function ya(t,e){const n={};return t.forEach(r=>{n[r.name]=Ld(r,e)}),n}function Mn(t,e,n){const r=ya(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map(a=>{const l=i.exec(a);if(!l)return a;const c=r[l[1]];if(!c)return a;const u=l[2]??"";return`${c}${u}`}).join("")}const Tt={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 qd(){we.registerTheme("merico-light",{color:Object.values(Tt.graphics.multiple),visualMap:{color:Object.values(Tt.graphics.depth).reverse()},axes:[{type:"all",name:"通用坐标轴",axisLineColor:"#97999D",axisTickColor:"#97999D",axisLabelShow:!0,axisLabelColor:"#818388",splitLineShow:!0,splitLineColor:["#E0E6F1"]}]})}function ba(){qd()}function*Od(t){const e=Tt.graphics[t];if(!e)throw new Error("Invalid palette key provided");const n=Object.values(e);let r=0;for(;;)yield n[r%n.length],r++}function va(){return{filters:{},context:{}}}function Is(t){const e=va();if(!t)return va();const{filters:n=e.filters,context:r=e.context}=t;return{filters:n,context:r}}class Ce extends m.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(o.Box,{children:[s.jsx(o.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),s.jsx(o.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function Vd(t,e={handleError:!0}){return n=>s.jsx(Ce,{...e,children:s.jsx(t,{...n})})}function Nd(t,e){return new Function(`return ${t}`)()(e,rt)}function Gd(t,e,n){return Nd(t,{context:e,filters:n})}function Fd(t,e){try{return new Function(`return ${t.config.processing.pre}`)()(e,rt)}catch(n){return console.error(n),e}}function Wd(t,e){return new Function(`return ${t.config.processing.post}`)()(e,rt)}function Qd(t,e,n){return t?new Function(`return ${t}`)()(e,rt,n):e}function _a(){Fi.use([Tu.CanvasRenderer,st.BarChart,st.BoxplotChart,st.CustomChart,st.FunnelChart,st.HeatmapChart,st.LineChart,st.PieChart,st.RadarChart,st.ScatterChart,st.SunburstChart,bt.CalendarComponent,bt.DataZoomComponent,bt.GridComponent,bt.LegendComponent,bt.TooltipComponent,bt.MarkLineComponent,bt.MarkAreaComponent,bt.VisualMapComponent])}const Nt=t=>x.cloneDeepWith(t,(e,n)=>{if(n!==void 0&&e)return J.toJS(e)}),In={sqlSnippet:new RegExp("(?<=sql_snippets\\.)([^\\?}.]+)","gm"),context:new RegExp("(?<=context\\.)([^\\?}.]+)","gm"),filter:new RegExp("(?<=filters\\.)([^\\?}.]+)","gm")};function Rd(t,e){const n=Wi.decode(e);n!==t&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:t,after:e,v:n}),console.groupEnd())}async function Ud({query:t,name:e,payload:n,additionals:r},i){if(!t.sql)return[];const{type:a,key:l,sql:c,pre_process:u,post_process:d}=t,p=ks(c,n),h=vd({sql:p,pre_process:u}),f=Wi.encode(h);Rd(h,f);let y=await it.query(i)({type:a,key:l,query:f,...r},{params:{name:e}});return y=_d(d,y,Is(n)),y}async function Yd({type:t,key:e,configString:n,name:r,additionals:i},a){try{return await it.httpDataSourceQuery(a)({type:t,key:e,query:n,...i},{params:{name:r}})}catch(l){if(nt.isCancel(l))throw l;return console.error(l),l}}async function Es(){try{return(await it.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(t){return console.error(t),[]}}async function ja(){try{return(await it.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(t){return console.error(t),[]}}class wa{constructor(e){$(this,"rootRef");this.rootRef=J.observable({current:e})}async deleteItem(e){J.runInAction(()=>{x.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?J.toJS(this.rootRef.current):x.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(x.isObject(n))J.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else J.runInAction(()=>{x.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return J.reaction(()=>this.getValueFromRoot(e),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class Kd{constructor(){$(this,"channels",new Map);$(this,"globalChannel",new Qi)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Qi;return this.channels.set(e,r),r}}class Jd{constructor(e){$(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 Kd,instanceData:new wa(e.viz.conf)};return this.instances.set(e.id,r),r}}function Ca(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new wa({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const Xd=t=>{const{panel:e,measure:n,vizManager:r,data:i,variables:a}=t,l=r.resolveComponent(e.viz.type),c=r.getOrCreateInstance(e),u={...Ca(c,i,r,a),viewport:{width:n.w,height:n.h}},d=l.viewRender;return s.jsx(d,{context:u,instance:c,...x.omit(t,["panel","vizManager","data"])})},Zd=t=>{const{vizManager:e,panel:n,data:r,variables:i}=t,a=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),c={...Ca(l,r,e,i)},u=a.configRender;return s.jsx(u,{context:c,instance:l,...x.omit(t,["panel","vizManager","data"])})},Sa=(t,e)=>{const n=dt.bezier(t),r=dt.bezier(e);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},En=t=>{const e=dt.bezier(t);return function(n){return e(n/100).hex()}},Hd={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Sa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},ep={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Sa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},tp={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:En(["#fff7f1","darkred"]),name:"red",category:"sequential"},np={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:En(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},sp={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:En(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},rp={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:En(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class ip{constructor(e){$(this,"symbol");this.symbol=Symbol(e)}}function ht(t){return new ip(t)}class As{constructor(){$(this,"parent");$(this,"factoryRegistry",new Map);$(this,"instanceRegistry",new Map)}createScoped(){const e=new As;return e.parent=this,e}getRequired(e){return this.get(e)}get(e){if(this.instanceRegistry.has(e.symbol))return this.instanceRegistry.get(e.symbol);const n=this.factoryRegistry.get(e.symbol);if(n){const r=n(this);return this.instanceRegistry.set(e.symbol,r),r}if(this.parent)return this.parent.get(e)}provideFactory(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,n),this}provideValue(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(e=>{const n=x.get(e,"dispose");x.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const ka="13.13.5",ap=Object.freeze(Object.defineProperty({__proto__:null,version:ka},Symbol.toStringTag,{value:"Module"}));class op{constructor(e){$(this,"staticColors",new Map);$(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 lp{constructor(){$(this,"plugins",new Map);$(this,"vizComponents",new Map);$(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 cp{constructor(){$(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n,r){var l;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(c=>c.version>e.from&&c.version<=e.to),a=x.orderBy(i,"version","asc");if(((l=x.last(a))==null?void 0:l.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return a.reduce((c,u)=>u.handler(c,r),n)}}class le extends cp{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,i)=>({version:e,...n(r,i)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),i=x.get(r,"version",0),a=this.run({from:i,to:this.VERSION},r,{panelModel:n});await e.setItem(null,a)}async needMigration({configData:e}){const n=await e.getItem(null);return x.get(n,"version",0)<this.VERSION}}const O=(t,e)=>{const[n,{setFalse:r}]=G.useBoolean(!0),[i,a]=m.useState();m.useEffect(()=>(t.getItem(e).then(c=>{a(c),r()}),t.watchItem(e,c=>{a(c)})));const l=m.useCallback(async c=>{await t.setItem(e,c),a(c)},[t,e]);return{loading:n,value:i,set:l}},Me={top:16,right:16,bottom:16,left:16},Xe=t=>Math.max(0,t-Me.left-Me.right),Ze=t=>Math.max(0,t-Me.top-Me.bottom),cn=(t,e)=>({width:Xe(t),height:Ze(e)}),Ie=({width:t,height:e,children:n})=>s.jsx(o.Box,{pt:Me.top,pr:Me.right,pb:Me.bottom,pl:Me.left,sx:{width:t,height:e,overflow:"hidden",position:"relative"},children:n}),Ps={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 up({context:t}){const{value:e}=O(t.instanceData,"config"),n=t.data,{width:r,height:i}=t.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=x.defaults({},e,Ps),h=m.useMemo(()=>Tn(n,a),[n,a]),{x:f,y,z:v}=m.useMemo(()=>({x:E(a),y:E(l),z:E(c)}),[a,l,c]),{min:w,max:T}=m.useMemo(()=>{const I=x.minBy(h,N=>N[v.columnKey]),A=x.maxBy(h,N=>N[v.columnKey]);return{min:x.get(I,v.columnKey),max:x.get(A,v.columnKey)}},[h,v]),D={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:w,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(I=>[I[f.columnKey],I[y.columnKey],I[v.columnKey]])}]};return e?s.jsx(Ie,{width:r,height:i,children:s.jsx(Te,{echarts:we,option:D,style:cn(r,i),notMerge:!0,theme:"merico-light"})}):null}const Ta=m.createContext(null),$s=Ta.Provider;function Bs(){const t=m.useContext(Ta);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const Z=()=>Bs(),Da=()=>Bs(),za=m.createContext({searchButtonProps:{}}),Ls=za.Provider;function Ma(){return m.useContext(za)}const Ia=m.createContext(null),qs=Ia.Provider;function Ea(){const t=m.useContext(Ia);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const Y=()=>Ea(),he=()=>Ea(),dp={inEditMode:!1},An=m.createContext(dp),Aa=m.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),Os=Aa.Provider;function Pa(){const t=m.useContext(Aa);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const mt=()=>Pa(),Ee=()=>Pa(),pp={fullScreenPanelID:"",setFullScreenPanelID:x.noop},Vs=m.createContext(pp);function $a(){const t=m.useContext(Vs);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const hp={en:"en",zh:"zh-cn"};function Ns({children:t}){const{i18n:e}=_.useTranslation(),n=m.useMemo(()=>{const r=e.language;return hp[r]??"en"},[e.language]);return s.jsx(Ri.DatesProvider,{settings:{locale:n,firstDayOfWeek:1},children:t})}const q=S.observer(m.forwardRef(({label:t,required:e,description:n,value:r,onChange:i,queryID:a,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=Ee(),h=m.useMemo(()=>p.dataFieldOptions(r,l,a),[r,l,a]);if(h.length===0){const f=p.explainDataKey(r);return s.jsxs(o.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[s.jsx(o.HoverCard.Target,{children:s.jsx(o.Box,{children:s.jsx(o.TextInput,{label:t,required:e,defaultValue:f.columnKey,readOnly:!0,disabled:!0})})}),s.jsx(o.HoverCard.Dropdown,{children:s.jsxs(o.Group,{position:"left",spacing:0,children:[s.jsx(o.Text,{size:"xs",color:f.queryName?"black":"red",sx:{fontFamily:"monospace"},children:f.queryName??f.queryID}),s.jsx(o.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),s.jsx(o.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:f.columnKey})]})})]})}return s.jsx(o.Select,{ref:d,label:t,description:n,data:h,value:r,onChange:i,required:e,sx:c,maxDropdownHeight:500,...u})}));function mp({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=x.defaults({},e,Ps),{control:i,handleSubmit:a,reset:l}=b.useForm({defaultValues:r});return m.useEffect(()=>{l(r)},[e]),e?s.jsx(o.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:a(n),children:[s.jsx(o.Text,{children:"X Axis"}),s.jsxs(o.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(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(o.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(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(o.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(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(o.Button,{color:"blue",type:"submit",children:[s.jsx(B.DeviceFloppy,{size:20}),s.jsx(o.Text,{ml:"md",children:"Save"})]})})]})}):null}const gp=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function fp(t,{panelModel:e}){try{const n=e.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:a,z_axis_data_key:l,...c}=t;return{...c,x_axis_data_key:r(i),y_axis_data_key:r(a),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class xp extends le{constructor(){super(...arguments);$(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:fp(i,r)}})}}const yp={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new xp,name:"bar-3d",viewRender:up,configRender:mp,createConfig(){return{version:2,config:x.cloneDeep(Ps)}},translation:gp},bp=({disabled:t,value:e,onChange:n})=>{const r=i=>{i&&n(i)};return s.jsxs(o.Box,{sx:{position:"relative"},children:[t&&s.jsx(o.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),s.jsx(Be,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:t}})]})};function Ae({enabled:t,func_content:e}){return(n,r)=>{if(!t)return n;try{return new Function(`return ${e}`)()(n,r)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),n}}}function Se(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
56
|
+
`,"<br/>").split("<br/>");return n.map((i,a)=>{const l=[$d(i)];return a!==n.length-1&&l.push(s.jsx("br",{},`br-${a}`)),l}).flat().filter(i=>i!==void 0)}function Ms(t){return Bd(t)}function ln(t,e,n){const r=Pd(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map((a,l)=>{const c=i.exec(a);if(!c)return Ms(a);const u=r[c[1]];if(!u)return Ms(a);const d=c[2]??"";return s.jsxs(m.Fragment,{children:[u,Ms(d)]},`${a}-${l}`)})}function Ld(t,e){const{data_field:n,aggregation:r}=t,i=zn(e,n,r);return Le(t,i)}function ya(t,e){const n={};return t.forEach(r=>{n[r.name]=Ld(r,e)}),n}function Mn(t,e,n){const r=ya(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map(a=>{const l=i.exec(a);if(!l)return a;const c=r[l[1]];if(!c)return a;const u=l[2]??"";return`${c}${u}`}).join("")}const Tt={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 qd(){we.registerTheme("merico-light",{color:Object.values(Tt.graphics.multiple),visualMap:{color:Object.values(Tt.graphics.depth).reverse()},axes:[{type:"all",name:"通用坐标轴",axisLineColor:"#97999D",axisTickColor:"#97999D",axisLabelShow:!0,axisLabelColor:"#818388",splitLineShow:!0,splitLineColor:["#E0E6F1"]}]})}function ba(){qd()}function*Od(t){const e=Tt.graphics[t];if(!e)throw new Error("Invalid palette key provided");const n=Object.values(e);let r=0;for(;;)yield n[r%n.length],r++}function va(){return{filters:{},context:{}}}function Is(t){const e=va();if(!t)return va();const{filters:n=e.filters,context:r=e.context}=t;return{filters:n,context:r}}class Ce extends m.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(o.Box,{children:[s.jsx(o.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),s.jsx(o.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function Vd(t,e={handleError:!0}){return n=>s.jsx(Ce,{...e,children:s.jsx(t,{...n})})}function Nd(t,e){return new Function(`return ${t}`)()(e,rt)}function Gd(t,e,n){return Nd(t,{context:e,filters:n})}function Fd(t,e){try{return new Function(`return ${t.config.processing.pre}`)()(e,rt)}catch(n){return console.error(n),e}}function Wd(t,e){return new Function(`return ${t.config.processing.post}`)()(e,rt)}function Qd(t,e,n){return t?new Function(`return ${t}`)()(e,rt,n):e}function _a(){Fi.use([Tu.CanvasRenderer,st.BarChart,st.BoxplotChart,st.CustomChart,st.FunnelChart,st.HeatmapChart,st.LineChart,st.PieChart,st.RadarChart,st.ScatterChart,st.SunburstChart,bt.CalendarComponent,bt.DataZoomComponent,bt.GridComponent,bt.LegendComponent,bt.TooltipComponent,bt.MarkLineComponent,bt.MarkAreaComponent,bt.VisualMapComponent])}const Nt=t=>x.cloneDeepWith(t,(e,n)=>{if(n!==void 0&&e)return J.toJS(e)}),In={sqlSnippet:new RegExp("(?<=sql_snippets\\.)([^\\?}.]+)","gm"),context:new RegExp("(?<=context\\.)([^\\?}.]+)","gm"),filter:new RegExp("(?<=filters\\.)([^\\?}.]+)","gm")};function Rd(t,e){const n=Wi.decode(e);n!==t&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:t,after:e,v:n}),console.groupEnd())}async function Ud({query:t,name:e,payload:n,additionals:r},i){if(!t.sql)return[];const{type:a,key:l,sql:c,pre_process:u,post_process:d}=t,p=ks(c,n),h=vd({sql:p,pre_process:u}),f=Wi.encode(h);Rd(h,f);let y=await it.query(i)({type:a,key:l,query:f,...r},{params:{name:e}});return y=_d(d,y,Is(n)),y}async function Yd({type:t,key:e,configString:n,name:r,additionals:i},a){try{return await it.httpDataSourceQuery(a)({type:t,key:e,query:n,...i},{params:{name:r}})}catch(l){if(nt.isCancel(l))throw l;return console.error(l),l}}async function Es(){try{return(await it.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(t){return console.error(t),[]}}async function ja(){try{return(await it.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(t){return console.error(t),[]}}class wa{constructor(e){$(this,"rootRef");this.rootRef=J.observable({current:e})}async deleteItem(e){J.runInAction(()=>{x.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?J.toJS(this.rootRef.current):x.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(x.isObject(n))J.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else J.runInAction(()=>{x.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return J.reaction(()=>this.getValueFromRoot(e),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class Kd{constructor(){$(this,"channels",new Map);$(this,"globalChannel",new Qi)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Qi;return this.channels.set(e,r),r}}class Jd{constructor(e){$(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 Kd,instanceData:new wa(e.viz.conf)};return this.instances.set(e.id,r),r}}function Ca(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new wa({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const Xd=t=>{const{panel:e,measure:n,vizManager:r,data:i,variables:a}=t,l=r.resolveComponent(e.viz.type),c=r.getOrCreateInstance(e),u={...Ca(c,i,r,a),viewport:{width:n.w,height:n.h}},d=l.viewRender;return s.jsx(d,{context:u,instance:c,...x.omit(t,["panel","vizManager","data"])})},Zd=t=>{const{vizManager:e,panel:n,data:r,variables:i}=t,a=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),c={...Ca(l,r,e,i)},u=a.configRender;return s.jsx(u,{context:c,instance:l,...x.omit(t,["panel","vizManager","data"])})},Sa=(t,e)=>{const n=dt.bezier(t),r=dt.bezier(e);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},En=t=>{const e=dt.bezier(t);return function(n){return e(n/100).hex()}},Hd={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Sa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},ep={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Sa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},tp={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:En(["#fff7f1","darkred"]),name:"red",category:"sequential"},np={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:En(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},sp={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:En(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},rp={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:En(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class ip{constructor(e){$(this,"symbol");this.symbol=Symbol(e)}}function ht(t){return new ip(t)}class As{constructor(){$(this,"parent");$(this,"factoryRegistry",new Map);$(this,"instanceRegistry",new Map)}createScoped(){const e=new As;return e.parent=this,e}getRequired(e){return this.get(e)}get(e){if(this.instanceRegistry.has(e.symbol))return this.instanceRegistry.get(e.symbol);const n=this.factoryRegistry.get(e.symbol);if(n){const r=n(this);return this.instanceRegistry.set(e.symbol,r),r}if(this.parent)return this.parent.get(e)}provideFactory(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,n),this}provideValue(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(e=>{const n=x.get(e,"dispose");x.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const ka="13.13.6",ap=Object.freeze(Object.defineProperty({__proto__:null,version:ka},Symbol.toStringTag,{value:"Module"}));class op{constructor(e){$(this,"staticColors",new Map);$(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 lp{constructor(){$(this,"plugins",new Map);$(this,"vizComponents",new Map);$(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 cp{constructor(){$(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n,r){var l;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(c=>c.version>e.from&&c.version<=e.to),a=x.orderBy(i,"version","asc");if(((l=x.last(a))==null?void 0:l.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return a.reduce((c,u)=>u.handler(c,r),n)}}class le extends cp{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,i)=>({version:e,...n(r,i)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),i=x.get(r,"version",0),a=this.run({from:i,to:this.VERSION},r,{panelModel:n});await e.setItem(null,a)}async needMigration({configData:e}){const n=await e.getItem(null);return x.get(n,"version",0)<this.VERSION}}const O=(t,e)=>{const[n,{setFalse:r}]=G.useBoolean(!0),[i,a]=m.useState();m.useEffect(()=>(t.getItem(e).then(c=>{a(c),r()}),t.watchItem(e,c=>{a(c)})));const l=m.useCallback(async c=>{await t.setItem(e,c),a(c)},[t,e]);return{loading:n,value:i,set:l}},Me={top:16,right:16,bottom:16,left:16},Xe=t=>Math.max(0,t-Me.left-Me.right),Ze=t=>Math.max(0,t-Me.top-Me.bottom),cn=(t,e)=>({width:Xe(t),height:Ze(e)}),Ie=({width:t,height:e,children:n})=>s.jsx(o.Box,{pt:Me.top,pr:Me.right,pb:Me.bottom,pl:Me.left,sx:{width:t,height:e,overflow:"hidden",position:"relative"},children:n}),Ps={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 up({context:t}){const{value:e}=O(t.instanceData,"config"),n=t.data,{width:r,height:i}=t.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=x.defaults({},e,Ps),h=m.useMemo(()=>Tn(n,a),[n,a]),{x:f,y,z:v}=m.useMemo(()=>({x:E(a),y:E(l),z:E(c)}),[a,l,c]),{min:w,max:T}=m.useMemo(()=>{const I=x.minBy(h,N=>N[v.columnKey]),A=x.maxBy(h,N=>N[v.columnKey]);return{min:x.get(I,v.columnKey),max:x.get(A,v.columnKey)}},[h,v]),D={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:w,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(I=>[I[f.columnKey],I[y.columnKey],I[v.columnKey]])}]};return e?s.jsx(Ie,{width:r,height:i,children:s.jsx(Te,{echarts:we,option:D,style:cn(r,i),notMerge:!0,theme:"merico-light"})}):null}const Ta=m.createContext(null),$s=Ta.Provider;function Bs(){const t=m.useContext(Ta);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const Z=()=>Bs(),Da=()=>Bs(),za=m.createContext({searchButtonProps:{}}),Ls=za.Provider;function Ma(){return m.useContext(za)}const Ia=m.createContext(null),qs=Ia.Provider;function Ea(){const t=m.useContext(Ia);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const Y=()=>Ea(),he=()=>Ea(),dp={inEditMode:!1},An=m.createContext(dp),Aa=m.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),Os=Aa.Provider;function Pa(){const t=m.useContext(Aa);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const mt=()=>Pa(),Ee=()=>Pa(),pp={fullScreenPanelID:"",setFullScreenPanelID:x.noop},Vs=m.createContext(pp);function $a(){const t=m.useContext(Vs);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const hp={en:"en",zh:"zh-cn"};function Ns({children:t}){const{i18n:e}=_.useTranslation(),n=m.useMemo(()=>{const r=e.language;return hp[r]??"en"},[e.language]);return s.jsx(Ri.DatesProvider,{settings:{locale:n,firstDayOfWeek:1},children:t})}const q=S.observer(m.forwardRef(({label:t,required:e,description:n,value:r,onChange:i,queryID:a,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=Ee(),h=m.useMemo(()=>p.dataFieldOptions(r,l,a),[r,l,a]);if(h.length===0){const f=p.explainDataKey(r);return s.jsxs(o.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[s.jsx(o.HoverCard.Target,{children:s.jsx(o.Box,{children:s.jsx(o.TextInput,{label:t,required:e,defaultValue:f.columnKey,readOnly:!0,disabled:!0})})}),s.jsx(o.HoverCard.Dropdown,{children:s.jsxs(o.Group,{position:"left",spacing:0,children:[s.jsx(o.Text,{size:"xs",color:f.queryName?"black":"red",sx:{fontFamily:"monospace"},children:f.queryName??f.queryID}),s.jsx(o.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),s.jsx(o.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:f.columnKey})]})})]})}return s.jsx(o.Select,{ref:d,label:t,description:n,data:h,value:r,onChange:i,required:e,sx:c,maxDropdownHeight:500,...u})}));function mp({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=x.defaults({},e,Ps),{control:i,handleSubmit:a,reset:l}=b.useForm({defaultValues:r});return m.useEffect(()=>{l(r)},[e]),e?s.jsx(o.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:a(n),children:[s.jsx(o.Text,{children:"X Axis"}),s.jsxs(o.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(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(o.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(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(o.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(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(o.Button,{color:"blue",type:"submit",children:[s.jsx(B.DeviceFloppy,{size:20}),s.jsx(o.Text,{ml:"md",children:"Save"})]})})]})}):null}const gp=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function fp(t,{panelModel:e}){try{const n=e.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:a,z_axis_data_key:l,...c}=t;return{...c,x_axis_data_key:r(i),y_axis_data_key:r(a),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class xp extends le{constructor(){super(...arguments);$(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:fp(i,r)}})}}const yp={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new xp,name:"bar-3d",viewRender:up,configRender:mp,createConfig(){return{version:2,config:x.cloneDeep(Ps)}},translation:gp},bp=({disabled:t,value:e,onChange:n})=>{const r=i=>{i&&n(i)};return s.jsxs(o.Box,{sx:{position:"relative"},children:[t&&s.jsx(o.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),s.jsx(Be,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:t}})]})};function Ae({enabled:t,func_content:e}){return(n,r)=>{if(!t)return n;try{return new Function(`return ${e}`)()(n,r)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),n}}}function Se(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
57
57
|
`)}}const He=m.forwardRef(({value:t,onChange:e,triggerButtonText:n},r)=>{const{t:i}=_.useTranslation(),[a,{setTrue:l,setFalse:c}]=G.useBoolean(),[u,d]=m.useState(t);m.useEffect(()=>{d(t)},[t]);const p=T=>{d({...u,enabled:T})},h=()=>{c();const{enabled:T,func_content:D}=u,I={enabled:T,func_content:D};d(I),e(I)},f=()=>{c(),d(t)},y=T=>{d(D=>({...D,func_content:T}))},v=()=>{y(Se().func_content)},w=n??i("chart.axis.customize_label");return s.jsxs(s.Fragment,{children:[s.jsx(o.Button,{variant:"filled",color:"grape",leftIcon:s.jsx(k.IconMathFunction,{size:16}),mt:24,onClick:l,sx:{flexGrow:0},children:w}),s.jsx(o.Modal,{size:800,title:w,opened:a,onClose:c,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:a&&s.jsxs(o.Stack,{children:[s.jsx(o.Checkbox,{mt:10,label:i("common.enabled"),checked:u.enabled,onChange:T=>p(T.currentTarget.checked)}),s.jsx(bp,{value:u.func_content,onChange:y,disabled:!u.enabled}),s.jsxs(o.Group,{position:"apart",children:[s.jsx(o.Button,{onClick:v,color:"red",leftIcon:s.jsx(B.Recycle,{size:20}),children:i("common.actions.reset_to_default")}),s.jsxs(o.Group,{position:"right",children:[s.jsx(o.Button,{onClick:f,variant:"subtle",children:i("common.actions.cancel")}),s.jsx(o.Button,{color:"green",leftIcon:s.jsx(k.IconDeviceFloppy,{size:16}),onClick:h,children:i("common.actions.save")})]})]})]})})]})}),Dt={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1};function Ba(){return x.cloneDeep(Dt)}const vp=[{lang:"en",resources:{boxplot:{viz_name:"Boxplot Chart",box:"Box",outlier:"Outlier",scatter:"Scatter",click_series:{label:"Click box, scatter or outlier"}}}},{lang:"zh",resources:{boxplot:{viz_name:"箱线图",box:"箱体",outlier:"异常点",scatter:"散点",click_series:{label:"点击箱体、散点或异常点"}}}}],La={id:"builtin:echarts:click-echart:series",displayName:"viz.boxplot.click_series.label",nameRender:jp,configRender:_p,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 _p(t){return s.jsx(s.Fragment,{})}function jp(t){const{t:e}=_.useTranslation();return s.jsx(o.Text,{children:e("viz.boxplot.click_series.label")})}const Pn=m.forwardRef(({sectionTitle:t,value:e,onChange:n},r)=>{const{t:i,i18n:a}=_.useTranslation(),l=u=>d=>{const p=x.cloneDeep(e);x.set(p,u,d),n(p)},c=m.useMemo(()=>[{label:i("chart.axis.overflow.truncate"),value:"truncate"},{label:i("chart.axis.overflow.break_line"),value:"break"},{label:i("chart.axis.overflow.break_word"),value:"breakAll"}],[a.language]);return s.jsxs(o.Stack,{spacing:0,children:[t&&s.jsx(o.Divider,{mb:-5,mt:5,variant:"dotted",label:t,labelPosition:"right",labelProps:{color:"dimmed"}}),s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(o.NumberInput,{label:i("chart.axis.overflow.max_width"),hideControls:!0,value:e.width,onChange:l("width")}),s.jsx(o.Select,{label:i("chart.axis.overflow.label"),data:c,value:e.overflow,onChange:l("overflow")}),s.jsx(o.TextInput,{label:i("chart.axis.overflow.ellipsis"),value:e.ellipsis,disabled:!0})]})]})}),et=m.forwardRef(({value:t,onChange:e},n)=>{const{t:r}=_.useTranslation(),i=l=>{e({...t,on_axis:l})},a=l=>{e({...t,in_tooltip:l})};return s.jsxs(o.Stack,{ref:n,spacing:0,children:[s.jsx(Pn,{sectionTitle:r("chart.axis.overflow.section_title.on_axis"),value:t.on_axis,onChange:i}),s.jsx(Pn,{sectionTitle:r("chart.axis.overflow.section_title.in_tooltip"),value:t.in_tooltip,onChange:a})]})});function Pe(){return{on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}}}function We({overflow:t,width:e}){const n={truncate:"initial",break:"break-all",breakAll:"break-word"}[t],r=t==="truncate"?"nowrap":"initial",i={truncate:"ellipsis",break:"clip",breakAll:"clip"}[t];return`
|
|
58
58
|
max-width: ${e}px;
|
|
59
59
|
word-break: ${n};
|
|
@@ -105,7 +105,7 @@ Check the top-level render call using <`+P+">.")}return z}}function _u(C,z){{if(
|
|
|
105
105
|
${r.join("")}
|
|
106
106
|
</tbody>
|
|
107
107
|
</table>
|
|
108
|
-
`}const Eh=(t,e)=>n=>{const{seriesName:r,value:i}=n;switch(r){case e.Box:return Dh(t,i);case e.Outlier:return Mh(t,i);case e.Scatter:return Ih(t,i)}};function Ah({config:t,seriesNames:e}){return te.getTooltip({trigger:"item",formatter:Eh(t,e)})}function Bn(t,e){e||(e="none");const n=[];return t.x_axis_scroll&&n.push({type:"inside",xAxisIndex:[0],filterMode:e,minSpan:1}),t.y_axis_scroll&&n.push({type:"inside",yAxisIndex:[0],filterMode:e,minSpan:1}),t.x_axis_slider&&n.push({type:"slider",xAxisIndex:[0],filterMode:e,bottom:"auto",top:0,height:15,moveHandleSize:0,showDataShadow:!1,minSpan:1}),n}function Ph({min:t,max:e}){if(t<=110)return Math.min(0,t);if(t<=200)return 100;const n=qt.floor(qt.log10(t)),r=Math.pow(10,n),i=Math.pow(10,n-1);return t/r<=2?x.round(t,-1*(n-1))-i:x.round(t,-1*n)-r}function $h(t){return{Box:t("viz.boxplot.box"),Scatter:t("viz.boxplot.scatter"),Outlier:t("viz.boxplot.outlier")}}function Bh({config:t,data:e,variables:n,t:r}){const{x_axis:i,y_axis:a,reference_lines:l}=t,c=xh(t,e),u=Qe(i.axisLabel.overflow.on_axis),d=$h(r),p=Th(t,c).map(h=>({...h,name:x.get(d,h.name,h.name)}));return{dataZoom:Bn(t.dataZoom,"filter"),grid:yh(t),dataset:c,legend:bh({config:t,seriesNames:d}),tooltip:Ah({config:t,seriesNames:d}),xAxis:[te.getXAxis({type:"category",name:i.name,nameGap:25,nameLocation:"center",nameTextStyle:{align:"center"},axisLabel:{...i.axisLabel,...u,formatter:Ae(i.axisLabel.formatter)}})],yAxis:[te.getYAxis({name:a.name,minInterval:1,axisLabel:{formatter:function(h){return U(h,a.label_formatter)}},min:Ph})],series:[...p,...vh(l,n,e)]}}function Lh({context:t,instance:e}){const{t:n}=_.useTranslation(),{value:r}=O(t.instanceData,"config"),{variables:i}=t,a=t.data,{width:l,height:c}=t.viewport,u=x.defaults({},r,Gs),d=Oe({vizManager:t.vizManager,instance:e}),p=qe(d.triggerManager,La.id),h=zt(a,u.x_axis.data_key),f=m.useCallback(w=>{const T=x.get(h,w.name,{error:"rowData is not found"});p.forEach(D=>{d.runInteraction(D.id,{...w,rowData:T})})},[h,p,d]),y=m.useMemo(()=>({click:f}),[f]),v=m.useMemo(()=>Bh({config:u,data:a,variables:i,t:n}),[u,a,i,n]);return!r||!l||!c?null:s.jsx(Ie,{width:l,height:c,children:s.jsx(Te,{echarts:we,option:v,style:cn(l,c),onEvents:y,notMerge:!0,theme:"merico-light"})})}function qh({value:t,onChange:e},n){const{t:r}=_.useTranslation(),{colorManager:i}=m.useContext(ut),a=m.useMemo(()=>i.getStaticColors().map(u=>({label:u.name,group:u.category,value:u.value})),[i]),l=m.useMemo(()=>a.some(c=>c.value===t),[t,a]);return s.jsxs(o.Group,{position:"apart",spacing:4,ref:n,children:[s.jsx(o.TextInput,{placeholder:r("chart.color.set_any_color"),value:l?"":t,onChange:c=>e(c.currentTarget.value),rightSection:s.jsx(o.ColorSwatch,{color:l?"transparent":t,radius:4}),variant:l?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),s.jsx(o.Text,{sx:{flexGrow:0},size:"xs",children:r("chart.color.or")}),s.jsx(o.Select,{data:a,value:t,onChange:e,variant:l?"default":"filled",placeholder:r("chart.color.pick_a_theme_color"),icon:s.jsx(o.ColorSwatch,{color:l?t:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const De=m.forwardRef(qh);function fe({canSubmit:t}){const{t:e}=_.useTranslation();return s.jsxs(o.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[s.jsx(o.Text,{children:e("viz.viz_config_banner")}),s.jsx(o.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!t,children:s.jsx(k.IconDeviceFloppy,{size:20})})]})}const Ln=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("common.align.horizontal.left"),value:"left"},{label:a("common.align.horizontal.center"),value:"center"},{label:a("common.align.horizontal.right"),value:"right"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("common.align.horizontal.label"),data:c,value:e,onChange:n,sx:r})}),Wa=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("common.align.vertical.top"),value:"top"},{label:a("common.align.vertical.center"),value:"center"},{label:a("common.align.vertical.bottom"),value:"bottom"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("common.align.vertical.label"),data:c,value:e,onChange:n,sx:r})}),Qa=o.createStyles(()=>({palette:{display:"flex",flexFlow:"row nowrap"},paletteItem:{".palette-value":{height:24,overflow:"visible",width:36},".palette-item":{width:"36px",height:36*.618,cursor:"pointer",transition:"transform 100ms ease-in-out","&:hover":{boxShadow:"0 0 0 2px var(--shadow-color)",borderRadius:2,transform:"scale(1.2)"}}}})),Oh=[{from:0,to:0},{from:100,to:100}];class Vh{constructor(){$(this,"steps",new Map);$(this,"interpolation");$(this,"onChange");J.makeAutoObservable(this,{steps:J.observable},{deep:!1}),J.reaction(()=>J.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(e){for(const n of e)this.steps.set(n.to,n.from)}notifyStepChange(){var e;(e=this.onChange)==null||e.call(this,Array.from(this.steps.entries()).map(([n,r])=>({to:n,from:r})).sort((n,r)=>n.to-r.to||n.from-r.from))}fromProps(e){e.steps.length<2?this.setSteps(Oh):this.setSteps(e.steps),this.interpolation=e.interpolation,this.onChange=e.onChange}changeStep(e,n){e==null?this.steps.delete(n):this.steps.set(n,e)}getStepFromValue(e){return this.steps.get(e)}}function Ra(t){if(typeof t=="number")return String(t)}function Nh(t){const{t:e}=_.useTranslation(),{onChange:n,color:r,index:i,value:a}=t,{classes:l}=Qa(),[c,u]=m.useState(Ra(a)),[d,{setTrue:p,setFalse:h}]=G.useBoolean(!1),f=i%2===1,y=f&&a!=null,v=!f&&a!=null,w=`map ${a} to color ${i}`,T=()=>{u(Ra(a)),h()},D=()=>{h(),n==null||n(Number(c))},I=()=>{h(),n==null||n(null)},A=U(a??null,{output:"number",mantissa:10,trimMantissa:!0,average:!0,absolute:!1}),N=!c||Number.isNaN(Number(c));return s.jsxs("div",{"data-testid":`palette-item-${i}`,className:l.paletteItem,children:[s.jsx(o.Text,{title:w,style:{opacity:y?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:A}),s.jsxs(o.Popover,{width:240,trapFocus:!0,opened:d,onClose:h,zIndex:340,withinPortal:!0,children:[s.jsx(o.Popover.Target,{children:s.jsx("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:p,style:{"--shadow-color":dt(r).alpha(.5).hex(),backgroundColor:r}})}),s.jsxs(o.Popover.Dropdown,{children:[s.jsx(o.Tooltip,{withinPortal:!0,zIndex:340,label:e("common.actions.close"),children:s.jsx(o.CloseButton,{size:"sm",color:"gray",onClick:T,style:{position:"absolute",top:"0.5em",right:"0.8em"}})}),s.jsxs(o.Stack,{children:[s.jsx(o.TextInput,{size:"xs",label:e("style.color.interpolation.palette.mapping.value_input_label"),value:c,onChange:R=>{const F=R.currentTarget.value;u(F)},error:c&&N}),s.jsxs(o.Group,{position:"apart",children:[s.jsx(o.Button,{variant:"light",color:"red",size:"xs",onClick:I,leftIcon:s.jsx(k.IconTrash,{size:16}),children:e("common.actions.delete")}),s.jsx(o.Button,{color:"green",leftIcon:s.jsx(k.IconDeviceFloppy,{size:16}),"data-testid":"palette-item-ok",size:"xs",onClick:D,disabled:N,children:e("common.actions.save")})]})]})]})]}),s.jsx(o.Text,{title:w,style:{opacity:v?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:A})]})}const Gh=S.observer(({model:t})=>{const{classes:e}=Qa(),n=x.range(0,13,1).map(r=>100/12*r).map(r=>[t.interpolation.getColor(r),r]);return s.jsx("div",{className:e.palette,children:n.map(([r,i],a)=>s.jsx(Nh,{index:a,color:r,value:t.getStepFromValue(i),onChange:l=>t.changeStep(l,i)},r))})}),Fh=S.observer(function(e){const n=G.useCreation(()=>new Vh,[]);return m.useEffect(()=>{n.fromProps(e)}),n.interpolation==null?null:s.jsx(Gh,{model:n})}),Wh=t=>{const{t:e,i18n:n}=_.useTranslation(),{value:r,onChange:i,colorManager:a}=t,l=a.getColorInterpolations(),[c,u]=m.useState(r),d=a.decodeInterpolation(c.interpolation)||l[0],[p,{setTrue:h,setFalse:f}]=G.useBoolean(),y=m.useMemo(()=>l.map(I=>({label:e(I.displayName),value:a.encodeColor(I),group:e(`style.color.interpolation.palette.category.${I.category}`)})),[n.language]);function v(I){I&&u(A=>({...A,interpolation:I}))}const w=()=>{f(),i==null||i(J.toJS(c))};function T(I){u(A=>({...A,steps:I}))}const D=()=>{f(),u(r)};return s.jsxs(s.Fragment,{children:[s.jsx(o.Button,{variant:"outline",onClick:h,children:e(d==null?void 0:d.displayName)}),s.jsx(o.Modal,{size:508,title:e("style.color.interpolation.setup"),opened:p,onClose:f,zIndex:320,children:p&&s.jsxs(o.Stack,{"data-testid":"color-interpolation-modal",children:[s.jsx(o.Select,{label:e("style.color.interpolation.palette.label"),value:c.interpolation,data:y,onChange:v,withinPortal:!0,zIndex:340,maxDropdownHeight:500}),s.jsx(Fh,{steps:c.steps,interpolation:d,onChange:T}),s.jsxs(o.Group,{position:"apart",children:[s.jsx(o.Button,{onClick:D,variant:"subtle",children:e("common.actions.cancel")}),s.jsx(o.Button,{color:"green",leftIcon:s.jsx(k.IconDeviceFloppy,{size:16}),onClick:w,children:e("common.actions.save")})]})]})})]})},Qh=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("style.color.type.static"),value:"static"},{label:a("style.color.type.interpolation"),value:"interpolation"},{label:a("style.color.type.none"),value:"none"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("style.color.type.label"),data:c,value:e,onChange:n,sx:r})}),Rh=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("style.flex.justify_content.left"),value:"left"},{label:a("style.flex.justify_content.center"),value:"center"},{label:a("style.flex.justify_content.right"),value:"right"},{label:a("style.flex.justify_content.space_between"),value:"space-between"},{label:a("style.flex.justify_content.space_around"),value:"space-around"},{label:a("style.flex.justify_content.space_evenly"),value:"space-evenly"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("style.flex.justify_content.label"),data:c,value:e,onChange:n,sx:r})}),Uh=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("style.flex.align_items.start"),value:"start"},{label:a("style.flex.align_items.center"),value:"center"},{label:a("style.flex.align_items.end"),value:"end"},{label:a("style.flex.align_items.stretch"),value:"stretch"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("style.flex.align_items.label"),data:c,value:e,onChange:n,sx:r})}),Yh={tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},ce=({control:t,watch:e,name:n,getItem:r,children:i,addButtonText:a,deleteButtonText:l,renderTabName:c,deleteDisalbed:u})=>{const{fields:d,append:p,remove:h}=b.useFieldArray({control:t,name:n}),f=e(n),y=d.map((w,T)=>({...w,...f[T]})),v=()=>{p(r())};return s.jsxs(o.Tabs,{defaultValue:"0",styles:Yh,children:[s.jsxs(o.Tabs.List,{children:[y.map((w,T)=>s.jsx(o.Tabs.Tab,{value:T.toString(),children:c(w,T)},w.id)),s.jsx(o.Tabs.Tab,{onClick:v,value:"add",children:s.jsx(o.Tooltip,{label:a,children:s.jsx(o.Center,{children:s.jsx(k.IconPlus,{size:18,color:"#228be6"})})})})]}),y.map((w,T)=>s.jsx(o.Tabs.Panel,{value:T.toString(),children:s.jsxs(o.Stack,{children:[i({field:w,index:T}),s.jsx(o.Divider,{mb:-10,mt:10,variant:"dashed"}),s.jsx(o.Button,{leftIcon:s.jsx(k.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>h(T),sx:{top:15,right:5},disabled:u==null?void 0:u({field:w,index:T,fields:y}),children:l})]})},w.id))]})},qn=m.forwardRef(({value:t,onChange:e},n)=>{const{t:r}=_.useTranslation(),i=a=>l=>{e({...t,[a]:l})};return s.jsxs(o.Stack,{children:[s.jsx(o.Divider,{variant:"dashed",label:r("chart.zooming.scroll.label"),labelPosition:"center"}),s.jsxs(o.Group,{children:[s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.scroll.x_axis"),checked:t.x_axis_scroll,onChange:a=>i("x_axis_scroll")(a.currentTarget.checked)})}),s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.scroll.y_axis"),checked:t.y_axis_scroll,onChange:a=>i("y_axis_scroll")(a.currentTarget.checked)})})]}),s.jsx(o.Divider,{variant:"dashed",label:r("chart.zooming.slider.label"),labelPosition:"center"}),s.jsxs(o.Group,{children:[s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.slider.x_axis"),checked:t.x_axis_slider,onChange:a=>i("x_axis_slider")(a.currentTarget.checked)})}),s.jsx(o.Tooltip,{label:r("chart.zooming.slider.y_axis_disabled"),children:s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.slider.y_axis"),disabled:!t.y_axis_slider,checked:t.y_axis_slider,onChange:a=>i("y_axis_slider")(a.currentTarget.checked)})})})]})]})}),Ft=m.forwardRef(({label:t,value:e,onChange:n,sx:r={},disabled:i},a)=>{const{t:l,i18n:c}=_.useTranslation(),u=m.useMemo(()=>[{label:l("chart.orientation.horizontal"),value:"horizontal"},{label:l("chart.orientation.vertical"),value:"vertical"}],[c.language]);return s.jsx(o.Select,{ref:a,label:t??l("chart.orientation.label"),data:u,value:e,onChange:n,sx:r,disabled:i})}),Kh=({control:t,watch:e})=>{const{t:n}=_.useTranslation(),r=e("legend"),i=(a,l)=>{const c={...r,orient:a};a==="horizontal"?(c.top="0",c.left="auto",c.right="10",c.bottom="auto"):(c.top="10",c.left="auto",c.right="0",c.bottom="auto"),l(c)};return s.jsxs(o.Stack,{children:[s.jsx(o.Group,{grow:!0,noWrap:!0,mt:20,children:s.jsx(b.Controller,{name:"legend.show",control:t,render:({field:a})=>s.jsx(o.Switch,{label:n("chart.legend.show_legend"),sx:{flex:1},checked:a.value,onChange:l=>a.onChange(l.currentTarget.checked)})})}),s.jsx(o.Group,{children:s.jsx(b.Controller,{name:"legend",control:t,render:({field:a})=>s.jsx(Ft,{sx:{flex:1},value:a.value.orient,onChange:l=>{i(l,a.onChange)},disabled:!r.show})})})]})};function Jh({control:t,index:e,variableOptions:n}){const{t:r}=_.useTranslation();return s.jsxs(o.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:`reference_lines.${e}.name`,control:t,render:({field:i})=>s.jsx(o.TextInput,{label:r("common.name"),placeholder:r("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...i})}),s.jsx(b.Controller,{name:`reference_lines.${e}.variable_key`,control:t,render:({field:i})=>s.jsx(o.Select,{label:r("common.value"),required:!0,data:n,sx:{flex:1},...i})})]}),s.jsx(b.Controller,{name:`reference_lines.${e}.template`,control:t,render:({field:i})=>s.jsx(o.TextInput,{label:r("chart.content_template.label"),placeholder:r("chart.content_template.placeholder"),required:!0,sx:{flex:1},...i})})]})}function Xh({control:t,watch:e,variables:n}){const{t:r}=_.useTranslation(),i=()=>({name:"",template:"",variable_key:""}),a=m.useMemo(()=>n.map(c=>({label:c.name,value:c.name})),[n]),l=(c,u)=>{const d=c.name.trim();return d||u+1};return s.jsx(ce,{control:t,watch:e,name:"reference_lines",getItem:i,addButtonText:r("chart.reference_line.add"),deleteButtonText:r("chart.reference_line.delete"),renderTabName:l,children:({field:c,index:u})=>s.jsx(Jh,{control:t,index:u,variableOptions:a})})}const Zh=({control:t,index:e})=>{const{t:n}=_.useTranslation();return s.jsx(o.Stack,{children:s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:`tooltip.metrics.${e}.name`,control:t,render:({field:r})=>s.jsx(o.TextInput,{label:n("common.name"),required:!0,sx:{flex:1},...r})}),s.jsx(b.Controller,{name:`tooltip.metrics.${e}.data_key`,control:t,render:({field:r})=>s.jsx(q,{label:n("chart.data_field"),required:!0,sx:{flex:1},...r})})]})})},Hh=({control:t,watch:e})=>{const{t:n}=_.useTranslation(),r=()=>({id:Date.now().toString(),data_key:"",name:""}),i=(a,l)=>{const c=a.name.trim();return c||l+1};return s.jsxs(s.Fragment,{children:[s.jsxs(o.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[s.jsx(B.InfoCircle,{size:14,color:"#888"}),s.jsx(o.Text,{size:14,color:"#888",children:n("chart.tooltip.additional_metrics.description")})]}),s.jsx(ce,{control:t,watch:e,name:"tooltip.metrics",getItem:r,addButtonText:n("chart.tooltip.additional_metrics.add"),deleteButtonText:n("chart.tooltip.additional_metrics.delete"),renderTabName:i,children:({field:a,index:l})=>s.jsx(Zh,{control:t,index:l})})]})};function em({control:t,watch:e}){return s.jsx(o.Stack,{children:s.jsx(Hh,{control:t,watch:e})})}const gt=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a}=_.useTranslation();return s.jsx(o.NumberInput,{ref:i,label:t??a("chart.rotate"),hideControls:!0,min:-90,max:90,rightSection:s.jsx(o.Text,{size:"xs",color:"dimmed",children:a("chart.degree")}),sx:r,styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},value:e,onChange:n})}),tm=({control:t,watch:e})=>{const{t:n}=_.useTranslation();return e(["x_axis"]),s.jsxs(o.Stack,{children:[s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.name",control:t,render:({field:r})=>s.jsx(o.TextInput,{label:n("chart.x_axis.x_axis_name"),sx:{flex:1},...r})}),s.jsx(b.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>s.jsx(q,{label:n("chart.x_axis.x_axis_data_field"),required:!0,sx:{flex:1},...r})})]}),s.jsx(o.Divider,{mb:-15,label:n("chart.axis.tick_label"),labelPosition:"center"}),s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>s.jsx(gt,{sx:{width:"48%"},...r})}),s.jsx(b.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>s.jsx(He,{...r})})]}),s.jsx(b.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>s.jsx(et,{...r})})]})},Ys={root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}},nm=["123456789","1234","1234.56789","1.234","0.123456789","-0.123456789"];function sm({format:t}){const{t:e}=_.useTranslation(),[n,{toggle:r}]=ie.useDisclosure(!1);return s.jsxs(o.Box,{children:[s.jsx(o.Button,{variant:"subtle",w:"100%",compact:!0,onClick:r,leftIcon:n?s.jsx(k.IconChevronUp,{size:14}):s.jsx(k.IconChevronDown,{size:14}),children:e(n?"numbro.format.preview.close":"numbro.format.preview.open")}),s.jsx(o.Collapse,{in:n,children:n&&s.jsxs(o.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:e("numbro.format.preview.input")}),s.jsx("th",{children:e("numbro.format.preview.output")})]})}),s.jsx("tbody",{children:nm.map(i=>s.jsxs("tr",{children:[s.jsx("td",{children:i}),s.jsx("td",{children:s.jsx(Ce,{children:U(i,t)})})]},i))})]})})]})}function rm({value:t,onChange:e},n){const{t:r}=_.useTranslation(),i=d=>{e({...t,output:d})},a=d=>{const p=d===0?!1:t.trimMantissa;e({...t,mantissa:d,trimMantissa:p})},l=d=>{e({...t,trimMantissa:d.currentTarget.checked})},c=d=>{e({...t,average:d.currentTarget.checked})},u=d=>{const p={...t,absolute:d.currentTarget.checked};e(p)};return s.jsxs(o.Stack,{ref:n,children:[s.jsxs(o.Group,{grow:!0,children:[s.jsx(o.Select,{label:r("numbro.format.label"),data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:i,sx:{flexGrow:1}}),s.jsx(o.Switch,{label:s.jsxs(o.Stack,{spacing:0,children:[s.jsx(o.Text,{children:r("numbro.format.absolute")}),s.jsx(o.Text,{size:12,color:"gray",children:r("numbro.format.absolute_description")})]}),checked:t.absolute,onChange:u,sx:{flexGrow:1},styles:Ys}),s.jsx(o.Switch,{label:s.jsxs(o.Stack,{spacing:0,children:[s.jsx(o.Text,{children:r("numbro.format.abbreviation")}),s.jsx(o.Text,{size:12,color:"gray",children:r("numbro.format.abbreviation_description")})]}),checked:t.average,onChange:c,disabled:t.output!=="number",sx:{flexGrow:1},styles:Ys})]}),s.jsxs(o.Group,{grow:!0,children:[s.jsx(o.NumberInput,{label:r("numbro.format.mantissa"),defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:a}),s.jsx(o.Switch,{label:s.jsxs(o.Stack,{spacing:0,children:[s.jsx(o.Text,{children:r("numbro.format.trim_mantissa")}),s.jsx(o.Text,{size:12,color:"gray",children:r("numbro.format.trim_mantissa_description")})]}),checked:t.trimMantissa,onChange:l,disabled:t.mantissa===0,styles:Ys}),s.jsx(o.Box,{})]}),s.jsx(sm,{format:t})]})}const Re=m.forwardRef(rm),im=({control:t,watch:e})=>{const{t:n}=_.useTranslation();return e(["y_axis"]),s.jsxs(s.Fragment,{children:[s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"y_axis.name",control:t,render:({field:r})=>s.jsx(o.TextInput,{label:n("chart.y_axis.y_axis_name"),sx:{flex:1},...r})}),s.jsx(b.Controller,{name:"y_axis.data_key",control:t,render:({field:r})=>s.jsx(q,{label:n("chart.y_axis.y_axis_data_field"),required:!0,sx:{flex:1},...r})})]}),s.jsxs(o.Stack,{children:[s.jsx(o.Divider,{mt:10,mb:-15,variant:"dashed",label:n("chart.axis.section_title.label_format"),labelPosition:"center"}),s.jsx(b.Controller,{name:"y_axis.label_formatter",control:t,render:({field:r})=>s.jsx(Re,{...r})})]})]})};function am({context:t}){const{t:e}=_.useTranslation(),{value:n,set:r}=O(t.instanceData,"config"),{variables:i}=t,a=m.useMemo(()=>x.defaults({},n,Gs),[n]),{control:l,handleSubmit:c,watch:u,getValues:d,reset:p}=b.useForm({defaultValues:a});m.useEffect(()=>{p(a)},[a]),u(["x_axis","y_axis","reference_lines","color","dataZoom"]);const h=d(),f=m.useMemo(()=>!x.isEqual(h,n),[h,n]);return s.jsx(o.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:c(r),children:[s.jsx(fe,{canSubmit:f}),s.jsxs(o.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[s.jsxs(o.Tabs.List,{children:[s.jsx(o.Tabs.Tab,{value:"X Axis",children:e("chart.x_axis.label")}),s.jsx(o.Tabs.Tab,{value:"Y Axis",children:e("chart.y_axis.label")}),s.jsx(o.Tabs.Tab,{value:"Legend",children:e("chart.legend.label")}),s.jsx(o.Tabs.Tab,{value:"Tooltip",children:e("chart.tooltip.label")}),s.jsx(o.Tabs.Tab,{value:"Style",children:e("chart.style.label")}),s.jsx(o.Tabs.Tab,{value:"Reference Lines",children:e("chart.reference_line.labels")}),s.jsx(o.Tabs.Tab,{value:"Zooming",children:e("chart.zooming.label")})]}),s.jsx(o.Tabs.Panel,{value:"X Axis",children:s.jsx(tm,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Y Axis",children:s.jsx(im,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Legend",children:s.jsx(Kh,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Tooltip",children:s.jsx(em,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Style",children:s.jsxs(o.Stack,{spacing:4,children:[s.jsx(o.Text,{size:"sm",children:e("chart.color.label")}),s.jsx(b.Controller,{name:"color",control:l,render:({field:y})=>s.jsx(De,{...y})})]})}),s.jsx(o.Tabs.Panel,{value:"Reference Lines",children:s.jsx(Xh,{variables:i,control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Zooming",children:s.jsx(b.Controller,{name:"dataZoom",control:l,render:({field:y})=>s.jsx(qn,{...y})})})]})]})})}function om(t){return x.omit(t,"variables")}function lm(t){const{label_formatter:e=_e,...n}=t.y_axis;return{...t,y_axis:{...n,label_formatter:e}}}function cm(t){const e={rotate:0,formatter:Se()},{axisLabel:n=e,...r}=t.x_axis;return{...t,x_axis:{...r,axisLabel:n}}}function um(t){const e={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return x.defaultsDeep(e,t)}function dm(t){delete t.config;const{x_axis:e,tooltip:n}=t.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:e,in_tooltip:n}}}};return x.defaultsDeep(r,t)}function pm(t){const e={tooltip:{metrics:[]}};return x.defaultsDeep(e,t)}function hm(t,{panelModel:e}){try{const n=e.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=u=>u&&`${n}.${u}`,{x_axis:i,y_axis:a,tooltip:l,...c}=t;return{...c,x_axis:{...i,data_key:r(i.data_key)},y_axis:{...a,data_key:r(a.data_key)},tooltip:{...l,metrics:l.metrics.map(u=>({...u,data_key:r(u.data_key)}))}}}catch(n){throw console.error("[Migration failed]",n),n}}function mm(t){const e={legend:{show:!0,top:"0",right:"10",left:"auto",bottom:"auto",orient:"horizontal",type:"scroll"}};return x.defaultsDeep(e,t)}function gm(t){const{dataZoom:e,...n}=t;return{...n,dataZoom:e??Ba()}}class fm extends le{constructor(){super(...arguments);$(this,"VERSION",9)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,{panelModel:r})=>{const{config:i}=n;return(i.variables||[]).forEach(l=>{r.variables.find(c=>c.name===l.name)||r.addVariable(l)}),{...n,version:2,config:om(i)}}),this.version(3,n=>{const{config:r}=n;return{...n,version:3,config:lm(r)}}),this.version(4,n=>{const{config:r}=n;return{...n,version:4,config:cm(r)}}),this.version(5,n=>{const{config:r}=n;return{...n,version:5,config:um(r)}}),this.version(6,n=>{const{config:r}=n;return{...n,version:6,config:dm(r)}}),this.version(7,n=>{const{config:r}=n;return{...n,version:7,config:pm(r)}}),this.version(8,(n,r)=>{const{config:i}=n;return{...n,version:8,config:hm(i,r)}}),this.version(9,n=>{const{config:r}=n;return{...n,version:9,config:mm(r)}}),this.version(10,n=>{const{config:r}=n;return{...n,version:10,config:gm(r)}})}}const xm={displayName:"viz.boxplot.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new fm,name:"boxplot",viewRender:Lh,configRender:am,createConfig(){return{version:10,config:x.cloneDeep(Gs)}},triggers:[La],translation:vp},Ua={id:"builtin:button:click-button",displayName:"viz.button.click.label",nameRender:bm,configRender:ym,payload:[]};function ym(t){return s.jsx(s.Fragment,{})}function bm(t){const{t:e}=_.useTranslation();return s.jsx(o.Text,{children:e("viz.button.click.label")})}const Ks={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},vm={left:"flex-start",center:"center",right:"flex-end"},_m={top:"flex-start",center:"center",bottom:"flex-end"},jm=S.observer(({context:t,instance:e})=>{const n=Oe({vizManager:t.vizManager,instance:e}),r=qe(n.triggerManager,Ua.id),i=he(),{value:a}=O(t.instanceData,"config"),l=m.useMemo(()=>x.defaultsDeep({},a,Ks),[a]),{content:c,horizontal_align:u,vertical_align:d,...p}=l,{width:h,height:f}=t.viewport,y=i.payloadForSQL,v=()=>{r.forEach(w=>{n.runInteraction(w.id,{})})};return s.jsx(o.Center,{sx:{width:h,height:f,justifyContent:vm[u],alignItems:_m[d]},children:s.jsx(o.Button,{...p,onClick:v,children:x.template(c)(y)})})}),wm=({value:t,onChange:e,label:n})=>{const r=o.useMantineTheme(),i=m.useCallback(l=>()=>e(l),[e]),a=l=>t===l;return s.jsxs(o.Stack,{spacing:2,children:[s.jsx(o.Text,{size:14,sx:{fontWeight:500},children:n}),s.jsx(o.Group,{position:"left",spacing:"xs",children:Object.keys(r.colors).map(l=>{const c=r.colors[l][6];return s.jsx(o.ColorSwatch,{color:c,onClick:i(l),radius:4,size:26,sx:{cursor:"pointer"},children:a(l)&&s.jsx(o.CheckIcon,{width:10,color:"white"})},l)})})]})},Js=m.forwardRef(({label:t,value:e,onChange:n,sx:r,disabled:i},a)=>{const{t:l}=_.useTranslation(),c=m.useMemo(()=>o.MANTINE_SIZES.map(u=>({label:l(`style.size.${u}`),value:u})),[]);return s.jsx(o.Select,{ref:a,data:c,label:t,value:e,onChange:n,sx:r,disabled:!0})}),Cm=[{label:"Filled",value:"filled"},{label:"Outline",value:"outline"},{label:"Light",value:"light"},{label:"White",value:"white"},{label:"Default",value:"default"},{label:"Subtle",value:"subtle"},{label:"Gradient",value:"gradient",disabled:!0}];function Sm({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=m.useMemo(()=>x.defaultsDeep({},e,Ks),[e]),i=r;m.useEffect(()=>{!x.isEqual(r,i)&&(console.log("config malformed, resetting to defaults",r,i),n(i))},[r,i]);const{control:a,handleSubmit:l,watch:c,getValues:u,reset:d}=b.useForm({defaultValues:i});m.useEffect(()=>{d(i)},[i]);const p=u(),h=m.useMemo(()=>!x.isEqual(p,r),[p,r]);return c(["content","variant","color","size","compact","horizontal_align","vertical_align"]),s.jsxs("form",{onSubmit:l(n),children:[s.jsx(fe,{canSubmit:h}),s.jsxs(o.Stack,{children:[s.jsx(b.Controller,{control:a,name:"content",render:({field:f})=>s.jsx(o.TextInput,{label:"Content Template",description:"Filter values & context entries are supported",...f,required:!0})}),s.jsx(o.Divider,{mt:"xs",mb:0,label:"Styles",labelPosition:"center",variant:"dashed"}),s.jsxs(o.SimpleGrid,{cols:2,children:[s.jsx(b.Controller,{control:a,name:"variant",render:({field:f})=>s.jsx(o.Select,{label:"Variant",data:Cm,...f})}),s.jsx(b.Controller,{control:a,name:"color",render:({field:f})=>s.jsx(wm,{label:"Theme",...f})})]}),s.jsxs(o.SimpleGrid,{cols:2,children:[s.jsx(b.Controller,{control:a,name:"size",render:({field:f})=>s.jsx(Js,{label:"Size",...f})}),s.jsx(b.Controller,{control:a,name:"compact",render:({field:f})=>s.jsx(o.Checkbox,{label:"Compact",checked:f.value,onChange:y=>f.onChange(y.currentTarget.checked),mt:26})})]}),s.jsxs(o.SimpleGrid,{cols:2,children:[s.jsx(b.Controller,{control:a,name:"horizontal_align",render:({field:f})=>s.jsx(Ln,{...f})}),s.jsx(b.Controller,{control:a,name:"vertical_align",render:({field:f})=>s.jsx(Wa,{...f})})]})]})]})}const km=[{lang:"en",resources:{button:{viz_name:"Button",click:{label:"Click this button"}}}},{lang:"zh",resources:{button:{viz_name:"按钮",click:{label:"点击此按钮"}}}}];class Tm extends le{constructor(){super(...arguments);$(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,n=>{const{horizontal_align:r="left",vertical_align:i="center",...a}=n.config;return{...n,version:2,config:{...a,horizontal_align:r,vertical_align:i}}})}}const Dm={displayName:"viz.button.viz_name",displayGroup:"chart.groups.others",migrator:new Tm,name:"button",viewRender:jm,configRender:Sm,createConfig(){return{version:2,config:x.cloneDeep(Ks)}},triggers:[Ua],translation:km},Xs={id:"builtin:echarts:click-echart:series",displayName:"viz.cartesian_chart.click_series.label",nameRender:Mm,configRender:zm,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",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"}]};function zm(t){return s.jsx(s.Fragment,{})}function Mm(t){const{t:e}=_.useTranslation();return s.jsx(o.Text,{children:e("viz.cartesian_chart.click_series.label")})}const Zs={regressions:[],series:[],stats:{templates:{bottom:"",top:""}},x_axis:{type:"category",axisLabel:{rotate:0,formatter:Se(),overflow:Pe()}},tooltip:{metrics:[]},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:_e}],reference_lines:[],reference_areas:[],dataZoom:Dt};function Im(t){const e=t.y_axes.some(i=>!!i.name);let n=15;e&&(n+=20),t.dataZoom.x_axis_slider&&(n+=20);let r=5;return t.x_axis_name&&(r+=15),t.series.some(i=>!i.hide_in_legend)&&(r+=20),{top:n,right:15,bottom:r,left:20,containLabel:!0}}function Em(t){return t!=="line"?{}:{itemStyle:{opacity:0}}}function Am(t){switch(t){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function Pm(t){const e={show:!0,bottom:0,left:"center",type:"scroll"};return e.data=t.filter(n=>!n.hide_in_legend).map(({name:n,type:r})=>({name:n,icon:Am(r),...Em(r)})),e}function On(t,e){switch(t.config.method){case"linear":return[...jt.regressionLinear()(e)];case"exponential":return[...jt.regressionExp()(e)];case"logistic":return[...jt.regressionLog()(e)];case"polynomial":return[...jt.regressionPoly().order(t.config.order)(e)];default:return[]}}function $m(t,e,n,r){const{transform:i,plot:a}=t,l={...a,name:e,data:On(i,r),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return n&&(l.custom={type:"regression-line",targetSeries:n}),l}function Bm({regressions:t=[],x_axis_data_key:e},n){const r=[];if(Object.keys(n).length===0)return r;function i(a,l,c,u){const d=$m(a,l,c,u);r.push(d)}return t.forEach(a=>{const{name:l,group_by_key:c}=a;if(!c||c===e){const h=at(n,a.y_axis_data_key).map((f,y)=>[y,Number(f)]);i(a,l,"",h);return}const{columnKey:u}=E(a.y_axis_data_key),d=x.groupBy(Tn(n,a.y_axis_data_key),c);Object.entries(d).forEach(([p,h])=>{const f=h.map((v,w)=>[w,Number(v[u])]);i(a,p,p,f)})}),r}function Lm(t,e){return t.map(n=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:n.color},data:[[{yAxis:e[n.y_keys.upper]},{yAxis:e[n.y_keys.lower]}]],silent:!0}}))}function qm(t,e,n,r){return e?r==="value"?[[n[0],t]]:[t]:[]}function Om(t,e,n,r,i,a){return t.map(l=>{const c=n[l.variable_key],u=l.orientation==="horizontal",d=u?"yAxis":"xAxis",p=u?"insideEndTop":"end",h=qm(c,u,i,a);return{name:l.name,type:"scatter",hide_in_legend:!l.show_in_legend,xAxisId:"main-x-axis",yAxisIndex:l.yAxisIndex,data:h,symbol:"none",silent:!0,tooltip:{show:!1},markLine:{data:[{name:l.name,[d]:c}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?Mn(l.template,e,r):""},position:p}}}})}function Hs(t,e,n){const r=at(t,e),i=at(t,n);return x.zip(r,i)}function Vm(t,e,n,r){const i=Hs(e,n,r);return x.unionBy(i,t,0)}function Nm({dataTemplate:t,data:e,x_axis_data_key:n,y_axis_data_key:r,valueTypedXAxis:i}){return i?Vm(t,e,n,r):at(e,r)}function Gm({dataTemplate:t,data:e,aggregation_on_value:n,x_axis_data_key:r,y_axis_data_key:i,valueTypedXAxis:a}){if(!n||n.type==="none")return Nm({dataTemplate:t,data:e,x_axis_data_key:r,y_axis_data_key:i,valueTypedXAxis:a});const l=Hs(e,r,i),c=x.groupBy(l,"0");return t.map(([d])=>{const h=c[d].map(y=>y[1]),f=zs(h,n);return[d,f]})}function Fm({group_by_key:t,data:e,x_axis_data_key:n,y_axis_data_key:r}){const{queryID:i,columnKey:a}=E(t),l=x.groupBy(e[i],a);return Object.entries(l).forEach(([c,u])=>{l[c]=Hs({[i]:u},n,r)}),l}function Wm({type:t,...e},n,r,i){if(!t)return 10;if(t==="static"){const{size:d}=e;return d}const{func_content:a}=e,{queryID:l,columnKey:c}=E(r),u=x.keyBy(Tn(n,l),c);return(d,p)=>{let h;p.name?h=u[p.name]:h=n[p.dataIndex];try{return new Function(`return ${a}`)()({rowData:h,params:p,variables:i},{lodash:x,interpolate:kt.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function Qm({x_axis_data_key:t,x_axis:e},{y_axis_data_key:n,yAxisIndex:r,label_position:i,name:a,group_by_key:l,aggregation_on_value:c,stack:u,color:d,display_name_on_line:p,symbolSize:h,hide_in_legend:f,...y},v,w,T,D){const I=e.type!=="category",A={label:{show:!!i,position:i,formatter:D[r??"default"]},name:a,xAxisId:"main-x-axis",yAxisIndex:r,stack:u,color:d,symbolSize:Wm(h,w,t,T),hide_in_legend:f,labelLayout:{hideOverlap:!0},...y};if(y.type==="line"&&(A.lineStyle={shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:3}),p&&(A.endLabel={show:!0,formatter:a,offset:[-12,12],align:"right"}),!l||l===t)return A.data=Gm({dataTemplate:v,data:w,aggregation_on_value:c,x_axis_data_key:t,y_axis_data_key:n,valueTypedXAxis:I}),A;const N=Fm({group_by_key:l,data:w,x_axis_data_key:t,y_axis_data_key:n});return Object.entries(N).map(([R,F])=>{const Q=x.cloneDeep(A);return Q.name=R,Q.color=void 0,Q.data=F,Q})}function Rm(t,e,n,r,i,a){const l=e.map(u=>[u,0]);return t.series.map(u=>Qm(t,u,l,n,a,r)).flat().concat(Om(t.reference_lines,i,a,n,e,t.x_axis.type)).concat(Lm(t.reference_areas,a))}function Um(t,e){const n=t.find(a=>a.axisDim==="x"&&a.axisId==="main-x-axis");if(!n)return"";const{axisValue:r,axisIndex:i}=n;return Ae(e.x_axis.axisLabel.formatter)(r,i)}const Ym=t=>U(t,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function Km(t,e,n,r){const i=n.reduce((a,{yAxisIndex:l,name:c})=>(a[c]=l,a),{});return te.getTooltip({trigger:"axis",formatter:function(a){const l=Array.isArray(a)?a:[a];if(l.length===0)return"";const c=l.map(({seriesName:h,marker:f,value:y})=>{if(Array.isArray(y)&&y.length===2&&(y=y[1]),!h)return y;const v=i[h],w=r[v]??r.default;return`
|
|
108
|
+
`}const Eh=(t,e)=>n=>{const{seriesName:r,value:i}=n;switch(r){case e.Box:return Dh(t,i);case e.Outlier:return Mh(t,i);case e.Scatter:return Ih(t,i)}};function Ah({config:t,seriesNames:e}){return te.getTooltip({trigger:"item",formatter:Eh(t,e)})}function Bn(t,e){e||(e="none");const n=[];return t.x_axis_scroll&&n.push({type:"inside",xAxisIndex:[0],filterMode:e,minSpan:1}),t.y_axis_scroll&&n.push({type:"inside",yAxisIndex:[0],filterMode:e,minSpan:1}),t.x_axis_slider&&n.push({type:"slider",xAxisIndex:[0],filterMode:e,bottom:"auto",top:0,height:15,moveHandleSize:0,showDataShadow:!1,minSpan:1}),n}function Ph({min:t,max:e}){if(t<=110)return Math.min(0,t);if(t<=200)return 100;const n=qt.floor(qt.log10(t)),r=Math.pow(10,n),i=Math.pow(10,n-1);return t/r<=2?x.round(t,-1*(n-1))-i:x.round(t,-1*n)-r}function $h(t){return{Box:t("viz.boxplot.box"),Scatter:t("viz.boxplot.scatter"),Outlier:t("viz.boxplot.outlier")}}function Bh({config:t,data:e,variables:n,t:r}){const{x_axis:i,y_axis:a,reference_lines:l}=t,c=xh(t,e),u=Qe(i.axisLabel.overflow.on_axis),d=$h(r),p=Th(t,c).map(h=>({...h,name:x.get(d,h.name,h.name)}));return{dataZoom:Bn(t.dataZoom,"filter"),grid:yh(t),dataset:c,legend:bh({config:t,seriesNames:d}),tooltip:Ah({config:t,seriesNames:d}),xAxis:[te.getXAxis({type:"category",name:i.name,nameGap:25,nameLocation:"center",nameTextStyle:{align:"center"},axisLabel:{...i.axisLabel,...u,formatter:Ae(i.axisLabel.formatter)}})],yAxis:[te.getYAxis({name:a.name,minInterval:1,axisLabel:{formatter:function(h){return U(h,a.label_formatter)}},min:Ph})],series:[...p,...vh(l,n,e)]}}function Lh({context:t,instance:e}){const{t:n}=_.useTranslation(),{value:r}=O(t.instanceData,"config"),{variables:i}=t,a=t.data,{width:l,height:c}=t.viewport,u=x.defaults({},r,Gs),d=Oe({vizManager:t.vizManager,instance:e}),p=qe(d.triggerManager,La.id),h=zt(a,u.x_axis.data_key),f=m.useCallback(w=>{const T=x.get(h,w.name,{error:"rowData is not found"});p.forEach(D=>{d.runInteraction(D.id,{...w,rowData:T})})},[h,p,d]),y=m.useMemo(()=>({click:f}),[f]),v=m.useMemo(()=>Bh({config:u,data:a,variables:i,t:n}),[u,a,i,n]);return!r||!l||!c?null:s.jsx(Ie,{width:l,height:c,children:s.jsx(Te,{echarts:we,option:v,style:cn(l,c),onEvents:y,notMerge:!0,theme:"merico-light"})})}function qh({value:t,onChange:e},n){const{t:r}=_.useTranslation(),{colorManager:i}=m.useContext(ut),a=m.useMemo(()=>i.getStaticColors().map(u=>({label:u.name,group:u.category,value:u.value})),[i]),l=m.useMemo(()=>a.some(c=>c.value===t),[t,a]);return s.jsxs(o.Group,{position:"apart",spacing:4,ref:n,children:[s.jsx(o.TextInput,{placeholder:r("chart.color.set_any_color"),value:l?"":t,onChange:c=>e(c.currentTarget.value),rightSection:s.jsx(o.ColorSwatch,{color:l?"transparent":t,radius:4}),variant:l?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),s.jsx(o.Text,{sx:{flexGrow:0},size:"xs",children:r("chart.color.or")}),s.jsx(o.Select,{data:a,value:t,onChange:e,variant:l?"default":"filled",placeholder:r("chart.color.pick_a_theme_color"),icon:s.jsx(o.ColorSwatch,{color:l?t:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const De=m.forwardRef(qh);function fe({canSubmit:t}){const{t:e}=_.useTranslation();return s.jsxs(o.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[s.jsx(o.Text,{children:e("viz.viz_config_banner")}),s.jsx(o.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!t,children:s.jsx(k.IconDeviceFloppy,{size:20})})]})}const Ln=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("common.align.horizontal.left"),value:"left"},{label:a("common.align.horizontal.center"),value:"center"},{label:a("common.align.horizontal.right"),value:"right"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("common.align.horizontal.label"),data:c,value:e,onChange:n,sx:r})}),Wa=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("common.align.vertical.top"),value:"top"},{label:a("common.align.vertical.center"),value:"center"},{label:a("common.align.vertical.bottom"),value:"bottom"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("common.align.vertical.label"),data:c,value:e,onChange:n,sx:r})}),Qa=o.createStyles(()=>({palette:{display:"flex",flexFlow:"row nowrap"},paletteItem:{".palette-value":{height:24,overflow:"visible",width:36},".palette-item":{width:"36px",height:36*.618,cursor:"pointer",transition:"transform 100ms ease-in-out","&:hover":{boxShadow:"0 0 0 2px var(--shadow-color)",borderRadius:2,transform:"scale(1.2)"}}}})),Oh=[{from:0,to:0},{from:100,to:100}];class Vh{constructor(){$(this,"steps",new Map);$(this,"interpolation");$(this,"onChange");J.makeAutoObservable(this,{steps:J.observable},{deep:!1}),J.reaction(()=>J.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(e){for(const n of e)this.steps.set(n.to,n.from)}notifyStepChange(){var e;(e=this.onChange)==null||e.call(this,Array.from(this.steps.entries()).map(([n,r])=>({to:n,from:r})).sort((n,r)=>n.to-r.to||n.from-r.from))}fromProps(e){e.steps.length<2?this.setSteps(Oh):this.setSteps(e.steps),this.interpolation=e.interpolation,this.onChange=e.onChange}changeStep(e,n){e==null?this.steps.delete(n):this.steps.set(n,e)}getStepFromValue(e){return this.steps.get(e)}}function Ra(t){if(typeof t=="number")return String(t)}function Nh(t){const{t:e}=_.useTranslation(),{onChange:n,color:r,index:i,value:a}=t,{classes:l}=Qa(),[c,u]=m.useState(Ra(a)),[d,{setTrue:p,setFalse:h}]=G.useBoolean(!1),f=i%2===1,y=f&&a!=null,v=!f&&a!=null,w=`map ${a} to color ${i}`,T=()=>{u(Ra(a)),h()},D=()=>{h(),n==null||n(Number(c))},I=()=>{h(),n==null||n(null)},A=U(a??null,{output:"number",mantissa:10,trimMantissa:!0,average:!0,absolute:!1}),N=!c||Number.isNaN(Number(c));return s.jsxs("div",{"data-testid":`palette-item-${i}`,className:l.paletteItem,children:[s.jsx(o.Text,{title:w,style:{opacity:y?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:A}),s.jsxs(o.Popover,{width:240,trapFocus:!0,opened:d,onClose:h,zIndex:340,withinPortal:!0,children:[s.jsx(o.Popover.Target,{children:s.jsx("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:p,style:{"--shadow-color":dt(r).alpha(.5).hex(),backgroundColor:r}})}),s.jsxs(o.Popover.Dropdown,{children:[s.jsx(o.Tooltip,{withinPortal:!0,zIndex:340,label:e("common.actions.close"),children:s.jsx(o.CloseButton,{"data-testid":"palette-item-cancel",size:"sm",color:"gray",onClick:T,style:{position:"absolute",top:"0.5em",right:"0.8em"}})}),s.jsxs(o.Stack,{children:[s.jsx(o.TextInput,{size:"xs",label:e("style.color.interpolation.palette.mapping.value_input_label"),value:c,onChange:R=>{const F=R.currentTarget.value;u(F)},error:c&&N}),s.jsxs(o.Group,{position:"apart",children:[s.jsx(o.Button,{variant:"light",color:"red",size:"xs",onClick:I,leftIcon:s.jsx(k.IconTrash,{size:16}),children:e("common.actions.delete")}),s.jsx(o.Button,{color:"green",leftIcon:s.jsx(k.IconDeviceFloppy,{size:16}),"data-testid":"palette-item-ok",size:"xs",onClick:D,disabled:N,children:e("common.actions.save")})]})]})]})]}),s.jsx(o.Text,{title:w,style:{opacity:v?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:A})]})}const Gh=S.observer(({model:t})=>{const{classes:e}=Qa(),n=x.range(0,13,1).map(r=>100/12*r).map(r=>[t.interpolation.getColor(r),r]);return s.jsx("div",{className:e.palette,children:n.map(([r,i],a)=>s.jsx(Nh,{index:a,color:r,value:t.getStepFromValue(i),onChange:l=>t.changeStep(l,i)},r))})}),Fh=S.observer(function(e){const n=G.useCreation(()=>new Vh,[]);return m.useEffect(()=>{n.fromProps(e)}),n.interpolation==null?null:s.jsx(Gh,{model:n})}),Wh=t=>{const{t:e,i18n:n}=_.useTranslation(),{value:r,onChange:i,colorManager:a}=t,l=a.getColorInterpolations(),[c,u]=m.useState(r),d=a.decodeInterpolation(c.interpolation)||l[0],[p,{setTrue:h,setFalse:f}]=G.useBoolean(),y=m.useMemo(()=>l.map(I=>({label:e(I.displayName),value:a.encodeColor(I),group:e(`style.color.interpolation.palette.category.${I.category}`)})),[n.language]);function v(I){I&&u(A=>({...A,interpolation:I}))}const w=()=>{f(),i==null||i(J.toJS(c))};function T(I){u(A=>({...A,steps:I}))}const D=()=>{f(),u(r)};return s.jsxs(s.Fragment,{children:[s.jsx(o.Button,{variant:"outline",onClick:h,children:e(d==null?void 0:d.displayName)}),s.jsx(o.Modal,{size:508,title:e("style.color.interpolation.setup"),opened:p,onClose:f,zIndex:320,children:p&&s.jsxs(o.Stack,{"data-testid":"color-interpolation-modal",children:[s.jsx(o.Select,{label:e("style.color.interpolation.palette.label"),value:c.interpolation,data:y,onChange:v,withinPortal:!0,zIndex:340,maxDropdownHeight:500}),s.jsx(Fh,{steps:c.steps,interpolation:d,onChange:T}),s.jsxs(o.Group,{position:"apart",children:[s.jsx(o.Button,{onClick:D,variant:"subtle",children:e("common.actions.cancel")}),s.jsx(o.Button,{color:"green",leftIcon:s.jsx(k.IconDeviceFloppy,{size:16}),onClick:w,children:e("common.actions.save")})]})]})})]})},Qh=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("style.color.type.static"),value:"static"},{label:a("style.color.type.interpolation"),value:"interpolation"},{label:a("style.color.type.none"),value:"none"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("style.color.type.label"),data:c,value:e,onChange:n,sx:r})}),Rh=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("style.flex.justify_content.left"),value:"left"},{label:a("style.flex.justify_content.center"),value:"center"},{label:a("style.flex.justify_content.right"),value:"right"},{label:a("style.flex.justify_content.space_between"),value:"space-between"},{label:a("style.flex.justify_content.space_around"),value:"space-around"},{label:a("style.flex.justify_content.space_evenly"),value:"space-evenly"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("style.flex.justify_content.label"),data:c,value:e,onChange:n,sx:r})}),Uh=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a,i18n:l}=_.useTranslation(),c=m.useMemo(()=>[{label:a("style.flex.align_items.start"),value:"start"},{label:a("style.flex.align_items.center"),value:"center"},{label:a("style.flex.align_items.end"),value:"end"},{label:a("style.flex.align_items.stretch"),value:"stretch"}],[l.language]);return s.jsx(o.Select,{ref:i,label:t??a("style.flex.align_items.label"),data:c,value:e,onChange:n,sx:r})}),Yh={tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},ce=({control:t,watch:e,name:n,getItem:r,children:i,addButtonText:a,deleteButtonText:l,renderTabName:c,deleteDisalbed:u})=>{const{fields:d,append:p,remove:h}=b.useFieldArray({control:t,name:n}),f=e(n),y=d.map((w,T)=>({...w,...f[T]})),v=()=>{p(r())};return s.jsxs(o.Tabs,{defaultValue:"0",styles:Yh,children:[s.jsxs(o.Tabs.List,{children:[y.map((w,T)=>s.jsx(o.Tabs.Tab,{value:T.toString(),children:c(w,T)},w.id)),s.jsx(o.Tabs.Tab,{onClick:v,value:"add",children:s.jsx(o.Tooltip,{label:a,children:s.jsx(o.Center,{children:s.jsx(k.IconPlus,{size:18,color:"#228be6"})})})})]}),y.map((w,T)=>s.jsx(o.Tabs.Panel,{value:T.toString(),children:s.jsxs(o.Stack,{children:[i({field:w,index:T}),s.jsx(o.Divider,{mb:-10,mt:10,variant:"dashed"}),s.jsx(o.Button,{leftIcon:s.jsx(k.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>h(T),sx:{top:15,right:5},disabled:u==null?void 0:u({field:w,index:T,fields:y}),children:l})]})},w.id))]})},qn=m.forwardRef(({value:t,onChange:e},n)=>{const{t:r}=_.useTranslation(),i=a=>l=>{e({...t,[a]:l})};return s.jsxs(o.Stack,{children:[s.jsx(o.Divider,{variant:"dashed",label:r("chart.zooming.scroll.label"),labelPosition:"center"}),s.jsxs(o.Group,{children:[s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.scroll.x_axis"),checked:t.x_axis_scroll,onChange:a=>i("x_axis_scroll")(a.currentTarget.checked)})}),s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.scroll.y_axis"),checked:t.y_axis_scroll,onChange:a=>i("y_axis_scroll")(a.currentTarget.checked)})})]}),s.jsx(o.Divider,{variant:"dashed",label:r("chart.zooming.slider.label"),labelPosition:"center"}),s.jsxs(o.Group,{children:[s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.slider.x_axis"),checked:t.x_axis_slider,onChange:a=>i("x_axis_slider")(a.currentTarget.checked)})}),s.jsx(o.Tooltip,{label:r("chart.zooming.slider.y_axis_disabled"),children:s.jsx(o.Box,{sx:{flexGrow:1},children:s.jsx(o.Switch,{label:r("chart.zooming.slider.y_axis"),disabled:!t.y_axis_slider,checked:t.y_axis_slider,onChange:a=>i("y_axis_slider")(a.currentTarget.checked)})})})]})]})}),Ft=m.forwardRef(({label:t,value:e,onChange:n,sx:r={},disabled:i},a)=>{const{t:l,i18n:c}=_.useTranslation(),u=m.useMemo(()=>[{label:l("chart.orientation.horizontal"),value:"horizontal"},{label:l("chart.orientation.vertical"),value:"vertical"}],[c.language]);return s.jsx(o.Select,{ref:a,label:t??l("chart.orientation.label"),data:u,value:e,onChange:n,sx:r,disabled:i})}),Kh=({control:t,watch:e})=>{const{t:n}=_.useTranslation(),r=e("legend"),i=(a,l)=>{const c={...r,orient:a};a==="horizontal"?(c.top="0",c.left="auto",c.right="10",c.bottom="auto"):(c.top="10",c.left="auto",c.right="0",c.bottom="auto"),l(c)};return s.jsxs(o.Stack,{children:[s.jsx(o.Group,{grow:!0,noWrap:!0,mt:20,children:s.jsx(b.Controller,{name:"legend.show",control:t,render:({field:a})=>s.jsx(o.Switch,{label:n("chart.legend.show_legend"),sx:{flex:1},checked:a.value,onChange:l=>a.onChange(l.currentTarget.checked)})})}),s.jsx(o.Group,{children:s.jsx(b.Controller,{name:"legend",control:t,render:({field:a})=>s.jsx(Ft,{sx:{flex:1},value:a.value.orient,onChange:l=>{i(l,a.onChange)},disabled:!r.show})})})]})};function Jh({control:t,index:e,variableOptions:n}){const{t:r}=_.useTranslation();return s.jsxs(o.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:`reference_lines.${e}.name`,control:t,render:({field:i})=>s.jsx(o.TextInput,{label:r("common.name"),placeholder:r("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...i})}),s.jsx(b.Controller,{name:`reference_lines.${e}.variable_key`,control:t,render:({field:i})=>s.jsx(o.Select,{label:r("common.value"),required:!0,data:n,sx:{flex:1},...i})})]}),s.jsx(b.Controller,{name:`reference_lines.${e}.template`,control:t,render:({field:i})=>s.jsx(o.TextInput,{label:r("chart.content_template.label"),placeholder:r("chart.content_template.placeholder"),required:!0,sx:{flex:1},...i})})]})}function Xh({control:t,watch:e,variables:n}){const{t:r}=_.useTranslation(),i=()=>({name:"",template:"",variable_key:""}),a=m.useMemo(()=>n.map(c=>({label:c.name,value:c.name})),[n]),l=(c,u)=>{const d=c.name.trim();return d||u+1};return s.jsx(ce,{control:t,watch:e,name:"reference_lines",getItem:i,addButtonText:r("chart.reference_line.add"),deleteButtonText:r("chart.reference_line.delete"),renderTabName:l,children:({field:c,index:u})=>s.jsx(Jh,{control:t,index:u,variableOptions:a})})}const Zh=({control:t,index:e})=>{const{t:n}=_.useTranslation();return s.jsx(o.Stack,{children:s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:`tooltip.metrics.${e}.name`,control:t,render:({field:r})=>s.jsx(o.TextInput,{label:n("common.name"),required:!0,sx:{flex:1},...r})}),s.jsx(b.Controller,{name:`tooltip.metrics.${e}.data_key`,control:t,render:({field:r})=>s.jsx(q,{label:n("chart.data_field"),required:!0,sx:{flex:1},...r})})]})})},Hh=({control:t,watch:e})=>{const{t:n}=_.useTranslation(),r=()=>({id:Date.now().toString(),data_key:"",name:""}),i=(a,l)=>{const c=a.name.trim();return c||l+1};return s.jsxs(s.Fragment,{children:[s.jsxs(o.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[s.jsx(B.InfoCircle,{size:14,color:"#888"}),s.jsx(o.Text,{size:14,color:"#888",children:n("chart.tooltip.additional_metrics.description")})]}),s.jsx(ce,{control:t,watch:e,name:"tooltip.metrics",getItem:r,addButtonText:n("chart.tooltip.additional_metrics.add"),deleteButtonText:n("chart.tooltip.additional_metrics.delete"),renderTabName:i,children:({field:a,index:l})=>s.jsx(Zh,{control:t,index:l})})]})};function em({control:t,watch:e}){return s.jsx(o.Stack,{children:s.jsx(Hh,{control:t,watch:e})})}const gt=m.forwardRef(({label:t,value:e,onChange:n,sx:r={}},i)=>{const{t:a}=_.useTranslation();return s.jsx(o.NumberInput,{ref:i,label:t??a("chart.rotate"),hideControls:!0,min:-90,max:90,rightSection:s.jsx(o.Text,{size:"xs",color:"dimmed",children:a("chart.degree")}),sx:r,styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},value:e,onChange:n})}),tm=({control:t,watch:e})=>{const{t:n}=_.useTranslation();return e(["x_axis"]),s.jsxs(o.Stack,{children:[s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.name",control:t,render:({field:r})=>s.jsx(o.TextInput,{label:n("chart.x_axis.x_axis_name"),sx:{flex:1},...r})}),s.jsx(b.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>s.jsx(q,{label:n("chart.x_axis.x_axis_data_field"),required:!0,sx:{flex:1},...r})})]}),s.jsx(o.Divider,{mb:-15,label:n("chart.axis.tick_label"),labelPosition:"center"}),s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>s.jsx(gt,{sx:{width:"48%"},...r})}),s.jsx(b.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>s.jsx(He,{...r})})]}),s.jsx(b.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>s.jsx(et,{...r})})]})},Ys={root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}},nm=["123456789","1234","1234.56789","1.234","0.123456789","-0.123456789"];function sm({format:t}){const{t:e}=_.useTranslation(),[n,{toggle:r}]=ie.useDisclosure(!1);return s.jsxs(o.Box,{children:[s.jsx(o.Button,{variant:"subtle",w:"100%",compact:!0,onClick:r,leftIcon:n?s.jsx(k.IconChevronUp,{size:14}):s.jsx(k.IconChevronDown,{size:14}),children:e(n?"numbro.format.preview.close":"numbro.format.preview.open")}),s.jsx(o.Collapse,{in:n,children:n&&s.jsxs(o.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:e("numbro.format.preview.input")}),s.jsx("th",{children:e("numbro.format.preview.output")})]})}),s.jsx("tbody",{children:nm.map(i=>s.jsxs("tr",{children:[s.jsx("td",{children:i}),s.jsx("td",{children:s.jsx(Ce,{children:U(i,t)})})]},i))})]})})]})}function rm({value:t,onChange:e},n){const{t:r}=_.useTranslation(),i=d=>{e({...t,output:d})},a=d=>{const p=d===0?!1:t.trimMantissa;e({...t,mantissa:d,trimMantissa:p})},l=d=>{e({...t,trimMantissa:d.currentTarget.checked})},c=d=>{e({...t,average:d.currentTarget.checked})},u=d=>{const p={...t,absolute:d.currentTarget.checked};e(p)};return s.jsxs(o.Stack,{ref:n,children:[s.jsxs(o.Group,{grow:!0,children:[s.jsx(o.Select,{label:r("numbro.format.label"),data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:i,sx:{flexGrow:1}}),s.jsx(o.Switch,{label:s.jsxs(o.Stack,{spacing:0,children:[s.jsx(o.Text,{children:r("numbro.format.absolute")}),s.jsx(o.Text,{size:12,color:"gray",children:r("numbro.format.absolute_description")})]}),checked:t.absolute,onChange:u,sx:{flexGrow:1},styles:Ys}),s.jsx(o.Switch,{label:s.jsxs(o.Stack,{spacing:0,children:[s.jsx(o.Text,{children:r("numbro.format.abbreviation")}),s.jsx(o.Text,{size:12,color:"gray",children:r("numbro.format.abbreviation_description")})]}),checked:t.average,onChange:c,disabled:t.output!=="number",sx:{flexGrow:1},styles:Ys})]}),s.jsxs(o.Group,{grow:!0,children:[s.jsx(o.NumberInput,{label:r("numbro.format.mantissa"),defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:a}),s.jsx(o.Switch,{label:s.jsxs(o.Stack,{spacing:0,children:[s.jsx(o.Text,{children:r("numbro.format.trim_mantissa")}),s.jsx(o.Text,{size:12,color:"gray",children:r("numbro.format.trim_mantissa_description")})]}),checked:t.trimMantissa,onChange:l,disabled:t.mantissa===0,styles:Ys}),s.jsx(o.Box,{})]}),s.jsx(sm,{format:t})]})}const Re=m.forwardRef(rm),im=({control:t,watch:e})=>{const{t:n}=_.useTranslation();return e(["y_axis"]),s.jsxs(s.Fragment,{children:[s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(b.Controller,{name:"y_axis.name",control:t,render:({field:r})=>s.jsx(o.TextInput,{label:n("chart.y_axis.y_axis_name"),sx:{flex:1},...r})}),s.jsx(b.Controller,{name:"y_axis.data_key",control:t,render:({field:r})=>s.jsx(q,{label:n("chart.y_axis.y_axis_data_field"),required:!0,sx:{flex:1},...r})})]}),s.jsxs(o.Stack,{children:[s.jsx(o.Divider,{mt:10,mb:-15,variant:"dashed",label:n("chart.axis.section_title.label_format"),labelPosition:"center"}),s.jsx(b.Controller,{name:"y_axis.label_formatter",control:t,render:({field:r})=>s.jsx(Re,{...r})})]})]})};function am({context:t}){const{t:e}=_.useTranslation(),{value:n,set:r}=O(t.instanceData,"config"),{variables:i}=t,a=m.useMemo(()=>x.defaults({},n,Gs),[n]),{control:l,handleSubmit:c,watch:u,getValues:d,reset:p}=b.useForm({defaultValues:a});m.useEffect(()=>{p(a)},[a]),u(["x_axis","y_axis","reference_lines","color","dataZoom"]);const h=d(),f=m.useMemo(()=>!x.isEqual(h,n),[h,n]);return s.jsx(o.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:c(r),children:[s.jsx(fe,{canSubmit:f}),s.jsxs(o.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[s.jsxs(o.Tabs.List,{children:[s.jsx(o.Tabs.Tab,{value:"X Axis",children:e("chart.x_axis.label")}),s.jsx(o.Tabs.Tab,{value:"Y Axis",children:e("chart.y_axis.label")}),s.jsx(o.Tabs.Tab,{value:"Legend",children:e("chart.legend.label")}),s.jsx(o.Tabs.Tab,{value:"Tooltip",children:e("chart.tooltip.label")}),s.jsx(o.Tabs.Tab,{value:"Style",children:e("chart.style.label")}),s.jsx(o.Tabs.Tab,{value:"Reference Lines",children:e("chart.reference_line.labels")}),s.jsx(o.Tabs.Tab,{value:"Zooming",children:e("chart.zooming.label")})]}),s.jsx(o.Tabs.Panel,{value:"X Axis",children:s.jsx(tm,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Y Axis",children:s.jsx(im,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Legend",children:s.jsx(Kh,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Tooltip",children:s.jsx(em,{control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Style",children:s.jsxs(o.Stack,{spacing:4,children:[s.jsx(o.Text,{size:"sm",children:e("chart.color.label")}),s.jsx(b.Controller,{name:"color",control:l,render:({field:y})=>s.jsx(De,{...y})})]})}),s.jsx(o.Tabs.Panel,{value:"Reference Lines",children:s.jsx(Xh,{variables:i,control:l,watch:u})}),s.jsx(o.Tabs.Panel,{value:"Zooming",children:s.jsx(b.Controller,{name:"dataZoom",control:l,render:({field:y})=>s.jsx(qn,{...y})})})]})]})})}function om(t){return x.omit(t,"variables")}function lm(t){const{label_formatter:e=_e,...n}=t.y_axis;return{...t,y_axis:{...n,label_formatter:e}}}function cm(t){const e={rotate:0,formatter:Se()},{axisLabel:n=e,...r}=t.x_axis;return{...t,x_axis:{...r,axisLabel:n}}}function um(t){const e={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return x.defaultsDeep(e,t)}function dm(t){delete t.config;const{x_axis:e,tooltip:n}=t.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:e,in_tooltip:n}}}};return x.defaultsDeep(r,t)}function pm(t){const e={tooltip:{metrics:[]}};return x.defaultsDeep(e,t)}function hm(t,{panelModel:e}){try{const n=e.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=u=>u&&`${n}.${u}`,{x_axis:i,y_axis:a,tooltip:l,...c}=t;return{...c,x_axis:{...i,data_key:r(i.data_key)},y_axis:{...a,data_key:r(a.data_key)},tooltip:{...l,metrics:l.metrics.map(u=>({...u,data_key:r(u.data_key)}))}}}catch(n){throw console.error("[Migration failed]",n),n}}function mm(t){const e={legend:{show:!0,top:"0",right:"10",left:"auto",bottom:"auto",orient:"horizontal",type:"scroll"}};return x.defaultsDeep(e,t)}function gm(t){const{dataZoom:e,...n}=t;return{...n,dataZoom:e??Ba()}}class fm extends le{constructor(){super(...arguments);$(this,"VERSION",9)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,{panelModel:r})=>{const{config:i}=n;return(i.variables||[]).forEach(l=>{r.variables.find(c=>c.name===l.name)||r.addVariable(l)}),{...n,version:2,config:om(i)}}),this.version(3,n=>{const{config:r}=n;return{...n,version:3,config:lm(r)}}),this.version(4,n=>{const{config:r}=n;return{...n,version:4,config:cm(r)}}),this.version(5,n=>{const{config:r}=n;return{...n,version:5,config:um(r)}}),this.version(6,n=>{const{config:r}=n;return{...n,version:6,config:dm(r)}}),this.version(7,n=>{const{config:r}=n;return{...n,version:7,config:pm(r)}}),this.version(8,(n,r)=>{const{config:i}=n;return{...n,version:8,config:hm(i,r)}}),this.version(9,n=>{const{config:r}=n;return{...n,version:9,config:mm(r)}}),this.version(10,n=>{const{config:r}=n;return{...n,version:10,config:gm(r)}})}}const xm={displayName:"viz.boxplot.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new fm,name:"boxplot",viewRender:Lh,configRender:am,createConfig(){return{version:10,config:x.cloneDeep(Gs)}},triggers:[La],translation:vp},Ua={id:"builtin:button:click-button",displayName:"viz.button.click.label",nameRender:bm,configRender:ym,payload:[]};function ym(t){return s.jsx(s.Fragment,{})}function bm(t){const{t:e}=_.useTranslation();return s.jsx(o.Text,{children:e("viz.button.click.label")})}const Ks={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},vm={left:"flex-start",center:"center",right:"flex-end"},_m={top:"flex-start",center:"center",bottom:"flex-end"},jm=S.observer(({context:t,instance:e})=>{const n=Oe({vizManager:t.vizManager,instance:e}),r=qe(n.triggerManager,Ua.id),i=he(),{value:a}=O(t.instanceData,"config"),l=m.useMemo(()=>x.defaultsDeep({},a,Ks),[a]),{content:c,horizontal_align:u,vertical_align:d,...p}=l,{width:h,height:f}=t.viewport,y=i.payloadForSQL,v=()=>{r.forEach(w=>{n.runInteraction(w.id,{})})};return s.jsx(o.Center,{sx:{width:h,height:f,justifyContent:vm[u],alignItems:_m[d]},children:s.jsx(o.Button,{...p,onClick:v,children:x.template(c)(y)})})}),wm=({value:t,onChange:e,label:n})=>{const r=o.useMantineTheme(),i=m.useCallback(l=>()=>e(l),[e]),a=l=>t===l;return s.jsxs(o.Stack,{spacing:2,children:[s.jsx(o.Text,{size:14,sx:{fontWeight:500},children:n}),s.jsx(o.Group,{position:"left",spacing:"xs",children:Object.keys(r.colors).map(l=>{const c=r.colors[l][6];return s.jsx(o.ColorSwatch,{color:c,onClick:i(l),radius:4,size:26,sx:{cursor:"pointer"},children:a(l)&&s.jsx(o.CheckIcon,{width:10,color:"white"})},l)})})]})},Js=m.forwardRef(({label:t,value:e,onChange:n,sx:r,disabled:i},a)=>{const{t:l}=_.useTranslation(),c=m.useMemo(()=>o.MANTINE_SIZES.map(u=>({label:l(`style.size.${u}`),value:u})),[]);return s.jsx(o.Select,{ref:a,data:c,label:t,value:e,onChange:n,sx:r,disabled:!0})}),Cm=[{label:"Filled",value:"filled"},{label:"Outline",value:"outline"},{label:"Light",value:"light"},{label:"White",value:"white"},{label:"Default",value:"default"},{label:"Subtle",value:"subtle"},{label:"Gradient",value:"gradient",disabled:!0}];function Sm({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=m.useMemo(()=>x.defaultsDeep({},e,Ks),[e]),i=r;m.useEffect(()=>{!x.isEqual(r,i)&&(console.log("config malformed, resetting to defaults",r,i),n(i))},[r,i]);const{control:a,handleSubmit:l,watch:c,getValues:u,reset:d}=b.useForm({defaultValues:i});m.useEffect(()=>{d(i)},[i]);const p=u(),h=m.useMemo(()=>!x.isEqual(p,r),[p,r]);return c(["content","variant","color","size","compact","horizontal_align","vertical_align"]),s.jsxs("form",{onSubmit:l(n),children:[s.jsx(fe,{canSubmit:h}),s.jsxs(o.Stack,{children:[s.jsx(b.Controller,{control:a,name:"content",render:({field:f})=>s.jsx(o.TextInput,{label:"Content Template",description:"Filter values & context entries are supported",...f,required:!0})}),s.jsx(o.Divider,{mt:"xs",mb:0,label:"Styles",labelPosition:"center",variant:"dashed"}),s.jsxs(o.SimpleGrid,{cols:2,children:[s.jsx(b.Controller,{control:a,name:"variant",render:({field:f})=>s.jsx(o.Select,{label:"Variant",data:Cm,...f})}),s.jsx(b.Controller,{control:a,name:"color",render:({field:f})=>s.jsx(wm,{label:"Theme",...f})})]}),s.jsxs(o.SimpleGrid,{cols:2,children:[s.jsx(b.Controller,{control:a,name:"size",render:({field:f})=>s.jsx(Js,{label:"Size",...f})}),s.jsx(b.Controller,{control:a,name:"compact",render:({field:f})=>s.jsx(o.Checkbox,{label:"Compact",checked:f.value,onChange:y=>f.onChange(y.currentTarget.checked),mt:26})})]}),s.jsxs(o.SimpleGrid,{cols:2,children:[s.jsx(b.Controller,{control:a,name:"horizontal_align",render:({field:f})=>s.jsx(Ln,{...f})}),s.jsx(b.Controller,{control:a,name:"vertical_align",render:({field:f})=>s.jsx(Wa,{...f})})]})]})]})}const km=[{lang:"en",resources:{button:{viz_name:"Button",click:{label:"Click this button"}}}},{lang:"zh",resources:{button:{viz_name:"按钮",click:{label:"点击此按钮"}}}}];class Tm extends le{constructor(){super(...arguments);$(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,n=>{const{horizontal_align:r="left",vertical_align:i="center",...a}=n.config;return{...n,version:2,config:{...a,horizontal_align:r,vertical_align:i}}})}}const Dm={displayName:"viz.button.viz_name",displayGroup:"chart.groups.others",migrator:new Tm,name:"button",viewRender:jm,configRender:Sm,createConfig(){return{version:2,config:x.cloneDeep(Ks)}},triggers:[Ua],translation:km},Xs={id:"builtin:echarts:click-echart:series",displayName:"viz.cartesian_chart.click_series.label",nameRender:Mm,configRender:zm,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",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"}]};function zm(t){return s.jsx(s.Fragment,{})}function Mm(t){const{t:e}=_.useTranslation();return s.jsx(o.Text,{children:e("viz.cartesian_chart.click_series.label")})}const Zs={regressions:[],series:[],stats:{templates:{bottom:"",top:""}},x_axis:{type:"category",axisLabel:{rotate:0,formatter:Se(),overflow:Pe()}},tooltip:{metrics:[]},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:_e}],reference_lines:[],reference_areas:[],dataZoom:Dt};function Im(t){const e=t.y_axes.some(i=>!!i.name);let n=15;e&&(n+=20),t.dataZoom.x_axis_slider&&(n+=20);let r=5;return t.x_axis_name&&(r+=15),t.series.some(i=>!i.hide_in_legend)&&(r+=20),{top:n,right:15,bottom:r,left:20,containLabel:!0}}function Em(t){return t!=="line"?{}:{itemStyle:{opacity:0}}}function Am(t){switch(t){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function Pm(t){const e={show:!0,bottom:0,left:"center",type:"scroll"};return e.data=t.filter(n=>!n.hide_in_legend).map(({name:n,type:r})=>({name:n,icon:Am(r),...Em(r)})),e}function On(t,e){switch(t.config.method){case"linear":return[...jt.regressionLinear()(e)];case"exponential":return[...jt.regressionExp()(e)];case"logistic":return[...jt.regressionLog()(e)];case"polynomial":return[...jt.regressionPoly().order(t.config.order)(e)];default:return[]}}function $m(t,e,n,r){const{transform:i,plot:a}=t,l={...a,name:e,data:On(i,r),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return n&&(l.custom={type:"regression-line",targetSeries:n}),l}function Bm({regressions:t=[],x_axis_data_key:e},n){const r=[];if(Object.keys(n).length===0)return r;function i(a,l,c,u){const d=$m(a,l,c,u);r.push(d)}return t.forEach(a=>{const{name:l,group_by_key:c}=a;if(!c||c===e){const h=at(n,a.y_axis_data_key).map((f,y)=>[y,Number(f)]);i(a,l,"",h);return}const{columnKey:u}=E(a.y_axis_data_key),d=x.groupBy(Tn(n,a.y_axis_data_key),c);Object.entries(d).forEach(([p,h])=>{const f=h.map((v,w)=>[w,Number(v[u])]);i(a,p,p,f)})}),r}function Lm(t,e){return t.map(n=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:n.color},data:[[{yAxis:e[n.y_keys.upper]},{yAxis:e[n.y_keys.lower]}]],silent:!0}}))}function qm(t,e,n,r){return e?r==="value"?[[n[0],t]]:[t]:[]}function Om(t,e,n,r,i,a){return t.map(l=>{const c=n[l.variable_key],u=l.orientation==="horizontal",d=u?"yAxis":"xAxis",p=u?"insideEndTop":"end",h=qm(c,u,i,a);return{name:l.name,type:"scatter",hide_in_legend:!l.show_in_legend,xAxisId:"main-x-axis",yAxisIndex:l.yAxisIndex,data:h,symbol:"none",silent:!0,tooltip:{show:!1},markLine:{data:[{name:l.name,[d]:c}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?Mn(l.template,e,r):""},position:p}}}})}function Hs(t,e,n){const r=at(t,e),i=at(t,n);return x.zip(r,i)}function Vm(t,e,n,r){const i=Hs(e,n,r);return x.unionBy(i,t,0)}function Nm({dataTemplate:t,data:e,x_axis_data_key:n,y_axis_data_key:r,valueTypedXAxis:i}){return i?Vm(t,e,n,r):at(e,r)}function Gm({dataTemplate:t,data:e,aggregation_on_value:n,x_axis_data_key:r,y_axis_data_key:i,valueTypedXAxis:a}){if(!n||n.type==="none")return Nm({dataTemplate:t,data:e,x_axis_data_key:r,y_axis_data_key:i,valueTypedXAxis:a});const l=Hs(e,r,i),c=x.groupBy(l,"0");return t.map(([d])=>{const h=c[d].map(y=>y[1]),f=zs(h,n);return[d,f]})}function Fm({group_by_key:t,data:e,x_axis_data_key:n,y_axis_data_key:r}){const{queryID:i,columnKey:a}=E(t),l=x.groupBy(e[i],a);return Object.entries(l).forEach(([c,u])=>{l[c]=Hs({[i]:u},n,r)}),l}function Wm({type:t,...e},n,r,i){if(!t)return 10;if(t==="static"){const{size:d}=e;return d}const{func_content:a}=e,{queryID:l,columnKey:c}=E(r),u=x.keyBy(Tn(n,l),c);return(d,p)=>{let h;p.name?h=u[p.name]:h=n[p.dataIndex];try{return new Function(`return ${a}`)()({rowData:h,params:p,variables:i},{lodash:x,interpolate:kt.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function Qm({x_axis_data_key:t,x_axis:e},{y_axis_data_key:n,yAxisIndex:r,label_position:i,name:a,group_by_key:l,aggregation_on_value:c,stack:u,color:d,display_name_on_line:p,symbolSize:h,hide_in_legend:f,...y},v,w,T,D){const I=e.type!=="category",A={label:{show:!!i,position:i,formatter:D[r??"default"]},name:a,xAxisId:"main-x-axis",yAxisIndex:r,stack:u,color:d,symbolSize:Wm(h,w,t,T),hide_in_legend:f,labelLayout:{hideOverlap:!0},...y};if(y.type==="line"&&(A.lineStyle={shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:3}),p&&(A.endLabel={show:!0,formatter:a,offset:[-12,12],align:"right"}),!l||l===t)return A.data=Gm({dataTemplate:v,data:w,aggregation_on_value:c,x_axis_data_key:t,y_axis_data_key:n,valueTypedXAxis:I}),A;const N=Fm({group_by_key:l,data:w,x_axis_data_key:t,y_axis_data_key:n});return Object.entries(N).map(([R,F])=>{const Q=x.cloneDeep(A);return Q.name=R,Q.color=void 0,Q.data=F,Q})}function Rm(t,e,n,r,i,a){const l=e.map(u=>[u,0]);return t.series.map(u=>Qm(t,u,l,n,a,r)).flat().concat(Om(t.reference_lines,i,a,n,e,t.x_axis.type)).concat(Lm(t.reference_areas,a))}function Um(t,e){const n=t.find(a=>a.axisDim==="x"&&a.axisId==="main-x-axis");if(!n)return"";const{axisValue:r,axisIndex:i}=n;return Ae(e.x_axis.axisLabel.formatter)(r,i)}const Ym=t=>U(t,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function Km(t,e,n,r){const i=n.reduce((a,{yAxisIndex:l,name:c})=>(a[c]=l,a),{});return te.getTooltip({trigger:"axis",formatter:function(a){const l=Array.isArray(a)?a:[a];if(l.length===0)return"";const c=l.map(({seriesName:h,marker:f,value:y})=>{if(Array.isArray(y)&&y.length===2&&(y=y[1]),!h)return y;const v=i[h],w=r[v]??r.default;return`
|
|
109
109
|
<tr>
|
|
110
110
|
<td>${f}</td>
|
|
111
111
|
<th style="text-align: right; padding: 0 1em;">${h}</th>
|