@devtable/dashboard 2.0.0 → 2.3.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/api-caller/index.d.ts +11 -3
- package/dist/api-caller/types.d.ts +11 -0
- package/dist/contexts/filter-values-context.d.ts +4 -0
- package/dist/contexts/index.d.ts +1 -0
- package/dist/dashboard.es.js +1521 -850
- package/dist/dashboard.umd.js +12 -23
- package/dist/definition-editor/global-variables-guide.d.ts +8 -0
- package/dist/filter/filter-checkbox/editor.d.ts +10 -0
- package/dist/filter/filter-checkbox/render.d.ts +9 -0
- package/dist/filter/filter-date-range/editor.d.ts +10 -0
- package/dist/filter/filter-date-range/render.d.ts +9 -0
- package/dist/filter/filter-multi-select/editor.d.ts +11 -0
- package/dist/filter/filter-multi-select/render.d.ts +9 -0
- package/dist/filter/filter-query-field/index.d.ts +8 -0
- package/dist/filter/filter-query-field/select-data-source.d.ts +8 -0
- package/dist/filter/filter-select/editor.d.ts +11 -0
- package/dist/filter/filter-select/render.d.ts +9 -0
- package/dist/filter/filter-settings/filter-setting.d.ts +11 -0
- package/dist/filter/filter-settings/filter-settings.d.ts +8 -0
- package/dist/filter/filter-settings/index.d.ts +10 -0
- package/dist/filter/filter-settings/preview-filter.d.ts +11 -0
- package/dist/filter/filter-settings/types.d.ts +4 -0
- package/dist/filter/filter-text-input/editor.d.ts +10 -0
- package/dist/filter/filter-text-input/render.d.ts +9 -0
- package/dist/filter/filter.d.ts +9 -0
- package/dist/filter/index.d.ts +9 -0
- package/dist/main/actions.d.ts +4 -2
- package/dist/main/use-filters.d.ts +8 -0
- package/dist/panel/panel-description.d.ts +1 -3
- package/dist/style.css +1 -1
- package/dist/types/dashboard.d.ts +2 -0
- package/dist/types/filter.d.ts +39 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/utils/sql.d.ts +5 -3
- package/dist/utils/template/editor.d.ts +1 -1
- package/package.json +19 -18
- package/dist/definition-editor/query-editor/context-and-snippets.d.ts +0 -5
- package/dist/definition-editor/sql-snippet-editor/context-info.d.ts +0 -5
- package/dist/definition-editor/sql-snippet-editor/guide.d.ts +0 -2
- package/dist/panel/viz/text/index.d.ts +0 -9
- package/dist/panel/viz/text/panel.d.ts +0 -3
package/dist/dashboard.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(S,P){typeof exports=="object"&&typeof module!="undefined"?P(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"),require("@mantine/dates")):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","@mantine/dates"],P):(S=typeof globalThis!="undefined"?globalThis:S||self,P(S.dashboard={},S.React,S._,S["react-grid-layout"],S["@mantine/core"],S.ahooks,S.axios,S["@mantine/modals"],S["tabler-icons-react"],S["@mantine/rte"],S["@mantine/hooks"],S["echarts-for-react/lib/core"],S["echarts/core"],S["echarts/charts"],S["echarts/renderers"],S["echarts-stat"],S["echarts/components"],S.numbro,S["echarts-gl"],S["react-hook-form"],S["@mantine/form"],S["@mantine/prism"],S["@mantine/dates"]))})(this,function(S,P,N,ge,l,J,kt,ye,g,Fe,A,qt,Mt,H,ae,It,Q,Gt,Gr,b,ee,X,Lt){"use strict";var Mr=Object.defineProperty;var Ir=(S,P,N)=>P in S?Mr(S,P,{enumerable:!0,configurable:!0,writable:!0,value:N}):S[P]=N;var Dt=(S,P,N)=>(Ir(S,typeof P!="symbol"?P+"":P,N),N);function j(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}function Ot(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 i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}}),n.default=e,Object.freeze(n)}var c=j(P),C=j(N),$e=j(ge),Ft=j(kt),Se=j(Fe),se=j(qt),V=Ot(Mt),oe=j(Gt),I=(e=>(e.Use="use",e.Layout="layout",e.Edit="edit",e))(I||{});const $t={layoutFrozen:!1,freezeLayout:()=>{},mode:I.Edit,inEditMode:!1,inLayoutMode:!1,inUseMode:!0},O=c.default.createContext($t);function Vt(e,n){const r=Object.keys(n),i=Object.values(n);try{return new Function(...r,`return \`${e}\`;`)(...i)}catch(a){return console.error(a),a.message}}function Ce(e,n){const r=Object.keys(n),i=Object.values(n);try{return new Function(...r,`return \`${e}\`;`)(...i)}catch(a){throw r.length===0&&e.includes("$")?new Error("[formatSQL] insufficient params"):a}}function Ve(e,n,r){const i=n.sqlSnippets.reduce((a,o)=>(a[o.key]=Ce(o.value,e),a),{});return C.default.merge({},i,e,{filters:r})}function Et(e,n,r,i){try{const a=Ve(n,r,i);return Ce(e,a)}catch(a){return console.error(a),a.message}}const W={baseURL:"http://localhost:31200",getRequest(e){return(n,r,i={})=>{const a={"X-Requested-With":"XMLHttpRequest","Content-Type":i.string?"application/x-www-form-urlencoded":"application/json",...i.headers},o={baseURL:this.baseURL,method:e,url:n,params:e==="GET"?r:i.params,headers:a};return e==="POST"&&(o.data=i.string?JSON.stringify(r):r),Ft.default(o).then(u=>u.data).catch(u=>Promise.reject(u))}}},Ee=({type:e,key:n,sql:r})=>async()=>{if(!e||!n||!r)return[];try{return await W.getRequest("POST")("/query",{type:e,key:n,query:r})}catch(i){return console.error(i),[]}},Be=({context:e,definitions:n,title:r,query:i,filterValues:a})=>async()=>{if(!i||!i.sql)return[];const{type:o,key:u,sql:s}=i,p=s.includes("$");try{const m=Ve(e,n,a),d=Ce(s,m);return p&&(console.groupCollapsed(`Final SQL for: ${r}`),console.log(d),console.groupEnd()),await W.getRequest("POST")("/query",{type:o,key:u,query:d})}catch(m){return console.error(m),[]}};async function Re(){try{return(await W.getRequest("POST")("/datasource/list",{filter:{},sort:{field:"create_time",order:"ASC"},pagination:{page:1,pagesize:100}})).data}catch(e){return console.error(e),[]}}const Ne={},Bt=Ne,E=c.default.createContext(Ne),Rt={id:"",data:[],loading:!1,title:"",setTitle:()=>{},description:"",setDescription:()=>{},queryID:"",setQueryID:()=>{},viz:{type:"",conf:{}},setViz:()=>{},refreshData:()=>{}},G=c.default.createContext(Rt),Nt={addPanel:C.default.noop,duplidatePanel:C.default.noop,removePanelByID:C.default.noop,viewPanelInFullScreen:C.default.noop,inFullScreen:!1},ue=c.default.createContext(Nt),Qt={sqlSnippets:[],setSQLSnippets:()=>{},queries:[],setQueries:()=>{}},L=c.default.createContext(Qt),Qe={},jt=Qe,U=c.default.createContext(Qe);var de={exports:{}},ce={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.min.js
|
|
4
4
|
*
|
|
@@ -6,29 +6,18 @@
|
|
|
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 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((
|
|
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
|
-
-- You may reference
|
|
13
|
-
-- in SQL or VizConfig.
|
|
9
|
+
*/var Wt=c.default,Ut=Symbol.for("react.element"),Yt=Symbol.for("react.fragment"),Jt=Object.prototype.hasOwnProperty,Xt=Wt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Kt={key:!0,ref:!0,__self:!0,__source:!0};function je(e,n,r){var i,a={},o=null,u=null;r!==void 0&&(o=""+r),n.key!==void 0&&(o=""+n.key),n.ref!==void 0&&(u=n.ref);for(i in n)Jt.call(n,i)&&!Kt.hasOwnProperty(i)&&(a[i]=n[i]);if(e&&e.defaultProps)for(i in n=e.defaultProps,n)a[i]===void 0&&(a[i]=n[i]);return{$$typeof:Ut,type:e,key:o,ref:u,props:a,_owner:Xt.current}}ce.Fragment=Yt,ce.jsx=je,ce.jsxs=je,de.exports=ce;const t=de.exports.jsx,f=de.exports.jsxs,D=de.exports.Fragment;function We({}){const{freezeLayout:e}=c.default.useContext(O),[n,r]=c.default.useState(!1),{title:i,description:a}=c.default.useContext(G);return c.default.useEffect(()=>{e(n)},[n]),!a||a==="<p><br></p>"?null:f(D,{children:[t(l.Modal,{opened:n,onClose:()=>r(!1),title:i,withCloseButton:!1,children:t(Se.default,{readOnly:!0,value:a,onChange:C.default.noop,sx:{border:"none"}})}),t(l.Tooltip,{label:"Click to see description",position:"top-start",children:t(l.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>r(o=>!o),sx:{verticalAlign:"baseline",cursor:"pointer"},children:t(g.InfoCircle,{size:20})})})]})}function Zt(){const{description:e,setDescription:n}=c.default.useContext(G),[r,i]=c.default.useState(e),a=e!==r,o=c.default.useCallback(()=>{!a||n(r)},[a,r]);return f(l.Stack,{sx:{flexGrow:1},children:[f(l.Group,{align:"end",children:[t(l.Text,{children:"Description"}),t(l.ActionIcon,{variant:"subtle",color:"blue",disabled:!a,onClick:o,children:t(g.DeviceFloppy,{size:20})})]}),t(Fe.RichTextEditor,{value:r,onChange:i,sx:{flexGrow:1},sticky:!0,p:"0"})]})}class fe extends c.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(l.Box,{children:[t(l.Text,{size:"xs",children:(n=this.state.error)==null?void 0:n.message}),t(l.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:r,children:"Retry"})]})}return this.props.children}}function Ht(){const{title:e}=c.default.useContext(G);return t(fe,{children:f(l.Stack,{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(l.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[t(l.Group,{children:t(We,{})}),t(l.Group,{grow:!0,position:"center",children:t(l.Text,{lineClamp:1,weight:"bold",children:e})}),t(l.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),t(l.Group,{sx:{background:"#eee",flexGrow:1}})]})})}function en(){const{title:e,setTitle:n}=c.default.useContext(G),[r,i]=A.useInputState(e),a=e!==r,o=c.default.useCallback(()=>{!a||n(r)},[a,r]);return t(l.TextInput,{value:r,onChange:i,label:f(l.Group,{align:"end",children:[t(l.Text,{children:"Panel Title"}),t(l.ActionIcon,{variant:"subtle",color:"blue",disabled:!a,onClick:o,children:t(g.DeviceFloppy,{size:20})})]})})}function tn({}){return f(l.Group,{grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[f(l.Stack,{sx:{width:"40%",flexShrink:0,flexGrow:0,height:"100%"},children:[t(en,{}),t(Zt,{})]}),t(l.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:t(Ht,{})})]})}function Ue({id:e}){const n=c.default.useContext(L),r=c.default.useContext(U),i=c.default.useContext(E),a=c.default.useMemo(()=>n.queries.find(p=>p.id===e),[n.queries,e]),{data:o=[],loading:u,refresh:s}=J.useRequest(Be({context:i,definitions:n,filterValues:r,title:e,query:a}),{refreshDeps:[i,n,a,r]});return u?t(l.LoadingOverlay,{visible:u,exitTransitionDuration:0}):o.length===0?t(l.Table,{}):f(l.Stack,{my:"xl",sx:{border:"1px solid #eee"},children:[f(l.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[f(l.Group,{position:"left",children:[t(l.Text,{weight:500,children:"Preview Data"}),o.length>10&&f(l.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",o.length]})]}),t(l.ActionIcon,{mr:15,variant:"subtle",color:"blue",disabled:u,onClick:s,children:t(g.Refresh,{size:15})})]}),f(l.Table,{children:[t("thead",{children:t("tr",{children:Object.keys(o==null?void 0:o[0]).map(p=>t("th",{children:t(l.Text,{weight:700,color:"#000",children:p})},p))})}),t("tbody",{children:o.slice(0,10).map((p,m)=>t("tr",{children:Object.values(p).map((d,h)=>t("td",{children:t(l.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:t(l.Text,{children:d})})},`${d}--${h}`))},`row-${m}`))})]})]})}function nn({}){const{queries:e}=c.default.useContext(L),{queryID:n,setQueryID:r,data:i,loading:a}=c.default.useContext(G),o=c.default.useMemo(()=>e.map(u=>({value:u.id,label:u.id})),[e]);return f(l.Stack,{children:[f(l.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[t(l.Text,{children:"Select a Query"}),t(l.Select,{data:o,value:n,onChange:r,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}})]}),t(Ue,{id:n})]})}V.use([H.SunburstChart,ae.CanvasRenderer]);const ln={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function rn({conf:e,data:n,width:r,height:i}){const{label_field:a="name",value_field:o="value",...u}=e,s=c.default.useMemo(()=>n.map(h=>({name:h[a],value:Number(h[o])})),[n,a,o]),p=c.default.useMemo(()=>{var h,x;return(x=(h=C.default.maxBy(s,y=>y.value))==null?void 0:h.value)!=null?x:1},[s]),m=c.default.useMemo(()=>({series:{label:{formatter:({name:h,value:x})=>x/p<.2?" ":h}}}),[p]),d=C.default.merge({},ln,m,u,{series:{data:s}});return t(se.default,{echarts:V,option:d,style:{width:r,height:i}})}function an({regressions:e=[]},n){const r=[],i=[],a=[];return n.length===0?{regressionDataSets:r,regressionSeries:i,regressionXAxes:a}:(e.forEach(({transform:o,plot:u,name:s,y_axis_data_key:p})=>{const m=`x-axis-for-${s}`,d=`dataset-for-${s}--raw`,h=`dataset-for-${s}--transformed`;r.push({id:d,source:n.map((x,y)=>[y,x[p]])}),r.push({transform:o,id:h,fromDatasetId:d}),i.push({...u,name:s,datasetId:h,xAxisId:m,showSymbol:!1,tooltip:{show:!1}}),a.push({type:"category",id:m,datasetId:h,show:!1})}),{regressionDataSets:r,regressionSeries:i,regressionXAxes:a})}const sn={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 on(e,n){var m;const r=e.y_axes.reduce((d,{label_formatter:h},x)=>(d[x]=function(v){const w=typeof v=="object"?v.value:v;if(!h)return w;try{return oe.default(w).format(h)}catch(_){return console.error(_),w}},d),{default:({value:d})=>d}),i=e.series.reduce((d,{yAxisIndex:h,name:x})=>(d[x]=h,d),{}),a=e.series.map(({y_axis_data_key:d,yAxisIndex:h,label_position:x,name:y,...v})=>({data:n.map(_=>_[d]),label:{show:!!x,position:x,formatter:r[h!=null?h:"default"]},name:y,xAxisId:"main-x-axis",yAxisIndex:h,...v})),{regressionDataSets:o,regressionSeries:u,regressionXAxes:s}=an(e,n),p={xAxis:[{data:n.map(d=>d[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:d,...h},x)=>{var y;return{...h,axisLabel:{show:!0,formatter:(y=r[x])!=null?y:r.default}}}),dataset:[...o],series:[...a,...u],tooltip:{formatter:function(d){const h=Array.isArray(d)?d:[d];if(h.length===0)return"";const x=h.map(({seriesName:y,value:v})=>{var q;if(!y)return v;const w=i[y],_=(q=r[w])!=null?q:r.default;return`${y}: ${_({value:v})}`});return x.unshift(`<strong>${h[0].name}</strong>`),x.join("<br />")}}};return C.default.merge({},sn,p)}function un(e){const n=Array.from(e).sort((i,a)=>i-a),r=Math.floor(n.length/2);return n.length%2===0?(n[r-1]+n[r])/2:n[r]}function dn(e,n,r){var a,o,u;const i=e.map(s=>s[n]);switch(r){case"sum":return C.default.sum(i);case"mean":return C.default.mean(i);case"median":return un(i);case"max":return(a=C.default.max(i))!=null?a:0;case"min":return(o=C.default.min(i))!=null?o:0;default:return(u=e[0])==null?void 0:u[n]}}var Ye=function(){};const cn=(e,n,r)=>Math.min(Math.max(r,e),n),Je=(e,n,r)=>{const i=n-e;return i===0?1:(r-e)/i},ve=(e,n,r)=>-r*e+r*n+e,Xe=(e,n)=>r=>Math.max(Math.min(r,n),e),te=e=>e%1?Number(e.toFixed(5)):e,pe=/(-)?([\d]*\.?[\d])+/g,we=/(#[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,fn=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function ne(e){return typeof e=="string"}const he={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Ke=Object.assign(Object.assign({},he),{transform:Xe(0,1)});Object.assign(Object.assign({},he),{default:1});const le=(e=>({test:n=>ne(n)&&n.endsWith(e)&&n.split(" ").length===1,parse:parseFloat,transform:n=>`${n}${e}`}))("%");Object.assign(Object.assign({},le),{parse:e=>le.parse(e)/100,transform:e=>le.transform(e*100)});const Te=(e,n)=>r=>Boolean(ne(r)&&fn.test(r)&&r.startsWith(e)||n&&Object.prototype.hasOwnProperty.call(r,n)),Ze=(e,n,r)=>i=>{if(!ne(i))return i;const[a,o,u,s]=i.match(pe);return{[e]:parseFloat(a),[n]:parseFloat(o),[r]:parseFloat(u),alpha:s!==void 0?parseFloat(s):1}},Y={test:Te("hsl","hue"),parse:Ze("hue","saturation","lightness"),transform:({hue:e,saturation:n,lightness:r,alpha:i=1})=>"hsla("+Math.round(e)+", "+le.transform(te(n))+", "+le.transform(te(r))+", "+te(Ke.transform(i))+")"},pn=Xe(0,255),_e=Object.assign(Object.assign({},he),{transform:e=>Math.round(pn(e))}),B={test:Te("rgb","red"),parse:Ze("red","green","blue"),transform:({red:e,green:n,blue:r,alpha:i=1})=>"rgba("+_e.transform(e)+", "+_e.transform(n)+", "+_e.transform(r)+", "+te(Ke.transform(i))+")"};function hn(e){let n="",r="",i="",a="";return e.length>5?(n=e.substr(1,2),r=e.substr(3,2),i=e.substr(5,2),a=e.substr(7,2)):(n=e.substr(1,1),r=e.substr(2,1),i=e.substr(3,1),a=e.substr(4,1),n+=n,r+=r,i+=i,a+=a),{red:parseInt(n,16),green:parseInt(r,16),blue:parseInt(i,16),alpha:a?parseInt(a,16)/255:1}}const ze={test:Te("#"),parse:hn,transform:B.transform},me={test:e=>B.test(e)||ze.test(e)||Y.test(e),parse:e=>B.test(e)?B.parse(e):Y.test(e)?Y.parse(e):ze.parse(e),transform:e=>ne(e)?e:e.hasOwnProperty("red")?B.transform(e):Y.transform(e)},He="${c}",et="${n}";function mn(e){var n,r,i,a;return isNaN(e)&&ne(e)&&((r=(n=e.match(pe))===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0)+((a=(i=e.match(we))===null||i===void 0?void 0:i.length)!==null&&a!==void 0?a:0)>0}function tt(e){typeof e=="number"&&(e=`${e}`);const n=[];let r=0;const i=e.match(we);i&&(r=i.length,e=e.replace(we,He),n.push(...i.map(me.parse)));const a=e.match(pe);return a&&(e=e.replace(pe,et),n.push(...a.map(he.parse))),{values:n,numColors:r,tokenised:e}}function nt(e){return tt(e).values}function lt(e){const{values:n,numColors:r,tokenised:i}=tt(e),a=n.length;return o=>{let u=i;for(let s=0;s<a;s++)u=u.replace(s<r?He:et,s<r?me.transform(o[s]):te(o[s]));return u}}const xn=e=>typeof e=="number"?0:e;function bn(e){const n=nt(e);return lt(e)(n.map(xn))}const rt={test:mn,parse:nt,createTransformer:lt,getAnimatableNone:bn};function Pe(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 it({hue:e,saturation:n,lightness:r,alpha:i}){e/=360,n/=100,r/=100;let a=0,o=0,u=0;if(!n)a=o=u=r;else{const s=r<.5?r*(1+n):r+n-r*n,p=2*r-s;a=Pe(p,s,e+1/3),o=Pe(p,s,e),u=Pe(p,s,e-1/3)}return{red:Math.round(a*255),green:Math.round(o*255),blue:Math.round(u*255),alpha:i}}const gn=(e,n,r)=>{const i=e*e,a=n*n;return Math.sqrt(Math.max(0,r*(a-i)+i))},yn=[ze,B,Y],at=e=>yn.find(n=>n.test(e)),st=(e,n)=>{let r=at(e),i=at(n),a=r.parse(e),o=i.parse(n);r===Y&&(a=it(a),r=B),i===Y&&(o=it(o),i=B);const u=Object.assign({},a);return s=>{for(const p in u)p!=="alpha"&&(u[p]=gn(a[p],o[p],s));return u.alpha=ve(a.alpha,o.alpha,s),r.transform(u)}},Sn=e=>typeof e=="number",Cn=(e,n)=>r=>n(e(r)),ot=(...e)=>e.reduce(Cn);function ut(e,n){return Sn(e)?r=>ve(e,n,r):me.test(e)?st(e,n):ft(e,n)}const dt=(e,n)=>{const r=[...e],i=r.length,a=e.map((o,u)=>ut(o,n[u]));return o=>{for(let u=0;u<i;u++)r[u]=a[u](o);return r}},vn=(e,n)=>{const r=Object.assign(Object.assign({},e),n),i={};for(const a in r)e[a]!==void 0&&n[a]!==void 0&&(i[a]=ut(e[a],n[a]));return a=>{for(const o in i)r[o]=i[o](a);return r}};function ct(e){const n=rt.parse(e),r=n.length;let i=0,a=0,o=0;for(let u=0;u<r;u++)i||typeof n[u]=="number"?i++:n[u].hue!==void 0?o++:a++;return{parsed:n,numNumbers:i,numRGB:a,numHSL:o}}const ft=(e,n)=>{const r=rt.createTransformer(n),i=ct(e),a=ct(n);return i.numHSL===a.numHSL&&i.numRGB===a.numRGB&&i.numNumbers>=a.numNumbers?ot(dt(i.parsed,a.parsed),r):u=>`${u>0?n:e}`},wn=(e,n)=>r=>ve(e,n,r);function Tn(e){if(typeof e=="number")return wn;if(typeof e=="string")return me.test(e)?st:ft;if(Array.isArray(e))return dt;if(typeof e=="object")return vn}function _n(e,n,r){const i=[],a=r||Tn(e[0]),o=e.length-1;for(let u=0;u<o;u++){let s=a(e[u],e[u+1]);if(n){const p=Array.isArray(n)?n[u]:n;s=ot(p,s)}i.push(s)}return i}function zn([e,n],[r]){return i=>r(Je(e,n,i))}function Pn(e,n){const r=e.length,i=r-1;return a=>{let o=0,u=!1;if(a<=e[0]?u=!0:a>=e[i]&&(o=i-1,u=!0),!u){let p=1;for(;p<r&&!(e[p]>a||p===i);p++);o=p-1}const s=Je(e[o],e[o+1],a);return n[o](s)}}function An(e,n,{clamp:r=!0,ease:i,mixer:a}={}){const o=e.length;Ye(o===n.length),Ye(!i||!Array.isArray(i)||i.length===o-1),e[0]>e[o-1]&&(e=[].concat(e),n=[].concat(n),e.reverse(),n.reverse());const u=_n(n,i,a),s=o===2?zn(e,u):Pn(e,u);return r?p=>s(cn(e[0],e[o-1],p)):s}class Dn{constructor({valueRange:n,colorRange:r}){Dt(this,"mapper");this.mapper=An(n,r)}getColor(n){return this.mapper(n)}}function kn(e,n){return e.type==="static"?e.staticColor:e.type==="continuous"?new Dn(e).getColor(n):"black"}function qn(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function Mn(e,n){const r={};return e.forEach(({name:i,color:a,data_field:o,aggregation:u,size:s,weight:p,formatter:m})=>{const d=dn(n,o,u);let h="";["string","number"].includes(typeof d)?h=oe.default(d).format(m):h=qn(d),r[i]=t(l.Text,{sx:{fontSize:s,display:"inline"},color:kn(a,d),weight:p,children:h})}),r}function In(e){return e.split(" ").map(n=>f(D,{children:[n,"\xA0"]}))}function Gn(e){const r=e.replaceAll("<br />","<br/>").replaceAll(`
|
|
10
|
+
`,"<br/>").split("<br/>");return r.map((a,o)=>{const u=[In(a)];return o!==r.length-1&&u.push(t("br",{})),u}).flat().filter(a=>a!==void 0)}function Ae(e){return Gn(e)}function De(e,n,r){const i=Mn(n,r),a=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{var m;const u=a.exec(o);if(!u)return Ae(o);const s=i[u[1]];if(!s)return Ae(o);const p=(m=u[2])!=null?m:"";return f(D,{children:[s,Ae(p)]})})}V.use([H.BarChart,H.LineChart,H.ScatterChart,Q.GridComponent,Q.LegendComponent,Q.TooltipComponent,ae.CanvasRenderer]),V.registerTransform(It.transform.regression);function pt(e){return e.trim().length>0}function Ln({conf:e,data:n,width:r,height:i}){const a=c.default.useMemo(()=>on(e,n),[e,n]);return!r||!i?null:t(se.default,{echarts:V,option:a,style:{width:r,height:i}})}function On({conf:e,data:n,width:r,height:i}){const{ref:a,height:o}=A.useElementSize(),{ref:u,height:s}=A.useElementSize(),p=c.default.useMemo(()=>{const{stats:{templates:d,variables:h}}=e;return{top:De(d.top,h,n),bottom:De(d.bottom,h,n)}},[e,n]),m=Math.max(0,i-o-s);return f(l.Box,{children:[pt(e.stats.templates.top)&&t(l.Text,{ref:a,align:"left",size:"xs",pl:"sm",children:Object.values(p.top).map(d=>d)}),t(Ln,{width:r,height:m,data:n,conf:e}),pt(e.stats.templates.bottom)&&t(l.Text,{ref:u,align:"left",size:"xs",pl:"sm",children:Object.values(p.bottom).map(d=>d)})]})}var R=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e))(R||{});function Fn({value:e}){return t(l.Text,{component:"span",children:e})}function $n({value:e}){return t(l.Text,{component:"span",children:e})}function Vn({value:e}){const n=oe.default(e).format({thousandSeparated:!0});return t(l.Text,{component:"span",children:n})}function En({value:e}){const n=oe.default(e).format({output:"percent",mantissa:3});return t(l.Text,{component:"span",children:n})}function Bn({value:e,type:n}){switch(n){case R.string:return t(Fn,{value:e});case R.eloc:return t($n,{value:e});case R.number:return t(Vn,{value:e});case R.percentage:return t(En,{value:e})}}function Rn({conf:e,data:n=[],width:r,height:i}){const{id_field:a,use_raw_columns:o,columns:u,...s}=e,p=c.default.useMemo(()=>o?Object.keys(n==null?void 0:n[0]):u.map(d=>d.label),[o,u,n]),m=c.default.useMemo(()=>o?Object.keys(n==null?void 0:n[0]).map(d=>({label:d,value_field:d,value_type:R.string})):u,[o,u,n]);return f(l.Table,{sx:{maxHeight:i},...s,children:[t("thead",{children:t("tr",{children:p.map(d=>t("th",{children:d},d))})}),t("tbody",{children:n.slice(0,30).map((d,h)=>t("tr",{children:m.map(({value_field:x,value_type:y})=>t("td",{children:t(l.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace",fontSize:s.fontSize}},children:t(Bn,{value:d[x],type:y})})},`${x}--${d[x]}`))},a?d[a]:`row-${h}`))}),n.length>100&&t("tfoot",{children:t("tr",{children:t("td",{colSpan:p.length,children:t(l.Text,{color:"red",size:"sm",children:"Showing only the first 30 rows to avoid causing slow performance"})})})})]})}V.use([Q.GridComponent,Q.VisualMapComponent,Q.LegendComponent,Q.TooltipComponent,ae.CanvasRenderer]);function Nn({conf:e,data:n,width:r,height:i}){const{x_axis_data_key:a,y_axis_data_key:o,z_axis_data_key:u,...s}=e,p=c.default.useMemo(()=>C.default.minBy(n,h=>h[u])[u],[n,u]),m=c.default.useMemo(()=>C.default.maxBy(n,h=>h[u])[u],[n,u]),d={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[a],h[o],h[u]])}]};return t(se.default,{echarts:V,option:d,style:{width:r,height:i}})}var Or="";V.use([H.PieChart,ae.CanvasRenderer]);const Qn={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 jn({conf:e,data:n,width:r,height:i}){const{label_field:a="name",value_field:o="value",...u}=e,s=c.default.useMemo(()=>n.map(d=>({name:d[a],value:Number(d[o])})),[n,a,o]),p=c.default.useMemo(()=>({series:{labelLayout:function(d){const h=d.labelRect.x<r/2,x=d.labelLinePoints;return x[2][0]=h?d.labelRect.x:d.labelRect.x+d.labelRect.width,{labelLinePoints:x}}}}),[r]),m=C.default.merge({},Qn,p,u,{series:{data:s}});return t(se.default,{echarts:V,option:m,style:{width:r,height:i}})}function Wn({conf:{template:e,variables:n,align:r},data:i}){const a=c.default.useMemo(()=>De(e,n,i),[e,n,i]);return t(l.Text,{align:r,children:Object.values(a).map(o=>o)})}function Un({conf:e,width:n,height:r}){return!n||!r?null:t(Se.default,{readOnly:!0,value:e.content,onChange:C.default.noop,sx:{border:"none"}})}function ht(e,n,r,i){const a={width:e,height:n,data:r,conf:i.conf};switch(i.type){case"sunburst":return t(rn,{...a});case"cartesian":return t(On,{...a});case"table":return t(Rn,{...a});case"stats":return t(Wn,{...a});case"rich-text":return t(Un,{...a});case"bar-3d":return t(Nn,{...a});case"pie":return t(jn,{...a});default:return null}}const Yn=["rich-text"];function mt({viz:e,data:n,loading:r}){const{ref:i,width:a,height:o}=A.useElementSize(),u=c.default.useMemo(()=>!Array.isArray(n)||n.length===0,[n]);return Yn.includes(e.type)?t("div",{className:"viz-root",ref:i,children:t(fe,{children:ht(a,o,n,e)})}):r?t("div",{className:"viz-root",ref:i,children:t(l.LoadingOverlay,{visible:r,exitTransitionDuration:0})}):f("div",{className:"viz-root",ref:i,children:[u&&t(l.Text,{color:"gray",align:"center",children:"nothing to show"}),!u&&t(fe,{children:ht(a,o,n,e)})]})}function Jn({}){const{data:e,loading:n,viz:r}=c.default.useContext(G);return t(mt,{viz:r,data:e,loading:n})}function Xn({label:e,required:n,value:r,onChange:i,data:a,sx:o},u){const s=c.default.useMemo(()=>!Array.isArray(a)||a.length===0?[]:Object.keys(a[0]).map(m=>({label:m,value:m})),[a]);return t(l.Select,{ref:u,label:e,data:s,value:r,onChange:i,required:n,sx:o})}const k=c.default.forwardRef(Xn);function Kn({conf:e,setConf:n,data:r}){const i=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:a,handleSubmit:o,formState:u}=b.useForm({defaultValues:i});return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:o(n),children:[t(l.Text,{children:"X Axis"}),f(l.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(b.Controller,{name:"x_axis_data_key",control:a,render:({field:s})=>t(k,{label:"Data Field",required:!0,data:r,...s})}),t(b.Controller,{name:"xAxis3D.name",control:a,render:({field:s})=>t(l.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...s})})]}),t(l.Text,{mt:"lg",children:"Y Axis"}),f(l.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(b.Controller,{name:"y_axis_data_key",control:a,render:({field:s})=>t(k,{label:"Data Field",required:!0,data:r,...s})}),t(b.Controller,{name:"yAxis3D.name",control:a,render:({field:s})=>t(l.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...s})})]}),t(l.Text,{mt:"lg",children:"Z Axis"}),f(l.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[t(b.Controller,{name:"z_axis_data_key",control:a,render:({field:s})=>t(k,{label:"Data Field",required:!0,data:r,...s})}),t(b.Controller,{name:"zAxis3D.name",control:a,render:({field:s})=>t(l.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...s})})]}),t(l.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:f(l.Button,{color:"blue",type:"submit",children:[t(g.DeviceFloppy,{size:20}),t(l.Text,{ml:"md",children:"Save"})]})})]})})}function Zn({value:e,onChange:n},r){const i=l.useMantineTheme(),a=c.default.useMemo(()=>Object.entries(i.colors).map(([u,s])=>({label:u,value:s[6]})),[i]),o=c.default.useMemo(()=>a.some(u=>u.value===e),[e,a]);return f(l.Group,{position:"apart",spacing:4,children:[t(l.TextInput,{placeholder:"Set any color",value:o?"":e,onChange:u=>n(u.currentTarget.value),rightSection:t(l.ColorSwatch,{color:o?"transparent":e,radius:4}),variant:o?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),t(l.Text,{sx:{flexGrow:0},children:"or"}),t(l.Select,{data:a,value:e,onChange:n,variant:o?"default":"filled",placeholder:"Pick a theme color",icon:t(l.ColorSwatch,{color:o?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const ke=c.default.forwardRef(Zn);function Hn({control:e,index:n}){return f(l.Group,{grow:!0,align:"top",children:[t(b.Controller,{name:`series.${n}.stack`,control:e,render:({field:r})=>t(l.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...r})}),t(b.Controller,{name:`series.${n}.barWidth`,control:e,render:({field:r})=>t(l.TextInput,{label:"Bar Width",sx:{flexGrow:1},...r})})]})}const el=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}];function tl({control:e,index:n}){return f(l.Group,{grow:!0,align:"center",children:[t(b.Controller,{name:`series.${n}.step`,control:e,render:({field:r})=>t(l.Select,{label:"Step",data:el,sx:{flexGrow:1,maxWidth:"48%"},...r,value:String(r.value),onChange:i=>{const a=i==="false"?!1:i;r.onChange(a)}})}),t(b.Controller,{name:`series.${n}.smooth`,control:e,render:({field:r})=>t(l.Box,{sx:{flexGrow:1},children:t(l.Switch,{label:"Smooth Line",checked:r.value,onChange:i=>r.onChange(i.currentTarget.checked)})})})]})}const nl=Array.from(new Array(9),(e,n)=>({label:String(n+1),value:n+1}));function ll({control:e,index:n}){return t(l.Group,{grow:!0,align:"center",children:t(b.Controller,{name:`series.${n}.symbolSize`,control:e,render:({field:r})=>f(l.Stack,{sx:{flexGrow:1},pb:16,spacing:4,children:[t(l.Text,{size:"sm",children:"Size"}),t(l.Slider,{min:1,max:10,marks:nl,...r,sx:{width:"100%"}})]})})})}const rl=[{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 il({control:e,index:n,remove:r,seriesItem:i,yAxisOptions:a,data:o}){const u=i.type;return f(l.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(l.Stack,{children:t(b.Controller,{name:`series.${n}.type`,control:e,render:({field:s})=>t(l.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}],...s})})}),t(b.Controller,{name:`series.${n}.name`,control:e,render:({field:s})=>t(l.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),f(l.Group,{grow:!0,noWrap:!0,children:[t(b.Controller,{name:`series.${n}.y_axis_data_key`,control:e,render:({field:s})=>t(k,{label:"Value Field",required:!0,data:o,sx:{flex:1},...s})}),t(b.Controller,{name:`series.${n}.yAxisIndex`,control:e,render:({field:{value:s,onChange:p,...m}})=>{var d;return t(l.Select,{label:"Y Axis",data:a,disabled:a.length===0,...m,value:(d=s==null?void 0:s.toString())!=null?d:"",onChange:h=>{if(!h){p(0);return}p(Number(h))},sx:{flex:1}})}})]}),u==="line"&&t(tl,{index:n,control:e}),u==="bar"&&t(Hn,{index:n,control:e}),u==="scatter"&&t(ll,{index:n,control:e}),t(b.Controller,{name:`series.${n}.label_position`,control:e,render:({field:s})=>t(l.Select,{label:"Label Position",data:rl,...s})}),f(l.Stack,{spacing:4,children:[t(l.Text,{size:"sm",children:"Color"}),t(b.Controller,{name:`series.${n}.color`,control:e,render:({field:s})=>t(ke,{...s})})]}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:t(g.Trash,{size:16})})]},n)}function al({control:e,watch:n,getValues:r,data:i}){const{fields:a,append:o,remove:u}=b.useFieldArray({control:e,name:"series"}),s=n("series"),p=a.map((h,x)=>({...h,...s[x]})),m=()=>o({type:"bar",name:A.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",stack:"",color:"#000",step:!1,smooth:!1}),d=c.default.useMemo(()=>r().y_axes.map(({name:h},x)=>({label:h,value:x.toString()})),[r]);return f(l.Stack,{children:[p.map((h,x)=>t(il,{control:e,index:x,remove:u,seriesItem:h,yAxisOptions:d,data:i})),t(l.Group,{position:"center",mt:"xs",children:t(l.Button,{onClick:m,children:"Add a Series"})})]})}const xt={mantissa:0,output:"number"};function sl({value:e,onChange:n},r){const i=u=>{n({...e,output:u})},a=u=>{const s=u===0?!1:e.trimMantissa;n({...e,mantissa:u,trimMantissa:s})},o=u=>{n({...e,trimMantissa:u.currentTarget.checked})};return t(l.Stack,{ref:r,children:f(l.Group,{grow:!0,children:[t(l.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:i}),t(l.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:a}),t(l.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:o,disabled:e.mantissa===0})]})})}const bt=c.default.forwardRef(sl);function ol({control:e,index:n,remove:r}){return f(l.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(l.Group,{grow:!0,noWrap:!0,children:t(b.Controller,{name:`y_axes.${n}.name`,control:e,render:({field:i})=>t(l.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})}),t(l.Stack,{children:t(b.Controller,{name:`y_axes.${n}.label_formatter`,control:e,render:({field:i})=>t(bt,{...i})})}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},disabled:n===0,children:t(g.Trash,{size:16})})]},n)}function ul({control:e,watch:n}){const{fields:r,append:i,remove:a}=b.useFieldArray({control:e,name:"y_axes"}),o=n("y_axes"),u=r.map((p,m)=>({...p,...o[m]})),s=()=>i({name:"",label_formatter:xt});return f(l.Stack,{children:[u.map((p,m)=>t(ol,{control:e,index:m,remove:a})),t(l.Group,{position:"center",mt:"xs",children:t(l.Button,{onClick:s,children:"Add a Y Axis"})})]})}const dl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function cl({control:e,regressionItem:n,index:r,remove:i,yAxisOptions:a,data:o}){const u=n.transform.config.method;return f(l.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(b.Controller,{name:`regressions.${r}.name`,control:e,render:({field:s})=>t(l.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),f(l.Group,{grow:!0,noWrap:!0,children:[t(b.Controller,{name:`regressions.${r}.y_axis_data_key`,control:e,render:({field:s})=>t(k,{label:"Value Field",required:!0,data:o,sx:{flex:1},...s})}),t(b.Controller,{name:`regressions.${r}.plot.yAxisIndex`,control:e,render:({field:{value:s,onChange:p,...m}})=>{var d;return t(l.Select,{label:"Y Axis",data:a,disabled:a.length===0,...m,value:(d=s==null?void 0:s.toString())!=null?d:"",onChange:h=>{if(!h){p(0);return}p(Number(h))},sx:{flex:1}})}})]}),f(l.Group,{grow:!0,noWrap:!0,children:[t(b.Controller,{name:`regressions.${r}.transform.config.method`,control:e,render:({field:s})=>t(l.Select,{label:"Method",data:dl,sx:{flex:1},...s})}),u==="polynomial"&&t(b.Controller,{name:`regressions.${r}.transform.config.order`,control:e,render:({field:s})=>t(l.NumberInput,{label:"Order",sx:{flex:1},...s})})]}),f(l.Stack,{spacing:4,children:[t(l.Text,{size:"sm",children:"Color"}),t(b.Controller,{name:`regressions.${r}.plot.color`,control:e,render:({field:s})=>t(ke,{...s})})]}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(r),sx:{position:"absolute",top:15,right:5},children:t(g.Trash,{size:16})})]},r)}function fl({control:e,watch:n,getValues:r,data:i}){const{fields:a,append:o,remove:u}=b.useFieldArray({control:e,name:"regressions"}),s=n("regressions"),p=a.map((h,x)=>({...h,...s[x]})),m=c.default.useMemo(()=>r().y_axes.map(({name:h},x)=>({label:h,value:x.toString()})),[r]),d=()=>o({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(l.Stack,{children:[p.map((h,x)=>t(cl,{regressionItem:h,control:e,index:x,remove:u,yAxisOptions:m,data:i})),t(l.Group,{position:"center",mt:"xs",children:t(l.Button,{onClick:d,children:"Add a Regression Line"})})]})}const pl=[{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 hl({label:e,value:n,onChange:r},i){return t(l.Select,{ref:i,label:e,data:pl,value:n,onChange:r})}const ml=c.default.forwardRef(hl);function xl({label:e,value:n,onChange:r},i){const[a,o]=c.default.useState(Array.isArray(n)?[...n]:[]),u=c.default.useCallback(()=>{o(x=>[...x,""])},[o]),s=c.default.useCallback(x=>{o(y=>(y.splice(x,1),[...y]))},[o]),p=c.default.useMemo(()=>!C.default.isEqual(a,n),[a,n]),m=()=>{r(a.map(x=>x.toString()))},d=l.useMantineTheme(),h=c.default.useMemo(()=>Object.entries(d.colors).map(([x,y])=>y[6]),[d]);return f(D,{children:[f(l.Group,{position:"left",ref:i,children:[t(l.Text,{children:e}),t(l.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!p,onClick:m,children:t(g.DeviceFloppy,{size:20})})]}),f(l.Group,{children:[a.map((x,y)=>t(l.ColorInput,{value:x,onChange:v=>{o(w=>(w.splice(y,1,v),[...w]))},swatches:h,rightSection:t(l.ActionIcon,{onClick:()=>s(y),color:"red",children:t(g.Trash,{size:14})}),sx:{width:"45%"}})),t(l.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:t(g.PlaylistAdd,{size:20})})]})]})}const bl=c.default.forwardRef(xl),xe=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function gl({label:e,value:n,onChange:r},i){var u,s;const[a,o]=c.default.useState((s=(u=xe.find(p=>p.label===n))==null?void 0:u.value)!=null?s:xe[0].value);return c.default.useEffect(()=>{const p=xe.find(m=>m.value===a);p&&r(p.label)},[a]),f(l.Stack,{spacing:0,mt:"sm",mb:"lg",children:[t(l.Text,{size:"sm",children:e}),t(l.Slider,{label:null,marks:xe,value:a,onChange:o,step:25,placeholder:"Pick a font size",ref:i})]})}const yl=c.default.forwardRef(gl);function Sl({label:e,value:n,onChange:r},i){const[a,o]=c.default.useState(Array.isArray(n)?[...n]:[]),u=c.default.useCallback(()=>{o(d=>[...d,""])},[o]),s=c.default.useCallback(d=>{o(h=>(h.splice(d,1),[...h]))},[o]),p=c.default.useMemo(()=>!C.default.isEqual(a,n),[a,n]),m=()=>{r(a.map(d=>d.toString()))};return f(D,{children:[f(l.Group,{position:"left",ref:i,children:[t(l.Text,{children:e}),t(l.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!p,onClick:m,children:t(g.DeviceFloppy,{size:20})})]}),f(l.Group,{children:[a.map((d,h)=>t(l.TextInput,{value:d,onChange:x=>{const y=x.currentTarget.value;o(v=>(v.splice(h,1,y),[...v]))},rightSection:t(l.ActionIcon,{onClick:()=>s(h),color:"red",children:t(g.Trash,{size:14})}),sx:{width:"45%"}})),t(l.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:t(g.PlaylistAdd,{size:20})})]})]})}const Cl=c.default.forwardRef(Sl);function gt(){return{name:A.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:"none",formatter:{output:"number",mantissa:0}}}const qe=c.default.forwardRef(function({value:n,onChange:r,...i},a){return t(l.TextInput,{ref:a,value:n,onChange:r,...i})}),yt=c.default.forwardRef(function({value:n,onChange:r,data:i},a){const o=n.color.type,u=(s,p)=>{const m=C.default.cloneDeep(n);C.default.set(m,s,p),r(m)};return f(l.Box,{px:"sm",py:"md",children:[t(l.Text,{weight:"bold",pb:0,children:n.name}),t(l.Divider,{my:"xs",label:"Data",labelPosition:"center"}),f(l.Group,{grow:!0,noWrap:!0,children:[t(l.TextInput,{label:"Name",required:!0,value:n.name,onChange:s=>u("name",s.currentTarget.value)}),t(k,{label:"Data Field",required:!0,data:i,value:n.data_field,onChange:s=>u("data_field",s)}),t(ml,{label:"Aggregation",value:n.aggregation,onChange:s=>u("aggregation",s)})]}),t(bt,{value:n.formatter,onChange:s=>u("formatter",s)}),t(l.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),t(l.Stack,{children:t(l.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:n.size,onChange:s=>u("size",s.currentTarget.value)})}),t(l.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:t(yl,{label:"Font Weight",value:n.weight,onChange:s=>u("weight",s)})}),t(l.Divider,{my:"xs",label:"Style",labelPosition:"center"}),f(l.Stack,{children:[t(l.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:n.color.type,onChange:s=>u("color.type",s)}),o==="static"&&t(ke,{value:n.color.staticColor,onChange:s=>u("color.staticColor",s)}),o==="continuous"&&f(D,{children:[t(Cl,{label:"Value Range",value:n.color.valueRange,onChange:s=>u("color.valueRange",s)}),t(bl,{label:"Color Range",value:n.color.colorRange,onChange:s=>u("color.colorRange",s)})]})]})]})});function vl({control:e,index:n,remove:r,data:i}){return f(l.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[t(b.Controller,{name:`stats.variables.${n}`,control:e,render:({field:a})=>t(yt,{data:i,...a})}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:t(g.Trash,{size:16})})]},n)}function wl({control:e,watch:n,data:r}){const{fields:i,append:a,remove:o}=b.useFieldArray({control:e,name:"stats.variables"});n("stats.templates");const u=n("stats.variables"),s=i.map((m,d)=>({...m,...u[d]})),p=()=>a(gt());return f(l.Stack,{children:[f(l.Stack,{spacing:0,children:[t(b.Controller,{name:"stats.templates.top",control:e,render:({field:m})=>t(qe,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...m})}),t(b.Controller,{name:"stats.templates.bottom",control:e,render:({field:m})=>t(qe,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...m})})]}),s.map((m,d)=>t(vl,{control:e,index:d,remove:o,data:r})),t(l.Group,{position:"center",mt:"xs",children:t(l.Button,{onClick:p,children:"Add a Variable"})})]})}function Tl(e){function n({type:r,name:i,showSymbol:a,symbolSize:o=5,y_axis_data_key:u="value",yAxisIndex:s=0,label_position:p="top",stack:m="1",color:d="black",barWidth:h="30",smooth:x=!1,step:y=!1}){return{type:r,name:i,showSymbol:a,symbolSize:o,y_axis_data_key:u,yAxisIndex:s,label_position:p,stack:m,color:d,barWidth:h,smooth:x,step:y}}return e.map(n)}function _l(e){return e||{templates:{top:"",bottom:""},variables:[]}}function zl({conf:e,setConf:n,data:r}){const{series:i,y_axes:a,...o}=e,u=c.default.useMemo(()=>{const{x_axis_name:y="",stats:v,...w}=o;return{series:Tl(i!=null?i:[]),x_axis_name:y,y_axes:a!=null?a:[{name:"Y Axis",label_formatter:xt}],stats:_l(v),...w}},[i,o]);c.default.useEffect(()=>{!C.default.isEqual(e,u)&&n(u)},[e,u]);const{control:s,handleSubmit:p,watch:m,getValues:d}=b.useForm({defaultValues:u});m(["x_axis_data_key","x_axis_name"]);const h=d(),x=c.default.useMemo(()=>!C.default.isEqual(h,e),[h,e]);return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:p(n),children:[f(l.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(l.Text,{children:"Chart Config"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!x,children:t(g.DeviceFloppy,{size:20})})]}),f(l.Accordion,{multiple:!0,value:["X Axis","Y Axes"],children:[t(l.Accordion.Item,{value:"X Axis",children:f(l.Group,{grow:!0,noWrap:!0,children:[t(b.Controller,{name:"x_axis_data_key",control:s,render:({field:y})=>t(k,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...y})}),t(b.Controller,{name:"x_axis_name",control:s,render:({field:y})=>t(l.TextInput,{label:"X Axis Name",sx:{flex:1},...y})})]})}),t(l.Accordion.Item,{value:"Y Axes",children:t(ul,{control:s,watch:m})}),t(l.Accordion.Item,{value:"Series",children:t(al,{control:s,watch:m,getValues:d,data:r})}),t(l.Accordion.Item,{value:"Regression Lines",children:t(fl,{control:s,watch:m,getValues:d,data:r})}),t(l.Accordion.Item,{value:"Stats",children:t(wl,{control:s,watch:m,data:r})})]})]})})}function Pl({conf:{label_field:e,value_field:n},setConf:r,data:i}){const a=ee.useForm({initialValues:{label_field:e,value_field:n}});return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:a.onSubmit(r),children:[f(l.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(l.Text,{children:"Pie Config"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(g.DeviceFloppy,{size:20})})]}),f(l.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(k,{label:"Label Field",required:!0,data:i,...a.getInputProps("label_field")}),t(k,{label:"Value Field",required:!0,data:i,...a.getInputProps("value_field")})]})]})})}function Al({conf:e,setConf:n}){const r=c.default.useMemo(()=>{const{content:m=""}=e;return{content:m}},[e]);c.default.useEffect(()=>{!C.default.isEqual(e,r)&&n(r)},[e,r]);const{control:i,handleSubmit:a,watch:o,getValues:u}=b.useForm({defaultValues:r});o("content");const s=u(),p=c.default.useMemo(()=>!C.default.isEqual(s,e),[s,e]);return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:a(n),children:[f(l.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(l.Text,{children:"Content"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!p,children:t(g.DeviceFloppy,{size:20})})]}),t(b.Controller,{name:"content",control:i,render:({field:m})=>t(Se.default,{sx:{flex:1},...m})})]})})}function Dl(e){if("variables"in e)return e;const{align:n,size:r,weight:i,color:a,content:{prefix:o="",data_field:u="value",formatter:s={output:"number",mantissa:0},postfix:p=""}={}}=e;return{align:n,template:`${o} \${value} ${p}`,variables:[{name:"value",data_field:u,aggregation:"none",formatter:s,color:a,weight:i,size:r}]}}function kl({control:e,index:n,remove:r,data:i}){return f(l.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[t(b.Controller,{name:`variables.${n}`,control:e,render:({field:a})=>t(yt,{data:i,...a})}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:t(g.Trash,{size:16})})]},n)}function ql({control:e,watch:n,data:r}){const{fields:i,append:a,remove:o}=b.useFieldArray({control:e,name:"variables"}),u=n("variables"),s=i.map((m,d)=>({...m,...u[d]})),p=()=>a(gt());return f(l.Stack,{children:[s.map((m,d)=>t(kl,{control:e,index:d,remove:o,data:r})),t(l.Group,{position:"center",mt:"xs",children:t(l.Button,{onClick:p,children:"Add a Variable"})})]})}function Ml(){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 Il({conf:e,setConf:n,data:r}){const i=c.default.useMemo(()=>{const{align:d,template:h="",variables:x=[]}=Dl(e);return d?{variables:x,template:h,align:d}:Ml()},[e]);c.default.useEffect(()=>{!C.default.isEqual(e,i)&&n(i)},[e,i]);const{control:a,handleSubmit:o,watch:u,getValues:s}=b.useForm({defaultValues:i});u(["variables","template"]);const p=s(),m=c.default.useMemo(()=>!C.default.isEqual(p,e),[p,e]);return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:o(n),children:[f(l.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(l.Text,{weight:500,children:"Stats Configurations"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:t(g.DeviceFloppy,{size:20})})]}),t(b.Controller,{name:"template",control:a,render:({field:d})=>t(qe,{label:"Template",py:"md",sx:{flexGrow:1},...d})}),t(l.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),t(ql,{control:a,watch:u,data:r})]})})}function Gl({conf:{label_field:e,value_field:n},setConf:r,data:i}){const a=ee.useForm({initialValues:{label_field:e,value_field:n}});return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:a.onSubmit(r),children:[f(l.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(l.Text,{children:"Sunburst Config"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(g.DeviceFloppy,{size:20})})]}),f(l.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(k,{label:"Label Field",required:!0,data:i,...a.getInputProps("label_field")}),t(k,{label:"Value Field",required:!0,data:i,...a.getInputProps("value_field")})]})]})})}const Ll=Object.values(R).map(e=>({label:e,value:e}));function Ol({label:e,value:n,onChange:r,sx:i}){return t(l.Select,{label:e,data:Ll,value:n,onChange:r,sx:i})}function Fl({conf:{columns:e,...n},setConf:r,data:i}){const a=ee.useForm({initialValues:{id_field:"id",use_raw_columns:!0,columns:e!=null?e:[],fontSize:"sm",horizontalSpacing:"sm",verticalSpacing:"sm",striped:!1,highlightOnHover:!1,...n}}),o=()=>a.insertListItem("columns",{label:A.randomId(),value_field:"value",value_type:R.string});return t(l.Stack,{mt:"md",spacing:"xs",children:f("form",{onSubmit:a.onSubmit(r),children:[f(l.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[t(l.Text,{children:"Table Config"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:t(g.DeviceFloppy,{size:20})})]}),f(l.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(k,{label:"ID Field",required:!0,data:i,...a.getInputProps("id_field")}),f(l.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[t(l.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...a.getInputProps("horizontalSpacing")}),t(l.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...a.getInputProps("verticalSpacing")})]}),t(l.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:t(l.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...a.getInputProps("fontSize")})}),f(l.Stack,{children:[t(l.Text,{children:"Other"}),f(l.Group,{position:"apart",grow:!0,children:[t(l.Switch,{label:"Striped",...a.getInputProps("striped",{type:"checkbox"})}),t(l.Switch,{label:"Highlight on hover",...a.getInputProps("highlightOnHover",{type:"checkbox"})})]})]})]}),f(l.Stack,{mt:"xs",spacing:"xs",p:"md",mb:"xl",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[t(l.Switch,{label:"Use Original Data Columns",...a.getInputProps("use_raw_columns",{type:"checkbox"})}),!a.values.use_raw_columns&&f(l.Stack,{children:[t(l.Text,{mt:"xl",mb:0,children:"Custom Columns"}),a.values.columns.map((u,s)=>f(l.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[f(l.Group,{position:"apart",grow:!0,children:[t(l.TextInput,{label:"Label",required:!0,sx:{flex:1},...a.getInputProps(`columns.${s}.label`)}),t(k,{label:"Value Field",required:!0,data:i,...a.getInputProps(`columns.${s}.value_field`)}),t(Ol,{label:"Value Type",sx:{flex:1},...a.getInputProps(`columns.${s}.value_type`)})]}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>a.removeListItem("columns",s),sx:{position:"absolute",top:15,right:5},children:t(g.Trash,{size:16})})]},s)),t(l.Group,{position:"center",mt:"xs",children:t(l.Button,{onClick:o,children:"Add a Column"})})]})]}),t(l.Text,{weight:500,mb:"md",children:"Current Configuration:"}),t(X.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(a.values,null,2)})]})})}const Me=[{value:"stats",label:"Stats",Panel:Il},{value:"rich-text",label:"Rich Text",Panel:Al},{value:"table",label:"Table",Panel:Fl},{value:"sunburst",label:"Sunburst",Panel:Gl},{value:"bar-3d",label:"Bar Chart (3D)",Panel:Kn},{value:"cartesian",label:"Cartesian Chart",Panel:zl},{value:"pie",label:"Pie Chart",Panel:Pl}];function $l(){const{data:e,viz:n,setViz:r}=c.default.useContext(G),[i,a]=A.useInputState(n.type),o=n.type!==i,u=c.default.useCallback(()=>{!o||r(d=>({...d,type:i}))},[o,i]),s=d=>{r(h=>({...h,conf:d}))},p=d=>{try{s(JSON.parse(d))}catch(h){console.error(h)}},m=c.default.useMemo(()=>{var d;return(d=Me.find(h=>h.value===i))==null?void 0:d.Panel},[i,Me]);return f(D,{children:[t(l.Select,{label:"Visualization",value:i,onChange:a,data:Me,rightSection:t(l.ActionIcon,{disabled:!o,onClick:u,children:t(g.DeviceFloppy,{size:20})})}),m&&t(m,{conf:n.conf,setConf:s,data:e}),!m&&t(l.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(n.conf,null,2),onChange:p})]})}function Vl({}){return f(l.Group,{grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[t(l.Stack,{sx:{width:"40%",flexShrink:0,flexGrow:0},children:t($l,{})}),t(l.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:t(Jn,{})})]})}function El({opened:e,close:n}){const{freezeLayout:r}=c.default.useContext(O),{data:i,loading:a,viz:o,title:u}=c.default.useContext(G);return c.default.useEffect(()=>{r(e)},[e]),t(l.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:u,trapFocus:!0,onDragStart:s=>{s.stopPropagation()},children:t(l.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",width:"100%",padding:"16px"}},padding:"md",children:f(l.Tabs,{defaultValue:"Visualization",children:[f(l.Tabs.List,{children:[t(l.Tabs.Tab,{value:"Data",children:"Data"}),t(l.Tabs.Tab,{value:"Panel",children:"Panel"}),t(l.Tabs.Tab,{value:"Visualization",children:"Visualization"})]}),f(l.Tabs.Panel,{value:"Data",pt:"sm",children:[t(l.LoadingOverlay,{visible:a,exitTransitionDuration:0}),t(nn,{})]}),t(l.Tabs.Panel,{value:"Panel",pt:"sm",children:t(tn,{})}),t(l.Tabs.Panel,{value:"Visualization",pt:"sm",children:t(Vl,{})})]})})})}var Fr="";function Bl({}){const e=ye.useModals(),[n,r]=c.default.useState(!1),i=()=>r(!0),a=()=>r(!1),{id:o,title:u,refreshData:s}=c.default.useContext(G),{inEditMode:p}=c.default.useContext(O),{duplidatePanel:m,removePanelByID:d,viewPanelInFullScreen:h,inFullScreen:x}=c.default.useContext(ue),y=c.default.useCallback(()=>{m(o)},[m,o]),v=()=>e.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>d(o)}),w=c.default.useCallback(()=>{h(o)},[o,h]);return f(l.Box,{sx:{position:"relative"},children:[t(l.Box,{sx:{position:"absolute",left:0,top:0,height:28},children:t(We,{})}),t(l.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:f(l.Menu,{children:[t(l.Menu.Target,{children:t(l.Text,{lineClamp:1,weight:"bold",children:u})}),f(l.Menu.Dropdown,{children:[t(l.Menu.Item,{onClick:s,icon:t(g.Refresh,{size:14}),children:"Refresh"}),!x&&t(l.Menu.Item,{onClick:w,icon:t(g.ArrowsMaximize,{size:14}),children:"Full Screen"}),p&&f(D,{children:[t(l.Divider,{label:"Edit",labelPosition:"center"}),t(l.Menu.Item,{onClick:i,icon:t(g.Settings,{size:14}),children:"Settings"}),t(l.Menu.Item,{onClick:y,icon:t(g.Copy,{size:14}),children:"Duplicate"}),t(l.Menu.Item,{color:"red",onClick:v,icon:t(g.Trash,{size:14}),children:"Delete"})]})]})]})}),p&&t(El,{opened:n,close:a})]})}var $r="";function be({viz:e,queryID:n,title:r,description:i,update:a,layout:o,id:u}){const s=c.default.useContext(E),p=c.default.useContext(U),m=c.default.useContext(L),[d,h]=c.default.useState(r),[x,y]=c.default.useState(i),[v,w]=c.default.useState(n),[_,q]=c.default.useState(e),T=c.default.useMemo(()=>{if(!!v)return m.queries.find(ie=>ie.id===v)},[v,m.queries]);c.default.useEffect(()=>{a==null||a({id:u,layout:o,title:d,description:x,queryID:v,viz:_})},[d,x,T,_,u,o,v]);const{data:z=[],loading:K,refresh:Z}=J.useRequest(Be({context:s,definitions:m,filterValues:p,title:d,query:T}),{refreshDeps:[s,m,T,p]}),re=Z;return t(G.Provider,{value:{id:u,data:z,loading:K,title:d,setTitle:h,description:x,setDescription:y,queryID:v,setQueryID:w,viz:_,setViz:q,refreshData:re},children:f(l.Container,{className:"panel-root",children:[t(Bl,{}),t(mt,{viz:_,data:z,loading:K})]})})}var Vr="";const Rl=ge.WidthProvider($e.default);function St({panels:e,setPanels:n,className:r="layout",rowHeight:i=10,isDraggable:a,isResizable:o}){const u=c.default.useCallback(s=>{const p=new Map;s.forEach(({i:d,...h})=>{p.set(d,h)});const m=e.map(d=>({...d,layout:p.get(d.id)}));n(m)},[e,n]);return t(Rl,{onLayoutChange:u,className:`dashboard-layout ${r}`,rowHeight:i,isDraggable:a,isResizable:o,children:e.map(({id:s,...p},m)=>t("div",{"data-grid":p.layout,children:t(be,{id:s,...p,update:d=>{n(h=>(h.splice(m,1,d),[...h]))}})},s))})}function Ie(e,n){return f(l.Text,{size:"xs",sx:{svg:{verticalAlign:"bottom"}},children:[e," ",n]})}function Nl({mode:e,setMode:n}){return t(l.SegmentedControl,{size:"xs",value:e,onChange:n,data:[{label:Ie(t(g.PlayerPlay,{size:20}),"Use"),value:I.Use},{label:Ie(t(g.Resize,{size:20}),"Edit Layout"),value:I.Layout},{label:Ie(t(g.Paint,{size:20}),"Edit Content"),value:I.Edit}]})}const Ql=`
|
|
12
|
+
-- You may reference global variables in SQL or VizConfig.
|
|
14
13
|
SELECT *
|
|
15
14
|
FROM commit
|
|
16
15
|
WHERE
|
|
17
|
-
-- context
|
|
18
|
-
|
|
16
|
+
-- context
|
|
17
|
+
user_id IS '\${context.currentUserID}'
|
|
18
|
+
-- filters
|
|
19
|
+
author_time BETWEEN '\${filters.timeRange?.[0].toISOString()}' AND '\${filters.timeRange?.[1].toISOString()}'
|
|
19
20
|
-- SQL snippets
|
|
20
|
-
AND \${author_email_condition}
|
|
21
|
-
\${order_by_clause}
|
|
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
|
-
-- in SQL or VizConfig.
|
|
24
|
-
|
|
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
|
-
FROM commit
|
|
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
|
-
-- in SQL or VizConfig.
|
|
29
|
-
|
|
30
|
-
${Wr}
|
|
31
|
-
|
|
32
|
-
-- where author_time_condition is:
|
|
33
|
-
author_time BETWEEN '\${timeRange?.[0].toISOString()}' AND '\${timeRange?.[1].toISOString()}'
|
|
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"}})});
|
|
21
|
+
AND \${sql_snippets.author_email_condition}
|
|
22
|
+
\${sql_snippets.order_by_clause}
|
|
23
|
+
`;function Ct({showSQLSnippets:e=!0,sx:n={}}){const r=c.default.useContext(E),i=c.default.useContext(U),{sqlSnippets:a}=c.default.useContext(L),o=c.default.useMemo(()=>{const u={context:r,filters:i};if(e){const s=a.reduce((p,m)=>(p[m.key]=m.value,p),{});u.sql_snippets=s}return JSON.stringify(u,null,2)},[r,a,i,e]);return f(l.Stack,{sx:{border:"1px solid #eee",maxWidth:"40%",overflow:"hidden",...n},children:[t(l.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:t(l.Text,{weight:500,children:"Global Variables"})}),f(l.Stack,{px:"md",pb:"md",sx:{width:"100%"},children:[t(X.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:Ql}),t(l.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),t(X.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:o})]})]})}function vt({value:e}){const n=c.default.useContext(E),r=c.default.useContext(U),i=c.default.useContext(L),a=c.default.useMemo(()=>Et(e,n,i,r),[e,n,i,r]);return t(X.Prism,{language:"sql",colorScheme:"light",children:a})}function jl({value:e,onChange:n}){const r=ee.useForm({initialValues:e}),i=c.default.useCallback(m=>{n(m)},[n]),a=c.default.useMemo(()=>!C.default.isEqual(e,r.values),[e,r.values]);c.default.useEffect(()=>{r.reset()},[e]);const{data:o=[],loading:u}=J.useRequest(Re,{refreshDeps:[]},[]),s=c.default.useMemo(()=>Array.from(new Set(o.map(({type:d})=>d))).map(d=>({label:d,value:d})),[o]),p=c.default.useMemo(()=>{const m=o.filter(({type:d})=>d===r.values.type);return m?m.map(({key:d})=>({label:d,value:d})):[]},[o,r.values.type]);return t(l.Stack,{sx:{border:"1px solid #eee",flexGrow:1},children:f("form",{onSubmit:r.onSubmit(i),children:[f(l.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[t(l.Text,{weight:500,children:"Edit Query"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!a||u,children:t(g.DeviceFloppy,{size:20})})]}),f(l.Stack,{my:0,p:"md",pr:40,children:[f(l.Group,{grow:!0,children:[t(l.TextInput,{placeholder:"An ID unique in this dashboard",label:"ID",required:!0,sx:{flex:1},disabled:u,...r.getInputProps("id")}),t(l.Select,{label:"Data Source Type",data:s,sx:{flex:1},disabled:u,...r.getInputProps("type")}),t(l.Select,{label:"Data Source Key",data:p,sx:{flex:1},disabled:u,...r.getInputProps("key")})]}),f(l.Tabs,{defaultValue:"SQL",children:[f(l.Tabs.List,{children:[t(l.Tabs.Tab,{value:"SQL",children:"SQL"}),t(l.Tabs.Tab,{value:"Preview",children:"Preview"})]}),t(l.Tabs.Panel,{value:"SQL",pt:"sm",children:t(l.Textarea,{autosize:!0,minRows:12,maxRows:24,...r.getInputProps("sql"),className:"code-textarea"})}),t(l.Tabs.Panel,{value:"Preview",pt:"sm",children:t(vt,{value:r.values.sql})})]})]})]})})}function Wl({id:e,setID:n}){const{queries:r,setQueries:i}=c.default.useContext(L),a=c.default.useMemo(()=>r.find(u=>u.id===e),[r,e]),o=c.default.useCallback(u=>{if(r.findIndex(p=>p.id===e)===-1){console.error(new Error("Invalid data source id when updating by id"));return}i(p=>{const m=p.findIndex(d=>d.id===e);return p.splice(m,1,u),[...p]}),n(u.id)},[e,r,i,n]);return e?a?t(jl,{value:a,onChange:o}):t("span",{children:"Invalid Data Source ID"}):null}function Ul({id:e,setID:n}){const{queries:r,setQueries:i}=c.default.useContext(L),a=c.default.useCallback(()=>{var s,p;n((p=(s=r[0])==null?void 0:s.id)!=null?p:"")},[n,r]);c.default.useEffect(()=>{if(!e){a();return}r.findIndex(p=>p.id===e)===-1&&a()},[e,r,a]);const o=c.default.useMemo(()=>r.map(s=>({value:s.id,label:s.id})),[r]),u=c.default.useCallback(()=>{const s={id:A.randomId(),type:"postgresql",key:"",sql:""};i(p=>[...p,s]),n(s.id)},[i,n]);return t(l.Group,{pb:"xl",children:f(l.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[t(l.Text,{children:"Select a Query"}),t(l.Select,{data:o,value:e,onChange:n,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}}),t(l.Text,{children:"or"}),t(l.Group,{position:"center",mt:"md",children:t(l.Button,{onClick:u,children:"Add a Query"})})]})})}function Yl({}){const[e,n]=c.default.useState("");return f(l.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(l.Group,{position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[f(l.Stack,{sx:{flexGrow:1,maxWidth:"calc(60% - 16px)"},children:[t(Ul,{id:e,setID:n}),t(Wl,{id:e,setID:n})]}),t(Ct,{})]}),t(Ue,{id:e})]})}function Jl({value:e}){const n=c.default.useContext(E),r=c.default.useMemo(()=>Vt(e,n),[e,n]);return f(l.Stack,{children:[t(l.Text,{children:"Preview"}),t(X.Prism,{language:"sql",noCopy:!0,colorScheme:"dark",children:r})]})}function Xl({}){const{sqlSnippets:e,setSQLSnippets:n}=c.default.useContext(L),r=c.default.useMemo(()=>({snippets:e!=null?e:[]}),[e]),i=ee.useForm({initialValues:r}),a=()=>i.insertListItem("snippets",{key:A.randomId(),value:""}),o=c.default.useMemo(()=>!C.default.isEqual(i.values,r),[i.values,r]),u=({snippets:s})=>{n(s)};return t(l.Stack,{sx:{border:"1px solid #eee",flexGrow:1},children:f("form",{onSubmit:i.onSubmit(u),children:[f(l.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:[t(l.Text,{weight:500,children:"SQL Snippets"}),t(l.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!o,children:t(g.DeviceFloppy,{size:20})})]}),t(l.Group,{px:"md",pb:"md",pt:"md",children:f(l.Stack,{sx:{width:"100%",position:"relative"},children:[i.values.snippets.map((s,p)=>f(l.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[t(l.TextInput,{label:"Key",required:!0,...i.getInputProps(`snippets.${p}.key`)}),t(l.Textarea,{minRows:3,label:"Value",required:!0,...i.getInputProps(`snippets.${p}.value`),className:"code-textarea"}),t(Jl,{value:i.values.snippets[p].value}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i.removeListItem("snippets",p),sx:{position:"absolute",top:15,right:5},children:t(g.Trash,{size:16})})]},p)),t(l.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"40%"},mx:"auto",children:t(l.Button,{variant:"default",onClick:a,children:"Add a snippet"})})]})})]})})}function Kl({}){return t(l.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(l.Group,{position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[t(Xl,{}),t(Ct,{showSQLSnippets:!1})]})})}function Zl({opened:e,close:n}){const{freezeLayout:r}=c.default.useContext(O);return c.default.useEffect(()=>{r(e)},[e]),t(l.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Data Settings",trapFocus:!0,onDragStart:i=>{i.stopPropagation()},children:f(l.Tabs,{defaultValue:"Queries",children:[f(l.Tabs.List,{children:[t(l.Tabs.Tab,{value:"SQL Snippet",children:"SQL Snippet"}),t(l.Tabs.Tab,{value:"Queries",children:"Queries"})]}),t(l.Tabs.Panel,{value:"SQL Snippet",pt:"sm",children:t(Kl,{})}),t(l.Tabs.Panel,{value:"Queries",pt:"sm",children:t(Yl,{})})]})})}function Hl({opened:e,close:n,getCurrentSchema:r}){const{freezeLayout:i}=c.default.useContext(O);c.default.useEffect(()=>{i(e)},[e]);const a=c.default.useMemo(()=>JSON.stringify(r(),null,2),[e]);return t(l.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"This dashboard is described by this schema",trapFocus:!0,onDragStart:o=>{o.stopPropagation()},children:t(X.Prism,{language:"json",sx:{width:"100%"},colorScheme:"dark",children:a})})}function er({field:e,index:n,control:r}){return t(D,{children:t(b.Controller,{name:`filters.${n}.config.default_value`,control:r,render:({field:i})=>t(l.Checkbox,{checked:i.value,onChange:a=>i.onChange(a.currentTarget.checked),label:"Default Checked"})})})}const tr=[{label:"2022",value:"YYYY"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}];function nr({field:e,index:n,control:r}){return f(D,{children:[f(l.Group,{children:[t(b.Controller,{name:`filters.${n}.config.required`,control:r,render:({field:i})=>t(l.Checkbox,{checked:i.value,onChange:a=>i.onChange(a.currentTarget.checked),label:"Required"})}),t(b.Controller,{name:`filters.${n}.config.clearable`,control:r,render:({field:i})=>t(l.Checkbox,{checked:i.value,onChange:a=>i.onChange(a.currentTarget.checked),label:"Clearable"})})]}),t(b.Controller,{name:`filters.${n}.config.inputFormat`,control:r,render:({field:i})=>t(l.Select,{data:tr,label:"Display Format",...i})})]})}function lr({value:e,onChange:n}){const{data:r=[],loading:i}=J.useRequest(Re,{refreshDeps:[]},[]),a=c.default.useMemo(()=>Array.from(new Set(r.map(({type:s})=>s))).map(s=>({label:s,value:s})),[r]),o=c.default.useMemo(()=>{const u=r.filter(({type:s})=>s===e.type);return u?u.map(({key:s})=>({label:s,value:s})):[]},[r,e.type]);return f(l.Group,{grow:!0,children:[t(l.Select,{label:"Data Source Type",data:a,sx:{flex:1},disabled:i,value:e.type,onChange:u=>{n({...e,type:u})}}),t(l.Select,{label:"Data Source Key",data:o,sx:{flex:1},disabled:i,value:e.key,onChange:u=>{n({...e,key:u})}})]})}const wt=c.default.forwardRef(function({value:n,onChange:r},i){return f(l.Stack,{my:0,children:[t(lr,{value:n,onChange:r}),f(l.Tabs,{defaultValue:"SQL",children:[f(l.Tabs.List,{children:[t(l.Tabs.Tab,{value:"SQL",children:"SQL"}),t(l.Tabs.Tab,{value:"Preview",children:"Preview"})]}),t(l.Tabs.Panel,{value:"SQL",pt:"sm",children:t(l.Textarea,{autosize:!0,minRows:12,maxRows:24,className:"code-textarea",value:n.sql,onChange:a=>{r({...n,sql:a.currentTarget.value})},placeholder:"SELECT name AS label, id AS value"})}),t(l.Tabs.Panel,{value:"Preview",pt:"sm",children:t(vt,{value:n.sql})})]})]})});function rr({field:e,index:n,control:r,watch:i}){const{fields:a,append:o,remove:u}=b.useFieldArray({control:r,name:`filters.${n}.config.static_options`}),s=i(`filters.${n}.config.static_options`),p=()=>{o({label:"",value:""})},m=[{label:"No default selection",value:""},...s];return f(D,{children:[t(l.Divider,{label:"Configure options",labelPosition:"center"}),a.length>0&&t(b.Controller,{name:`filters.${n}.config.default_value`,control:r,render:({field:d})=>t(l.MultiSelect,{label:"Default Selection",data:m,...d})}),a.map((d,h)=>f(l.Group,{sx:{position:"relative"},pr:"40px",children:[t(b.Controller,{name:`filters.${n}.config.static_options.${h}.label`,control:r,render:({field:x})=>t(l.TextInput,{label:"Label",required:!0,...x,sx:{flexGrow:1}})}),t(b.Controller,{name:`filters.${n}.config.static_options.${h}.value`,control:r,render:({field:x})=>t(l.TextInput,{label:"Value",required:!0,...x,sx:{flexGrow:1}})}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>u(h),sx:{position:"absolute",top:28,right:5},children:t(g.Trash,{size:16})})]})),t(l.Button,{size:"xs",color:"blue",leftIcon:t(g.PlaylistAdd,{size:20}),onClick:p,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),t(l.Divider,{label:"Or fetch options from database",labelPosition:"center"}),t(b.Controller,{name:`filters.${n}.config.options_query`,control:r,render:({field:d})=>t(wt,{...d})})]})}function ir({field:e,index:n,control:r,watch:i}){const{fields:a,append:o,remove:u}=b.useFieldArray({control:r,name:`filters.${n}.config.static_options`}),s=i(`filters.${n}.config.static_options`),p=()=>{o({label:"",value:""})},m=[{label:"No default selection",value:""},...s];return f(D,{children:[t(b.Controller,{name:`filters.${n}.config.required`,control:r,render:({field:d})=>t(l.Checkbox,{checked:d.value,onChange:h=>d.onChange(h.currentTarget.checked),label:"Required"})}),t(l.Divider,{label:"Configure options",labelPosition:"center"}),a.length>0&&t(b.Controller,{name:`filters.${n}.config.default_value`,control:r,render:({field:d})=>t(l.Select,{label:"Default Selection",data:m,...d})}),a.map((d,h)=>f(l.Group,{sx:{position:"relative"},pr:"40px",children:[t(b.Controller,{name:`filters.${n}.config.static_options.${h}.label`,control:r,render:({field:x})=>t(l.TextInput,{label:"Label",required:!0,...x,sx:{flexGrow:1}})}),t(b.Controller,{name:`filters.${n}.config.static_options.${h}.value`,control:r,render:({field:x})=>t(l.TextInput,{label:"Value",required:!0,...x,sx:{flexGrow:1}})}),t(l.ActionIcon,{color:"red",variant:"subtle",onClick:()=>u(h),sx:{position:"absolute",top:28,right:5},children:t(g.Trash,{size:16})})]})),t(l.Button,{size:"xs",color:"blue",leftIcon:t(g.PlaylistAdd,{size:20}),onClick:p,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),t(l.Divider,{label:"Or fetch options from database",labelPosition:"center"}),t(b.Controller,{name:`filters.${n}.config.options_query`,control:r,render:({field:d})=>t(wt,{...d})})]})}function ar({field:e,index:n,control:r}){return f(D,{children:[t(b.Controller,{name:`filters.${n}.config.default_value`,control:r,render:({field:i})=>t(l.TextInput,{label:"Default Value",...i})}),t(b.Controller,{name:`filters.${n}.config.required`,control:r,render:({field:i})=>t(l.Checkbox,{checked:i.value,onChange:a=>i.onChange(a.currentTarget.checked),label:"Required"})})]})}function sr({label:e,config:{default_value:n,...r},value:i,onChange:a}){return f(l.Box,{children:[t(l.Text,{children:"\xA0"}),t(l.Checkbox,{label:e,checked:i,onChange:o=>a(o.currentTarget.checked),...r})]})}function or({label:e,config:n,value:r,onChange:i}){return t(Lt.DateRangePicker,{label:e,value:r,onChange:i,icon:t(g.Calendar,{size:16}),sx:{minWidth:"14em"},...n})}function ur({label:e,config:n,value:r,onChange:i}){const a=!!n.options_query.sql,{data:o=[],loading:u}=J.useRequest(Ee(n.options_query),{refreshDeps:[n.options_query,a]});return t(l.MultiSelect,{label:e,data:a?o:n.static_options,disabled:a?u:!1,value:r,onChange:i})}function dr({label:e,config:n,value:r,onChange:i}){const a=!!n.options_query.sql,{data:o=[],loading:u}=J.useRequest(Ee(n.options_query),{refreshDeps:[n.options_query,a]});return t(l.Select,{label:e,data:a?o:n.static_options,disabled:a?u:!1,value:r,onChange:i})}function cr({label:e,config:n,value:r,onChange:i}){return t(l.TextInput,{label:e,value:r,onChange:i,...n})}function fr({type:e,config:n,...r},i){switch(e){case"select":return t(dr,{...r,...i,config:n});case"multi-select":return t(ur,{...r,...i,config:n});case"text-input":return t(cr,{...r,...i,config:n});case"date-range":return t(or,{...r,...i,config:n});case"checkbox":return t(sr,{...r,...i,config:n});default:return null}}const Tt=c.default.forwardRef(function({filter:n,...r},i){return t("div",{className:"filter-root",ref:i,children:t(fe,{children:fr(n,r)})})});function pr({filter:e,index:n,watch:r}){const i=e.config.default_value,[a,o]=c.default.useState(i);return c.default.useEffect(()=>{o(i)},[i]),f(l.Box,{sx:{maxWidth:"30em"},children:[t(l.Text,{pb:"md",color:"gray",children:"Preview"}),t(Tt,{filter:e,value:a,onChange:o}),t("pre",{children:JSON.stringify(e,null,4)})]})}const hr={select:ir,"multi-select":rr,"text-input":ar,checkbox:er,"date-range":nr},mr=[{label:"Select",value:"select"},{label:"Multi Select",value:"multi-select"},{label:"Text Input",value:"text-input"},{label:"Checkbox",value:"checkbox"},{label:"Date Range",value:"date-range"}];function xr({field:e,index:n,control:r,watch:i}){const a=c.default.useMemo(()=>hr[e.type],[e.type]);return f(l.SimpleGrid,{cols:2,children:[f(l.Box,{pl:"md",children:[t(l.Text,{pb:"md",color:"gray",children:"Edit"}),f(l.Stack,{sx:{maxWidth:"30em"},children:[t(b.Controller,{name:`filters.${n}.order`,control:r,render:({field:o})=>t(l.TextInput,{label:"Placement Order",required:!0,...o})}),t(b.Controller,{name:`filters.${n}.key`,control:r,render:({field:o})=>t(l.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,...o})}),t(b.Controller,{name:`filters.${n}.label`,control:r,render:({field:o})=>t(l.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,...o})}),t(b.Controller,{name:`filters.${n}.type`,control:r,render:({field:o})=>t(l.Select,{label:"Widget",data:mr,required:!0,...o})}),t(a,{field:e,index:n,control:r,watch:i})]})]}),t(pr,{filter:e,index:n,watch:i})]})}function br({filters:e,setFilters:n}){var q;const{control:r,handleSubmit:i,watch:a,setValue:o}=b.useForm({defaultValues:{filters:e!=null?e:[]}}),{fields:u,append:s,remove:p,replace:m}=b.useFieldArray({control:r,name:"filters"}),d=a("filters"),h=u.map((T,z)=>({...T,...d[z]})),x=()=>{const T=A.randomId(),z={key:T,label:T,order:e.length+1,type:"text-input",config:{required:!1,default_value:""}};s(z)},y=T=>{p(T)},v=c.default.useCallback(()=>{m(e)},[e]),w=C.default.isEqual(e,d),_=c.default.useCallback(({filters:T})=>{n(T)},[n]);return t(l.Group,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)"},p:0,children:f("form",{onSubmit:i(_),style:{height:"100%",width:"100%"},children:[f(l.Group,{sx:{position:"absolute",top:"16px",right:"16px"},children:[t(l.Button,{size:"xs",color:"green",leftIcon:t(g.DeviceFloppy,{size:20}),type:"submit",disabled:w,children:"Save Changes"}),t(l.Button,{size:"xs",color:"red",leftIcon:t(g.Recycle,{size:20}),disabled:w,onClick:v,children:"Revert Changes"})]}),t(l.Tabs,{orientation:"vertical",defaultValue:(q=h[0])==null?void 0:q.id,children:f(l.Group,{sx:{height:"100%"},children:[f(l.Stack,{sx:{height:"100%"},children:[t(l.Tabs.List,{position:"left",sx:{flexGrow:1},children:h.map((T,z)=>t(l.Tabs.Tab,{value:T.id,children:T.label},T.id))}),t(l.Button,{size:"xs",color:"blue",leftIcon:t(g.PlaylistAdd,{size:20}),onClick:x,children:"Add a Filter"})]}),t(l.Box,{sx:{flexGrow:1,height:"100%"},children:h.map((T,z)=>t(l.Tabs.Panel,{value:T.id,sx:{height:"100%"},children:f(l.Stack,{sx:{height:"100%"},spacing:"sm",children:[t(l.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"scroll"},children:t(xr,{field:T,index:z,control:r,watch:a})}),t(l.Group,{position:"right",pt:10,children:t(l.Button,{size:"xs",color:"red",leftIcon:t(g.Trash,{size:20}),onClick:()=>y(z),children:"Delete this filter"})})]})},T.id))})]})})]})})}function gr({opened:e,close:n,filters:r,setFilters:i}){const{freezeLayout:a}=c.default.useContext(O);return c.default.useEffect(()=>{a(e)},[e]),t(l.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Filters",trapFocus:!0,onDragStart:o=>{o.stopPropagation()},withCloseButton:!1,children:t(br,{filters:r,setFilters:i})})}function yr({mode:e,setMode:n,hasChanges:r,saveChanges:i,revertChanges:a,getCurrentSchema:o,filters:u,setFilters:s}){const{addPanel:p}=c.default.useContext(ue),{inLayoutMode:m,inEditMode:d,inUseMode:h}=c.default.useContext(O),[x,y]=c.default.useState(!1),v=()=>y(!0),w=()=>y(!1),[_,q]=c.default.useState(!1),T=()=>q(!0),z=()=>q(!1),[K,Z]=c.default.useState(!1),re=()=>Z(!0),ie=()=>Z(!1);return f(l.Group,{position:"apart",pt:0,pb:"xs",children:[t(l.Group,{position:"left",children:t(Nl,{mode:e,setMode:n})}),f(l.Group,{position:"right",children:[!h&&t(l.Button,{variant:"default",size:"xs",onClick:p,leftIcon:t(g.PlaylistAdd,{size:20}),children:"Add a Panel"}),d&&t(l.Button,{variant:"default",size:"xs",onClick:T,leftIcon:t(g.Filter,{size:20}),children:"Filters"}),d&&t(l.Button,{variant:"default",size:"xs",onClick:v,leftIcon:t(g.Database,{size:20}),children:"Data Settings"}),!h&&t(l.Button,{variant:"default",size:"xs",onClick:i,disabled:!r,leftIcon:t(g.DeviceFloppy,{size:20}),children:"Save Changes"}),!h&&t(l.Button,{color:"red",size:"xs",disabled:!r,onClick:a,leftIcon:t(g.Recycle,{size:20}),children:"Revert Changes"}),f(l.Menu,{children:[t(l.Menu.Target,{children:t(l.Button,{variant:"default",size:"xs",leftIcon:t(g.Share,{size:20}),children:"Export"})}),f(l.Menu.Dropdown,{children:[t(l.Menu.Item,{disabled:!0,children:"Download Data"}),t(l.Menu.Item,{onClick:re,children:"View Schema"})]})]})]}),t(gr,{opened:_,close:z,filters:u,setFilters:s}),t(Zl,{opened:x,close:w}),t(Hl,{opened:K,close:ie,getCurrentSchema:o})]})}function _t({panel:e,exitFullScreen:n}){return f(l.Stack,{sx:{flexGrow:1,justifyContent:"flex-start"},children:[t(l.Group,{sx:{flexGrow:0},children:t(l.Button,{variant:"default",size:"sm",onClick:n,leftIcon:t(g.ArrowLeft,{size:20}),children:"Exit fullscreen"})}),t(l.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:t(be,{...e})})]})}function zt(e){const[n,r]=c.default.useState(null),i=c.default.useCallback(s=>{r(s)},[]),a=c.default.useCallback(()=>{r(null)},[]),o=c.default.useMemo(()=>e.find(s=>s.id===n),[n,e]);return{viewPanelInFullScreen:i,exitFullScreen:a,inFullScreen:!!o,fullScreenPanel:o}}function Pt({filters:e,filterValues:n,setFilterValues:r}){const{control:i,handleSubmit:a}=b.useForm({defaultValues:n}),o=c.default.useMemo(()=>C.default.sortBy(e,"order"),[e]);return e.length===0?null:t("form",{onSubmit:a(r),children:f(l.Group,{className:"dashboard-filters",position:"apart",p:"md",mb:"md",noWrap:!0,sx:{boxShadow:"0px 0px 10px 0px rgba(0,0,0,.2)"},children:[t(l.Group,{align:"flex-start",children:o.map(u=>t(b.Controller,{name:u.key,control:i,render:({field:s})=>t(Tt,{filter:u,...s})},u.key))}),t(l.Group,{sx:{alignSelf:"flex-end"},children:t(l.Button,{color:"blue",size:"sm",type:"submit",children:"Submit"})})]})})}function At(e){const[n,r]=c.default.useState(e.filters),[i,a]=c.default.useState(()=>e.filters.reduce((u,s)=>{var p;return u[s.key]=(p=s.config.default_value)!=null?p:"",u},{}));return{filters:n,setFilters:r,filterValues:i,setFilterValues:a}}function Sr({context:e,dashboard:n,update:r,className:i="dashboard",config:a}){W.baseURL!==a.apiBaseURL&&(W.baseURL=a.apiBaseURL);const[o,u]=c.default.useState(!1),[s,p]=c.default.useState(I.Edit),[m,d]=c.default.useState(n.panels),[h,x]=c.default.useState(n.definition.sqlSnippets),[y,v]=c.default.useState(n.definition.queries),{filters:w,setFilters:_,filterValues:q,setFilterValues:T}=At(n),z=c.default.useMemo(()=>{if(!C.default.isEqual(w,n.filters))return!0;const M=$=>JSON.parse(JSON.stringify($));return!C.default.isEqual(M(m),M(n.panels))||!C.default.isEqual(h,n.definition.sqlSnippets)?!0:!C.default.isEqual(y,n.definition.queries)},[n,w,m,h,y]),K=async()=>{const M={...n,filters:w,panels:m,definition:{sqlSnippets:h,queries:y}};await r(M)},Z=()=>{_(n.filters),d(n.panels),x(n.definition.sqlSnippets),v(n.definition.queries)},re=()=>{const M=A.randomId(),F={id:M,layout:{x:0,y:1/0,w:3,h:15},title:`Panel - ${M}`,description:"<p><br></p>",queryID:"",viz:{type:"table",conf:{}}};d($=>[...$,F])},ie=M=>{try{const F=m.find(Oe=>Oe.id===M);if(!F)throw new Error(`[duplicate panel] Can't find a panel by id[${M}]`);const $={...F,id:A.randomId(),layout:{...F.layout,x:0,y:1/0}};d(Oe=>[...Oe,$])}catch(F){console.error(F)}},Tr=M=>{const F=m.findIndex($=>$.id===M);d($=>($.splice(F,1),[...$]))},_r=s===I.Edit,Ge=s===I.Layout,zr=s===I.Use,Pr=c.default.useMemo(()=>({sqlSnippets:h,setSQLSnippets:x,queries:y,setQueries:v}),[h,x,y,v]),Ar=c.default.useCallback(()=>({panels:m,definition:{sqlSnippets:h,queries:y}}),[h,y,m]),{viewPanelInFullScreen:Dr,exitFullScreen:kr,inFullScreen:Le,fullScreenPanel:qr}=zt(m);return t(ye.ModalsProvider,{children:t(E.Provider,{value:e,children:t(U.Provider,{value:q,children:t(ue.Provider,{value:{addPanel:re,duplidatePanel:ie,removePanelByID:Tr,viewPanelInFullScreen:Dr,inFullScreen:Le},children:t(L.Provider,{value:Pr,children:f(O.Provider,{value:{layoutFrozen:o,freezeLayout:u,mode:s,inEditMode:_r,inLayoutMode:Ge,inUseMode:zr},children:[Le&&t(_t,{panel:qr,exitFullScreen:kr}),f(l.Box,{className:i,sx:{position:"relative",display:Le?"none":"block"},children:[t(yr,{mode:s,setMode:p,hasChanges:z,saveChanges:K,revertChanges:Z,getCurrentSchema:Ar,filters:w,setFilters:_}),t(Pt,{filters:w,filterValues:q,setFilterValues:T}),t(St,{panels:m,setPanels:d,isDraggable:Ge,isResizable:Ge})]})]})})})})})})}const Cr=ge.WidthProvider($e.default);function vr({panels:e,className:n="layout",rowHeight:r=10}){return t(Cr,{className:`dashboard-layout ${n}`,rowHeight:r,isDraggable:!1,isResizable:!1,children:e.map(({id:i,...a})=>t("div",{"data-grid":a.layout,children:t(be,{id:i,...a})},i))})}function wr({context:e,dashboard:n,className:r="dashboard",config:i}){W.baseURL!==i.apiBaseURL&&(W.baseURL=i.apiBaseURL);const{filters:a,filterValues:o,setFilterValues:u}=At(n),s=c.default.useMemo(()=>({...n.definition,setSQLSnippets:()=>{},setQueries:()=>{}}),[n]),{viewPanelInFullScreen:p,exitFullScreen:m,inFullScreen:d,fullScreenPanel:h}=zt(n.panels);return t(ye.ModalsProvider,{children:t(E.Provider,{value:e,children:t(U.Provider,{value:o,children:t(ue.Provider,{value:{addPanel:C.default.noop,duplidatePanel:C.default.noop,removePanelByID:C.default.noop,viewPanelInFullScreen:p,inFullScreen:d},children:t(L.Provider,{value:s,children:f(O.Provider,{value:{layoutFrozen:!0,freezeLayout:()=>{},mode:I.Use,inEditMode:!1,inLayoutMode:!1,inUseMode:!0},children:[d&&t(_t,{panel:h,exitFullScreen:m}),f(l.Box,{className:r,sx:{display:d?"none":"block"},children:[t(Pt,{filters:a,filterValues:o,setFilterValues:u}),t(vr,{panels:n.panels})]})]})})})})})})}S.ContextInfoContext=E,S.Dashboard=Sr,S.DashboardLayout=St,S.DashboardMode=I,S.DefinitionContext=L,S.FilterValuesContext=U,S.LayoutStateContext=O,S.Panel=be,S.PanelContext=G,S.ReadOnlyDashboard=wr,S.initialContextInfoContext=Bt,S.initialFilterValuesContext=jt,Object.defineProperties(S,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Sx } from "@mantine/core";
|
|
3
|
+
interface IGlobalVariablesGuide {
|
|
4
|
+
showSQLSnippets?: boolean;
|
|
5
|
+
sx?: Sx;
|
|
6
|
+
}
|
|
7
|
+
export declare function GlobalVariablesGuide({ showSQLSnippets, sx }: IGlobalVariablesGuide): JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Control, FieldArrayWithId } from "react-hook-form";
|
|
3
|
+
import { IFilterSettingsForm } from "../filter-settings/types";
|
|
4
|
+
interface IFilterEditorCheckbox {
|
|
5
|
+
field: FieldArrayWithId<IFilterSettingsForm, "filters", "id">;
|
|
6
|
+
index: number;
|
|
7
|
+
control: Control<IFilterSettingsForm, object>;
|
|
8
|
+
}
|
|
9
|
+
export declare function FilterEditorCheckbox({ field, index, control }: IFilterEditorCheckbox): JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IDashboardFilter, IFilterConfig_Checkbox } from "../../types";
|
|
3
|
+
interface IFilterCheckbox extends Omit<IDashboardFilter, 'type' | 'config'> {
|
|
4
|
+
config: IFilterConfig_Checkbox;
|
|
5
|
+
value: any;
|
|
6
|
+
onChange: (v: any) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function FilterCheckbox({ label, config: { default_value, ...rest }, value, onChange }: IFilterCheckbox): JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Control, FieldArrayWithId } from "react-hook-form";
|
|
3
|
+
import { IFilterSettingsForm } from "../filter-settings/types";
|
|
4
|
+
interface IFilterEditorDateRange {
|
|
5
|
+
field: FieldArrayWithId<IFilterSettingsForm, "filters", "id">;
|
|
6
|
+
index: number;
|
|
7
|
+
control: Control<IFilterSettingsForm, object>;
|
|
8
|
+
}
|
|
9
|
+
export declare function FilterEditorDateRange({ field, index, control }: IFilterEditorDateRange): JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IDashboardFilter, IFilterConfig_DateRange } from "../../types";
|
|
3
|
+
interface IFilterDateRange extends Omit<IDashboardFilter, 'type' | 'config'> {
|
|
4
|
+
config: IFilterConfig_DateRange;
|
|
5
|
+
value: any;
|
|
6
|
+
onChange: (v: any) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function FilterDateRange({ label, config, value, onChange }: IFilterDateRange): JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Control, FieldArrayWithId, UseFormWatch } from "react-hook-form";
|
|
3
|
+
import { IFilterSettingsForm } from "../filter-settings/types";
|
|
4
|
+
interface IFilterEditorMultiSelect {
|
|
5
|
+
field: FieldArrayWithId<IFilterSettingsForm, "filters", "id">;
|
|
6
|
+
index: number;
|
|
7
|
+
control: Control<IFilterSettingsForm, object>;
|
|
8
|
+
watch: UseFormWatch<IFilterSettingsForm>;
|
|
9
|
+
}
|
|
10
|
+
export declare function FilterEditorMultiSelect({ field, index, control, watch }: IFilterEditorMultiSelect): JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IDashboardFilter, IFilterConfig_Select } from "../../types";
|
|
3
|
+
interface IFilterMultiSelect extends Omit<IDashboardFilter, 'type' | 'config'> {
|
|
4
|
+
config: IFilterConfig_Select;
|
|
5
|
+
value: any;
|
|
6
|
+
onChange: (v: any) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function FilterMultiSelect({ label, config, value, onChange }: IFilterMultiSelect): JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IDashboardFilterOptionQuery } from "../../types";
|
|
3
|
+
interface IFilterQueryField {
|
|
4
|
+
value: IDashboardFilterOptionQuery;
|
|
5
|
+
onChange: (v: IDashboardFilterOptionQuery) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const FilterQueryField: React.ForwardRefExoticComponent<IFilterQueryField & React.RefAttributes<unknown>>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IDashboardFilterOptionQuery } from "../../types";
|
|
3
|
+
interface ISelectDataSource {
|
|
4
|
+
value: IDashboardFilterOptionQuery;
|
|
5
|
+
onChange: (v: IDashboardFilterOptionQuery) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function SelectDataSource({ value, onChange }: ISelectDataSource): JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Control, FieldArrayWithId, UseFormWatch } from "react-hook-form";
|
|
3
|
+
import { IFilterSettingsForm } from "../filter-settings/types";
|
|
4
|
+
interface IFilterEditorSelect {
|
|
5
|
+
field: FieldArrayWithId<IFilterSettingsForm, "filters", "id">;
|
|
6
|
+
index: number;
|
|
7
|
+
control: Control<IFilterSettingsForm, object>;
|
|
8
|
+
watch: UseFormWatch<IFilterSettingsForm>;
|
|
9
|
+
}
|
|
10
|
+
export declare function FilterEditorSelect({ field, index, control, watch }: IFilterEditorSelect): JSX.Element;
|
|
11
|
+
export {};
|