@devtable/dashboard 1.31.0 → 1.32.0
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 +485 -2015
- package/dist/dashboard.umd.js +9 -9
- package/package.json +2 -1
package/dist/dashboard.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(y,T){typeof exports=="object"&&typeof module!="undefined"?T(exports,require("react"),require("lodash"),require("react-grid-layout"),require("@mantine/core"),require("ahooks"),require("axios"),require("@mantine/modals"),require("tabler-icons-react"),require("@mantine/rte"),require("@mantine/hooks"),require("echarts-for-react/lib/core"),require("echarts/core"),require("echarts/charts"),require("echarts/renderers"),require("echarts-stat"),require("echarts/components"),require("numbro"),require("echarts-gl"),require("react-hook-form"),require("@mantine/form"),require("@mantine/prism")):typeof define=="function"&&define.amd?define(["exports","react","lodash","react-grid-layout","@mantine/core","ahooks","axios","@mantine/modals","tabler-icons-react","@mantine/rte","@mantine/hooks","echarts-for-react/lib/core","echarts/core","echarts/charts","echarts/renderers","echarts-stat","echarts/components","numbro","echarts-gl","react-hook-form","@mantine/form","@mantine/prism"],T):(y=typeof globalThis!="undefined"?globalThis:y||self,T(y.dashboard={},y.React,y._,y["react-grid-layout"],y["@mantine/core"],y.ahooks,y.axios,y["@mantine/modals"],y["tabler-icons-react"],y["@mantine/rte"],y["@mantine/hooks"],y["echarts-for-react/lib/core"],y["echarts/core"],y["echarts/charts"],y["echarts/renderers"],y["echarts-stat"],y["echarts/components"],y.numbro,y["echarts-gl"],y["react-hook-form"],y["@mantine/form"],y["@mantine/prism"]))})(this,function(y,T,N,fe,i,me,St,he,b,qe,G,Ct,vt,J,ee,wt,j,Tt,ui,S,k,z){"use strict";var ai=Object.defineProperty;var si=(y,T,N)=>T in y?ai(y,T,{enumerable:!0,configurable:!0,writable:!0,value:N}):y[T]=N;var yt=(y,T,N)=>(si(y,typeof T!="symbol"?T+"":T,N),N);function W(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}function Gt(e){if(e&&e.__esModule)return e;var n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});return e&&Object.keys(e).forEach(function(r){if(r!=="default"){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}}),n.default=e,Object.freeze(n)}var d=W(T),C=W(N),Oe=W(fe),_t=W(St),xe=W(qe),te=W(Ct),E=Gt(vt),Y=W(Tt),I=(e=>(e.Use="use",e.Layout="layout",e.Edit="edit",e))(I||{});const Pt={layoutFrozen:!1,freezeLayout:()=>{},mode:I.Edit,inEditMode:!1,inLayoutMode:!1,inUseMode:!0},F=d.default.createContext(Pt);function zt(e,n){const r=Object.keys(n),o=Object.values(n);try{return new Function(...r,`return \`${e}\`;`)(...o)}catch(l){return console.error(l),l.message}}function ge(e,n){const r=Object.keys(n),o=Object.values(n);try{return new Function(...r,`return \`${e}\`;`)(...o)}catch(l){throw r.length===0&&e.includes("$")?new Error("[formatSQL] insufficient params"):l}}function ke(e,n){const r=n.sqlSnippets.reduce((o,l)=>(o[l.key]=ge(l.value,e),o),{});return C.default.merge({},r,e)}function It(e,n,r){try{const o=ke(n,r);return ge(e,o)}catch(o){return console.error(o),o.message}}const U={baseURL:"http://localhost:31200",getRequest(e){return(n,r,o={})=>{const l={"X-Requested-With":"XMLHttpRequest","Content-Type":o.string?"application/x-www-form-urlencoded":"application/json",...o.headers},a={baseURL:this.baseURL,method:e,url:n,params:e==="GET"?r:o.params,headers:l};return e==="POST"&&(a.data=o.string?JSON.stringify(r):r),_t.default(a).then(u=>u.data).catch(u=>Promise.reject(u))}}},Ee=({context:e,definitions:n,title:r,query:o})=>async()=>{if(!o||!o.sql)return[];const{type:l,key:a,sql:u}=o,s=u.includes("$");try{const p=ke(e,n),m=ge(u,p);return s&&(console.groupCollapsed(`Final SQL for: ${r}`),console.log(m),console.groupEnd()),await U.getRequest("POST")("/query",{type:l,key:a,query:m})}catch(p){return console.error(p),[]}};async function At(){try{return await U.getRequest("POST")("/datasource/list",{})}catch(e){return console.error(e),{}}}const Fe={},Dt=Fe,$=d.default.createContext(Fe),Mt={id:"",data:[],loading:!1,title:"",setTitle:()=>{},description:"",setDescription:()=>{},queryID:"",setQueryID:()=>{},viz:{type:"",conf:{}},setViz:()=>{},refreshData:()=>{}},A=d.default.createContext(Mt),Lt={addPanel:C.default.noop,duplidatePanel:C.default.noop,removePanelByID:C.default.noop,viewPanelInFullScreen:C.default.noop,inFullScreen:!1},ne=d.default.createContext(Lt),qt={sqlSnippets:[],setSQLSnippets:()=>{},queries:[],setQueries:()=>{}},D=d.default.createContext(qt);var re={exports:{}},ie={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.min.js
|
|
4
4
|
*
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var qn=x.default,$n=Symbol.for("react.element"),Vn=Symbol.for("react.fragment"),Wn=Object.prototype.hasOwnProperty,Un=qn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,kn={key:!0,ref:!0,__self:!0,__source:!0};function Pt(e,r,n){var o,i={},l=null,u=null;n!==void 0&&(l=""+n),r.key!==void 0&&(l=""+r.key),r.ref!==void 0&&(u=r.ref);for(o in r)Wn.call(r,o)&&!kn.hasOwnProperty(o)&&(i[o]=r[o]);if(e&&e.defaultProps)for(o in r=e.defaultProps,r)i[o]===void 0&&(i[o]=r[o]);return{$$typeof:$n,type:e,key:l,ref:u,props:i,_owner:Un.current}}Oe.Fragment=Vn,Oe.jsx=Pt,Oe.jsxs=Pt,Le.exports=Oe;const t=Le.exports.jsx,v=Le.exports.jsxs,me=Le.exports.Fragment;var Qn=Object.defineProperty,jn=Object.defineProperties,Kn=Object.getOwnPropertyDescriptors,Ne=Object.getOwnPropertySymbols,Et=Object.prototype.hasOwnProperty,Mt=Object.prototype.propertyIsEnumerable,At=(e,r,n)=>r in e?Qn(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n,_e=(e,r)=>{for(var n in r||(r={}))Et.call(r,n)&&At(e,n,r[n]);if(Ne)for(var n of Ne(r))Mt.call(r,n)&&At(e,n,r[n]);return e},It=(e,r)=>jn(e,Kn(r)),Je=(e,r)=>{var n={};for(var o in e)Et.call(e,o)&&r.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&Ne)for(var o of Ne(e))r.indexOf(o)<0&&Mt.call(e,o)&&(n[o]=e[o]);return n};function Yn(e){if(!e)return{confirmProps:{},modalProps:{}};const r=e,{id:n,children:o,onCancel:i,onConfirm:l,closeOnConfirm:u,closeOnCancel:s,cancelProps:d,confirmProps:p,groupProps:f,labels:c}=r,g=Je(r,["id","children","onCancel","onConfirm","closeOnConfirm","closeOnCancel","cancelProps","confirmProps","groupProps","labels"]);return{confirmProps:{id:n,children:o,onCancel:i,onConfirm:l,closeOnConfirm:u,closeOnCancel:s,cancelProps:d,confirmProps:p,groupProps:f,labels:c},modalProps:_e({id:n},g)}}function Gt({children:e,modalProps:r,labels:n,modals:o}){const[i,l]=W.useReducer(Bn,{modals:[],current:null}),u=h=>{i.modals.forEach(b=>{var y,w,T,P;b.type==="confirm"&&h&&((w=(y=b.props)==null?void 0:y.onCancel)==null||w.call(y)),(P=(T=b.props)==null?void 0:T.onClose)==null||P.call(T)}),l({type:"CLOSE_ALL"})},s=h=>{const b=h.id||H.randomId();return l({type:"OPEN",payload:{id:b,type:"content",props:h}}),b},d=h=>{const b=h.id||H.randomId();return l({type:"OPEN",payload:{id:b,type:"confirm",props:h}}),b},p=(h,b)=>{const y=b.id||H.randomId();return l({type:"OPEN",payload:{id:y,type:"context",props:b,ctx:h}}),y},f=(h,b)=>{var y,w,T,P;if(i.modals.length<=1){u(b);return}const D=i.modals.find(E=>E.id===h);(D==null?void 0:D.type)==="confirm"&&b&&((w=(y=D.props)==null?void 0:y.onCancel)==null||w.call(y)),(P=(T=D==null?void 0:D.props)==null?void 0:T.onClose)==null||P.call(T),l({type:"CLOSE",payload:D.id})},c={modals:i.modals,openModal:s,openConfirmModal:d,openContextModal:p,closeModal:f,closeAll:u},g=()=>{var h;switch((h=i.current)==null?void 0:h.type){case"context":{const b=i.current.props,{innerProps:y}=b,w=Je(b,["innerProps"]),T=o[i.current.ctx];return{modalProps:w,content:t(T,{innerProps:y,context:c,id:i.current.id})}}case"confirm":{const{modalProps:b,confirmProps:y}=Yn(i.current.props);return{modalProps:b,content:t(Fn,S({},It(_e({},y),{id:i.current.id,labels:i.current.props.labels||n})))}}case"content":{const b=i.current.props,{children:y}=b;return{modalProps:Je(b,["children"]),content:t(me,{children:y})}}default:return{modalProps:{},content:null}}},{modalProps:m,content:C}=g();return v(Ye.Provider,{value:c,children:[t(a.Modal,Q(S({},It(_e(_e({},r),m),{opened:i.modals.length>0,onClose:()=>f(i.current.id)})),{children:C})),e]})}const Xn={addPanel:V.default.noop,duplidatePanel:V.default.noop,removePanelByID:V.default.noop,viewPanelInFullScreen:V.default.noop,inFullScreen:!1},Fe=x.default.createContext(Xn),Jn={sqlSnippets:[],setSQLSnippets:()=>{},queries:[],setQueries:()=>{}},se=x.default.createContext(Jn);function zt({position:e="bottom",trigger:r="hover"}){const{freezeLayout:n}=x.default.useContext(fe),[o,i]=x.default.useState(!1),{description:l}=x.default.useContext(le);if(x.default.useEffect(()=>{n(o)},[o]),!l||l==="<p><br></p>")return null;const u=r==="click"?t(a.Tooltip,{label:"Click to see description",openDelay:500,children:t(F.InfoCircle,{size:20,onClick:()=>i(s=>!s),style:{verticalAlign:"baseline",cursor:"pointer"}})}):t(F.InfoCircle,{size:20,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{verticalAlign:"baseline",cursor:"pointer"}});return t(a.Popover,{opened:o,onClose:()=>i(!1),withCloseButton:r==="click",withArrow:!0,trapFocus:!0,closeOnEscape:!1,placement:"center",position:e,target:u,width:"40vw",children:t(je.default,{readOnly:!0,value:l,onChange:V.default.noop,sx:{border:"none"}})})}function Zn(){const{description:e,setDescription:r}=x.default.useContext(le),[n,o]=x.default.useState(e),i=e!==n,l=x.default.useCallback(()=>{!i||r(n)},[i,n]);return v(a.Group,{direction:"column",sx:{flexGrow:1},children:[v(a.Group,{align:"end",children:[t(a.Text,{children:"Description"}),t(a.ActionIcon,{variant:"hover",color:"blue",disabled:!i,onClick:l,children:t(F.DeviceFloppy,{size:20})})]}),t(xt.RichTextEditor,{value:n,onChange:o,sx:{flexGrow:1},sticky:!0,p:"0"})]})}class Ze extends x.default.Component{constructor(r){super(r),this.state={error:null}}componentDidCatch(r){this.setState({error:r})}render(){var r;if(this.state.error){const n=()=>{this.setState({error:null})};return v(a.Box,{children:[t(a.Text,{size:"xs",children:(r=this.state.error)==null?void 0:r.message}),t(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function Hn(){const{title:e}=x.default.useContext(le);return t(Ze,{children:v(a.Group,{direction:"column",grow:!0,noWrap:!0,mx:"auto",mt:"xl",p:"5px",spacing:5,sx:{width:"600px",height:"450px",background:"transparent",borderRadius:"5px",boxShadow:"0px 0px 10px 0px rgba(0,0,0,.2)"},children:[v(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[t(a.Group,{children:t(zt,{position:"bottom",trigger:"hover"})}),t(a.Group,{grow:!0,position:"center",children:t(a.Text,{lineClamp:1,weight:"bold",children:e})}),t(a.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),t(a.Group,{sx:{background:"#eee",flexGrow:1}})]})})}function er(){const{title:e,setTitle:r}=x.default.useContext(le),[n,o]=H.useInputState(e),i=e!==n,l=x.default.useCallback(()=>{!i||r(n)},[i,n]);return t(a.TextInput,{value:n,onChange:o,label:v(a.Group,{align:"end",children:[t(a.Text,{children:"Panel Title"}),t(a.ActionIcon,{variant:"hover",color:"blue",disabled:!i,onClick:l,children:t(F.DeviceFloppy,{size:20})})]})})}function tr({}){return v(a.Group,{direction:"row",grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[v(a.Group,{grow:!0,direction:"column",sx:{width:"40%",flexShrink:0,flexGrow:0,height:"100%"},children:[t(er,{}),t(Zn,{})]}),t(a.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:t(Hn,{})})]})}function Lt({id:e}){const r=x.default.useContext(se),n=x.default.useContext(pe),o=x.default.useMemo(()=>r.queries.find(s=>s.id===e),[r.queries,e]),{data:i=[],loading:l,refresh:u}=Qe.useRequest(yt({context:n,definitions:r,title:e,query:o}),{refreshDeps:[n,r,o]});return l?t(a.LoadingOverlay,{visible:l,exitTransitionDuration:0}):i.length===0?t(a.Table,{}):v(a.Group,{my:"xl",direction:"column",grow:!0,sx:{border:"1px solid #eee"},children:[v(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[v(a.Group,{position:"left",children:[t(a.Text,{weight:500,children:"Preview Data"}),i.length>10&&v(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",i.length]})]}),t(a.ActionIcon,{mr:15,variant:"hover",color:"blue",disabled:l,onClick:u,children:t(F.Refresh,{size:15})})]}),v(a.Table,{children:[t("thead",{children:t("tr",{children:Object.keys(i==null?void 0:i[0]).map(s=>t("th",{children:t(a.Text,{weight:700,color:"#000",children:s})},s))})}),t("tbody",{children:i.slice(0,10).map((s,d)=>t("tr",{children:Object.values(s).map((p,f)=>t("td",{children:t(a.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:t(a.Text,{children:p})})},`${p}--${f}`))},`row-${d}`))})]})]})}function nr({}){const{queries:e}=x.default.useContext(se),{queryID:r,setQueryID:n,data:o,loading:i}=x.default.useContext(le),l=x.default.useMemo(()=>e.map(u=>({value:u.id,label:u.id})),[e]);return v(a.Group,{direction:"column",grow:!0,noWrap:!0,children:[v(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[t(a.Text,{children:"Select a Query"}),t(a.Select,{data:l,value:r,onChange:n,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}})]}),t(Lt,{id:r})]})}ce.use([Pe.SunburstChart,Ge.CanvasRenderer]);const rr={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function ir({conf:e,data:r,width:n,height:o}){const c=e,{label_field:i="name",value_field:l="value"}=c,u=Z(c,["label_field","value_field"]),s=x.default.useMemo(()=>r.map(g=>({name:g[i],value:Number(g[l])})),[r,i,l]),d=x.default.useMemo(()=>{var g,m;return(m=(g=V.default.maxBy(s,C=>C.value))==null?void 0:g.value)!=null?m:1},[s]),p=x.default.useMemo(()=>({series:{label:{formatter:({name:g,value:m})=>m/d<.2?" ":g}}}),[d]),f=V.default.merge({},rr,p,u,{series:{data:s}});return t(ze.default,{echarts:ce,option:f,style:{width:n,height:o}})}var Ot={exports:{}};(function(e,r){(function(o,i){e.exports=i()})(Rn,function(){return function(n){var o={};function i(l){if(o[l])return o[l].exports;var u=o[l]={exports:{},id:l,loaded:!1};return n[l].call(u.exports,u,u.exports,i),u.loaded=!0,u.exports}return i.m=n,i.c=o,i.p="",i(0)}([function(n,o,i){var l;l=function(u){return{clustering:i(1),regression:i(5),statistics:i(6),histogram:i(15),transform:{regression:i(18),histogram:i(21),clustering:i(22)}}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(2),d=s.dataPreprocess,p=s.normalizeDimensions,f=i(3),h=i(4),c=f.size,g=f.sumOfColumn,m=f.sum,C=f.zeros,h=i(4),b=h.isNumber,y=Math.pow,w={SINGLE:"single",MULTIPLE:"multiple"};function T(z,O,_){for(var L=C(z.length,2),N=M(O,k(z,_.dimensions)),A=!0,$,q,U,j;A;){A=!1;for(var B=0;B<z.length;B++){$=1/0,q=-1;for(var J=0;J<O;J++)U=I(z[B],N[J],_),U<$&&($=U,q=J);L[B][0]!==q&&(A=!0),L[B][0]=q,L[B][1]=$}for(var B=0;B<O;B++){j=[];for(var J=0;J<L.length;J++)L[J][0]===B&&j.push(z[J]);N[B]=P(j,_)}}var we={centroids:N,clusterAssigned:L};return we}function P(z,O){for(var _=[],L,N,A=0;A<O.dimensions.length;A++){var $=O.dimensions[A];L=0;for(var q=0;q<z.length;q++)L+=z[q][$];N=L/z.length,_.push(N)}return _}function D(z,O,_){var L=(b(O)?{clusterCount:O,stepByStep:_}:O)||{clusterCount:2},N=L.clusterCount;if(N<2)return;var A=Y(z,L),$=A.outputType===w.SINGLE,q=d(z,{dimensions:A.dimensions}),U=C(q.length,2),j,B,J;function we(ee,ge){U[ee][1]=ge}function re(ee){return U[ee][1]}if($){j=[];var pn=A.outputClusterIndexDimension;B=function(ee,ge){j[ee][pn]=ge},J=function(ee){return j[ee][pn]};for(var ue=0;ue<q.length;ue++)j.push(q[ue].slice()),we(ue,0),B(ue,0)}else B=function(ee,ge){U[ee][0]=ge},J=function(ee){return U[ee][0]};for(var mn=P(q,A),Te=[mn],ue=0;ue<q.length;ue++){var po=I(q[ue],mn,A);we(ue,po)}var dt,ct,ft,Ue,pt,mt,hn=1,he={data:j,centroids:Te,isEnd:!1};$||(he.clusterAssment=U);function gn(){if(hn<N){dt=1/0;for(var ee,ge,xe,ie=0;ie<Te.length;ie++){ct=[],ft=[];for(var K=0;K<q.length;K++)J(K)===ie?ct.push(q[K]):ft.push(re(K));Ue=T(ct,2,A),pt=g(Ue.clusterAssigned,1),mt=m(ft),pt+mt<dt&&(dt=mt+pt,ee=ie,ge=Ue.centroids,xe=Ue.clusterAssigned)}for(var K=0;K<xe.length;K++)xe[K][0]===0?xe[K][0]=ee:xe[K][0]===1&&(xe[K][0]=Te.length);Te[ee]=ge[0],Te.push(ge[1]);for(var K=0,ie=0;K<q.length&&ie<xe.length;K++)J(K)===ee&&(B(K,xe[ie][0]),we(K,xe[ie++][1]));var ht=[];if(!$){for(var K=0;K<Te.length;K++){ht[K]=[];for(var ie=0;ie<q.length;ie++)J(ie)===K&&ht[K].push(q[ie])}he.pointsInCluster=ht}hn++}else he.isEnd=!0}if(L.stepByStep)he.next=function(){return gn(),E(he,A),he};else for(;gn(),!he.isEnd;);return E(he,A),he}function E(z,O){var _=O.outputCentroidDimensions;if(!(O.outputType!==w.SINGLE||_==null))for(var L=z.data,N=z.centroids,A=0;A<L.length;A++)for(var $=L[A],q=$[O.outputClusterIndexDimension],U=N[q],j=Math.min(U.length,_.length),B=0;B<j;B++)$[_[B]]=U[B]}function M(z,O){for(var _=C(z,O.length),L=0;L<O.length;L++)for(var N=O[L],A=0;A<z;A++)_[A][L]=N.min+N.span*Math.random();return _}function I(z,O,_){for(var L=0,N=_.dimensions,A=_.rawExtents,$=0;$<N.length;$++){var q=A[$].span;if(q){var U=N[$],j=(z[U]-O[$])/q;L+=y(j,2)}}return L}function Y(z,O){var _=c(z);if(_.length<1)throw new Error("The input data of clustering should be two-dimension array.");for(var L=_[1],N=[],A=0;A<L;A++)N.push(A);var $=p(O.dimensions,N),q=O.outputType||w.MULTIPLE,U=O.outputClusterIndexDimension;if(q===w.SINGLE&&!h.isNumber(U))throw new Error("outputClusterIndexDimension is required as a number.");var j=k(z,$);return{dimensions:$,rawExtents:j,outputType:q,outputClusterIndexDimension:U,outputCentroidDimensions:O.outputCentroidDimensions}}function k(z,O){for(var _=[],L=O.length,N=0;N<L;N++)_.push({min:1/0,max:-1/0});for(var N=0;N<z.length;N++)for(var A=z[N],$=0;$<L;$++){var q=_[$],U=A[O[$]];q.min>U&&(q.min=U),q.max<U&&(q.max=U)}for(var N=0;N<L;N++)_[N].span=_[N].max-_[N].min;return _}return{OutputType:w,hierarchicalKMeans:D}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(3),d=s.isArray,p=s.size,f=i(4),c=f.isNumber;function g(h,b){return typeof h=="number"?[h]:h==null?b:h}function m(h,b){b=b||{};var y=b.dimensions,w={};if(y!=null)for(var T=0;T<y.length;T++)w[y[T]]=!0;var P=b.toOneDimensionArray?y?y[0]:0:null;function D(z){return!y||w.hasOwnProperty(z)}if(!d(h))throw new Error("Invalid data type, you should input an array");var E=[],M=p(h);if(M.length===1)for(var T=0;T<M[0];T++){var I=h[T];c(I)&&E.push(I)}else if(M.length===2)for(var T=0;T<M[0];T++){for(var Y=!0,I=h[T],k=0;k<M[1];k++)D(k)&&!c(I[k])&&(Y=!1);Y&&E.push(P!=null?I[P]:I)}return E}function C(h){var b=h.toString(),y=b.indexOf(".");return y<0?0:b.length-1-y}return{normalizeDimensions:g,dataPreprocess:m,getPrecision:C}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=Object.prototype.toString,d=Array.prototype,p=d.map;function f(w){for(var T=[];c(w);)T.push(w.length),w=w[0];return T}function c(w){return s.call(w)==="[object Array]"}function g(w,T){for(var P=[],D=0;D<w;D++){P[D]=[];for(var E=0;E<T;E++)P[D][E]=0}return P}function m(w){for(var T=0,P=0;P<w.length;P++)T+=w[P];return T}function C(w,T){for(var P=0,D=0;D<w.length;D++)P+=w[D][T];return P}function h(w,T){return w>T?1:w<T?-1:w===T?0:NaN}function b(w,T,P,D){for(P==null&&(P=0),D==null&&(D=w.length);P<D;){var E=Math.floor((P+D)/2),M=h(w[E],T);if(M>0)D=E;else if(M<0)P=E+1;else return E+1}return P}function y(w,T,P){if(!!(w&&T)){if(w.map&&w.map===p)return w.map(T,P);for(var D=[],E=0,M=w.length;E<M;E++)D.push(T.call(P,w[E],E,w));return D}}return{size:f,isArray:c,zeros:g,sum:m,sumOfColumn:C,ascending:h,bisect:b,map:y}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){function s(f){return f=f===null?NaN:+f,typeof f=="number"&&!isNaN(f)}function d(f){return isFinite(f)&&f===Math.round(f)}function p(f){if(f===0)return 0;var c=Math.floor(Math.log(f)/Math.LN10);return f/Math.pow(10,c)>=10&&c++,c}return{isNumber:s,isInteger:d,quantityExponent:p}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(2),d=s.dataPreprocess,p=s.normalizeDimensions,f={linear:function(m,C){for(var h=C.dimensions[0],b=C.dimensions[1],y=0,w=0,T=0,P=0,D=m.length,E=0;E<D;E++){var M=m[E];y+=M[h],w+=M[b],T+=M[h]*M[b],P+=M[h]*M[h]}for(var I=(D*T-y*w)/(D*P-y*y),Y=w/D-I*y/D,k=[],z=0;z<m.length;z++){var M=m[z],O=M.slice();O[h]=M[h],O[b]=I*M[h]+Y,k.push(O)}var _="y = "+Math.round(I*100)/100+"x + "+Math.round(Y*100)/100;return{points:k,parameter:{gradient:I,intercept:Y},expression:_}},linearThroughOrigin:function(m,C){for(var h=C.dimensions[0],b=C.dimensions[1],y=0,w=0,T=0;T<m.length;T++){var P=m[T];y+=P[h]*P[h],w+=P[h]*P[b]}for(var D=w/y,E=[],M=0;M<m.length;M++){var P=m[M],I=P.slice();I[h]=P[h],I[b]=P[h]*D,E.push(I)}var Y="y = "+Math.round(D*100)/100+"x";return{points:E,parameter:{gradient:D},expression:Y}},exponential:function(m,C){for(var h=C.dimensions[0],b=C.dimensions[1],y=0,w=0,T=0,P=0,D=0,E=0,M=0;M<m.length;M++){var I=m[M];y+=I[h],w+=I[b],E+=I[h]*I[b],T+=I[h]*I[h]*I[b],P+=I[b]*Math.log(I[b]),D+=I[h]*I[b]*Math.log(I[b])}for(var Y=w*T-E*E,k=Math.pow(Math.E,(T*P-E*D)/Y),z=(w*D-E*P)/Y,O=[],_=0;_<m.length;_++){var I=m[_],L=I.slice();L[h]=I[h],L[b]=k*Math.pow(Math.E,z*I[h]),O.push(L)}var N="y = "+Math.round(k*100)/100+"e^("+Math.round(z*100)/100+"x)";return{points:O,parameter:{coefficient:k,index:z},expression:N}},logarithmic:function(m,C){for(var h=C.dimensions[0],b=C.dimensions[1],y=0,w=0,T=0,P=0,D=0;D<m.length;D++){var E=m[D];y+=Math.log(E[h]),w+=E[b]*Math.log(E[h]),T+=E[b],P+=Math.pow(Math.log(E[h]),2)}for(var M=(D*w-T*y)/(D*P-y*y),I=(T-M*y)/D,Y=[],k=0;k<m.length;k++){var E=m[k],z=E.slice();z[h]=E[h],z[b]=M*Math.log(E[h])+I,Y.push(z)}var O="y = "+Math.round(I*100)/100+" + "+Math.round(M*100)/100+"ln(x)";return{points:Y,parameter:{gradient:M,intercept:I},expression:O}},polynomial:function(m,C){var h=C.dimensions[0],b=C.dimensions[1],y=C.order;y==null&&(y=2);for(var w=[],T=[],P=y+1,D=0;D<P;D++){for(var E=0,M=0;M<m.length;M++){var I=m[M];E+=I[b]*Math.pow(I[h],D)}T.push(E);for(var Y=[],k=0;k<P;k++){for(var z=0,O=0;O<m.length;O++)z+=Math.pow(m[O][h],D+k);Y.push(z)}w.push(Y)}w.push(T);for(var _=c(w,P),L=[],D=0;D<m.length;D++){for(var N=0,I=m[D],M=0;M<_.length;M++)N+=_[M]*Math.pow(I[h],M);var A=I.slice();A[h]=I[h],A[b]=N,L.push(A)}for(var $="y = ",D=_.length-1;D>=0;D--)D>1?$+=Math.round(_[D]*Math.pow(10,D+1))/Math.pow(10,D+1)+"x^"+D+" + ":D===1?$+=Math.round(_[D]*100)/100+"x + ":$+=Math.round(_[D]*100)/100;return{points:L,parameter:_,expression:$}}};function c(m,C){for(var h=0;h<m.length-1;h++){for(var b=h,y=h+1;y<m.length-1;y++)Math.abs(m[h][y])>Math.abs(m[h][b])&&(b=y);for(var w=h;w<m.length;w++){var T=m[w][h];m[w][h]=m[w][b],m[w][b]=T}for(var P=h+1;P<m.length-1;P++)for(var D=m.length-1;D>=h;D--)m[D][P]-=m[D][h]/m[h][h]*m[h][P]}for(var E=new Array(C),M=m.length-1,y=m.length-2;y>=0;y--){for(var T=0,h=y+1;h<m.length-1;h++)T+=m[h][y]*E[h];E[y]=(m[M][y]-T)/m[y][y]}return E}var g=function(m,C,h){var b=typeof h=="number"?{order:h}:h||{},y=p(b.dimensions,[0,1]),w=d(C,{dimensions:y}),T=f[m](w,{order:b.order,dimensions:y}),P=y[0];return T.points.sort(function(D,E){return D[P]-E[P]}),T};return g}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s={};return s.max=i(7),s.deviation=i(8),s.mean=i(10),s.median=i(12),s.min=i(14),s.quantile=i(13),s.sampleVariance=i(9),s.sum=i(11),s}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(4),d=s.isNumber;function p(f){for(var c=-1/0,g=0;g<f.length;g++)d(f[g])&&f[g]>c&&(c=f[g]);return c}return p}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(9);return function(d){var p=s(d);return p&&Math.sqrt(p)}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(4),d=s.isNumber,p=i(10);function f(c){var g=c.length;if(!g||g<2)return 0;if(c.length>=2){for(var m=p(c),C=0,h,b=0;b<c.length;b++)d(c[b])&&(h=c[b]-m,C+=h*h);return C/(c.length-1)}}return f}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(11);function d(p){var f=p.length;return f?s(p)/p.length:0}return d}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(4),d=s.isNumber;function p(f){var c=f.length;if(!c)return 0;for(var g=0,m=0;m<c;m++)d(f[m])&&(g+=f[m]);return g}return p}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(13);function d(p){return s(p,.5)}return d}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){return function(s,d){var p=s.length;if(!p)return 0;if(d<=0||p<2)return s[0];if(d>=1)return s[p-1];var f=(p-1)*d,c=Math.floor(f),g=s[c],m=s[c+1];return g+(m-g)*(f-c)}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(4),d=s.isNumber;function p(f){for(var c=1/0,g=0;g<f.length;g++)d(f[g])&&f[g]<c&&(c=f[g]);return c}return p}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(7),d=i(14),p=i(13),f=i(8),c=i(2),g=c.dataPreprocess,m=c.normalizeDimensions,C=i(3),h=C.ascending,b=C.map,y=i(16),w=C.bisect,T=i(17);function P(J,M){for(var I=typeof M=="string"?{method:M}:M||{},Y=I.method==null?D.squareRoot:D[I.method],k=m(I.dimensions),z=g(J,{dimensions:k,toOneDimensionArray:!0}),O=s(z),_=d(z),L=Y(z,_,O),N=T(_,O,L),A=N.step,$=N.toFixedPrecision,q=y(+(Math.ceil(_/A)*A).toFixed($),+(Math.floor(O/A)*A).toFixed($),A,$),U=q.length,j=new Array(U+1),B=0;B<=U;B++)j[B]={},j[B].sample=[],j[B].x0=B>0?q[B-1]:q[B]-_===A?_:q[B]-A,j[B].x1=B<U?q[B]:O-q[B-1]===A?O:q[B-1]+A;for(var B=0;B<z.length;B++)_<=z[B]&&z[B]<=O&&j[w(q,z[B],0,U)].sample.push(z[B]);var J=b(j,function(re){return[+((re.x0+re.x1)/2).toFixed($),re.sample.length,re.x0,re.x1,re.x0+" - "+re.x1]}),we=b(j,function(re){return[re.x0,re.x1,re.sample.length]});return{bins:j,data:J,customData:we}}var D={squareRoot:function(E){var M=Math.ceil(Math.sqrt(E.length));return M>50?50:M},scott:function(E,M,I){return Math.ceil((I-M)/(3.5*f(E)*Math.pow(E.length,-1/3)))},freedmanDiaconis:function(E,M,I){return E.sort(h),Math.ceil((I-M)/(2*(p(E,.75)-p(E,.25))*Math.pow(E.length,-1/3)))},sturges:function(E){return Math.ceil(Math.log(E.length)/Math.LN2)+1}};return P}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(2),d=s.getPrecision;return function(p,f,c,g){var m=arguments.length;m<2?(f=p,p=0,c=1):m<3?c=1:m<4?(c=+c,g=d(c)):g=+g;for(var C=Math.ceil(((f-p)/c).toFixed(g)),h=new Array(C+1),b=0;b<C+1;b++)h[b]=+(p+b*c).toFixed(g);return h}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(4);return function(d,p,f){var c=Math.abs(p-d)/f,g=s.quantityExponent(c),m=Math.pow(10,g),C=c/m;C>=Math.sqrt(50)?m*=10:C>=Math.sqrt(10)?m*=5:C>=Math.sqrt(2)&&(m*=2);var h=g<0?-g:0,b=+(p>=d?m:-m).toFixed(h);return{step:b,toFixedPrecision:h}}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(5),d=i(19),p=2;return{type:"ecStat:regression",transform:function(c){var g=c.upstream,m=c.config||{},C=m.method||"linear",h=s(C,g.cloneRawData(),{order:m.order,dimensions:d.normalizeExistingDimensions(c,m.dimensions)}),b=h.points,y=m.formulaOn;y==null&&(y="end");var w;if(y!=="none"){for(var T=0;T<b.length;T++)b[T][p]=y==="start"&&T===0||y==="all"||y==="end"&&T===b.length-1?h.expression:"";w=g.cloneAllDimensionInfo(),w[p]={}}return[{dimensions:w,data:b}]}}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(3),d=i(4),p=i(20);function f(g,m){if(m==null)return;var C=g.upstream;if(s.isArray(m)){for(var h=[],b=0;b<m.length;b++){var y=C.getDimensionInfo(m[b]);w(y,m[b]),h[b]=y.index}return h}else{var y=C.getDimensionInfo(m);return w(y,m),y.index}function w(T,P){if(!T)throw new Error("Can not find dimension by "+P)}}function c(g){if(s.isArray(g)){for(var m=[],C=[],h=0;h<g.length;h++){var b=y(g[h]);m.push(b.name),C.push(b.index)}return{name:m,index:C}}else if(g!=null)return y(g);function y(w){if(d.isNumber(w))return{index:w};if(p.isObject(w)&&d.isNumber(w.index))return w;throw new Error("Illegle new dimensions config. Expect `{ name: string, index: number }`.")}}return{normalizeExistingDimensions:f,normalizeNewDimensions:c}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){function s(p,f){if(Object.assign)Object.assign(p,f);else for(var c in f)f.hasOwnProperty(c)&&(p[c]=f[c]);return p}function d(p){const f=typeof p;return f==="function"||!!p&&f==="object"}return{extend:s,isObject:d}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(15),d=i(19);return{type:"ecStat:histogram",transform:function(f){var c=f.upstream,g=f.config||{},m=s(c.cloneRawData(),{method:g.method,dimensions:d.normalizeExistingDimensions(f,g.dimensions)});return[{dimensions:["MeanOfV0V1","VCount","V0","V1","DisplayableName"],data:m.data},{data:m.customData}]}}}.call(o,i,o,n),l!==void 0&&(n.exports=l)},function(n,o,i){var l;l=function(u){var s=i(1),d=i(4),p=i(19),f=d.isNumber;return{type:"ecStat:clustering",transform:function(g){var m=g.upstream,C=g.config||{},h=C.clusterCount;if(!f(h)||h<=0)throw new Error('config param "clusterCount" need to be specified as an interger greater than 1.');if(h===1)return[{},{data:[]}];var b=p.normalizeNewDimensions(C.outputClusterIndexDimension),y=p.normalizeNewDimensions(C.outputCentroidDimensions);if(b==null)throw new Error("outputClusterIndexDimension is required as a number.");for(var w=s.hierarchicalKMeans(m.cloneRawData(),{clusterCount:h,stepByStep:!1,dimensions:p.normalizeExistingDimensions(g,C.dimensions),outputType:s.OutputType.SINGLE,outputClusterIndexDimension:b.index,outputCentroidDimensions:(y||{}).index}),T=m.cloneAllDimensionInfo(),P=[],D=0;D<T.length;D++){var E=T[D];P.push(E.name)}if(P[b.index]=b.name,y)for(var D=0;D<y.index.length;D++)y.name[D]!=null&&(P[y.index[D]]=y.name[D]);return[{dimensions:P,data:w.data},{data:w.centroids}]}}}.call(o,i,o,n),l!==void 0&&(n.exports=l)}])})})(Ot);var or=Ot.exports;function ar({regressions:e=[]},r){const n=[],o=[],i=[];return r.length===0?{regressionDataSets:n,regressionSeries:o,regressionXAxes:i}:(e.forEach(({transform:l,plot:u,name:s,y_axis_data_key:d})=>{const p=`x-axis-for-${s}`,f=`dataset-for-${s}--raw`,c=`dataset-for-${s}--transformed`;n.push({id:f,source:r.map((g,m)=>[m,g[d]])}),n.push({transform:l,id:c,fromDatasetId:f}),o.push(Q(S({},u),{name:s,datasetId:c,xAxisId:p,showSymbol:!1,tooltip:{show:!1}})),i.push({type:"category",id:p,datasetId:c,show:!1})}),{regressionDataSets:n,regressionSeries:o,regressionXAxes:i})}const lr={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"axis"},xAxis:{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"}},grid:{top:0,left:15,right:15,bottom:30,containLabel:!0}};function sr(e,r){var p;const n=e.y_axes.reduce((f,{label_formatter:c},g)=>(f[g]=function(C){const h=typeof C=="object"?C.value:C;if(!c)return h;try{return Ee.default(h).format(c)}catch(b){return console.error(b),h}},f),{default:({value:f})=>f}),o=e.series.reduce((f,{yAxisIndex:c,name:g})=>(f[g]=c,f),{}),i=e.series.map(h=>{var b=h,{y_axis_data_key:f,yAxisIndex:c,label_position:g,name:m}=b,C=Z(b,["y_axis_data_key","yAxisIndex","label_position","name"]);return S({data:r.map(w=>w[f]),label:{show:!!g,position:g,formatter:n[c!=null?c:"default"]},name:m,xAxisId:"main-x-axis",yAxisIndex:c},C)}),{regressionDataSets:l,regressionSeries:u,regressionXAxes:s}=ar(e,r),d={xAxis:[{data:r.map(f=>f[e.x_axis_data_key]),name:(p=e.x_axis_name)!=null?p:"",id:"main-x-axis"},...s],yAxis:e.y_axes.map((m,g)=>{var C=m,{label_formatter:f}=C,c=Z(C,["label_formatter"]);var h;return Q(S({},c),{axisLabel:{show:!0,formatter:(h=n[g])!=null?h:n.default}})}),dataset:[...l],series:[...i,...u],tooltip:{formatter:function(f){const c=Array.isArray(f)?f:[f];if(c.length===0)return"";const g=c.map(({seriesName:m,value:C})=>{var y;if(!m)return C;const h=o[m],b=(y=n[h])!=null?y:n.default;return`${m}: ${b({value:C})}`});return g.unshift(`<strong>${c[0].name}</strong>`),g.join("<br />")}}};return V.default.merge({},lr,d)}function ur(e){const r=Array.from(e).sort((o,i)=>o-i),n=Math.floor(r.length/2);return r.length%2===0?(r[n-1]+r[n])/2:r[n]}function dr(e,r,n){var i,l,u;const o=e.map(s=>s[r]);switch(n){case"sum":return V.default.sum(o);case"mean":return V.default.mean(o);case"median":return ur(o);case"max":return(i=V.default.max(o))!=null?i:0;case"min":return(l=V.default.min(o))!=null?l:0;default:return(u=e[0])==null?void 0:u[r]}}var Nt=function(){};const cr=(e,r,n)=>Math.min(Math.max(n,e),r),_t=(e,r,n)=>{const o=r-e;return o===0?1:(n-e)/o},He=(e,r,n)=>-n*e+n*r+e,Ft=(e,r)=>n=>Math.max(Math.min(n,r),e),Me=e=>e%1?Number(e.toFixed(5)):e,Be=/(-)?([\d]*\.?[\d])+/g,et=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,fr=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function Ae(e){return typeof e=="string"}const Re={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Bt=Object.assign(Object.assign({},Re),{transform:Ft(0,1)});Object.assign(Object.assign({},Re),{default:1});const Ie=(e=>({test:r=>Ae(r)&&r.endsWith(e)&&r.split(" ").length===1,parse:parseFloat,transform:r=>`${r}${e}`}))("%");Object.assign(Object.assign({},Ie),{parse:e=>Ie.parse(e)/100,transform:e=>Ie.transform(e*100)});const tt=(e,r)=>n=>Boolean(Ae(n)&&fr.test(n)&&n.startsWith(e)||r&&Object.prototype.hasOwnProperty.call(n,r)),Rt=(e,r,n)=>o=>{if(!Ae(o))return o;const[i,l,u,s]=o.match(Be);return{[e]:parseFloat(i),[r]:parseFloat(l),[n]:parseFloat(u),alpha:s!==void 0?parseFloat(s):1}},Ce={test:tt("hsl","hue"),parse:Rt("hue","saturation","lightness"),transform:({hue:e,saturation:r,lightness:n,alpha:o=1})=>"hsla("+Math.round(e)+", "+Ie.transform(Me(r))+", "+Ie.transform(Me(n))+", "+Me(Bt.transform(o))+")"},pr=Ft(0,255),nt=Object.assign(Object.assign({},Re),{transform:e=>Math.round(pr(e))}),ve={test:tt("rgb","red"),parse:Rt("red","green","blue"),transform:({red:e,green:r,blue:n,alpha:o=1})=>"rgba("+nt.transform(e)+", "+nt.transform(r)+", "+nt.transform(n)+", "+Me(Bt.transform(o))+")"};function mr(e){let r="",n="",o="",i="";return e.length>5?(r=e.substr(1,2),n=e.substr(3,2),o=e.substr(5,2),i=e.substr(7,2)):(r=e.substr(1,1),n=e.substr(2,1),o=e.substr(3,1),i=e.substr(4,1),r+=r,n+=n,o+=o,i+=i),{red:parseInt(r,16),green:parseInt(n,16),blue:parseInt(o,16),alpha:i?parseInt(i,16)/255:1}}const rt={test:tt("#"),parse:mr,transform:ve.transform},qe={test:e=>ve.test(e)||rt.test(e)||Ce.test(e),parse:e=>ve.test(e)?ve.parse(e):Ce.test(e)?Ce.parse(e):rt.parse(e),transform:e=>Ae(e)?e:e.hasOwnProperty("red")?ve.transform(e):Ce.transform(e)},qt="${c}",$t="${n}";function hr(e){var r,n,o,i;return isNaN(e)&&Ae(e)&&((n=(r=e.match(Be))===null||r===void 0?void 0:r.length)!==null&&n!==void 0?n:0)+((i=(o=e.match(et))===null||o===void 0?void 0:o.length)!==null&&i!==void 0?i:0)>0}function Vt(e){typeof e=="number"&&(e=`${e}`);const r=[];let n=0;const o=e.match(et);o&&(n=o.length,e=e.replace(et,qt),r.push(...o.map(qe.parse)));const i=e.match(Be);return i&&(e=e.replace(Be,$t),r.push(...i.map(Re.parse))),{values:r,numColors:n,tokenised:e}}function Wt(e){return Vt(e).values}function Ut(e){const{values:r,numColors:n,tokenised:o}=Vt(e),i=r.length;return l=>{let u=o;for(let s=0;s<i;s++)u=u.replace(s<n?qt:$t,s<n?qe.transform(l[s]):Me(l[s]));return u}}const gr=e=>typeof e=="number"?0:e;function xr(e){const r=Wt(e);return Ut(e)(r.map(gr))}const kt={test:hr,parse:Wt,createTransformer:Ut,getAnimatableNone:xr};function it(e,r,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(r-e)*6*n:n<1/2?r:n<2/3?e+(r-e)*(2/3-n)*6:e}function Qt({hue:e,saturation:r,lightness:n,alpha:o}){e/=360,r/=100,n/=100;let i=0,l=0,u=0;if(!r)i=l=u=n;else{const s=n<.5?n*(1+r):n+r-n*r,d=2*n-s;i=it(d,s,e+1/3),l=it(d,s,e),u=it(d,s,e-1/3)}return{red:Math.round(i*255),green:Math.round(l*255),blue:Math.round(u*255),alpha:o}}const vr=(e,r,n)=>{const o=e*e,i=r*r;return Math.sqrt(Math.max(0,n*(i-o)+o))},br=[rt,ve,Ce],jt=e=>br.find(r=>r.test(e)),Kt=(e,r)=>{let n=jt(e),o=jt(r),i=n.parse(e),l=o.parse(r);n===Ce&&(i=Qt(i),n=ve),o===Ce&&(l=Qt(l),o=ve);const u=Object.assign({},i);return s=>{for(const d in u)d!=="alpha"&&(u[d]=vr(i[d],l[d],s));return u.alpha=He(i.alpha,l.alpha,s),n.transform(u)}},yr=e=>typeof e=="number",Sr=(e,r)=>n=>r(e(n)),Yt=(...e)=>e.reduce(Sr);function Xt(e,r){return yr(e)?n=>He(e,r,n):qe.test(e)?Kt(e,r):Ht(e,r)}const Jt=(e,r)=>{const n=[...e],o=n.length,i=e.map((l,u)=>Xt(l,r[u]));return l=>{for(let u=0;u<o;u++)n[u]=i[u](l);return n}},Cr=(e,r)=>{const n=Object.assign(Object.assign({},e),r),o={};for(const i in n)e[i]!==void 0&&r[i]!==void 0&&(o[i]=Xt(e[i],r[i]));return i=>{for(const l in o)n[l]=o[l](i);return n}};function Zt(e){const r=kt.parse(e),n=r.length;let o=0,i=0,l=0;for(let u=0;u<n;u++)o||typeof r[u]=="number"?o++:r[u].hue!==void 0?l++:i++;return{parsed:r,numNumbers:o,numRGB:i,numHSL:l}}const Ht=(e,r)=>{const n=kt.createTransformer(r),o=Zt(e),i=Zt(r);return o.numHSL===i.numHSL&&o.numRGB===i.numRGB&&o.numNumbers>=i.numNumbers?Yt(Jt(o.parsed,i.parsed),n):u=>`${u>0?r:e}`},wr=(e,r)=>n=>He(e,r,n);function Dr(e){if(typeof e=="number")return wr;if(typeof e=="string")return qe.test(e)?Kt:Ht;if(Array.isArray(e))return Jt;if(typeof e=="object")return Cr}function Tr(e,r,n){const o=[],i=n||Dr(e[0]),l=e.length-1;for(let u=0;u<l;u++){let s=i(e[u],e[u+1]);if(r){const d=Array.isArray(r)?r[u]:r;s=Yt(d,s)}o.push(s)}return o}function Pr([e,r],[n]){return o=>n(_t(e,r,o))}function Er(e,r){const n=e.length,o=n-1;return i=>{let l=0,u=!1;if(i<=e[0]?u=!0:i>=e[o]&&(l=o-1,u=!0),!u){let d=1;for(;d<n&&!(e[d]>i||d===o);d++);l=d-1}const s=_t(e[l],e[l+1],i);return r[l](s)}}function Mr(e,r,{clamp:n=!0,ease:o,mixer:i}={}){const l=e.length;Nt(l===r.length),Nt(!o||!Array.isArray(o)||o.length===l-1),e[0]>e[l-1]&&(e=[].concat(e),r=[].concat(r),e.reverse(),r.reverse());const u=Tr(r,o,i),s=l===2?Pr(e,u):Er(e,u);return n?d=>s(cr(e[0],e[l-1],d)):s}class Ar{constructor({valueRange:r,colorRange:n}){bn(this,"mapper");this.mapper=Mr(r,n)}getColor(r){return this.mapper(r)}}function Ir(e,r){return e.type==="static"?e.staticColor:e.type==="continuous"?new Ar(e).getColor(r):"black"}function Gr(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function zr(e,r){const n={};return e.forEach(({name:o,color:i,data_field:l,aggregation:u,size:s,weight:d,formatter:p})=>{const f=dr(r,l,u);let c="";["string","number"].includes(typeof f)?c=Ee.default(f).format(p):c=Gr(f),n[o]=t(a.Text,{sx:{fontSize:s,display:"inline"},color:Ir(i,f),weight:d,children:c})}),n}function Lr(e){return e.split(" ").map(r=>v(me,{children:[r,"\xA0"]}))}function Or(e){const n=e.replaceAll("<br />","<br/>").replaceAll(`
|
|
10
|
-
`,"<br/>").split("<br/>");return
|
|
11
|
-
{percentage|{d}%}`,minMargin:5,edgeDistance:10,lineHeight:15,rich:{percentage:{color:"#999"}},margin:20},labelLine:{length:15,length2:0,maxSurfaceAngle:80,showAbove:!0},top:10,bottom:10,left:10,right:10}};function jr({conf:e,data:r,width:n,height:o}){const f=e,{label_field:i="name",value_field:l="value"}=f,u=Z(f,["label_field","value_field"]),s=x.default.useMemo(()=>r.map(c=>({name:c[i],value:Number(c[l])})),[r,i,l]),d=x.default.useMemo(()=>({series:{labelLayout:function(c){const g=c.labelRect.x<n/2,m=c.labelLinePoints;return m[2][0]=g?c.labelRect.x:c.labelRect.x+c.labelRect.width,{labelLinePoints:m}}}}),[n]),p=V.default.merge({},Qr,d,u,{series:{data:s}});return t(ze.default,{echarts:ce,option:p,style:{width:n,height:o}})}function Kr({conf:{template:e,variables:r,align:n},data:o}){const i=x.default.useMemo(()=>at(e,r,o),[e,r,o]);return t(a.Text,{align:n,children:Object.values(i).map(l=>l)})}function Yr({conf:e,width:r,height:n}){return!r||!n?null:t(je.default,{readOnly:!0,value:e.content,onChange:V.default.noop,sx:{border:"none"}})}function tn(e,r,n,o){const i={width:e,height:r,data:n,conf:o.conf};switch(o.type){case"sunburst":return t(ir,S({},i));case"cartesian":return t(_r,S({},i));case"table":return t(Vr,S({},i));case"text":return t(Ur,S({},i));case"stats":return t(Kr,S({},i));case"rich-text":return t(Yr,S({},i));case"bar-3d":return t(kr,S({},i));case"pie":return t(jr,S({},i));default:return null}}const Xr=["rich-text"];function nn({viz:e,data:r,loading:n}){const{ref:o,width:i,height:l}=H.useElementSize();if(!!Xr.includes(e.type))return t("div",{className:"viz-root",ref:o,children:t(Ze,{children:tn(i,l,r,e)})});const s=x.default.useMemo(()=>!Array.isArray(r)||r.length===0,[r]);return n?t("div",{className:"viz-root",ref:o,children:t(a.LoadingOverlay,{visible:n,exitTransitionDuration:0})}):v("div",{className:"viz-root",ref:o,children:[s&&t(a.Text,{color:"gray",align:"center",children:"nothing to show"}),!s&&t(Ze,{children:tn(i,l,r,e)})]})}function Jr({}){const{data:e,loading:r,viz:n}=x.default.useContext(le);return t(nn,{viz:n,data:e,loading:r})}function Zr({label:e,required:r,value:n,onChange:o,data:i,sx:l},u){const s=x.default.useMemo(()=>!Array.isArray(i)||i.length===0?[]:Object.keys(i[0]).map(p=>({label:p,value:p})),[i]);return t(a.Select,{ref:u,label:e,data:s,value:n,onChange:o,required:r,sx:l})}const ne=x.default.forwardRef(Zr);function Hr({conf:e,setConf:r,data:n}){const o=V.default.assign({},{x_axis_data_key:"x",y_axis_data_key:"y",z_axis_data_key:"z",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}},e),{control:i,handleSubmit:l,formState:u}=R.useForm({defaultValues:o});return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:l(r),children:[t(a.Text,{children:"X Axis"}),v(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(R.Controller,{name:"x_axis_data_key",control:i,render:({field:s})=>t(ne,S({label:"Data Field",required:!0,data:n},s))}),t(R.Controller,{name:"xAxis3D.name",control:i,render:({field:s})=>t(a.TextInput,S({sx:{flexGrow:1},size:"md",label:"Name"},s))})]}),t(a.Text,{mt:"lg",children:"Y Axis"}),v(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(R.Controller,{name:"y_axis_data_key",control:i,render:({field:s})=>t(ne,S({label:"Data Field",required:!0,data:n},s))}),t(R.Controller,{name:"yAxis3D.name",control:i,render:({field:s})=>t(a.TextInput,S({sx:{flexGrow:1},size:"md",label:"Name"},s))})]}),t(a.Text,{mt:"lg",children:"Z Axis"}),v(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(R.Controller,{name:"z_axis_data_key",control:i,render:({field:s})=>t(ne,S({label:"Data Field",required:!0,data:n},s))}),t(R.Controller,{name:"zAxis3D.name",control:i,render:({field:s})=>t(a.TextInput,S({sx:{flexGrow:1},size:"md",label:"Name"},s))})]}),t(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:v(a.Button,{color:"blue",type:"submit",children:[t(F.DeviceFloppy,{size:20}),t(a.Text,{ml:"md",children:"Save"})]})})]})})}function ei({value:e,onChange:r},n){const o=a.useMantineTheme(),i=x.default.useMemo(()=>Object.entries(o.colors).map(([u,s])=>({label:u,value:s[6]})),[o]),l=x.default.useMemo(()=>i.some(u=>u.value===e),[e,i]);return v(a.Group,{position:"apart",spacing:4,children:[t(a.TextInput,{placeholder:"Set any color",value:l?"":e,onChange:u=>r(u.currentTarget.value),rightSection:t(a.ColorSwatch,{color:l?"transparent":e,radius:4}),variant:l?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),t(a.Text,{sx:{flexGrow:0},children:"or"}),t(a.Select,{data:i,value:e,onChange:r,variant:l?"default":"filled",placeholder:"Pick a theme color",icon:t(a.ColorSwatch,{color:l?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const $e=x.default.forwardRef(ei);function ti({control:e,index:r}){return v(a.Group,{direction:"row",grow:!0,align:"top",children:[t(R.Controller,{name:`series.${r}.stack`,control:e,render:({field:n})=>t(a.TextInput,S({label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1}},n))}),t(R.Controller,{name:`series.${r}.barWidth`,control:e,render:({field:n})=>t(a.TextInput,S({label:"Bar Width",sx:{flexGrow:1}},n))})]})}const ni=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}];function ri({control:e,index:r}){return v(a.Group,{direction:"row",grow:!0,align:"center",children:[t(R.Controller,{name:`series.${r}.step`,control:e,render:({field:n})=>t(a.Select,Q(S({label:"Step",data:ni,sx:{flexGrow:1,maxWidth:"48%"}},n),{value:String(n.value),onChange:o=>{const i=o==="false"?!1:o;n.onChange(i)}}))}),t(R.Controller,{name:`series.${r}.smooth`,control:e,render:({field:n})=>t(a.Box,{sx:{flexGrow:1},children:t(a.Switch,{label:"Smooth Line",checked:n.value,onChange:o=>n.onChange(o.currentTarget.checked)})})})]})}const ii=Array.from(new Array(9),(e,r)=>({label:String(r+1),value:r+1}));function oi({control:e,index:r}){return t(a.Group,{direction:"row",grow:!0,align:"center",children:t(R.Controller,{name:`series.${r}.symbolSize`,control:e,render:({field:n})=>v(a.Group,{direction:"column",noWrap:!0,sx:{flexGrow:1},pb:16,spacing:4,children:[t(a.Text,{size:"sm",children:"Size"}),t(a.Slider,Q(S({min:1,max:10,marks:ii},n),{sx:{width:"100%"}}))]})})})}const ai=[{label:"off",value:""},{label:"top",value:"top"},{label:"left",value:"left"},{label:"right",value:"right"},{label:"bottom",value:"bottom"},{label:"inside",value:"inside"},{label:"insideLeft",value:"insideLeft"},{label:"insideRight",value:"insideRight"},{label:"insideTop",value:"insideTop"},{label:"insideBottom",value:"insideBottom"},{label:"insideTopLeft",value:"insideTopLeft"},{label:"insideBottomLeft",value:"insideBottomLeft"},{label:"insideTopRight",value:"insideTopRight"},{label:"insideBottomRight",value:"insideBottomRight"}];function li({control:e,index:r,remove:n,seriesItem:o,yAxisOptions:i,data:l}){const u=o.type;return v(a.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(a.Group,{direction:"column",grow:!0,noWrap:!0,children:t(R.Controller,{name:`series.${r}.type`,control:e,render:({field:s})=>t(a.SegmentedControl,S({data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}]},s))})}),t(R.Controller,{name:`series.${r}.name`,control:e,render:({field:s})=>t(a.TextInput,S({label:"Name",required:!0,sx:{flex:1}},s))}),v(a.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(R.Controller,{name:`series.${r}.y_axis_data_key`,control:e,render:({field:s})=>t(ne,S({label:"Value Field",required:!0,data:l,sx:{flex:1}},s))}),t(R.Controller,{name:`series.${r}.yAxisIndex`,control:e,render:f=>{var{field:c}=f,g=c,{value:s,onChange:d}=g,p=Z(g,["value","onChange"]);var m;return t(a.Select,Q(S({label:"Y Axis",data:i,disabled:i.length===0},p),{value:(m=s==null?void 0:s.toString())!=null?m:"",onChange:C=>{if(!C){d(0);return}d(Number(C))},sx:{flex:1}}))}})]}),u==="line"&&t(ri,{index:r,control:e}),u==="bar"&&t(ti,{index:r,control:e}),u==="scatter"&&t(oi,{index:r,control:e}),t(R.Controller,{name:`series.${r}.label_position`,control:e,render:({field:s})=>t(a.Select,S({label:"Label Position",data:ai},s))}),v(a.Group,{direction:"column",grow:!0,spacing:4,children:[t(a.Text,{size:"sm",children:"Color"}),t(R.Controller,{name:`series.${r}.color`,control:e,render:({field:s})=>t($e,S({},s))})]}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>n(r),sx:{position:"absolute",top:15,right:5},children:t(F.Trash,{size:16})})]},r)}function si({control:e,watch:r,getValues:n,data:o}){const{fields:i,append:l,remove:u}=R.useFieldArray({control:e,name:"series"}),s=r("series"),d=i.map((c,g)=>S(S({},c),s[g])),p=()=>l({type:"bar",name:H.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",stack:"",color:"#000",step:!1,smooth:!1}),f=x.default.useMemo(()=>n().y_axes.map(({name:c},g)=>({label:c,value:g.toString()})),[n]);return v(a.Group,{direction:"column",grow:!0,children:[d.map((c,g)=>t(li,{control:e,index:g,remove:u,seriesItem:c,yAxisOptions:f,data:o})),t(a.Group,{position:"center",mt:"xs",children:t(a.Button,{onClick:p,children:"Add a Series"})})]})}const rn={mantissa:0,output:"number"};function ui({value:e,onChange:r},n){const o=u=>{r(Q(S({},e),{output:u}))},i=u=>{const s=u===0?!1:e.trimMantissa;r(Q(S({},e),{mantissa:u,trimMantissa:s}))},l=u=>{r(Q(S({},e),{trimMantissa:u.currentTarget.checked}))};return t(a.Group,{direction:"column",grow:!0,noWrap:!0,ref:n,children:v(a.Group,{direction:"row",grow:!0,children:[t(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:o}),t(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:i}),t(a.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:l,disabled:e.mantissa===0})]})})}const on=x.default.forwardRef(ui);function di({control:e,index:r,remove:n}){return v(a.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(a.Group,{direction:"row",grow:!0,noWrap:!0,children:t(R.Controller,{name:`y_axes.${r}.name`,control:e,render:({field:o})=>t(a.TextInput,S({label:"Name",required:!0,sx:{flex:1}},o))})}),t(a.Group,{direction:"column",grow:!0,noWrap:!0,children:t(R.Controller,{name:`y_axes.${r}.label_formatter`,control:e,render:({field:o})=>t(on,S({},o))})}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>n(r),sx:{position:"absolute",top:15,right:5},disabled:r===0,children:t(F.Trash,{size:16})})]},r)}function ci({control:e,watch:r}){const{fields:n,append:o,remove:i}=R.useFieldArray({control:e,name:"y_axes"}),l=r("y_axes"),u=n.map((d,p)=>S(S({},d),l[p])),s=()=>o({name:"",label_formatter:rn});return v(a.Group,{direction:"column",grow:!0,children:[u.map((d,p)=>t(di,{control:e,index:p,remove:i})),t(a.Group,{position:"center",mt:"xs",children:t(a.Button,{onClick:s,children:"Add a Y Axis"})})]})}const fi=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function pi({control:e,regressionItem:r,index:n,remove:o,yAxisOptions:i,data:l}){const u=r.transform.config.method;return v(a.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(R.Controller,{name:`regressions.${n}.name`,control:e,render:({field:s})=>t(a.TextInput,S({label:"Name",required:!0,sx:{flex:1}},s))}),v(a.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(R.Controller,{name:`regressions.${n}.y_axis_data_key`,control:e,render:({field:s})=>t(ne,S({label:"Value Field",required:!0,data:l,sx:{flex:1}},s))}),t(R.Controller,{name:`regressions.${n}.plot.yAxisIndex`,control:e,render:f=>{var{field:c}=f,g=c,{value:s,onChange:d}=g,p=Z(g,["value","onChange"]);var m;return t(a.Select,Q(S({label:"Y Axis",data:i,disabled:i.length===0},p),{value:(m=s==null?void 0:s.toString())!=null?m:"",onChange:C=>{if(!C){d(0);return}d(Number(C))},sx:{flex:1}}))}})]}),v(a.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(R.Controller,{name:`regressions.${n}.transform.config.method`,control:e,render:({field:s})=>t(a.Select,S({label:"Method",data:fi,sx:{flex:1}},s))}),u==="polynomial"&&t(R.Controller,{name:`regressions.${n}.transform.config.order`,control:e,render:({field:s})=>t(a.NumberInput,S({label:"Order",sx:{flex:1}},s))})]}),v(a.Group,{direction:"column",grow:!0,spacing:4,children:[t(a.Text,{size:"sm",children:"Color"}),t(R.Controller,{name:`regressions.${n}.plot.color`,control:e,render:({field:s})=>t($e,S({},s))})]}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>o(n),sx:{position:"absolute",top:15,right:5},children:t(F.Trash,{size:16})})]},n)}function mi({control:e,watch:r,getValues:n,data:o}){const{fields:i,append:l,remove:u}=R.useFieldArray({control:e,name:"regressions"}),s=r("regressions"),d=i.map((c,g)=>S(S({},c),s[g])),p=x.default.useMemo(()=>n().y_axes.map(({name:c},g)=>({label:c,value:g.toString()})),[n]),f=()=>l({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666"}});return v(a.Group,{direction:"column",grow:!0,children:[d.map((c,g)=>t(pi,{regressionItem:c,control:e,index:g,remove:u,yAxisOptions:p,data:o})),t(a.Group,{position:"center",mt:"xs",children:t(a.Button,{onClick:f,children:"Add a Regression Line"})})]})}const hi=[{label:"None",value:"none"},{label:"Sum",value:"sum"},{label:"Mean",value:"mean"},{label:"Median",value:"median"},{label:"Max",value:"max"},{label:"Min",value:"min"}];function gi({label:e,value:r,onChange:n},o){return t(a.Select,{ref:o,label:e,data:hi,value:r,onChange:n})}const xi=x.default.forwardRef(gi);function vi({label:e,value:r,onChange:n},o){const[i,l]=x.default.useState(Array.isArray(r)?[...r]:[]),u=x.default.useCallback(()=>{l(g=>[...g,""])},[l]),s=x.default.useCallback(g=>{l(m=>(m.splice(g,1),[...m]))},[l]),d=x.default.useMemo(()=>!V.default.isEqual(i,r),[i,r]),p=()=>{n(i.map(g=>g.toString()))},f=a.useMantineTheme(),c=x.default.useMemo(()=>Object.entries(f.colors).map(([g,m])=>m[6]),[f]);return v(me,{children:[v(a.Group,{position:"left",ref:o,children:[t(a.Text,{children:e}),t(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:p,children:t(F.DeviceFloppy,{size:20})})]}),v(a.Group,{children:[i.map((g,m)=>t(a.ColorInput,{value:g,onChange:C=>{l(h=>(h.splice(m,1,C),[...h]))},swatches:c,rightSection:t(a.ActionIcon,{onClick:()=>s(m),color:"red",children:t(F.Trash,{size:14})}),sx:{width:"45%"}})),t(a.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:t(F.PlaylistAdd,{size:20})})]})]})}const bi=x.default.forwardRef(vi),Ve=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function yi({label:e,value:r,onChange:n},o){var u,s;const[i,l]=x.default.useState((s=(u=Ve.find(d=>d.label===r))==null?void 0:u.value)!=null?s:Ve[0].value);return x.default.useEffect(()=>{const d=Ve.find(p=>p.value===i);d&&n(d.label)},[i]),v(a.Group,{direction:"column",grow:!0,spacing:0,mt:"sm",mb:"lg",children:[t(a.Text,{size:"sm",children:e}),t(a.Slider,{label:null,marks:Ve,value:i,onChange:l,step:25,placeholder:"Pick a font size",ref:o})]})}const an=x.default.forwardRef(yi);function Si({label:e,value:r,onChange:n},o){const[i,l]=x.default.useState(Array.isArray(r)?[...r]:[]),u=x.default.useCallback(()=>{l(f=>[...f,""])},[l]),s=x.default.useCallback(f=>{l(c=>(c.splice(f,1),[...c]))},[l]),d=x.default.useMemo(()=>!V.default.isEqual(i,r),[i,r]),p=()=>{n(i.map(f=>f.toString()))};return v(me,{children:[v(a.Group,{position:"left",ref:o,children:[t(a.Text,{children:e}),t(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:p,children:t(F.DeviceFloppy,{size:20})})]}),v(a.Group,{children:[i.map((f,c)=>t(a.TextInput,{value:f,onChange:g=>{const m=g.currentTarget.value;l(C=>(C.splice(c,1,m),[...C]))},rightSection:t(a.ActionIcon,{onClick:()=>s(c),color:"red",children:t(F.Trash,{size:14})}),sx:{width:"45%"}})),t(a.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:t(F.PlaylistAdd,{size:20})})]})]})}const Ci=x.default.forwardRef(Si);function ln(){return{name:H.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:"none",formatter:{output:"number",mantissa:0}}}const lt=x.default.forwardRef(function(l,i){var u=l,{value:r,onChange:n}=u,o=Z(u,["value","onChange"]);return t(a.TextInput,S({ref:i,value:r,onChange:n},o))});function sn({value:e,onChange:r,data:n}){const o=e.color.type,i=(l,u)=>{const s=V.default.cloneDeep(e);V.default.set(s,l,u),r(s)};return v(a.Box,{px:"sm",py:"md",children:[t(a.Text,{weight:"bold",pb:0,children:e.name}),t(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),v(a.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(a.TextInput,{label:"Name",required:!0,value:e.name,onChange:l=>i("name",l.currentTarget.value)}),t(ne,{label:"Data Field",required:!0,data:n,value:e.data_field,onChange:l=>i("data_field",l)}),t(xi,{label:"Aggregation",value:e.aggregation,onChange:l=>i("aggregation",l)})]}),t(on,{value:e.formatter,onChange:l=>i("formatter",l)}),t(a.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),t(a.Group,{direction:"column",grow:!0,children:t(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:e.size,onChange:l=>i("size",l.currentTarget.value)})}),t(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:t(an,{label:"Font Weight",value:e.weight,onChange:l=>i("weight",l)})}),t(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),v(a.Group,{direction:"column",grow:!0,children:[t(a.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:e.color.type,onChange:l=>i("color.type",l)}),o==="static"&&t($e,{value:e.color.staticColor,onChange:l=>i("color.staticColor",l)}),o==="continuous"&&v(me,{children:[t(Ci,{label:"Value Range",value:e.color.valueRange,onChange:l=>i("color.valueRange",l)}),t(bi,{label:"Color Range",value:e.color.colorRange,onChange:l=>i("color.colorRange",l)})]})]})]})}function wi({control:e,index:r,remove:n,data:o}){return v(a.Group,{direction:"column",grow:!0,my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[t(R.Controller,{name:`stats.variables.${r}`,control:e,render:({field:i})=>t(sn,S({data:o},i))}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>n(r),sx:{position:"absolute",top:15,right:5},children:t(F.Trash,{size:16})})]},r)}function Di({control:e,watch:r,data:n}){const{fields:o,append:i,remove:l}=R.useFieldArray({control:e,name:"stats.variables"});r("stats.templates");const u=r("stats.variables"),s=o.map((p,f)=>S(S({},p),u[f])),d=()=>i(ln());return v(a.Group,{direction:"column",grow:!0,children:[v(a.Group,{direction:"column",grow:!0,noWrap:!0,spacing:0,children:[t(R.Controller,{name:"stats.templates.top",control:e,render:({field:p})=>t(lt,S({label:"Template for stats above the chart",py:"md",sx:{flexGrow:1}},p))}),t(R.Controller,{name:"stats.templates.bottom",control:e,render:({field:p})=>t(lt,S({label:"Template for stats under the chart",py:"md",sx:{flexGrow:1}},p))})]}),s.map((p,f)=>t(wi,{control:e,index:f,remove:l,data:n})),t(a.Group,{position:"center",mt:"xs",children:t(a.Button,{onClick:d,children:"Add a Variable"})})]})}function Ti(e){function r({type:n,name:o,showSymbol:i,symbolSize:l=5,y_axis_data_key:u="value",yAxisIndex:s=0,label_position:d="top",stack:p="1",color:f="black",barWidth:c="30",smooth:g=!1,step:m=!1}){return{type:n,name:o,showSymbol:i,symbolSize:l,y_axis_data_key:u,yAxisIndex:s,label_position:d,stack:p,color:f,barWidth:c,smooth:g,step:m}}return e.map(r)}function Pi(e){return e||{templates:{top:"",bottom:""},variables:[]}}function Ei({conf:e,setConf:r,data:n}){const m=e,{series:o,y_axes:i}=m,l=Z(m,["series","y_axes"]),u=x.default.useMemo(()=>{const y=l,{x_axis_name:C="",stats:h}=y,b=Z(y,["x_axis_name","stats"]);return S({series:Ti(o!=null?o:[]),x_axis_name:C,y_axes:i!=null?i:[{name:"Y Axis",label_formatter:rn}],stats:Pi(h)},b)},[o,l]);x.default.useEffect(()=>{!V.default.isEqual(e,u)&&r(u)},[e,u]);const{control:s,handleSubmit:d,watch:p,getValues:f}=R.useForm({defaultValues:u});p(["x_axis_data_key","x_axis_name"]);const c=f(),g=x.default.useMemo(()=>!V.default.isEqual(c,e),[c,e]);return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:d(r),children:[v(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(a.Text,{children:"Chart Config"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:t(F.DeviceFloppy,{size:20})})]}),v(a.Accordion,{offsetIcon:!1,multiple:!0,initialState:{0:!0,1:!0},children:[t(a.Accordion.Item,{label:"X Axis",children:v(a.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(R.Controller,{name:"x_axis_data_key",control:s,render:({field:C})=>t(ne,S({label:"X Axis Data Field",required:!0,data:n,sx:{flex:1}},C))}),t(R.Controller,{name:"x_axis_name",control:s,render:({field:C})=>t(a.TextInput,S({label:"X Axis Name",sx:{flex:1}},C))})]})}),t(a.Accordion.Item,{label:"Y Axes",children:t(ci,{control:s,watch:p})}),t(a.Accordion.Item,{label:"Series",children:t(si,{control:s,watch:p,getValues:f,data:n})}),t(a.Accordion.Item,{label:"Regression Lines",children:t(mi,{control:s,watch:p,getValues:f,data:n})}),t(a.Accordion.Item,{label:"Stats",children:t(Di,{control:s,watch:p,data:n})})]})]})})}function Mi({conf:{label_field:e,value_field:r},setConf:n,data:o}){const i=de.useForm({initialValues:{label_field:e,value_field:r}});return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:i.onSubmit(n),children:[v(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(a.Text,{children:"Pie Config"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(F.DeviceFloppy,{size:20})})]}),v(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(ne,S({label:"Label Field",required:!0,data:o},i.getInputProps("label_field"))),t(ne,S({label:"Value Field",required:!0,data:o},i.getInputProps("value_field")))]})]})})}function Ai({conf:e,setConf:r}){const n=x.default.useMemo(()=>{const{content:p=""}=e;return{content:p}},[e]);x.default.useEffect(()=>{!V.default.isEqual(e,n)&&r(n)},[e,n]);const{control:o,handleSubmit:i,watch:l,getValues:u}=R.useForm({defaultValues:n});l("content");const s=u(),d=x.default.useMemo(()=>!V.default.isEqual(s,e),[s,e]);return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:i(r),children:[v(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(a.Text,{children:"Content"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!d,children:t(F.DeviceFloppy,{size:20})})]}),t(R.Controller,{name:"content",control:o,render:({field:p})=>t(je.default,S({sx:{flex:1}},p))})]})})}function Ii(e){if("variables"in e)return e;const{align:r,size:n,weight:o,color:i,content:{prefix:l="",data_field:u="value",formatter:s={output:"number",mantissa:0},postfix:d=""}={}}=e;return{align:r,template:`${l} \${value} ${d}`,variables:[{name:"value",data_field:u,aggregation:"none",formatter:s,color:i,weight:o,size:n}]}}function Gi({control:e,index:r,remove:n,data:o}){return v(a.Group,{direction:"column",grow:!0,my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[t(R.Controller,{name:`variables.${r}`,control:e,render:({field:i})=>t(sn,S({data:o},i))}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>n(r),sx:{position:"absolute",top:15,right:5},children:t(F.Trash,{size:16})})]},r)}function zi({control:e,watch:r,data:n}){const{fields:o,append:i,remove:l}=R.useFieldArray({control:e,name:"variables"}),u=r("variables"),s=o.map((p,f)=>S(S({},p),u[f])),d=()=>i(ln());return v(a.Group,{direction:"column",grow:!0,children:[s.map((p,f)=>t(Gi,{control:e,index:f,remove:l,data:n})),t(a.Group,{position:"center",mt:"xs",children:t(a.Button,{onClick:d,children:"Add a Variable"})})]})}function Li(){return{align:"center",template:"The variable ${value} is defined in Variables section",variables:[{name:"value",size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:"none",formatter:{output:"number",mantissa:0}}]}}function Oi({conf:e,setConf:r,data:n}){const o=x.default.useMemo(()=>{const{align:f,template:c="",variables:g=[]}=Ii(e);return f?{variables:g,template:c,align:f}:Li()},[e]);x.default.useEffect(()=>{!V.default.isEqual(e,o)&&r(o)},[e,o]);const{control:i,handleSubmit:l,watch:u,getValues:s}=R.useForm({defaultValues:o});u(["variables","template"]);const d=s(),p=x.default.useMemo(()=>!V.default.isEqual(d,e),[d,e]);return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,noWrap:!0,children:v("form",{onSubmit:l(r),children:[v(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(a.Text,{weight:500,children:"Stats Configurations"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!p,children:t(F.DeviceFloppy,{size:20})})]}),t(R.Controller,{name:"template",control:i,render:({field:f})=>t(lt,S({label:"Template",py:"md",sx:{flexGrow:1}},f))}),t(a.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),t(zi,{control:i,watch:u,data:n})]})})}function Ni({conf:{label_field:e,value_field:r},setConf:n,data:o}){const i=de.useForm({initialValues:{label_field:e,value_field:r}});return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:i.onSubmit(n),children:[v(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(a.Text,{children:"Sunburst Config"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(F.DeviceFloppy,{size:20})})]}),v(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(ne,S({label:"Label Field",required:!0,data:o},i.getInputProps("label_field"))),t(ne,S({label:"Value Field",required:!0,data:o},i.getInputProps("value_field")))]})]})})}const _i=Object.values(be).map(e=>({label:e,value:e}));function Fi({label:e,value:r,onChange:n,sx:o}){return t(a.Select,{label:e,data:_i,value:r,onChange:n,sx:o})}function Bi(i){var l=i,{conf:u}=l,s=u,{columns:e}=s,r=Z(s,["columns"]),{setConf:n,data:o}=l;const d=de.useForm({initialValues:S({id_field:"id",use_raw_columns:!0,columns:de.formList(e!=null?e:[]),fontSize:"sm",horizontalSpacing:"sm",verticalSpacing:"sm",striped:!1,highlightOnHover:!1},r)}),p=()=>d.addListItem("columns",{label:H.randomId(),value_field:"value",value_type:be.string});return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:d.onSubmit(n),children:[v(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(a.Text,{children:"Table Config"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(F.DeviceFloppy,{size:20})})]}),v(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(ne,S({label:"ID Field",required:!0,data:o},d.getInputProps("id_field"))),v(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[t(a.TextInput,S({label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1}},d.getInputProps("horizontalSpacing"))),t(a.TextInput,S({label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1}},d.getInputProps("verticalSpacing")))]}),t(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:t(a.TextInput,S({label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1}},d.getInputProps("fontSize")))}),v(a.Group,{direction:"column",grow:!0,children:[t(a.Text,{children:"Other"}),v(a.Group,{position:"apart",grow:!0,children:[t(a.Switch,S({label:"Striped"},d.getInputProps("striped",{type:"checkbox"}))),t(a.Switch,S({label:"Highlight on hover"},d.getInputProps("highlightOnHover",{type:"checkbox"})))]})]})]}),v(a.Group,{direction:"column",mt:"xs",spacing:"xs",grow:!0,p:"md",mb:"xl",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(a.Switch,S({label:"Use Original Data Columns"},d.getInputProps("use_raw_columns",{type:"checkbox"}))),!d.values.use_raw_columns&&v(a.Group,{direction:"column",grow:!0,children:[t(a.Text,{mt:"xl",mb:0,children:"Custom Columns"}),d.values.columns.map((f,c)=>v(a.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[v(a.Group,{position:"apart",grow:!0,children:[t(a.TextInput,S({label:"Label",required:!0,sx:{flex:1}},d.getListInputProps("columns",c,"label"))),t(ne,S({label:"Value Field",required:!0,data:o},d.getListInputProps("columns",c,"value_field"))),t(Fi,S({label:"Value Type",sx:{flex:1}},d.getListInputProps("columns",c,"value_type")))]}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>d.removeListItem("columns",c),sx:{position:"absolute",top:15,right:5},children:t(F.Trash,{size:16})})]},c)),t(a.Group,{position:"center",mt:"xs",children:t(a.Button,{onClick:p,children:"Add a Column"})})]})]}),t(a.Text,{weight:500,mb:"md",children:"Current Configuration:"}),t(oe.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(d.values,null,2)})]})})}const un=[{align:"center",size:"xl",weight:"bold",color:"black",template:"Time: ${new Date().toISOString()}"},{align:"center",size:"md",weight:"bold",color:"red",template:"Platform: ${navigator.userAgentData.platform}."}];function Ri({conf:e,setConf:r}){var i;const n=de.useForm({initialValues:{paragraphs:de.formList((i=e.paragraphs)!=null?i:un)}}),o=()=>n.addListItem("paragraphs",Q(S({},un[0]),{template:H.randomId()}));return t(a.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:v("form",{onSubmit:n.onSubmit(r),children:[n.values.paragraphs.length===0&&t(a.Text,{color:"dimmed",align:"center",children:"Empty"}),v(a.Group,{position:"apart",mb:"xs",sx:{" + .mantine-Group-root":{marginTop:0}},children:[t(a.Text,{children:"Paragraphs"}),t(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(F.DeviceFloppy,{size:20})})]}),n.values.paragraphs.map((l,u)=>v(a.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(a.TextInput,S({placeholder:"Time: ${new Date().toISOString()}",label:"Content Template",required:!0,sx:{flex:1}},n.getListInputProps("paragraphs",u,"template"))),v(a.Group,{direction:"column",grow:!0,children:[t(a.Text,{children:"Color"}),t($e,S({},n.getListInputProps("paragraphs",u,"color")))]}),t(a.Group,{direction:"column",grow:!0,children:t(a.TextInput,S({label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1}},n.getListInputProps("paragraphs",u,"size")))}),t(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:t(an,S({label:"Font Weight"},n.getListInputProps("paragraphs",u,"weight")))}),t(a.ActionIcon,{color:"red",variant:"hover",onClick:()=>n.removeListItem("paragraphs",u),sx:{position:"absolute",top:15,right:5},children:t(F.Trash,{size:16})})]},u)),t(a.Group,{position:"center",mt:"md",children:t(a.Button,{onClick:o,children:"Add a Paragraph"})}),t(a.Text,{size:"sm",weight:500,mt:"md",children:"Current Configuration:"}),t(oe.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(n.values,null,2)})]})})}const st=[{value:"text",label:"Text",Panel:Ri},{value:"stats",label:"Stats",Panel:Oi},{value:"rich-text",label:"Rich Text",Panel:Ai},{value:"table",label:"Table",Panel:Bi},{value:"sunburst",label:"Sunburst",Panel:Ni},{value:"bar-3d",label:"Bar Chart (3D)",Panel:Hr},{value:"cartesian",label:"Cartesian Chart",Panel:Ei},{value:"pie",label:"Pie Chart",Panel:Mi}];function qi(){const{data:e,viz:r,setViz:n}=x.default.useContext(le),[o,i]=H.useInputState(r.type),l=r.type!==o,u=x.default.useCallback(()=>{!l||n(f=>Q(S({},f),{type:o}))},[l,o]),s=f=>{n(c=>Q(S({},c),{conf:f}))},d=f=>{try{s(JSON.parse(f))}catch(c){console.error(c)}},p=x.default.useMemo(()=>{var f;return(f=st.find(c=>c.value===o))==null?void 0:f.Panel},[o,st]);return v(me,{children:[t(a.Select,{label:"Visualization",value:o,onChange:i,data:st,rightSection:t(a.ActionIcon,{disabled:!l,onClick:u,children:t(F.DeviceFloppy,{size:20})})}),p&&t(p,{conf:r.conf,setConf:s,data:e}),!p&&t(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(r.conf,null,2),onChange:d})]})}function $i({}){return v(a.Group,{direction:"row",grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[t(a.Group,{grow:!0,direction:"column",noWrap:!0,sx:{width:"40%",flexShrink:0,flexGrow:0},children:t(qi,{})}),t(a.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:t(Jr,{})})]})}function Vi({opened:e,close:r}){const{freezeLayout:n}=x.default.useContext(fe),{data:o,loading:i,viz:l,title:u}=x.default.useContext(le);return x.default.useEffect(()=>{n(e)},[e]),t(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:r,title:u,trapFocus:!0,onDragStart:s=>{s.stopPropagation()},children:t(a.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",width:"100%"}},padding:"md",children:v(a.Tabs,{initialTab:2,children:[v(a.Tabs.Tab,{label:"Data",children:[t(a.LoadingOverlay,{visible:i,exitTransitionDuration:0}),t(nr,{})]}),t(a.Tabs.Tab,{label:"Panel",children:t(tr,{})}),t(a.Tabs.Tab,{label:"Visualization",children:t($i,{})})]})})})}var yo="";function Wi({}){const e=Ct(),[r,n]=x.default.useState(!1),o=()=>n(!0),i=()=>n(!1),{id:l,title:u,refreshData:s}=x.default.useContext(le),{inEditMode:d}=x.default.useContext(fe),{duplidatePanel:p,removePanelByID:f,viewPanelInFullScreen:c,inFullScreen:g}=x.default.useContext(Fe),m=x.default.useCallback(()=>{p(l)},[p,l]),C=()=>e.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>f(l)}),h=x.default.useCallback(()=>{c(l)},[l,c]);return v(a.Box,{sx:{position:"relative"},children:[t(a.Box,{sx:{position:"absolute",left:0,top:0,height:28},children:t(zt,{})}),t(a.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:v(a.Menu,{control:t(a.Text,{lineClamp:1,weight:"bold",children:u}),placement:"center",children:[t(a.Menu.Item,{onClick:s,icon:t(F.Refresh,{size:14}),children:"Refresh"}),!g&&t(a.Menu.Item,{onClick:h,icon:t(F.ArrowsMaximize,{size:14}),children:"Full Screen"}),d&&v(me,{children:[t(a.Divider,{label:"Edit",labelPosition:"center"}),t(a.Menu.Item,{onClick:o,icon:t(F.Settings,{size:14}),children:"Settings"}),t(a.Menu.Item,{onClick:m,icon:t(F.Copy,{size:14}),children:"Duplicate"}),t(a.Menu.Item,{color:"red",onClick:C,icon:t(F.Trash,{size:14}),children:"Delete"})]})]})}),d&&t(Vi,{opened:r,close:i})]})}var So="";function We({viz:e,queryID:r,title:n,description:o,update:i,layout:l,id:u}){const s=x.default.useContext(pe),d=x.default.useContext(se),[p,f]=x.default.useState(n),[c,g]=x.default.useState(o),[m,C]=x.default.useState(r),[h,b]=x.default.useState(e),y=x.default.useMemo(()=>{if(!!m)return d.queries.find(E=>E.id===m)},[m,d.queries]);x.default.useEffect(()=>{i==null||i({id:u,layout:l,title:p,description:c,queryID:m,viz:h})},[p,c,y,h,u,l,m]);const{data:w=[],loading:T,refresh:P}=Qe.useRequest(yt({context:s,definitions:d,title:p,query:y}),{refreshDeps:[s,d,y]}),D=P;return t(le.Provider,{value:{id:u,data:w,loading:T,title:p,setTitle:f,description:c,setDescription:g,queryID:m,setQueryID:C,viz:h,setViz:b,refreshData:D},children:v(a.Container,{className:"panel-root",children:[t(Wi,{}),t(nn,{viz:h,data:w,loading:T})]})})}var Co="";const Ui=te.WidthProvider(vt.default);function dn({panels:e,setPanels:r,className:n="layout",rowHeight:o=10,isDraggable:i,isResizable:l}){const u=x.default.useCallback(s=>{const d=new Map;s.forEach(g=>{var m=g,{i:f}=m,c=Z(m,["i"]);d.set(f,c)});const p=e.map(f=>Q(S({},f),{layout:d.get(f.id)}));r(p)},[e,r]);return t(Ui,{onLayoutChange:u,className:n,rowHeight:o,isDraggable:i,isResizable:l,children:e.map((f,p)=>{var c=f,{id:s}=c,d=Z(c,["id"]);return t("div",{"data-grid":d.layout,children:t(We,Q(S({id:s},d),{update:g=>{r(m=>(m.splice(p,1,g),[...m]))}}))},s)})})}function ut(e,r){return v(a.Text,{sx:{svg:{verticalAlign:"text-bottom"}},children:[e," ",r]})}function ki({mode:e,setMode:r}){return t(a.SegmentedControl,{value:e,onChange:r,data:[{label:ut(t(F.PlayerPlay,{size:20}),"Use"),value:ae.Use},{label:ut(t(F.Resize,{size:20}),"Layout"),value:ae.Layout},{label:ut(t(F.Paint,{size:20}),"Content"),value:ae.Edit}]})}const Qi=`
|
|
9
|
+
*/var Ot=d.default,kt=Symbol.for("react.element"),Et=Symbol.for("react.fragment"),Ft=Object.prototype.hasOwnProperty,$t=Ot.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Bt={key:!0,ref:!0,__self:!0,__source:!0};function $e(e,n,r){var o,l={},a=null,u=null;r!==void 0&&(a=""+r),n.key!==void 0&&(a=""+n.key),n.ref!==void 0&&(u=n.ref);for(o in n)Ft.call(n,o)&&!Bt.hasOwnProperty(o)&&(l[o]=n[o]);if(e&&e.defaultProps)for(o in n=e.defaultProps,n)l[o]===void 0&&(l[o]=n[o]);return{$$typeof:kt,type:e,key:a,ref:u,props:l,_owner:$t.current}}ie.Fragment=Et,ie.jsx=$e,ie.jsxs=$e,re.exports=ie;const t=re.exports.jsx,f=re.exports.jsxs,B=re.exports.Fragment;function Be({position:e="bottom",trigger:n="hover"}){const{freezeLayout:r}=d.default.useContext(F),[o,l]=d.default.useState(!1),{description:a}=d.default.useContext(A);if(d.default.useEffect(()=>{r(o)},[o]),!a||a==="<p><br></p>")return null;const u=n==="click"?t(i.Tooltip,{label:"Click to see description",openDelay:500,children:t(b.InfoCircle,{size:20,onClick:()=>l(s=>!s),style:{verticalAlign:"baseline",cursor:"pointer"}})}):t(b.InfoCircle,{size:20,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{verticalAlign:"baseline",cursor:"pointer"}});return t(i.Popover,{opened:o,onClose:()=>l(!1),withCloseButton:n==="click",withArrow:!0,trapFocus:!0,closeOnEscape:!1,placement:"center",position:e,target:u,width:"40vw",children:t(xe.default,{readOnly:!0,value:a,onChange:C.default.noop,sx:{border:"none"}})})}function Rt(){const{description:e,setDescription:n}=d.default.useContext(A),[r,o]=d.default.useState(e),l=e!==r,a=d.default.useCallback(()=>{!l||n(r)},[l,r]);return f(i.Group,{direction:"column",sx:{flexGrow:1},children:[f(i.Group,{align:"end",children:[t(i.Text,{children:"Description"}),t(i.ActionIcon,{variant:"hover",color:"blue",disabled:!l,onClick:a,children:t(b.DeviceFloppy,{size:20})})]}),t(qe.RichTextEditor,{value:r,onChange:o,sx:{flexGrow:1},sticky:!0,p:"0"})]})}class be extends d.default.Component{constructor(n){super(n),this.state={error:null}}componentDidCatch(n){this.setState({error:n})}render(){var n;if(this.state.error){const r=()=>{this.setState({error:null})};return f(i.Box,{children:[t(i.Text,{size:"xs",children:(n=this.state.error)==null?void 0:n.message}),t(i.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:r,children:"Retry"})]})}return this.props.children}}function Vt(){const{title:e}=d.default.useContext(A);return t(be,{children:f(i.Group,{direction:"column",grow:!0,noWrap:!0,mx:"auto",mt:"xl",p:"5px",spacing:5,sx:{width:"600px",height:"450px",background:"transparent",borderRadius:"5px",boxShadow:"0px 0px 10px 0px rgba(0,0,0,.2)"},children:[f(i.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[t(i.Group,{children:t(Be,{position:"bottom",trigger:"hover"})}),t(i.Group,{grow:!0,position:"center",children:t(i.Text,{lineClamp:1,weight:"bold",children:e})}),t(i.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),t(i.Group,{sx:{background:"#eee",flexGrow:1}})]})})}function Nt(){const{title:e,setTitle:n}=d.default.useContext(A),[r,o]=G.useInputState(e),l=e!==r,a=d.default.useCallback(()=>{!l||n(r)},[l,r]);return t(i.TextInput,{value:r,onChange:o,label:f(i.Group,{align:"end",children:[t(i.Text,{children:"Panel Title"}),t(i.ActionIcon,{variant:"hover",color:"blue",disabled:!l,onClick:a,children:t(b.DeviceFloppy,{size:20})})]})})}function jt({}){return f(i.Group,{direction:"row",grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[f(i.Group,{grow:!0,direction:"column",sx:{width:"40%",flexShrink:0,flexGrow:0,height:"100%"},children:[t(Nt,{}),t(Rt,{})]}),t(i.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:t(Vt,{})})]})}function Re({id:e}){const n=d.default.useContext(D),r=d.default.useContext($),o=d.default.useMemo(()=>n.queries.find(s=>s.id===e),[n.queries,e]),{data:l=[],loading:a,refresh:u}=me.useRequest(Ee({context:r,definitions:n,title:e,query:o}),{refreshDeps:[r,n,o]});return a?t(i.LoadingOverlay,{visible:a,exitTransitionDuration:0}):l.length===0?t(i.Table,{}):f(i.Group,{my:"xl",direction:"column",grow:!0,sx:{border:"1px solid #eee"},children:[f(i.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[f(i.Group,{position:"left",children:[t(i.Text,{weight:500,children:"Preview Data"}),l.length>10&&f(i.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",l.length]})]}),t(i.ActionIcon,{mr:15,variant:"hover",color:"blue",disabled:a,onClick:u,children:t(b.Refresh,{size:15})})]}),f(i.Table,{children:[t("thead",{children:t("tr",{children:Object.keys(l==null?void 0:l[0]).map(s=>t("th",{children:t(i.Text,{weight:700,color:"#000",children:s})},s))})}),t("tbody",{children:l.slice(0,10).map((s,p)=>t("tr",{children:Object.values(s).map((m,c)=>t("td",{children:t(i.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:t(i.Text,{children:m})})},`${m}--${c}`))},`row-${p}`))})]})]})}function Wt({}){const{queries:e}=d.default.useContext(D),{queryID:n,setQueryID:r,data:o,loading:l}=d.default.useContext(A),a=d.default.useMemo(()=>e.map(u=>({value:u.id,label:u.id})),[e]);return f(i.Group,{direction:"column",grow:!0,noWrap:!0,children:[f(i.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[t(i.Text,{children:"Select a Query"}),t(i.Select,{data:a,value:n,onChange:r,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}})]}),t(Re,{id:n})]})}E.use([J.SunburstChart,ee.CanvasRenderer]);const Qt={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function Ut({conf:e,data:n,width:r,height:o}){const{label_field:l="name",value_field:a="value",...u}=e,s=d.default.useMemo(()=>n.map(h=>({name:h[l],value:Number(h[a])})),[n,l,a]),p=d.default.useMemo(()=>{var h,x;return(x=(h=C.default.maxBy(s,g=>g.value))==null?void 0:h.value)!=null?x:1},[s]),m=d.default.useMemo(()=>({series:{label:{formatter:({name:h,value:x})=>x/p<.2?" ":h}}}),[p]),c=C.default.merge({},Qt,m,u,{series:{data:s}});return t(te.default,{echarts:E,option:c,style:{width:r,height:o}})}function Jt({regressions:e=[]},n){const r=[],o=[],l=[];return n.length===0?{regressionDataSets:r,regressionSeries:o,regressionXAxes:l}:(e.forEach(({transform:a,plot:u,name:s,y_axis_data_key:p})=>{const m=`x-axis-for-${s}`,c=`dataset-for-${s}--raw`,h=`dataset-for-${s}--transformed`;r.push({id:c,source:n.map((x,g)=>[g,x[p]])}),r.push({transform:a,id:h,fromDatasetId:c}),o.push({...u,name:s,datasetId:h,xAxisId:m,showSymbol:!1,tooltip:{show:!1}}),l.push({type:"category",id:m,datasetId:h,show:!1})}),{regressionDataSets:r,regressionSeries:o,regressionXAxes:l})}const Yt={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"axis"},xAxis:{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"}},grid:{top:0,left:15,right:15,bottom:30,containLabel:!0}};function Xt(e,n){var m;const r=e.y_axes.reduce((c,{label_formatter:h},x)=>(c[x]=function(v){const w=typeof v=="object"?v.value:v;if(!h)return w;try{return Y.default(w).format(h)}catch(M){return console.error(M),w}},c),{default:({value:c})=>c}),o=e.series.reduce((c,{yAxisIndex:h,name:x})=>(c[x]=h,c),{}),l=e.series.map(({y_axis_data_key:c,yAxisIndex:h,label_position:x,name:g,...v})=>({data:n.map(M=>M[c]),label:{show:!!x,position:x,formatter:r[h!=null?h:"default"]},name:g,xAxisId:"main-x-axis",yAxisIndex:h,...v})),{regressionDataSets:a,regressionSeries:u,regressionXAxes:s}=Jt(e,n),p={xAxis:[{data:n.map(c=>c[e.x_axis_data_key]),name:(m=e.x_axis_name)!=null?m:"",id:"main-x-axis"},...s],yAxis:e.y_axes.map(({label_formatter:c,...h},x)=>{var g;return{...h,axisLabel:{show:!0,formatter:(g=r[x])!=null?g:r.default}}}),dataset:[...a],series:[...l,...u],tooltip:{formatter:function(c){const h=Array.isArray(c)?c:[c];if(h.length===0)return"";const x=h.map(({seriesName:g,value:v})=>{var L;if(!g)return v;const w=o[g],M=(L=r[w])!=null?L:r.default;return`${g}: ${M({value:v})}`});return x.unshift(`<strong>${h[0].name}</strong>`),x.join("<br />")}}};return C.default.merge({},Yt,p)}function Kt(e){const n=Array.from(e).sort((o,l)=>o-l),r=Math.floor(n.length/2);return n.length%2===0?(n[r-1]+n[r])/2:n[r]}function Zt(e,n,r){var l,a,u;const o=e.map(s=>s[n]);switch(r){case"sum":return C.default.sum(o);case"mean":return C.default.mean(o);case"median":return Kt(o);case"max":return(l=C.default.max(o))!=null?l:0;case"min":return(a=C.default.min(o))!=null?a:0;default:return(u=e[0])==null?void 0:u[n]}}var Ve=function(){};const Ht=(e,n,r)=>Math.min(Math.max(r,e),n),Ne=(e,n,r)=>{const o=n-e;return o===0?1:(r-e)/o},ye=(e,n,r)=>-r*e+r*n+e,je=(e,n)=>r=>Math.max(Math.min(r,n),e),X=e=>e%1?Number(e.toFixed(5)):e,le=/(-)?([\d]*\.?[\d])+/g,Se=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,en=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function K(e){return typeof e=="string"}const oe={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},We=Object.assign(Object.assign({},oe),{transform:je(0,1)});Object.assign(Object.assign({},oe),{default:1});const Z=(e=>({test:n=>K(n)&&n.endsWith(e)&&n.split(" ").length===1,parse:parseFloat,transform:n=>`${n}${e}`}))("%");Object.assign(Object.assign({},Z),{parse:e=>Z.parse(e)/100,transform:e=>Z.transform(e*100)});const Ce=(e,n)=>r=>Boolean(K(r)&&en.test(r)&&r.startsWith(e)||n&&Object.prototype.hasOwnProperty.call(r,n)),Qe=(e,n,r)=>o=>{if(!K(o))return o;const[l,a,u,s]=o.match(le);return{[e]:parseFloat(l),[n]:parseFloat(a),[r]:parseFloat(u),alpha:s!==void 0?parseFloat(s):1}},Q={test:Ce("hsl","hue"),parse:Qe("hue","saturation","lightness"),transform:({hue:e,saturation:n,lightness:r,alpha:o=1})=>"hsla("+Math.round(e)+", "+Z.transform(X(n))+", "+Z.transform(X(r))+", "+X(We.transform(o))+")"},tn=je(0,255),ve=Object.assign(Object.assign({},oe),{transform:e=>Math.round(tn(e))}),R={test:Ce("rgb","red"),parse:Qe("red","green","blue"),transform:({red:e,green:n,blue:r,alpha:o=1})=>"rgba("+ve.transform(e)+", "+ve.transform(n)+", "+ve.transform(r)+", "+X(We.transform(o))+")"};function nn(e){let n="",r="",o="",l="";return e.length>5?(n=e.substr(1,2),r=e.substr(3,2),o=e.substr(5,2),l=e.substr(7,2)):(n=e.substr(1,1),r=e.substr(2,1),o=e.substr(3,1),l=e.substr(4,1),n+=n,r+=r,o+=o,l+=l),{red:parseInt(n,16),green:parseInt(r,16),blue:parseInt(o,16),alpha:l?parseInt(l,16)/255:1}}const we={test:Ce("#"),parse:nn,transform:R.transform},ae={test:e=>R.test(e)||we.test(e)||Q.test(e),parse:e=>R.test(e)?R.parse(e):Q.test(e)?Q.parse(e):we.parse(e),transform:e=>K(e)?e:e.hasOwnProperty("red")?R.transform(e):Q.transform(e)},Ue="${c}",Je="${n}";function rn(e){var n,r,o,l;return isNaN(e)&&K(e)&&((r=(n=e.match(le))===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0)+((l=(o=e.match(Se))===null||o===void 0?void 0:o.length)!==null&&l!==void 0?l:0)>0}function Ye(e){typeof e=="number"&&(e=`${e}`);const n=[];let r=0;const o=e.match(Se);o&&(r=o.length,e=e.replace(Se,Ue),n.push(...o.map(ae.parse)));const l=e.match(le);return l&&(e=e.replace(le,Je),n.push(...l.map(oe.parse))),{values:n,numColors:r,tokenised:e}}function Xe(e){return Ye(e).values}function Ke(e){const{values:n,numColors:r,tokenised:o}=Ye(e),l=n.length;return a=>{let u=o;for(let s=0;s<l;s++)u=u.replace(s<r?Ue:Je,s<r?ae.transform(a[s]):X(a[s]));return u}}const ln=e=>typeof e=="number"?0:e;function on(e){const n=Xe(e);return Ke(e)(n.map(ln))}const Ze={test:rn,parse:Xe,createTransformer:Ke,getAnimatableNone:on};function Te(e,n,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(n-e)*6*r:r<1/2?n:r<2/3?e+(n-e)*(2/3-r)*6:e}function He({hue:e,saturation:n,lightness:r,alpha:o}){e/=360,n/=100,r/=100;let l=0,a=0,u=0;if(!n)l=a=u=r;else{const s=r<.5?r*(1+n):r+n-r*n,p=2*r-s;l=Te(p,s,e+1/3),a=Te(p,s,e),u=Te(p,s,e-1/3)}return{red:Math.round(l*255),green:Math.round(a*255),blue:Math.round(u*255),alpha:o}}const an=(e,n,r)=>{const o=e*e,l=n*n;return Math.sqrt(Math.max(0,r*(l-o)+o))},sn=[we,R,Q],et=e=>sn.find(n=>n.test(e)),tt=(e,n)=>{let r=et(e),o=et(n),l=r.parse(e),a=o.parse(n);r===Q&&(l=He(l),r=R),o===Q&&(a=He(a),o=R);const u=Object.assign({},l);return s=>{for(const p in u)p!=="alpha"&&(u[p]=an(l[p],a[p],s));return u.alpha=ye(l.alpha,a.alpha,s),r.transform(u)}},un=e=>typeof e=="number",dn=(e,n)=>r=>n(e(r)),nt=(...e)=>e.reduce(dn);function rt(e,n){return un(e)?r=>ye(e,n,r):ae.test(e)?tt(e,n):ot(e,n)}const it=(e,n)=>{const r=[...e],o=r.length,l=e.map((a,u)=>rt(a,n[u]));return a=>{for(let u=0;u<o;u++)r[u]=l[u](a);return r}},cn=(e,n)=>{const r=Object.assign(Object.assign({},e),n),o={};for(const l in r)e[l]!==void 0&&n[l]!==void 0&&(o[l]=rt(e[l],n[l]));return l=>{for(const a in o)r[a]=o[a](l);return r}};function lt(e){const n=Ze.parse(e),r=n.length;let o=0,l=0,a=0;for(let u=0;u<r;u++)o||typeof n[u]=="number"?o++:n[u].hue!==void 0?a++:l++;return{parsed:n,numNumbers:o,numRGB:l,numHSL:a}}const ot=(e,n)=>{const r=Ze.createTransformer(n),o=lt(e),l=lt(n);return o.numHSL===l.numHSL&&o.numRGB===l.numRGB&&o.numNumbers>=l.numNumbers?nt(it(o.parsed,l.parsed),r):u=>`${u>0?n:e}`},pn=(e,n)=>r=>ye(e,n,r);function fn(e){if(typeof e=="number")return pn;if(typeof e=="string")return ae.test(e)?tt:ot;if(Array.isArray(e))return it;if(typeof e=="object")return cn}function mn(e,n,r){const o=[],l=r||fn(e[0]),a=e.length-1;for(let u=0;u<a;u++){let s=l(e[u],e[u+1]);if(n){const p=Array.isArray(n)?n[u]:n;s=nt(p,s)}o.push(s)}return o}function hn([e,n],[r]){return o=>r(Ne(e,n,o))}function xn(e,n){const r=e.length,o=r-1;return l=>{let a=0,u=!1;if(l<=e[0]?u=!0:l>=e[o]&&(a=o-1,u=!0),!u){let p=1;for(;p<r&&!(e[p]>l||p===o);p++);a=p-1}const s=Ne(e[a],e[a+1],l);return n[a](s)}}function gn(e,n,{clamp:r=!0,ease:o,mixer:l}={}){const a=e.length;Ve(a===n.length),Ve(!o||!Array.isArray(o)||o.length===a-1),e[0]>e[a-1]&&(e=[].concat(e),n=[].concat(n),e.reverse(),n.reverse());const u=mn(n,o,l),s=a===2?hn(e,u):xn(e,u);return r?p=>s(Ht(e[0],e[a-1],p)):s}class bn{constructor({valueRange:n,colorRange:r}){yt(this,"mapper");this.mapper=gn(n,r)}getColor(n){return this.mapper(n)}}function yn(e,n){return e.type==="static"?e.staticColor:e.type==="continuous"?new bn(e).getColor(n):"black"}function Sn(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function Cn(e,n){const r={};return e.forEach(({name:o,color:l,data_field:a,aggregation:u,size:s,weight:p,formatter:m})=>{const c=Zt(n,a,u);let h="";["string","number"].includes(typeof c)?h=Y.default(c).format(m):h=Sn(c),r[o]=t(i.Text,{sx:{fontSize:s,display:"inline"},color:yn(l,c),weight:p,children:h})}),r}function vn(e){return e.split(" ").map(n=>f(B,{children:[n,"\xA0"]}))}function wn(e){const r=e.replaceAll("<br />","<br/>").replaceAll(`
|
|
10
|
+
`,"<br/>").split("<br/>");return r.map((l,a)=>{const u=[vn(l)];return a!==r.length-1&&u.push(t("br",{})),u}).flat().filter(l=>l!==void 0)}function Ge(e){return wn(e)}function _e(e,n,r){const o=Cn(n,r),l=/^\{(.+)\}(.*)$/;return e.split("$").map(a=>{var m;const u=l.exec(a);if(!u)return Ge(a);const s=o[u[1]];if(!s)return Ge(a);const p=(m=u[2])!=null?m:"";return f(B,{children:[s,Ge(p)]})})}E.use([J.BarChart,J.LineChart,J.ScatterChart,j.GridComponent,j.LegendComponent,j.TooltipComponent,ee.CanvasRenderer]),E.registerTransform(wt.transform.regression);function at(e){return e.trim().length>0}function Tn({conf:e,data:n,width:r,height:o}){const l=d.default.useMemo(()=>Xt(e,n),[e,n]);return!r||!o?null:t(te.default,{echarts:E,option:l,style:{width:r,height:o}})}function Gn({conf:e,data:n,width:r,height:o}){const{ref:l,height:a}=G.useElementSize(),{ref:u,height:s}=G.useElementSize(),p=d.default.useMemo(()=>{const{stats:{templates:c,variables:h}}=e;return{top:_e(c.top,h,n),bottom:_e(c.bottom,h,n)}},[e,n]),m=Math.max(0,o-a-s);return f(i.Box,{children:[at(e.stats.templates.top)&&t(i.Text,{ref:l,align:"left",size:"xs",pl:"sm",children:Object.values(p.top).map(c=>c)}),t(Tn,{width:r,height:m,data:n,conf:e}),at(e.stats.templates.bottom)&&t(i.Text,{ref:u,align:"left",size:"xs",pl:"sm",children:Object.values(p.bottom).map(c=>c)})]})}var V=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e))(V||{});function _n({value:e}){return t(i.Text,{component:"span",children:e})}function Pn({value:e}){return t(i.Text,{component:"span",children:e})}function zn({value:e}){const n=Y.default(e).format({thousandSeparated:!0});return t(i.Text,{component:"span",children:n})}function In({value:e}){const n=Y.default(e).format({output:"percent",mantissa:3});return t(i.Text,{component:"span",children:n})}function An({value:e,type:n}){switch(n){case V.string:return t(_n,{value:e});case V.eloc:return t(Pn,{value:e});case V.number:return t(zn,{value:e});case V.percentage:return t(In,{value:e})}}function Dn({conf:e,data:n=[],width:r,height:o}){const{id_field:l,use_raw_columns:a,columns:u,...s}=e,p=d.default.useMemo(()=>a?Object.keys(n==null?void 0:n[0]):u.map(c=>c.label),[a,u,n]),m=d.default.useMemo(()=>a?Object.keys(n==null?void 0:n[0]).map(c=>({label:c,value_field:c,value_type:V.string})):u,[a,u,n]);return f(i.Table,{sx:{maxHeight:o},...s,children:[t("thead",{children:t("tr",{children:p.map(c=>t("th",{children:c},c))})}),t("tbody",{children:n.slice(0,30).map((c,h)=>t("tr",{children:m.map(({value_field:x,value_type:g})=>t("td",{children:t(i.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace",fontSize:s.fontSize}},children:t(An,{value:c[x],type:g})})},`${x}--${c[x]}`))},l?c[l]:`row-${h}`))}),n.length>100&&t("tfoot",{children:t("tr",{children:t("td",{colSpan:p.length,children:t(i.Text,{color:"red",size:"sm",children:"Showing only the first 30 rows to avoid causing slow performance"})})})})]})}function Mn(e,n={}){const r={...n,numbro:Y.default},o=Object.keys(r),l=Object.values(r);try{return new Function(...o,`return \`${e}\`;`)(...l)}catch(a){return a.message}}function Ln({conf:{paragraphs:e},data:n}){return t(B,{children:e.map(({template:r,size:o,...l},a)=>t(i.Text,{...l,sx:{fontSize:o},children:Mn(r,n[0])},`${r}---${a}`))})}E.use([j.GridComponent,j.VisualMapComponent,j.LegendComponent,j.TooltipComponent,ee.CanvasRenderer]);function qn({conf:e,data:n,width:r,height:o}){const{x_axis_data_key:l,y_axis_data_key:a,z_axis_data_key:u,...s}=e,p=d.default.useMemo(()=>C.default.minBy(n,h=>h[u])[u],[n,u]),m=d.default.useMemo(()=>C.default.maxBy(n,h=>h[u])[u],[n,u]),c={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:p,max:m,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:{type:"value"},yAxis3D:{type:"value"},zAxis3D:{type:"value"},grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},...s,series:[{type:"bar3D",wireframe:{},data:n.map(h=>[h[l],h[a],h[u]])}]};return t(te.default,{echarts:E,option:c,style:{width:r,height:o}})}var ci="";E.use([J.PieChart,ee.CanvasRenderer]);const On={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
|
|
11
|
+
{percentage|{d}%}`,minMargin:5,edgeDistance:10,lineHeight:15,rich:{percentage:{color:"#999"}},margin:20},labelLine:{length:15,length2:0,maxSurfaceAngle:80,showAbove:!0},top:10,bottom:10,left:10,right:10}};function kn({conf:e,data:n,width:r,height:o}){const{label_field:l="name",value_field:a="value",...u}=e,s=d.default.useMemo(()=>n.map(c=>({name:c[l],value:Number(c[a])})),[n,l,a]),p=d.default.useMemo(()=>({series:{labelLayout:function(c){const h=c.labelRect.x<r/2,x=c.labelLinePoints;return x[2][0]=h?c.labelRect.x:c.labelRect.x+c.labelRect.width,{labelLinePoints:x}}}}),[r]),m=C.default.merge({},On,p,u,{series:{data:s}});return t(te.default,{echarts:E,option:m,style:{width:r,height:o}})}function En({conf:{template:e,variables:n,align:r},data:o}){const l=d.default.useMemo(()=>_e(e,n,o),[e,n,o]);return t(i.Text,{align:r,children:Object.values(l).map(a=>a)})}function Fn({conf:e,width:n,height:r}){return!n||!r?null:t(xe.default,{readOnly:!0,value:e.content,onChange:C.default.noop,sx:{border:"none"}})}function st(e,n,r,o){const l={width:e,height:n,data:r,conf:o.conf};switch(o.type){case"sunburst":return t(Ut,{...l});case"cartesian":return t(Gn,{...l});case"table":return t(Dn,{...l});case"text":return t(Ln,{...l});case"stats":return t(En,{...l});case"rich-text":return t(Fn,{...l});case"bar-3d":return t(qn,{...l});case"pie":return t(kn,{...l});default:return null}}const $n=["rich-text"];function ut({viz:e,data:n,loading:r}){const{ref:o,width:l,height:a}=G.useElementSize();if(!!$n.includes(e.type))return t("div",{className:"viz-root",ref:o,children:t(be,{children:st(l,a,n,e)})});const s=d.default.useMemo(()=>!Array.isArray(n)||n.length===0,[n]);return r?t("div",{className:"viz-root",ref:o,children:t(i.LoadingOverlay,{visible:r,exitTransitionDuration:0})}):f("div",{className:"viz-root",ref:o,children:[s&&t(i.Text,{color:"gray",align:"center",children:"nothing to show"}),!s&&t(be,{children:st(l,a,n,e)})]})}function Bn({}){const{data:e,loading:n,viz:r}=d.default.useContext(A);return t(ut,{viz:r,data:e,loading:n})}function Rn({label:e,required:n,value:r,onChange:o,data:l,sx:a},u){const s=d.default.useMemo(()=>!Array.isArray(l)||l.length===0?[]:Object.keys(l[0]).map(m=>({label:m,value:m})),[l]);return t(i.Select,{ref:u,label:e,data:s,value:r,onChange:o,required:n,sx:a})}const _=d.default.forwardRef(Rn);function Vn({conf:e,setConf:n,data:r}){const o=C.default.assign({},{x_axis_data_key:"x",y_axis_data_key:"y",z_axis_data_key:"z",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}},e),{control:l,handleSubmit:a,formState:u}=S.useForm({defaultValues:o});return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:a(n),children:[t(i.Text,{children:"X Axis"}),f(i.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(S.Controller,{name:"x_axis_data_key",control:l,render:({field:s})=>t(_,{label:"Data Field",required:!0,data:r,...s})}),t(S.Controller,{name:"xAxis3D.name",control:l,render:({field:s})=>t(i.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...s})})]}),t(i.Text,{mt:"lg",children:"Y Axis"}),f(i.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(S.Controller,{name:"y_axis_data_key",control:l,render:({field:s})=>t(_,{label:"Data Field",required:!0,data:r,...s})}),t(S.Controller,{name:"yAxis3D.name",control:l,render:({field:s})=>t(i.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...s})})]}),t(i.Text,{mt:"lg",children:"Z Axis"}),f(i.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(S.Controller,{name:"z_axis_data_key",control:l,render:({field:s})=>t(_,{label:"Data Field",required:!0,data:r,...s})}),t(S.Controller,{name:"zAxis3D.name",control:l,render:({field:s})=>t(i.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...s})})]}),t(i.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:f(i.Button,{color:"blue",type:"submit",children:[t(b.DeviceFloppy,{size:20}),t(i.Text,{ml:"md",children:"Save"})]})})]})})}function Nn({value:e,onChange:n},r){const o=i.useMantineTheme(),l=d.default.useMemo(()=>Object.entries(o.colors).map(([u,s])=>({label:u,value:s[6]})),[o]),a=d.default.useMemo(()=>l.some(u=>u.value===e),[e,l]);return f(i.Group,{position:"apart",spacing:4,children:[t(i.TextInput,{placeholder:"Set any color",value:a?"":e,onChange:u=>n(u.currentTarget.value),rightSection:t(i.ColorSwatch,{color:a?"transparent":e,radius:4}),variant:a?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),t(i.Text,{sx:{flexGrow:0},children:"or"}),t(i.Select,{data:l,value:e,onChange:n,variant:a?"default":"filled",placeholder:"Pick a theme color",icon:t(i.ColorSwatch,{color:a?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const se=d.default.forwardRef(Nn);function jn({control:e,index:n}){return f(i.Group,{direction:"row",grow:!0,align:"top",children:[t(S.Controller,{name:`series.${n}.stack`,control:e,render:({field:r})=>t(i.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...r})}),t(S.Controller,{name:`series.${n}.barWidth`,control:e,render:({field:r})=>t(i.TextInput,{label:"Bar Width",sx:{flexGrow:1},...r})})]})}const Wn=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}];function Qn({control:e,index:n}){return f(i.Group,{direction:"row",grow:!0,align:"center",children:[t(S.Controller,{name:`series.${n}.step`,control:e,render:({field:r})=>t(i.Select,{label:"Step",data:Wn,sx:{flexGrow:1,maxWidth:"48%"},...r,value:String(r.value),onChange:o=>{const l=o==="false"?!1:o;r.onChange(l)}})}),t(S.Controller,{name:`series.${n}.smooth`,control:e,render:({field:r})=>t(i.Box,{sx:{flexGrow:1},children:t(i.Switch,{label:"Smooth Line",checked:r.value,onChange:o=>r.onChange(o.currentTarget.checked)})})})]})}const Un=Array.from(new Array(9),(e,n)=>({label:String(n+1),value:n+1}));function Jn({control:e,index:n}){return t(i.Group,{direction:"row",grow:!0,align:"center",children:t(S.Controller,{name:`series.${n}.symbolSize`,control:e,render:({field:r})=>f(i.Group,{direction:"column",noWrap:!0,sx:{flexGrow:1},pb:16,spacing:4,children:[t(i.Text,{size:"sm",children:"Size"}),t(i.Slider,{min:1,max:10,marks:Un,...r,sx:{width:"100%"}})]})})})}const Yn=[{label:"off",value:""},{label:"top",value:"top"},{label:"left",value:"left"},{label:"right",value:"right"},{label:"bottom",value:"bottom"},{label:"inside",value:"inside"},{label:"insideLeft",value:"insideLeft"},{label:"insideRight",value:"insideRight"},{label:"insideTop",value:"insideTop"},{label:"insideBottom",value:"insideBottom"},{label:"insideTopLeft",value:"insideTopLeft"},{label:"insideBottomLeft",value:"insideBottomLeft"},{label:"insideTopRight",value:"insideTopRight"},{label:"insideBottomRight",value:"insideBottomRight"}];function Xn({control:e,index:n,remove:r,seriesItem:o,yAxisOptions:l,data:a}){const u=o.type;return f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(i.Group,{direction:"column",grow:!0,noWrap:!0,children:t(S.Controller,{name:`series.${n}.type`,control:e,render:({field:s})=>t(i.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}],...s})})}),t(S.Controller,{name:`series.${n}.name`,control:e,render:({field:s})=>t(i.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),f(i.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(S.Controller,{name:`series.${n}.y_axis_data_key`,control:e,render:({field:s})=>t(_,{label:"Value Field",required:!0,data:a,sx:{flex:1},...s})}),t(S.Controller,{name:`series.${n}.yAxisIndex`,control:e,render:({field:{value:s,onChange:p,...m}})=>{var c;return t(i.Select,{label:"Y Axis",data:l,disabled:l.length===0,...m,value:(c=s==null?void 0:s.toString())!=null?c:"",onChange:h=>{if(!h){p(0);return}p(Number(h))},sx:{flex:1}})}})]}),u==="line"&&t(Qn,{index:n,control:e}),u==="bar"&&t(jn,{index:n,control:e}),u==="scatter"&&t(Jn,{index:n,control:e}),t(S.Controller,{name:`series.${n}.label_position`,control:e,render:({field:s})=>t(i.Select,{label:"Label Position",data:Yn,...s})}),f(i.Group,{direction:"column",grow:!0,spacing:4,children:[t(i.Text,{size:"sm",children:"Color"}),t(S.Controller,{name:`series.${n}.color`,control:e,render:({field:s})=>t(se,{...s})})]}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},n)}function Kn({control:e,watch:n,getValues:r,data:o}){const{fields:l,append:a,remove:u}=S.useFieldArray({control:e,name:"series"}),s=n("series"),p=l.map((h,x)=>({...h,...s[x]})),m=()=>a({type:"bar",name:G.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",stack:"",color:"#000",step:!1,smooth:!1}),c=d.default.useMemo(()=>r().y_axes.map(({name:h},x)=>({label:h,value:x.toString()})),[r]);return f(i.Group,{direction:"column",grow:!0,children:[p.map((h,x)=>t(Xn,{control:e,index:x,remove:u,seriesItem:h,yAxisOptions:c,data:o})),t(i.Group,{position:"center",mt:"xs",children:t(i.Button,{onClick:m,children:"Add a Series"})})]})}const dt={mantissa:0,output:"number"};function Zn({value:e,onChange:n},r){const o=u=>{n({...e,output:u})},l=u=>{const s=u===0?!1:e.trimMantissa;n({...e,mantissa:u,trimMantissa:s})},a=u=>{n({...e,trimMantissa:u.currentTarget.checked})};return t(i.Group,{direction:"column",grow:!0,noWrap:!0,ref:r,children:f(i.Group,{direction:"row",grow:!0,children:[t(i.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:o}),t(i.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:l}),t(i.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:a,disabled:e.mantissa===0})]})})}const ct=d.default.forwardRef(Zn);function Hn({control:e,index:n,remove:r}){return f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(i.Group,{direction:"row",grow:!0,noWrap:!0,children:t(S.Controller,{name:`y_axes.${n}.name`,control:e,render:({field:o})=>t(i.TextInput,{label:"Name",required:!0,sx:{flex:1},...o})})}),t(i.Group,{direction:"column",grow:!0,noWrap:!0,children:t(S.Controller,{name:`y_axes.${n}.label_formatter`,control:e,render:({field:o})=>t(ct,{...o})})}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},disabled:n===0,children:t(b.Trash,{size:16})})]},n)}function er({control:e,watch:n}){const{fields:r,append:o,remove:l}=S.useFieldArray({control:e,name:"y_axes"}),a=n("y_axes"),u=r.map((p,m)=>({...p,...a[m]})),s=()=>o({name:"",label_formatter:dt});return f(i.Group,{direction:"column",grow:!0,children:[u.map((p,m)=>t(Hn,{control:e,index:m,remove:l})),t(i.Group,{position:"center",mt:"xs",children:t(i.Button,{onClick:s,children:"Add a Y Axis"})})]})}const tr=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function nr({control:e,regressionItem:n,index:r,remove:o,yAxisOptions:l,data:a}){const u=n.transform.config.method;return f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(S.Controller,{name:`regressions.${r}.name`,control:e,render:({field:s})=>t(i.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),f(i.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(S.Controller,{name:`regressions.${r}.y_axis_data_key`,control:e,render:({field:s})=>t(_,{label:"Value Field",required:!0,data:a,sx:{flex:1},...s})}),t(S.Controller,{name:`regressions.${r}.plot.yAxisIndex`,control:e,render:({field:{value:s,onChange:p,...m}})=>{var c;return t(i.Select,{label:"Y Axis",data:l,disabled:l.length===0,...m,value:(c=s==null?void 0:s.toString())!=null?c:"",onChange:h=>{if(!h){p(0);return}p(Number(h))},sx:{flex:1}})}})]}),f(i.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(S.Controller,{name:`regressions.${r}.transform.config.method`,control:e,render:({field:s})=>t(i.Select,{label:"Method",data:tr,sx:{flex:1},...s})}),u==="polynomial"&&t(S.Controller,{name:`regressions.${r}.transform.config.order`,control:e,render:({field:s})=>t(i.NumberInput,{label:"Order",sx:{flex:1},...s})})]}),f(i.Group,{direction:"column",grow:!0,spacing:4,children:[t(i.Text,{size:"sm",children:"Color"}),t(S.Controller,{name:`regressions.${r}.plot.color`,control:e,render:({field:s})=>t(se,{...s})})]}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>o(r),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},r)}function rr({control:e,watch:n,getValues:r,data:o}){const{fields:l,append:a,remove:u}=S.useFieldArray({control:e,name:"regressions"}),s=n("regressions"),p=l.map((h,x)=>({...h,...s[x]})),m=d.default.useMemo(()=>r().y_axes.map(({name:h},x)=>({label:h,value:x.toString()})),[r]),c=()=>a({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666"}});return f(i.Group,{direction:"column",grow:!0,children:[p.map((h,x)=>t(nr,{regressionItem:h,control:e,index:x,remove:u,yAxisOptions:m,data:o})),t(i.Group,{position:"center",mt:"xs",children:t(i.Button,{onClick:c,children:"Add a Regression Line"})})]})}const ir=[{label:"None",value:"none"},{label:"Sum",value:"sum"},{label:"Mean",value:"mean"},{label:"Median",value:"median"},{label:"Max",value:"max"},{label:"Min",value:"min"}];function lr({label:e,value:n,onChange:r},o){return t(i.Select,{ref:o,label:e,data:ir,value:n,onChange:r})}const or=d.default.forwardRef(lr);function ar({label:e,value:n,onChange:r},o){const[l,a]=d.default.useState(Array.isArray(n)?[...n]:[]),u=d.default.useCallback(()=>{a(x=>[...x,""])},[a]),s=d.default.useCallback(x=>{a(g=>(g.splice(x,1),[...g]))},[a]),p=d.default.useMemo(()=>!C.default.isEqual(l,n),[l,n]),m=()=>{r(l.map(x=>x.toString()))},c=i.useMantineTheme(),h=d.default.useMemo(()=>Object.entries(c.colors).map(([x,g])=>g[6]),[c]);return f(B,{children:[f(i.Group,{position:"left",ref:o,children:[t(i.Text,{children:e}),t(i.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!p,onClick:m,children:t(b.DeviceFloppy,{size:20})})]}),f(i.Group,{children:[l.map((x,g)=>t(i.ColorInput,{value:x,onChange:v=>{a(w=>(w.splice(g,1,v),[...w]))},swatches:h,rightSection:t(i.ActionIcon,{onClick:()=>s(g),color:"red",children:t(b.Trash,{size:14})}),sx:{width:"45%"}})),t(i.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:t(b.PlaylistAdd,{size:20})})]})]})}const sr=d.default.forwardRef(ar),ue=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function ur({label:e,value:n,onChange:r},o){var u,s;const[l,a]=d.default.useState((s=(u=ue.find(p=>p.label===n))==null?void 0:u.value)!=null?s:ue[0].value);return d.default.useEffect(()=>{const p=ue.find(m=>m.value===l);p&&r(p.label)},[l]),f(i.Group,{direction:"column",grow:!0,spacing:0,mt:"sm",mb:"lg",children:[t(i.Text,{size:"sm",children:e}),t(i.Slider,{label:null,marks:ue,value:l,onChange:a,step:25,placeholder:"Pick a font size",ref:o})]})}const pt=d.default.forwardRef(ur);function dr({label:e,value:n,onChange:r},o){const[l,a]=d.default.useState(Array.isArray(n)?[...n]:[]),u=d.default.useCallback(()=>{a(c=>[...c,""])},[a]),s=d.default.useCallback(c=>{a(h=>(h.splice(c,1),[...h]))},[a]),p=d.default.useMemo(()=>!C.default.isEqual(l,n),[l,n]),m=()=>{r(l.map(c=>c.toString()))};return f(B,{children:[f(i.Group,{position:"left",ref:o,children:[t(i.Text,{children:e}),t(i.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!p,onClick:m,children:t(b.DeviceFloppy,{size:20})})]}),f(i.Group,{children:[l.map((c,h)=>t(i.TextInput,{value:c,onChange:x=>{const g=x.currentTarget.value;a(v=>(v.splice(h,1,g),[...v]))},rightSection:t(i.ActionIcon,{onClick:()=>s(h),color:"red",children:t(b.Trash,{size:14})}),sx:{width:"45%"}})),t(i.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:t(b.PlaylistAdd,{size:20})})]})]})}const cr=d.default.forwardRef(dr);function ft(){return{name:G.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:"none",formatter:{output:"number",mantissa:0}}}const Pe=d.default.forwardRef(function({value:n,onChange:r,...o},l){return t(i.TextInput,{ref:l,value:n,onChange:r,...o})});function mt({value:e,onChange:n,data:r}){const o=e.color.type,l=(a,u)=>{const s=C.default.cloneDeep(e);C.default.set(s,a,u),n(s)};return f(i.Box,{px:"sm",py:"md",children:[t(i.Text,{weight:"bold",pb:0,children:e.name}),t(i.Divider,{my:"xs",label:"Data",labelPosition:"center"}),f(i.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(i.TextInput,{label:"Name",required:!0,value:e.name,onChange:a=>l("name",a.currentTarget.value)}),t(_,{label:"Data Field",required:!0,data:r,value:e.data_field,onChange:a=>l("data_field",a)}),t(or,{label:"Aggregation",value:e.aggregation,onChange:a=>l("aggregation",a)})]}),t(ct,{value:e.formatter,onChange:a=>l("formatter",a)}),t(i.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),t(i.Group,{direction:"column",grow:!0,children:t(i.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:e.size,onChange:a=>l("size",a.currentTarget.value)})}),t(i.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:t(pt,{label:"Font Weight",value:e.weight,onChange:a=>l("weight",a)})}),t(i.Divider,{my:"xs",label:"Style",labelPosition:"center"}),f(i.Group,{direction:"column",grow:!0,children:[t(i.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:e.color.type,onChange:a=>l("color.type",a)}),o==="static"&&t(se,{value:e.color.staticColor,onChange:a=>l("color.staticColor",a)}),o==="continuous"&&f(B,{children:[t(cr,{label:"Value Range",value:e.color.valueRange,onChange:a=>l("color.valueRange",a)}),t(sr,{label:"Color Range",value:e.color.colorRange,onChange:a=>l("color.colorRange",a)})]})]})]})}function pr({control:e,index:n,remove:r,data:o}){return f(i.Group,{direction:"column",grow:!0,my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[t(S.Controller,{name:`stats.variables.${n}`,control:e,render:({field:l})=>t(mt,{data:o,...l})}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},n)}function fr({control:e,watch:n,data:r}){const{fields:o,append:l,remove:a}=S.useFieldArray({control:e,name:"stats.variables"});n("stats.templates");const u=n("stats.variables"),s=o.map((m,c)=>({...m,...u[c]})),p=()=>l(ft());return f(i.Group,{direction:"column",grow:!0,children:[f(i.Group,{direction:"column",grow:!0,noWrap:!0,spacing:0,children:[t(S.Controller,{name:"stats.templates.top",control:e,render:({field:m})=>t(Pe,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...m})}),t(S.Controller,{name:"stats.templates.bottom",control:e,render:({field:m})=>t(Pe,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...m})})]}),s.map((m,c)=>t(pr,{control:e,index:c,remove:a,data:r})),t(i.Group,{position:"center",mt:"xs",children:t(i.Button,{onClick:p,children:"Add a Variable"})})]})}function mr(e){function n({type:r,name:o,showSymbol:l,symbolSize:a=5,y_axis_data_key:u="value",yAxisIndex:s=0,label_position:p="top",stack:m="1",color:c="black",barWidth:h="30",smooth:x=!1,step:g=!1}){return{type:r,name:o,showSymbol:l,symbolSize:a,y_axis_data_key:u,yAxisIndex:s,label_position:p,stack:m,color:c,barWidth:h,smooth:x,step:g}}return e.map(n)}function hr(e){return e||{templates:{top:"",bottom:""},variables:[]}}function xr({conf:e,setConf:n,data:r}){const{series:o,y_axes:l,...a}=e,u=d.default.useMemo(()=>{const{x_axis_name:g="",stats:v,...w}=a;return{series:mr(o!=null?o:[]),x_axis_name:g,y_axes:l!=null?l:[{name:"Y Axis",label_formatter:dt}],stats:hr(v),...w}},[o,a]);d.default.useEffect(()=>{!C.default.isEqual(e,u)&&n(u)},[e,u]);const{control:s,handleSubmit:p,watch:m,getValues:c}=S.useForm({defaultValues:u});m(["x_axis_data_key","x_axis_name"]);const h=c(),x=d.default.useMemo(()=>!C.default.isEqual(h,e),[h,e]);return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:p(n),children:[f(i.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(i.Text,{children:"Chart Config"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!x,children:t(b.DeviceFloppy,{size:20})})]}),f(i.Accordion,{offsetIcon:!1,multiple:!0,initialState:{0:!0,1:!0},children:[t(i.Accordion.Item,{label:"X Axis",children:f(i.Group,{direction:"row",grow:!0,noWrap:!0,children:[t(S.Controller,{name:"x_axis_data_key",control:s,render:({field:g})=>t(_,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...g})}),t(S.Controller,{name:"x_axis_name",control:s,render:({field:g})=>t(i.TextInput,{label:"X Axis Name",sx:{flex:1},...g})})]})}),t(i.Accordion.Item,{label:"Y Axes",children:t(er,{control:s,watch:m})}),t(i.Accordion.Item,{label:"Series",children:t(Kn,{control:s,watch:m,getValues:c,data:r})}),t(i.Accordion.Item,{label:"Regression Lines",children:t(rr,{control:s,watch:m,getValues:c,data:r})}),t(i.Accordion.Item,{label:"Stats",children:t(fr,{control:s,watch:m,data:r})})]})]})})}function gr({conf:{label_field:e,value_field:n},setConf:r,data:o}){const l=k.useForm({initialValues:{label_field:e,value_field:n}});return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:l.onSubmit(r),children:[f(i.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(i.Text,{children:"Pie Config"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(b.DeviceFloppy,{size:20})})]}),f(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(_,{label:"Label Field",required:!0,data:o,...l.getInputProps("label_field")}),t(_,{label:"Value Field",required:!0,data:o,...l.getInputProps("value_field")})]})]})})}function br({conf:e,setConf:n}){const r=d.default.useMemo(()=>{const{content:m=""}=e;return{content:m}},[e]);d.default.useEffect(()=>{!C.default.isEqual(e,r)&&n(r)},[e,r]);const{control:o,handleSubmit:l,watch:a,getValues:u}=S.useForm({defaultValues:r});a("content");const s=u(),p=d.default.useMemo(()=>!C.default.isEqual(s,e),[s,e]);return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:l(n),children:[f(i.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(i.Text,{children:"Content"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!p,children:t(b.DeviceFloppy,{size:20})})]}),t(S.Controller,{name:"content",control:o,render:({field:m})=>t(xe.default,{sx:{flex:1},...m})})]})})}function yr(e){if("variables"in e)return e;const{align:n,size:r,weight:o,color:l,content:{prefix:a="",data_field:u="value",formatter:s={output:"number",mantissa:0},postfix:p=""}={}}=e;return{align:n,template:`${a} \${value} ${p}`,variables:[{name:"value",data_field:u,aggregation:"none",formatter:s,color:l,weight:o,size:r}]}}function Sr({control:e,index:n,remove:r,data:o}){return f(i.Group,{direction:"column",grow:!0,my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[t(S.Controller,{name:`variables.${n}`,control:e,render:({field:l})=>t(mt,{data:o,...l})}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},n)}function Cr({control:e,watch:n,data:r}){const{fields:o,append:l,remove:a}=S.useFieldArray({control:e,name:"variables"}),u=n("variables"),s=o.map((m,c)=>({...m,...u[c]})),p=()=>l(ft());return f(i.Group,{direction:"column",grow:!0,children:[s.map((m,c)=>t(Sr,{control:e,index:c,remove:a,data:r})),t(i.Group,{position:"center",mt:"xs",children:t(i.Button,{onClick:p,children:"Add a Variable"})})]})}function vr(){return{align:"center",template:"The variable ${value} is defined in Variables section",variables:[{name:"value",size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:"none",formatter:{output:"number",mantissa:0}}]}}function wr({conf:e,setConf:n,data:r}){const o=d.default.useMemo(()=>{const{align:c,template:h="",variables:x=[]}=yr(e);return c?{variables:x,template:h,align:c}:vr()},[e]);d.default.useEffect(()=>{!C.default.isEqual(e,o)&&n(o)},[e,o]);const{control:l,handleSubmit:a,watch:u,getValues:s}=S.useForm({defaultValues:o});u(["variables","template"]);const p=s(),m=d.default.useMemo(()=>!C.default.isEqual(p,e),[p,e]);return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,noWrap:!0,children:f("form",{onSubmit:a(n),children:[f(i.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(i.Text,{weight:500,children:"Stats Configurations"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:t(b.DeviceFloppy,{size:20})})]}),t(S.Controller,{name:"template",control:l,render:({field:c})=>t(Pe,{label:"Template",py:"md",sx:{flexGrow:1},...c})}),t(i.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),t(Cr,{control:l,watch:u,data:r})]})})}function Tr({conf:{label_field:e,value_field:n},setConf:r,data:o}){const l=k.useForm({initialValues:{label_field:e,value_field:n}});return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:l.onSubmit(r),children:[f(i.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(i.Text,{children:"Sunburst Config"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(b.DeviceFloppy,{size:20})})]}),f(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(_,{label:"Label Field",required:!0,data:o,...l.getInputProps("label_field")}),t(_,{label:"Value Field",required:!0,data:o,...l.getInputProps("value_field")})]})]})})}const Gr=Object.values(V).map(e=>({label:e,value:e}));function _r({label:e,value:n,onChange:r,sx:o}){return t(i.Select,{label:e,data:Gr,value:n,onChange:r,sx:o})}function Pr({conf:{columns:e,...n},setConf:r,data:o}){const l=k.useForm({initialValues:{id_field:"id",use_raw_columns:!0,columns:k.formList(e!=null?e:[]),fontSize:"sm",horizontalSpacing:"sm",verticalSpacing:"sm",striped:!1,highlightOnHover:!1,...n}}),a=()=>l.addListItem("columns",{label:G.randomId(),value_field:"value",value_type:V.string});return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:l.onSubmit(r),children:[f(i.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(i.Text,{children:"Table Config"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(b.DeviceFloppy,{size:20})})]}),f(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(_,{label:"ID Field",required:!0,data:o,...l.getInputProps("id_field")}),f(i.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[t(i.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...l.getInputProps("horizontalSpacing")}),t(i.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...l.getInputProps("verticalSpacing")})]}),t(i.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:t(i.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...l.getInputProps("fontSize")})}),f(i.Group,{direction:"column",grow:!0,children:[t(i.Text,{children:"Other"}),f(i.Group,{position:"apart",grow:!0,children:[t(i.Switch,{label:"Striped",...l.getInputProps("striped",{type:"checkbox"})}),t(i.Switch,{label:"Highlight on hover",...l.getInputProps("highlightOnHover",{type:"checkbox"})})]})]})]}),f(i.Group,{direction:"column",mt:"xs",spacing:"xs",grow:!0,p:"md",mb:"xl",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(i.Switch,{label:"Use Original Data Columns",...l.getInputProps("use_raw_columns",{type:"checkbox"})}),!l.values.use_raw_columns&&f(i.Group,{direction:"column",grow:!0,children:[t(i.Text,{mt:"xl",mb:0,children:"Custom Columns"}),l.values.columns.map((u,s)=>f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[f(i.Group,{position:"apart",grow:!0,children:[t(i.TextInput,{label:"Label",required:!0,sx:{flex:1},...l.getListInputProps("columns",s,"label")}),t(_,{label:"Value Field",required:!0,data:o,...l.getListInputProps("columns",s,"value_field")}),t(_r,{label:"Value Type",sx:{flex:1},...l.getListInputProps("columns",s,"value_type")})]}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>l.removeListItem("columns",s),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},s)),t(i.Group,{position:"center",mt:"xs",children:t(i.Button,{onClick:a,children:"Add a Column"})})]})]}),t(i.Text,{weight:500,mb:"md",children:"Current Configuration:"}),t(z.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(l.values,null,2)})]})})}const ht=[{align:"center",size:"xl",weight:"bold",color:"black",template:"Time: ${new Date().toISOString()}"},{align:"center",size:"md",weight:"bold",color:"red",template:"Platform: ${navigator.userAgentData.platform}."}];function zr({conf:e,setConf:n}){var l;const r=k.useForm({initialValues:{paragraphs:k.formList((l=e.paragraphs)!=null?l:ht)}}),o=()=>r.addListItem("paragraphs",{...ht[0],template:G.randomId()});return t(i.Group,{direction:"column",mt:"md",spacing:"xs",grow:!0,children:f("form",{onSubmit:r.onSubmit(n),children:[r.values.paragraphs.length===0&&t(i.Text,{color:"dimmed",align:"center",children:"Empty"}),f(i.Group,{position:"apart",mb:"xs",sx:{" + .mantine-Group-root":{marginTop:0}},children:[t(i.Text,{children:"Paragraphs"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(b.DeviceFloppy,{size:20})})]}),r.values.paragraphs.map((a,u)=>f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(i.TextInput,{placeholder:"Time: ${new Date().toISOString()}",label:"Content Template",required:!0,sx:{flex:1},...r.getListInputProps("paragraphs",u,"template")}),f(i.Group,{direction:"column",grow:!0,children:[t(i.Text,{children:"Color"}),t(se,{...r.getListInputProps("paragraphs",u,"color")})]}),t(i.Group,{direction:"column",grow:!0,children:t(i.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},...r.getListInputProps("paragraphs",u,"size")})}),t(i.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:t(pt,{label:"Font Weight",...r.getListInputProps("paragraphs",u,"weight")})}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>r.removeListItem("paragraphs",u),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},u)),t(i.Group,{position:"center",mt:"md",children:t(i.Button,{onClick:o,children:"Add a Paragraph"})}),t(i.Text,{size:"sm",weight:500,mt:"md",children:"Current Configuration:"}),t(z.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(r.values,null,2)})]})})}const ze=[{value:"text",label:"Text",Panel:zr},{value:"stats",label:"Stats",Panel:wr},{value:"rich-text",label:"Rich Text",Panel:br},{value:"table",label:"Table",Panel:Pr},{value:"sunburst",label:"Sunburst",Panel:Tr},{value:"bar-3d",label:"Bar Chart (3D)",Panel:Vn},{value:"cartesian",label:"Cartesian Chart",Panel:xr},{value:"pie",label:"Pie Chart",Panel:gr}];function Ir(){const{data:e,viz:n,setViz:r}=d.default.useContext(A),[o,l]=G.useInputState(n.type),a=n.type!==o,u=d.default.useCallback(()=>{!a||r(c=>({...c,type:o}))},[a,o]),s=c=>{r(h=>({...h,conf:c}))},p=c=>{try{s(JSON.parse(c))}catch(h){console.error(h)}},m=d.default.useMemo(()=>{var c;return(c=ze.find(h=>h.value===o))==null?void 0:c.Panel},[o,ze]);return f(B,{children:[t(i.Select,{label:"Visualization",value:o,onChange:l,data:ze,rightSection:t(i.ActionIcon,{disabled:!a,onClick:u,children:t(b.DeviceFloppy,{size:20})})}),m&&t(m,{conf:n.conf,setConf:s,data:e}),!m&&t(i.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(n.conf,null,2),onChange:p})]})}function Ar({}){return f(i.Group,{direction:"row",grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[t(i.Group,{grow:!0,direction:"column",noWrap:!0,sx:{width:"40%",flexShrink:0,flexGrow:0},children:t(Ir,{})}),t(i.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:t(Bn,{})})]})}function Dr({opened:e,close:n}){const{freezeLayout:r}=d.default.useContext(F),{data:o,loading:l,viz:a,title:u}=d.default.useContext(A);return d.default.useEffect(()=>{r(e)},[e]),t(i.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:u,trapFocus:!0,onDragStart:s=>{s.stopPropagation()},children:t(i.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",width:"100%"}},padding:"md",children:f(i.Tabs,{initialTab:2,children:[f(i.Tabs.Tab,{label:"Data",children:[t(i.LoadingOverlay,{visible:l,exitTransitionDuration:0}),t(Wt,{})]}),t(i.Tabs.Tab,{label:"Panel",children:t(jt,{})}),t(i.Tabs.Tab,{label:"Visualization",children:t(Ar,{})})]})})})}var pi="";function Mr({}){const e=he.useModals(),[n,r]=d.default.useState(!1),o=()=>r(!0),l=()=>r(!1),{id:a,title:u,refreshData:s}=d.default.useContext(A),{inEditMode:p}=d.default.useContext(F),{duplidatePanel:m,removePanelByID:c,viewPanelInFullScreen:h,inFullScreen:x}=d.default.useContext(ne),g=d.default.useCallback(()=>{m(a)},[m,a]),v=()=>e.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>c(a)}),w=d.default.useCallback(()=>{h(a)},[a,h]);return f(i.Box,{sx:{position:"relative"},children:[t(i.Box,{sx:{position:"absolute",left:0,top:0,height:28},children:t(Be,{})}),t(i.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:f(i.Menu,{control:t(i.Text,{lineClamp:1,weight:"bold",children:u}),placement:"center",children:[t(i.Menu.Item,{onClick:s,icon:t(b.Refresh,{size:14}),children:"Refresh"}),!x&&t(i.Menu.Item,{onClick:w,icon:t(b.ArrowsMaximize,{size:14}),children:"Full Screen"}),p&&f(B,{children:[t(i.Divider,{label:"Edit",labelPosition:"center"}),t(i.Menu.Item,{onClick:o,icon:t(b.Settings,{size:14}),children:"Settings"}),t(i.Menu.Item,{onClick:g,icon:t(b.Copy,{size:14}),children:"Duplicate"}),t(i.Menu.Item,{color:"red",onClick:v,icon:t(b.Trash,{size:14}),children:"Delete"})]})]})}),p&&t(Dr,{opened:n,close:l})]})}var fi="";function de({viz:e,queryID:n,title:r,description:o,update:l,layout:a,id:u}){const s=d.default.useContext($),p=d.default.useContext(D),[m,c]=d.default.useState(r),[h,x]=d.default.useState(o),[g,v]=d.default.useState(n),[w,M]=d.default.useState(e),L=d.default.useMemo(()=>{if(!!g)return p.queries.find(H=>H.id===g)},[g,p.queries]);d.default.useEffect(()=>{l==null||l({id:u,layout:a,title:m,description:h,queryID:g,viz:w})},[m,h,L,w,u,a,g]);const{data:ce=[],loading:pe,refresh:Ae}=me.useRequest(Ee({context:s,definitions:p,title:m,query:L}),{refreshDeps:[s,p,L]}),De=Ae;return t(A.Provider,{value:{id:u,data:ce,loading:pe,title:m,setTitle:c,description:h,setDescription:x,queryID:g,setQueryID:v,viz:w,setViz:M,refreshData:De},children:f(i.Container,{className:"panel-root",children:[t(Mr,{}),t(ut,{viz:w,data:ce,loading:pe})]})})}var mi="";const Lr=fe.WidthProvider(Oe.default);function xt({panels:e,setPanels:n,className:r="layout",rowHeight:o=10,isDraggable:l,isResizable:a}){const u=d.default.useCallback(s=>{const p=new Map;s.forEach(({i:c,...h})=>{p.set(c,h)});const m=e.map(c=>({...c,layout:p.get(c.id)}));n(m)},[e,n]);return t(Lr,{onLayoutChange:u,className:r,rowHeight:o,isDraggable:l,isResizable:a,children:e.map(({id:s,...p},m)=>t("div",{"data-grid":p.layout,children:t(de,{id:s,...p,update:c=>{n(h=>(h.splice(m,1,c),[...h]))}})},s))})}function Ie(e,n){return f(i.Text,{sx:{svg:{verticalAlign:"text-bottom"}},children:[e," ",n]})}function qr({mode:e,setMode:n}){return t(i.SegmentedControl,{value:e,onChange:n,data:[{label:Ie(t(b.PlayerPlay,{size:20}),"Use"),value:I.Use},{label:Ie(t(b.Resize,{size:20}),"Layout"),value:I.Layout},{label:Ie(t(b.Paint,{size:20}),"Content"),value:I.Edit}]})}const Or=`
|
|
12
12
|
-- You may reference context data or SQL snippets *by name*
|
|
13
13
|
-- in SQL or VizConfig.
|
|
14
14
|
SELECT *
|
|
@@ -19,16 +19,16 @@ WHERE
|
|
|
19
19
|
-- SQL snippets
|
|
20
20
|
AND \${author_email_condition}
|
|
21
21
|
\${order_by_clause}
|
|
22
|
-
`;function
|
|
22
|
+
`;function kr({}){const e=d.default.useContext($),{sqlSnippets:n}=d.default.useContext(D),r=d.default.useMemo(()=>{const l=n.reduce((a,u)=>(a[u.key]=u.value,a),{});return JSON.stringify(l,null,2)},[n]),o=d.default.useMemo(()=>JSON.stringify(e,null,2),[e]);return f(i.Group,{direction:"column",grow:!0,sx:{border:"1px solid #eee",maxWidth:"40%",overflow:"hidden"},children:[t(i.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:t(i.Text,{weight:500,children:"Context"})}),f(i.Group,{direction:"column",px:"md",pb:"md",sx:{width:"100%"},children:[t(z.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:Or}),t(i.Text,{weight:500,sx:{flexGrow:0},children:"Avaiable context"}),t(z.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:o}),t(i.Text,{weight:500,sx:{flexGrow:0},children:"Avaiable SQL Snippets"}),t(z.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:r})]})]})}function Er({value:e}){const n=d.default.useContext($),r=d.default.useContext(D),o=d.default.useMemo(()=>It(e,n,r),[e,n,r]);return t(z.Prism,{language:"sql",colorScheme:"light",children:o})}function Fr({value:e,onChange:n}){const r=k.useForm({initialValues:e}),o=d.default.useCallback(m=>{n(m)},[n]),l=d.default.useMemo(()=>!C.default.isEqual(e,r.values),[e,r.values]);d.default.useEffect(()=>{r.reset()},[e]);const{data:a={},loading:u}=me.useRequest(At,{refreshDeps:[]},[]),s=d.default.useMemo(()=>Object.keys(a).map(m=>({label:m,value:m})),[a]),p=d.default.useMemo(()=>{const m=a[r.values.type];return m?m.map(c=>({label:c,value:c})):[]},[a,r.values.type]);return t(i.Group,{direction:"column",grow:!0,sx:{border:"1px solid #eee",flexGrow:1},children:f("form",{onSubmit:r.onSubmit(o),children:[f(i.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(i.Text,{weight:500,children:"Edit Query"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!l||u,children:t(b.DeviceFloppy,{size:20})})]}),f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,children:[f(i.Group,{grow:!0,children:[t(i.TextInput,{placeholder:"An ID unique in this dashboard",label:"ID",required:!0,sx:{flex:1},disabled:u,...r.getInputProps("id")}),t(i.Select,{label:"Data Source Type",data:s,sx:{flex:1},disabled:u,...r.getInputProps("type")}),t(i.Select,{label:"Data Source Key",data:p,sx:{flex:1},disabled:u,...r.getInputProps("key")})]}),f(i.Tabs,{children:[t(i.Tabs.Tab,{label:"SQL",children:t(i.Textarea,{autosize:!0,minRows:12,maxRows:24,...r.getInputProps("sql"),className:"code-textarea"})}),t(i.Tabs.Tab,{label:"Preview",children:t(Er,{value:r.values.sql})})]})]})]})})}function $r({id:e,setID:n}){const{queries:r,setQueries:o}=d.default.useContext(D),l=d.default.useMemo(()=>r.find(u=>u.id===e),[r,e]),a=d.default.useCallback(u=>{if(r.findIndex(p=>p.id===e)===-1){console.error(new Error("Invalid data source id when updating by id"));return}o(p=>{const m=p.findIndex(c=>c.id===e);return p.splice(m,1,u),[...p]}),n(u.id)},[e,r,o,n]);return e?l?t(Fr,{value:l,onChange:a}):t("span",{children:"Invalid Data Source ID"}):null}function Br({id:e,setID:n}){const{queries:r,setQueries:o}=d.default.useContext(D),l=d.default.useCallback(()=>{var s,p;n((p=(s=r[0])==null?void 0:s.id)!=null?p:"")},[n,r]);d.default.useEffect(()=>{if(!e){l();return}r.findIndex(p=>p.id===e)===-1&&l()},[e,r,l]);const a=d.default.useMemo(()=>r.map(s=>({value:s.id,label:s.id})),[r]),u=d.default.useCallback(()=>{const s={id:G.randomId(),type:"postgresql",key:"",sql:""};o(p=>[...p,s]),n(s.id)},[o,n]);return t(i.Group,{pb:"xl",children:f(i.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[t(i.Text,{children:"Select a Query"}),t(i.Select,{data:a,value:e,onChange:n,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}}),t(i.Text,{children:"or"}),t(i.Group,{position:"center",mt:"md",children:t(i.Button,{onClick:u,children:"Add a Query"})})]})})}function Rr({}){const[e,n]=d.default.useState("");return f(i.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 225px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",width:"100%",padding:0,margin:0}},padding:"md",children:[f(i.Group,{direction:"row",position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[f(i.Group,{direction:"column",grow:!0,sx:{flexGrow:1,maxWidth:"calc(60% - 16px)"},children:[t(Br,{id:e,setID:n}),t($r,{id:e,setID:n})]}),t(kr,{})]}),t(Re,{id:e})]})}function Vr({}){const e=d.default.useContext($),n="SELECT *\nFROM commit\nWHERE author_time BETWEEN '${timeRange?.[0].toISOString()}' AND '${timeRange?.[1].toISOString()}'";return f(i.Group,{direction:"column",grow:!0,sx:{border:"1px solid #eee",overflow:"hidden"},children:[t(i.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:t(i.Text,{weight:500,children:"Context"})}),f(i.Group,{direction:"column",px:"md",pb:"md",sx:{width:"100%"},children:[t(z.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:`-- You may refer context data *by name*
|
|
23
23
|
-- in SQL or VizConfig.
|
|
24
24
|
|
|
25
|
-
${
|
|
25
|
+
${n}`}),t(i.Text,{weight:500,sx:{flexGrow:0},children:"Avaiable context entries"}),t(z.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:JSON.stringify(e,null,2)})]})]})}function Nr({value:e}){const n=d.default.useContext($),r=d.default.useMemo(()=>zt(e,n),[e,n]);return f(i.Group,{direction:"column",noWrap:!0,grow:!0,children:[t(i.Text,{children:"Preview"}),t(z.Prism,{language:"sql",noCopy:!0,colorScheme:"dark",children:r})]})}function jr({}){const{sqlSnippets:e,setSQLSnippets:n}=d.default.useContext(D),r=d.default.useMemo(()=>({snippets:k.formList(e!=null?e:[])}),[e]),o=k.useForm({initialValues:r}),l=()=>o.addListItem("snippets",{key:G.randomId(),value:""}),a=d.default.useMemo(()=>!C.default.isEqual(o.values,r),[o.values,r]),u=({snippets:s})=>{n(s)};return t(i.Group,{direction:"column",grow:!0,sx:{border:"1px solid #eee",flexGrow:1},children:f("form",{onSubmit:o.onSubmit(u),children:[f(i.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:[t(i.Text,{weight:500,children:"SQL Snippets"}),t(i.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!a,children:t(b.DeviceFloppy,{size:20})})]}),t(i.Group,{px:"md",pb:"md",pt:"md",children:f(i.Group,{direction:"column",sx:{width:"100%",position:"relative"},grow:!0,children:[o.values.snippets.map((s,p)=>f(i.Group,{direction:"column",grow:!0,my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(i.TextInput,{label:"Key",required:!0,...o.getListInputProps("snippets",p,"key")}),t(i.Textarea,{minRows:3,label:"Value",required:!0,...o.getListInputProps("snippets",p,"value"),className:"code-textarea"}),t(Nr,{value:o.values.snippets[p].value}),t(i.ActionIcon,{color:"red",variant:"hover",onClick:()=>o.removeListItem("snippets",p),sx:{position:"absolute",top:15,right:5},children:t(b.Trash,{size:16})})]},p)),t(i.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"40%"},mx:"auto",children:t(i.Button,{variant:"default",onClick:l,children:"Add a snippet"})})]})})]})})}const Wr=`SELECT *
|
|
26
26
|
FROM commit
|
|
27
|
-
WHERE \${author_time_condition}`;function
|
|
27
|
+
WHERE \${author_time_condition}`;function Qr(){return f(i.Group,{direction:"column",grow:!0,sx:{border:"1px solid #eee",overflow:"hidden"},children:[t(i.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:t(i.Text,{weight:500,children:"Guide"})}),t(i.Group,{direction:"column",px:"md",pb:"md",sx:{width:"100%"},children:t(z.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,trim:!1,colorScheme:"dark",children:`-- You may refer context data *by name*
|
|
28
28
|
-- in SQL or VizConfig.
|
|
29
29
|
|
|
30
|
-
${
|
|
30
|
+
${Wr}
|
|
31
31
|
|
|
32
32
|
-- where author_time_condition is:
|
|
33
33
|
author_time BETWEEN '\${timeRange?.[0].toISOString()}' AND '\${timeRange?.[1].toISOString()}'
|
|
34
|
-
`})})]})}function
|
|
34
|
+
`})})]})}function Ur({}){return t(i.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 225px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",width:"100%",padding:0,margin:0}},padding:"md",children:f(i.Group,{direction:"row",position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[t(jr,{}),f(i.Group,{direction:"column",grow:!0,noWrap:!0,sx:{maxWidth:"40%"},children:[t(Qr,{}),t(Vr,{})]})]})})}function Jr({opened:e,close:n}){const{freezeLayout:r}=d.default.useContext(F);return d.default.useEffect(()=>{r(e)},[e]),t(i.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Data Settings",trapFocus:!0,onDragStart:o=>{o.stopPropagation()},children:f(i.Tabs,{children:[t(i.Tabs.Tab,{label:"SQL Snippet",children:t(Ur,{})}),t(i.Tabs.Tab,{label:"Queries",children:t(Rr,{})})]})})}function Yr({opened:e,close:n,getCurrentSchema:r}){const{freezeLayout:o}=d.default.useContext(F);d.default.useEffect(()=>{o(e)},[e]);const l=d.default.useMemo(()=>JSON.stringify(r(),null,2),[e]);return t(i.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"This dashboard is described by this schema",trapFocus:!0,onDragStart:a=>{a.stopPropagation()},children:t(z.Prism,{language:"json",sx:{width:"100%"},colorScheme:"dark",children:l})})}function Xr({mode:e,setMode:n,hasChanges:r,saveChanges:o,revertChanges:l,getCurrentSchema:a}){const{addPanel:u}=d.default.useContext(ne),{inLayoutMode:s,inEditMode:p,inUseMode:m}=d.default.useContext(F),[c,h]=d.default.useState(!1),x=()=>h(!0),g=()=>h(!1),[v,w]=d.default.useState(!1),M=()=>w(!0),L=()=>w(!1);return f(i.Group,{position:"apart",pt:"sm",pb:"xs",children:[t(i.Group,{position:"left",children:t(qr,{mode:e,setMode:n})}),f(i.Group,{position:"right",children:[!m&&t(i.Button,{variant:"default",size:"sm",onClick:u,leftIcon:t(b.PlaylistAdd,{size:20}),children:"Add a Panel"}),p&&t(i.Button,{variant:"default",size:"sm",onClick:x,leftIcon:t(b.Database,{size:20}),children:"Data Settings"}),!m&&t(i.Button,{variant:"default",size:"sm",onClick:o,disabled:!r,leftIcon:t(b.DeviceFloppy,{size:20}),children:"Save Changes"}),!m&&t(i.Button,{color:"red",size:"sm",disabled:!r,onClick:l,leftIcon:t(b.Recycle,{size:20}),children:"Revert Changes"}),f(i.Menu,{control:t(i.Button,{variant:"default",size:"sm",leftIcon:t(b.Share,{size:20}),children:"Export"}),children:[t(i.Menu.Item,{disabled:!0,children:"Download Data"}),t(i.Menu.Item,{onClick:M,children:"View Schema"})]})]}),t(Jr,{opened:c,close:g}),t(Yr,{opened:v,close:L,getCurrentSchema:a})]})}function gt({panel:e,exitFullScreen:n}){return f(i.Group,{direction:"column",grow:!0,sx:{flexGrow:1,justifyContent:"flex-start"},children:[t(i.Group,{direction:"row",sx:{flexGrow:0},children:t(i.Button,{variant:"default",size:"sm",onClick:n,leftIcon:t(b.ArrowLeft,{size:20}),children:"Exit fullscreen"})}),t(i.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:t(de,{...e})})]})}function bt(e){const[n,r]=d.default.useState(null),o=d.default.useCallback(s=>{r(s)},[]),l=d.default.useCallback(()=>{r(null)},[]),a=d.default.useMemo(()=>e.find(s=>s.id===n),[n,e]);return{viewPanelInFullScreen:o,exitFullScreen:l,inFullScreen:!!a,fullScreenPanel:a}}function Kr({context:e,dashboard:n,update:r,className:o="dashboard",config:l}){U.baseURL!==l.apiBaseURL&&(U.baseURL=l.apiBaseURL);const[a,u]=d.default.useState(!1),[s,p]=d.default.useState(n.panels),[m,c]=d.default.useState(n.definition.sqlSnippets),[h,x]=d.default.useState(n.definition.queries),[g,v]=d.default.useState(I.Use),w=d.default.useMemo(()=>{const P=O=>JSON.parse(JSON.stringify(O));return!C.default.isEqual(P(s),P(n.panels))||!C.default.isEqual(m,n.definition.sqlSnippets)?!0:!C.default.isEqual(h,n.definition.queries)},[n,s,m,h]),M=async()=>{const P={...n,panels:s,definition:{sqlSnippets:m,queries:h}};await r(P)},L=()=>{p(n.panels),c(n.definition.sqlSnippets),x(n.definition.queries)},ce=()=>{const P=G.randomId(),q={id:P,layout:{x:0,y:1/0,w:3,h:15},title:`Panel - ${P}`,description:"<p><br></p>",queryID:"",viz:{type:"text",conf:{}}};p(O=>[...O,q])},pe=P=>{try{const q=s.find(Le=>Le.id===P);if(!q)throw new Error(`[duplicate panel] Can't find a panel by id[${P}]`);const O={...q,id:G.randomId(),layout:{...q.layout,x:0,y:1/0}};p(Le=>[...Le,O])}catch(q){console.error(q)}},Ae=P=>{const q=s.findIndex(O=>O.id===P);p(O=>(O.splice(q,1),[...O]))},De=g===I.Edit,H=g===I.Layout,ti=g===I.Use,ni=d.default.useMemo(()=>({sqlSnippets:m,setSQLSnippets:c,queries:h,setQueries:x}),[m,c,h,x]),ri=d.default.useCallback(()=>({panels:s,definition:{sqlSnippets:m,queries:h}}),[m,h,s]),{viewPanelInFullScreen:ii,exitFullScreen:li,inFullScreen:Me,fullScreenPanel:oi}=bt(s);return t(he.ModalsProvider,{children:t($.Provider,{value:e,children:t(ne.Provider,{value:{addPanel:ce,duplidatePanel:pe,removePanelByID:Ae,viewPanelInFullScreen:ii,inFullScreen:Me},children:t(D.Provider,{value:ni,children:f(F.Provider,{value:{layoutFrozen:a,freezeLayout:u,mode:g,inEditMode:De,inLayoutMode:H,inUseMode:ti},children:[Me&&t(gt,{panel:oi,exitFullScreen:li}),f(i.Box,{className:o,sx:{position:"relative",display:Me?"none":"block"},children:[t(Xr,{mode:g,setMode:v,hasChanges:w,saveChanges:M,revertChanges:L,getCurrentSchema:ri}),t(xt,{panels:s,setPanels:p,isDraggable:H,isResizable:H})]})]})})})})})}const Zr=fe.WidthProvider(Oe.default);function Hr({panels:e,className:n="layout",rowHeight:r=10}){return t(Zr,{className:n,rowHeight:r,isDraggable:!1,isResizable:!1,children:e.map(({id:o,...l})=>t("div",{"data-grid":l.layout,children:t(de,{id:o,...l})},o))})}function ei({context:e,dashboard:n,className:r="dashboard",config:o}){U.baseURL!==o.apiBaseURL&&(U.baseURL=o.apiBaseURL);const l=d.default.useMemo(()=>({...n.definition,setSQLSnippets:()=>{},setQueries:()=>{}}),[n]),{viewPanelInFullScreen:a,exitFullScreen:u,inFullScreen:s,fullScreenPanel:p}=bt(n.panels);return t(he.ModalsProvider,{children:t($.Provider,{value:e,children:t(ne.Provider,{value:{addPanel:C.default.noop,duplidatePanel:C.default.noop,removePanelByID:C.default.noop,viewPanelInFullScreen:a,inFullScreen:s},children:t(D.Provider,{value:l,children:f(F.Provider,{value:{layoutFrozen:!0,freezeLayout:()=>{},mode:I.Use,inEditMode:!1,inLayoutMode:!1,inUseMode:!0},children:[s&&t(gt,{panel:p,exitFullScreen:u}),t(i.Box,{className:r,sx:{display:s?"none":"block"},children:t(Hr,{panels:n.panels})})]})})})})})}y.ContextInfoContext=$,y.Dashboard=Kr,y.DashboardLayout=xt,y.DashboardMode=I,y.DefinitionContext=D,y.LayoutStateContext=F,y.Panel=de,y.PanelContext=A,y.ReadOnlyDashboard=ei,y.initialContextInfoContext=Dt,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devtable/dashboard",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.32.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"echarts": "^5.3.2",
|
|
49
49
|
"echarts-for-react": "^3.0.2",
|
|
50
50
|
"echarts-gl": "^2.0.9",
|
|
51
|
+
"echarts-stat": "1.2.0",
|
|
51
52
|
"lodash": "^4.17.21",
|
|
52
53
|
"numbro": "^2.3.6",
|
|
53
54
|
"react-grid-layout": "^1.3.4",
|