@devtable/dashboard 4.9.0 → 4.10.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.
@@ -1,4 +1,4 @@
1
- (function(T,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("@mantine/core"),require("@mantine/modals"),require("ahooks"),require("mobx-react-lite"),require("react"),require("lodash"),require("react-hook-form"),require("@mantine/dates"),require("tabler-icons-react"),require("axios"),require("@mantine/prism"),require("mobx-state-tree"),require("@mantine/hooks"),require("@mantine/rte"),require("mobx"),require("@mantine/notifications"),require("eventemitter2"),require("chroma-js"),require("numbro"),require("d3-array"),require("@tanstack/react-table"),require("react-virtual"),require("@mantine/form"),require("echarts-for-react/lib/core"),require("echarts/charts"),require("echarts/core"),require("echarts/renderers"),require("echarts-gl"),require("echarts/components"),require("echarts-stat"),require("d3-regression"),require("stickybits"),require("react-grid-layout"),require("jszip")):typeof define=="function"&&define.amd?define(["exports","@mantine/core","@mantine/modals","ahooks","mobx-react-lite","react","lodash","react-hook-form","@mantine/dates","tabler-icons-react","axios","@mantine/prism","mobx-state-tree","@mantine/hooks","@mantine/rte","mobx","@mantine/notifications","eventemitter2","chroma-js","numbro","d3-array","@tanstack/react-table","react-virtual","@mantine/form","echarts-for-react/lib/core","echarts/charts","echarts/core","echarts/renderers","echarts-gl","echarts/components","echarts-stat","d3-regression","stickybits","react-grid-layout","jszip"],a):(T=typeof globalThis<"u"?globalThis:T||self,a(T.dashboard={},T["@mantine/core"],T["@mantine/modals"],T.ahooks,T["mobx-react-lite"],T.React,T._,T["react-hook-form"],T["@mantine/dates"],T["tabler-icons-react"],T.axios,T["@mantine/prism"],T["mobx-state-tree"],T["@mantine/hooks"],T["@mantine/rte"],T.mobx,T["@mantine/notifications"],T.eventemitter2,T["chroma-js"],T.numbro,T["d3-array"],T["@tanstack/react-table"],T["react-virtual"],T["@mantine/form"],T["echarts-for-react/lib/core"],T["echarts/charts"],T["echarts/core"],T["echarts/renderers"],T["echarts-gl"],T["echarts/components"],T["echarts-stat"],T["d3-regression"],T.stickybits,T["react-grid-layout"],T.jszip))})(this,function(T,a,he,B,A,C,S,w,ci,_,di,Ie,y,U,pt,J,ft,pi,fi,hi,gi,_e,mi,ht,yi,de,vi,ve,Lc,N,ln,bi,xi,gt,Ci){"use strict";var Rc=Object.defineProperty;var Gc=(T,a,he)=>a in T?Rc(T,a,{enumerable:!0,configurable:!0,writable:!0,value:he}):T[a]=he;var E=(T,a,he)=>(Gc(T,typeof a!="symbol"?a+"":a,he),he);const ae=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function un(t){if(t&&t.__esModule)return t;const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const b=ae(C),P=ae(S),wi=ae(di),cn=ae(pt),dn=ae(pi),ze=ae(fi),se=ae(hi),be=ae(yi),X=un(vi),xe=un(bi),Si=ae(xi),pn=ae(gt),Ii=ae(Ci),Ti={viewPanelInFullScreen:P.default.noop,inFullScreen:!1},mt=b.default.createContext(Ti),fn=b.default.createContext(null),yt=fn.Provider;function Q(){const t=b.default.useContext(fn);if(!t)throw new Error("Please use ModelContextProvider");return t}var Oe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Qe={exports:{}},Pe={};/**
1
+ (function(T,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("@mantine/core"),require("@mantine/modals"),require("ahooks"),require("mobx-react-lite"),require("react"),require("lodash"),require("react-hook-form"),require("@mantine/dates"),require("tabler-icons-react"),require("axios"),require("@mantine/prism"),require("mobx-state-tree"),require("@mantine/hooks"),require("@mantine/rte"),require("mobx"),require("@mantine/notifications"),require("eventemitter2"),require("chroma-js"),require("numbro"),require("d3-array"),require("@tanstack/react-table"),require("react-virtual"),require("@mantine/form"),require("echarts-for-react/lib/core"),require("echarts/charts"),require("echarts/core"),require("echarts/renderers"),require("echarts-gl"),require("echarts/components"),require("echarts-stat"),require("d3-regression"),require("stickybits"),require("react-grid-layout"),require("jszip")):typeof define=="function"&&define.amd?define(["exports","@mantine/core","@mantine/modals","ahooks","mobx-react-lite","react","lodash","react-hook-form","@mantine/dates","tabler-icons-react","axios","@mantine/prism","mobx-state-tree","@mantine/hooks","@mantine/rte","mobx","@mantine/notifications","eventemitter2","chroma-js","numbro","d3-array","@tanstack/react-table","react-virtual","@mantine/form","echarts-for-react/lib/core","echarts/charts","echarts/core","echarts/renderers","echarts-gl","echarts/components","echarts-stat","d3-regression","stickybits","react-grid-layout","jszip"],a):(T=typeof globalThis<"u"?globalThis:T||self,a(T.dashboard={},T["@mantine/core"],T["@mantine/modals"],T.ahooks,T["mobx-react-lite"],T.React,T._,T["react-hook-form"],T["@mantine/dates"],T["tabler-icons-react"],T.axios,T["@mantine/prism"],T["mobx-state-tree"],T["@mantine/hooks"],T["@mantine/rte"],T.mobx,T["@mantine/notifications"],T.eventemitter2,T["chroma-js"],T.numbro,T["d3-array"],T["@tanstack/react-table"],T["react-virtual"],T["@mantine/form"],T["echarts-for-react/lib/core"],T["echarts/charts"],T["echarts/core"],T["echarts/renderers"],T["echarts-gl"],T["echarts/components"],T["echarts-stat"],T["d3-regression"],T.stickybits,T["react-grid-layout"],T.jszip))})(this,function(T,a,he,L,k,C,S,w,ci,_,di,Ie,y,U,pt,J,ft,pi,fi,hi,gi,_e,mi,ht,yi,de,vi,ve,Wc,N,ln,bi,xi,gt,Ci){"use strict";var $c=Object.defineProperty;var jc=(T,a,he)=>a in T?$c(T,a,{enumerable:!0,configurable:!0,writable:!0,value:he}):T[a]=he;var E=(T,a,he)=>(jc(T,typeof a!="symbol"?a+"":a,he),he);const ae=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function un(t){if(t&&t.__esModule)return t;const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const b=ae(C),P=ae(S),wi=ae(di),cn=ae(pt),dn=ae(pi),ze=ae(fi),se=ae(hi),be=ae(yi),X=un(vi),xe=un(bi),Si=ae(xi),pn=ae(gt),Ii=ae(Ci),Ti={viewPanelInFullScreen:P.default.noop,inFullScreen:!1},mt=b.default.createContext(Ti),fn=b.default.createContext(null),yt=fn.Provider;function Q(){const t=b.default.useContext(fn);if(!t)throw new Error("Please use ModelContextProvider");return t}var Oe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Qe={exports:{}},Pe={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -14,17 +14,17 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var gn;function _i(){return gn||(gn=1,process.env.NODE_ENV!=="production"&&function(){var t=b.default,e=Symbol.for("react.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),u=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),v=Symbol.for("react.offscreen"),D=Symbol.iterator,k="@@iterator";function V(p){if(p===null||typeof p!="object")return null;var x=D&&p[D]||p[k];return typeof x=="function"?x:null}var L=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function G(p){{for(var x=arguments.length,I=new Array(x>1?x-1:0),M=1;M<x;M++)I[M-1]=arguments[M];ue("error",p,I)}}function ue(p,x,I){{var M=L.ReactDebugCurrentFrame,q=M.getStackAddendum();q!==""&&(x+="%s",I=I.concat([q]));var R=I.map(function(O){return String(O)});R.unshift("Warning: "+x),Function.prototype.apply.call(console[p],console,R)}}var H=!1,Ne=!1,Me=!1,$e=!1,at=!1,je;je=Symbol.for("react.module.reference");function st(p){return!!(typeof p=="string"||typeof p=="function"||p===i||p===o||at||p===s||p===h||p===f||$e||p===v||H||Ne||Me||typeof p=="object"&&p!==null&&(p.$$typeof===g||p.$$typeof===m||p.$$typeof===l||p.$$typeof===u||p.$$typeof===d||p.$$typeof===je||p.getModuleId!==void 0))}function ee(p,x,I){var M=p.displayName;if(M)return M;var q=x.displayName||x.name||"";return q!==""?I+"("+q+")":I}function ce(p){return p.displayName||"Context"}function te(p){if(p==null)return null;if(typeof p.tag=="number"&&G("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof p=="function")return p.displayName||p.name||null;if(typeof p=="string")return p;switch(p){case i:return"Fragment";case n:return"Portal";case o:return"Profiler";case s:return"StrictMode";case h:return"Suspense";case f:return"SuspenseList"}if(typeof p=="object")switch(p.$$typeof){case u:var x=p;return ce(x)+".Consumer";case l:var I=p;return ce(I._context)+".Provider";case d:return ee(p,p.render,"ForwardRef");case m:var M=p.displayName||null;return M!==null?M:te(p.type)||"Memo";case g:{var q=p,R=q._payload,O=q._init;try{return te(O(R))}catch{return null}}}return null}var ne=Object.assign,Se=0,Nr,$r,jr,Wr,Qr,Yr,Ur;function Xr(){}Xr.__reactDisabledLog=!0;function fc(){{if(Se===0){Nr=console.log,$r=console.info,jr=console.warn,Wr=console.error,Qr=console.group,Yr=console.groupCollapsed,Ur=console.groupEnd;var p={configurable:!0,enumerable:!0,value:Xr,writable:!0};Object.defineProperties(console,{info:p,log:p,warn:p,error:p,group:p,groupCollapsed:p,groupEnd:p})}Se++}}function hc(){{if(Se--,Se===0){var p={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ne({},p,{value:Nr}),info:ne({},p,{value:$r}),warn:ne({},p,{value:jr}),error:ne({},p,{value:Wr}),group:ne({},p,{value:Qr}),groupCollapsed:ne({},p,{value:Yr}),groupEnd:ne({},p,{value:Ur})})}Se<0&&G("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Ht=L.ReactCurrentDispatcher,en;function ot(p,x,I){{if(en===void 0)try{throw Error()}catch(q){var M=q.stack.trim().match(/\n( *(at )?)/);en=M&&M[1]||""}return`
18
- `+en+p}}var tn=!1,lt;{var gc=typeof WeakMap=="function"?WeakMap:Map;lt=new gc}function Jr(p,x){if(!p||tn)return"";{var I=lt.get(p);if(I!==void 0)return I}var M;tn=!0;var q=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var R;R=Ht.current,Ht.current=null,fc();try{if(x){var O=function(){throw Error()};if(Object.defineProperty(O.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(O,[])}catch(ye){M=ye}Reflect.construct(p,[],O)}else{try{O.call()}catch(ye){M=ye}p.call(O.prototype)}}else{try{throw Error()}catch(ye){M=ye}p()}}catch(ye){if(ye&&M&&typeof ye.stack=="string"){for(var z=ye.stack.split(`
19
- `),K=M.stack.split(`
20
- `),W=z.length-1,Y=K.length-1;W>=1&&Y>=0&&z[W]!==K[Y];)Y--;for(;W>=1&&Y>=0;W--,Y--)if(z[W]!==K[Y]){if(W!==1||Y!==1)do if(W--,Y--,Y<0||z[W]!==K[Y]){var ie=`
21
- `+z[W].replace(" at new "," at ");return p.displayName&&ie.includes("<anonymous>")&&(ie=ie.replace("<anonymous>",p.displayName)),typeof p=="function"&&lt.set(p,ie),ie}while(W>=1&&Y>=0);break}}}finally{tn=!1,Ht.current=R,hc(),Error.prepareStackTrace=q}var Ve=p?p.displayName||p.name:"",ui=Ve?ot(Ve):"";return typeof p=="function"&&lt.set(p,ui),ui}function mc(p,x,I){return Jr(p,!1)}function yc(p){var x=p.prototype;return!!(x&&x.isReactComponent)}function ut(p,x,I){if(p==null)return"";if(typeof p=="function")return Jr(p,yc(p));if(typeof p=="string")return ot(p);switch(p){case h:return ot("Suspense");case f:return ot("SuspenseList")}if(typeof p=="object")switch(p.$$typeof){case d:return mc(p.render);case m:return ut(p.type,x,I);case g:{var M=p,q=M._payload,R=M._init;try{return ut(R(q),x,I)}catch{}}}return""}var ct=Object.prototype.hasOwnProperty,Kr={},Zr=L.ReactDebugCurrentFrame;function dt(p){if(p){var x=p._owner,I=ut(p.type,p._source,x?x.type:null);Zr.setExtraStackFrame(I)}else Zr.setExtraStackFrame(null)}function vc(p,x,I,M,q){{var R=Function.call.bind(ct);for(var O in p)if(R(p,O)){var z=void 0;try{if(typeof p[O]!="function"){var K=Error((M||"React class")+": "+I+" type `"+O+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof p[O]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw K.name="Invariant Violation",K}z=p[O](x,O,M,I,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(W){z=W}z&&!(z instanceof Error)&&(dt(q),G("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",M||"React class",I,O,typeof z),dt(null)),z instanceof Error&&!(z.message in Kr)&&(Kr[z.message]=!0,dt(q),G("Failed %s type: %s",I,z.message),dt(null))}}}var bc=Array.isArray;function nn(p){return bc(p)}function xc(p){{var x=typeof Symbol=="function"&&Symbol.toStringTag,I=x&&p[Symbol.toStringTag]||p.constructor.name||"Object";return I}}function Cc(p){try{return Hr(p),!1}catch{return!0}}function Hr(p){return""+p}function ei(p){if(Cc(p))return G("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",xc(p)),Hr(p)}var We=L.ReactCurrentOwner,wc={key:!0,ref:!0,__self:!0,__source:!0},ti,ni,rn;rn={};function Sc(p){if(ct.call(p,"ref")){var x=Object.getOwnPropertyDescriptor(p,"ref").get;if(x&&x.isReactWarning)return!1}return p.ref!==void 0}function Ic(p){if(ct.call(p,"key")){var x=Object.getOwnPropertyDescriptor(p,"key").get;if(x&&x.isReactWarning)return!1}return p.key!==void 0}function Tc(p,x){if(typeof p.ref=="string"&&We.current&&x&&We.current.stateNode!==x){var I=te(We.current.type);rn[I]||(G('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',te(We.current.type),p.ref),rn[I]=!0)}}function Dc(p,x){{var I=function(){ti||(ti=!0,G("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",x))};I.isReactWarning=!0,Object.defineProperty(p,"key",{get:I,configurable:!0})}}function _c(p,x){{var I=function(){ni||(ni=!0,G("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",x))};I.isReactWarning=!0,Object.defineProperty(p,"ref",{get:I,configurable:!0})}}var Ac=function(p,x,I,M,q,R,O){var z={$$typeof:e,type:p,key:x,ref:I,props:O,_owner:R};return z._store={},Object.defineProperty(z._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(z,"_self",{configurable:!1,enumerable:!1,writable:!1,value:M}),Object.defineProperty(z,"_source",{configurable:!1,enumerable:!1,writable:!1,value:q}),Object.freeze&&(Object.freeze(z.props),Object.freeze(z)),z};function kc(p,x,I,M,q){{var R,O={},z=null,K=null;I!==void 0&&(ei(I),z=""+I),Ic(x)&&(ei(x.key),z=""+x.key),Sc(x)&&(K=x.ref,Tc(x,q));for(R in x)ct.call(x,R)&&!wc.hasOwnProperty(R)&&(O[R]=x[R]);if(p&&p.defaultProps){var W=p.defaultProps;for(R in W)O[R]===void 0&&(O[R]=W[R])}if(z||K){var Y=typeof p=="function"?p.displayName||p.name||"Unknown":p;z&&Dc(O,Y),K&&_c(O,Y)}return Ac(p,z,K,q,M,We.current,O)}}var an=L.ReactCurrentOwner,ri=L.ReactDebugCurrentFrame;function Ee(p){if(p){var x=p._owner,I=ut(p.type,p._source,x?x.type:null);ri.setExtraStackFrame(I)}else ri.setExtraStackFrame(null)}var sn;sn=!1;function on(p){return typeof p=="object"&&p!==null&&p.$$typeof===e}function ii(){{if(an.current){var p=te(an.current.type);if(p)return`
17
+ */var gn;function _i(){return gn||(gn=1,process.env.NODE_ENV!=="production"&&function(){var t=b.default,e=Symbol.for("react.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),u=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),v=Symbol.for("react.offscreen"),D=Symbol.iterator,A="@@iterator";function V(p){if(p===null||typeof p!="object")return null;var x=D&&p[D]||p[A];return typeof x=="function"?x:null}var B=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function R(p){{for(var x=arguments.length,I=new Array(x>1?x-1:0),M=1;M<x;M++)I[M-1]=arguments[M];ue("error",p,I)}}function ue(p,x,I){{var M=B.ReactDebugCurrentFrame,q=M.getStackAddendum();q!==""&&(x+="%s",I=I.concat([q]));var G=I.map(function(O){return String(O)});G.unshift("Warning: "+x),Function.prototype.apply.call(console[p],console,G)}}var H=!1,Ne=!1,Me=!1,$e=!1,at=!1,je;je=Symbol.for("react.module.reference");function st(p){return!!(typeof p=="string"||typeof p=="function"||p===i||p===o||at||p===s||p===h||p===f||$e||p===v||H||Ne||Me||typeof p=="object"&&p!==null&&(p.$$typeof===g||p.$$typeof===m||p.$$typeof===l||p.$$typeof===u||p.$$typeof===d||p.$$typeof===je||p.getModuleId!==void 0))}function ee(p,x,I){var M=p.displayName;if(M)return M;var q=x.displayName||x.name||"";return q!==""?I+"("+q+")":I}function ce(p){return p.displayName||"Context"}function te(p){if(p==null)return null;if(typeof p.tag=="number"&&R("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof p=="function")return p.displayName||p.name||null;if(typeof p=="string")return p;switch(p){case i:return"Fragment";case n:return"Portal";case o:return"Profiler";case s:return"StrictMode";case h:return"Suspense";case f:return"SuspenseList"}if(typeof p=="object")switch(p.$$typeof){case u:var x=p;return ce(x)+".Consumer";case l:var I=p;return ce(I._context)+".Provider";case d:return ee(p,p.render,"ForwardRef");case m:var M=p.displayName||null;return M!==null?M:te(p.type)||"Memo";case g:{var q=p,G=q._payload,O=q._init;try{return te(O(G))}catch{return null}}}return null}var ne=Object.assign,Se=0,Nr,$r,jr,Wr,Qr,Yr,Ur;function Xr(){}Xr.__reactDisabledLog=!0;function vc(){{if(Se===0){Nr=console.log,$r=console.info,jr=console.warn,Wr=console.error,Qr=console.group,Yr=console.groupCollapsed,Ur=console.groupEnd;var p={configurable:!0,enumerable:!0,value:Xr,writable:!0};Object.defineProperties(console,{info:p,log:p,warn:p,error:p,group:p,groupCollapsed:p,groupEnd:p})}Se++}}function bc(){{if(Se--,Se===0){var p={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ne({},p,{value:Nr}),info:ne({},p,{value:$r}),warn:ne({},p,{value:jr}),error:ne({},p,{value:Wr}),group:ne({},p,{value:Qr}),groupCollapsed:ne({},p,{value:Yr}),groupEnd:ne({},p,{value:Ur})})}Se<0&&R("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Ht=B.ReactCurrentDispatcher,en;function ot(p,x,I){{if(en===void 0)try{throw Error()}catch(q){var M=q.stack.trim().match(/\n( *(at )?)/);en=M&&M[1]||""}return`
18
+ `+en+p}}var tn=!1,lt;{var xc=typeof WeakMap=="function"?WeakMap:Map;lt=new xc}function Jr(p,x){if(!p||tn)return"";{var I=lt.get(p);if(I!==void 0)return I}var M;tn=!0;var q=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var G;G=Ht.current,Ht.current=null,vc();try{if(x){var O=function(){throw Error()};if(Object.defineProperty(O.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(O,[])}catch(ye){M=ye}Reflect.construct(p,[],O)}else{try{O.call()}catch(ye){M=ye}p.call(O.prototype)}}else{try{throw Error()}catch(ye){M=ye}p()}}catch(ye){if(ye&&M&&typeof ye.stack=="string"){for(var z=ye.stack.split(`
19
+ `),Z=M.stack.split(`
20
+ `),W=z.length-1,Y=Z.length-1;W>=1&&Y>=0&&z[W]!==Z[Y];)Y--;for(;W>=1&&Y>=0;W--,Y--)if(z[W]!==Z[Y]){if(W!==1||Y!==1)do if(W--,Y--,Y<0||z[W]!==Z[Y]){var ie=`
21
+ `+z[W].replace(" at new "," at ");return p.displayName&&ie.includes("<anonymous>")&&(ie=ie.replace("<anonymous>",p.displayName)),typeof p=="function"&&lt.set(p,ie),ie}while(W>=1&&Y>=0);break}}}finally{tn=!1,Ht.current=G,bc(),Error.prepareStackTrace=q}var Ve=p?p.displayName||p.name:"",ui=Ve?ot(Ve):"";return typeof p=="function"&&lt.set(p,ui),ui}function Cc(p,x,I){return Jr(p,!1)}function wc(p){var x=p.prototype;return!!(x&&x.isReactComponent)}function ut(p,x,I){if(p==null)return"";if(typeof p=="function")return Jr(p,wc(p));if(typeof p=="string")return ot(p);switch(p){case h:return ot("Suspense");case f:return ot("SuspenseList")}if(typeof p=="object")switch(p.$$typeof){case d:return Cc(p.render);case m:return ut(p.type,x,I);case g:{var M=p,q=M._payload,G=M._init;try{return ut(G(q),x,I)}catch{}}}return""}var ct=Object.prototype.hasOwnProperty,Kr={},Zr=B.ReactDebugCurrentFrame;function dt(p){if(p){var x=p._owner,I=ut(p.type,p._source,x?x.type:null);Zr.setExtraStackFrame(I)}else Zr.setExtraStackFrame(null)}function Sc(p,x,I,M,q){{var G=Function.call.bind(ct);for(var O in p)if(G(p,O)){var z=void 0;try{if(typeof p[O]!="function"){var Z=Error((M||"React class")+": "+I+" type `"+O+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof p[O]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Z.name="Invariant Violation",Z}z=p[O](x,O,M,I,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(W){z=W}z&&!(z instanceof Error)&&(dt(q),R("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",M||"React class",I,O,typeof z),dt(null)),z instanceof Error&&!(z.message in Kr)&&(Kr[z.message]=!0,dt(q),R("Failed %s type: %s",I,z.message),dt(null))}}}var Ic=Array.isArray;function nn(p){return Ic(p)}function Tc(p){{var x=typeof Symbol=="function"&&Symbol.toStringTag,I=x&&p[Symbol.toStringTag]||p.constructor.name||"Object";return I}}function Dc(p){try{return Hr(p),!1}catch{return!0}}function Hr(p){return""+p}function ei(p){if(Dc(p))return R("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Tc(p)),Hr(p)}var We=B.ReactCurrentOwner,_c={key:!0,ref:!0,__self:!0,__source:!0},ti,ni,rn;rn={};function kc(p){if(ct.call(p,"ref")){var x=Object.getOwnPropertyDescriptor(p,"ref").get;if(x&&x.isReactWarning)return!1}return p.ref!==void 0}function Ac(p){if(ct.call(p,"key")){var x=Object.getOwnPropertyDescriptor(p,"key").get;if(x&&x.isReactWarning)return!1}return p.key!==void 0}function Mc(p,x){if(typeof p.ref=="string"&&We.current&&x&&We.current.stateNode!==x){var I=te(We.current.type);rn[I]||(R('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',te(We.current.type),p.ref),rn[I]=!0)}}function Ec(p,x){{var I=function(){ti||(ti=!0,R("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",x))};I.isReactWarning=!0,Object.defineProperty(p,"key",{get:I,configurable:!0})}}function Vc(p,x){{var I=function(){ni||(ni=!0,R("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",x))};I.isReactWarning=!0,Object.defineProperty(p,"ref",{get:I,configurable:!0})}}var zc=function(p,x,I,M,q,G,O){var z={$$typeof:e,type:p,key:x,ref:I,props:O,_owner:G};return z._store={},Object.defineProperty(z._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(z,"_self",{configurable:!1,enumerable:!1,writable:!1,value:M}),Object.defineProperty(z,"_source",{configurable:!1,enumerable:!1,writable:!1,value:q}),Object.freeze&&(Object.freeze(z.props),Object.freeze(z)),z};function Oc(p,x,I,M,q){{var G,O={},z=null,Z=null;I!==void 0&&(ei(I),z=""+I),Ac(x)&&(ei(x.key),z=""+x.key),kc(x)&&(Z=x.ref,Mc(x,q));for(G in x)ct.call(x,G)&&!_c.hasOwnProperty(G)&&(O[G]=x[G]);if(p&&p.defaultProps){var W=p.defaultProps;for(G in W)O[G]===void 0&&(O[G]=W[G])}if(z||Z){var Y=typeof p=="function"?p.displayName||p.name||"Unknown":p;z&&Ec(O,Y),Z&&Vc(O,Y)}return zc(p,z,Z,q,M,We.current,O)}}var an=B.ReactCurrentOwner,ri=B.ReactDebugCurrentFrame;function Ee(p){if(p){var x=p._owner,I=ut(p.type,p._source,x?x.type:null);ri.setExtraStackFrame(I)}else ri.setExtraStackFrame(null)}var sn;sn=!1;function on(p){return typeof p=="object"&&p!==null&&p.$$typeof===e}function ii(){{if(an.current){var p=te(an.current.type);if(p)return`
22
22
 
23
- Check the render method of \``+p+"`."}return""}}function Mc(p){{if(p!==void 0){var x=p.fileName.replace(/^.*[\\\/]/,""),I=p.lineNumber;return`
23
+ Check the render method of \``+p+"`."}return""}}function Pc(p){{if(p!==void 0){var x=p.fileName.replace(/^.*[\\\/]/,""),I=p.lineNumber;return`
24
24
 
25
- Check your code at `+x+":"+I+"."}return""}}var ai={};function Ec(p){{var x=ii();if(!x){var I=typeof p=="string"?p:p.displayName||p.name;I&&(x=`
25
+ Check your code at `+x+":"+I+"."}return""}}var ai={};function qc(p){{var x=ii();if(!x){var I=typeof p=="string"?p:p.displayName||p.name;I&&(x=`
26
26
 
27
- Check the top-level render call using <`+I+">.")}return x}}function si(p,x){{if(!p._store||p._store.validated||p.key!=null)return;p._store.validated=!0;var I=Ec(x);if(ai[I])return;ai[I]=!0;var M="";p&&p._owner&&p._owner!==an.current&&(M=" It was passed a child from "+te(p._owner.type)+"."),Ee(p),G('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',I,M),Ee(null)}}function oi(p,x){{if(typeof p!="object")return;if(nn(p))for(var I=0;I<p.length;I++){var M=p[I];on(M)&&si(M,x)}else if(on(p))p._store&&(p._store.validated=!0);else if(p){var q=V(p);if(typeof q=="function"&&q!==p.entries)for(var R=q.call(p),O;!(O=R.next()).done;)on(O.value)&&si(O.value,x)}}}function Vc(p){{var x=p.type;if(x==null||typeof x=="string")return;var I;if(typeof x=="function")I=x.propTypes;else if(typeof x=="object"&&(x.$$typeof===d||x.$$typeof===m))I=x.propTypes;else return;if(I){var M=te(x);vc(I,p.props,"prop",M,p)}else if(x.PropTypes!==void 0&&!sn){sn=!0;var q=te(x);G("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",q||"Unknown")}typeof x.getDefaultProps=="function"&&!x.getDefaultProps.isReactClassApproved&&G("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function zc(p){{for(var x=Object.keys(p.props),I=0;I<x.length;I++){var M=x[I];if(M!=="children"&&M!=="key"){Ee(p),G("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",M),Ee(null);break}}p.ref!==null&&(Ee(p),G("Invalid attribute `ref` supplied to `React.Fragment`."),Ee(null))}}function li(p,x,I,M,q,R){{var O=st(p);if(!O){var z="";(p===void 0||typeof p=="object"&&p!==null&&Object.keys(p).length===0)&&(z+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var K=Mc(q);K?z+=K:z+=ii();var W;p===null?W="null":nn(p)?W="array":p!==void 0&&p.$$typeof===e?(W="<"+(te(p.type)||"Unknown")+" />",z=" Did you accidentally export a JSX literal instead of a component?"):W=typeof p,G("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",W,z)}var Y=kc(p,x,I,q,R);if(Y==null)return Y;if(O){var ie=x.children;if(ie!==void 0)if(M)if(nn(ie)){for(var Ve=0;Ve<ie.length;Ve++)oi(ie[Ve],p);Object.freeze&&Object.freeze(ie)}else G("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else oi(ie,p)}return p===i?zc(Y):Vc(Y),Y}}function Oc(p,x,I){return li(p,x,I,!0)}function Pc(p,x,I){return li(p,x,I,!1)}var qc=Pc,Fc=Oc;qe.Fragment=i,qe.jsx=qc,qe.jsxs=Fc}()),qe}(function(t){process.env.NODE_ENV==="production"?t.exports=Di():t.exports=_i()})(Qe);const j=Qe.exports.Fragment,r=Qe.exports.jsx,c=Qe.exports.jsxs;class Ae extends b.default.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return c(a.Box,{children:[r(a.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),r(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function Ai({label:t,config:{default_value:e,...n},value:i,onChange:s}){return c(a.Box,{children:[r(a.Text,{children:"\xA0"}),r(a.Checkbox,{label:t,checked:i,onChange:o=>s(o.currentTarget.checked),...n})]})}function ki({label:t,config:e,value:n,onChange:i}){return r(ci.DateRangePicker,{label:t,value:n,onChange:i,icon:r(_.Calendar,{size:16}),sx:{minWidth:"14em"},...e})}function Mi(t,e){const n=Object.keys(e),i=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...i)}catch(s){return console.error(s),s.message}}function vt(t,e){const n=Object.keys(e),i=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...i)}catch(s){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient params"):s}}function mn(t,e,n){const i=e.reduce((s,o)=>(s[o.key]=vt(o.value,t),s),{});return P.default.merge({},i,t,{filters:n})}function yn(t,e,n,i){try{const s=mn(e,n,i);return vt(t,s)}catch(s){return console.error(s),s.message}}const Te={baseURL:"http://localhost:31200",getRequest(t){return(e,n,i={})=>{const s={"X-Requested-With":"XMLHttpRequest","Content-Type":i.string?"application/x-www-form-urlencoded":"application/json",...i.headers},o={baseURL:this.baseURL,method:t,url:e,params:t==="GET"?n:i.params,headers:s};return t==="POST"&&(o.data=i.string?JSON.stringify(n):n),wi.default(o).then(l=>l.data).catch(l=>Promise.reject(l))}}},bt=({type:t,key:e,sql:n})=>async()=>{if(!t||!e||!n)return[];try{return await Te.getRequest("POST")("/query",{type:t,key:e,query:n})}catch(i){return console.error(i),[]}};async function Ei({context:t,sqlSnippets:e,title:n,query:i,filterValues:s}){if(!i.sql)return[];const{type:o,key:l,sql:u}=i,d=u.includes("$");try{const h=mn(t,e,s),f=vt(u,h);return d&&(console.groupCollapsed(`Final SQL for: ${n}`),console.log(f),console.groupEnd()),await Te.getRequest("POST")("/query",{type:o,key:l,query:f})}catch(h){return console.error(h),[]}}async function Vi(){try{return(await Te.getRequest("POST")("/datasource/list",{filter:{},sort:{field:"create_time",order:"ASC"},pagination:{page:1,pagesize:100}})).data}catch(t){return console.error(t),[]}}function zi({label:t,config:e,value:n,onChange:i}){const s=!!e.options_query.sql,{data:o=[],loading:l}=B.useRequest(bt(e.options_query),{refreshDeps:[e.options_query,s]});return r(a.MultiSelect,{label:t,data:s?o:e.static_options,disabled:s?l:!1,value:n,onChange:i,sx:{minWidth:"14em"}})}function Oi({label:t,config:e,value:n,onChange:i}){const s=!!e.options_query.sql,{data:o=[],loading:l}=B.useRequest(bt(e.options_query),{refreshDeps:[e.options_query,s]});return r(a.Select,{label:t,data:s?o:e.static_options,disabled:s?l:!1,value:n,onChange:i})}function Pi({label:t,config:e,value:n,onChange:i}){return r(a.TextInput,{label:t,value:n,onChange:i,...e})}function qi({type:t,config:e,key:n,...i},s){switch(t){case"select":return r(Oi,{...i,...s,config:e});case"multi-select":return r(zi,{...i,...s,config:e});case"text-input":return r(Pi,{...i,...s,config:e});case"date-range":return r(ki,{...i,...s,config:e});case"checkbox":return r(Ai,{...i,...s,config:e});default:return null}}const vn=b.default.forwardRef(function({filter:e,...n},i){return r("div",{className:"filter-root",ref:i,children:r(Ae,{children:qi(e,n)})})}),bn=A.observer(function({view:e}){const n=Q(),{control:i,handleSubmit:s}=w.useForm({defaultValues:n.filters.values}),o=n.filters.visibleInView(e.id);return o.length===0?null:r("form",{onSubmit:s(n.filters.setValues),children:c(a.Group,{className:"dashboard-filters",position:"apart",p:"md",noWrap:!0,sx:{border:"1px solid #ced4da",borderRadius:"4px"},children:[r(a.Group,{align:"flex-start",children:o.map(l=>r(w.Controller,{name:l.key,control:i,render:({field:u})=>r(vn,{filter:l,...u})},l.id))}),r(a.Group,{sx:{alignSelf:"flex-end"},children:r(a.Button,{color:"blue",size:"sm",type:"submit",children:"Submit"})})]})})}),Fi={layoutFrozen:!1,freezeLayout:P.default.noop,inEditMode:!1,inUseMode:!0},oe=b.default.createContext(Fi),xn=b.default.createContext({panel:null,data:[],loading:!1}),Cn=xn.Provider;function Z(){const t=b.default.useContext(xn);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const Ri=`
27
+ Check the top-level render call using <`+I+">.")}return x}}function si(p,x){{if(!p._store||p._store.validated||p.key!=null)return;p._store.validated=!0;var I=qc(x);if(ai[I])return;ai[I]=!0;var M="";p&&p._owner&&p._owner!==an.current&&(M=" It was passed a child from "+te(p._owner.type)+"."),Ee(p),R('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',I,M),Ee(null)}}function oi(p,x){{if(typeof p!="object")return;if(nn(p))for(var I=0;I<p.length;I++){var M=p[I];on(M)&&si(M,x)}else if(on(p))p._store&&(p._store.validated=!0);else if(p){var q=V(p);if(typeof q=="function"&&q!==p.entries)for(var G=q.call(p),O;!(O=G.next()).done;)on(O.value)&&si(O.value,x)}}}function Fc(p){{var x=p.type;if(x==null||typeof x=="string")return;var I;if(typeof x=="function")I=x.propTypes;else if(typeof x=="object"&&(x.$$typeof===d||x.$$typeof===m))I=x.propTypes;else return;if(I){var M=te(x);Sc(I,p.props,"prop",M,p)}else if(x.PropTypes!==void 0&&!sn){sn=!0;var q=te(x);R("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",q||"Unknown")}typeof x.getDefaultProps=="function"&&!x.getDefaultProps.isReactClassApproved&&R("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Gc(p){{for(var x=Object.keys(p.props),I=0;I<x.length;I++){var M=x[I];if(M!=="children"&&M!=="key"){Ee(p),R("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",M),Ee(null);break}}p.ref!==null&&(Ee(p),R("Invalid attribute `ref` supplied to `React.Fragment`."),Ee(null))}}function li(p,x,I,M,q,G){{var O=st(p);if(!O){var z="";(p===void 0||typeof p=="object"&&p!==null&&Object.keys(p).length===0)&&(z+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var Z=Pc(q);Z?z+=Z:z+=ii();var W;p===null?W="null":nn(p)?W="array":p!==void 0&&p.$$typeof===e?(W="<"+(te(p.type)||"Unknown")+" />",z=" Did you accidentally export a JSX literal instead of a component?"):W=typeof p,R("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",W,z)}var Y=Oc(p,x,I,q,G);if(Y==null)return Y;if(O){var ie=x.children;if(ie!==void 0)if(M)if(nn(ie)){for(var Ve=0;Ve<ie.length;Ve++)oi(ie[Ve],p);Object.freeze&&Object.freeze(ie)}else R("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else oi(ie,p)}return p===i?Gc(Y):Fc(Y),Y}}function Rc(p,x,I){return li(p,x,I,!0)}function Bc(p,x,I){return li(p,x,I,!1)}var Lc=Bc,Nc=Rc;qe.Fragment=i,qe.jsx=Lc,qe.jsxs=Nc}()),qe}(function(t){process.env.NODE_ENV==="production"?t.exports=Di():t.exports=_i()})(Qe);const $=Qe.exports.Fragment,r=Qe.exports.jsx,c=Qe.exports.jsxs;class ke extends b.default.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return c(a.Box,{children:[r(a.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),r(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function ki({label:t,config:{default_value:e,...n},value:i,onChange:s}){return c(a.Box,{children:[r(a.Text,{children:"\xA0"}),r(a.Checkbox,{label:t,checked:i,onChange:o=>s(o.currentTarget.checked),...n})]})}function Ai({label:t,config:e,value:n,onChange:i}){return r(ci.DateRangePicker,{label:t,value:n,onChange:i,icon:r(_.Calendar,{size:16}),sx:{minWidth:"14em"},...e})}function Mi(t,e){const n=Object.keys(e),i=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...i)}catch(s){return console.error(s),s.message}}function vt(t,e){const n=Object.keys(e),i=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...i)}catch(s){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient params"):s}}function mn(t,e,n){const i=e.reduce((s,o)=>(s[o.key]=vt(o.value,t),s),{});return P.default.merge({},i,t,{filters:n})}function yn(t,e,n,i){try{const s=mn(e,n,i);return vt(t,s)}catch(s){return console.error(s),s.message}}const Te={baseURL:"http://localhost:31200",getRequest(t){return(e,n,i={})=>{const s={"X-Requested-With":"XMLHttpRequest","Content-Type":i.string?"application/x-www-form-urlencoded":"application/json",...i.headers},o={baseURL:this.baseURL,method:t,url:e,params:t==="GET"?n:i.params,headers:s};return t==="POST"&&(o.data=i.string?JSON.stringify(n):n),wi.default(o).then(l=>l.data).catch(l=>Promise.reject(l))}}},bt=({type:t,key:e,sql:n})=>async()=>{if(!t||!e||!n)return[];try{return await Te.getRequest("POST")("/query",{type:t,key:e,query:n})}catch(i){return console.error(i),[]}};async function Ei({context:t,sqlSnippets:e,title:n,query:i,filterValues:s}){if(!i.sql)return[];const{type:o,key:l,sql:u}=i,d=u.includes("$");try{const h=mn(t,e,s),f=vt(u,h);return d&&(console.groupCollapsed(`Final SQL for: ${n}`),console.log(f),console.groupEnd()),await Te.getRequest("POST")("/query",{type:o,key:l,query:f})}catch(h){return console.error(h),[]}}async function Vi(){try{return(await Te.getRequest("POST")("/datasource/list",{filter:{},sort:{field:"create_time",order:"ASC"},pagination:{page:1,pagesize:100}})).data}catch(t){return console.error(t),[]}}function zi({label:t,config:e,value:n,onChange:i}){const s=!!e.options_query.sql,{data:o=[],loading:l}=L.useRequest(bt(e.options_query),{refreshDeps:[e.options_query,s]});return r(a.MultiSelect,{label:t,data:s?o:e.static_options,disabled:s?l:!1,value:n,onChange:i,sx:{minWidth:"14em"}})}function Oi({label:t,config:e,value:n,onChange:i}){const s=!!e.options_query.sql,{data:o=[],loading:l}=L.useRequest(bt(e.options_query),{refreshDeps:[e.options_query,s]});return r(a.Select,{label:t,data:s?o:e.static_options,disabled:s?l:!1,value:n,onChange:i})}function Pi({label:t,config:e,value:n,onChange:i}){return r(a.TextInput,{label:t,value:n,onChange:i,...e})}function qi({type:t,config:e,key:n,...i},s){switch(t){case"select":return r(Oi,{...i,...s,config:e});case"multi-select":return r(zi,{...i,...s,config:e});case"text-input":return r(Pi,{...i,...s,config:e});case"date-range":return r(Ai,{...i,...s,config:e});case"checkbox":return r(ki,{...i,...s,config:e});default:return null}}const vn=b.default.forwardRef(function({filter:e,...n},i){return r("div",{className:"filter-root",ref:i,children:r(ke,{children:qi(e,n)})})}),bn=k.observer(function({view:e}){const n=Q(),{control:i,handleSubmit:s}=w.useForm({defaultValues:n.filters.values}),o=n.filters.visibleInView(e.id);return o.length===0?null:r("form",{onSubmit:s(n.filters.setValues),children:c(a.Group,{className:"dashboard-filters",position:"apart",p:"md",noWrap:!0,sx:{border:"1px solid #ced4da",borderRadius:"4px"},children:[r(a.Group,{align:"flex-start",children:o.map(l=>r(w.Controller,{name:l.key,control:i,render:({field:u})=>r(vn,{filter:l,...u})},l.id))}),r(a.Group,{sx:{alignSelf:"flex-end"},children:r(a.Button,{color:"blue",size:"sm",type:"submit",children:"Submit"})})]})})}),Fi={layoutFrozen:!1,freezeLayout:P.default.noop,inEditMode:!1,inUseMode:!0},oe=b.default.createContext(Fi),xn=b.default.createContext({panel:null,data:[],loading:!1}),Cn=xn.Provider;function K(){const t=b.default.useContext(xn);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const Gi=`
28
28
  -- You may reference global variables in SQL or VizConfig.
29
29
  SELECT *
30
30
  FROM commit
@@ -36,7 +36,7 @@ WHERE
36
36
  -- SQL snippets
37
37
  AND \${sql_snippets.author_email_condition}
38
38
  \${sql_snippets.order_by_clause}
39
- `,wn=A.observer(function({showSQLSnippets:e=!0,sx:n={}}){const i=Q(),s=i.context.current,o=b.default.useMemo(()=>{const l={context:s,filters:i.filters.values};if(e){const u=i.sqlSnippets.current.reduce((d,h)=>(d[h.key]=h.value,d),{});l.sql_snippets=u}return JSON.stringify(l,null,2)},[s,i.sqlSnippets.current,i.filters.values,e]);return c(a.Stack,{sx:{border:"1px solid #eee",maxWidth:"40%",overflow:"hidden",...n},children:[r(a.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:r(a.Text,{weight:500,children:"Global Variables"})}),c(a.Stack,{px:"md",pb:"md",sx:{width:"100%"},children:[r(Ie.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:Ri}),r(a.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),r(Ie.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:o})]})]})});function Gi({data:t}){return t.length===0?r(a.Box,{sx:{height:"5em"}}):c(a.Table,{children:[r("thead",{children:r("tr",{children:Object.keys(t==null?void 0:t[0]).map(e=>r("th",{children:r(a.Text,{weight:700,color:"#000",children:e})},e))})}),r("tbody",{children:t.slice(0,10).map((e,n)=>r("tr",{children:Object.values(e).map((i,s)=>r("td",{children:r(a.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:r(a.Text,{children:i})})},`${i}--${s}`))},`row-${n}`))})]})}const Sn=A.observer(function({id:e}){const n=Q(),{data:i,state:s}=n.getDataStuffByID(e),o=s==="loading",l=()=>{n.queries.refetchDataByQueryID(e)};return c(a.Stack,{my:"xl",sx:{border:"1px solid #eee"},children:[c(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[c(a.Group,{position:"left",children:[r(a.Text,{weight:500,children:"Preview Data"}),i.length>10&&c(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",i.length]})]}),r(a.ActionIcon,{mr:15,variant:"subtle",color:"blue",disabled:o,onClick:l,children:r(_.Refresh,{size:15})})]}),c(a.Box,{sx:{position:"relative"},children:[r(a.LoadingOverlay,{visible:o}),r(Gi,{data:i})]})]})}),Li=C.forwardRef(({label:t,type:e,...n},i)=>c(a.Group,{position:"apart",ref:i,...n,children:[r(a.Text,{children:t}),r(a.Text,{children:e})]})),In=A.observer(function({value:e,onChange:n}){const{data:i=[],loading:s}=B.useRequest(Vi,{refreshDeps:[]},[]),o=C.useMemo(()=>i.map(u=>({label:u.key,value:u.key,type:u.type})),[i]),l=C.useMemo(()=>o.reduce((u,d)=>(u[d.value]=d.type,u),{}),[o]);return r(a.Select,{label:"Data Source",data:o,itemComponent:Li,sx:{flex:1},disabled:s,value:e.key,onChange:u=>{u!==null&&n({key:u,type:l[u]})}})});function Tn({value:t}){const e=Q(),n=e.context.current,i=b.default.useMemo(()=>yn(t,n,e.sqlSnippets.current,e.filters.values),[t,n,e.sqlSnippets.current,e.filters.values]);return r(Ie.Prism,{language:"sql",colorScheme:"light",children:i})}const Bi=A.observer(function({queryModel:e,setCurrentID:n}){const i=b.default.useRef(e.id),[s,o]=b.default.useState(i.current);b.default.useEffect(()=>{i.current!==e.id&&(o(e.id),i.current=e.id)},[i,e.id]);const[l,u]=b.default.useState(e.sql);b.default.useEffect(()=>{u(m=>m!==e.sql?e.sql:m)},[e.sql]);const d=l!==e.sql,h=()=>{e.setSQL(l)},f=()=>{n(s),e.setID(s)};return c(a.Stack,{sx:{border:"1px solid #eee",flexGrow:1},children:[r(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:r(a.Text,{weight:500,children:"Edit Query"})}),c(a.Stack,{my:0,p:"md",pr:40,children:[c(a.Group,{grow:!0,children:[r(a.TextInput,{placeholder:"An ID unique in this dashboard",label:"ID",required:!0,sx:{flex:1},value:s,onChange:m=>{o(m.currentTarget.value)},rightSection:r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:s===e.id,onClick:f,children:r(_.DeviceFloppy,{size:18})})}),r(In,{value:{type:e.type,key:e.key},onChange:({type:m,key:g})=>{e.setKey(g),e.setType(m)}})]}),c(a.Tabs,{defaultValue:"SQL",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"SQL",children:"SQL"}),r(a.Tabs.Tab,{value:"Preview",children:"Preview"})]}),r(a.Tabs.Panel,{value:"SQL",pt:"sm",children:c(a.Box,{sx:{position:"relative"},children:[r(a.Textarea,{autosize:!0,minRows:12,maxRows:24,className:"code-textarea",value:l,onChange:m=>{u(m.currentTarget.value)}}),r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",sx:{position:"absolute",right:10,top:10},disabled:!d,onClick:h,children:r(_.DeviceFloppy,{size:20})})]})}),r(a.Tabs.Panel,{value:"Preview",pt:"sm",children:r(Tn,{value:e.sql})})]})]})]})}),Ni=A.observer(function({id:e,setID:n}){const i=Q(),s=b.default.useMemo(()=>i.queries.findByID(e),[i.queries,e]);return e?s?r(Bi,{queryModel:s,setCurrentID:n}):r("span",{children:"Invalid Query ID"}):null});var pe=(t=>(t.Postgresql="postgresql",t.MySQL="mysql",t.HTTP="http",t))(pe||{});const $i=A.observer(function({id:e,setID:n}){const i=Q(),s=()=>{var l;n((l=i.queries.firstID)!=null?l:"")};b.default.useEffect(()=>{if(!e){s();return}i.queries.current.findIndex(u=>u.id===e)===-1&&s()},[e,i.queries.current,s]);const o=()=>{const l=U.randomId();i.queries.append(y.cast({id:l,type:pe.Postgresql,key:"",sql:""})),n(l)};return r(a.Group,{pb:"xl",children:c(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[r(a.Text,{children:"Select a Query"}),r(a.Select,{data:i.queries.options,value:e,onChange:n,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}}),r(a.Text,{children:"or"}),r(a.Group,{position:"center",mt:"md",children:r(a.Button,{onClick:o,children:"Add a Query"})})]})})}),ji=A.observer(function(){const[e,n]=b.default.useState("");return c(a.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:[c(a.Group,{position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[c(a.Stack,{sx:{flexGrow:1,maxWidth:"calc(60% - 16px)"},children:[r($i,{id:e,setID:n}),r(Ni,{id:e,setID:n})]}),r(wn,{})]}),r(Sn,{id:e})]})});function Wi({value:t}){const n=Q().context.current,i=b.default.useMemo(()=>Mi(t,n),[t,n]);return c(a.Stack,{children:[r(a.Text,{children:"Preview"}),r(Ie.Prism,{language:"sql",noCopy:!0,colorScheme:"dark",children:i})]})}const Qi=A.observer(function(){const e=Q(),n=()=>e.sqlSnippets.append(y.cast({key:U.randomId(),value:""}));return c(a.Stack,{sx:{border:"1px solid #eee",flexGrow:1},children:[r(a.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:r(a.Text,{weight:500,children:"SQL Snippets"})}),r(a.Group,{px:"md",pb:"md",pt:"md",children:c(a.Stack,{sx:{width:"100%",position:"relative"},children:[e.sqlSnippets.current.map((i,s)=>c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(a.TextInput,{label:"Key",required:!0,value:i.key,onChange:o=>{i.setKey(o.currentTarget.value)}}),r(a.Textarea,{minRows:3,label:"Value",required:!0,value:i.value,onChange:o=>{i.setValue(o.currentTarget.value)},className:"code-textarea"}),r(Wi,{value:i.value}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>e.sqlSnippets.remove(s),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},s)),r(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"40%"},mx:"auto",children:r(a.Button,{variant:"default",onClick:n,children:"Add a snippet"})})]})})]})});function Yi(){return r(a.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:c(a.Group,{position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[r(Qi,{}),r(wn,{showSQLSnippets:!1})]})})}const Ui=A.observer(function({opened:e,close:n}){const{freezeLayout:i}=b.default.useContext(oe);return b.default.useEffect(()=>{i(e)},[e]),r(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Data Settings",trapFocus:!0,onDragStart:s=>{s.stopPropagation()},children:c(a.Tabs,{defaultValue:"Queries",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"SQL Snippet",children:"SQL Snippet"}),r(a.Tabs.Tab,{value:"Queries",children:"Queries"})]}),r(a.Tabs.Panel,{value:"SQL Snippet",pt:"sm",children:r(Yi,{})}),r(a.Tabs.Panel,{value:"Queries",pt:"sm",children:r(ji,{})})]})})});var re=(t=>(t.Select="select",t.MultiSelect="multi-select",t.TextInput="text-input",t.Checkbox="checkbox",t.DateRange="date-range",t))(re||{});const Dn=y.types.model({type:y.types.enumeration("DataSourceType",[pe.Postgresql,pe.MySQL,pe.HTTP]),key:y.types.string,sql:y.types.string}),_n=y.types.model("FilterConfigModel_TextInput",{required:y.types.boolean,default_value:y.types.string}).actions(t=>({setRequired(e){t.required=e},setDefaultValue(e){t.default_value=e}})),An=()=>_n.create({required:!1,default_value:""}),Xi=A.observer(function({config:e}){return r(j,{children:r(a.Checkbox,{checked:e.default_value,onChange:n=>e.setDefaultValue(n.currentTarget.checked),label:"Default Checked"})})}),Ji=[{label:"2022",value:"YYYY"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}],Ki=A.observer(function({config:e}){return c(j,{children:[c(a.Group,{children:[r(a.Checkbox,{checked:e.required,onChange:n=>e.setRequired(n.currentTarget.checked),label:"Required"}),r(a.Checkbox,{checked:e.clearable,onChange:n=>e.setClearable(n.currentTarget.checked),label:"Clearable"})]}),r(a.Select,{data:Ji,label:"Display Format",value:e.inputFormat,onChange:e.setInputFormat})]})});function Zi({data:t}){return t.length===0?r(a.Box,{sx:{height:"5em"}}):c(a.Table,{children:[r("thead",{children:r("tr",{children:Object.keys(t==null?void 0:t[0]).map(e=>r("th",{children:r(a.Text,{weight:700,color:"#000",children:e})},e))})}),r("tbody",{children:t.slice(0,3).map((e,n)=>r("tr",{children:Object.values(e).map((i,s)=>r("td",{children:r(a.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:r(a.Text,{children:i})})},`${i}--${s}`))},`row-${n}`))}),t.length>3&&r("tfoot",{children:r("tr",{children:r("td",{colSpan:Object.keys(t==null?void 0:t[0]).length,children:c(a.Text,{color:"gray",size:"sm",children:[t.length-3," more row(s) hidden"]})})})})]})}const Hi=A.observer(function({query:e}){const{data:n=[],loading:i,refresh:s}=B.useRequest(bt(e),{refreshDeps:[e]});return c(a.Stack,{my:0,children:[c(a.Group,{position:"apart",children:[r(a.Text,{size:"md",pl:"sm",children:"Fetched Data"}),r(a.Button,{size:"xs",onClick:s,disabled:!e.sql||!e.key,children:"Retry"})]}),c(a.Box,{sx:{position:"relative"},children:[r(a.LoadingOverlay,{visible:i,exitTransitionDuration:0}),r(Zi,{data:n})]})]})}),kn=A.observer(function({value:e,onChange:n}){return c(a.Stack,{my:0,children:[r(In,{value:e,onChange:({type:i,key:s})=>{n({...e,type:i,key:s})}}),c(a.Tabs,{defaultValue:"SQL",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"SQL",children:"SQL"}),r(a.Tabs.Tab,{value:"Preview",children:"Preview"}),r(a.Tabs.Tab,{value:"Data",children:"Data"})]}),r(a.Tabs.Panel,{value:"SQL",pt:"sm",children:r(a.Textarea,{autosize:!0,minRows:12,maxRows:24,className:"code-textarea",value:e.sql,onChange:i=>{n({...e,sql:i.currentTarget.value})},placeholder:"SELECT name AS label, id AS value"})}),r(a.Tabs.Panel,{value:"Preview",pt:"sm",children:r(Tn,{value:e.sql})}),r(a.Tabs.Panel,{value:"Data",pt:"sm",children:r(Hi,{query:e})})]})]})}),ea=A.observer(function({config:e}){const n=()=>{e.addStaticOption({label:"",value:""})},i=e.static_options,s=[...i];return c(j,{children:[r(a.Divider,{label:"Configure options",labelPosition:"center"}),i.length>0&&r(a.MultiSelect,{label:"Default Selection",data:s,value:e.default_value,onChange:e.setDefaultValue}),i.map((o,l)=>c(a.Group,{sx:{position:"relative"},pr:"40px",children:[r(a.TextInput,{label:"Label",required:!0,value:e.static_options[l].label,onChange:u=>{e.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.TextInput,{label:"Value",required:!0,value:e.static_options[l].value,onChange:u=>{e.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>e.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:r(_.Trash,{size:16})})]})),r(a.Button,{size:"xs",color:"blue",leftIcon:r(_.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),r(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),r(kn,{value:e.options_query,onChange:e.setOptionsQuery})]})}),ta=A.observer(function({config:e}){const n=()=>{e.addStaticOption({label:"",value:""})},i=e.static_options,s=[{label:"No default selection",value:""},...i];return c(j,{children:[r(a.Checkbox,{checked:e.required,onChange:o=>e.setRequired(o.currentTarget.checked),label:"Required"}),r(a.Divider,{label:"Configure options",labelPosition:"center"}),i.length>0&&r(a.Select,{label:"Default Selection",data:s,value:e.default_value,onChange:e.setDefaultValue}),i.map((o,l)=>c(a.Group,{sx:{position:"relative"},pr:"40px",children:[r(a.TextInput,{label:"Label",required:!0,value:e.static_options[l].label,onChange:u=>{e.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.TextInput,{label:"Value",required:!0,value:e.static_options[l].value,onChange:u=>{e.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>e.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:r(_.Trash,{size:16})})]},l)),r(a.Button,{size:"xs",color:"blue",leftIcon:r(_.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),r(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),r(kn,{value:e.options_query,onChange:e.setOptionsQuery})]})}),na=A.observer(function({config:e}){return c(j,{children:[r(a.TextInput,{label:"Default Value",value:e.default_value,onChange:n=>{e.setDefaultValue(n.currentTarget.value)}}),r(a.Checkbox,{checked:e.required,onChange:n=>e.setRequired(n.currentTarget.checked),label:"Required"})]})}),ra=A.observer(function({filter:e}){const n=e.config.default_value,[i,s]=b.default.useState(n);return b.default.useEffect(()=>{s(n)},[n]),c(a.Box,{sx:{maxWidth:"30em"},children:[r(a.Text,{pb:"md",color:"gray",children:"Preview"}),r(vn,{filter:e,value:i,onChange:s}),r(a.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),r(Ie.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(e,null,4)})]})}),ia={select:ta,"multi-select":ea,"text-input":na,checkbox:Xi,"date-range":Ki},aa=[{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"}],sa=A.observer(function({filter:e,index:n}){const i=Q(),s=b.default.useMemo(()=>ia[e.type],[e.type]);return c(a.SimpleGrid,{cols:2,children:[c(a.Box,{pl:"md",children:[r(a.Text,{pb:"md",color:"gray",children:"Edit"}),c(a.Stack,{sx:{maxWidth:"30em"},children:[r(a.NumberInput,{label:"Placement Order",required:!0,value:e.order,onChange:e.setOrder,hideControls:!0}),r(a.MultiSelect,{label:"Visible in...",data:i.views.options,value:e.visibleInViewsIDs,onChange:e.setVisibleInViewsIDs}),r(a.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,value:e.key,onChange:o=>{e.setKey(o.currentTarget.value)}}),r(a.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:e.label,onChange:o=>{e.setLabel(o.currentTarget.value)}}),r(a.Select,{label:"Widget",data:aa,required:!0,value:e.type,onChange:e.setType}),r(s,{config:e.config,index:n})]})]}),r(ra,{filter:e})]})}),Bc="",oa=A.observer(function(){const e=Q(),n=e.filters.current,i=()=>{const s=U.randomId(),o={id:s,key:s,label:s,order:n.length+1,type:re.TextInput,config:An(),visibleInViewsIDs:["Main"]};e.filters.append(o)};return c(a.Box,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)"},p:0,children:[r(a.Group,{sx:{position:"absolute",top:"16px",right:"16px"},children:r(a.Button,{size:"xs",color:"red",leftIcon:r(_.Recycle,{size:20}),disabled:!e.filters.changed,onClick:e.filters.reset,children:"Revert Changes"})}),r(a.Tabs,{className:"filter-settings-tabs",orientation:"vertical",defaultValue:e.filters.firstID,styles:{root:{display:"block"}},children:c(a.Group,{sx:{height:"100%"},children:[c(a.Stack,{sx:{height:"100%"},children:[r(a.Tabs.List,{position:"left",sx:{flexGrow:1,width:"200px"},children:e.filters.current.map(s=>r(a.Tabs.Tab,{value:s.id,children:s.label},s.id))}),r(a.Button,{size:"xs",color:"blue",leftIcon:r(_.PlaylistAdd,{size:20}),onClick:i,children:"Add a Filter"})]}),r(a.Box,{sx:{flexGrow:1,height:"100%"},children:e.filters.current.map((s,o)=>r(a.Tabs.Panel,{value:s.id,sx:{height:"100%"},children:c(a.Stack,{sx:{height:"100%"},spacing:"sm",children:[r(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"scroll"},children:r(sa,{filter:s,index:o})}),r(a.Group,{position:"right",pt:10,children:r(a.Button,{size:"xs",color:"red",leftIcon:r(_.Trash,{size:20}),onClick:()=>e.filters.remove(o),children:"Delete this filter"})})]})},s.id))})]})})]})}),la=A.observer(function({opened:e,close:n}){const{freezeLayout:i}=b.default.useContext(oe);return b.default.useEffect(()=>{i(e)},[e]),r(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Filters",trapFocus:!0,onDragStart:s=>{s.stopPropagation()},withCloseButton:!1,children:r(oa,{})})});var Mn=(t=>(t.Use="use",t.Edit="edit",t))(Mn||{}),fe=(t=>(t.Division="div",t.Modal="modal",t))(fe||{}),En=(t=>(t.Select="select",t.MultiSelect="multi-select",t.TextInput="text-input",t.Checkbox="checkbox",t.DateRange="date-range",t))(En||{});const ua=A.observer(()=>{const e=Q().views.VIE;return!e||e.type!==fe.Division?null:c(a.Stack,{children:[r(a.Divider,{mt:8,mb:0,label:"Division settings",labelPosition:"center"}),r(a.Text,{align:"center",size:"xs",color:"dimmed",children:"Under construction"})]})}),ca=A.observer(()=>{const e=Q().views.VIE;return!e||e.type!==fe.Modal?null:c(a.Stack,{children:[r(a.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),c(a.Group,{grow:!0,children:[r(a.TextInput,{label:"Width",value:e.config.width,onChange:n=>e.updateConfig("width",n.currentTarget.value),placeholder:"600px / 50vw"}),r(a.TextInput,{label:"Height",value:e.config.height,onChange:n=>e.updateConfig("height",n.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),da=A.observer(()=>c(j,{children:[r(ua,{}),r(ca,{})]})),pa=[{label:"Division",value:fe.Division},{label:"Modal",value:fe.Modal}],fa=A.observer(()=>{const e=Q().views.VIE;return e?c(a.Stack,{sx:{position:"relative"},children:[r(a.TextInput,{label:"Name",value:e.name,onChange:n=>{e.setName(n.currentTarget.value)}}),r(a.Select,{label:"Type",value:e.type,onChange:e.setType,data:pa}),r(da,{})]}):null}),ha=A.observer(({opened:t,close:e})=>{var s;const n=Q(),{freezeLayout:i}=b.default.useContext(oe);return b.default.useEffect(()=>{i(t)},[t]),r(a.Modal,{size:"500px",overflow:"inside",opened:t,onClose:e,withCloseButton:!1,styles:{header:{width:"100%"},title:{width:"100%"}},title:c(a.Group,{position:"apart",children:[c(a.Text,{sx:{flexGrow:1},children:["Editing ",(s=n.views.VIE)==null?void 0:s.name]}),r(a.ActionIcon,{size:18,color:"red",onClick:n.views.removeVIE,disabled:n.views.isVIETheFirstView,children:r(_.Trash,{size:18})})]}),trapFocus:!0,onDragStart:o=>{o.stopPropagation()},children:r(fa,{})})}),ga=C.forwardRef(({label:t,type:e,...n},i)=>e!=="TRIGGER_TO_ADD"?r("div",{ref:i,...n,children:c(a.Group,{noWrap:!0,position:"apart",children:[r(a.Text,{size:"sm",children:t}),r(a.Text,{size:"xs",color:"dimmed",children:e})]})}):r("div",{ref:i,...n,children:r(a.Group,{noWrap:!0,grow:!0,children:r(a.Text,{size:"sm",align:"center",color:"#228be6",children:t})})})),Vn="TRIGGER_TO_ADD",ma=A.observer(({value:t,onChange:e,triggerAdd:n,triggerEdit:i,options:s})=>{const o=C.useMemo(()=>[...s,{label:"Add a View",value:Vn,type:"TRIGGER_TO_ADD"}],[s,n]),l=u=>{u!==Vn?e(u):n()};return c(a.Group,{position:"left",spacing:0,sx:{minWidth:"260px"},children:[r(a.Select,{value:t,onChange:l,placeholder:"Pick a View",itemComponent:ga,data:o,nothingFound:"Empty",sx:{flexGrow:1},styles:{input:{borderTopRightRadius:0,borderBottomRightRadius:0}}}),r(a.ActionIcon,{onClick:i,variant:"default",size:36,sx:{borderLeft:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,"&:active":{transform:"none",svg:{transform:"translateY(1px)"}}},children:r(_.Settings,{size:20})})]})}),ya=A.observer(()=>{const t=Q(),[e,n]=C.useState(!1),i=()=>{n(!0)},s=()=>{n(!1)};return c(j,{children:[r(ma,{value:t.views.idOfVIE,onChange:t.views.setIDOfVIE,triggerAdd:t.views.addARandomNewView,triggerEdit:i,options:t.views.options}),r(ha,{opened:e,close:s})]})});function va({opened:t,close:e,getCurrentSchema:n}){const{freezeLayout:i}=b.default.useContext(oe);b.default.useEffect(()=>{i(t)},[t]);const s=b.default.useMemo(()=>JSON.stringify(n(),null,2),[t]);return r(a.Modal,{size:"96vw",overflow:"inside",opened:t,onClose:e,title:"This dashboard is described by this schema",trapFocus:!0,onDragStart:o=>{o.stopPropagation()},children:t&&r(Ie.Prism,{language:"json",sx:{width:"100%"},colorScheme:"dark",children:s})})}const zn=A.observer(function({saveChanges:e}){const n=Q(),i=b.default.useCallback(()=>{const H=n.queries.current,Ne=n.views.current,Me=n.sqlSnippets.current;return{filters:n.filters.current,views:Ne,definition:{sqlSnippets:Me,queries:H}}},[n]),s=()=>{n.filters.reset(),n.views.reset(),n.sqlSnippets.reset(),n.queries.reset()},o=n.views.changed||n.sqlSnippets.changed||n.queries.changed||n.filters.changed,{inEditMode:l,inUseMode:u}=b.default.useContext(oe),[d,h]=b.default.useState(!1),f=()=>h(!0),m=()=>h(!1),[g,v]=b.default.useState(!1),D=()=>v(!0),k=()=>v(!1),[V,L]=b.default.useState(!1),G=()=>L(!0),ue=()=>L(!1);return c(a.Group,{position:"apart",pt:0,px:10,pb:"xs",children:[r(a.Group,{position:"left",children:l&&r(ya,{})}),c(a.Group,{position:"right",children:[!u&&r(a.Button,{variant:"default",size:"xs",disabled:!n.views.VIE,onClick:n.views.addAPanelToVIE,leftIcon:r(_.PlaylistAdd,{size:20}),children:"Add a Panel"}),l&&r(a.Button,{variant:"default",size:"xs",onClick:D,leftIcon:r(_.Filter,{size:20}),children:"Filters"}),l&&r(a.Button,{variant:"default",size:"xs",onClick:f,leftIcon:r(_.Database,{size:20}),children:"Data Settings"}),!u&&r(a.Button,{variant:"default",size:"xs",onClick:e,disabled:!o,leftIcon:r(_.DeviceFloppy,{size:20}),children:"Save Changes"}),!u&&r(a.Button,{color:"red",size:"xs",disabled:!o,onClick:s,leftIcon:r(_.Recycle,{size:20}),children:"Revert Changes"}),c(a.Menu,{width:180,children:[r(a.Menu.Target,{children:r(a.Button,{variant:"default",size:"xs",leftIcon:r(_.Share,{size:20}),children:"Export"})}),c(a.Menu.Dropdown,{children:[r(a.Menu.Item,{icon:r(_.Download,{size:14}),onClick:n.queries.downloadAllData,children:"Download Data"}),r(a.Menu.Item,{icon:r(_.Code,{size:14}),onClick:G,children:"View Schema"})]})]})]}),r(la,{opened:g,close:k}),r(Ui,{opened:d,close:m}),r(va,{opened:V,close:ue,getCurrentSchema:i})]})}),Nc="";function On(){const{freezeLayout:t}=b.default.useContext(oe),[e,n]=b.default.useState(!1),{panel:i}=Z();return b.default.useEffect(()=>{t(e)},[e]),!i.description||i.description==="<p><br></p>"?null:c(j,{children:[r(a.Modal,{opened:e,onClose:()=>n(!1),title:i.title,withCloseButton:!1,children:r(cn.default,{readOnly:!0,value:i.description,onChange:P.default.noop,sx:{border:"none"}})}),r(a.Tooltip,{label:"Click to see description",position:"top-start",children:r(a.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>n(s=>!s),sx:{verticalAlign:"baseline",cursor:"pointer"},children:r(_.InfoCircle,{size:20})})})]})}const Pn=t=>{const{title:e="Variables",variables:n}=t,i=U.useClipboard(),s=o=>{i.copy(o),ft.showNotification({color:"green",message:"Copied to clipboard"})};return c(a.Paper,{withBorder:!0,p:"sm",children:[r(a.Text,{size:"xs",color:"dimmed",mb:"sm",children:e}),r(a.Stack,{style:{maxHeight:"300px"},children:n.map(o=>c(a.Text,{size:"sm",children:[c(a.Code,{color:"teal",children:["// ",o.description]}),r("br",{}),c(a.Code,{onClick:()=>s(o.name),style:{cursor:"pointer"},children:[o.name," : ",o.valueType]})]},o.name))})]})};class ba{constructor(e,n){E(this,"operationId");E(this,"operation");E(this,"operationSchema");E(this,"variables",[]);this.operationManager=e,this.instance=n,J.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(e,n){const i=await this.operationManager.retrieveTrigger(e),s=this.operationManager.getOperationSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));J.runInAction(()=>{this.operationId=e,this.operation=i,this.operationSchema=s,this.variables=n})}async changeSchema(e){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,e),await this.configOperation(this.operationId,this.variables))}}function xa(t){return!!t.operationId}const Ca=A.observer(({model:t,onClick:e})=>{var i;const n=(i=t.operationSchema)==null?void 0:i.displayName;return r(a.Button,{variant:"outline",onClick:e,children:n})}),wa=A.observer(({model:t})=>{const e={operation:t.operation,instance:t.instance,variables:[]};return C.createElement(t.operationSchema.configRender,e)});function Sa({model:t}){const e=t.schemaList,n=e.map(s=>({label:s.displayName,value:s.id}));async function i(s){await t.changeSchema(e.find(o=>o.id===s))}return r(a.Select,{label:"Operation",data:n,onChange:i,value:t.operationSchema.id})}const Ia=A.observer(t=>{const[e,{setTrue:n,setFalse:i}]=B.useBoolean(!1),{operationManager:s,operationId:o,instance:l,variables:u}=t,d=B.useCreation(()=>new ba(s,l),[s,l]);return B.useAsyncEffect(async()=>{await d.configOperation(o,u)},[o,d]),xa(d)?c(j,{children:[r(Ca,{model:d,onClick:n}),r(a.Modal,{opened:e,onClose:i,title:"Operation Settings",closeButtonLabel:"close",children:c(a.Stack,{children:[r(Sa,{model:d}),r(wa,{model:d}),r(Pn,{title:"Variables",variables:d.variables})]})})]}):null});class Ta{constructor(e,n){E(this,"triggerId");E(this,"trigger");E(this,"triggerSchema");E(this,"sampleData");this.triggerManager=e,this.instance=n,J.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(e,n){const i=await this.triggerManager.retrieveTrigger(e),s=this.triggerManager.getTriggerSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));J.runInAction(()=>{this.triggerId=e,this.trigger=i,this.triggerSchema=s,this.sampleData=n})}async changeSchema(e){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,e),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return Da(this)}}function Da(t){return!!t.triggerId&&!!t.triggerSchema}function _a(t,e){return B.useCreation(()=>new Ta(t,e),[t,e])}const Aa=A.observer(({model:t,onClick:e})=>{const n=t.triggerSchema.nameRender,i={trigger:t.trigger,instance:t.instance,sampleData:t.sampleData};return r(a.Button,{variant:"outline",onClick:e,children:C.createElement(n,i)})}),ka=A.observer(({model:t})=>{const e=t.schemaList,n=e.map(s=>({label:s.displayName,value:s.id}));async function i(s){await t.changeSchema(e.find(o=>o.id===s))}return r(a.Select,{label:"Trigger",data:n,value:t.triggerSchema.id,onChange:i})}),Ma=A.observer(({model:t})=>{const e={trigger:t.trigger,instance:t.instance,sampleData:t.sampleData};return C.createElement(t.triggerSchema.configRender,e)}),Ea=A.observer(t=>{const[e,{setTrue:n,setFalse:i}]=B.useBoolean(!1),s=t.model;return c(j,{children:[r(a.Modal,{opened:e,onClose:i,title:"Setup Trigger",closeButtonLabel:"close setup",children:c(a.Stack,{children:[r(ka,{model:s}),r(Ma,{model:s}),r(Pn,{title:"Payload",variables:s.triggerSchema.payload})]})}),r(Aa,{onClick:n,model:s})]})});class ke{constructor(e,n){this.root=e,this.path=n}async deleteItem(e){e===null&&await this.root.deleteItem(this.path);const n=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,S.omit(n,e))}async getItem(e){const n=await this.root.getItem(this.path);return e===null?n:S.get(n,e)}async setItem(e,n){if(e===null)await this.root.setItem(this.path,n);else{const i=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...i,[e]:n})}return await this.getItem(e)}watchItem(e,n,i){return e===null?this.root.watchItem(this.path,(s,o)=>{n(s,o)},i):this.root.watchItem(this.path,(s,o)=>{const l=S.get(s,e),u=S.get(o,e);l!==u&&n(l,u)},i)}}class xt{constructor(e,n,i){E(this,"attachmentStorage");this.instance=e,this.attachmentKey=n,this.constructInstance=i,this.attachmentStorage=new ke(e.instanceData,n)}async getInstance(e){if(await this.attachmentStorage.getItem(e))return this.constructInstance(new ke(this.attachmentStorage,e))}async create(e,n){return await this.attachmentStorage.setItem(e,n),this.constructInstance(new ke(this.attachmentStorage,e))}async remove(e){await this.attachmentStorage.deleteItem(e)}async list(){const e=await this.attachmentStorage.getItem(null);return Promise.all(S.values(e).map(n=>this.constructInstance(new ke(this.attachmentStorage,n.id))))}}class qn{constructor(e){E(this,"rootRef");this.rootRef=J.observable({current:e})}async deleteItem(e){J.runInAction(()=>{S.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?J.toJS(this.rootRef.current):S.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(S.isObject(n))J.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else J.runInAction(()=>{S.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,i){return J.reaction(()=>this.getValueFromRoot(e),(s,o)=>{n(s,o)},{requiresObservable:!0,fireImmediately:S.get(i,"fireImmediately",!1)})}}class Va{constructor(){E(this,"channels",new Map);E(this,"globalChannel",new dn.default)}getChannel(e){const n=this.channels.get(e);if(n)return n;const i=new dn.default;return this.channels.set(e,i),i}}class za{constructor(e){E(this,"instances",new Map);this.pluginManager=e}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(e=>e.manifest.viz)}resolveComponent(e){return this.pluginManager.factory.viz(e)}getOrCreateInstance(e){const n=this.instances.get(e.id);if(n)return n;const i={id:e.id,name:e.viz.type,type:e.viz.type,messageChannels:new Va,instanceData:new qn(e.viz.conf)};return this.instances.set(e.id,i),i}}function Fn(t,e,n){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new qn({}),colorPalette:{getColor(){return()=>""}},data:e}}const Oa=t=>{const{panel:e,vizManager:n,data:i}=t,s=n.resolveComponent(e.viz.type),o=n.getOrCreateInstance(e),l={...Fn(o,i,n),viewport:{width:e.layout.w,height:e.layout.h}},u=s.viewRender;return r(u,{context:l,instance:o,...S.omit(t,["panel","vizManager","data"])})},Pa=t=>{const{vizManager:e,panel:n,panelInfoEditor:i,data:s}=t,o=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),u={...Fn(l,s,e),panelInfoEditor:i},d=o.configRender;return r(d,{context:u,instance:l,...S.omit(t,["panel","vizManager","data","panelInfoEditor"])})},Rn=(t,e)=>{const n=ze.default.bezier(t),i=ze.default.bezier(e);return function(s){return s<50?n(s*2/100).hex():i((s-50)*2/100).hex()}},Ye=t=>{const e=ze.default.bezier(t);return function(n){return e(n/100).hex()}},qa={type:"interpolation",displayName:"Red / Green",getColor:Rn(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Fa={type:"interpolation",displayName:"Yellow / Blue",getColor:Rn(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ra={type:"interpolation",displayName:"Red",getColor:Ye(["#fff7f1","darkred"]),name:"red",category:"sequential"},Ga={type:"interpolation",displayName:"Green",getColor:Ye(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},La={type:"interpolation",displayName:"Blue",getColor:Ye(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Ba={type:"interpolation",displayName:"Orange",getColor:Ye(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},Na="4.9.0";class $a{constructor(e){E(this,"staticColors",new Map);E(this,"interpolations",new Map);e.installedPlugins.forEach(n=>{n.manifest.color.forEach(i=>{this.register(i)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(e){const n=this.encodeColor(e);e.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.staticColors.set(n,e)):e.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`,`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.interpolations.set(n,e))}decodeStaticColor(e){return this.staticColors.get(e)}encodeColor(e){return`\${${e.category}}.{${e.name}}`}decodeInterpolation(e){return this.interpolations.get(e)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class ja{constructor(){E(this,"plugins",new Map);E(this,"vizComponents",new Map);E(this,"factory",{viz:e=>{const n=this.vizComponents.get(e);if(n)return n;throw new Error(`Viz Component (${e}) not found`)}})}install(e){if(this.plugins.has(e.id))throw new Error(`Plugin (${e.id}) has been installed before`);this.plugins.set(e.id,e);for(const n of e.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Wa{constructor(){E(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n){var o;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(l=>l.version>e.from&&l.version<=e.to),s=S.orderBy(i,"version","asc");if(((o=S.last(s))==null?void 0:o.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return s.reduce((l,u)=>u.handler(l),n)}}class le extends Wa{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,i=>({version:e,...n(i)}))}async migrate({instanceData:e}){const n=await e.getItem(null),i=S.get(n,"version",0),s=this.run({from:i,to:this.VERSION},n);await e.setItem(null,s)}async needMigration({instanceData:e}){const n=await e.getItem(null);return S.get(n,"version",0)<this.VERSION}}const Ct={content:""},F=(t,e)=>{const[n,{setFalse:i}]=B.useBoolean(!0),[s,o]=C.useState();C.useEffect(()=>(t.getItem(e).then(u=>{o(u),i()}),t.watchItem(e,u=>{o(u)})));const l=C.useCallback(async u=>{await t.setItem(e,u),o(u)},[t,e]);return{loading:n,value:s,set:l}};function Gn(t){const e=C.useRef(null);return C.useEffect(()=>{var n,i,s;t&&((s=(i=(n=e.current)==null?void 0:n.editor)==null?void 0:i.clipboard)==null||s.dangerouslyPasteHTML(t))},[t]),e}function Qa({context:t}){const{value:e}=F(t.instanceData,"config"),n=e==null?void 0:e.content,i=Gn(n);return e!=null&&e.content?r(pt.RichTextEditor,{ref:i,readOnly:!0,value:e.content,onChange:S.noop,sx:{border:"none",".ql-editor":{padding:0}}}):null}function Ya({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=C.useMemo(()=>S.defaults({},e,Ct),[e]),{control:s,handleSubmit:o,watch:l,getValues:u}=w.useForm({defaultValues:i});l("content");const d=u(),h=C.useMemo(()=>!S.isEqual(d,e),[d,e]),f=Gn(e==null?void 0:e.content);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:o(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Content"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:r(_.DeviceFloppy,{size:20})})]}),r(w.Controller,{name:"content",control:s,render:({field:m})=>r(cn.default,{ref:f,sx:{flex:1},...S.omit(m,"ref")})})]})})}class Ua extends le{constructor(){super(...arguments);E(this,"VERSION",1)}fixMalformedConfig(n){return S.defaults({},n,Ct)}configVersions(){this.version(1,n=>({version:1,config:this.fixMalformedConfig(n)}))}}const Xa={displayName:"RichText",migrator:new Ua,name:"richText",viewRender:Qa,configRender:Ya,createConfig:()=>Ct},wt={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:{type:"none",config:{}},formatter:{output:"number",mantissa:0}}]};function Ja(t){if("variables"in t)return t;const{align:e,size:n,weight:i,color:s,content:{prefix:o="",data_field:l="value",formatter:u={output:"number",mantissa:0},postfix:d=""}={}}=t;return{align:e,template:`${o} \${value} ${d}`,variables:[{name:"value",data_field:l,aggregation:{type:"none",config:{}},formatter:u,color:s,weight:i,size:n}]}}class Ka extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({config:Ja(n)}))}}const St=C.forwardRef(function({value:e,onChange:n,...i},s){return r(a.TextInput,{ref:s,value:e,onChange:n,...i})}),It={mantissa:0,output:"number",trimMantissa:!1,average:!1};function Za({value:t,onChange:e},n){const i=u=>{e({...t,output:u})},s=u=>{const d=u===0?!1:t.trimMantissa;e({...t,mantissa:u,trimMantissa:d})},o=u=>{e({...t,trimMantissa:u.currentTarget.checked})},l=u=>{e({...t,average:u.currentTarget.checked})};return c(a.Stack,{ref:n,children:[c(a.Group,{grow:!0,children:[r(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:i,sx:{flexGrow:1}}),r(a.Switch,{label:c(a.Stack,{spacing:0,children:[r(a.Text,{children:"Average"}),r(a.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:t.average,onChange:l,disabled:t.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),c(a.Group,{grow:!0,children:[r(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:s}),r(a.Switch,{label:"Trim mantissa",checked:t.trimMantissa,onChange:o,disabled:t.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),c(a.Stack,{spacing:0,children:[r(a.Text,{weight:"bold",children:"Preview"}),r(Ae,{children:c(a.Group,{position:"apart",children:[c(a.Text,{size:12,color:"gray",children:["123456789 ",r(_.ArrowRight,{size:9})," ",se.default(123456789).format(t)]}),c(a.Text,{size:12,color:"gray",children:["1234 ",r(_.ArrowRight,{size:9})," ",se.default(1234).format(t)]}),c(a.Text,{size:12,color:"gray",children:["0.1234 ",r(_.ArrowRight,{size:9})," ",se.default(.1234).format(t)]})]})})]})]})}const Ln=b.default.forwardRef(Za);function Ue(){return{name:U.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:{type:"none",config:{}},formatter:It}}const Ha=[{label:"None",value:"none"},{label:"Sum",value:"sum"},{label:"Mean",value:"mean"},{label:"Median",value:"median"},{label:"Max",value:"max"},{label:"Min",value:"min"},{label:"Quantile(99%, 95%, ...)",value:"quantile"}];function es({label:t,value:e,onChange:n},i){C.useEffect(()=>{typeof e=="string"&&(console.log(e),n({type:e,config:{}}))},[e,n]);const s=l=>{n(l==="quantile"?{type:"quantile",config:{p:.99}}:{type:l,config:{}})},o=l=>{n({type:"quantile",config:{p:l}})};return c(a.Group,{grow:!0,noWrap:!0,pt:"sm",children:[r(a.Select,{ref:i,label:t,data:Ha,value:e.type,onChange:s}),e.type==="quantile"&&r(a.NumberInput,{label:"p",value:e.config.p,onChange:o,precision:2,min:.05,step:.05,max:1})]})}const ts=b.default.forwardRef(es);function ns({label:t,required:e,value:n,onChange:i,data:s,clearable:o=!1,sx:l,...u},d){const h=b.default.useMemo(()=>{if(!Array.isArray(s)||s.length===0)return[];const m=Object.keys(s[0]).map(g=>({label:g,value:g}));return o?m.concat([{label:"unset",value:""}]):m},[s]);return r(a.Select,{ref:d,label:t,data:h,value:n,onChange:i,required:e,sx:l,...u})}const $=b.default.forwardRef(ns);function rs({label:t,value:e,onChange:n},i){const[s,o]=b.default.useState(Array.isArray(e)?[...e]:[]),l=b.default.useCallback(()=>{o(g=>[...g,""])},[o]),u=b.default.useCallback(g=>{o(v=>(v.splice(g,1),[...v]))},[o]),d=b.default.useMemo(()=>!P.default.isEqual(s,e),[s,e]),h=()=>{n(s.map(g=>g.toString()))},f=a.useMantineTheme(),m=b.default.useMemo(()=>Object.entries(f.colors).map(([g,v])=>v[6]),[f]);return c(j,{children:[c(a.Group,{position:"left",ref:i,children:[r(a.Text,{children:t}),r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:h,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Group,{children:[s.map((g,v)=>r(a.ColorInput,{value:g,onChange:D=>{o(k=>(k.splice(v,1,D),[...k]))},swatches:m,rightSection:r(a.ActionIcon,{onClick:()=>u(v),color:"red",children:r(_.Trash,{size:14})}),sx:{width:"45%"}})),r(a.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:r(_.PlaylistAdd,{size:20})})]})]})}const is=b.default.forwardRef(rs);function as({value:t,onChange:e},n){const{colorManager:i}=C.useContext(me),s=b.default.useMemo(()=>i.getStaticColors().map(u=>({label:u.name,group:u.category,value:u.value})),[i]),o=b.default.useMemo(()=>s.some(l=>l.value===t),[t,s]);return c(a.Group,{position:"apart",spacing:4,ref:n,children:[r(a.TextInput,{placeholder:"Set any color",value:o?"":t,onChange:l=>e(l.currentTarget.value),rightSection:r(a.ColorSwatch,{color:o?"transparent":t,radius:4}),variant:o?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),r(a.Text,{sx:{flexGrow:0},children:"or"}),r(a.Select,{data:s,value:t,onChange:e,variant:o?"default":"filled",placeholder:"Pick a theme color",icon:r(a.ColorSwatch,{color:o?t:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const ge=b.default.forwardRef(as),Xe=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function ss({label:t,value:e,onChange:n},i){var l,u;const[s,o]=b.default.useState((u=(l=Xe.find(d=>d.label===e))==null?void 0:l.value)!=null?u:Xe[0].value);return b.default.useEffect(()=>{const d=Xe.find(h=>h.value===s);d&&n(d.label)},[s]),c(a.Stack,{spacing:0,mt:"sm",mb:"lg",children:[r(a.Text,{size:"sm",children:t}),r(a.Slider,{label:null,marks:Xe,value:s,onChange:o,step:25,placeholder:"Pick a font size",ref:i})]})}const os=b.default.forwardRef(ss);function ls({label:t,value:e,onChange:n},i){const[s,o]=b.default.useState(Array.isArray(e)?[...e]:[]),l=b.default.useCallback(()=>{o(f=>[...f,""])},[o]),u=b.default.useCallback(f=>{o(m=>(m.splice(f,1),[...m]))},[o]),d=b.default.useMemo(()=>!P.default.isEqual(s,e),[s,e]),h=()=>{n(s.map(f=>f.toString()))};return c(j,{children:[c(a.Group,{position:"left",ref:i,children:[r(a.Text,{children:t}),r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:h,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Group,{children:[s.map((f,m)=>r(a.TextInput,{value:f,onChange:g=>{const v=g.currentTarget.value;o(D=>(D.splice(m,1,v),[...D]))},rightSection:r(a.ActionIcon,{onClick:()=>u(m),color:"red",children:r(_.Trash,{size:14})}),sx:{width:"45%"}})),r(a.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:r(_.PlaylistAdd,{size:20})})]})]})}const us=b.default.forwardRef(ls),cs=b.default.forwardRef(function({value:e,onChange:n},i){const s=e.color.type,o=(l,u)=>{const d=P.default.cloneDeep(e);P.default.set(d,l,u),n(d)};return c(j,{children:[r(a.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),r(a.Stack,{children:r(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:e.size,onChange:l=>o("size",l.currentTarget.value)})}),r(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:r(os,{label:"Font Weight",value:e.weight,onChange:l=>o("weight",l)})}),r(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),c(a.Stack,{children:[r(a.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:e.color.type,onChange:l=>o("color.type",l)}),s==="static"&&r(ge,{value:e.color.staticColor,onChange:l=>o("color.staticColor",l)}),s==="continuous"&&c(j,{children:[r(us,{label:"Value Range",value:e.color.valueRange,onChange:l=>o("color.valueRange",l)}),r(is,{label:"Color Range",value:e.color.colorRange,onChange:l=>o("color.colorRange",l)})]})]})]})}),Je=b.default.forwardRef(function({value:e,onChange:n,data:i,withStyle:s=!0},o){const l=(u,d)=>{const h=P.default.cloneDeep(e);P.default.set(h,u,d),n(h)};return c(a.Box,{px:"sm",py:"md",ref:o,children:[r(a.Text,{weight:"bold",pb:0,children:e.name}),r(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),c(a.Group,{grow:!0,noWrap:!0,children:[r(a.TextInput,{label:"Name",required:!0,value:e.name,onChange:u=>l("name",u.currentTarget.value)}),r($,{label:"Data Field",required:!0,data:i,value:e.data_field,onChange:u=>l("data_field",u)})]}),r(ts,{label:"Aggregation",value:e.aggregation,onChange:u=>l("aggregation",u)}),r(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),r(Ln,{value:e.formatter,onChange:u=>l("formatter",u)}),s&&r(cs,{value:e,onChange:n})]})});function ds(t){const e=Array.from(t).sort((i,s)=>i-s),n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}function Tt(t,e,n){var s,o,l,u;const i=t.map(d=>d[e]);switch(n.type){case"sum":return P.default.sum(i);case"mean":return P.default.mean(i);case"median":return ds(i);case"max":return(s=P.default.max(i))!=null?s:0;case"min":return(o=P.default.min(i))!=null?o:0;case"quantile":return(l=gi.quantile(i,n.config.p))!=null?l:0;default:return(u=t[0])==null?void 0:u[e]}}var Bn=function(){},Fe=function(){};process.env.NODE_ENV!=="production"&&(Bn=function(t,e){!t&&typeof console<"u"&&console.warn(e)},Fe=function(t,e){if(!t)throw new Error(e)});const ps=(t,e,n)=>Math.min(Math.max(n,t),e),Nn=(t,e,n)=>{const i=e-t;return i===0?1:(n-t)/i},Dt=(t,e,n)=>-n*t+n*e+t,$n=(t,e)=>n=>Math.max(Math.min(n,e),t),Re=t=>t%1?Number(t.toFixed(5)):t,Ke=/(-)?([\d]*\.?[\d])+/g,_t=/(#[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,fs=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function Ge(t){return typeof t=="string"}const Ze={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},jn=Object.assign(Object.assign({},Ze),{transform:$n(0,1)});Object.assign(Object.assign({},Ze),{default:1});const Le=(t=>({test:e=>Ge(e)&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}))("%");Object.assign(Object.assign({},Le),{parse:t=>Le.parse(t)/100,transform:t=>Le.transform(t*100)});const At=(t,e)=>n=>Boolean(Ge(n)&&fs.test(n)&&n.startsWith(t)||e&&Object.prototype.hasOwnProperty.call(n,e)),Wn=(t,e,n)=>i=>{if(!Ge(i))return i;const[s,o,l,u]=i.match(Ke);return{[t]:parseFloat(s),[e]:parseFloat(o),[n]:parseFloat(l),alpha:u!==void 0?parseFloat(u):1}},De={test:At("hsl","hue"),parse:Wn("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:n,alpha:i=1})=>"hsla("+Math.round(t)+", "+Le.transform(Re(e))+", "+Le.transform(Re(n))+", "+Re(jn.transform(i))+")"},hs=$n(0,255),kt=Object.assign(Object.assign({},Ze),{transform:t=>Math.round(hs(t))}),Ce={test:At("rgb","red"),parse:Wn("red","green","blue"),transform:({red:t,green:e,blue:n,alpha:i=1})=>"rgba("+kt.transform(t)+", "+kt.transform(e)+", "+kt.transform(n)+", "+Re(jn.transform(i))+")"};function gs(t){let e="",n="",i="",s="";return t.length>5?(e=t.substr(1,2),n=t.substr(3,2),i=t.substr(5,2),s=t.substr(7,2)):(e=t.substr(1,1),n=t.substr(2,1),i=t.substr(3,1),s=t.substr(4,1),e+=e,n+=n,i+=i,s+=s),{red:parseInt(e,16),green:parseInt(n,16),blue:parseInt(i,16),alpha:s?parseInt(s,16)/255:1}}const Mt={test:At("#"),parse:gs,transform:Ce.transform},He={test:t=>Ce.test(t)||Mt.test(t)||De.test(t),parse:t=>Ce.test(t)?Ce.parse(t):De.test(t)?De.parse(t):Mt.parse(t),transform:t=>Ge(t)?t:t.hasOwnProperty("red")?Ce.transform(t):De.transform(t)},Qn="${c}",Yn="${n}";function ms(t){var e,n,i,s;return isNaN(t)&&Ge(t)&&((n=(e=t.match(Ke))===null||e===void 0?void 0:e.length)!==null&&n!==void 0?n:0)+((s=(i=t.match(_t))===null||i===void 0?void 0:i.length)!==null&&s!==void 0?s:0)>0}function Un(t){typeof t=="number"&&(t=`${t}`);const e=[];let n=0;const i=t.match(_t);i&&(n=i.length,t=t.replace(_t,Qn),e.push(...i.map(He.parse)));const s=t.match(Ke);return s&&(t=t.replace(Ke,Yn),e.push(...s.map(Ze.parse))),{values:e,numColors:n,tokenised:t}}function Xn(t){return Un(t).values}function Jn(t){const{values:e,numColors:n,tokenised:i}=Un(t),s=e.length;return o=>{let l=i;for(let u=0;u<s;u++)l=l.replace(u<n?Qn:Yn,u<n?He.transform(o[u]):Re(o[u]));return l}}const ys=t=>typeof t=="number"?0:t;function vs(t){const e=Xn(t);return Jn(t)(e.map(ys))}const Kn={test:ms,parse:Xn,createTransformer:Jn,getAnimatableNone:vs};function Et(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function Zn({hue:t,saturation:e,lightness:n,alpha:i}){t/=360,e/=100,n/=100;let s=0,o=0,l=0;if(!e)s=o=l=n;else{const u=n<.5?n*(1+e):n+e-n*e,d=2*n-u;s=Et(d,u,t+1/3),o=Et(d,u,t),l=Et(d,u,t-1/3)}return{red:Math.round(s*255),green:Math.round(o*255),blue:Math.round(l*255),alpha:i}}const bs=(t,e,n)=>{const i=t*t,s=e*e;return Math.sqrt(Math.max(0,n*(s-i)+i))},xs=[Mt,Ce,De],Hn=t=>xs.find(e=>e.test(t)),er=t=>`'${t}' is not an animatable color. Use the equivalent color code instead.`,tr=(t,e)=>{let n=Hn(t),i=Hn(e);Fe(!!n,er(t)),Fe(!!i,er(e));let s=n.parse(t),o=i.parse(e);n===De&&(s=Zn(s),n=Ce),i===De&&(o=Zn(o),i=Ce);const l=Object.assign({},s);return u=>{for(const d in l)d!=="alpha"&&(l[d]=bs(s[d],o[d],u));return l.alpha=Dt(s.alpha,o.alpha,u),n.transform(l)}},Cs=t=>typeof t=="number",ws=(t,e)=>n=>e(t(n)),nr=(...t)=>t.reduce(ws);function rr(t,e){return Cs(t)?n=>Dt(t,e,n):He.test(t)?tr(t,e):sr(t,e)}const ir=(t,e)=>{const n=[...t],i=n.length,s=t.map((o,l)=>rr(o,e[l]));return o=>{for(let l=0;l<i;l++)n[l]=s[l](o);return n}},Ss=(t,e)=>{const n=Object.assign(Object.assign({},t),e),i={};for(const s in n)t[s]!==void 0&&e[s]!==void 0&&(i[s]=rr(t[s],e[s]));return s=>{for(const o in i)n[o]=i[o](s);return n}};function ar(t){const e=Kn.parse(t),n=e.length;let i=0,s=0,o=0;for(let l=0;l<n;l++)i||typeof e[l]=="number"?i++:e[l].hue!==void 0?o++:s++;return{parsed:e,numNumbers:i,numRGB:s,numHSL:o}}const sr=(t,e)=>{const n=Kn.createTransformer(e),i=ar(t),s=ar(e);return i.numHSL===s.numHSL&&i.numRGB===s.numRGB&&i.numNumbers>=s.numNumbers?nr(ir(i.parsed,s.parsed),n):(Bn(!0,`Complex values '${t}' and '${e}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),l=>`${l>0?e:t}`)},Is=(t,e)=>n=>Dt(t,e,n);function Ts(t){if(typeof t=="number")return Is;if(typeof t=="string")return He.test(t)?tr:sr;if(Array.isArray(t))return ir;if(typeof t=="object")return Ss}function Ds(t,e,n){const i=[],s=n||Ts(t[0]),o=t.length-1;for(let l=0;l<o;l++){let u=s(t[l],t[l+1]);if(e){const d=Array.isArray(e)?e[l]:e;u=nr(d,u)}i.push(u)}return i}function _s([t,e],[n]){return i=>n(Nn(t,e,i))}function As(t,e){const n=t.length,i=n-1;return s=>{let o=0,l=!1;if(s<=t[0]?l=!0:s>=t[i]&&(o=i-1,l=!0),!l){let d=1;for(;d<n&&!(t[d]>s||d===i);d++);o=d-1}const u=Nn(t[o],t[o+1],s);return e[o](u)}}function ks(t,e,{clamp:n=!0,ease:i,mixer:s}={}){const o=t.length;Fe(o===e.length,"Both input and output ranges must be the same length"),Fe(!i||!Array.isArray(i)||i.length===o-1,"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values."),t[0]>t[o-1]&&(t=[].concat(t),e=[].concat(e),t.reverse(),e.reverse());const l=Ds(e,i,s),u=o===2?_s(t,l):As(t,l);return n?d=>u(ps(t[0],t[o-1],d)):u}class Ms{constructor({valueRange:e,colorRange:n}){E(this,"mapper");this.mapper=ks(e,n)}getColor(e){return this.mapper(e)}}function Es(t){return t===null?"null":t===void 0?"undefined":Array.isArray(t)?`Array(${t.length})`:t.toString()}function or({data_field:t,aggregation:e},n){return Tt(n,t,e)}function et({formatter:t},e){return["string","number"].includes(typeof e)?se.default(e).format(t):Es(e)}function Vs(t,e){return t.type==="static"?t.staticColor:t.type==="continuous"?new Ms(t).getColor(e):"black"}function zs(t,e){const n={};return t.forEach(i=>{const{name:s,color:o,data_field:l,aggregation:u,size:d,weight:h}=i,f=Tt(e,l,u),m=et(i,f);n[s]=r(a.Text,{sx:{fontSize:d,display:"inline"},color:Vs(o,f),weight:h,children:m})}),n}function Os(t){return t.split(" ").map(e=>c(j,{children:[e,"\xA0"]}))}function Ps(t){const n=t.replaceAll("<br />","<br/>").replaceAll(`
40
- `,"<br/>").split("<br/>");return n.map((s,o)=>{const l=[Os(s)];return o!==n.length-1&&l.push(r("br",{})),l}).flat().filter(s=>s!==void 0)}function Vt(t){return Ps(t)}function zt(t,e,n){const i=zs(e,n),s=/^\{(.+)\}(.*)$/;return t.split("$").map(o=>{var h;const l=s.exec(o);if(!l)return Vt(o);const u=i[l[1]];if(!u)return Vt(o);const d=(h=l[2])!=null?h:"";return c(j,{children:[u,Vt(d)]})})}function qs(t,e){const n={};return t.forEach(i=>{const{name:s,data_field:o,aggregation:l}=i,u=Tt(e,o,l);n[s]=et(i,u)}),n}function lr(t,e,n){const i=qs(e,n),s=/^\{(.+)\}(.*)$/;return t.split("$").map(o=>{var h;const l=s.exec(o);if(!l)return o;const u=i[l[1]];if(!u)return o;const d=(h=l[2])!=null?h:"";return`${u}${d}`}).join("")}function Fs({context:t}){const{value:e=wt}=F(t.instanceData,"config"),{template:n,variables:i,align:s}=e,o=C.useMemo(()=>zt(n,i,t.data),[n,i,t.data]);return r(a.Text,{align:s,children:Object.values(o).map(l=>l)})}function Rs({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Gs({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"variables"}),l=e("variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[u.map((h,f)=>r(Rs,{control:t,index:f,remove:o,data:n},h.name)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}function Ls({context:t}){const e=t.data||[],{value:n,set:i}=F(t.instanceData,"config"),s=b.default.useMemo(()=>{const{align:g,template:v="",variables:D=[]}=S.defaultsDeep({},n,wt);return{variables:D,template:v,align:g}},[n]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});b.default.useEffect(()=>{h(s)},[s]),u(["variables","template"]);const f=d(),m=b.default.useMemo(()=>!P.default.isEqual(f,n),[f,n]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(i),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{weight:500,children:"Stats Configurations"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),r(w.Controller,{name:"template",control:o,render:({field:g})=>r(St,{label:"Template",py:"md",sx:{flexGrow:1},...g})}),r(a.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),r(Gs,{control:o,watch:u,data:e})]})})}const Bs={createConfig(){return{version:1,config:wt}},displayName:"Stats",migrator:new Ka,name:"stats",viewRender:Fs,configRender:Ls};var we=(t=>(t.string="string",t.number="number",t.eloc="eloc",t.percentage="percentage",t))(we||{});const tt={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!1,verticalSpacing:"1em"},Ns=({vizManager:t,instance:e})=>B.useCreation(()=>new vr(e,t.resolveComponent(e.type),Wt),[e,t]),$s=(t,e)=>{const[n,i]=C.useState([]);return C.useEffect(()=>t.watchTriggerSnapshotList(s=>i(s.filter(o=>o.schemaRef===e))),[]),n};function ur(t,e,n){return Math.min(Math.max(t,e),n)}class js{constructor(e){this.steps=e;const n=[],i=new Set;for(const s of e)i.has(s.to)||(n.push(s),i.add(s.to));if(n.sort((s,o)=>s.from-o.from),n.length<2)throw new Error("MultiStepValueMapper requires at least 2 steps");this.steps=n}getLinearFunction(e,n){const i=(n.to-e.to)/(n.from-e.from),s=e.to-i*e.from;return o=>i*o+s}getStepFunctionForValue(e){let n=S.findLastIndex(this.steps,i=>i.from<=e);return n=ur(n,0,this.steps.length-2),this.getLinearFunction(this.steps[n],this.steps[n+1])}mapValue(e){return ur(this.getStepFunctionForValue(e)(e),0,100)}}function Ws(t,e){if(t==null)return{};var n={},i=Object.keys(t),s,o;for(o=0;o<i.length;o++)s=i[o],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}function cr(t,e){if(t==null)return{};var n=Ws(t,e),i,s;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(s=0;s<o.length;s++)i=o[s],!(e.indexOf(i)>=0)&&(!Object.prototype.propertyIsEnumerable.call(t,i)||(n[i]=t[i]))}return n}var Qs=["size","color","stroke"];function Ys(t){var e=t.size,n=e===void 0?24:e,i=t.color,s=i===void 0?"currentColor":i,o=t.stroke,l=o===void 0?2:o,u=cr(t,Qs);return c("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-arrow-down",width:n,height:n,viewBox:"0 0 24 24",strokeWidth:l,stroke:s,fill:"none",strokeLinecap:"round",strokeLinejoin:"round",...u,children:[r("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),r("line",{x1:12,y1:5,x2:12,y2:19}),r("line",{x1:18,y1:13,x2:12,y2:19}),r("line",{x1:6,y1:13,x2:12,y2:19})]})}var Us=["size","color","stroke"];function Xs(t){var e=t.size,n=e===void 0?24:e,i=t.color,s=i===void 0?"currentColor":i,o=t.stroke,l=o===void 0?2:o,u=cr(t,Us);return c("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-arrow-up",width:n,height:n,viewBox:"0 0 24 24",strokeWidth:l,stroke:s,fill:"none",strokeLinecap:"round",strokeLinejoin:"round",...u,children:[r("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),r("line",{x1:12,y1:5,x2:12,y2:19}),r("line",{x1:18,y1:11,x2:12,y2:5}),r("line",{x1:6,y1:11,x2:12,y2:5})]})}const Js=({header:t,cx:e})=>c(a.Text,{className:e("table-head-cell",{"table-head-cell--sortable":t.column.getCanSort()}),onClick:t.column.getToggleSortingHandler(),children:[t.isPlaceholder?null:_e.flexRender(t.column.columnDef.header,t.getContext()),r(Ks,{direction:t.column.getIsSorted()})]}),Ks=({direction:t})=>{switch(t){case"asc":return r(Xs,{size:16});case"desc":return r(Ys,{size:"1em"});default:return null}},Ot={id:"builtin:table:click-cell-content",displayName:"Click Cell Content",nameRender:no,configRender:eo,payload:[{name:"row_index",description:"Index of the row that the cell belongs to",valueType:"number"},{name:"col_index",description:"Index of the column that the cell belongs to",valueType:"number"},{name:"row_data",description:"Data of the row that the cell belongs to",valueType:"object"}]},Zs={column:""};function dr(t){const{value:e}=F(t.instanceData,"config");return e?e.columns.map((n,i)=>({label:n.label,value:i.toString()})):[]}function Hs(t){return S.isEmpty(t)?[]:Object.keys(t[0]).map(e=>({label:e,value:e}))}function eo(t){const e=dr(t.instance),n=Hs(t.sampleData),i=e.length>0?e:n,{value:s,set:o}=F(t.trigger.triggerData,"config"),{column:l}=S.defaults({},s,Zs),u=d=>{isNaN(+d)?o({column:d}):o({column:+d})};return r(a.Select,{clearable:!1,data:i,label:"Choose a column",value:l.toString(),onChange:u})}function to(t,e){return t?S.isNumber(t.column)?`Click cell of ${e[t.column].label}`:`Click cell of ${t.column}`:"Click cell content (click to config)"}function no(t){const e=dr(t.instance),{value:n}=F(t.trigger.triggerData,"config");return r(a.Text,{children:to(n,e)})}const ro=a.createStyles(t=>({root:{overflow:"auto","& .table-head-cell":{display:"flex",flexFlow:"row nowrap",alignItems:"center",whiteSpace:"nowrap","&.table-head-cell--sortable":{cursor:"pointer",userSelect:"none"}},"&.table-highlight-on-hover tr":{transition:"background-color 0.2s","&:hover":{backgroundColor:t.colorScheme==="dark"?t.colors.dark[5]:t.colors.gray[0]}}},thead:{background:t.colorScheme==="dark"?t.colors.dark[7]:t.white,position:"sticky",top:0}})),io=a.createStyles((t,e)=>({content:{display:"flex",alignItems:"center",justifyContent:"flex-start",".table-cell-text":{whiteSpace:"nowrap",marginLeft:t.spacing.xs,cursor:e.clickable?"pointer":"default",textDecoration:e.clickable?"underline":"none"}}}));function ao(t){return t?ze.default(t).oklch()[0]>.7?"black":"white":"inherit"}function so(t){const e=t.tableCellContext.bgColor;return{backgroundColor:e,color:ao(e)}}function nt(t){const e=t.tableCellContext.isClickable(),n=io({clickable:e});return r("div",{className:n.classes.content,style:{...so(t)},children:r(a.Text,{className:"table-cell-text",onClick:t.tableCellContext.getClickHandler(),children:r("span",{children:t.children})})})}function oo(t){return r(nt,{...t,children:t.value})}function lo(t){return r(nt,{...t,children:t.value})}function uo(t){const e=se.default(t.value).format({thousandSeparated:!0});return r(nt,{...t,children:e})}function co(t){const e=se.default(t.value).format({output:"percent",mantissa:3});return r(nt,{...t,children:e})}function po(t){switch(t.type){case we.string:return r(oo,{...t});case we.eloc:return r(lo,{...t});case we.number:return r(uo,{...t});case we.percentage:return r(co,{...t})}}const fo=t=>{const e=Ns(t),n=$s(e.triggerManager,Ot.id),{colorManager:i}=C.useContext(me);return C.useCallback(s=>new go(t.getColIndex,s,n,e,i),[n,e,t.getColIndex])};function ho({context:t,instance:e}){var at,je,st;const n=(at=t.data)!=null?at:[],{height:i,width:s}=t.viewport,{value:o=tt}=F(t.instanceData,"config"),{use_raw_columns:l,columns:u,...d}=o,{classes:h,cx:f}=ro(),m=b.default.useMemo(()=>l?Object.keys(n[0]).map(ee=>({label:ee,value_field:ee,value_type:we.string})):u,[l,u,n]),g=fo({getColIndex:C.useCallback(ee=>m.indexOf(ee.column.columnDef.meta),[m]),vizManager:t.vizManager,instance:e}),v=C.useMemo(()=>{const ee=_e.createColumnHelper(),ce=m.map(ne=>ee.accessor(ne.value_field,{cell:Se=>r(po,{tableCellContext:g(Se.cell),value:Se.getValue(),type:ne.value_type}),header:ne.label,enableSorting:!0,meta:ne}));return[ee.display({id:"#index",cell:ne=>ne.row.index+1,header:"#",size:10*(n.length.toString().length+1)}),...ce]},[m,g]),[D,k]=C.useState([]),V=_e.useReactTable({data:n,state:{sorting:D},onSortingChange:k,columns:v,getCoreRowModel:_e.getCoreRowModel(),getSortedRowModel:_e.getSortedRowModel()}),{rows:L}=V.getRowModel(),G=b.default.useRef(null),ue=mi.useVirtual({parentRef:G,size:L.length,estimateSize:C.useCallback(()=>28,[]),overscan:20}),{virtualItems:H,totalSize:Ne}=ue,Me=H.length>0&&((je=H==null?void 0:H[0])==null?void 0:je.start)||0,$e=H.length>0?Ne-(((st=H==null?void 0:H[H.length-1])==null?void 0:st.end)||0):0;return r("div",{ref:G,style:{height:i,width:s},className:f(h.root,{"table-highlight-on-hover":o.highlightOnHover}),children:c(a.Table,{sx:{maxHeight:i},...d,striped:o.striped,children:[r("thead",{className:h.thead,children:V.getHeaderGroups().map(ee=>r("tr",{children:ee.headers.map(ce=>r("th",{style:{width:ce.getSize()},children:r(Js,{header:ce,cx:f})},ce.id))},ee.id))}),c("tbody",{children:[Me>0&&r("tr",{children:r("td",{style:{height:`${Me}px`}})}),H.map(ee=>{const ce=L[ee.index];return r("tr",{children:ce.getVisibleCells().map(te=>r("td",{children:_e.flexRender(te.column.columnDef.cell,te.getContext())},te.id))},ce.id)}),$e>0&&r("tr",{children:r("td",{style:{height:`${$e}px`}})})]})]})})}class go{constructor(e,n,i,s,o){this.getColIndex=e,this.cell=n,this.triggers=i,this.interactionManager=s,this.colorManager=o}getClickHandler(){const e=this.getRelatedTrigger();if(e.length!==0)return()=>{const n={row_data:this.cell.row.original,row_index:this.cell.row.index,col_index:this.getColIndex(this.cell)};for(const i of e)this.interactionManager.runInteraction(i.id,n)}}getRelatedTrigger(){return this.triggers.filter(n=>n.schemaRef===Ot.id).filter(n=>{const i=this.getColIndex(this.cell),s=S.get(this.cell.column.columnDef.meta,"value_field"),o=S.get(n.config,"column");return o==i||o==s})}isClickable(){return this.getRelatedTrigger().length>0}get columnConf(){return this.cell.column.columnDef.meta}get bgColor(){const e=this.columnConf.cellBackgroundColor;if(!e||e==="none")return;if(S.isString(e))return e;const n=+this.cell.getValue();if(isFinite(n)){const i=this.colorManager.decodeInterpolation(e.interpolation),o=new js(e.steps).mapValue(n);return i==null?void 0:i.getColor(o)}}}const pr=a.createStyles(()=>({palette:{display:"flex",flexFlow:"row nowrap"},paletteItem:{".palette-value":{height:24,overflow:"visible",width:36},".palette-item":{width:"36px",height:36*.618,cursor:"pointer",transition:"transform 100ms ease-in-out","&:hover":{boxShadow:"0 0 0 2px var(--shadow-color)",borderRadius:2,transform:"scale(1.2)"}}}})),mo=[{from:0,to:0},{from:100,to:100}];class yo{constructor(){E(this,"steps",new Map);E(this,"interpolation");E(this,"onChange");J.makeAutoObservable(this,{steps:J.observable},{deep:!1}),J.reaction(()=>J.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(e){for(const n of e)this.steps.set(n.to,n.from)}notifyStepChange(){var e;(e=this.onChange)==null||e.call(this,Array.from(this.steps.entries()).map(([n,i])=>({to:n,from:i})).sort((n,i)=>n.to-i.to||n.from-i.from))}fromProps(e){e.steps.length<2?this.setSteps(mo):this.setSteps(e.steps),this.interpolation=e.interpolation,this.onChange=e.onChange}changeStep(e,n){e==null?this.steps.delete(n):this.steps.set(n,e)}getStepFromValue(e){return this.steps.get(e)}}function vo(t){const{onChange:e,color:n,index:i,value:s}=t,{classes:o}=pr(),[l,u]=C.useState(s),[d,{setTrue:h,setFalse:f}]=B.useBoolean(!1),m=i%2===1,g=m&&s!=null,v=!m&&s!=null,D=`map ${s} to color ${i}`,k=()=>{u(s),f()},V=()=>{f(),e==null||e(l)},L=se.default(s).format({average:!0});return c("div",{"data-testid":`palette-item-${i}`,className:o.paletteItem,children:[r(a.Text,{title:D,style:{opacity:g?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:L}),c(a.Popover,{width:200,trapFocus:!0,opened:d,onClose:f,children:[r(a.Popover.Target,{children:r("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:h,style:{"--shadow-color":ze.default(n).alpha(.5).hex(),backgroundColor:n}})}),r(a.Popover.Dropdown,{children:c(a.Stack,{children:[r(a.NumberInput,{size:"xs",label:"Map a value to this color",value:l,onChange:u}),c(a.Group,{position:"right",children:[r(a.Button,{variant:"subtle",size:"xs",onClick:k,children:"Cancel"}),r(a.Button,{"data-testid":"palette-item-ok",size:"xs",onClick:V,children:"OK"})]})]})})]}),r(a.Text,{title:D,style:{opacity:v?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:L})]})}const bo=A.observer(({model:t})=>{const{classes:e}=pr(),n=S.range(0,13,1).map(i=>100/12*i).map(i=>[t.interpolation.getColor(i),i]);return r("div",{className:e.palette,children:n.map(([i,s],o)=>r(vo,{index:o,color:i,value:t.getStepFromValue(s),onChange:l=>t.changeStep(l,s)},i))})}),xo=A.observer(function(e){const n=B.useCreation(()=>new yo,[]);return C.useEffect(()=>{n.fromProps(e)}),n.interpolation==null?null:r(bo,{model:n})}),Co=t=>{const{value:e,onChange:n,colorManager:i}=t,s=i.getColorInterpolations(),[o,l]=C.useState(e),u=i.decodeInterpolation(o.interpolation)||s[0],[d,{setTrue:h,setFalse:f}]=B.useBoolean(),m=s.map(V=>({label:V.displayName,value:i.encodeColor(V),group:V.category}));function g(V){V&&l(L=>({...L,interpolation:V}))}const v=()=>{f(),n==null||n(J.toJS(o))};function D(V){l(L=>({...L,steps:V}))}const k=()=>{f(),l(e)};return c(j,{children:[r(a.Button,{variant:"outline",onClick:h,children:u==null?void 0:u.displayName}),r(a.Modal,{size:508,title:"Setup color interpolation",opened:d,onClose:f,children:d&&c(a.Stack,{"data-testid":"color-interpolation-modal",children:[r(a.Select,{label:"Color style",value:o.interpolation,data:m,onChange:g}),r(xo,{steps:o.steps,interpolation:u,onChange:D}),c(a.Group,{position:"right",children:[r(a.Button,{onClick:k,variant:"subtle",children:"Cancel"}),r(a.Button,{onClick:v,children:"OK"})]})]})})]})},wo=["static","interpolation","none"],So=[{from:0,to:0},{from:100,to:100}];function fr(t){return t?S.isString(t)?t==="none"?"none":"static":"interpolation":"none"}function Io(t,e){var n;return fr(e)==="static"?e:(n=t.getStaticColors()[0])==null?void 0:n.value}function To(t,e){return S.isObject(e)?e:{steps:So,interpolation:t.encodeColor(t.getColorInterpolations()[0])}}const Do=t=>{const{colorManager:e}=C.useContext(me),[n,i]=C.useState(fr(t.value)),[s,o]=C.useState(Io(e,t.value)),l=B.useLatest(s),[u,d]=C.useState(To(e,t.value)),h=B.useLatest(u),f=v=>{var D,k,V;i(v||"none"),v==="static"?(D=t.onChange)==null||D.call(t,l.current):v==="none"||!v?(k=t.onChange)==null||k.call(t,"none"):(V=t.onChange)==null||V.call(t,h.current)},m=v=>{var D;o(v),(D=t.onChange)==null||D.call(t,v)},g=v=>{var D;d(v),(D=t.onChange)==null||D.call(t,v)};return c(a.Group,{align:"end",children:[r(a.Select,{label:"Cell background",value:n||"none",onChange:f,data:wo}),n==="static"&&r(ge,{value:s,onChange:m}),n==="interpolation"&&r(Co,{colorManager:e,value:u,onChange:g})]})},_o=Object.values(we).map(t=>({label:t,value:t}));function Ao({label:t,value:e,onChange:n,sx:i}){return r(a.Select,{label:t,data:_o,value:e,onChange:n,sx:i})}function ko({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=ht.useForm({initialValues:tt});C.useEffect(()=>{const l=S.defaults({},e,i.values,tt);e&&i.setValues(l)},[e]);const s=t.data||[],o=()=>i.insertListItem("columns",{label:U.randomId(),value_field:"value",value_type:we.string});return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:i.onSubmit(async l=>{await n(l)}),children:[c(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[r(a.Text,{children:"Table Config"}),r(a.ActionIcon,{type:"submit","aria-label":"save config",mr:5,variant:"filled",color:"blue",children:r(_.DeviceFloppy,{size:20})})]}),c(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r($,{label:"ID Field",required:!0,data:s,...i.getInputProps("id_field")}),c(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[r(a.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i.getInputProps("horizontalSpacing")}),r(a.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i.getInputProps("verticalSpacing")})]}),r(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:r(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i.getInputProps("fontSize")})}),c(a.Stack,{children:[r(a.Text,{children:"Other"}),c(a.Group,{position:"apart",grow:!0,children:[r(a.Switch,{label:"Striped",...i.getInputProps("striped",{type:"checkbox"})}),r(a.Switch,{label:"Highlight on hover",...i.getInputProps("highlightOnHover",{type:"checkbox"})})]})]})]}),c(a.Stack,{mt:"xs",spacing:"xs",p:"md",mb:"xl",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r(a.Switch,{label:"Use Original Data Columns",...i.getInputProps("use_raw_columns",{type:"checkbox"})}),!i.values.use_raw_columns&&c(a.Stack,{children:[r(a.Text,{mt:"xl",mb:0,children:"Custom Columns"}),i.values.columns.map((l,u)=>c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{position:"apart",grow:!0,children:[r(a.TextInput,{label:"Label",required:!0,id:`col-label-${u}`,sx:{flex:1},...i.getInputProps(`columns.${u}.label`)}),r($,{label:"Value Field",required:!0,data:s,...i.getInputProps(`columns.${u}.value_field`)}),r(Ao,{label:"Value Type",sx:{flex:1},...i.getInputProps(`columns.${u}.value_type`)}),r(Do,{...i.getInputProps(`columns.${u}.cellBackgroundColor`)})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i.removeListItem("columns",u),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},u)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:o,children:"Add a Column"})})]})]}),r(a.Text,{weight:500,mb:"md",children:"Current Configuration:"}),r(Ie.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(i.values,null,2)})]})})}class Mo extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Pt={createConfig(){return{version:1,config:S.cloneDeep(tt)}},displayName:"Table",migrator:new Mo,name:"table",viewRender:ho,configRender:ko,triggers:[Ot]},qt={label_field:"",value_field:""};X.use([de.SunburstChart,ve.CanvasRenderer]);const Eo={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function Vo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{label_field:o,value_field:l}=S.defaults({},e,qt),u=C.useMemo(()=>n.map(m=>({name:m[o],value:Number(m[l])})),[n,o,l]),d=C.useMemo(()=>{var m,g;return(g=(m=S.maxBy(u,v=>v.value))==null?void 0:m.value)!=null?g:1},[u]),h=C.useMemo(()=>({series:{label:{formatter:({name:m,value:g})=>g/d<.2?" ":m}}}),[d]),f=S.merge({},Eo,h,{series:{data:u}});return r(be.default,{echarts:X,option:f,style:{width:i,height:s}})}function zo({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),{label_field:i,value_field:s}=S.defaults({},e,qt),o=t.data,l=ht.useForm({initialValues:{label_field:i,value_field:s}});return C.useEffect(()=>{l.setValues({label_field:i,value_field:s})},[i,s]),r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l.onSubmit(n),children:[c(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[r(a.Text,{children:"Sunburst Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:r(_.DeviceFloppy,{size:20})})]}),c(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r($,{label:"Label Field",required:!0,data:o,...l.getInputProps("label_field")}),r($,{label:"Value Field",required:!0,data:o,...l.getInputProps("value_field")})]})]})})}class Oo extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Po={displayName:"Sunburst",migrator:new Oo,name:"sunburst",viewRender:Vo,configRender:zo,createConfig:()=>qt},Ft={label_field:"",value_field:""};X.use([de.PieChart,ve.CanvasRenderer]);const qo={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
41
- {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 Fo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{label_field:o,value_field:l}=S.defaults({},e,Ft),u=C.useMemo(()=>n.map(f=>({name:f[o],value:Number(f[l])})),[n,o,l]),d=C.useMemo(()=>({series:{labelLayout:function(f){const m=f.labelRect.x<i/2,g=f.labelLinePoints;return S.set(g,[2,0],m?f.labelRect.x:f.labelRect.x+f.labelRect.width),{labelLinePoints:g}}}}),[i]),h=S.merge({},qo,d,{series:{data:u}});return r(be.default,{echarts:X,option:h,style:{width:i,height:s}})}function Ro({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),{label_field:i,value_field:s}=S.defaults({},e,Ft),o=t.data,l=ht.useForm({initialValues:{label_field:i,value_field:s}});return C.useEffect(()=>{l.setValues({label_field:i,value_field:s})},[i,s]),r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l.onSubmit(n),children:[c(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[r(a.Text,{children:"Pie Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:r(_.DeviceFloppy,{size:20})})]}),c(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r($,{label:"Label Field",required:!0,data:o,...l.getInputProps("label_field")}),r($,{label:"Value Field",required:!0,data:o,...l.getInputProps("value_field")})]})]})})}class Go extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Lo={displayName:"Pie Chart",migrator:new Go,name:"pie",viewRender:Fo,configRender:Ro,createConfig:()=>Ft},Rt={x_axis_data_key:"",y_axis_data_key:"",z_axis_data_key:"",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}};X.use([N.GridComponent,N.VisualMapComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function Bo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:d,yAxis3D:h,zAxis3D:f}=S.defaults({},e,Rt),m=C.useMemo(()=>{const D=S.minBy(n,k=>k[u]);return S.get(D,u)},[n,u]),g=C.useMemo(()=>{const D=S.maxBy(n,k=>k[u]);return S.get(D,u)},[n,u]),v={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:m,max:g,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:d,yAxis3D:h,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:n.map(D=>[D[o],D[l],D[u]])}]};return e?r(be.default,{echarts:X,option:v,style:{width:i,height:s}}):null}function No({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=S.defaults({},e,Rt),{control:o,handleSubmit:l,reset:u}=w.useForm({defaultValues:s});return C.useEffect(()=>{u(s)},[e]),e?r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[r(a.Text,{children:"X Axis"}),c(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r(w.Controller,{name:"x_axis_data_key",control:o,render:({field:d})=>r($,{label:"Data Field",required:!0,data:i,...d})}),r(w.Controller,{name:"xAxis3D.name",control:o,render:({field:d})=>r(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),r(a.Text,{mt:"lg",children:"Y Axis"}),c(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r(w.Controller,{name:"y_axis_data_key",control:o,render:({field:d})=>r($,{label:"Data Field",required:!0,data:i,...d})}),r(w.Controller,{name:"yAxis3D.name",control:o,render:({field:d})=>r(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),r(a.Text,{mt:"lg",children:"Z Axis"}),c(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r(w.Controller,{name:"z_axis_data_key",control:o,render:({field:d})=>r($,{label:"Data Field",required:!0,data:i,...d})}),r(w.Controller,{name:"zAxis3D.name",control:o,render:({field:d})=>r(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),r(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:c(a.Button,{color:"blue",type:"submit",children:[r(_.DeviceFloppy,{size:20}),r(a.Text,{ml:"md",children:"Save"})]})})]})}):null}class $o extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const jo={displayName:"Bar Chart (3D)",migrator:new $o,name:"bar-3d",viewRender:Bo,configRender:No,createConfig:()=>Rt},Gt={x_axis:{name:"X Axis",data_key:""},y_axis:{name:"Y Axis",data_key:"value"},color:"#228be6",variables:[],reference_lines:[]};X.use([N.DataZoomComponent,de.BoxplotChart,N.MarkLineComponent,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function Wo(t,e,n){const i=e.reduce((s,o)=>{const l=or(o,n);return s[o.name]=et(o,l),s},{});return t.map(s=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:s.name,yAxis:Number(i[s.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return lr(s.template,e,n)},position:"insideEndTop"}}}))}function Qo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{x_axis:o,y_axis:l,color:u,variables:d,reference_lines:h}=S.defaults({},e,Gt),{xAxisData:f,boxplotData:m}=C.useMemo(()=>{const v=P.default.groupBy(n,o.data_key);return{xAxisData:Object.keys(v),boxplotData:Object.values(v).map(D=>D.map(k=>k[l.data_key]))}},[n,o.data_key,l.data_key]),g={dataset:[{source:m},{transform:{type:"boxplot",config:{itemNameFormatter:function(v){var D;return(D=f[v.value])!=null?D:v.value}}}}],dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",name:o.name}],yAxis:[{name:l.name}],series:[{name:l.name,type:"boxplot",itemStyle:{color:u,borderColor:"#454545"},boxWidth:[10,40],datasetIndex:1},...Wo(h,d,n)]};return!e||!i||!s?null:r(be.default,{echarts:X,option:g,style:{width:i,height:s}})}function Yo({control:t,index:e,remove:n,variableOptions:i}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`reference_lines.${e}.name`,control:t,render:({field:s})=>r(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:`reference_lines.${e}.variable_key`,control:t,render:({field:s})=>r(a.Select,{label:"Value",required:!0,data:i,sx:{flex:1},...s})})]}),r(w.Controller,{name:`reference_lines.${e}.template`,control:t,render:({field:s})=>r(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Uo({control:t,watch:e}){const{fields:n,append:i,remove:s}=w.useFieldArray({control:t,name:"reference_lines"}),o=e("reference_lines"),l=n.map((f,m)=>({...f,...o[m]})),u=()=>i({name:"",template:"",variable_key:""}),d=e("variables"),h=C.useMemo(()=>d.map(f=>({label:f.name,value:f.name})),[d]);return c(a.Stack,{children:[l.map((f,m)=>r(Yo,{control:t,index:m,remove:s,variableOptions:h})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:u,children:"Add a Reference Line"})})]})}function Xo({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,withStyle:!1,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Jo({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"variables"}),l=e("variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[u.map((h,f)=>r(Xo,{control:t,index:f,remove:o,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}function Ko({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaults({},e,Gt),[e]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});C.useEffect(()=>{h(s)},[s]),u(["x_axis","y_axis","reference_lines","color"]);const f=d(),m=C.useMemo(()=>!S.isEqual(f,e),[f,e]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Accordion,{defaultValue:"Axis",children:[c(a.Accordion.Item,{value:"Axis",children:[r(a.Accordion.Control,{children:"Axis"}),c(a.Accordion.Panel,{children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"x_axis.data_key",control:o,render:({field:g})=>r($,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"y_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"y_axis.data_key",control:o,render:({field:g})=>r($,{label:"Y Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]})]})]}),c(a.Accordion.Item,{value:"Style",children:[r(a.Accordion.Control,{children:"Style"}),r(a.Accordion.Panel,{children:c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:"color",control:o,render:({field:g})=>r(ge,{...g})})]})})]}),c(a.Accordion.Item,{value:"Advanced",children:[r(a.Accordion.Control,{children:c(a.Group,{position:"apart",children:["Advanced",r(a.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),r(a.Accordion.Panel,{children:c(a.Tabs,{defaultValue:"variables",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"variables",children:"Variables"}),r(a.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"})]}),r(a.Tabs.Panel,{value:"variables",pt:"xs",children:r(Jo,{control:o,watch:u,data:i})}),r(a.Tabs.Panel,{value:"reference_lines",pt:"xs",children:r(Uo,{control:o,watch:u})})]})})]})]})]})})}class Zo extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Ho={displayName:"Boxplot",migrator:new Zo,name:"boxplot",viewRender:Qo,configRender:Ko,createConfig:()=>Gt};function el(t){const e=t.y_axes.some(n=>!!n.name);return{bottom:t.x_axis_name?40:25,top:e?30:10}}function tl({regressions:t=[]},e){const n=[],i=[],s=[];return e.length===0?{regressionDataSets:n,regressionSeries:i,regressionXAxes:s}:(t.forEach(({transform:o,plot:l,name:u,y_axis_data_key:d})=>{const h=`x-axis-for-${u}`,f=`dataset-for-${u}--raw`,m=`dataset-for-${u}--transformed`;n.push({id:f,source:e.map((g,v)=>[v,Number(g[d])])}),n.push({transform:o,id:m,fromDatasetId:f}),i.push({...l,name:u,datasetId:m,xAxisId:h,showSymbol:!1,tooltip:{show:!1}}),s.push({type:"category",id:h,datasetId:m,show:!1})}),{regressionDataSets:n,regressionSeries:i,regressionXAxes:s})}function nl(t,e,n,i){const s=e.map(o=>[o[n],o[i]]);return P.default.unionBy(s,t,0)}function rl(t,e,n){const i=e.reduce((s,o)=>{const l=or(o,n);return s[o.name]=et(o,l),s},{});return t.map(s=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:s.name,yAxis:Number(i[s.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return lr(s.template,e,n)},position:"insideEndTop"}}}))}function il({x_axis_data_key:t},{y_axis_data_key:e,yAxisIndex:n,label_position:i,name:s,group_by_key:o,stack:l,color:u,...d},h,f,m){const g={label:{show:!!i,position:i,formatter:m[n!=null?n:"default"]},name:s,xAxisId:"main-x-axis",yAxisIndex:n,stack:l,color:u,...d};if(!o)return g.data=f.map(D=>D[e]),g;const v=S.groupBy(f,o);return Object.entries(v).map(([D,k])=>{const V=S.cloneDeep(g);return V.data=nl(h,k,t,e),V.name=D,V.color=void 0,V})}function al(t,e,n,i){const s=e.map(l=>[l,0]);return t.series.map(l=>il(t,l,s,n,i)).flat().concat(rl(t.reference_lines,t.variables,n))}function sl(t,e){const n=t.series.reduce((i,{yAxisIndex:s,name:o})=>(i[o]=s,i),{});return{formatter:function(i){const s=Array.isArray(i)?i:[i];if(s.length===0)return"";const o=s.map(({seriesName:l,value:u})=>{var f;if(Array.isArray(u)&&u.length===2&&(u=u[1]),!l)return u;const d=n[l],h=(f=e[d])!=null?f:e.default;return`${l}: <strong>${h({value:u})}</strong>`});return o.unshift(`<strong>${s[0].name}</strong>`),o.join("<br />")}}}function ol(t,e,n){var i;return[{data:e,name:(i=t.x_axis_name)!=null?i:"",id:"main-x-axis"},...n]}function ll(t,e){return t.y_axes.map(({...n},i)=>{var s;return{...n,axisLabel:{show:!0,formatter:(s=e[i])!=null?s:e.default},nameTextStyle:{fontWeight:"bold",align:"right"},nameLocation:"end",nameGap:15}})}const ul={legend:{show:!0,bottom:0,left:0,type:"scroll"},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"}}],grid:{top:10,left:30,right:15,bottom:25,containLabel:!0}};function cl(t,e){const n=t.y_axes.reduce((h,{label_formatter:f},m)=>(h[m]=function(v){let D=v;if(typeof v=="object"&&(Array.isArray(v.value)&&v.value.length===2?D=v.value[1]:D=v.value),!f)return D;try{return se.default(D).format(f)}catch(k){return console.error(k),D}},h),{default:({value:h})=>h}),i=P.default.uniq(e.map(h=>h[t.x_axis_data_key])),s=al(t,i,e,n),{regressionDataSets:o,regressionSeries:l,regressionXAxes:u}=tl(t,e),d={xAxis:ol(t,i,u),yAxis:ll(t,n),dataset:[...o],series:[...s,...l],tooltip:sl(t,n),grid:el(t)};return S.defaultsDeep({},d,ul)}const Lt={regressions:[],series:[],stats:{templates:{bottom:"",top:""},variables:[]},x_axis_data_key:"",x_axis_name:"",y_axes:[{name:"Y Axis",label_formatter:It}],variables:[],reference_lines:[]};X.use([N.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]),X.registerTransform(ln.transform.regression);function hr(t){return t.trim().length>0}function dl({conf:t,data:e,width:n,height:i}){const s=b.default.useMemo(()=>cl(t,e),[t,e]);return!n||!i?null:r(be.default,{echarts:X,option:s,style:{width:n,height:i}})}function pl({context:t}){const{value:e}=F(t.instanceData,"config"),n=C.useMemo(()=>S.defaults({},e,Lt),[e]),i=t.data,{width:s,height:o}=t.viewport,{ref:l,height:u}=U.useElementSize(),{ref:d,height:h}=U.useElementSize(),f=b.default.useMemo(()=>{const{stats:{templates:g,variables:v}}=n;return{top:zt(g.top,v,i),bottom:zt(g.bottom,v,i)}},[n,i]),m=Math.max(0,o-u-h);return c(a.Box,{children:[hr(n.stats.templates.top)&&r(a.Text,{ref:l,align:"left",size:"xs",pl:"sm",children:Object.values(f.top).map(g=>g)}),r(dl,{width:s,height:m,data:i,conf:n}),hr(n.stats.templates.bottom)&&r(a.Text,{ref:d,align:"left",size:"xs",pl:"sm",children:Object.values(f.bottom).map(g=>g)})]})}function fl({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`stats.variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function hl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"stats.variables"});e("stats.templates");const l=e("stats.variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[c(a.Stack,{spacing:0,children:[r(w.Controller,{name:"stats.templates.top",control:t,render:({field:h})=>r(St,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...h})}),r(w.Controller,{name:"stats.templates.bottom",control:t,render:({field:h})=>r(St,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...h})})]}),u.map((h,f)=>r(fl,{control:t,index:f,remove:o,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}const gl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function ml({control:t,regressionItem:e,index:n,remove:i,yAxisOptions:s,data:o}){const l=e.transform.config.method;return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(w.Controller,{name:`regressions.${n}.name`,control:t,render:({field:u})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`regressions.${n}.y_axis_data_key`,control:t,render:({field:u})=>r($,{label:"Value Field",required:!0,data:o,sx:{flex:1},...u})}),r(w.Controller,{name:`regressions.${n}.plot.yAxisIndex`,control:t,render:({field:{value:u,onChange:d,...h}})=>{var f;return r(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...h,value:(f=u==null?void 0:u.toString())!=null?f:"",onChange:m=>{if(!m){d(0);return}d(Number(m))},sx:{flex:1}})}})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`regressions.${n}.transform.config.method`,control:t,render:({field:u})=>r(a.Select,{label:"Method",data:gl,sx:{flex:1},...u})}),l==="polynomial"&&r(w.Controller,{name:`regressions.${n}.transform.config.order`,control:t,render:({field:u})=>r(a.NumberInput,{label:"Order",sx:{flex:1},...u})})]}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:`regressions.${n}.plot.color`,control:t,render:({field:u})=>r(ge,{...u})})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(n),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},n)}function yl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"regressions"}),l=e("regressions"),u=i.map((m,g)=>({...m,...l[g]})),d=e("y_axes"),h=b.default.useMemo(()=>d.map(({name:m},g)=>({label:m,value:g.toString()})),[d]),f=()=>s({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666"}});return c(a.Stack,{children:[u.map((m,g)=>r(ml,{regressionItem:m,control:t,index:g,remove:o,yAxisOptions:h,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:f,children:"Add a Regression Line"})})]})}const vl=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function bl({control:t,index:e}){return c(j,{children:[c(a.Group,{grow:!0,align:"top",children:[r(w.Controller,{name:`series.${e}.stack`,control:t,render:({field:n})=>r(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...n})}),r(w.Controller,{name:`series.${e}.barWidth`,control:t,render:({field:n})=>r(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...n})})]}),r(w.Controller,{name:`series.${e}.barGap`,control:t,render:({field:n})=>r(a.Select,{label:"Bar Gap",data:vl,sx:{flexGrow:1},...n})})]})}const xl=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}];function Cl({control:t,index:e}){return c(a.Group,{grow:!0,align:"center",children:[r(w.Controller,{name:`series.${e}.step`,control:t,render:({field:n})=>r(a.Select,{label:"Step",data:xl,sx:{flexGrow:1,maxWidth:"48%"},...n,value:String(n.value),onChange:i=>{const s=i==="false"?!1:i;n.onChange(s)}})}),r(w.Controller,{name:`series.${e}.smooth`,control:t,render:({field:n})=>r(a.Box,{sx:{flexGrow:1},children:r(a.Switch,{label:"Smooth Line",checked:n.value,onChange:i=>n.onChange(i.currentTarget.checked)})})})]})}const wl=Array.from(new Array(9),(t,e)=>({label:String(e+1),value:e+1}));function Sl({control:t,index:e}){return r(a.Group,{grow:!0,align:"center",children:r(w.Controller,{name:`series.${e}.symbolSize`,control:t,render:({field:n})=>c(a.Stack,{sx:{flexGrow:1},pb:16,spacing:4,children:[r(a.Text,{size:"sm",children:"Size"}),r(a.Slider,{min:1,max:10,marks:wl,...n,sx:{width:"100%"}})]})})})}const Il=[{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 Tl({control:t,index:e,remove:n,seriesItem:i,yAxisOptions:s,data:o}){const l=i.type;return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(a.Stack,{children:r(w.Controller,{name:`series.${e}.type`,control:t,render:({field:u})=>r(a.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}],...u})})}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`series.${e}.name`,control:t,render:({field:u})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),r(w.Controller,{name:`series.${e}.y_axis_data_key`,control:t,render:({field:u})=>r($,{label:"Value Field",required:!0,data:o,sx:{flex:1},...u})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`series.${e}.yAxisIndex`,control:t,render:({field:{value:u,onChange:d,...h}})=>{var f;return r(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...h,value:(f=u==null?void 0:u.toString())!=null?f:"",onChange:m=>{if(!m){d(0);return}d(Number(m))},sx:{flex:1}})}}),r(w.Controller,{name:`series.${e}.group_by_key`,control:t,render:({field:u})=>r($,{label:"Group By",data:o,clearable:!0,sx:{flex:1},...u})})]}),l==="line"&&r(Cl,{index:e,control:t}),l==="bar"&&r(bl,{index:e,control:t}),l==="scatter"&&r(Sl,{index:e,control:t}),r(w.Controller,{name:`series.${e}.label_position`,control:t,render:({field:u})=>r(a.Select,{label:"Label Position",data:Il,...u})}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:`series.${e}.color`,control:t,render:({field:u})=>r(ge,{...u})})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Dl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"series"}),l=e("series"),u=i.map((m,g)=>({...m,...l[g]})),d=()=>s({type:"bar",name:U.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",stack:"",color:"#000",step:!1,smooth:!1,barWidth:"10",barGap:"0%"}),h=e("y_axes"),f=b.default.useMemo(()=>h.map(({name:m},g)=>({label:m,value:g.toString()})),[h]);return c(a.Stack,{children:[u.map((m,g)=>r(Tl,{control:t,index:g,remove:o,seriesItem:m,yAxisOptions:f,data:n},m.id)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Series"})})]})}function _l({control:t,index:e,remove:n}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(a.Group,{grow:!0,noWrap:!0,children:r(w.Controller,{name:`y_axes.${e}.name`,control:t,render:({field:i})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})}),r(a.Stack,{children:r(w.Controller,{name:`y_axes.${e}.label_formatter`,control:t,render:({field:i})=>r(Ln,{...i})})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},disabled:e===0,children:r(_.Trash,{size:16})})]})}function Al({control:t,watch:e}){const{fields:n,append:i,remove:s}=w.useFieldArray({control:t,name:"y_axes"}),o=e("y_axes"),l=n.map((d,h)=>({...d,...o[h]})),u=()=>i({name:"",label_formatter:It});return c(a.Stack,{children:[l.map((d,h)=>r(_l,{control:t,index:h,remove:s},h)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:u,children:"Add a Y Axis"})})]})}function kl({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,withStyle:!1,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Ml({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"variables"}),l=e("variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[u.map((h,f)=>r(kl,{control:t,index:f,remove:o,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}function El({control:t,index:e,remove:n,variableOptions:i}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`reference_lines.${e}.name`,control:t,render:({field:s})=>r(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:`reference_lines.${e}.variable_key`,control:t,render:({field:s})=>r(a.Select,{label:"Value",required:!0,data:i,sx:{flex:1},...s})})]}),r(w.Controller,{name:`reference_lines.${e}.template`,control:t,render:({field:s})=>r(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Vl({control:t,watch:e}){const{fields:n,append:i,remove:s}=w.useFieldArray({control:t,name:"reference_lines"}),o=e("reference_lines"),l=n.map((f,m)=>({...f,...o[m]})),u=()=>i({name:"",template:"",variable_key:""}),d=e("variables"),h=C.useMemo(()=>d.map(f=>({label:f.name,value:f.name})),[d]);return c(a.Stack,{children:[l.map((f,m)=>r(El,{control:t,index:m,remove:s,variableOptions:h})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:u,children:"Add a Reference Line"})})]})}function zl(t){function e({type:n,name:i,showSymbol:s,symbolSize:o=5,y_axis_data_key:l="value",yAxisIndex:u=0,label_position:d="top",stack:h="1",color:f="black",barWidth:m="30",barGap:g="0%",smooth:v=!1,step:D=!1,group_by_key:k=""}){return{type:n,name:i,showSymbol:s,symbolSize:o,y_axis_data_key:l,yAxisIndex:u,label_position:d,stack:h,color:f,barWidth:m,barGap:g,smooth:v,step:D,group_by_key:k}}return t.map(e)}function Ol(t){return t||{templates:{top:"",bottom:""},variables:[]}}function Pl({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaultsDeep({},e,Lt),[e]),o=C.useMemo(()=>{const{series:v,stats:D,...k}=s;return{series:zl(v!=null?v:[]),stats:Ol(D),...k}},[s]);C.useEffect(()=>{!S.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),n(o))},[s,o]);const{control:l,handleSubmit:u,watch:d,getValues:h,reset:f}=w.useForm({defaultValues:o});C.useEffect(()=>{f(o)},[o]),d(["x_axis_data_key","x_axis_name"]);const m=h(),g=C.useMemo(()=>!S.isEqual(m,s),[m,s]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:u(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Accordion,{multiple:!0,defaultValue:["X Axis","Y Axes"],children:[c(a.Accordion.Item,{value:"X Axis",children:[r(a.Accordion.Control,{children:"X Axis"}),r(a.Accordion.Panel,{children:c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis_data_key",control:l,render:({field:v})=>r($,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...v})}),r(w.Controller,{name:"x_axis_name",control:l,render:({field:v})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...v})})]})})]}),c(a.Accordion.Item,{value:"Y Axes",children:[r(a.Accordion.Control,{children:"Y Axes"}),r(a.Accordion.Panel,{children:r(Al,{control:l,watch:d})})]}),c(a.Accordion.Item,{value:"Series",children:[r(a.Accordion.Control,{children:"Series"}),r(a.Accordion.Panel,{children:r(Dl,{control:l,watch:d,data:i})})]}),c(a.Accordion.Item,{value:"Regression Lines",children:[r(a.Accordion.Control,{children:"Regression Lines"}),r(a.Accordion.Panel,{children:r(yl,{control:l,watch:d,data:i})})]}),c(a.Accordion.Item,{value:"Stats",children:[r(a.Accordion.Control,{children:"Stats"}),r(a.Accordion.Panel,{children:r(hl,{control:l,watch:d,data:i})})]}),c(a.Accordion.Item,{value:"Advanced",children:[r(a.Accordion.Control,{children:c(a.Group,{position:"apart",children:["Advanced",r(a.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),r(a.Accordion.Panel,{children:c(a.Tabs,{defaultValue:"variables",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"variables",children:"Variables"}),r(a.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"})]}),r(a.Tabs.Panel,{value:"variables",pt:"xs",children:r(Ml,{control:l,watch:d,data:i})}),r(a.Tabs.Panel,{value:"reference_lines",pt:"xs",children:r(Vl,{control:l,watch:d})})]})})]})]})]})})}class ql extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Fl={displayName:"Cartesian Chart",migrator:new ql,name:"cartesian",viewRender:pl,configRender:Pl,createConfig:()=>Lt},Rl={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function Gl(t,e){const n=t.dimensions.map(({name:o,max:l,color:u})=>({name:o,max:l,color:u})),i=e.map(o=>({value:t.dimensions.map(({data_key:l})=>o[l]),name:o[t.series_name_key]})),s={radar:{indicator:n},series:{type:"radar",data:i}};return P.default.merge({},Rl,s)}const Bt={series_name_key:"name",dimensions:[]};X.use([de.RadarChart,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function Ll({context:t}){const{value:e}=F(t.instanceData,"config"),{width:n,height:i}=t.viewport,s=t.data,o=C.useMemo(()=>Gl(S.defaultsDeep({},e,Bt),s),[e,s]);return!n||!i||!e||S.isEmpty(e==null?void 0:e.dimensions)?null:r(a.Box,{children:r(be.default,{echarts:X,option:o,style:{width:n,height:i}})})}function Bl({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`dimensions.${e}.name`,control:t,render:({field:s})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:`dimensions.${e}.data_key`,control:t,render:({field:s})=>r($,{label:"Data Key",required:!0,data:i,sx:{flex:1},...s})}),r(w.Controller,{name:`dimensions.${e}.max`,control:t,render:({field:s})=>r(a.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...s})})]}),c(a.Box,{children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:`dimensions.${e}.color`,control:t,render:({field:s})=>r(ge,{...s})})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},disabled:e===0,children:r(_.Trash,{size:16})})]},e)}function Nl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"dimensions"}),l=e("dimensions"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s({name:U.randomId(),data_key:"",max:100,color:"red"});return c(a.Stack,{children:[u.map((h,f)=>r(Bl,{data:n,control:t,index:f,remove:o})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Dimension"})})]})}function $l(t){function e({name:n="",data_key:i="",max:s=10,color:o="blue"}){return{name:n,data_key:i,max:s,color:o}}return t.map(e)}function jl({context:t}){const e=t.data,{value:n,set:i}=F(t.instanceData,"config"),s=C.useMemo(()=>S.defaultsDeep({},n,Bt),[n]),{dimensions:o,series_name_key:l}=s,u=C.useMemo(()=>({dimensions:$l(o!=null?o:[]),series_name_key:l}),[o,l]);C.useEffect(()=>{!S.isEqual(s,u)&&i(u)},[s,u]);const{control:d,handleSubmit:h,watch:f,getValues:m,reset:g}=w.useForm({defaultValues:u});C.useEffect(()=>{S.isEqual(m(),u)||g(u)},[s]),f(["series_name_key"]);const v=m(),D=C.useMemo(()=>!S.isEqual(v,s),[v,s]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:h(i),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!D,children:r(_.DeviceFloppy,{size:20})})]}),r(a.Box,{py:"sm",children:r(w.Controller,{name:"series_name_key",control:d,render:({field:k})=>r($,{label:"Series Name Field",required:!0,data:e,sx:{flex:1},...k})})}),r(Nl,{control:d,watch:f,data:e})]})})}class Wl extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Ql={displayName:"Radar Chart",migrator:new Wl,name:"radar",viewRender:Ll,configRender:jl,createConfig:()=>Bt};function Yl(t,e){switch(t.config.method){case"linear":return[...xe.regressionLinear()(e)];case"exponential":return[...xe.regressionExp()(e)];case"logarithmic":return[...xe.regressionLog()(e)];case"polynomial":return[...xe.regressionPoly().order(t.config.order)(e)];default:return[]}}function Ul({regression:t},e){const n=[],i=[];if(e.length===0)return{regressionSeries:n,regressionXAxes:i};const{transform:s,plot:o,name:l}=t,u=Yl(s,e);return n.push({...o,name:l,data:u,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:n,regressionXAxes:i}}const Xl={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function Jl(t,e){var o,l;const n=P.default.uniqBy(e.map(u=>[u[t.x_axis.data_key],u[t.regression.y_axis_data_key]]),0),{regressionSeries:i}=Ul(t,n),s={xAxis:{type:"category",name:(o=t.x_axis.name)!=null?o:""},yAxis:{name:(l=t.y_axis.name)!=null?l:""},series:[{data:n,name:t.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...i]};return S.defaultsDeep({},s,Xl)}function rt(t,e,n){return 1-(1-t)*(e-1)/(e-n-1)}function Kl(t,e){if(!e)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:n,x_axis:i,y_axis:s}=e,o=t.map(l=>[l[i.data_key],l[n.y_axis_data_key]]);if(n.transform.config.method==="linear"){const l=xe.regressionLinear()(o),{a:u,b:d,rSquared:h}=l;return{expression:c(a.Group,{position:"center",noWrap:!0,spacing:10,children:[r(a.Text,{children:s.name}),r(a.Text,{children:"="}),r(a.Text,{weight:"bold",color:"gray",children:d}),r(a.Text,{children:"+"}),r(a.Text,{weight:"bold",color:"gray",children:u}),r(a.Text,{children:"\xD7"}),r(a.Text,{children:i.name})]}),rSquared:h,adjustedRSquared:rt(h,t.length,1)}}if(n.transform.config.method==="exponential"){const{a:l,b:u,rSquared:d}=xe.regressionExp()(o);return{expression:c(a.Group,{position:"center",noWrap:!0,spacing:10,children:[r(a.Text,{children:s.name}),r(a.Text,{children:"="}),r(a.Text,{weight:"bold",color:"gray",children:l}),r(a.Text,{children:"\xD7"}),c(a.Group,{position:"left",noWrap:!0,spacing:2,children:[r(a.Text,{children:"Math.exp("}),r(a.Text,{weight:"bold",color:"gray",children:u}),r(a.Text,{children:"\xD7"}),r(a.Text,{children:i.name}),r(a.Text,{children:")"})]})]}),rSquared:d,adjustedRSquared:rt(d,t.length,1)}}if(n.transform.config.method==="logarithmic"){const{a:l,b:u,rSquared:d}=xe.regressionLog()(o);return{expression:c(a.Group,{position:"center",noWrap:!0,spacing:10,children:[r(a.Text,{children:s.name}),r(a.Text,{children:"="}),r(a.Text,{weight:"bold",color:"gray",children:l}),r(a.Text,{children:"\xD7"}),c(a.Group,{position:"left",noWrap:!0,spacing:2,children:[r(a.Text,{children:"Math.log("}),r(a.Text,{children:i.name}),r(a.Text,{children:")"}),r(a.Text,{children:"+"}),r(a.Text,{weight:"bold",color:"gray",children:u})]})]}),rSquared:d,adjustedRSquared:rt(d,t.length,1)}}if(n.transform.config.method==="polynomial"){const l=xe.regressionPoly().order(n.transform.config.order)(o),{rSquared:u}=l;return console.log(l),{expression:"",rSquared:u,adjustedRSquared:rt(u,t.length,1)}}return{expression:"",rSquared:0}}const Nt={x_axis:{name:"X Axis",data_key:""},y_axis:{name:"Y Axis"},regression:{transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},plot:{type:"line",yAxisIndex:0,color:"#228be6"},name:"regression",y_axis_data_key:"value"}};X.use([N.DataZoomComponent,de.ScatterChart,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]),X.registerTransform(ln.transform.regression);function Zl({context:t}){const{value:e}=F(t.instanceData,"config"),{width:n,height:i}=t.viewport,s=C.useMemo(()=>{var g;const f=t.data,m=(g=e==null?void 0:e.regression)==null?void 0:g.y_axis_data_key;return m?f.map(v=>typeof v[m]=="number"?v:{...v,[m]:Number(v[m])}):f},[t.data,e==null?void 0:e.regression.y_axis_data_key]),o=C.useMemo(()=>Jl(S.defaultsDeep({},e,Nt),s),[e,s]),{expression:l,rSquared:u,adjustedRSquared:d}=C.useMemo(()=>Kl(s,e),[e,s]);if(!n||!i||!e)return null;let h=i;return l&&(h-=20),c(a.Box,{children:[l&&r(a.Text,{align:"center",size:12,children:l}),c(a.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[r(be.default,{echarts:X,option:o,style:{width:n-190,height:h}}),u&&r(a.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:c("tbody",{children:[c("tr",{children:[r("td",{children:"R-Sq"}),r("td",{style:{textAlign:"right"},children:se.default(u).format({output:"percent",mantissa:1})})]}),c("tr",{children:[r("td",{children:"R-Sq(Adjusted)"}),r("td",{style:{textAlign:"right"},children:se.default(d).format({output:"percent",mantissa:1})})]})]})})]})]})}const Hl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function eu({control:t,watch:e,data:n}){const i=e("regression.transform.config.method");return c(a.Stack,{children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"regression.name",control:t,render:({field:s})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:"regression.y_axis_data_key",control:t,render:({field:s})=>r($,{label:"Value Field",required:!0,data:n,sx:{flex:1},...s})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"regression.transform.config.method",control:t,render:({field:s})=>r(a.Select,{label:"Method",data:Hl,sx:{flex:1},...s})}),i==="polynomial"&&r(w.Controller,{name:"regression.transform.config.order",control:t,render:({field:s})=>r(a.NumberInput,{label:"Order",sx:{flex:1},...s})})]}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:"regression.plot.color",control:t,render:({field:s})=>r(ge,{...s})})]})]})}function tu({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaults({},e,Nt),[e]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});C.useEffect(()=>{h(s)},[s]),u(["x_axis","y_axis","regression"]);const f=d(),m=C.useMemo(()=>!S.isEqual(f,e),[f,e]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[c(a.Accordion.Item,{value:"Axis",children:[r(a.Accordion.Control,{children:"Axis"}),c(a.Accordion.Panel,{children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"x_axis.data_key",control:o,render:({field:g})=>r($,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]}),r(a.Group,{grow:!0,noWrap:!0,children:r(w.Controller,{name:"y_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...g})})})]})]}),c(a.Accordion.Item,{value:"Regression",children:[r(a.Accordion.Control,{children:"Regression Line"}),r(a.Accordion.Panel,{children:r(eu,{control:o,watch:u,data:i})})]})]})]})})}class nu extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const ru={displayName:"Regression Chart",migrator:new nu,name:"regressionChart",viewRender:Zl,configRender:tu,createConfig:()=>Nt},$t={x_axis:{name:"X Axis",data_key:""},data_key:"value",bar:{name:"Value",color:"#228be6"},line:{name:"Value",color:"red"}};function jt(t){return se.default(t).format({output:"percent",mantissa:0})}function iu(t){const e=t.value[1];try{return jt(e)}catch(n){return console.error(n),e}}function au(t){const e=Array.isArray(t)?t:[t];if(e.length===0)return"";const n=e.map((i,s)=>{const o=i.seriesName,[l,u]=i.value;return o?`${o}: <strong>${(s===0?h=>h:jt)(u)}</strong>`:u});return n.unshift(`<strong>${e[0].name}</strong>`),n.join("<br />")}X.use([de.BarChart,de.LineChart,N.DataZoomComponent,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function su({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{x_axis:o,data_key:l,bar:u,line:d}=S.defaults({},e,$t),{barData:h,lineData:f}=C.useMemo(()=>{const g=n.map(k=>[k[o.data_key],Number(k[l])]).sort((k,V)=>V[1]-k[1]),v=g.reduce((k,V)=>k+V[1],0),D=g.reduce((k,V,L)=>{const G=L===0?0:k[L-1][1];return k.push([V[0],G+V[1]]),k},[]).map(k=>[k[0],k[1]/v]);return{barData:g,lineData:D}},[o.data_key,l,n]),m={dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis",formatter:au},xAxis:[{type:"category",name:o.name,nameLocation:"middle",nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"}}],yAxis:[{name:u.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"}},{name:d.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"center"},axisLabel:{show:!0,formatter:jt}}],series:[{name:u.name,type:"bar",itemStyle:{color:u.color},yAxisIndex:0,data:h},{name:d.name,type:"line",itemStyle:{color:d.color},label:{show:!0,position:"top",formatter:iu},yAxisIndex:1,data:f}]};return!e||!i||!s?null:r(be.default,{echarts:X,option:m,style:{width:i,height:s}})}function ou({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaults({},e,$t),[e]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});C.useEffect(()=>{h(s)},[s]),u(["x_axis","data_key","bar","line"]);const f=d(),m=C.useMemo(()=>!S.isEqual(f,e),[f,e]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"x_axis.data_key",control:o,render:({field:g})=>r($,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]}),r(w.Controller,{name:"data_key",control:o,render:({field:g})=>r($,{label:"Y Axis Data Field",required:!0,data:i,sx:{flex:1},...g})}),r(a.Divider,{my:"md",label:"Bar",labelPosition:"center"}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"bar.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Bar Name",sx:{flex:1},...g})}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Bar's Color"}),r(w.Controller,{name:"bar.color",control:o,render:({field:g})=>r(ge,{...g})})]})]}),r(a.Divider,{my:"md",label:"Line",labelPosition:"center"}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"line.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Line Name",sx:{flex:1},...g})}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Line's Color"}),r(w.Controller,{name:"line.color",control:o,render:({field:g})=>r(ge,{...g})})]})]})]})})}class lu extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const uu={displayName:"Pareto Chart",migrator:new lu,name:"paretoChart",viewRender:su,configRender:ou,createConfig:()=>$t},cu=[{value:"#25262B",name:"Dark"},{value:"#868E96",name:"Gray"},{value:"#FA5252",name:"Red"},{value:"#E64980",name:"Pink"},{value:"#BE4BDB",name:"Grape"},{value:"#7950F2",name:"Violet"},{value:"#4C6EF5",name:"Indigo"},{value:"#228BE6",name:"Blue"},{value:"#15AABF",name:"Cyan"},{value:"#12B886",name:"Teal"},{value:"#40C057",name:"Green"},{value:"#82C91E",name:"Lime"},{value:"#FAB005",name:"Yellow"},{value:"#FD7E14",name:"Orange"}].map(t=>({name:t.name,value:t.value,type:"single",category:"basic"})),du=[qa,Fa,La,Ga,Ra,Ba],gr={id:"dashboard",version:Na,manifest:{viz:[Pt,Bs,Xa,Po,Lo,jo,Ho,uu,Fl,Ql,ru],color:[...cu,...du]}},Be=new ja,mr=()=>{try{Be.install(gr)}catch{}const t=new za(Be),e=new $a(Be);return{pluginManager:Be,vizManager:t,colorManager:e}},me=C.createContext(mr());try{Be.install(gr)}catch{}function pu(t,e){const{value:n,set:i}=F(t.operation.operationData,"config"),[s,o]=C.useState(S.defaults({},n,e)),l=async()=>{await i(s)};return C.useEffect(()=>{o(S.defaults({},n,e))},[n]),{config:s,setConfig:o,commit:l}}function fu(t){const{config:e,setConfig:n,commit:i}=pu(t,{urlTemplate:"",openInNewTab:!0});async function s(){await i()}async function o(u){n({...e,openInNewTab:u}),await i()}const l=u=>n({...e,urlTemplate:u.currentTarget.value});return c(a.Stack,{children:[r(a.TextInput,{label:"Url",value:e.urlTemplate,onChange:l,onBlur:s}),r(a.Switch,{label:"Open in new Tab",checked:e.openInNewTab,onChange:u=>o(u.currentTarget.checked)})]})}function hu(t){return S.cloneDeepWith(t,n=>{if(typeof n=="string")return encodeURIComponent(n)})}async function gu(t,e){const{urlTemplate:n,openInNewTab:i}=await e.operationData.getItem("config"),o=S.template(n||"")(hu(t));window.open(o,i?"_blank":"_self","noopener")}const mu={displayName:"Open Link",id:"builtin:op:open-link",configRender:fu,run:gu};function yu(t){const{value:e,set:n}=F(t.operationData,"config"),i=s=>void n({template:s});return[(e==null?void 0:e.template)||"",i]}function vu(t){const[e,n]=yu(t.operation);return r(a.TextInput,{defaultValue:e,onBlur:i=>n(i.currentTarget.value),label:"console.log"})}async function bu(t,e){const n=await e.operationData.getItem("config"),i=S.template(n.template||"");console.log("run with payload",t),console.log(i(t))}const Wt=[{displayName:"console.log (debug)",id:"builtin:op:debug",configRender:vu,run:bu},mu];class xu{constructor(e,n=Wt){E(this,"attachments");this.operations=n;const i=async s=>{const{id:o,schemaRef:l}=await s.getItem(null);return{id:o,schemaRef:l,operationData:new ke(s,"data")}};this.attachments=new xt(e,"__OPERATIONS",i)}async runOperation(e,n){const i=await this.attachments.getInstance(e);if(!i){console.warn(`Operation '${e}' is not defined`);return}const s=this.operations.find(o=>o.id===i.schemaRef);if(!s){console.warn(`Operation schema '${i.schemaRef}' is not defined`);return}await s.run(n,i)}async createOrGetOperation(e,n){if(!this.getOperationSchemaList().some(l=>l.id===n.id))throw new Error(`Operation schema '${n.id}' is not defined`);const s=await this.attachments.getInstance(e);return!s||s.schemaRef!==n.id?await this.attachments.create(e,{id:e,schemaRef:n.id,data:{}}):s}getOperationList(){return this.attachments.list()}getOperationSchemaList(){return this.operations}removeOperation(e){return this.attachments.remove(e)}async retrieveTrigger(e){return await this.attachments.getInstance(e)}}const yr="__TRIGGERS";class Cu{constructor(e,n){E(this,"attachments");this.instance=e,this.component=n;const i=async s=>{const{id:o,schemaRef:l}=await s.getItem(null);return{id:o,schemaRef:l,triggerData:new ke(s,"data")}};this.attachments=new xt(e,yr,i)}watchTriggerSnapshotList(e){return this.instance.instanceData.watchItem(yr,n=>{const i=S.values(n).map(s=>({id:S.get(s,"id"),schemaRef:S.get(s,"schemaRef"),config:J.toJS(S.get(s,"data.config"))}));e(i)},{fireImmediately:!0})}async createOrGetTrigger(e,n,i={recreate:!1}){if(!this.getTriggerSchemaList().some(u=>u.id===n.id))throw new Error(`Trigger schema '${n.id}' is not defined in component '${this.component.name}'`);const o=await this.attachments.getInstance(e);return!o||i.recreate||o.schemaRef!==n.id?await this.attachments.create(e,{id:e,schemaRef:n.id,data:{}}):o}async getTriggerList(){return await this.attachments.list()}getTriggerSchemaList(){return this.component.triggers||[]}async removeTrigger(e){await this.attachments.remove(e)}async retrieveTrigger(e){return await this.attachments.getInstance(e)}}class vr{constructor(e,n,i){E(this,"operationManager");E(this,"triggerManager");E(this,"attachments");this.operationManager=new xu(e,i),this.triggerManager=new Cu(e,n);const s=async o=>{const{id:l,triggerRef:u,operationRef:d}=await o.getItem(null);return{id:l,triggerRef:u,operationRef:d}};this.attachments=new xt(e,"__INTERACTIONS",s)}async addInteraction(e,n){const i=e.id,s=n.id,o=`[${i}]:[${s}]`;await this.attachments.create(o,{id:o,triggerRef:i,operationRef:s})}getInteractionList(){return this.attachments.list()}async removeInteraction(e){const n=await this.attachments.getInstance(e);if(!n)return;const{triggerRef:i,operationRef:s}=n;await this.getTriggerRefCount(i)<=1&&await this.triggerManager.removeTrigger(i),await this.getOperationRefCount(s)<=1&&await this.operationManager.removeOperation(s),await this.attachments.remove(e)}async getOperationRefCount(e){return(await this.getInteractionList()).filter(i=>i.operationRef===e).length}async getTriggerRefCount(e){return(await this.getInteractionList()).filter(i=>i.triggerRef===e).length}async runInteraction(e,n){const s=(await this.getInteractionList()).filter(o=>o.triggerRef===e);await Promise.all(s.map(async o=>{try{return await this.operationManager.runOperation(o.operationRef,n)}catch(l){console.warn(`Failed to run operation '${o.operationRef}'`,l)}}))}}function wu(t,e){const[n,i]=C.useState([]);return B.useAsyncEffect(async()=>{const s=await t.getInteractionList();i(s)},[e]),n}const Su=A.observer(({item:t,manager:e,instance:n,sampleData:i,variables:s,onRemove:o})=>{const{triggerRef:l,operationRef:u}=t,d=_a(e.triggerManager,n);if(B.useAsyncEffect(async()=>{await d.configTrigger(l,i)},[d,l,i]),d.isReady()){const h=[...d.triggerSchema.payload,...s];return c(a.Group,{children:[r(Ea,{model:d}),r(Ia,{instance:n,operationId:u,variables:h,operationManager:e.operationManager}),r(a.Button,{"aria-label":"delete-interaction",variant:"outline",color:"red",onClick:()=>o(t),children:r(_.Trash,{})})]})}return null}),Iu=t=>{const[e,n]=C.useState(0),{interactionManager:i,instance:s,sampleData:o,variables:l}=t,u=wu(i,e),d=async()=>{const f=await i.triggerManager.createOrGetTrigger(U.randomId(),i.triggerManager.getTriggerSchemaList()[0]),m=await i.operationManager.createOrGetOperation(U.randomId(),i.operationManager.getOperationSchemaList()[0]);await i.addInteraction(f,m),n(g=>g+1)};async function h(f){await i.removeInteraction(f.id),n(m=>m+1)}return c(a.Stack,{children:[u.map(f=>r(Su,{onRemove:h,instance:s,sampleData:o,variables:l,item:f,manager:t.interactionManager},f.id)),r(a.Button,{style:{width:"fit-content"},onClick:()=>d(),children:"Add interaction"})]})},Tu=()=>{const{panel:t,data:e}=Z(),n=t.viz,{vizManager:i}=C.useContext(me),s=t.json,o=B.useCreation(()=>i.getOrCreateInstance(s),[i,n.type]),l=B.useCreation(()=>new vr(o,i.resolveComponent(n.type),Wt),[o,n.type]);return C.useEffect(()=>o.instanceData.watchItem(null,S.throttle(u=>{t.viz.setConf(u)},100,{leading:!1,trailing:!0})),[o]),{instance:o,vizManager:i,interactionManager:l,sampleData:e,variables:[]}},Du=()=>{const t=Tu();return r(Iu,{...t})};function _u(){const{panel:t}=Z(),[e,n]=b.default.useState(t.description),i=t.description!==e,s=b.default.useCallback(()=>{!i||t.setDescription(e)},[i,e]);return c(a.Stack,{sx:{flexGrow:1},children:[c(a.Group,{align:"end",children:[r(a.Text,{children:"Description"}),r(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!i,onClick:s,children:r(_.DeviceFloppy,{size:20})})]}),r(pt.RichTextEditor,{value:e,onChange:n,sx:{flexGrow:1},sticky:!0,p:"0"})]})}function Au(){const{panel:{title:t}}=Z();return r(Ae,{children:c(a.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:[c(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[r(a.Group,{children:r(On,{})}),r(a.Group,{grow:!0,position:"center",children:r(a.Text,{lineClamp:1,weight:"bold",children:t})}),r(a.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),r(a.Group,{sx:{background:"#eee",flexGrow:1}})]})})}function ku(){const{panel:t}=Z(),{title:e,setTitle:n}=t,[i,s]=U.useInputState(e),o=e!==i,l=b.default.useCallback(()=>{!o||n(i)},[o,i]);return r(a.TextInput,{value:i,onChange:s,label:c(a.Group,{align:"end",children:[r(a.Text,{children:"Panel Title"}),r(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!o,onClick:l,children:r(_.DeviceFloppy,{size:20})})]})})}function Mu(){return c(a.Group,{grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[c(a.Stack,{sx:{width:"40%",flexShrink:0,flexGrow:0,height:"100%"},children:[r(ku,{}),r(_u,{})]}),r(a.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:r(Au,{})})]})}const Eu=A.observer(function(){const e=Q(),{panel:{queryID:n,setQueryID:i}}=Z(),s=b.default.useMemo(()=>e.queries.current.map(o=>({value:o.id,label:o.id})),[e.queries.current]);return c(a.Stack,{children:[c(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[r(a.Text,{children:"Select a Query"}),r(a.Select,{data:s,value:n,onChange:i,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}})]}),r(Sn,{id:n})]})});function br(t,e,n){const i=B.useCreation(()=>new Set,[]),s=t.resolveComponent(e.type),[o,l]=C.useState(!1);return B.useAsyncEffect(async()=>{if(await s.migrator.needMigration(e)&&!i.has(e.id))try{i.add(e.id),await s.migrator.migrate(e),n==null||n()}finally{i.delete(e.id),l(!0)}else l(!0)},[e]),o}function Vu({setVizConf:t,...e}){const{vizManager:n,panel:i}=e,s=n.getOrCreateInstance(i),o=br(n,s,()=>{ft.showNotification({title:`${i.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return B.useAsyncEffect(async()=>{await s.instanceData.setItem(null,i.viz.conf)},[s,i.viz.type]),C.useEffect(()=>s.instanceData.watchItem(null,l=>{t(l)}),[t,i.viz.type]),o?r(Pa,{...e}):r(a.Text,{children:"Checking update..."})}function zu(t){const{vizManager:e,panel:n}=t,i=e.getOrCreateInstance(n);return br(e,i,()=>{ft.showNotification({title:`${n.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?r(Oa,{...t}):r(a.Text,{children:"Checking update"})}const Wc="";function Ou(t,e){const{vizManager:n}=C.useContext(me),{panel:{viz:i,title:s,id:o,description:l,queryID:u}}=Z(),d={title:s,id:o,description:l,queryID:u,viz:i,layout:e};try{return n.resolveComponent(i.type),r(zu,{panel:d,data:t,vizManager:n})}catch(h){return console.info(S.get(h,"message")),null}}function xr(t,e,n,i){switch(i.conf,i.type){default:return null}}const Pu=["rich-text"],Cr=A.observer(function({height:e,viz:n,data:i,loading:s}){const{ref:o,width:l,height:u}=U.useElementSize(),d=b.default.useMemo(()=>!Array.isArray(i)||i.length===0,[i]),h=Ou(i,{w:l,h:u});if(!(!Pu.includes(n.type)||!!h))return r("div",{className:"viz-root",ref:o,children:r(Ae,{children:xr(l,u,i,n)})});const m=h||xr(l,u,i,n);return s?r("div",{className:"viz-root",style:{height:e},ref:o,children:r(a.LoadingOverlay,{visible:s,exitTransitionDuration:0})}):c("div",{className:"viz-root",style:{height:e},ref:o,children:[d&&r(a.Text,{color:"gray",align:"center",children:"nothing to show"}),!d&&r(Ae,{children:m})]})});function qu(){const{data:t,loading:e,panel:{viz:n}}=Z();return r(Cr,{viz:n,data:t,loading:e,height:"100%"})}const Qt=[];function Fu(){const{vizManager:t}=C.useContext(me);return C.useMemo(()=>t.availableVizList.map(e=>({value:e.name,label:e.displayName})).concat(Qt),[t])}function Ru(t,e){try{return t.resolveComponent(e).createConfig()}catch{return null}}function Gu(){const{data:t,panel:{viz:e,title:n,queryID:i,description:s,setDescription:o,setTitle:l,setQueryID:u,id:d}}=Z(),{vizManager:h}=C.useContext(me),f={title:n,description:s,viz:e,queryID:i,id:d},m={setDescription:o,setQueryID:u,setTitle:l};try{return h.resolveComponent(f.viz.type),r(Vu,{setVizConf:e.setConf,panel:f,panelInfoEditor:m,vizManager:h,data:t})}catch(g){return console.info(S.get(g,"message")),null}}function Lu(){const{data:t,panel:{viz:e}}=Z(),[n,i]=U.useInputState(e.type),s=e.type!==n,{vizManager:o}=C.useContext(me),l=b.default.useCallback(()=>{if(!s)return;const v=Ru(o,n);e.setType(n),e.setConf(v||{})},[e,s,n]),u=v=>{try{e.setConf(JSON.parse(v))}catch(D){console.error(D)}},d=b.default.useMemo(()=>{var v;return(v=Qt.find(D=>D.value===n))==null?void 0:v.Panel},[n,Qt]),h=Gu(),f=d?C.createElement(d,{data:t,conf:e.conf,setConf:e.setConf}):null,m=h||f,g=Fu();return c(j,{children:[r(a.Select,{label:"Visualization",value:n,onChange:i,data:g,rightSection:r(a.ActionIcon,{disabled:!s,onClick:l,children:r(_.DeviceFloppy,{size:20})})}),m,!m&&r(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(e.conf,null,2),onChange:u})]})}function Bu(){return c(a.Group,{grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%",overflow:"hidden"},children:[r(a.Stack,{sx:{width:"40%",flexShrink:0,flexGrow:0,overflow:"scroll",height:"100%"},children:r(Lu,{})}),r(a.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:r(qu,{})})]})}const Nu=A.observer(function({opened:e,close:n}){const{freezeLayout:i}=b.default.useContext(oe),[s,o]=C.useState("Visualization"),{panel:l,loading:u}=Z(),{title:d}=l;return b.default.useEffect(()=>{i(e)},[e]),r(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:d,trapFocus:!0,onDragStart:h=>{h.stopPropagation()},children:r(a.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",minHeight:"unset",maxHeight:"100%",width:"100%",padding:"16px"}},padding:"md",children:c(a.Tabs,{value:s,onTabChange:o,className:"panel-settings-tabs",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"Data",children:"Data"}),r(a.Tabs.Tab,{value:"Panel",children:"Panel"}),r(a.Tabs.Tab,{value:"Visualization",children:"Visualization"}),r(a.Tabs.Tab,{value:"Interactions",children:"Interactions"})]}),c(a.Tabs.Panel,{value:"Data",pt:"sm",children:[r(a.LoadingOverlay,{visible:u,exitTransitionDuration:0}),r(Eu,{})]}),r(a.Tabs.Panel,{value:"Panel",pt:"sm",children:s==="Panel"&&r(Mu,{})}),r(a.Tabs.Panel,{value:"Visualization",pt:"sm",children:s==="Visualization"&&r(Bu,{})}),r(a.Tabs.Panel,{value:"Interactions",pt:"sm",children:r(Ae,{children:r(Du,{})})})]})})})}),$u=A.observer(({view:t})=>{const e=Q(),n=he.useModals(),[i,s]=b.default.useState(!1),o=()=>s(!0),l=()=>s(!1),{panel:u}=Z(),{id:d,queryID:h}=u,{inEditMode:f}=b.default.useContext(oe),m=()=>e.queries.refetchDataByQueryID(h),{viewPanelInFullScreen:g,inFullScreen:v}=b.default.useContext(mt),D=()=>{t.panels.duplicateByID(d)},k=()=>n.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>t.panels.removeByID(d)}),V=b.default.useCallback(()=>{g(d)},[d,g]);return c(j,{children:[r(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:c(a.Menu,{children:[r(a.Menu.Target,{children:r(a.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),c(a.Menu.Dropdown,{children:[r(a.Menu.Item,{onClick:m,icon:r(_.Refresh,{size:14}),children:"Refresh"}),r(a.Menu.Item,{onClick:()=>e.queries.downloadDataByQueryID(h),icon:r(_.Download,{size:14}),children:"Download Data"}),!v&&r(a.Menu.Item,{onClick:V,icon:r(_.ArrowsMaximize,{size:14}),children:"Full Screen"}),f&&c(j,{children:[r(a.Divider,{label:"Edit",labelPosition:"center"}),r(a.Menu.Item,{onClick:o,icon:r(_.Settings,{size:14}),children:"Settings"}),r(a.Menu.Item,{onClick:D,icon:r(_.Copy,{size:14}),children:"Duplicate"}),r(a.Menu.Item,{color:"red",onClick:k,icon:r(_.Trash,{size:14}),children:"Delete"})]})]})]})}),f&&r(Nu,{opened:i,close:l})]})}),Qc="",ju=A.observer(function(){const{panel:e}=Z(),{title:n}=e;return n?r(a.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:r(a.Text,{align:"center",lineClamp:1,weight:"bold",children:n})}):null});function Wu(t){return!["richText"].includes(t)}const it=A.observer(function({panel:e,view:n}){const i=Q(),{data:s,state:o}=i.getDataStuffByID(e.queryID),l=Wu(e.viz.type)&&o==="loading",u=e.title?"calc(100% - 25px - 5px)":"100%";return r(Cn,{value:{panel:e,data:s,loading:l},children:c(a.Box,{className:"panel-root",p:5,pt:0,children:[r(a.Box,{sx:{position:"absolute",left:0,top:0,height:28,zIndex:310},children:r(On,{})}),r($u,{view:n}),r(ju,{}),r(Cr,{viz:e.viz,data:s,loading:l,height:u})]})})}),wr=A.observer(function({view:e,panel:n,exitFullScreen:i}){return c(a.Stack,{px:"10px",pb:"5px",sx:{height:"100%",flexGrow:1,justifyContent:"flex-start"},children:[r(a.Group,{mx:"-5px",sx:{flexGrow:0},children:r(a.Button,{variant:"default",size:"sm",onClick:i,leftIcon:r(_.ArrowLeft,{size:20}),children:"Exit fullscreen"})}),r(a.Group,{mx:"-5px",grow:!0,sx:{flexGrow:1,flexShrink:0},children:r(it,{view:e,panel:n})})]})});function Sr(t){const[e,n]=b.default.useState(null),i=b.default.useCallback(u=>{n(u)},[]),s=b.default.useCallback(()=>{n(null)},[]),o=e?t.panels.findByID(e):null;return{viewPanelInFullScreen:i,exitFullScreen:s,inFullScreen:!!o,fullScreenPanel:o}}function Ir(){b.default.useEffect(()=>{const t=Si.default(".dashboard-sticky-area",{useStickyClasses:!0,parentClass:"dashboard-sticky-parent"});return()=>{t==null||t.cleanup()}},[])}const Yc="",Qu=b.default.forwardRef(({handleAxis:t},e)=>r(a.ActionIcon,{ref:e,className:"react-grid-customDragHandle",sx:{userSelect:"none",cursor:"grab",position:"absolute",top:0,right:0,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",children:r(_.ArrowsMove,{size:16})})),Yu=b.default.forwardRef(({handleAxis:t,...e},n)=>r(a.ActionIcon,{ref:n,className:"react-grid-customResizeHandle",sx:{userSelect:"none",cursor:"nwse-resize",position:"absolute",bottom:-5,right:-5,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",...e,children:r(_.ChevronDownRight,{size:16})})),Uu=gt.WidthProvider(pn.default),Xu=A.observer(function({view:e,className:n="layout",rowHeight:i=10,isDraggable:s,isResizable:o}){const l=b.default.useCallback(u=>{u.forEach(({i:d,...h})=>{const f=e.panels.findByID(d);!f||f.layout.set(h)})},[e]);return r(Uu,{onLayoutChange:l,className:`dashboard-layout ${n}`,rowHeight:i,layout:e.panels.layouts,isDraggable:s,isResizable:o,draggableHandle:".react-grid-customDragHandle",resizeHandle:r(Yu,{}),children:e.panels.current.map((u,d)=>c("div",{"data-grid":{...u.layout},style:{position:"relative"},children:[s&&r(Qu,{}),r(it,{view:e,panel:u})]},u.id))})}),Ju=gt.WidthProvider(pn.default),Ku=A.observer(function({view:e,className:n="layout",rowHeight:i=10}){return r(Ju,{className:`dashboard-layout ${n}`,rowHeight:i,isDraggable:!1,isResizable:!1,layout:e.panels.layouts,children:e.panels.current.map(s=>r("div",{"data-grid":s.layout,children:r(it,{view:e,panel:s})},s.id))})}),Zu=A.observer(({children:t})=>r(a.Box,{children:t})),Hu=A.observer(({children:t,view:e})=>r(a.Modal,{size:e.config.width,overflow:"inside",opened:!0,onClose:P.default.noop,withCloseButton:!1,title:e.name,trapFocus:!0,onDragStart:n=>{n.stopPropagation()},styles:{root:{position:"relative",height:"calc(100% - 46px)"},overlay:{position:"absolute !important"},modal:{border:"1px solid #efefef"},body:{"> div":{maxHeight:e.config.height,overflow:"scroll"}}},withinPortal:!1,transitionDuration:0,children:t})),ec=A.observer(({view:t,children:e})=>{switch(t.type){case fe.Modal:return r(Hu,{view:t,children:e});case fe.Division:default:return r(Zu,{children:e})}}),Tr=A.observer(function({view:e,saveDashboardChanges:n}){const{viewPanelInFullScreen:i,exitFullScreen:s,inFullScreen:o,fullScreenPanel:l}=Sr(e);return Ir(),r(mt.Provider,{value:{viewPanelInFullScreen:i,inFullScreen:o},children:c(a.Box,{className:"dashboard-view",mx:-10,sx:{position:"relative",height:"100%"},children:[o&&r(wr,{view:e,panel:l,exitFullScreen:s}),!o&&r(zn,{saveChanges:n}),r(ec,{view:e,children:c(a.Box,{className:"dashboard-sticky-parent",children:[r(a.Box,{className:"dashboard-sticky-area",children:r(bn,{view:e})}),r(a.Box,{sx:{display:o?"none":"block"},children:r(Xu,{view:e,isDraggable:!0,isResizable:!0})})]})})]})})}),Dr=A.observer(function({view:e}){const{viewPanelInFullScreen:n,exitFullScreen:i,inFullScreen:s,fullScreenPanel:o}=Sr(e);return Ir(),r(mt.Provider,{value:{viewPanelInFullScreen:n,inFullScreen:s},children:c(a.Box,{className:"dashboard-view",sx:{position:"relative",height:"100%"},children:[s&&r(wr,{view:e,panel:o,exitFullScreen:i}),!s&&c(a.Box,{className:"dashboard-sticky-area",children:[r(zn,{saveChanges:P.default.noop}),r(bn,{view:e})]}),r(Ku,{view:e})]})})}),_r=y.types.model({label:y.types.string,value:y.types.string}).actions(t=>({setLabel(e){t.label=e},setValue(e){t.value=e}})),Ar=y.types.model("FilterConfigModel_Select",{required:y.types.boolean,default_value:y.types.string,static_options:y.types.optional(y.types.array(_r),[]),options_query:Dn}).actions(t=>({addStaticOption(e){t.static_options.push(e)},removeStaticOption(e){t.static_options.splice(e,1)},setRequired(e){t.required=e},setDefaultValue(e){t.default_value=e},setOptionsQuery(e){t.options_query=e}})),tc=()=>Ar.create({required:!1,default_value:"",static_options:[],options_query:{type:pe.Postgresql,key:"",sql:""}}),kr=y.types.model("FilterConfigModel_MultiSelect",{default_value:y.types.optional(y.types.array(y.types.string),[]),static_options:y.types.optional(y.types.array(_r),[]),options_query:Dn}).actions(t=>({addStaticOption(e){t.static_options.push(e)},removeStaticOption(e){t.static_options.splice(e,1)},setDefaultValue(e){t.default_value=y.cast(e)},setOptionsQuery(e){t.options_query=e}})),nc=()=>kr.create({default_value:[],static_options:[],options_query:{type:pe.Postgresql,key:"",sql:""}}),Mr=y.types.model("FilterConfigModel_Checkbox",{default_value:y.types.boolean}).actions(t=>({setDefaultValue(e){t.default_value=e}})),rc=()=>Mr.create({default_value:!1}),Er=y.types.model("FilterConfigModel_DateRange",{required:y.types.boolean,inputFormat:y.types.enumeration("DateRangeInputFormat",["YYYY","YYYY-MM","YYYY-MM-DD"]),clearable:y.types.boolean}).actions(t=>({setRequired(e){t.required=e},setClearable(e){t.clearable=e},setInputFormat(e){t.inputFormat=e}})),ic=()=>Er.create({required:!1,inputFormat:"YYYY-MM-DD",clearable:!1}),Yt=y.types.model("FilterModel",{id:y.types.identifier,key:y.types.string,label:y.types.string,order:y.types.number,visibleInViewsIDs:y.types.array(y.types.string),type:y.types.enumeration("DashboardFilterType",[re.Select,re.MultiSelect,re.TextInput,re.Checkbox,re.DateRange]),config:y.types.union(Ar,kr,_n,Mr,Er)}).actions(t=>({setKey(e){t.key=e},setLabel(e){t.label=e},setOrder(e){t.order=e},setType(e){switch(e){case re.Select:t.config=tc();break;case re.MultiSelect:t.config=nc();break;case re.TextInput:t.config=An();break;case re.Checkbox:t.config=rc();break;case re.DateRange:t.config=ic();break}t.type=e},setVisibleInViewsIDs(e){console.log(e),t.visibleInViewsIDs.length=0,t.visibleInViewsIDs.push(...e)}})),Vr=y.types.model("FiltersModel",{original:y.types.optional(y.types.array(Yt),[]),current:y.types.optional(y.types.array(Yt),[]),values:y.types.optional(y.types.frozen(),{})}).views(t=>({get changed(){return!P.default.isEqual(t.original,t.current)},get firstID(){if(t.current.length!==0)return t.current[0].id},get inOrder(){return P.default.sortBy(t.current,"order")},get empty(){return t.current.length===0},visibleInView(e){return P.default.sortBy(t.current.filter(n=>n.visibleInViewsIDs.includes(e)),"order")}})).actions(t=>({reset(){t.current=P.default.cloneDeep(t.original)},replace(e){t.current=y.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},setValues(e){t.values=e},setValueByKey(e,n){t.values[e]=n},getValueByKey(e){return t.values[e]}}));function zr(t){const e=t.reduce((n,i)=>{var s;return n[i.key]=(s=i.config.default_value)!=null?s:"",n},{});return{original:t,current:t,values:e}}var Ut={exports:{}};(function(t,e){(function(n,i){i()})(Oe,function(){function n(h,f){return typeof f>"u"?f={autoBom:!1}:typeof f!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),f={autoBom:!f}),f.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(h.type)?new Blob(["\uFEFF",h],{type:h.type}):h}function i(h,f,m){var g=new XMLHttpRequest;g.open("GET",h),g.responseType="blob",g.onload=function(){d(g.response,f,m)},g.onerror=function(){console.error("could not download file")},g.send()}function s(h){var f=new XMLHttpRequest;f.open("HEAD",h,!1);try{f.send()}catch{}return 200<=f.status&&299>=f.status}function o(h){try{h.dispatchEvent(new MouseEvent("click"))}catch{var f=document.createEvent("MouseEvents");f.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),h.dispatchEvent(f)}}var l=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof Oe=="object"&&Oe.global===Oe?Oe:void 0,u=l.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),d=l.saveAs||(typeof window!="object"||window!==l?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(h,f,m){var g=l.URL||l.webkitURL,v=document.createElement("a");f=f||h.name||"download",v.download=f,v.rel="noopener",typeof h=="string"?(v.href=h,v.origin===location.origin?o(v):s(v.href)?i(h,f,m):o(v,v.target="_blank")):(v.href=g.createObjectURL(h),setTimeout(function(){g.revokeObjectURL(v.href)},4e4),setTimeout(function(){o(v)},0))}:"msSaveOrOpenBlob"in navigator?function(h,f,m){if(f=f||h.name||"download",typeof h!="string")navigator.msSaveOrOpenBlob(n(h,m),f);else if(s(h))i(h,f,m);else{var g=document.createElement("a");g.href=h,g.target="_blank",setTimeout(function(){o(g)})}}:function(h,f,m,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),typeof h=="string")return i(h,f,m);var v=h.type==="application/octet-stream",D=/constructor/i.test(l.HTMLElement)||l.safari,k=/CriOS\/[\d]+/.test(navigator.userAgent);if((k||v&&D||u)&&typeof FileReader<"u"){var V=new FileReader;V.onloadend=function(){var ue=V.result;ue=k?ue:ue.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=ue:location=ue,g=null},V.readAsDataURL(h)}else{var L=l.URL||l.webkitURL,G=L.createObjectURL(h);g?g.location=G:location.href=G,g=null,setTimeout(function(){L.revokeObjectURL(G)},4e4)}});l.saveAs=d.saveAs=d,t.exports=d})})(Ut);function ac(t,e){const n=new Blob([e],{type:"text/csv"});Ut.exports.saveAs(n,`${t}.csv`)}function sc(t){const e=new Ii.default;t.forEach(({id:n,data:i})=>{e.file(`${n}.csv`,Or(i))}),e.generateAsync({type:"blob"}).then(n=>{Ut.exports.saveAs(n,"dashboard_data.zip")})}function Or(t){if(!Array.isArray(t)||t.length===0)return"";const e=[],n=Object.keys(t[0]);return e.push(n.join(",")),t.forEach(i=>{const s=Object.values(i).join(",");e.push(s)}),e.join(`
42
- `)}const Pr=y.types.model("QueryModel",{id:y.types.string,type:y.types.enumeration("DataSourceType",[pe.Postgresql,pe.MySQL,pe.HTTP]),key:y.types.string,sql:y.types.string}).views(t=>({get valid(){return t.id&&t.type&&t.key&&t.sql},get configurations(){const{id:e,type:n,key:i,sql:s}=t;return{id:e,type:n,key:i,sql:s}}})),qr=y.types.compose("QueryModel",Pr,y.types.model({state:y.types.optional(y.types.enumeration(["idle","loading","error"]),"idle"),data:y.types.optional(y.types.array(y.types.frozen()),[]),error:y.types.frozen()})).views(t=>({get formattedSQL(){const{context:e,sqlSnippets:n,filterValues:i}=y.getRoot(t).payloadForSQL;return yn(t.sql,e,n,i)}})).actions(t=>({setID(e){t.id=e},setKey(e){t.key=e},setType(e){t.type=e},setSQL(e){t.sql=e},fetchData:y.flow(function*(){if(!!t.valid){t.state="loading";try{const e=t.id,{context:n,sqlSnippets:i,filterValues:s}=y.getRoot(t).payloadForSQL;t.data=yield*y.toGenerator(Ei({context:n,sqlSnippets:i,title:e,query:{type:t.type,key:t.key,sql:t.sql},filterValues:s})),t.state="idle"}catch(e){console.error(e),t.error=e,t.state="error"}}})})).actions(t=>({afterCreate(){y.addDisposer(t,J.reaction(()=>`${t.id}--${t.key}--${t.type}--${t.formattedSQL}`,t.fetchData,{fireImmediately:!0,delay:500}))}})),Fr=y.types.model("QueriesModel",{original:y.types.optional(y.types.array(Pr),[]),current:y.types.optional(y.types.array(qr),[])}).views(t=>({get changed(){return t.original.length!==t.current.length?!0:t.original.some((e,n)=>!P.default.isEqual(e.configurations,t.current[n].configurations))},get firstID(){if(t.current.length!==0)return t.current[0].id},findByID(e){return t.current.find(n=>n.id===e)},get options(){return t.current.map(e=>({value:e.id,label:e.id}))}})).actions(t=>({reset(){const e=t.original.map(n=>({...n,state:"idle",data:[],error:null}));t.current.length=0,t.current.unshift(...e)},replace(e){t.current=y.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},downloadAllData(){const e=t.current.map(({id:n,data:i})=>({id:n,data:i.toJSON()}));sc(e)},downloadDataByQueryID(e){const n=t.findByID(e);if(!n){console.log(`[downloadDataByQueryID] query by ID[${e}] not found`);return}const{id:i,data:s}=n,o=Or(s);ac(i,o)},refetchDataByQueryID(e){const n=t.findByID(e);if(!n){console.error(new Error(`[downloadDataByQueryID] query by ID[${e}] not found`));return}return n.fetchData()}})),Xt=y.types.model("SQLSnippetModel",{key:y.types.string,value:y.types.string}).actions(t=>({setKey(e){t.key=e},setValue(e){t.value=e}})),Rr=y.types.model("SQLSnippetsModel",{original:y.types.optional(y.types.array(Xt),[]),current:y.types.optional(y.types.array(Xt),[])}).views(t=>({get changed(){return!P.default.isEqual(t.original,t.current)}})).actions(t=>({reset(){t.current=P.default.cloneDeep(t.original)},replace(e){t.current=y.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},replaceByIndex(e,n){t.current.splice(e,1,n)}})),Gr=y.types.model("ContextModel",{current:y.types.optional(y.types.frozen(),{})}).views(t=>({get keys(){return Object.keys(t.current)},get entries(){return Object.entries(t.current)}})).actions(t=>({replace(e){t.current=e},get(e){return t.current[e]},set(e,n){t.current[e]=n}})),oc=y.types.model("PanelLayoutModel",{x:y.types.number,y:y.types.number,w:y.types.number,h:y.types.number,moved:y.types.optional(y.types.boolean,!1),static:y.types.optional(y.types.boolean,!1)}).views(t=>({get json(){const{x:e,y:n,w:i,h:s,moved:o}=t;return{x:e,y:n,w:i,h:s,moved:o,static:t.static}}})).actions(t=>({set(e){const{x:n,y:i,w:s,h:o,moved:l}=e;t.x=n,t.y=i,t.w=s,t.h=o,t.moved=!!l,t.static=!!e.static}})),lc=y.types.model("PanelVizModel",{type:y.types.string,conf:y.types.frozen()}).views(t=>({get json(){return{type:t.type,conf:t.conf}}})).actions(t=>({setType(e){t.type=e},setConf(e){t.conf=e}})),Lr=y.types.model({id:y.types.string,title:y.types.string,description:y.types.string,layout:oc,queryID:y.types.string,viz:lc}).views(t=>({get json(){const{id:e,title:n,description:i,queryID:s}=t;return{id:e,title:n,description:i,layout:t.layout.json,queryID:s,viz:t.viz.json}}})).actions(t=>({setID(e){t.id=e},setTitle(e){t.title=e},setDescription(e){t.description=e},setQueryID(e){t.queryID=e}})).actions(t=>({})),uc=y.types.model("PanelsModel",{original:y.types.optional(y.types.array(Lr),[]),current:y.types.optional(y.types.array(Lr),[])}).views(t=>({get changed(){return t.original.length!==t.current.length?!0:t.original.some((e,n)=>!P.default.isEqual(e.json,t.current[n].json))},get json(){return t.current.map(e=>e.json)},get layouts(){return t.current.map(e=>({...e.layout.json,i:e.id}))},findByID(e){return t.current.find(n=>n.id===e)}})).actions(t=>({reset(){const e=t.original.map(n=>({...n}));t.current.length=0,t.current.unshift(...e)},replace(e){t.current=y.cast(e)},addANewPanel(){const e=U.randomId();t.current.push({id:e,layout:{x:0,y:1/0,w:3,h:15},title:`Panel - ${e}`,description:"<p><br></p>",queryID:"",viz:{type:Pt.name,conf:Pt.createConfig()}})},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(i=>i.id===e);n!==-1&&t.current.splice(n,1)},duplicateByID(e){const n=t.current.find(i=>i.id===e);if(!n){console.error(new Error(`[duplicate panel] Can't find a panel by id[${e}]`));return}t.current.push({...n,id:U.randomId(),layout:{...n.layout,x:0,y:1/0,moved:!1}})},replaceByIndex(e,n){t.current.splice(e,1,n)}})),Jt=y.types.model({id:y.types.identifier,name:y.types.string,type:y.types.string,config:y.types.frozen(),panels:uc}).views(t=>({get json(){const{id:e,name:n,type:i,config:s}=t;return{id:e,name:n,type:i,config:s,panels:t.panels.json}}})).actions(t=>({setName(e){t.name=e},setType(e){t.type!==e&&(e===fe.Modal?t.config={width:"600px",height:"400px"}:t.config={},t.type=e)},setConfig(e){t.config=e},updateConfig(e,n){t.config={...t.config,[e]:n}}})).actions(t=>({})),Kt=y.types.model("ViewsModel",{original:y.types.optional(y.types.array(Jt),[]),current:y.types.optional(y.types.array(Jt),[]),visibleViewIDs:y.types.array(y.types.string),idOfVIE:y.types.string}).views(t=>({get changed(){return t.original.length!==t.current.length?!0:t.original.some((e,n)=>!P.default.isEqual(e.json,t.current[n].json))},get json(){return t.current.map(e=>e.json)},findByID(e){return t.current.find(n=>n.id===e)},get isVIETheFirstView(){return t.current.length===0||!t.idOfVIE?!1:t.current[0].id===t.idOfVIE},get firstVisibleView(){const[e]=t.visibleViewIDs;return t.current.find(({id:n})=>n===e)},get visibleViews(){const e=new Set(t.visibleViewIDs);return t.current.filter(({id:n})=>e.has(n))},get VIE(){return t.current.find(({id:e})=>e===t.idOfVIE)},get options(){return t.current.map(e=>({label:e.name,value:e.id,type:e.type}))}})).actions(t=>({reset(){const e=t.original.map(n=>({...n}));t.current.length=0,t.current.unshift(...e)},replace(e){t.current=y.cast(e)},addANewView(e,n,i){t.current.push({id:e,name:e,type:n,config:i,panels:{current:[],original:[]}})},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(i=>i.id===e);n!==-1&&t.current.splice(n,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},setIDOfVIE(e){t.idOfVIE=e,t.visibleViewIDs.length=0,t.visibleViewIDs.push(e)},addAPanelToVIE(){var e;(e=t.VIE)==null||e.panels.addANewPanel()}})).actions(t=>({addARandomNewView(){const e=U.randomId();t.addANewView(e,fe.Division,{}),t.setIDOfVIE(e)},removeVIE(){t.current.length!==1&&(t.removeByID(t.idOfVIE),t.setIDOfVIE(t.current[0].id))},rmVisibleViewID(e){const n=t.visibleViewIDs.findIndex(i=>i===e);n!==-1&&t.visibleViewIDs.splice(n,1)}}));function Br(t){const e=t.length>0?[t[0].id]:[],n=t.length>0?t[0].id:"",i=t.map(s=>({...s,panels:{original:s.panels,current:s.panels}}));return Kt.create({original:i,current:i,visibleViewIDs:e,idOfVIE:n})}const cc=y.types.model({id:y.types.identifier,name:y.types.string,filters:Vr,queries:Fr,sqlSnippets:Rr,views:Kt,context:Gr}).views(t=>({get payloadForSQL(){return{context:t.context.current,sqlSnippets:t.sqlSnippets.current,filterValues:t.filters.values}},get data(){return t.queries.current.map(({id:n,data:i})=>({id:n,data:i})).reduce((n,i)=>(n[i.id]=i.data,n),{})},getDataStuffByID(e){const n=t.queries.findByID(e);return n?{data:n.data.toJSON(),state:n.state,error:void 0}:{data:[],state:"idle",error:void 0}},getDataStateByID(e){var n,i;return(i=(n=t.queries.findByID(e))==null?void 0:n.state)!=null?i:[]},getDataErrorByID(e){var n,i;return(i=(n=t.queries.findByID(e))==null?void 0:n.error)!=null?i:[]}}));function Zt({id:t,name:e,filters:n,views:i,definition:{queries:s,sqlSnippets:o}},l){return cc.create({id:t,name:e,filters:zr(n),queries:{original:s,current:s},sqlSnippets:{original:o,current:o},context:l,views:Br(i)})}const Uc="",dc=A.observer(function({context:e,dashboard:n,update:i,className:s="dashboard",config:o}){Te.baseURL!==o.apiBaseURL&&(Te.baseURL=o.apiBaseURL);const[l,u]=b.default.useState(!1),d=b.default.useMemo(()=>Zt(n,e),[n]);b.default.useEffect(()=>{d.context.replace(e)},[e]);const h=async()=>{const m=[...d.queries.current],g=[...d.sqlSnippets.current],v=[...d.views.json],D={...n,filters:[...d.filters.current],views:v,definition:{sqlSnippets:g,queries:m}};await i(D)},f=B.useCreation(mr,[]);return r(he.ModalsProvider,{children:r(yt,{value:d,children:r(oe.Provider,{value:{layoutFrozen:l,freezeLayout:u,inEditMode:!0,inUseMode:!1},children:r(a.Box,{className:`${s} dashboard-root`,sx:{position:"relative"},children:r(me.Provider,{value:f,children:d.views.visibleViews.map(m=>r(Tr,{view:m,saveDashboardChanges:h},m.id))})})})})})});function pc({context:t,dashboard:e,className:n="dashboard",config:i}){Te.baseURL!==i.apiBaseURL&&(Te.baseURL=i.apiBaseURL);const s=b.default.useMemo(()=>Zt(e,t),[e]);return b.default.useEffect(()=>{s.context.replace(t)},[t]),r(he.ModalsProvider,{children:r(yt,{value:s,children:r(oe.Provider,{value:{layoutFrozen:!0,freezeLayout:P.default.noop,inEditMode:!1,inUseMode:!0},children:r(a.Box,{className:`${n} dashboard-root dashboard-sticky-parent`,children:s.views.visibleViews.map(o=>r(Dr,{view:o},o.id))})})})})}T.ContextModel=Gr,T.Dashboard=dc,T.DashboardFilterType=En,T.DashboardMode=Mn,T.EViewComponentType=fe,T.FilterModel=Yt,T.FiltersModel=Vr,T.LayoutStateContext=oe,T.MainDashboardView=Tr,T.ModelContextProvider=yt,T.Panel=it,T.PanelContextProvider=Cn,T.QueriesModel=Fr,T.QueryModel=qr,T.ReadOnlyDashboard=pc,T.ReadOnlyDashboardView=Dr,T.SQLSnippetModel=Xt,T.SQLSnippetsModel=Rr,T.ViewModel=Jt,T.ViewsModel=Kt,T.createDashboardModel=Zt,T.createDashboardViewsModel=Br,T.getInitialFiltersPayload=zr,T.useModelContext=Q,T.usePanelContext=Z,Object.defineProperties(T,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
39
+ `,wn=k.observer(function({showSQLSnippets:e=!0,sx:n={}}){const i=Q(),s=i.context.current,o=b.default.useMemo(()=>{const l={context:s,filters:i.filters.values};if(e){const u=i.sqlSnippets.current.reduce((d,h)=>(d[h.key]=h.value,d),{});l.sql_snippets=u}return JSON.stringify(l,null,2)},[s,i.sqlSnippets.current,i.filters.values,e]);return c(a.Stack,{sx:{border:"1px solid #eee",maxWidth:"40%",overflow:"hidden",...n},children:[r(a.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:r(a.Text,{weight:500,children:"Global Variables"})}),c(a.Stack,{px:"md",pb:"md",sx:{width:"100%"},children:[r(Ie.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:Gi}),r(a.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),r(Ie.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:o})]})]})});function Ri({data:t}){return t.length===0?r(a.Box,{sx:{height:"5em"}}):c(a.Table,{children:[r("thead",{children:r("tr",{children:Object.keys(t==null?void 0:t[0]).map(e=>r("th",{children:r(a.Text,{weight:700,color:"#000",children:e})},e))})}),r("tbody",{children:t.slice(0,10).map((e,n)=>r("tr",{children:Object.values(e).map((i,s)=>r("td",{children:r(a.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:r(a.Text,{children:i})})},`${i}--${s}`))},`row-${n}`))})]})}const Sn=k.observer(function({id:e}){const n=Q(),{data:i,state:s}=n.getDataStuffByID(e),o=s==="loading",l=()=>{n.queries.refetchDataByQueryID(e)};return c(a.Stack,{my:"xl",sx:{border:"1px solid #eee"},children:[c(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[c(a.Group,{position:"left",children:[r(a.Text,{weight:500,children:"Preview Data"}),i.length>10&&c(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",i.length]})]}),r(a.ActionIcon,{mr:15,variant:"subtle",color:"blue",disabled:o,onClick:l,children:r(_.Refresh,{size:15})})]}),c(a.Box,{sx:{position:"relative"},children:[r(a.LoadingOverlay,{visible:o}),r(Ri,{data:i})]})]})}),Bi=C.forwardRef(({label:t,type:e,...n},i)=>c(a.Group,{position:"apart",ref:i,...n,children:[r(a.Text,{children:t}),r(a.Text,{children:e})]})),In=k.observer(function({value:e,onChange:n}){const{data:i=[],loading:s}=L.useRequest(Vi,{refreshDeps:[]},[]),o=C.useMemo(()=>i.map(u=>({label:u.key,value:u.key,type:u.type})),[i]),l=C.useMemo(()=>o.reduce((u,d)=>(u[d.value]=d.type,u),{}),[o]);return r(a.Select,{label:"Data Source",data:o,itemComponent:Bi,sx:{flex:1},disabled:s,value:e.key,onChange:u=>{u!==null&&n({key:u,type:l[u]})}})});function Tn({value:t}){const e=Q(),n=e.context.current,i=b.default.useMemo(()=>yn(t,n,e.sqlSnippets.current,e.filters.values),[t,n,e.sqlSnippets.current,e.filters.values]);return r(Ie.Prism,{language:"sql",colorScheme:"light",children:i})}const Li=k.observer(function({queryModel:e,setCurrentID:n}){const i=b.default.useRef(e.id),[s,o]=b.default.useState(i.current);b.default.useEffect(()=>{i.current!==e.id&&(o(e.id),i.current=e.id)},[i,e.id]);const[l,u]=b.default.useState(e.sql);b.default.useEffect(()=>{u(m=>m!==e.sql?e.sql:m)},[e.sql]);const d=l!==e.sql,h=()=>{e.setSQL(l)},f=()=>{n(s),e.setID(s)};return c(a.Stack,{sx:{border:"1px solid #eee",flexGrow:1},children:[r(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:r(a.Text,{weight:500,children:"Edit Query"})}),c(a.Stack,{my:0,p:"md",pr:40,children:[c(a.Group,{grow:!0,children:[r(a.TextInput,{placeholder:"An ID unique in this dashboard",label:"ID",required:!0,sx:{flex:1},value:s,onChange:m=>{o(m.currentTarget.value)},rightSection:r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:s===e.id,onClick:f,children:r(_.DeviceFloppy,{size:18})})}),r(In,{value:{type:e.type,key:e.key},onChange:({type:m,key:g})=>{e.setKey(g),e.setType(m)}})]}),c(a.Tabs,{defaultValue:"SQL",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"SQL",children:"SQL"}),r(a.Tabs.Tab,{value:"Preview",children:"Preview"})]}),r(a.Tabs.Panel,{value:"SQL",pt:"sm",children:c(a.Box,{sx:{position:"relative"},children:[r(a.Textarea,{autosize:!0,minRows:12,maxRows:24,className:"code-textarea",value:l,onChange:m=>{u(m.currentTarget.value)}}),r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",sx:{position:"absolute",right:10,top:10},disabled:!d,onClick:h,children:r(_.DeviceFloppy,{size:20})})]})}),r(a.Tabs.Panel,{value:"Preview",pt:"sm",children:r(Tn,{value:e.sql})})]})]})]})}),Ni=k.observer(function({id:e,setID:n}){const i=Q(),s=b.default.useMemo(()=>i.queries.findByID(e),[i.queries,e]);return e?s?r(Li,{queryModel:s,setCurrentID:n}):r("span",{children:"Invalid Query ID"}):null});var pe=(t=>(t.Postgresql="postgresql",t.MySQL="mysql",t.HTTP="http",t))(pe||{});const $i=k.observer(function({id:e,setID:n}){const i=Q(),s=()=>{var l;n((l=i.queries.firstID)!=null?l:"")};b.default.useEffect(()=>{if(!e){s();return}i.queries.current.findIndex(u=>u.id===e)===-1&&s()},[e,i.queries.current,s]);const o=()=>{const l=U.randomId();i.queries.append(y.cast({id:l,type:pe.Postgresql,key:"",sql:""})),n(l)};return r(a.Group,{pb:"xl",children:c(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[r(a.Text,{children:"Select a Query"}),r(a.Select,{data:i.queries.options,value:e,onChange:n,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}}),r(a.Text,{children:"or"}),r(a.Group,{position:"center",mt:"md",children:r(a.Button,{onClick:o,children:"Add a Query"})})]})})}),ji=k.observer(function(){const[e,n]=b.default.useState("");return c(a.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:[c(a.Group,{position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[c(a.Stack,{sx:{flexGrow:1,maxWidth:"calc(60% - 16px)"},children:[r($i,{id:e,setID:n}),r(Ni,{id:e,setID:n})]}),r(wn,{})]}),r(Sn,{id:e})]})});function Wi({value:t}){const n=Q().context.current,i=b.default.useMemo(()=>Mi(t,n),[t,n]);return c(a.Stack,{children:[r(a.Text,{children:"Preview"}),r(Ie.Prism,{language:"sql",noCopy:!0,colorScheme:"dark",children:i})]})}const Qi=k.observer(function(){const e=Q(),n=()=>e.sqlSnippets.append(y.cast({key:U.randomId(),value:""}));return c(a.Stack,{sx:{border:"1px solid #eee",flexGrow:1},children:[r(a.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:r(a.Text,{weight:500,children:"SQL Snippets"})}),r(a.Group,{px:"md",pb:"md",pt:"md",children:c(a.Stack,{sx:{width:"100%",position:"relative"},children:[e.sqlSnippets.current.map((i,s)=>c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(a.TextInput,{label:"Key",required:!0,value:i.key,onChange:o=>{i.setKey(o.currentTarget.value)}}),r(a.Textarea,{minRows:3,label:"Value",required:!0,value:i.value,onChange:o=>{i.setValue(o.currentTarget.value)},className:"code-textarea"}),r(Wi,{value:i.value}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>e.sqlSnippets.remove(s),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},s)),r(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"40%"},mx:"auto",children:r(a.Button,{variant:"default",onClick:n,children:"Add a snippet"})})]})})]})});function Yi(){return r(a.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:c(a.Group,{position:"apart",grow:!0,align:"stretch",noWrap:!0,children:[r(Qi,{}),r(wn,{showSQLSnippets:!1})]})})}const Ui=k.observer(function({opened:e,close:n}){const{freezeLayout:i}=b.default.useContext(oe);return b.default.useEffect(()=>{i(e)},[e]),r(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Data Settings",trapFocus:!0,onDragStart:s=>{s.stopPropagation()},children:c(a.Tabs,{defaultValue:"Queries",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"SQL Snippet",children:"SQL Snippet"}),r(a.Tabs.Tab,{value:"Queries",children:"Queries"})]}),r(a.Tabs.Panel,{value:"SQL Snippet",pt:"sm",children:r(Yi,{})}),r(a.Tabs.Panel,{value:"Queries",pt:"sm",children:r(ji,{})})]})})});var re=(t=>(t.Select="select",t.MultiSelect="multi-select",t.TextInput="text-input",t.Checkbox="checkbox",t.DateRange="date-range",t))(re||{});const Dn=y.types.model({type:y.types.enumeration("DataSourceType",[pe.Postgresql,pe.MySQL,pe.HTTP]),key:y.types.string,sql:y.types.string}),_n=y.types.model("FilterConfigModel_TextInput",{required:y.types.boolean,default_value:y.types.string}).actions(t=>({setRequired(e){t.required=e},setDefaultValue(e){t.default_value=e}})),kn=()=>_n.create({required:!1,default_value:""}),Xi=k.observer(function({config:e}){return r($,{children:r(a.Checkbox,{checked:e.default_value,onChange:n=>e.setDefaultValue(n.currentTarget.checked),label:"Default Checked"})})}),Ji=[{label:"2022",value:"YYYY"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}],Ki=k.observer(function({config:e}){return c($,{children:[c(a.Group,{children:[r(a.Checkbox,{checked:e.required,onChange:n=>e.setRequired(n.currentTarget.checked),label:"Required"}),r(a.Checkbox,{checked:e.clearable,onChange:n=>e.setClearable(n.currentTarget.checked),label:"Clearable"})]}),r(a.Select,{data:Ji,label:"Display Format",value:e.inputFormat,onChange:e.setInputFormat})]})});function Zi({data:t}){return t.length===0?r(a.Box,{sx:{height:"5em"}}):c(a.Table,{children:[r("thead",{children:r("tr",{children:Object.keys(t==null?void 0:t[0]).map(e=>r("th",{children:r(a.Text,{weight:700,color:"#000",children:e})},e))})}),r("tbody",{children:t.slice(0,3).map((e,n)=>r("tr",{children:Object.values(e).map((i,s)=>r("td",{children:r(a.Group,{sx:{"&, .mantine-Text-root":{fontFamily:"monospace"}},children:r(a.Text,{children:i})})},`${i}--${s}`))},`row-${n}`))}),t.length>3&&r("tfoot",{children:r("tr",{children:r("td",{colSpan:Object.keys(t==null?void 0:t[0]).length,children:c(a.Text,{color:"gray",size:"sm",children:[t.length-3," more row(s) hidden"]})})})})]})}const Hi=k.observer(function({query:e}){const{data:n=[],loading:i,refresh:s}=L.useRequest(bt(e),{refreshDeps:[e]});return c(a.Stack,{my:0,children:[c(a.Group,{position:"apart",children:[r(a.Text,{size:"md",pl:"sm",children:"Fetched Data"}),r(a.Button,{size:"xs",onClick:s,disabled:!e.sql||!e.key,children:"Retry"})]}),c(a.Box,{sx:{position:"relative"},children:[r(a.LoadingOverlay,{visible:i,exitTransitionDuration:0}),r(Zi,{data:n})]})]})}),An=k.observer(function({value:e,onChange:n}){return c(a.Stack,{my:0,children:[r(In,{value:e,onChange:({type:i,key:s})=>{n({...e,type:i,key:s})}}),c(a.Tabs,{defaultValue:"SQL",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"SQL",children:"SQL"}),r(a.Tabs.Tab,{value:"Preview",children:"Preview"}),r(a.Tabs.Tab,{value:"Data",children:"Data"})]}),r(a.Tabs.Panel,{value:"SQL",pt:"sm",children:r(a.Textarea,{autosize:!0,minRows:12,maxRows:24,className:"code-textarea",value:e.sql,onChange:i=>{n({...e,sql:i.currentTarget.value})},placeholder:"SELECT name AS label, id AS value"})}),r(a.Tabs.Panel,{value:"Preview",pt:"sm",children:r(Tn,{value:e.sql})}),r(a.Tabs.Panel,{value:"Data",pt:"sm",children:r(Hi,{query:e})})]})]})}),ea=k.observer(function({config:e}){const n=()=>{e.addStaticOption({label:"",value:""})},i=e.static_options,s=[...i];return c($,{children:[r(a.Divider,{label:"Configure options",labelPosition:"center"}),i.length>0&&r(a.MultiSelect,{label:"Default Selection",data:s,value:e.default_value,onChange:e.setDefaultValue}),i.map((o,l)=>c(a.Group,{sx:{position:"relative"},pr:"40px",children:[r(a.TextInput,{label:"Label",required:!0,value:e.static_options[l].label,onChange:u=>{e.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.TextInput,{label:"Value",required:!0,value:e.static_options[l].value,onChange:u=>{e.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>e.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:r(_.Trash,{size:16})})]})),r(a.Button,{size:"xs",color:"blue",leftIcon:r(_.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),r(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),r(An,{value:e.options_query,onChange:e.setOptionsQuery})]})}),ta=k.observer(function({config:e}){const n=()=>{e.addStaticOption({label:"",value:""})},i=e.static_options,s=[{label:"No default selection",value:""},...i];return c($,{children:[r(a.Checkbox,{checked:e.required,onChange:o=>e.setRequired(o.currentTarget.checked),label:"Required"}),r(a.Divider,{label:"Configure options",labelPosition:"center"}),i.length>0&&r(a.Select,{label:"Default Selection",data:s,value:e.default_value,onChange:e.setDefaultValue}),i.map((o,l)=>c(a.Group,{sx:{position:"relative"},pr:"40px",children:[r(a.TextInput,{label:"Label",required:!0,value:e.static_options[l].label,onChange:u=>{e.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.TextInput,{label:"Value",required:!0,value:e.static_options[l].value,onChange:u=>{e.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>e.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:r(_.Trash,{size:16})})]},l)),r(a.Button,{size:"xs",color:"blue",leftIcon:r(_.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),r(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),r(An,{value:e.options_query,onChange:e.setOptionsQuery})]})}),na=k.observer(function({config:e}){return c($,{children:[r(a.TextInput,{label:"Default Value",value:e.default_value,onChange:n=>{e.setDefaultValue(n.currentTarget.value)}}),r(a.Checkbox,{checked:e.required,onChange:n=>e.setRequired(n.currentTarget.checked),label:"Required"})]})}),ra=k.observer(function({filter:e}){const n=e.config.default_value,[i,s]=b.default.useState(n);return b.default.useEffect(()=>{s(n)},[n]),c(a.Box,{sx:{maxWidth:"30em"},children:[r(a.Text,{pb:"md",color:"gray",children:"Preview"}),r(vn,{filter:e,value:i,onChange:s}),r(a.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),r(Ie.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(e,null,4)})]})}),ia={select:ta,"multi-select":ea,"text-input":na,checkbox:Xi,"date-range":Ki},aa=[{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"}],sa=k.observer(function({filter:e,index:n}){const i=Q(),s=b.default.useMemo(()=>ia[e.type],[e.type]);return c(a.SimpleGrid,{cols:2,children:[c(a.Box,{pl:"md",children:[r(a.Text,{pb:"md",color:"gray",children:"Edit"}),c(a.Stack,{sx:{maxWidth:"30em"},children:[r(a.NumberInput,{label:"Placement Order",required:!0,value:e.order,onChange:e.setOrder,hideControls:!0}),r(a.MultiSelect,{label:"Visible in...",data:i.views.options,value:e.visibleInViewsIDs,onChange:e.setVisibleInViewsIDs}),r(a.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,value:e.key,onChange:o=>{e.setKey(o.currentTarget.value)}}),r(a.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:e.label,onChange:o=>{e.setLabel(o.currentTarget.value)}}),r(a.Select,{label:"Widget",data:aa,required:!0,value:e.type,onChange:e.setType}),r(s,{config:e.config,index:n})]})]}),r(ra,{filter:e})]})}),Qc="",oa=k.observer(function(){const e=Q(),n=e.filters.current,i=()=>{const s=U.randomId(),o={id:s,key:s,label:s,order:n.length+1,type:re.TextInput,config:kn(),visibleInViewsIDs:["Main"]};e.filters.append(o)};return c(a.Box,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)"},p:0,children:[r(a.Group,{sx:{position:"absolute",top:"16px",right:"16px"},children:r(a.Button,{size:"xs",color:"red",leftIcon:r(_.Recycle,{size:20}),disabled:!e.filters.changed,onClick:e.filters.reset,children:"Revert Changes"})}),r(a.Tabs,{className:"filter-settings-tabs",orientation:"vertical",defaultValue:e.filters.firstID,styles:{root:{display:"block"}},children:c(a.Group,{sx:{height:"100%"},children:[c(a.Stack,{sx:{height:"100%"},children:[r(a.Tabs.List,{position:"left",sx:{flexGrow:1,width:"200px"},children:e.filters.current.map(s=>r(a.Tabs.Tab,{value:s.id,children:s.label},s.id))}),r(a.Button,{size:"xs",color:"blue",leftIcon:r(_.PlaylistAdd,{size:20}),onClick:i,children:"Add a Filter"})]}),r(a.Box,{sx:{flexGrow:1,height:"100%"},children:e.filters.current.map((s,o)=>r(a.Tabs.Panel,{value:s.id,sx:{height:"100%"},children:c(a.Stack,{sx:{height:"100%"},spacing:"sm",children:[r(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"scroll"},children:r(sa,{filter:s,index:o})}),r(a.Group,{position:"right",pt:10,children:r(a.Button,{size:"xs",color:"red",leftIcon:r(_.Trash,{size:20}),onClick:()=>e.filters.remove(o),children:"Delete this filter"})})]})},s.id))})]})})]})}),la=k.observer(function({opened:e,close:n}){const{freezeLayout:i}=b.default.useContext(oe);return b.default.useEffect(()=>{i(e)},[e]),r(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:"Filters",trapFocus:!0,onDragStart:s=>{s.stopPropagation()},withCloseButton:!1,children:r(oa,{})})});var Mn=(t=>(t.Use="use",t.Edit="edit",t))(Mn||{}),fe=(t=>(t.Division="div",t.Modal="modal",t))(fe||{}),En=(t=>(t.Select="select",t.MultiSelect="multi-select",t.TextInput="text-input",t.Checkbox="checkbox",t.DateRange="date-range",t))(En||{});const ua=k.observer(()=>{const e=Q().views.VIE;return!e||e.type!==fe.Division?null:c(a.Stack,{children:[r(a.Divider,{mt:8,mb:0,label:"Division settings",labelPosition:"center"}),r(a.Text,{align:"center",size:"xs",color:"dimmed",children:"Under construction"})]})}),ca=k.observer(()=>{const e=Q().views.VIE;return!e||e.type!==fe.Modal?null:c(a.Stack,{children:[r(a.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),c(a.Group,{grow:!0,children:[r(a.TextInput,{label:"Width",value:e.config.width,onChange:n=>e.updateConfig("width",n.currentTarget.value),placeholder:"600px / 50vw"}),r(a.TextInput,{label:"Height",value:e.config.height,onChange:n=>e.updateConfig("height",n.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),da=k.observer(()=>c($,{children:[r(ua,{}),r(ca,{})]})),pa=[{label:"Division",value:fe.Division},{label:"Modal",value:fe.Modal}],fa=k.observer(()=>{const e=Q().views.VIE;return e?c(a.Stack,{sx:{position:"relative"},children:[r(a.TextInput,{label:"Name",value:e.name,onChange:n=>{e.setName(n.currentTarget.value)}}),r(a.Select,{label:"Type",value:e.type,onChange:e.setType,data:pa}),r(da,{})]}):null}),ha=k.observer(({opened:t,close:e})=>{var s;const n=Q(),{freezeLayout:i}=b.default.useContext(oe);return b.default.useEffect(()=>{i(t)},[t]),r(a.Modal,{size:"500px",overflow:"inside",opened:t,onClose:e,withCloseButton:!1,styles:{header:{width:"100%"},title:{width:"100%"}},title:c(a.Group,{position:"apart",children:[c(a.Text,{sx:{flexGrow:1},children:["Editing ",(s=n.views.VIE)==null?void 0:s.name]}),r(a.ActionIcon,{size:18,color:"red",onClick:n.views.removeVIE,disabled:n.views.isVIETheFirstView,children:r(_.Trash,{size:18})})]}),trapFocus:!0,onDragStart:o=>{o.stopPropagation()},children:r(fa,{})})}),ga=C.forwardRef(({label:t,type:e,...n},i)=>e!=="TRIGGER_TO_ADD"?r("div",{ref:i,...n,children:c(a.Group,{noWrap:!0,position:"apart",children:[r(a.Text,{size:"sm",children:t}),r(a.Text,{size:"xs",color:"dimmed",children:e})]})}):r("div",{ref:i,...n,children:r(a.Group,{noWrap:!0,grow:!0,children:r(a.Text,{size:"sm",align:"center",color:"#228be6",children:t})})})),Vn="TRIGGER_TO_ADD",ma=k.observer(({value:t,onChange:e,triggerAdd:n,triggerEdit:i,options:s})=>{const o=C.useMemo(()=>[...s,{label:"Add a View",value:Vn,type:"TRIGGER_TO_ADD"}],[s,n]),l=u=>{u!==Vn?e(u):n()};return c(a.Group,{position:"left",spacing:0,sx:{minWidth:"260px"},children:[r(a.Select,{value:t,onChange:l,placeholder:"Pick a View",itemComponent:ga,data:o,nothingFound:"Empty",sx:{flexGrow:1},styles:{input:{borderTopRightRadius:0,borderBottomRightRadius:0}}}),r(a.ActionIcon,{onClick:i,variant:"default",size:36,sx:{borderLeft:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,"&:active":{transform:"none",svg:{transform:"translateY(1px)"}}},children:r(_.Settings,{size:20})})]})}),ya=k.observer(()=>{const t=Q(),[e,n]=C.useState(!1),i=()=>{n(!0)},s=()=>{n(!1)};return c($,{children:[r(ma,{value:t.views.idOfVIE,onChange:t.views.setIDOfVIE,triggerAdd:t.views.addARandomNewView,triggerEdit:i,options:t.views.options}),r(ha,{opened:e,close:s})]})});function va({opened:t,close:e,getCurrentSchema:n}){const{freezeLayout:i}=b.default.useContext(oe);b.default.useEffect(()=>{i(t)},[t]);const s=b.default.useMemo(()=>JSON.stringify(n(),null,2),[t]);return r(a.Modal,{size:"96vw",overflow:"inside",opened:t,onClose:e,title:"This dashboard is described by this schema",trapFocus:!0,onDragStart:o=>{o.stopPropagation()},children:t&&r(Ie.Prism,{language:"json",sx:{width:"100%"},colorScheme:"dark",children:s})})}const zn=k.observer(function({saveChanges:e}){const n=Q(),i=b.default.useCallback(()=>{const H=n.queries.current,Ne=n.views.current,Me=n.sqlSnippets.current;return{filters:n.filters.current,views:Ne,definition:{sqlSnippets:Me,queries:H}}},[n]),s=()=>{n.filters.reset(),n.views.reset(),n.sqlSnippets.reset(),n.queries.reset()},o=n.views.changed||n.sqlSnippets.changed||n.queries.changed||n.filters.changed,{inEditMode:l,inUseMode:u}=b.default.useContext(oe),[d,h]=b.default.useState(!1),f=()=>h(!0),m=()=>h(!1),[g,v]=b.default.useState(!1),D=()=>v(!0),A=()=>v(!1),[V,B]=b.default.useState(!1),R=()=>B(!0),ue=()=>B(!1);return c(a.Group,{position:"apart",pt:0,px:10,pb:"xs",children:[r(a.Group,{position:"left",children:l&&r(ya,{})}),c(a.Group,{position:"right",children:[!u&&r(a.Button,{variant:"default",size:"xs",disabled:!n.views.VIE,onClick:n.views.addAPanelToVIE,leftIcon:r(_.PlaylistAdd,{size:20}),children:"Add a Panel"}),l&&r(a.Button,{variant:"default",size:"xs",onClick:D,leftIcon:r(_.Filter,{size:20}),children:"Filters"}),l&&r(a.Button,{variant:"default",size:"xs",onClick:f,leftIcon:r(_.Database,{size:20}),children:"Data Settings"}),!u&&r(a.Button,{variant:"default",size:"xs",onClick:e,disabled:!o,leftIcon:r(_.DeviceFloppy,{size:20}),children:"Save Changes"}),!u&&r(a.Button,{color:"red",size:"xs",disabled:!o,onClick:s,leftIcon:r(_.Recycle,{size:20}),children:"Revert Changes"}),c(a.Menu,{width:180,children:[r(a.Menu.Target,{children:r(a.Button,{variant:"default",size:"xs",leftIcon:r(_.Share,{size:20}),children:"Export"})}),c(a.Menu.Dropdown,{children:[r(a.Menu.Item,{icon:r(_.Download,{size:14}),onClick:n.queries.downloadAllData,children:"Download Data"}),r(a.Menu.Item,{icon:r(_.Code,{size:14}),onClick:R,children:"View Schema"})]})]})]}),r(la,{opened:g,close:A}),r(Ui,{opened:d,close:m}),r(va,{opened:V,close:ue,getCurrentSchema:i})]})}),Yc="";function On(){const{freezeLayout:t}=b.default.useContext(oe),[e,n]=b.default.useState(!1),{panel:i}=K();return b.default.useEffect(()=>{t(e)},[e]),!i.description||i.description==="<p><br></p>"?null:c($,{children:[r(a.Modal,{opened:e,onClose:()=>n(!1),title:i.title,withCloseButton:!1,children:r(cn.default,{readOnly:!0,value:i.description,onChange:P.default.noop,sx:{border:"none"}})}),r(a.Tooltip,{label:"Click to see description",position:"top-start",children:r(a.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>n(s=>!s),sx:{verticalAlign:"baseline",cursor:"pointer"},children:r(_.InfoCircle,{size:20})})})]})}const Pn=t=>{const{title:e="Variables",variables:n}=t,i=U.useClipboard(),s=o=>{i.copy(o),ft.showNotification({color:"green",message:"Copied to clipboard"})};return c(a.Paper,{withBorder:!0,p:"sm",children:[r(a.Text,{size:"xs",color:"dimmed",mb:"sm",children:e}),r(a.Stack,{style:{maxHeight:"300px"},children:n.map(o=>c(a.Text,{size:"sm",children:[c(a.Code,{color:"teal",children:["// ",o.description]}),r("br",{}),c(a.Code,{onClick:()=>s(o.name),style:{cursor:"pointer"},children:[o.name," : ",o.valueType]})]},o.name))})]})};class ba{constructor(e,n){E(this,"operationId");E(this,"operation");E(this,"operationSchema");E(this,"variables",[]);this.operationManager=e,this.instance=n,J.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(e,n){const i=await this.operationManager.retrieveTrigger(e),s=this.operationManager.getOperationSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));J.runInAction(()=>{this.operationId=e,this.operation=i,this.operationSchema=s,this.variables=n})}async changeSchema(e){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,e),await this.configOperation(this.operationId,this.variables))}}function xa(t){return!!t.operationId}const Ca=k.observer(({model:t,onClick:e})=>{var i;const n=(i=t.operationSchema)==null?void 0:i.displayName;return r(a.Button,{variant:"outline",onClick:e,children:n})}),wa=k.observer(({model:t})=>{const e={operation:t.operation,instance:t.instance,variables:[]};return C.createElement(t.operationSchema.configRender,e)});function Sa({model:t}){const e=t.schemaList,n=e.map(s=>({label:s.displayName,value:s.id}));async function i(s){await t.changeSchema(e.find(o=>o.id===s))}return r(a.Select,{label:"Operation",data:n,onChange:i,value:t.operationSchema.id})}const Ia=k.observer(t=>{const[e,{setTrue:n,setFalse:i}]=L.useBoolean(!1),{operationManager:s,operationId:o,instance:l,variables:u}=t,d=L.useCreation(()=>new ba(s,l),[s,l]);return L.useAsyncEffect(async()=>{await d.configOperation(o,u)},[o,d]),xa(d)?c($,{children:[r(Ca,{model:d,onClick:n}),r(a.Modal,{opened:e,onClose:i,title:"Operation Settings",closeButtonLabel:"close",children:c(a.Stack,{children:[r(Sa,{model:d}),r(wa,{model:d}),r(Pn,{title:"Variables",variables:d.variables})]})})]}):null});class Ta{constructor(e,n){E(this,"triggerId");E(this,"trigger");E(this,"triggerSchema");E(this,"sampleData");this.triggerManager=e,this.instance=n,J.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(e,n){const i=await this.triggerManager.retrieveTrigger(e),s=this.triggerManager.getTriggerSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));J.runInAction(()=>{this.triggerId=e,this.trigger=i,this.triggerSchema=s,this.sampleData=n})}async changeSchema(e){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,e),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return Da(this)}}function Da(t){return!!t.triggerId&&!!t.triggerSchema}function _a(t,e){return L.useCreation(()=>new Ta(t,e),[t,e])}const ka=k.observer(({model:t,onClick:e})=>{const n=t.triggerSchema.nameRender,i={trigger:t.trigger,instance:t.instance,sampleData:t.sampleData};return r(a.Button,{variant:"outline",onClick:e,children:C.createElement(n,i)})}),Aa=k.observer(({model:t})=>{const e=t.schemaList,n=e.map(s=>({label:s.displayName,value:s.id}));async function i(s){await t.changeSchema(e.find(o=>o.id===s))}return r(a.Select,{label:"Trigger",data:n,value:t.triggerSchema.id,onChange:i})}),Ma=k.observer(({model:t})=>{const e={trigger:t.trigger,instance:t.instance,sampleData:t.sampleData};return C.createElement(t.triggerSchema.configRender,e)}),Ea=k.observer(t=>{const[e,{setTrue:n,setFalse:i}]=L.useBoolean(!1),s=t.model;return c($,{children:[r(a.Modal,{opened:e,onClose:i,title:"Setup Trigger",closeButtonLabel:"close setup",children:c(a.Stack,{children:[r(Aa,{model:s}),r(Ma,{model:s}),r(Pn,{title:"Payload",variables:s.triggerSchema.payload})]})}),r(ka,{onClick:n,model:s})]})});class Ae{constructor(e,n){this.root=e,this.path=n}async deleteItem(e){e===null&&await this.root.deleteItem(this.path);const n=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,S.omit(n,e))}async getItem(e){const n=await this.root.getItem(this.path);return e===null?n:S.get(n,e)}async setItem(e,n){if(e===null)await this.root.setItem(this.path,n);else{const i=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...i,[e]:n})}return await this.getItem(e)}watchItem(e,n,i){return e===null?this.root.watchItem(this.path,(s,o)=>{n(s,o)},i):this.root.watchItem(this.path,(s,o)=>{const l=S.get(s,e),u=S.get(o,e);l!==u&&n(l,u)},i)}}class xt{constructor(e,n,i){E(this,"attachmentStorage");this.instance=e,this.attachmentKey=n,this.constructInstance=i,this.attachmentStorage=new Ae(e.instanceData,n)}async getInstance(e){if(await this.attachmentStorage.getItem(e))return this.constructInstance(new Ae(this.attachmentStorage,e))}async create(e,n){return await this.attachmentStorage.setItem(e,n),this.constructInstance(new Ae(this.attachmentStorage,e))}async remove(e){await this.attachmentStorage.deleteItem(e)}async list(){const e=await this.attachmentStorage.getItem(null);return Promise.all(S.values(e).map(n=>this.constructInstance(new Ae(this.attachmentStorage,n.id))))}}class qn{constructor(e){E(this,"rootRef");this.rootRef=J.observable({current:e})}async deleteItem(e){J.runInAction(()=>{S.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?J.toJS(this.rootRef.current):S.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(S.isObject(n))J.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else J.runInAction(()=>{S.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,i){return J.reaction(()=>this.getValueFromRoot(e),(s,o)=>{n(s,o)},{requiresObservable:!0,fireImmediately:S.get(i,"fireImmediately",!1)})}}class Va{constructor(){E(this,"channels",new Map);E(this,"globalChannel",new dn.default)}getChannel(e){const n=this.channels.get(e);if(n)return n;const i=new dn.default;return this.channels.set(e,i),i}}class za{constructor(e){E(this,"instances",new Map);this.pluginManager=e}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(e=>e.manifest.viz)}resolveComponent(e){return this.pluginManager.factory.viz(e)}getOrCreateInstance(e){const n=this.instances.get(e.id);if(n)return n;const i={id:e.id,name:e.viz.type,type:e.viz.type,messageChannels:new Va,instanceData:new qn(e.viz.conf)};return this.instances.set(e.id,i),i}}function Fn(t,e,n){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new qn({}),colorPalette:{getColor(){return()=>""}},data:e}}const Oa=t=>{const{panel:e,vizManager:n,data:i}=t,s=n.resolveComponent(e.viz.type),o=n.getOrCreateInstance(e),l={...Fn(o,i,n),viewport:{width:e.layout.w,height:e.layout.h}},u=s.viewRender;return r(u,{context:l,instance:o,...S.omit(t,["panel","vizManager","data"])})},Pa=t=>{const{vizManager:e,panel:n,panelInfoEditor:i,data:s}=t,o=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),u={...Fn(l,s,e),panelInfoEditor:i},d=o.configRender;return r(d,{context:u,instance:l,...S.omit(t,["panel","vizManager","data","panelInfoEditor"])})},Gn=(t,e)=>{const n=ze.default.bezier(t),i=ze.default.bezier(e);return function(s){return s<50?n(s*2/100).hex():i((s-50)*2/100).hex()}},Ye=t=>{const e=ze.default.bezier(t);return function(n){return e(n/100).hex()}},qa={type:"interpolation",displayName:"Red / Green",getColor:Gn(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Fa={type:"interpolation",displayName:"Yellow / Blue",getColor:Gn(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ga={type:"interpolation",displayName:"Red",getColor:Ye(["#fff7f1","darkred"]),name:"red",category:"sequential"},Ra={type:"interpolation",displayName:"Green",getColor:Ye(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ba={type:"interpolation",displayName:"Blue",getColor:Ye(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},La={type:"interpolation",displayName:"Orange",getColor:Ye(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},Na="4.10.0";class $a{constructor(e){E(this,"staticColors",new Map);E(this,"interpolations",new Map);e.installedPlugins.forEach(n=>{n.manifest.color.forEach(i=>{this.register(i)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(e){const n=this.encodeColor(e);e.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.staticColors.set(n,e)):e.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`,`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.interpolations.set(n,e))}decodeStaticColor(e){return this.staticColors.get(e)}encodeColor(e){return`\${${e.category}}.{${e.name}}`}decodeInterpolation(e){return this.interpolations.get(e)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class ja{constructor(){E(this,"plugins",new Map);E(this,"vizComponents",new Map);E(this,"factory",{viz:e=>{const n=this.vizComponents.get(e);if(n)return n;throw new Error(`Viz Component (${e}) not found`)}})}install(e){if(this.plugins.has(e.id))throw new Error(`Plugin (${e.id}) has been installed before`);this.plugins.set(e.id,e);for(const n of e.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Wa{constructor(){E(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n){var o;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(l=>l.version>e.from&&l.version<=e.to),s=S.orderBy(i,"version","asc");if(((o=S.last(s))==null?void 0:o.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return s.reduce((l,u)=>u.handler(l),n)}}class le extends Wa{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,i=>({version:e,...n(i)}))}async migrate({instanceData:e}){const n=await e.getItem(null),i=S.get(n,"version",0),s=this.run({from:i,to:this.VERSION},n);await e.setItem(null,s)}async needMigration({instanceData:e}){const n=await e.getItem(null);return S.get(n,"version",0)<this.VERSION}}const Ct={content:""},F=(t,e)=>{const[n,{setFalse:i}]=L.useBoolean(!0),[s,o]=C.useState();C.useEffect(()=>(t.getItem(e).then(u=>{o(u),i()}),t.watchItem(e,u=>{o(u)})));const l=C.useCallback(async u=>{await t.setItem(e,u),o(u)},[t,e]);return{loading:n,value:s,set:l}};function Rn(t){const e=C.useRef(null);return C.useEffect(()=>{var n,i,s;t&&((s=(i=(n=e.current)==null?void 0:n.editor)==null?void 0:i.clipboard)==null||s.dangerouslyPasteHTML(t))},[t]),e}function Qa({context:t}){const{value:e}=F(t.instanceData,"config"),n=e==null?void 0:e.content,i=Rn(n);return e!=null&&e.content?r(pt.RichTextEditor,{ref:i,readOnly:!0,value:e.content,onChange:S.noop,sx:{border:"none",".ql-editor":{padding:0}}}):null}function Ya({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=C.useMemo(()=>S.defaults({},e,Ct),[e]),{control:s,handleSubmit:o,watch:l,getValues:u}=w.useForm({defaultValues:i});l("content");const d=u(),h=C.useMemo(()=>!S.isEqual(d,e),[d,e]),f=Rn(e==null?void 0:e.content);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:o(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Content"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:r(_.DeviceFloppy,{size:20})})]}),r(w.Controller,{name:"content",control:s,render:({field:m})=>r(cn.default,{ref:f,sx:{flex:1},...S.omit(m,"ref")})})]})})}class Ua extends le{constructor(){super(...arguments);E(this,"VERSION",1)}fixMalformedConfig(n){return S.defaults({},n,Ct)}configVersions(){this.version(1,n=>({version:1,config:this.fixMalformedConfig(n)}))}}const Xa={displayName:"RichText",migrator:new Ua,name:"richText",viewRender:Qa,configRender:Ya,createConfig:()=>Ct},wt={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:{type:"none",config:{}},formatter:{output:"number",mantissa:0}}]};function Ja(t){if("variables"in t)return t;const{align:e,size:n,weight:i,color:s,content:{prefix:o="",data_field:l="value",formatter:u={output:"number",mantissa:0},postfix:d=""}={}}=t;return{align:e,template:`${o} \${value} ${d}`,variables:[{name:"value",data_field:l,aggregation:{type:"none",config:{}},formatter:u,color:s,weight:i,size:n}]}}class Ka extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({config:Ja(n)}))}}const St=C.forwardRef(function({value:e,onChange:n,...i},s){return r(a.TextInput,{ref:s,value:e,onChange:n,...i})}),It={mantissa:0,output:"number",trimMantissa:!1,average:!1};function Za({value:t,onChange:e},n){const i=u=>{e({...t,output:u})},s=u=>{const d=u===0?!1:t.trimMantissa;e({...t,mantissa:u,trimMantissa:d})},o=u=>{e({...t,trimMantissa:u.currentTarget.checked})},l=u=>{e({...t,average:u.currentTarget.checked})};return c(a.Stack,{ref:n,children:[c(a.Group,{grow:!0,children:[r(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:t.output,onChange:i,sx:{flexGrow:1}}),r(a.Switch,{label:c(a.Stack,{spacing:0,children:[r(a.Text,{children:"Average"}),r(a.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:t.average,onChange:l,disabled:t.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),c(a.Group,{grow:!0,children:[r(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:t.mantissa,onChange:s}),r(a.Switch,{label:"Trim mantissa",checked:t.trimMantissa,onChange:o,disabled:t.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),c(a.Stack,{spacing:0,children:[r(a.Text,{weight:"bold",children:"Preview"}),r(ke,{children:c(a.Group,{position:"apart",children:[c(a.Text,{size:12,color:"gray",children:["123456789 ",r(_.ArrowRight,{size:9})," ",se.default(123456789).format(t)]}),c(a.Text,{size:12,color:"gray",children:["1234 ",r(_.ArrowRight,{size:9})," ",se.default(1234).format(t)]}),c(a.Text,{size:12,color:"gray",children:["0.1234 ",r(_.ArrowRight,{size:9})," ",se.default(.1234).format(t)]})]})})]})]})}const Bn=b.default.forwardRef(Za);function Ue(){return{name:U.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:{type:"none",config:{}},formatter:It}}const Ha=[{label:"None",value:"none"},{label:"Sum",value:"sum"},{label:"Mean",value:"mean"},{label:"Median",value:"median"},{label:"Max",value:"max"},{label:"Min",value:"min"},{label:"Quantile(99%, 95%, ...)",value:"quantile"}];function es({label:t,value:e,onChange:n},i){C.useEffect(()=>{typeof e=="string"&&(console.log(e),n({type:e,config:{}}))},[e,n]);const s=l=>{n(l==="quantile"?{type:"quantile",config:{p:.99}}:{type:l,config:{}})},o=l=>{n({type:"quantile",config:{p:l}})};return c(a.Group,{grow:!0,noWrap:!0,pt:"sm",children:[r(a.Select,{ref:i,label:t,data:Ha,value:e.type,onChange:s}),e.type==="quantile"&&r(a.NumberInput,{label:"p",value:e.config.p,onChange:o,precision:2,min:.05,step:.05,max:1})]})}const ts=b.default.forwardRef(es);function ns({label:t,required:e,value:n,onChange:i,data:s,clearable:o=!1,sx:l,...u},d){const h=b.default.useMemo(()=>{if(!Array.isArray(s)||s.length===0)return[];const m=Object.keys(s[0]).map(g=>({label:g,value:g}));return o?m.concat([{label:"unset",value:""}]):m},[s]);return r(a.Select,{ref:d,label:t,data:h,value:n,onChange:i,required:e,sx:l,...u})}const j=b.default.forwardRef(ns);function rs({label:t,value:e,onChange:n},i){const[s,o]=b.default.useState(Array.isArray(e)?[...e]:[]),l=b.default.useCallback(()=>{o(g=>[...g,""])},[o]),u=b.default.useCallback(g=>{o(v=>(v.splice(g,1),[...v]))},[o]),d=b.default.useMemo(()=>!P.default.isEqual(s,e),[s,e]),h=()=>{n(s.map(g=>g.toString()))},f=a.useMantineTheme(),m=b.default.useMemo(()=>Object.entries(f.colors).map(([g,v])=>v[6]),[f]);return c($,{children:[c(a.Group,{position:"left",ref:i,children:[r(a.Text,{children:t}),r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:h,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Group,{children:[s.map((g,v)=>r(a.ColorInput,{value:g,onChange:D=>{o(A=>(A.splice(v,1,D),[...A]))},swatches:m,rightSection:r(a.ActionIcon,{onClick:()=>u(v),color:"red",children:r(_.Trash,{size:14})}),sx:{width:"45%"}})),r(a.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:r(_.PlaylistAdd,{size:20})})]})]})}const is=b.default.forwardRef(rs);function as({value:t,onChange:e},n){const{colorManager:i}=C.useContext(me),s=b.default.useMemo(()=>i.getStaticColors().map(u=>({label:u.name,group:u.category,value:u.value})),[i]),o=b.default.useMemo(()=>s.some(l=>l.value===t),[t,s]);return c(a.Group,{position:"apart",spacing:4,ref:n,children:[r(a.TextInput,{placeholder:"Set any color",value:o?"":t,onChange:l=>e(l.currentTarget.value),rightSection:r(a.ColorSwatch,{color:o?"transparent":t,radius:4}),variant:o?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),r(a.Text,{sx:{flexGrow:0},children:"or"}),r(a.Select,{data:s,value:t,onChange:e,variant:o?"default":"filled",placeholder:"Pick a theme color",icon:r(a.ColorSwatch,{color:o?t:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const ge=b.default.forwardRef(as),Xe=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function ss({label:t,value:e,onChange:n},i){var l,u;const[s,o]=b.default.useState((u=(l=Xe.find(d=>d.label===e))==null?void 0:l.value)!=null?u:Xe[0].value);return b.default.useEffect(()=>{const d=Xe.find(h=>h.value===s);d&&n(d.label)},[s]),c(a.Stack,{spacing:0,mt:"sm",mb:"lg",children:[r(a.Text,{size:"sm",children:t}),r(a.Slider,{label:null,marks:Xe,value:s,onChange:o,step:25,placeholder:"Pick a font size",ref:i})]})}const os=b.default.forwardRef(ss);function ls({label:t,value:e,onChange:n},i){const[s,o]=b.default.useState(Array.isArray(e)?[...e]:[]),l=b.default.useCallback(()=>{o(f=>[...f,""])},[o]),u=b.default.useCallback(f=>{o(m=>(m.splice(f,1),[...m]))},[o]),d=b.default.useMemo(()=>!P.default.isEqual(s,e),[s,e]),h=()=>{n(s.map(f=>f.toString()))};return c($,{children:[c(a.Group,{position:"left",ref:i,children:[r(a.Text,{children:t}),r(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:h,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Group,{children:[s.map((f,m)=>r(a.TextInput,{value:f,onChange:g=>{const v=g.currentTarget.value;o(D=>(D.splice(m,1,v),[...D]))},rightSection:r(a.ActionIcon,{onClick:()=>u(m),color:"red",children:r(_.Trash,{size:14})}),sx:{width:"45%"}})),r(a.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:r(_.PlaylistAdd,{size:20})})]})]})}const us=b.default.forwardRef(ls),cs=b.default.forwardRef(function({value:e,onChange:n},i){const s=e.color.type,o=(l,u)=>{const d=P.default.cloneDeep(e);P.default.set(d,l,u),n(d)};return c($,{children:[r(a.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),r(a.Stack,{children:r(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:e.size,onChange:l=>o("size",l.currentTarget.value)})}),r(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:r(os,{label:"Font Weight",value:e.weight,onChange:l=>o("weight",l)})}),r(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),c(a.Stack,{children:[r(a.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:e.color.type,onChange:l=>o("color.type",l)}),s==="static"&&r(ge,{value:e.color.staticColor,onChange:l=>o("color.staticColor",l)}),s==="continuous"&&c($,{children:[r(us,{label:"Value Range",value:e.color.valueRange,onChange:l=>o("color.valueRange",l)}),r(is,{label:"Color Range",value:e.color.colorRange,onChange:l=>o("color.colorRange",l)})]})]})]})}),Je=b.default.forwardRef(function({value:e,onChange:n,data:i,withStyle:s=!0},o){const l=(u,d)=>{const h=P.default.cloneDeep(e);P.default.set(h,u,d),n(h)};return c(a.Box,{px:"sm",py:"md",ref:o,children:[r(a.Text,{weight:"bold",pb:0,children:e.name}),r(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),c(a.Group,{grow:!0,noWrap:!0,children:[r(a.TextInput,{label:"Name",required:!0,value:e.name,onChange:u=>l("name",u.currentTarget.value)}),r(j,{label:"Data Field",required:!0,data:i,value:e.data_field,onChange:u=>l("data_field",u)})]}),r(ts,{label:"Aggregation",value:e.aggregation,onChange:u=>l("aggregation",u)}),r(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),r(Bn,{value:e.formatter,onChange:u=>l("formatter",u)}),s&&r(cs,{value:e,onChange:n})]})});function ds(t){const e=Array.from(t).sort((i,s)=>i-s),n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}function Tt(t,e,n){var s,o,l,u;const i=t.map(d=>d[e]);switch(n.type){case"sum":return P.default.sum(i);case"mean":return P.default.mean(i);case"median":return ds(i);case"max":return(s=P.default.max(i))!=null?s:0;case"min":return(o=P.default.min(i))!=null?o:0;case"quantile":return(l=gi.quantile(i,n.config.p))!=null?l:0;default:return(u=t[0])==null?void 0:u[e]}}var Ln=function(){},Fe=function(){};process.env.NODE_ENV!=="production"&&(Ln=function(t,e){!t&&typeof console<"u"&&console.warn(e)},Fe=function(t,e){if(!t)throw new Error(e)});const ps=(t,e,n)=>Math.min(Math.max(n,t),e),Nn=(t,e,n)=>{const i=e-t;return i===0?1:(n-t)/i},Dt=(t,e,n)=>-n*t+n*e+t,$n=(t,e)=>n=>Math.max(Math.min(n,e),t),Ge=t=>t%1?Number(t.toFixed(5)):t,Ke=/(-)?([\d]*\.?[\d])+/g,_t=/(#[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,fs=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function Re(t){return typeof t=="string"}const Ze={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},jn=Object.assign(Object.assign({},Ze),{transform:$n(0,1)});Object.assign(Object.assign({},Ze),{default:1});const Be=(t=>({test:e=>Re(e)&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}))("%");Object.assign(Object.assign({},Be),{parse:t=>Be.parse(t)/100,transform:t=>Be.transform(t*100)});const kt=(t,e)=>n=>Boolean(Re(n)&&fs.test(n)&&n.startsWith(t)||e&&Object.prototype.hasOwnProperty.call(n,e)),Wn=(t,e,n)=>i=>{if(!Re(i))return i;const[s,o,l,u]=i.match(Ke);return{[t]:parseFloat(s),[e]:parseFloat(o),[n]:parseFloat(l),alpha:u!==void 0?parseFloat(u):1}},De={test:kt("hsl","hue"),parse:Wn("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:n,alpha:i=1})=>"hsla("+Math.round(t)+", "+Be.transform(Ge(e))+", "+Be.transform(Ge(n))+", "+Ge(jn.transform(i))+")"},hs=$n(0,255),At=Object.assign(Object.assign({},Ze),{transform:t=>Math.round(hs(t))}),Ce={test:kt("rgb","red"),parse:Wn("red","green","blue"),transform:({red:t,green:e,blue:n,alpha:i=1})=>"rgba("+At.transform(t)+", "+At.transform(e)+", "+At.transform(n)+", "+Ge(jn.transform(i))+")"};function gs(t){let e="",n="",i="",s="";return t.length>5?(e=t.substr(1,2),n=t.substr(3,2),i=t.substr(5,2),s=t.substr(7,2)):(e=t.substr(1,1),n=t.substr(2,1),i=t.substr(3,1),s=t.substr(4,1),e+=e,n+=n,i+=i,s+=s),{red:parseInt(e,16),green:parseInt(n,16),blue:parseInt(i,16),alpha:s?parseInt(s,16)/255:1}}const Mt={test:kt("#"),parse:gs,transform:Ce.transform},He={test:t=>Ce.test(t)||Mt.test(t)||De.test(t),parse:t=>Ce.test(t)?Ce.parse(t):De.test(t)?De.parse(t):Mt.parse(t),transform:t=>Re(t)?t:t.hasOwnProperty("red")?Ce.transform(t):De.transform(t)},Qn="${c}",Yn="${n}";function ms(t){var e,n,i,s;return isNaN(t)&&Re(t)&&((n=(e=t.match(Ke))===null||e===void 0?void 0:e.length)!==null&&n!==void 0?n:0)+((s=(i=t.match(_t))===null||i===void 0?void 0:i.length)!==null&&s!==void 0?s:0)>0}function Un(t){typeof t=="number"&&(t=`${t}`);const e=[];let n=0;const i=t.match(_t);i&&(n=i.length,t=t.replace(_t,Qn),e.push(...i.map(He.parse)));const s=t.match(Ke);return s&&(t=t.replace(Ke,Yn),e.push(...s.map(Ze.parse))),{values:e,numColors:n,tokenised:t}}function Xn(t){return Un(t).values}function Jn(t){const{values:e,numColors:n,tokenised:i}=Un(t),s=e.length;return o=>{let l=i;for(let u=0;u<s;u++)l=l.replace(u<n?Qn:Yn,u<n?He.transform(o[u]):Ge(o[u]));return l}}const ys=t=>typeof t=="number"?0:t;function vs(t){const e=Xn(t);return Jn(t)(e.map(ys))}const Kn={test:ms,parse:Xn,createTransformer:Jn,getAnimatableNone:vs};function Et(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function Zn({hue:t,saturation:e,lightness:n,alpha:i}){t/=360,e/=100,n/=100;let s=0,o=0,l=0;if(!e)s=o=l=n;else{const u=n<.5?n*(1+e):n+e-n*e,d=2*n-u;s=Et(d,u,t+1/3),o=Et(d,u,t),l=Et(d,u,t-1/3)}return{red:Math.round(s*255),green:Math.round(o*255),blue:Math.round(l*255),alpha:i}}const bs=(t,e,n)=>{const i=t*t,s=e*e;return Math.sqrt(Math.max(0,n*(s-i)+i))},xs=[Mt,Ce,De],Hn=t=>xs.find(e=>e.test(t)),er=t=>`'${t}' is not an animatable color. Use the equivalent color code instead.`,tr=(t,e)=>{let n=Hn(t),i=Hn(e);Fe(!!n,er(t)),Fe(!!i,er(e));let s=n.parse(t),o=i.parse(e);n===De&&(s=Zn(s),n=Ce),i===De&&(o=Zn(o),i=Ce);const l=Object.assign({},s);return u=>{for(const d in l)d!=="alpha"&&(l[d]=bs(s[d],o[d],u));return l.alpha=Dt(s.alpha,o.alpha,u),n.transform(l)}},Cs=t=>typeof t=="number",ws=(t,e)=>n=>e(t(n)),nr=(...t)=>t.reduce(ws);function rr(t,e){return Cs(t)?n=>Dt(t,e,n):He.test(t)?tr(t,e):sr(t,e)}const ir=(t,e)=>{const n=[...t],i=n.length,s=t.map((o,l)=>rr(o,e[l]));return o=>{for(let l=0;l<i;l++)n[l]=s[l](o);return n}},Ss=(t,e)=>{const n=Object.assign(Object.assign({},t),e),i={};for(const s in n)t[s]!==void 0&&e[s]!==void 0&&(i[s]=rr(t[s],e[s]));return s=>{for(const o in i)n[o]=i[o](s);return n}};function ar(t){const e=Kn.parse(t),n=e.length;let i=0,s=0,o=0;for(let l=0;l<n;l++)i||typeof e[l]=="number"?i++:e[l].hue!==void 0?o++:s++;return{parsed:e,numNumbers:i,numRGB:s,numHSL:o}}const sr=(t,e)=>{const n=Kn.createTransformer(e),i=ar(t),s=ar(e);return i.numHSL===s.numHSL&&i.numRGB===s.numRGB&&i.numNumbers>=s.numNumbers?nr(ir(i.parsed,s.parsed),n):(Ln(!0,`Complex values '${t}' and '${e}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),l=>`${l>0?e:t}`)},Is=(t,e)=>n=>Dt(t,e,n);function Ts(t){if(typeof t=="number")return Is;if(typeof t=="string")return He.test(t)?tr:sr;if(Array.isArray(t))return ir;if(typeof t=="object")return Ss}function Ds(t,e,n){const i=[],s=n||Ts(t[0]),o=t.length-1;for(let l=0;l<o;l++){let u=s(t[l],t[l+1]);if(e){const d=Array.isArray(e)?e[l]:e;u=nr(d,u)}i.push(u)}return i}function _s([t,e],[n]){return i=>n(Nn(t,e,i))}function ks(t,e){const n=t.length,i=n-1;return s=>{let o=0,l=!1;if(s<=t[0]?l=!0:s>=t[i]&&(o=i-1,l=!0),!l){let d=1;for(;d<n&&!(t[d]>s||d===i);d++);o=d-1}const u=Nn(t[o],t[o+1],s);return e[o](u)}}function As(t,e,{clamp:n=!0,ease:i,mixer:s}={}){const o=t.length;Fe(o===e.length,"Both input and output ranges must be the same length"),Fe(!i||!Array.isArray(i)||i.length===o-1,"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values."),t[0]>t[o-1]&&(t=[].concat(t),e=[].concat(e),t.reverse(),e.reverse());const l=Ds(e,i,s),u=o===2?_s(t,l):ks(t,l);return n?d=>u(ps(t[0],t[o-1],d)):u}class Ms{constructor({valueRange:e,colorRange:n}){E(this,"mapper");this.mapper=As(e,n)}getColor(e){return this.mapper(e)}}function Es(t){return t===null?"null":t===void 0?"undefined":Array.isArray(t)?`Array(${t.length})`:t.toString()}function or({data_field:t,aggregation:e},n){return Tt(n,t,e)}function et({formatter:t},e){return["string","number"].includes(typeof e)?se.default(e).format(t):Es(e)}function Vs(t,e){return t.type==="static"?t.staticColor:t.type==="continuous"?new Ms(t).getColor(e):"black"}function zs(t,e){const n={};return t.forEach(i=>{const{name:s,color:o,data_field:l,aggregation:u,size:d,weight:h}=i,f=Tt(e,l,u),m=et(i,f);n[s]=r(a.Text,{sx:{fontSize:d,display:"inline"},color:Vs(o,f),weight:h,children:m})}),n}function Os(t){return t.split(" ").map(e=>c($,{children:[e,"\xA0"]}))}function Ps(t){const n=t.replaceAll("<br />","<br/>").replaceAll(`
40
+ `,"<br/>").split("<br/>");return n.map((s,o)=>{const l=[Os(s)];return o!==n.length-1&&l.push(r("br",{})),l}).flat().filter(s=>s!==void 0)}function Vt(t){return Ps(t)}function zt(t,e,n){const i=zs(e,n),s=/^\{(.+)\}(.*)$/;return t.split("$").map(o=>{var h;const l=s.exec(o);if(!l)return Vt(o);const u=i[l[1]];if(!u)return Vt(o);const d=(h=l[2])!=null?h:"";return c($,{children:[u,Vt(d)]})})}function qs(t,e){const n={};return t.forEach(i=>{const{name:s,data_field:o,aggregation:l}=i,u=Tt(e,o,l);n[s]=et(i,u)}),n}function lr(t,e,n){const i=qs(e,n),s=/^\{(.+)\}(.*)$/;return t.split("$").map(o=>{var h;const l=s.exec(o);if(!l)return o;const u=i[l[1]];if(!u)return o;const d=(h=l[2])!=null?h:"";return`${u}${d}`}).join("")}function Fs({context:t}){const{value:e=wt}=F(t.instanceData,"config"),{template:n,variables:i,align:s}=e,o=C.useMemo(()=>zt(n,i,t.data),[n,i,t.data]);return r(a.Text,{align:s,children:Object.values(o).map(l=>l)})}function Gs({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Rs({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"variables"}),l=e("variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[u.map((h,f)=>r(Gs,{control:t,index:f,remove:o,data:n},h.name)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}function Bs({context:t}){const e=t.data||[],{value:n,set:i}=F(t.instanceData,"config"),s=b.default.useMemo(()=>{const{align:g,template:v="",variables:D=[]}=S.defaultsDeep({},n,wt);return{variables:D,template:v,align:g}},[n]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});b.default.useEffect(()=>{h(s)},[s]),u(["variables","template"]);const f=d(),m=b.default.useMemo(()=>!P.default.isEqual(f,n),[f,n]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(i),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{weight:500,children:"Stats Configurations"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),r(w.Controller,{name:"template",control:o,render:({field:g})=>r(St,{label:"Template",py:"md",sx:{flexGrow:1},...g})}),r(a.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),r(Rs,{control:o,watch:u,data:e})]})})}const Ls={createConfig(){return{version:1,config:wt}},displayName:"Stats",migrator:new Ka,name:"stats",viewRender:Fs,configRender:Bs};var we=(t=>(t.string="string",t.number="number",t.eloc="eloc",t.percentage="percentage",t))(we||{});const tt={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!1,verticalSpacing:"1em"},Ns=({vizManager:t,instance:e})=>L.useCreation(()=>new vr(e,t.resolveComponent(e.type),Wt),[e,t]),$s=(t,e)=>{const[n,i]=C.useState([]);return C.useEffect(()=>t.watchTriggerSnapshotList(s=>i(s.filter(o=>o.schemaRef===e))),[]),n};function ur(t,e,n){return Math.min(Math.max(t,e),n)}class js{constructor(e){this.steps=e;const n=[],i=new Set;for(const s of e)i.has(s.to)||(n.push(s),i.add(s.to));if(n.sort((s,o)=>s.from-o.from),n.length<2)throw new Error("MultiStepValueMapper requires at least 2 steps");this.steps=n}getLinearFunction(e,n){const i=(n.to-e.to)/(n.from-e.from),s=e.to-i*e.from;return o=>i*o+s}getStepFunctionForValue(e){let n=S.findLastIndex(this.steps,i=>i.from<=e);return n=ur(n,0,this.steps.length-2),this.getLinearFunction(this.steps[n],this.steps[n+1])}mapValue(e){return ur(this.getStepFunctionForValue(e)(e),0,100)}}function Ws(t,e){if(t==null)return{};var n={},i=Object.keys(t),s,o;for(o=0;o<i.length;o++)s=i[o],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}function cr(t,e){if(t==null)return{};var n=Ws(t,e),i,s;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(s=0;s<o.length;s++)i=o[s],!(e.indexOf(i)>=0)&&(!Object.prototype.propertyIsEnumerable.call(t,i)||(n[i]=t[i]))}return n}var Qs=["size","color","stroke"];function Ys(t){var e=t.size,n=e===void 0?24:e,i=t.color,s=i===void 0?"currentColor":i,o=t.stroke,l=o===void 0?2:o,u=cr(t,Qs);return c("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-arrow-down",width:n,height:n,viewBox:"0 0 24 24",strokeWidth:l,stroke:s,fill:"none",strokeLinecap:"round",strokeLinejoin:"round",...u,children:[r("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),r("line",{x1:12,y1:5,x2:12,y2:19}),r("line",{x1:18,y1:13,x2:12,y2:19}),r("line",{x1:6,y1:13,x2:12,y2:19})]})}var Us=["size","color","stroke"];function Xs(t){var e=t.size,n=e===void 0?24:e,i=t.color,s=i===void 0?"currentColor":i,o=t.stroke,l=o===void 0?2:o,u=cr(t,Us);return c("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-arrow-up",width:n,height:n,viewBox:"0 0 24 24",strokeWidth:l,stroke:s,fill:"none",strokeLinecap:"round",strokeLinejoin:"round",...u,children:[r("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),r("line",{x1:12,y1:5,x2:12,y2:19}),r("line",{x1:18,y1:11,x2:12,y2:5}),r("line",{x1:6,y1:11,x2:12,y2:5})]})}const Js=({header:t,cx:e})=>c(a.Text,{className:e("table-head-cell",{"table-head-cell--sortable":t.column.getCanSort()}),onClick:t.column.getToggleSortingHandler(),children:[t.isPlaceholder?null:_e.flexRender(t.column.columnDef.header,t.getContext()),r(Ks,{direction:t.column.getIsSorted()})]}),Ks=({direction:t})=>{switch(t){case"asc":return r(Xs,{size:16});case"desc":return r(Ys,{size:"1em"});default:return null}},Ot={id:"builtin:table:click-cell-content",displayName:"Click Cell Content",nameRender:no,configRender:eo,payload:[{name:"row_index",description:"Index of the row that the cell belongs to",valueType:"number"},{name:"col_index",description:"Index of the column that the cell belongs to",valueType:"number"},{name:"row_data",description:"Data of the row that the cell belongs to",valueType:"object"}]},Zs={column:""};function dr(t){const{value:e}=F(t.instanceData,"config");return e?e.columns.map((n,i)=>({label:n.label,value:i.toString()})):[]}function Hs(t){return S.isEmpty(t)?[]:Object.keys(t[0]).map(e=>({label:e,value:e}))}function eo(t){const e=dr(t.instance),n=Hs(t.sampleData),i=e.length>0?e:n,{value:s,set:o}=F(t.trigger.triggerData,"config"),{column:l}=S.defaults({},s,Zs),u=d=>{isNaN(+d)?o({column:d}):o({column:+d})};return r(a.Select,{clearable:!1,data:i,label:"Choose a column",value:l.toString(),onChange:u})}function to(t,e){return t?S.isNumber(t.column)?`Click cell of ${e[t.column].label}`:`Click cell of ${t.column}`:"Click cell content (click to config)"}function no(t){const e=dr(t.instance),{value:n}=F(t.trigger.triggerData,"config");return r(a.Text,{children:to(n,e)})}const ro=a.createStyles(t=>({root:{overflow:"auto","& .table-head-cell":{display:"flex",flexFlow:"row nowrap",alignItems:"center",whiteSpace:"nowrap","&.table-head-cell--sortable":{cursor:"pointer",userSelect:"none"}},"&.table-highlight-on-hover tr":{transition:"background-color 0.2s","&:hover":{backgroundColor:t.colorScheme==="dark"?t.colors.dark[5]:t.colors.gray[0]}}},thead:{background:t.colorScheme==="dark"?t.colors.dark[7]:t.white,position:"sticky",top:0}})),io=a.createStyles((t,e)=>({content:{display:"flex",alignItems:"center",justifyContent:"flex-start",".table-cell-text":{whiteSpace:"nowrap",marginLeft:t.spacing.xs,cursor:e.clickable?"pointer":"default",textDecoration:e.clickable?"underline":"none"}}}));function ao(t){return t?ze.default(t).oklch()[0]>.7?"black":"white":"inherit"}function so(t){const e=t.tableCellContext.bgColor;return{backgroundColor:e,color:ao(e)}}function nt(t){const e=t.tableCellContext.isClickable(),n=io({clickable:e});return r("div",{className:n.classes.content,style:{...so(t)},children:r(a.Text,{className:"table-cell-text",onClick:t.tableCellContext.getClickHandler(),children:r("span",{children:t.children})})})}function oo(t){return r(nt,{...t,children:t.value})}function lo(t){return r(nt,{...t,children:t.value})}function uo(t){const e=se.default(t.value).format({thousandSeparated:!0});return r(nt,{...t,children:e})}function co(t){const e=se.default(t.value).format({output:"percent",mantissa:3});return r(nt,{...t,children:e})}function po(t){switch(t.type){case we.string:return r(oo,{...t});case we.eloc:return r(lo,{...t});case we.number:return r(uo,{...t});case we.percentage:return r(co,{...t})}}const fo=t=>{const e=Ns(t),n=$s(e.triggerManager,Ot.id),{colorManager:i}=C.useContext(me);return C.useCallback(s=>new go(t.getColIndex,s,n,e,i),[n,e,t.getColIndex])};function ho({context:t,instance:e}){var at,je,st;const n=(at=t.data)!=null?at:[],{height:i,width:s}=t.viewport,{value:o=tt}=F(t.instanceData,"config"),{use_raw_columns:l,columns:u,...d}=o,{classes:h,cx:f}=ro(),m=b.default.useMemo(()=>l?Object.keys(n[0]).map(ee=>({label:ee,value_field:ee,value_type:we.string})):u,[l,u,n]),g=fo({getColIndex:C.useCallback(ee=>m.indexOf(ee.column.columnDef.meta),[m]),vizManager:t.vizManager,instance:e}),v=C.useMemo(()=>{const ee=_e.createColumnHelper(),ce=m.map(ne=>ee.accessor(ne.value_field,{cell:Se=>r(po,{tableCellContext:g(Se.cell),value:Se.getValue(),type:ne.value_type}),header:ne.label,enableSorting:!0,meta:ne}));return[ee.display({id:"#index",cell:ne=>ne.row.index+1,header:"#",size:10*(n.length.toString().length+1)}),...ce]},[m,g]),[D,A]=C.useState([]),V=_e.useReactTable({data:n,state:{sorting:D},onSortingChange:A,columns:v,getCoreRowModel:_e.getCoreRowModel(),getSortedRowModel:_e.getSortedRowModel()}),{rows:B}=V.getRowModel(),R=b.default.useRef(null),ue=mi.useVirtual({parentRef:R,size:B.length,estimateSize:C.useCallback(()=>28,[]),overscan:20}),{virtualItems:H,totalSize:Ne}=ue,Me=H.length>0&&((je=H==null?void 0:H[0])==null?void 0:je.start)||0,$e=H.length>0?Ne-(((st=H==null?void 0:H[H.length-1])==null?void 0:st.end)||0):0;return r("div",{ref:R,style:{height:i,width:s},className:f(h.root,{"table-highlight-on-hover":o.highlightOnHover}),children:c(a.Table,{sx:{maxHeight:i},...d,striped:o.striped,children:[r("thead",{className:h.thead,children:V.getHeaderGroups().map(ee=>r("tr",{children:ee.headers.map(ce=>r("th",{style:{width:ce.getSize()},children:r(Js,{header:ce,cx:f})},ce.id))},ee.id))}),c("tbody",{children:[Me>0&&r("tr",{children:r("td",{style:{height:`${Me}px`}})}),H.map(ee=>{const ce=B[ee.index];return r("tr",{children:ce.getVisibleCells().map(te=>r("td",{children:_e.flexRender(te.column.columnDef.cell,te.getContext())},te.id))},ce.id)}),$e>0&&r("tr",{children:r("td",{style:{height:`${$e}px`}})})]})]})})}class go{constructor(e,n,i,s,o){this.getColIndex=e,this.cell=n,this.triggers=i,this.interactionManager=s,this.colorManager=o}getClickHandler(){const e=this.getRelatedTrigger();if(e.length!==0)return()=>{const n={row_data:this.cell.row.original,row_index:this.cell.row.index,col_index:this.getColIndex(this.cell)};for(const i of e)this.interactionManager.runInteraction(i.id,n)}}getRelatedTrigger(){return this.triggers.filter(n=>n.schemaRef===Ot.id).filter(n=>{const i=this.getColIndex(this.cell),s=S.get(this.cell.column.columnDef.meta,"value_field"),o=S.get(n.config,"column");return o==i||o==s})}isClickable(){return this.getRelatedTrigger().length>0}get columnConf(){return this.cell.column.columnDef.meta}get bgColor(){const e=this.columnConf.cellBackgroundColor;if(!e||e==="none")return;if(S.isString(e))return e;const n=+this.cell.getValue();if(isFinite(n)){const i=this.colorManager.decodeInterpolation(e.interpolation),o=new js(e.steps).mapValue(n);return i==null?void 0:i.getColor(o)}}}const pr=a.createStyles(()=>({palette:{display:"flex",flexFlow:"row nowrap"},paletteItem:{".palette-value":{height:24,overflow:"visible",width:36},".palette-item":{width:"36px",height:36*.618,cursor:"pointer",transition:"transform 100ms ease-in-out","&:hover":{boxShadow:"0 0 0 2px var(--shadow-color)",borderRadius:2,transform:"scale(1.2)"}}}})),mo=[{from:0,to:0},{from:100,to:100}];class yo{constructor(){E(this,"steps",new Map);E(this,"interpolation");E(this,"onChange");J.makeAutoObservable(this,{steps:J.observable},{deep:!1}),J.reaction(()=>J.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(e){for(const n of e)this.steps.set(n.to,n.from)}notifyStepChange(){var e;(e=this.onChange)==null||e.call(this,Array.from(this.steps.entries()).map(([n,i])=>({to:n,from:i})).sort((n,i)=>n.to-i.to||n.from-i.from))}fromProps(e){e.steps.length<2?this.setSteps(mo):this.setSteps(e.steps),this.interpolation=e.interpolation,this.onChange=e.onChange}changeStep(e,n){e==null?this.steps.delete(n):this.steps.set(n,e)}getStepFromValue(e){return this.steps.get(e)}}function vo(t){const{onChange:e,color:n,index:i,value:s}=t,{classes:o}=pr(),[l,u]=C.useState(s),[d,{setTrue:h,setFalse:f}]=L.useBoolean(!1),m=i%2===1,g=m&&s!=null,v=!m&&s!=null,D=`map ${s} to color ${i}`,A=()=>{u(s),f()},V=()=>{f(),e==null||e(l)},B=se.default(s).format({average:!0});return c("div",{"data-testid":`palette-item-${i}`,className:o.paletteItem,children:[r(a.Text,{title:D,style:{opacity:g?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:B}),c(a.Popover,{width:200,trapFocus:!0,opened:d,onClose:f,children:[r(a.Popover.Target,{children:r("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:h,style:{"--shadow-color":ze.default(n).alpha(.5).hex(),backgroundColor:n}})}),r(a.Popover.Dropdown,{children:c(a.Stack,{children:[r(a.NumberInput,{size:"xs",label:"Map a value to this color",value:l,onChange:u}),c(a.Group,{position:"right",children:[r(a.Button,{variant:"subtle",size:"xs",onClick:A,children:"Cancel"}),r(a.Button,{"data-testid":"palette-item-ok",size:"xs",onClick:V,children:"OK"})]})]})})]}),r(a.Text,{title:D,style:{opacity:v?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:B})]})}const bo=k.observer(({model:t})=>{const{classes:e}=pr(),n=S.range(0,13,1).map(i=>100/12*i).map(i=>[t.interpolation.getColor(i),i]);return r("div",{className:e.palette,children:n.map(([i,s],o)=>r(vo,{index:o,color:i,value:t.getStepFromValue(s),onChange:l=>t.changeStep(l,s)},i))})}),xo=k.observer(function(e){const n=L.useCreation(()=>new yo,[]);return C.useEffect(()=>{n.fromProps(e)}),n.interpolation==null?null:r(bo,{model:n})}),Co=t=>{const{value:e,onChange:n,colorManager:i}=t,s=i.getColorInterpolations(),[o,l]=C.useState(e),u=i.decodeInterpolation(o.interpolation)||s[0],[d,{setTrue:h,setFalse:f}]=L.useBoolean(),m=s.map(V=>({label:V.displayName,value:i.encodeColor(V),group:V.category}));function g(V){V&&l(B=>({...B,interpolation:V}))}const v=()=>{f(),n==null||n(J.toJS(o))};function D(V){l(B=>({...B,steps:V}))}const A=()=>{f(),l(e)};return c($,{children:[r(a.Button,{variant:"outline",onClick:h,children:u==null?void 0:u.displayName}),r(a.Modal,{size:508,title:"Setup color interpolation",opened:d,onClose:f,children:d&&c(a.Stack,{"data-testid":"color-interpolation-modal",children:[r(a.Select,{label:"Color style",value:o.interpolation,data:m,onChange:g}),r(xo,{steps:o.steps,interpolation:u,onChange:D}),c(a.Group,{position:"right",children:[r(a.Button,{onClick:A,variant:"subtle",children:"Cancel"}),r(a.Button,{onClick:v,children:"OK"})]})]})})]})},wo=["static","interpolation","none"],So=[{from:0,to:0},{from:100,to:100}];function fr(t){return t?S.isString(t)?t==="none"?"none":"static":"interpolation":"none"}function Io(t,e){var n;return fr(e)==="static"?e:(n=t.getStaticColors()[0])==null?void 0:n.value}function To(t,e){return S.isObject(e)?e:{steps:So,interpolation:t.encodeColor(t.getColorInterpolations()[0])}}const Do=t=>{const{colorManager:e}=C.useContext(me),[n,i]=C.useState(fr(t.value)),[s,o]=C.useState(Io(e,t.value)),l=L.useLatest(s),[u,d]=C.useState(To(e,t.value)),h=L.useLatest(u),f=v=>{var D,A,V;i(v||"none"),v==="static"?(D=t.onChange)==null||D.call(t,l.current):v==="none"||!v?(A=t.onChange)==null||A.call(t,"none"):(V=t.onChange)==null||V.call(t,h.current)},m=v=>{var D;o(v),(D=t.onChange)==null||D.call(t,v)},g=v=>{var D;d(v),(D=t.onChange)==null||D.call(t,v)};return c(a.Group,{align:"end",children:[r(a.Select,{label:"Cell background",value:n||"none",onChange:f,data:wo}),n==="static"&&r(ge,{value:s,onChange:m}),n==="interpolation"&&r(Co,{colorManager:e,value:u,onChange:g})]})},_o=Object.values(we).map(t=>({label:t,value:t}));function ko({label:t,value:e,onChange:n,sx:i}){return r(a.Select,{label:t,data:_o,value:e,onChange:n,sx:i})}function Ao({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=ht.useForm({initialValues:tt});C.useEffect(()=>{const l=S.defaults({},e,i.values,tt);e&&i.setValues(l)},[e]);const s=t.data||[],o=()=>i.insertListItem("columns",{label:U.randomId(),value_field:"value",value_type:we.string});return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:i.onSubmit(async l=>{await n(l)}),children:[c(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[r(a.Text,{children:"Table Config"}),r(a.ActionIcon,{type:"submit","aria-label":"save config",mr:5,variant:"filled",color:"blue",children:r(_.DeviceFloppy,{size:20})})]}),c(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r(j,{label:"ID Field",required:!0,data:s,...i.getInputProps("id_field")}),c(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[r(a.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i.getInputProps("horizontalSpacing")}),r(a.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i.getInputProps("verticalSpacing")})]}),r(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:r(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i.getInputProps("fontSize")})}),c(a.Stack,{children:[r(a.Text,{children:"Other"}),c(a.Group,{position:"apart",grow:!0,children:[r(a.Switch,{label:"Striped",...i.getInputProps("striped",{type:"checkbox"})}),r(a.Switch,{label:"Highlight on hover",...i.getInputProps("highlightOnHover",{type:"checkbox"})})]})]})]}),c(a.Stack,{mt:"xs",spacing:"xs",p:"md",mb:"xl",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r(a.Switch,{label:"Use Original Data Columns",...i.getInputProps("use_raw_columns",{type:"checkbox"})}),!i.values.use_raw_columns&&c(a.Stack,{children:[r(a.Text,{mt:"xl",mb:0,children:"Custom Columns"}),i.values.columns.map((l,u)=>c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{position:"apart",grow:!0,children:[r(a.TextInput,{label:"Label",required:!0,id:`col-label-${u}`,sx:{flex:1},...i.getInputProps(`columns.${u}.label`)}),r(j,{label:"Value Field",required:!0,data:s,...i.getInputProps(`columns.${u}.value_field`)}),r(ko,{label:"Value Type",sx:{flex:1},...i.getInputProps(`columns.${u}.value_type`)}),r(Do,{...i.getInputProps(`columns.${u}.cellBackgroundColor`)})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i.removeListItem("columns",u),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},u)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:o,children:"Add a Column"})})]})]}),r(a.Text,{weight:500,mb:"md",children:"Current Configuration:"}),r(Ie.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(i.values,null,2)})]})})}class Mo extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Pt={createConfig(){return{version:1,config:S.cloneDeep(tt)}},displayName:"Table",migrator:new Mo,name:"table",viewRender:ho,configRender:Ao,triggers:[Ot]},qt={label_field:"",value_field:""};X.use([de.SunburstChart,ve.CanvasRenderer]);const Eo={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function Vo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{label_field:o,value_field:l}=S.defaults({},e,qt),u=C.useMemo(()=>n.map(m=>({name:m[o],value:Number(m[l])})),[n,o,l]),d=C.useMemo(()=>{var m,g;return(g=(m=S.maxBy(u,v=>v.value))==null?void 0:m.value)!=null?g:1},[u]),h=C.useMemo(()=>({series:{label:{formatter:({name:m,value:g})=>g/d<.2?" ":m}}}),[d]),f=S.merge({},Eo,h,{series:{data:u}});return r(be.default,{echarts:X,option:f,style:{width:i,height:s}})}function zo({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),{label_field:i,value_field:s}=S.defaults({},e,qt),o=t.data,l=ht.useForm({initialValues:{label_field:i,value_field:s}});return C.useEffect(()=>{l.setValues({label_field:i,value_field:s})},[i,s]),r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l.onSubmit(n),children:[c(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[r(a.Text,{children:"Sunburst Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:r(_.DeviceFloppy,{size:20})})]}),c(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r(j,{label:"Label Field",required:!0,data:o,...l.getInputProps("label_field")}),r(j,{label:"Value Field",required:!0,data:o,...l.getInputProps("value_field")})]})]})})}class Oo extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Po={displayName:"Sunburst",migrator:new Oo,name:"sunburst",viewRender:Vo,configRender:zo,createConfig:()=>qt},Ft={label_field:"",value_field:""};X.use([de.PieChart,ve.CanvasRenderer]);const qo={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
41
+ {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 Fo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{label_field:o,value_field:l}=S.defaults({},e,Ft),u=C.useMemo(()=>n.map(f=>({name:f[o],value:Number(f[l])})),[n,o,l]),d=C.useMemo(()=>({series:{labelLayout:function(f){const m=f.labelRect.x<i/2,g=f.labelLinePoints;return S.set(g,[2,0],m?f.labelRect.x:f.labelRect.x+f.labelRect.width),{labelLinePoints:g}}}}),[i]),h=S.merge({},qo,d,{series:{data:u}});return r(be.default,{echarts:X,option:h,style:{width:i,height:s}})}function Go({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),{label_field:i,value_field:s}=S.defaults({},e,Ft),o=t.data,l=ht.useForm({initialValues:{label_field:i,value_field:s}});return C.useEffect(()=>{l.setValues({label_field:i,value_field:s})},[i,s]),r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l.onSubmit(n),children:[c(a.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[r(a.Text,{children:"Pie Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:r(_.DeviceFloppy,{size:20})})]}),c(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[r(j,{label:"Label Field",required:!0,data:o,...l.getInputProps("label_field")}),r(j,{label:"Value Field",required:!0,data:o,...l.getInputProps("value_field")})]})]})})}class Ro extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Bo={displayName:"Pie Chart",migrator:new Ro,name:"pie",viewRender:Fo,configRender:Go,createConfig:()=>Ft},Gt={x_axis_data_key:"",y_axis_data_key:"",z_axis_data_key:"",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}};X.use([N.GridComponent,N.VisualMapComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function Lo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:d,yAxis3D:h,zAxis3D:f}=S.defaults({},e,Gt),m=C.useMemo(()=>{const D=S.minBy(n,A=>A[u]);return S.get(D,u)},[n,u]),g=C.useMemo(()=>{const D=S.maxBy(n,A=>A[u]);return S.get(D,u)},[n,u]),v={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:m,max:g,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:d,yAxis3D:h,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:n.map(D=>[D[o],D[l],D[u]])}]};return e?r(be.default,{echarts:X,option:v,style:{width:i,height:s}}):null}function No({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=S.defaults({},e,Gt),{control:o,handleSubmit:l,reset:u}=w.useForm({defaultValues:s});return C.useEffect(()=>{u(s)},[e]),e?r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[r(a.Text,{children:"X Axis"}),c(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r(w.Controller,{name:"x_axis_data_key",control:o,render:({field:d})=>r(j,{label:"Data Field",required:!0,data:i,...d})}),r(w.Controller,{name:"xAxis3D.name",control:o,render:({field:d})=>r(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),r(a.Text,{mt:"lg",children:"Y Axis"}),c(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r(w.Controller,{name:"y_axis_data_key",control:o,render:({field:d})=>r(j,{label:"Data Field",required:!0,data:i,...d})}),r(w.Controller,{name:"yAxis3D.name",control:o,render:({field:d})=>r(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),r(a.Text,{mt:"lg",children:"Z Axis"}),c(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r(w.Controller,{name:"z_axis_data_key",control:o,render:({field:d})=>r(j,{label:"Data Field",required:!0,data:i,...d})}),r(w.Controller,{name:"zAxis3D.name",control:o,render:({field:d})=>r(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),r(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:c(a.Button,{color:"blue",type:"submit",children:[r(_.DeviceFloppy,{size:20}),r(a.Text,{ml:"md",children:"Save"})]})})]})}):null}class $o extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const jo={displayName:"Bar Chart (3D)",migrator:new $o,name:"bar-3d",viewRender:Lo,configRender:No,createConfig:()=>Gt},Rt={x_axis:{name:"X Axis",data_key:""},y_axis:{name:"Y Axis",data_key:"value"},color:"#228be6",variables:[],reference_lines:[]};X.use([N.DataZoomComponent,de.BoxplotChart,N.MarkLineComponent,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function Wo(t,e,n){const i=e.reduce((s,o)=>{const l=or(o,n);return s[o.name]=et(o,l),s},{});return t.map(s=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:s.name,yAxis:Number(i[s.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return lr(s.template,e,n)},position:"insideEndTop"}}}))}function Qo({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{x_axis:o,y_axis:l,color:u,variables:d,reference_lines:h}=S.defaults({},e,Rt),{xAxisData:f,boxplotData:m}=C.useMemo(()=>{const v=P.default.groupBy(n,o.data_key);return{xAxisData:Object.keys(v),boxplotData:Object.values(v).map(D=>D.map(A=>A[l.data_key]))}},[n,o.data_key,l.data_key]),g={dataset:[{source:m},{transform:{type:"boxplot",config:{itemNameFormatter:function(v){var D;return(D=f[v.value])!=null?D:v.value}}}}],dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",name:o.name}],yAxis:[{name:l.name}],series:[{name:l.name,type:"boxplot",itemStyle:{color:u,borderColor:"#454545"},boxWidth:[10,40],datasetIndex:1},...Wo(h,d,n)]};return!e||!i||!s?null:r(be.default,{echarts:X,option:g,style:{width:i,height:s}})}function Yo({control:t,index:e,remove:n,variableOptions:i}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`reference_lines.${e}.name`,control:t,render:({field:s})=>r(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:`reference_lines.${e}.variable_key`,control:t,render:({field:s})=>r(a.Select,{label:"Value",required:!0,data:i,sx:{flex:1},...s})})]}),r(w.Controller,{name:`reference_lines.${e}.template`,control:t,render:({field:s})=>r(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Uo({control:t,watch:e}){const{fields:n,append:i,remove:s}=w.useFieldArray({control:t,name:"reference_lines"}),o=e("reference_lines"),l=n.map((f,m)=>({...f,...o[m]})),u=()=>i({name:"",template:"",variable_key:""}),d=e("variables"),h=C.useMemo(()=>d.map(f=>({label:f.name,value:f.name})),[d]);return c(a.Stack,{children:[l.map((f,m)=>r(Yo,{control:t,index:m,remove:s,variableOptions:h})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:u,children:"Add a Reference Line"})})]})}function Xo({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,withStyle:!1,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Jo({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"variables"}),l=e("variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[u.map((h,f)=>r(Xo,{control:t,index:f,remove:o,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}function Ko({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaults({},e,Rt),[e]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});C.useEffect(()=>{h(s)},[s]),u(["x_axis","y_axis","reference_lines","color"]);const f=d(),m=C.useMemo(()=>!S.isEqual(f,e),[f,e]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Accordion,{defaultValue:"Axis",children:[c(a.Accordion.Item,{value:"Axis",children:[r(a.Accordion.Control,{children:"Axis"}),c(a.Accordion.Panel,{children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"x_axis.data_key",control:o,render:({field:g})=>r(j,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"y_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"y_axis.data_key",control:o,render:({field:g})=>r(j,{label:"Y Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]})]})]}),c(a.Accordion.Item,{value:"Style",children:[r(a.Accordion.Control,{children:"Style"}),r(a.Accordion.Panel,{children:c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:"color",control:o,render:({field:g})=>r(ge,{...g})})]})})]}),c(a.Accordion.Item,{value:"Advanced",children:[r(a.Accordion.Control,{children:c(a.Group,{position:"apart",children:["Advanced",r(a.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),r(a.Accordion.Panel,{children:c(a.Tabs,{defaultValue:"variables",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"variables",children:"Variables"}),r(a.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"})]}),r(a.Tabs.Panel,{value:"variables",pt:"xs",children:r(Jo,{control:o,watch:u,data:i})}),r(a.Tabs.Panel,{value:"reference_lines",pt:"xs",children:r(Uo,{control:o,watch:u})})]})})]})]})]})})}class Zo extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Ho={displayName:"Boxplot",migrator:new Zo,name:"boxplot",viewRender:Qo,configRender:Ko,createConfig:()=>Rt};function el(t){const e=t.y_axes.some(n=>!!n.name);return{bottom:t.x_axis_name?40:25,top:e?30:10}}function tl({regressions:t=[]},e){const n=[],i=[],s=[];return e.length===0?{regressionDataSets:n,regressionSeries:i,regressionXAxes:s}:(t.forEach(({transform:o,plot:l,name:u,y_axis_data_key:d})=>{const h=`x-axis-for-${u}`,f=`dataset-for-${u}--raw`,m=`dataset-for-${u}--transformed`;n.push({id:f,source:e.map((g,v)=>[v,Number(g[d])])}),n.push({transform:o,id:m,fromDatasetId:f}),i.push({...l,name:u,datasetId:m,xAxisId:h,showSymbol:!1,tooltip:{show:!1}}),s.push({type:"category",id:h,datasetId:m,show:!1})}),{regressionDataSets:n,regressionSeries:i,regressionXAxes:s})}function nl(t,e,n,i){const s=e.map(o=>[o[n],o[i]]);return P.default.unionBy(s,t,0)}function rl(t,e,n){const i=e.reduce((s,o)=>{const l=or(o,n);return s[o.name]=et(o,l),s},{});return t.map(s=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:s.name,yAxis:Number(i[s.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return lr(s.template,e,n)},position:"insideEndTop"}}}))}function il({x_axis_data_key:t},{y_axis_data_key:e,yAxisIndex:n,label_position:i,name:s,group_by_key:o,stack:l,color:u,...d},h,f,m){const g={label:{show:!!i,position:i,formatter:m[n!=null?n:"default"]},name:s,xAxisId:"main-x-axis",yAxisIndex:n,stack:l,color:u,...d};if(!o)return g.data=f.map(D=>D[e]),g;const v=S.groupBy(f,o);return Object.entries(v).map(([D,A])=>{const V=S.cloneDeep(g);return V.data=nl(h,A,t,e),V.name=D,V.color=void 0,V})}function al(t,e,n,i){const s=e.map(l=>[l,0]);return t.series.map(l=>il(t,l,s,n,i)).flat().concat(rl(t.reference_lines,t.variables,n))}function sl(t,e){const n=t.series.reduce((i,{yAxisIndex:s,name:o})=>(i[o]=s,i),{});return{formatter:function(i){const s=Array.isArray(i)?i:[i];if(s.length===0)return"";const o=s.map(({seriesName:l,value:u})=>{var f;if(Array.isArray(u)&&u.length===2&&(u=u[1]),!l)return u;const d=n[l],h=(f=e[d])!=null?f:e.default;return`${l}: <strong>${h({value:u})}</strong>`});return o.unshift(`<strong>${s[0].name}</strong>`),o.join("<br />")}}}function ol(t,e,n){var i;return[{data:e,name:(i=t.x_axis_name)!=null?i:"",id:"main-x-axis"},...n]}function ll(t,e){return t.y_axes.map(({...n},i)=>{var s;return{...n,axisLabel:{show:!0,formatter:(s=e[i])!=null?s:e.default},nameTextStyle:{fontWeight:"bold",align:"right"},nameLocation:"end",nameGap:15}})}const ul={legend:{show:!0,bottom:0,left:0,type:"scroll"},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"}}],grid:{top:10,left:30,right:15,bottom:25,containLabel:!0}};function cl(t,e){const n=t.y_axes.reduce((h,{label_formatter:f},m)=>(h[m]=function(v){let D=v;if(typeof v=="object"&&(Array.isArray(v.value)&&v.value.length===2?D=v.value[1]:D=v.value),!f)return D;try{return se.default(D).format(f)}catch(A){return console.error(A),D}},h),{default:({value:h})=>h}),i=P.default.uniq(e.map(h=>h[t.x_axis_data_key])),s=al(t,i,e,n),{regressionDataSets:o,regressionSeries:l,regressionXAxes:u}=tl(t,e),d={xAxis:ol(t,i,u),yAxis:ll(t,n),dataset:[...o],series:[...s,...l],tooltip:sl(t,n),grid:el(t)};return S.defaultsDeep({},d,ul)}const Bt={regressions:[],series:[],stats:{templates:{bottom:"",top:""},variables:[]},x_axis_data_key:"",x_axis_name:"",y_axes:[{name:"Y Axis",label_formatter:It}],variables:[],reference_lines:[]};X.use([N.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]),X.registerTransform(ln.transform.regression);function hr(t){return t.trim().length>0}function dl({conf:t,data:e,width:n,height:i}){const s=b.default.useMemo(()=>cl(t,e),[t,e]);return!n||!i?null:r(be.default,{echarts:X,option:s,style:{width:n,height:i}})}function pl({context:t}){const{value:e}=F(t.instanceData,"config"),n=C.useMemo(()=>S.defaults({},e,Bt),[e]),i=t.data,{width:s,height:o}=t.viewport,{ref:l,height:u}=U.useElementSize(),{ref:d,height:h}=U.useElementSize(),f=b.default.useMemo(()=>{const{stats:{templates:g,variables:v}}=n;return{top:zt(g.top,v,i),bottom:zt(g.bottom,v,i)}},[n,i]),m=Math.max(0,o-u-h);return c(a.Box,{children:[hr(n.stats.templates.top)&&r(a.Text,{ref:l,align:"left",size:"xs",pl:"sm",children:Object.values(f.top).map(g=>g)}),r(dl,{width:s,height:m,data:i,conf:n}),hr(n.stats.templates.bottom)&&r(a.Text,{ref:d,align:"left",size:"xs",pl:"sm",children:Object.values(f.bottom).map(g=>g)})]})}function fl({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`stats.variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function hl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"stats.variables"});e("stats.templates");const l=e("stats.variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[c(a.Stack,{spacing:0,children:[r(w.Controller,{name:"stats.templates.top",control:t,render:({field:h})=>r(St,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...h})}),r(w.Controller,{name:"stats.templates.bottom",control:t,render:({field:h})=>r(St,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...h})})]}),u.map((h,f)=>r(fl,{control:t,index:f,remove:o,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}const gl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function ml({control:t,regressionItem:e,index:n,remove:i,yAxisOptions:s,data:o}){const l=e.transform.config.method;return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(w.Controller,{name:`regressions.${n}.name`,control:t,render:({field:u})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`regressions.${n}.y_axis_data_key`,control:t,render:({field:u})=>r(j,{label:"Value Field",required:!0,data:o,sx:{flex:1},...u})}),r(w.Controller,{name:`regressions.${n}.plot.yAxisIndex`,control:t,render:({field:{value:u,onChange:d,...h}})=>{var f;return r(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...h,value:(f=u==null?void 0:u.toString())!=null?f:"",onChange:m=>{if(!m){d(0);return}d(Number(m))},sx:{flex:1}})}})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`regressions.${n}.transform.config.method`,control:t,render:({field:u})=>r(a.Select,{label:"Method",data:gl,sx:{flex:1},...u})}),l==="polynomial"&&r(w.Controller,{name:`regressions.${n}.transform.config.order`,control:t,render:({field:u})=>r(a.NumberInput,{label:"Order",sx:{flex:1},...u})})]}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:`regressions.${n}.plot.color`,control:t,render:({field:u})=>r(ge,{...u})})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(n),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},n)}function yl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"regressions"}),l=e("regressions"),u=i.map((m,g)=>({...m,...l[g]})),d=e("y_axes"),h=b.default.useMemo(()=>d.map(({name:m},g)=>({label:m,value:g.toString()})),[d]),f=()=>s({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666"}});return c(a.Stack,{children:[u.map((m,g)=>r(ml,{regressionItem:m,control:t,index:g,remove:o,yAxisOptions:h,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:f,children:"Add a Regression Line"})})]})}const vl=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function bl({control:t,index:e}){return c($,{children:[c(a.Group,{grow:!0,align:"top",children:[r(w.Controller,{name:`series.${e}.stack`,control:t,render:({field:n})=>r(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...n})}),r(w.Controller,{name:`series.${e}.barWidth`,control:t,render:({field:n})=>r(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...n})})]}),r(w.Controller,{name:`series.${e}.barGap`,control:t,render:({field:n})=>r(a.Select,{label:"Bar Gap",data:vl,sx:{flexGrow:1},...n})})]})}const xl=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}];function Cl({control:t,index:e}){return c(a.Group,{grow:!0,align:"center",children:[r(w.Controller,{name:`series.${e}.step`,control:t,render:({field:n})=>r(a.Select,{label:"Step",data:xl,sx:{flexGrow:1,maxWidth:"48%"},...n,value:String(n.value),onChange:i=>{const s=i==="false"?!1:i;n.onChange(s)}})}),r(w.Controller,{name:`series.${e}.smooth`,control:t,render:({field:n})=>r(a.Box,{sx:{flexGrow:1},children:r(a.Switch,{label:"Smooth Line",checked:n.value,onChange:i=>n.onChange(i.currentTarget.checked)})})})]})}const wl=Array.from(new Array(9),(t,e)=>({label:String(e+1),value:e+1}));function Sl({control:t,index:e}){return r(a.Group,{grow:!0,align:"center",children:r(w.Controller,{name:`series.${e}.symbolSize`,control:t,render:({field:n})=>c(a.Stack,{sx:{flexGrow:1},pb:16,spacing:4,children:[r(a.Text,{size:"sm",children:"Size"}),r(a.Slider,{min:1,max:10,marks:wl,...n,sx:{width:"100%"}})]})})})}const Il=[{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 Tl({control:t,index:e,remove:n,seriesItem:i,yAxisOptions:s,data:o}){const l=i.type;return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(a.Stack,{children:r(w.Controller,{name:`series.${e}.type`,control:t,render:({field:u})=>r(a.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}],...u})})}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`series.${e}.name`,control:t,render:({field:u})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),r(w.Controller,{name:`series.${e}.y_axis_data_key`,control:t,render:({field:u})=>r(j,{label:"Value Field",required:!0,data:o,sx:{flex:1},...u})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`series.${e}.yAxisIndex`,control:t,render:({field:{value:u,onChange:d,...h}})=>{var f;return r(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...h,value:(f=u==null?void 0:u.toString())!=null?f:"",onChange:m=>{if(!m){d(0);return}d(Number(m))},sx:{flex:1}})}}),r(w.Controller,{name:`series.${e}.group_by_key`,control:t,render:({field:u})=>r(j,{label:"Group By",data:o,clearable:!0,sx:{flex:1},...u})})]}),l==="line"&&r(Cl,{index:e,control:t}),l==="bar"&&r(bl,{index:e,control:t}),l==="scatter"&&r(Sl,{index:e,control:t}),r(w.Controller,{name:`series.${e}.label_position`,control:t,render:({field:u})=>r(a.Select,{label:"Label Position",data:Il,...u})}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:`series.${e}.color`,control:t,render:({field:u})=>r(ge,{...u})})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Dl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"series"}),l=e("series"),u=i.map((m,g)=>({...m,...l[g]})),d=()=>s({type:"bar",name:U.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",stack:"",color:"#000",step:!1,smooth:!1,barWidth:"10",barGap:"0%"}),h=e("y_axes"),f=b.default.useMemo(()=>h.map(({name:m},g)=>({label:m,value:g.toString()})),[h]);return c(a.Stack,{children:[u.map((m,g)=>r(Tl,{control:t,index:g,remove:o,seriesItem:m,yAxisOptions:f,data:n},m.id)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Series"})})]})}function _l({control:t,index:e,remove:n}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[r(a.Group,{grow:!0,noWrap:!0,children:r(w.Controller,{name:`y_axes.${e}.name`,control:t,render:({field:i})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})}),r(a.Stack,{children:r(w.Controller,{name:`y_axes.${e}.label_formatter`,control:t,render:({field:i})=>r(Bn,{...i})})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},disabled:e===0,children:r(_.Trash,{size:16})})]})}function kl({control:t,watch:e}){const{fields:n,append:i,remove:s}=w.useFieldArray({control:t,name:"y_axes"}),o=e("y_axes"),l=n.map((d,h)=>({...d,...o[h]})),u=()=>i({name:"",label_formatter:It});return c(a.Stack,{children:[l.map((d,h)=>r(_l,{control:t,index:h,remove:s},h)),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:u,children:"Add a Y Axis"})})]})}function Al({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[r(w.Controller,{name:`variables.${e}`,control:t,render:({field:s})=>r(Je,{data:i,withStyle:!1,...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Ml({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"variables"}),l=e("variables"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s(Ue());return c(a.Stack,{children:[u.map((h,f)=>r(Al,{control:t,index:f,remove:o,data:n})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Variable"})})]})}function El({control:t,index:e,remove:n,variableOptions:i}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`reference_lines.${e}.name`,control:t,render:({field:s})=>r(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:`reference_lines.${e}.variable_key`,control:t,render:({field:s})=>r(a.Select,{label:"Value",required:!0,data:i,sx:{flex:1},...s})})]}),r(w.Controller,{name:`reference_lines.${e}.template`,control:t,render:({field:s})=>r(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...s})}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},children:r(_.Trash,{size:16})})]},e)}function Vl({control:t,watch:e}){const{fields:n,append:i,remove:s}=w.useFieldArray({control:t,name:"reference_lines"}),o=e("reference_lines"),l=n.map((f,m)=>({...f,...o[m]})),u=()=>i({name:"",template:"",variable_key:""}),d=e("variables"),h=C.useMemo(()=>d.map(f=>({label:f.name,value:f.name})),[d]);return c(a.Stack,{children:[l.map((f,m)=>r(El,{control:t,index:m,remove:s,variableOptions:h})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:u,children:"Add a Reference Line"})})]})}function zl(t){function e({type:n,name:i,showSymbol:s,symbolSize:o=5,y_axis_data_key:l="value",yAxisIndex:u=0,label_position:d="top",stack:h="1",color:f="black",barWidth:m="30",barGap:g="0%",smooth:v=!1,step:D=!1,group_by_key:A=""}){return{type:n,name:i,showSymbol:s,symbolSize:o,y_axis_data_key:l,yAxisIndex:u,label_position:d,stack:h,color:f,barWidth:m,barGap:g,smooth:v,step:D,group_by_key:A}}return t.map(e)}function Ol(t){return t||{templates:{top:"",bottom:""},variables:[]}}function Pl({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaultsDeep({},e,Bt),[e]),o=C.useMemo(()=>{const{series:v,stats:D,...A}=s;return{series:zl(v!=null?v:[]),stats:Ol(D),...A}},[s]);C.useEffect(()=>{!S.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),n(o))},[s,o]);const{control:l,handleSubmit:u,watch:d,getValues:h,reset:f}=w.useForm({defaultValues:o});C.useEffect(()=>{f(o)},[o]),d(["x_axis_data_key","x_axis_name"]);const m=h(),g=C.useMemo(()=>!S.isEqual(m,s),[m,s]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:u(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Accordion,{multiple:!0,defaultValue:["X Axis","Y Axes"],children:[c(a.Accordion.Item,{value:"X Axis",children:[r(a.Accordion.Control,{children:"X Axis"}),r(a.Accordion.Panel,{children:c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis_data_key",control:l,render:({field:v})=>r(j,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...v})}),r(w.Controller,{name:"x_axis_name",control:l,render:({field:v})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...v})})]})})]}),c(a.Accordion.Item,{value:"Y Axes",children:[r(a.Accordion.Control,{children:"Y Axes"}),r(a.Accordion.Panel,{children:r(kl,{control:l,watch:d})})]}),c(a.Accordion.Item,{value:"Series",children:[r(a.Accordion.Control,{children:"Series"}),r(a.Accordion.Panel,{children:r(Dl,{control:l,watch:d,data:i})})]}),c(a.Accordion.Item,{value:"Regression Lines",children:[r(a.Accordion.Control,{children:"Regression Lines"}),r(a.Accordion.Panel,{children:r(yl,{control:l,watch:d,data:i})})]}),c(a.Accordion.Item,{value:"Stats",children:[r(a.Accordion.Control,{children:"Stats"}),r(a.Accordion.Panel,{children:r(hl,{control:l,watch:d,data:i})})]}),c(a.Accordion.Item,{value:"Advanced",children:[r(a.Accordion.Control,{children:c(a.Group,{position:"apart",children:["Advanced",r(a.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),r(a.Accordion.Panel,{children:c(a.Tabs,{defaultValue:"variables",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"variables",children:"Variables"}),r(a.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"})]}),r(a.Tabs.Panel,{value:"variables",pt:"xs",children:r(Ml,{control:l,watch:d,data:i})}),r(a.Tabs.Panel,{value:"reference_lines",pt:"xs",children:r(Vl,{control:l,watch:d})})]})})]})]})]})})}class ql extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Fl={displayName:"Cartesian Chart",migrator:new ql,name:"cartesian",viewRender:pl,configRender:Pl,createConfig:()=>Bt},Gl={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function Rl(t,e){const n=t.dimensions.map(({name:o,max:l,color:u})=>({name:o,max:l,color:u})),i=e.map(o=>({value:t.dimensions.map(({data_key:l})=>o[l]),name:o[t.series_name_key]})),s={radar:{indicator:n},series:{type:"radar",data:i}};return P.default.merge({},Gl,s)}const Lt={series_name_key:"name",dimensions:[]};X.use([de.RadarChart,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function Bl({context:t}){const{value:e}=F(t.instanceData,"config"),{width:n,height:i}=t.viewport,s=t.data,o=C.useMemo(()=>Rl(S.defaultsDeep({},e,Lt),s),[e,s]);return!n||!i||!e||S.isEmpty(e==null?void 0:e.dimensions)?null:r(a.Box,{children:r(be.default,{echarts:X,option:o,style:{width:n,height:i}})})}function Ll({control:t,index:e,remove:n,data:i}){return c(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:`dimensions.${e}.name`,control:t,render:({field:s})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:`dimensions.${e}.data_key`,control:t,render:({field:s})=>r(j,{label:"Data Key",required:!0,data:i,sx:{flex:1},...s})}),r(w.Controller,{name:`dimensions.${e}.max`,control:t,render:({field:s})=>r(a.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...s})})]}),c(a.Box,{children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:`dimensions.${e}.color`,control:t,render:({field:s})=>r(ge,{...s})})]}),r(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(e),sx:{position:"absolute",top:15,right:5},disabled:e===0,children:r(_.Trash,{size:16})})]},e)}function Nl({control:t,watch:e,data:n}){const{fields:i,append:s,remove:o}=w.useFieldArray({control:t,name:"dimensions"}),l=e("dimensions"),u=i.map((h,f)=>({...h,...l[f]})),d=()=>s({name:U.randomId(),data_key:"",max:100,color:"red"});return c(a.Stack,{children:[u.map((h,f)=>r(Ll,{data:n,control:t,index:f,remove:o})),r(a.Group,{position:"center",mt:"xs",children:r(a.Button,{onClick:d,children:"Add a Dimension"})})]})}function $l(t){function e({name:n="",data_key:i="",max:s=10,color:o="blue"}){return{name:n,data_key:i,max:s,color:o}}return t.map(e)}function jl({context:t}){const e=t.data,{value:n,set:i}=F(t.instanceData,"config"),s=C.useMemo(()=>S.defaultsDeep({},n,Lt),[n]),{dimensions:o,series_name_key:l}=s,u=C.useMemo(()=>({dimensions:$l(o!=null?o:[]),series_name_key:l}),[o,l]);C.useEffect(()=>{!S.isEqual(s,u)&&i(u)},[s,u]);const{control:d,handleSubmit:h,watch:f,getValues:m,reset:g}=w.useForm({defaultValues:u});C.useEffect(()=>{S.isEqual(m(),u)||g(u)},[s]),f(["series_name_key"]);const v=m(),D=C.useMemo(()=>!S.isEqual(v,s),[v,s]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:h(i),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!D,children:r(_.DeviceFloppy,{size:20})})]}),r(a.Box,{py:"sm",children:r(w.Controller,{name:"series_name_key",control:d,render:({field:A})=>r(j,{label:"Series Name Field",required:!0,data:e,sx:{flex:1},...A})})}),r(Nl,{control:d,watch:f,data:e})]})})}class Wl extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Ql={displayName:"Radar Chart",migrator:new Wl,name:"radar",viewRender:Bl,configRender:jl,createConfig:()=>Lt};function Yl(t,e){switch(t.config.method){case"linear":return[...xe.regressionLinear()(e)];case"exponential":return[...xe.regressionExp()(e)];case"logarithmic":return[...xe.regressionLog()(e)];case"polynomial":return[...xe.regressionPoly().order(t.config.order)(e)];default:return[]}}function Ul({regression:t},e){const n=[],i=[];if(e.length===0)return{regressionSeries:n,regressionXAxes:i};const{transform:s,plot:o,name:l}=t,u=Yl(s,e);return n.push({...o,name:l,data:u,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:n,regressionXAxes:i}}const Xl={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function Jl(t,e){var o,l;const n=P.default.uniqBy(e.map(u=>[u[t.x_axis.data_key],u[t.regression.y_axis_data_key]]),0),{regressionSeries:i}=Ul(t,n),s={xAxis:{type:"category",name:(o=t.x_axis.name)!=null?o:""},yAxis:{name:(l=t.y_axis.name)!=null?l:""},series:[{data:n,name:t.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...i]};return S.defaultsDeep({},s,Xl)}function rt(t,e,n){return 1-(1-t)*(e-1)/(e-n-1)}function Kl(t,e){if(!e)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:n,x_axis:i,y_axis:s}=e,o=t.map(l=>[l[i.data_key],l[n.y_axis_data_key]]);if(n.transform.config.method==="linear"){const l=xe.regressionLinear()(o),{a:u,b:d,rSquared:h}=l;return{expression:c(a.Group,{position:"center",noWrap:!0,spacing:10,children:[r(a.Text,{children:s.name}),r(a.Text,{children:"="}),r(a.Text,{weight:"bold",color:"gray",children:d}),r(a.Text,{children:"+"}),r(a.Text,{weight:"bold",color:"gray",children:u}),r(a.Text,{children:"\xD7"}),r(a.Text,{children:i.name})]}),rSquared:h,adjustedRSquared:rt(h,t.length,1)}}if(n.transform.config.method==="exponential"){const{a:l,b:u,rSquared:d}=xe.regressionExp()(o);return{expression:c(a.Group,{position:"center",noWrap:!0,spacing:10,children:[r(a.Text,{children:s.name}),r(a.Text,{children:"="}),r(a.Text,{weight:"bold",color:"gray",children:l}),r(a.Text,{children:"\xD7"}),c(a.Group,{position:"left",noWrap:!0,spacing:2,children:[r(a.Text,{children:"Math.exp("}),r(a.Text,{weight:"bold",color:"gray",children:u}),r(a.Text,{children:"\xD7"}),r(a.Text,{children:i.name}),r(a.Text,{children:")"})]})]}),rSquared:d,adjustedRSquared:rt(d,t.length,1)}}if(n.transform.config.method==="logarithmic"){const{a:l,b:u,rSquared:d}=xe.regressionLog()(o);return{expression:c(a.Group,{position:"center",noWrap:!0,spacing:10,children:[r(a.Text,{children:s.name}),r(a.Text,{children:"="}),r(a.Text,{weight:"bold",color:"gray",children:l}),r(a.Text,{children:"\xD7"}),c(a.Group,{position:"left",noWrap:!0,spacing:2,children:[r(a.Text,{children:"Math.log("}),r(a.Text,{children:i.name}),r(a.Text,{children:")"}),r(a.Text,{children:"+"}),r(a.Text,{weight:"bold",color:"gray",children:u})]})]}),rSquared:d,adjustedRSquared:rt(d,t.length,1)}}if(n.transform.config.method==="polynomial"){const l=xe.regressionPoly().order(n.transform.config.order)(o),{rSquared:u}=l;return console.log(l),{expression:"",rSquared:u,adjustedRSquared:rt(u,t.length,1)}}return{expression:"",rSquared:0}}const Nt={x_axis:{name:"X Axis",data_key:""},y_axis:{name:"Y Axis"},regression:{transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},plot:{type:"line",yAxisIndex:0,color:"#228be6"},name:"regression",y_axis_data_key:"value"}};X.use([N.DataZoomComponent,de.ScatterChart,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]),X.registerTransform(ln.transform.regression);function Zl({context:t}){const{value:e}=F(t.instanceData,"config"),{width:n,height:i}=t.viewport,s=C.useMemo(()=>{var g;const f=t.data,m=(g=e==null?void 0:e.regression)==null?void 0:g.y_axis_data_key;return m?f.map(v=>typeof v[m]=="number"?v:{...v,[m]:Number(v[m])}):f},[t.data,e==null?void 0:e.regression.y_axis_data_key]),o=C.useMemo(()=>Jl(S.defaultsDeep({},e,Nt),s),[e,s]),{expression:l,rSquared:u,adjustedRSquared:d}=C.useMemo(()=>Kl(s,e),[e,s]);if(!n||!i||!e)return null;let h=i;return l&&(h-=20),c(a.Box,{children:[l&&r(a.Text,{align:"center",size:12,children:l}),c(a.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[r(be.default,{echarts:X,option:o,style:{width:n-190,height:h}}),u&&r(a.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:c("tbody",{children:[c("tr",{children:[r("td",{children:"R-Sq"}),r("td",{style:{textAlign:"right"},children:se.default(u).format({output:"percent",mantissa:1})})]}),c("tr",{children:[r("td",{children:"R-Sq(Adjusted)"}),r("td",{style:{textAlign:"right"},children:se.default(d).format({output:"percent",mantissa:1})})]})]})})]})]})}const Hl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function eu({control:t,watch:e,data:n}){const i=e("regression.transform.config.method");return c(a.Stack,{children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"regression.name",control:t,render:({field:s})=>r(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),r(w.Controller,{name:"regression.y_axis_data_key",control:t,render:({field:s})=>r(j,{label:"Value Field",required:!0,data:n,sx:{flex:1},...s})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"regression.transform.config.method",control:t,render:({field:s})=>r(a.Select,{label:"Method",data:Hl,sx:{flex:1},...s})}),i==="polynomial"&&r(w.Controller,{name:"regression.transform.config.order",control:t,render:({field:s})=>r(a.NumberInput,{label:"Order",sx:{flex:1},...s})})]}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Color"}),r(w.Controller,{name:"regression.plot.color",control:t,render:({field:s})=>r(ge,{...s})})]})]})}function tu({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaults({},e,Nt),[e]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});C.useEffect(()=>{h(s)},[s]),u(["x_axis","y_axis","regression"]);const f=d(),m=C.useMemo(()=>!S.isEqual(f,e),[f,e]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[c(a.Accordion.Item,{value:"Axis",children:[r(a.Accordion.Control,{children:"Axis"}),c(a.Accordion.Panel,{children:[c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"x_axis.data_key",control:o,render:({field:g})=>r(j,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]}),r(a.Group,{grow:!0,noWrap:!0,children:r(w.Controller,{name:"y_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...g})})})]})]}),c(a.Accordion.Item,{value:"Regression",children:[r(a.Accordion.Control,{children:"Regression Line"}),r(a.Accordion.Panel,{children:r(eu,{control:o,watch:u,data:i})})]})]})]})})}class nu extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const ru={displayName:"Regression Chart",migrator:new nu,name:"regressionChart",viewRender:Zl,configRender:tu,createConfig:()=>Nt},$t={x_axis:{name:"X Axis",data_key:""},data_key:"value",bar:{name:"Value",color:"#228be6"},line:{name:"Value",color:"red"}};function jt(t){return se.default(t).format({output:"percent",mantissa:0})}function iu(t){const e=t.value[1];try{return jt(e)}catch(n){return console.error(n),e}}function au(t){const e=Array.isArray(t)?t:[t];if(e.length===0)return"";const n=e.map((i,s)=>{const o=i.seriesName,[l,u]=i.value;return o?`${o}: <strong>${(s===0?h=>h:jt)(u)}</strong>`:u});return n.unshift(`<strong>${e[0].name}</strong>`),n.join("<br />")}X.use([de.BarChart,de.LineChart,N.DataZoomComponent,N.GridComponent,N.LegendComponent,N.TooltipComponent,ve.CanvasRenderer]);function su({context:t}){const{value:e}=F(t.instanceData,"config"),n=t.data,{width:i,height:s}=t.viewport,{x_axis:o,data_key:l,bar:u,line:d}=S.defaults({},e,$t),{barData:h,lineData:f}=C.useMemo(()=>{const g=n.map(A=>[A[o.data_key],Number(A[l])]).sort((A,V)=>V[1]-A[1]),v=g.reduce((A,V)=>A+V[1],0),D=g.reduce((A,V,B)=>{const R=B===0?0:A[B-1][1];return A.push([V[0],R+V[1]]),A},[]).map(A=>[A[0],A[1]/v]);return{barData:g,lineData:D}},[o.data_key,l,n]),m={dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis",formatter:au},xAxis:[{type:"category",name:o.name,nameLocation:"middle",nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"}}],yAxis:[{name:u.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"}},{name:d.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"center"},axisLabel:{show:!0,formatter:jt}}],series:[{name:u.name,type:"bar",itemStyle:{color:u.color},yAxisIndex:0,data:h},{name:d.name,type:"line",itemStyle:{color:d.color},label:{show:!0,position:"top",formatter:iu},yAxisIndex:1,data:f}]};return!e||!i||!s?null:r(be.default,{echarts:X,option:m,style:{width:i,height:s}})}function ou({context:t}){const{value:e,set:n}=F(t.instanceData,"config"),i=t.data,s=C.useMemo(()=>S.defaults({},e,$t),[e]),{control:o,handleSubmit:l,watch:u,getValues:d,reset:h}=w.useForm({defaultValues:s});C.useEffect(()=>{h(s)},[s]),u(["x_axis","data_key","bar","line"]);const f=d(),m=C.useMemo(()=>!S.isEqual(f,e),[f,e]);return r(a.Stack,{mt:"md",spacing:"xs",children:c("form",{onSubmit:l(n),children:[c(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[r(a.Text,{children:"Chart Config"}),r(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:r(_.DeviceFloppy,{size:20})})]}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"x_axis.name",control:o,render:({field:g})=>r(a.TextInput,{label:"X Axis Name",sx:{flex:1},...g})}),r(w.Controller,{name:"x_axis.data_key",control:o,render:({field:g})=>r(j,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...g})})]}),r(w.Controller,{name:"data_key",control:o,render:({field:g})=>r(j,{label:"Y Axis Data Field",required:!0,data:i,sx:{flex:1},...g})}),r(a.Divider,{my:"md",label:"Bar",labelPosition:"center"}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"bar.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Bar Name",sx:{flex:1},...g})}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Bar's Color"}),r(w.Controller,{name:"bar.color",control:o,render:({field:g})=>r(ge,{...g})})]})]}),r(a.Divider,{my:"md",label:"Line",labelPosition:"center"}),c(a.Group,{grow:!0,noWrap:!0,children:[r(w.Controller,{name:"line.name",control:o,render:({field:g})=>r(a.TextInput,{label:"Line Name",sx:{flex:1},...g})}),c(a.Stack,{spacing:4,children:[r(a.Text,{size:"sm",children:"Line's Color"}),r(w.Controller,{name:"line.color",control:o,render:({field:g})=>r(ge,{...g})})]})]})]})})}class lu extends le{constructor(){super(...arguments);E(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const uu={displayName:"Pareto Chart",migrator:new lu,name:"paretoChart",viewRender:su,configRender:ou,createConfig:()=>$t},cu=[{value:"#25262B",name:"Dark"},{value:"#868E96",name:"Gray"},{value:"#FA5252",name:"Red"},{value:"#E64980",name:"Pink"},{value:"#BE4BDB",name:"Grape"},{value:"#7950F2",name:"Violet"},{value:"#4C6EF5",name:"Indigo"},{value:"#228BE6",name:"Blue"},{value:"#15AABF",name:"Cyan"},{value:"#12B886",name:"Teal"},{value:"#40C057",name:"Green"},{value:"#82C91E",name:"Lime"},{value:"#FAB005",name:"Yellow"},{value:"#FD7E14",name:"Orange"}].map(t=>({name:t.name,value:t.value,type:"single",category:"basic"})),du=[qa,Fa,Ba,Ra,Ga,La],gr={id:"dashboard",version:Na,manifest:{viz:[Pt,Ls,Xa,Po,Bo,jo,Ho,uu,Fl,Ql,ru],color:[...cu,...du]}},Le=new ja,mr=()=>{try{Le.install(gr)}catch{}const t=new za(Le),e=new $a(Le);return{pluginManager:Le,vizManager:t,colorManager:e}},me=C.createContext(mr());try{Le.install(gr)}catch{}function pu(t,e){const{value:n,set:i}=F(t.operation.operationData,"config"),[s,o]=C.useState(S.defaults({},n,e)),l=async()=>{await i(s)};return C.useEffect(()=>{o(S.defaults({},n,e))},[n]),{config:s,setConfig:o,commit:l}}function fu(t){const{config:e,setConfig:n,commit:i}=pu(t,{urlTemplate:"",openInNewTab:!0});async function s(){await i()}async function o(u){n({...e,openInNewTab:u}),await i()}const l=u=>n({...e,urlTemplate:u.currentTarget.value});return c(a.Stack,{children:[r(a.TextInput,{label:"Url",value:e.urlTemplate,onChange:l,onBlur:s}),r(a.Switch,{label:"Open in new Tab",checked:e.openInNewTab,onChange:u=>o(u.currentTarget.checked)})]})}function hu(t){return S.cloneDeepWith(t,n=>{if(typeof n=="string")return encodeURIComponent(n)})}async function gu(t,e){const{urlTemplate:n,openInNewTab:i}=await e.operationData.getItem("config"),o=S.template(n||"")(hu(t));window.open(o,i?"_blank":"_self","noopener")}const mu={displayName:"Open Link",id:"builtin:op:open-link",configRender:fu,run:gu};function yu(t){const{value:e,set:n}=F(t.operationData,"config"),i=s=>void n({template:s});return[(e==null?void 0:e.template)||"",i]}function vu(t){const[e,n]=yu(t.operation);return r(a.TextInput,{defaultValue:e,onBlur:i=>n(i.currentTarget.value),label:"console.log"})}async function bu(t,e){const n=await e.operationData.getItem("config"),i=S.template(n.template||"");console.log("run with payload",t),console.log(i(t))}const Wt=[{displayName:"console.log (debug)",id:"builtin:op:debug",configRender:vu,run:bu},mu];class xu{constructor(e,n=Wt){E(this,"attachments");this.operations=n;const i=async s=>{const{id:o,schemaRef:l}=await s.getItem(null);return{id:o,schemaRef:l,operationData:new Ae(s,"data")}};this.attachments=new xt(e,"__OPERATIONS",i)}async runOperation(e,n){const i=await this.attachments.getInstance(e);if(!i){console.warn(`Operation '${e}' is not defined`);return}const s=this.operations.find(o=>o.id===i.schemaRef);if(!s){console.warn(`Operation schema '${i.schemaRef}' is not defined`);return}await s.run(n,i)}async createOrGetOperation(e,n){if(!this.getOperationSchemaList().some(l=>l.id===n.id))throw new Error(`Operation schema '${n.id}' is not defined`);const s=await this.attachments.getInstance(e);return!s||s.schemaRef!==n.id?await this.attachments.create(e,{id:e,schemaRef:n.id,data:{}}):s}getOperationList(){return this.attachments.list()}getOperationSchemaList(){return this.operations}removeOperation(e){return this.attachments.remove(e)}async retrieveTrigger(e){return await this.attachments.getInstance(e)}}const yr="__TRIGGERS";class Cu{constructor(e,n){E(this,"attachments");this.instance=e,this.component=n;const i=async s=>{const{id:o,schemaRef:l}=await s.getItem(null);return{id:o,schemaRef:l,triggerData:new Ae(s,"data")}};this.attachments=new xt(e,yr,i)}watchTriggerSnapshotList(e){return this.instance.instanceData.watchItem(yr,n=>{const i=S.values(n).map(s=>({id:S.get(s,"id"),schemaRef:S.get(s,"schemaRef"),config:J.toJS(S.get(s,"data.config"))}));e(i)},{fireImmediately:!0})}async createOrGetTrigger(e,n,i={recreate:!1}){if(!this.getTriggerSchemaList().some(u=>u.id===n.id))throw new Error(`Trigger schema '${n.id}' is not defined in component '${this.component.name}'`);const o=await this.attachments.getInstance(e);return!o||i.recreate||o.schemaRef!==n.id?await this.attachments.create(e,{id:e,schemaRef:n.id,data:{}}):o}async getTriggerList(){return await this.attachments.list()}getTriggerSchemaList(){return this.component.triggers||[]}async removeTrigger(e){await this.attachments.remove(e)}async retrieveTrigger(e){return await this.attachments.getInstance(e)}}class vr{constructor(e,n,i){E(this,"operationManager");E(this,"triggerManager");E(this,"attachments");this.operationManager=new xu(e,i),this.triggerManager=new Cu(e,n);const s=async o=>{const{id:l,triggerRef:u,operationRef:d}=await o.getItem(null);return{id:l,triggerRef:u,operationRef:d}};this.attachments=new xt(e,"__INTERACTIONS",s)}async addInteraction(e,n){const i=e.id,s=n.id,o=`[${i}]:[${s}]`;await this.attachments.create(o,{id:o,triggerRef:i,operationRef:s})}getInteractionList(){return this.attachments.list()}async removeInteraction(e){const n=await this.attachments.getInstance(e);if(!n)return;const{triggerRef:i,operationRef:s}=n;await this.getTriggerRefCount(i)<=1&&await this.triggerManager.removeTrigger(i),await this.getOperationRefCount(s)<=1&&await this.operationManager.removeOperation(s),await this.attachments.remove(e)}async getOperationRefCount(e){return(await this.getInteractionList()).filter(i=>i.operationRef===e).length}async getTriggerRefCount(e){return(await this.getInteractionList()).filter(i=>i.triggerRef===e).length}async runInteraction(e,n){const s=(await this.getInteractionList()).filter(o=>o.triggerRef===e);await Promise.all(s.map(async o=>{try{return await this.operationManager.runOperation(o.operationRef,n)}catch(l){console.warn(`Failed to run operation '${o.operationRef}'`,l)}}))}}function wu(t,e){const[n,i]=C.useState([]);return L.useAsyncEffect(async()=>{const s=await t.getInteractionList();i(s)},[e]),n}const Su=k.observer(({item:t,manager:e,instance:n,sampleData:i,variables:s,onRemove:o})=>{const{triggerRef:l,operationRef:u}=t,d=_a(e.triggerManager,n);if(L.useAsyncEffect(async()=>{await d.configTrigger(l,i)},[d,l,i]),d.isReady()){const h=[...d.triggerSchema.payload,...s];return c(a.Group,{children:[r(Ea,{model:d}),r(Ia,{instance:n,operationId:u,variables:h,operationManager:e.operationManager}),r(a.Button,{"aria-label":"delete-interaction",variant:"outline",color:"red",onClick:()=>o(t),children:r(_.Trash,{})})]})}return null}),Iu=t=>{const[e,n]=C.useState(0),{interactionManager:i,instance:s,sampleData:o,variables:l}=t,u=wu(i,e),d=async()=>{const f=await i.triggerManager.createOrGetTrigger(U.randomId(),i.triggerManager.getTriggerSchemaList()[0]),m=await i.operationManager.createOrGetOperation(U.randomId(),i.operationManager.getOperationSchemaList()[0]);await i.addInteraction(f,m),n(g=>g+1)};async function h(f){await i.removeInteraction(f.id),n(m=>m+1)}return c(a.Stack,{children:[u.map(f=>r(Su,{onRemove:h,instance:s,sampleData:o,variables:l,item:f,manager:t.interactionManager},f.id)),r(a.Button,{style:{width:"fit-content"},onClick:()=>d(),children:"Add interaction"})]})},Tu=()=>{const{panel:t,data:e}=K(),n=t.viz,{vizManager:i}=C.useContext(me),s=t.json,o=L.useCreation(()=>i.getOrCreateInstance(s),[i,n.type]),l=L.useCreation(()=>new vr(o,i.resolveComponent(n.type),Wt),[o,n.type]);return C.useEffect(()=>o.instanceData.watchItem(null,S.throttle(u=>{t.viz.setConf(u)},100,{leading:!1,trailing:!0})),[o]),{instance:o,vizManager:i,interactionManager:l,sampleData:e,variables:[]}},Du=()=>{const t=Tu();return r(Iu,{...t})},_u=k.observer(()=>{const{panel:t}=K(),[e,n]=b.default.useState(t.description),i=t.description!==e,s=b.default.useCallback(()=>{!i||t.setDescription(e)},[i,e]);return c(a.Stack,{spacing:4,sx:{flexGrow:1},children:[c(a.Group,{align:"end",children:[r(a.Text,{sx:{flexGrow:1},children:"Description"}),r(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!i,onClick:s,children:r(_.DeviceFloppy,{size:20})})]}),r(pt.RichTextEditor,{value:e,onChange:n,sx:{flexGrow:1},sticky:!0,p:"0"})]})}),ku=k.observer(()=>{const{panel:t}=K(),{style:e}=t;return r($,{children:r(a.Switch,{label:"Border",checked:e.border.enabled,onChange:n=>e.border.setEnabled(n.currentTarget.checked)})})}),Au=k.observer(()=>{const{panel:{title:t,style:{border:e}}}=K();return r(ke,{children:c(a.Stack,{mx:"auto",mt:"xl",p:"5px",spacing:5,sx:{width:"600px",height:"450px",background:"transparent",borderRadius:"5px",border:"1px solid #ced4da",borderWidth:e.enabled?"1px":"0px"},children:[c(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[r(a.Group,{children:r(On,{})}),r(a.Group,{grow:!0,position:"center",children:r(a.Text,{lineClamp:1,weight:"bold",children:t})}),r(a.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),r(a.Group,{sx:{background:"#eee",flexGrow:1}})]})})}),Mu=k.observer(()=>{const{panel:t}=K(),{title:e,setTitle:n}=t,[i,s]=U.useInputState(e),o=e!==i,l=b.default.useCallback(()=>{!o||n(i)},[o,i]);return r(a.TextInput,{value:i,onChange:s,label:c(a.Group,{align:"apart",children:[r(a.Text,{sx:{flexGrow:1},children:"Panel Title"}),r(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!o,onClick:l,children:r(_.DeviceFloppy,{size:20})})]}),styles:{label:{display:"block",paddingBottom:"4px"}}})});function Eu(){return c(a.Group,{grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%"},children:[c(a.Stack,{sx:{width:"40%",flexShrink:0,flexGrow:0,height:"100%"},children:[r(a.Divider,{label:"Style",labelPosition:"center",variant:"dashed"}),r(ku,{}),r(a.Divider,{label:"Info",labelPosition:"center",variant:"dashed"}),r(Mu,{}),r(_u,{})]}),r(a.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:r(Au,{})})]})}const Vu=k.observer(function(){const e=Q(),{panel:{queryID:n,setQueryID:i}}=K(),s=b.default.useMemo(()=>e.queries.current.map(o=>({value:o.id,label:o.id})),[e.queries.current]);return c(a.Stack,{children:[c(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[r(a.Text,{children:"Select a Query"}),r(a.Select,{data:s,value:n,onChange:i,allowDeselect:!1,clearable:!1,sx:{flexGrow:1}})]}),r(Sn,{id:n})]})});function br(t,e,n){const i=L.useCreation(()=>new Set,[]),s=t.resolveComponent(e.type),[o,l]=C.useState(!1);return L.useAsyncEffect(async()=>{if(await s.migrator.needMigration(e)&&!i.has(e.id))try{i.add(e.id),await s.migrator.migrate(e),n==null||n()}finally{i.delete(e.id),l(!0)}else l(!0)},[e]),o}function zu({setVizConf:t,...e}){const{vizManager:n,panel:i}=e,s=n.getOrCreateInstance(i),o=br(n,s,()=>{ft.showNotification({title:`${i.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return L.useAsyncEffect(async()=>{await s.instanceData.setItem(null,i.viz.conf)},[s,i.viz.type]),C.useEffect(()=>s.instanceData.watchItem(null,l=>{t(l)}),[t,i.viz.type]),o?r(Pa,{...e}):r(a.Text,{children:"Checking update..."})}function Ou(t){const{vizManager:e,panel:n}=t,i=e.getOrCreateInstance(n);return br(e,i,()=>{ft.showNotification({title:`${n.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?r(Oa,{...t}):r(a.Text,{children:"Checking update"})}const Jc="";function Pu(t,e){const{vizManager:n}=C.useContext(me),{panel:{viz:i,title:s,id:o,description:l,queryID:u,style:d}}=K(),h={title:s,id:o,description:l,queryID:u,viz:i,layout:e,style:d.json};try{return n.resolveComponent(i.type),r(Ou,{panel:h,data:t,vizManager:n})}catch(f){return console.info(S.get(f,"message")),null}}function xr(t,e,n,i){switch(i.conf,i.type){default:return null}}const qu=["rich-text"],Cr=k.observer(function({height:e,viz:n,data:i,loading:s}){const{ref:o,width:l,height:u}=U.useElementSize(),d=b.default.useMemo(()=>!Array.isArray(i)||i.length===0,[i]),h=Pu(i,{w:l,h:u});if(!(!qu.includes(n.type)||!!h))return r("div",{className:"viz-root",ref:o,children:r(ke,{children:xr(l,u,i,n)})});const m=h||xr(l,u,i,n);return s?r("div",{className:"viz-root",style:{height:e},ref:o,children:r(a.LoadingOverlay,{visible:s,exitTransitionDuration:0})}):c("div",{className:"viz-root",style:{height:e},ref:o,children:[d&&r(a.Text,{color:"gray",align:"center",children:"nothing to show"}),!d&&r(ke,{children:m})]})});function Fu(){const{data:t,loading:e,panel:{viz:n}}=K();return r(Cr,{viz:n,data:t,loading:e,height:"100%"})}const Qt=[];function Gu(){const{vizManager:t}=C.useContext(me);return C.useMemo(()=>t.availableVizList.map(e=>({value:e.name,label:e.displayName})).concat(Qt),[t])}function Ru(t,e){try{return t.resolveComponent(e).createConfig()}catch{return null}}function Bu(){const{data:t,panel:{viz:e,title:n,queryID:i,description:s,setDescription:o,setTitle:l,setQueryID:u,id:d,style:h}}=K(),{vizManager:f}=C.useContext(me),m={title:n,description:s,viz:e,queryID:i,id:d,style:h.json},g={setDescription:o,setQueryID:u,setTitle:l};try{return f.resolveComponent(m.viz.type),r(zu,{setVizConf:e.setConf,panel:m,panelInfoEditor:g,vizManager:f,data:t})}catch(v){return console.info(S.get(v,"message")),null}}function Lu(){const{data:t,panel:{viz:e}}=K(),[n,i]=U.useInputState(e.type),s=e.type!==n,{vizManager:o}=C.useContext(me),l=b.default.useCallback(()=>{if(!s)return;const v=Ru(o,n);e.setType(n),e.setConf(v||{})},[e,s,n]),u=v=>{try{e.setConf(JSON.parse(v))}catch(D){console.error(D)}},d=b.default.useMemo(()=>{var v;return(v=Qt.find(D=>D.value===n))==null?void 0:v.Panel},[n,Qt]),h=Bu(),f=d?C.createElement(d,{data:t,conf:e.conf,setConf:e.setConf}):null,m=h||f,g=Gu();return c($,{children:[r(a.Select,{label:"Visualization",value:n,onChange:i,data:g,rightSection:r(a.ActionIcon,{disabled:!s,onClick:l,children:r(_.DeviceFloppy,{size:20})})}),m,!m&&r(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(e.conf,null,2),onChange:u})]})}function Nu(){return c(a.Group,{grow:!0,noWrap:!0,align:"stretch",sx:{height:"100%",overflow:"hidden"},children:[r(a.Stack,{sx:{width:"40%",flexShrink:0,flexGrow:0,overflow:"scroll",height:"100%"},children:r(Lu,{})}),r(a.Box,{sx:{height:"100%",flexGrow:1,maxWidth:"60%"},children:r(Fu,{})})]})}const $u=k.observer(function({opened:e,close:n}){const{freezeLayout:i}=b.default.useContext(oe),[s,o]=C.useState("Visualization"),{panel:l,loading:u}=K(),{id:d,title:h}=l;return b.default.useEffect(()=>{i(e)},[e]),r(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:n,title:`Editing Panel - ${h.trim()?h:d}`,trapFocus:!0,onDragStart:f=>{f.stopPropagation()},children:r(a.AppShell,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)",".mantine-AppShell-body":{height:"100%"},main:{height:"100%",minHeight:"unset",maxHeight:"100%",width:"100%",padding:"16px"}},padding:"md",children:c(a.Tabs,{value:s,onTabChange:o,className:"panel-settings-tabs",children:[c(a.Tabs.List,{children:[r(a.Tabs.Tab,{value:"Data",children:"Data"}),r(a.Tabs.Tab,{value:"Panel",children:"Panel"}),r(a.Tabs.Tab,{value:"Visualization",children:"Visualization"}),r(a.Tabs.Tab,{value:"Interactions",children:"Interactions"})]}),c(a.Tabs.Panel,{value:"Data",pt:"sm",children:[r(a.LoadingOverlay,{visible:u,exitTransitionDuration:0}),r(Vu,{})]}),r(a.Tabs.Panel,{value:"Panel",pt:"sm",children:s==="Panel"&&r(Eu,{})}),r(a.Tabs.Panel,{value:"Visualization",pt:"sm",children:s==="Visualization"&&r(Nu,{})}),r(a.Tabs.Panel,{value:"Interactions",pt:"sm",children:r(ke,{children:r(Du,{})})})]})})})}),ju=k.observer(({view:t})=>{const e=Q(),n=he.useModals(),[i,s]=b.default.useState(!1),o=()=>s(!0),l=()=>s(!1),{panel:u}=K(),{id:d,queryID:h}=u,{inEditMode:f}=b.default.useContext(oe),m=()=>e.queries.refetchDataByQueryID(h),{viewPanelInFullScreen:g,inFullScreen:v}=b.default.useContext(mt),D=()=>{t.panels.duplicateByID(d)},A=()=>n.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>t.panels.removeByID(d)}),V=b.default.useCallback(()=>{g(d)},[d,g]);return c($,{children:[r(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:c(a.Menu,{children:[r(a.Menu.Target,{children:r(a.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),c(a.Menu.Dropdown,{children:[r(a.Menu.Item,{onClick:m,icon:r(_.Refresh,{size:14}),children:"Refresh"}),r(a.Menu.Item,{onClick:()=>e.queries.downloadDataByQueryID(h),icon:r(_.Download,{size:14}),children:"Download Data"}),!v&&r(a.Menu.Item,{onClick:V,icon:r(_.ArrowsMaximize,{size:14}),children:"Full Screen"}),f&&c($,{children:[r(a.Divider,{label:"Edit",labelPosition:"center"}),r(a.Menu.Item,{onClick:o,icon:r(_.Settings,{size:14}),children:"Settings"}),r(a.Menu.Item,{onClick:D,icon:r(_.Copy,{size:14}),children:"Duplicate"}),r(a.Menu.Item,{color:"red",onClick:A,icon:r(_.Trash,{size:14}),children:"Delete"})]})]})]})}),f&&r($u,{opened:i,close:l})]})}),Kc="",Wu=k.observer(function(){const{panel:e}=K(),{title:n}=e;return n?r(a.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:r(a.Text,{align:"center",lineClamp:1,weight:"bold",children:n})}):null});function Qu(t){return!["richText"].includes(t)}const Yu={border:"1px solid #ced4da"},Uu={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#ced4da"}},it=k.observer(function({panel:e,view:n}){const i=Q(),{data:s,state:o}=i.getDataStuffByID(e.queryID),l=Qu(e.viz.type)&&o==="loading",u=e.title?"calc(100% - 25px - 5px)":"100%",d=e.style.border.enabled?Yu:Uu;return r(Cn,{value:{panel:e,data:s,loading:l},children:c(a.Box,{className:"panel-root",p:5,pt:0,sx:{...d},children:[r(a.Box,{sx:{position:"absolute",left:0,top:0,height:28,zIndex:310},children:r(On,{})}),r(ju,{view:n}),r(Wu,{}),r(Cr,{viz:e.viz,data:s,loading:l,height:u})]})})}),wr=k.observer(function({view:e,panel:n,exitFullScreen:i}){return c(a.Stack,{px:"10px",pb:"5px",sx:{height:"100%",flexGrow:1,justifyContent:"flex-start"},children:[r(a.Group,{mx:"-5px",sx:{flexGrow:0},children:r(a.Button,{variant:"default",size:"sm",onClick:i,leftIcon:r(_.ArrowLeft,{size:20}),children:"Exit fullscreen"})}),r(a.Group,{mx:"-5px",grow:!0,sx:{flexGrow:1,flexShrink:0},children:r(it,{view:e,panel:n})})]})});function Sr(t){const[e,n]=b.default.useState(null),i=b.default.useCallback(u=>{n(u)},[]),s=b.default.useCallback(()=>{n(null)},[]),o=e?t.panels.findByID(e):null;return{viewPanelInFullScreen:i,exitFullScreen:s,inFullScreen:!!o,fullScreenPanel:o}}function Ir(){b.default.useEffect(()=>{const t=Si.default(".dashboard-sticky-area",{useStickyClasses:!0,parentClass:"dashboard-sticky-parent"});return()=>{t==null||t.cleanup()}},[])}const Zc="",Xu=b.default.forwardRef(({handleAxis:t},e)=>r(a.ActionIcon,{ref:e,className:"react-grid-customDragHandle",sx:{userSelect:"none",cursor:"grab",position:"absolute",top:0,right:0,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",children:r(_.ArrowsMove,{size:16})})),Ju=b.default.forwardRef(({handleAxis:t,...e},n)=>r(a.ActionIcon,{ref:n,className:"react-grid-customResizeHandle",sx:{userSelect:"none",cursor:"nwse-resize",position:"absolute",bottom:-5,right:-5,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",...e,children:r(_.ChevronDownRight,{size:16})})),Ku=gt.WidthProvider(pn.default),Zu=k.observer(function({view:e,className:n="layout",rowHeight:i=10,isDraggable:s,isResizable:o}){const l=b.default.useCallback(u=>{u.forEach(({i:d,...h})=>{const f=e.panels.findByID(d);!f||f.layout.set(h)})},[e]);return r(Ku,{onLayoutChange:l,className:`dashboard-layout ${n}`,rowHeight:i,layout:e.panels.layouts,isDraggable:s,isResizable:o,draggableHandle:".react-grid-customDragHandle",resizeHandle:r(Ju,{}),children:e.panels.current.map((u,d)=>c("div",{"data-grid":{...u.layout},style:{position:"relative"},children:[s&&r(Xu,{}),r(it,{view:e,panel:u})]},u.id))})}),Hu=gt.WidthProvider(pn.default),ec=k.observer(function({view:e,className:n="layout",rowHeight:i=10}){return r(Hu,{className:`dashboard-layout ${n}`,rowHeight:i,isDraggable:!1,isResizable:!1,layout:e.panels.layouts,children:e.panels.current.map(s=>r("div",{"data-grid":s.layout,children:r(it,{view:e,panel:s})},s.id))})}),tc=k.observer(({children:t})=>r(a.Box,{children:t})),nc=k.observer(({children:t,view:e})=>r(a.Modal,{size:e.config.width,overflow:"inside",opened:!0,onClose:P.default.noop,withCloseButton:!1,title:e.name,trapFocus:!0,onDragStart:n=>{n.stopPropagation()},styles:{root:{position:"relative",height:"calc(100% - 46px)"},overlay:{position:"absolute !important"},modal:{border:"1px solid #efefef"},body:{"> div":{maxHeight:e.config.height,overflow:"scroll"}}},withinPortal:!1,transitionDuration:0,children:t})),rc=k.observer(({view:t,children:e})=>{switch(t.type){case fe.Modal:return r(nc,{view:t,children:e});case fe.Division:default:return r(tc,{children:e})}}),Tr=k.observer(function({view:e,saveDashboardChanges:n}){const{viewPanelInFullScreen:i,exitFullScreen:s,inFullScreen:o,fullScreenPanel:l}=Sr(e);return Ir(),r(mt.Provider,{value:{viewPanelInFullScreen:i,inFullScreen:o},children:c(a.Box,{className:"dashboard-view",mx:-10,sx:{position:"relative",height:"100%"},children:[o&&r(wr,{view:e,panel:l,exitFullScreen:s}),!o&&r(zn,{saveChanges:n}),r(rc,{view:e,children:c(a.Box,{className:"dashboard-sticky-parent",children:[r(a.Box,{className:"dashboard-sticky-area",children:r(bn,{view:e})}),r(a.Box,{sx:{display:o?"none":"block"},children:r(Zu,{view:e,isDraggable:!0,isResizable:!0})})]})})]})})}),Dr=k.observer(function({view:e}){const{viewPanelInFullScreen:n,exitFullScreen:i,inFullScreen:s,fullScreenPanel:o}=Sr(e);return Ir(),r(mt.Provider,{value:{viewPanelInFullScreen:n,inFullScreen:s},children:c(a.Box,{className:"dashboard-view",sx:{position:"relative",height:"100%"},children:[s&&r(wr,{view:e,panel:o,exitFullScreen:i}),!s&&c(a.Box,{className:"dashboard-sticky-area",children:[r(zn,{saveChanges:P.default.noop}),r(bn,{view:e})]}),r(ec,{view:e})]})})}),_r=y.types.model({label:y.types.string,value:y.types.string}).actions(t=>({setLabel(e){t.label=e},setValue(e){t.value=e}})),kr=y.types.model("FilterConfigModel_Select",{required:y.types.boolean,default_value:y.types.string,static_options:y.types.optional(y.types.array(_r),[]),options_query:Dn}).actions(t=>({addStaticOption(e){t.static_options.push(e)},removeStaticOption(e){t.static_options.splice(e,1)},setRequired(e){t.required=e},setDefaultValue(e){t.default_value=e},setOptionsQuery(e){t.options_query=e}})),ic=()=>kr.create({required:!1,default_value:"",static_options:[],options_query:{type:pe.Postgresql,key:"",sql:""}}),Ar=y.types.model("FilterConfigModel_MultiSelect",{default_value:y.types.optional(y.types.array(y.types.string),[]),static_options:y.types.optional(y.types.array(_r),[]),options_query:Dn}).actions(t=>({addStaticOption(e){t.static_options.push(e)},removeStaticOption(e){t.static_options.splice(e,1)},setDefaultValue(e){t.default_value=y.cast(e)},setOptionsQuery(e){t.options_query=e}})),ac=()=>Ar.create({default_value:[],static_options:[],options_query:{type:pe.Postgresql,key:"",sql:""}}),Mr=y.types.model("FilterConfigModel_Checkbox",{default_value:y.types.boolean}).actions(t=>({setDefaultValue(e){t.default_value=e}})),sc=()=>Mr.create({default_value:!1}),Er=y.types.model("FilterConfigModel_DateRange",{required:y.types.boolean,inputFormat:y.types.enumeration("DateRangeInputFormat",["YYYY","YYYY-MM","YYYY-MM-DD"]),clearable:y.types.boolean}).actions(t=>({setRequired(e){t.required=e},setClearable(e){t.clearable=e},setInputFormat(e){t.inputFormat=e}})),oc=()=>Er.create({required:!1,inputFormat:"YYYY-MM-DD",clearable:!1}),Yt=y.types.model("FilterModel",{id:y.types.identifier,key:y.types.string,label:y.types.string,order:y.types.number,visibleInViewsIDs:y.types.array(y.types.string),type:y.types.enumeration("DashboardFilterType",[re.Select,re.MultiSelect,re.TextInput,re.Checkbox,re.DateRange]),config:y.types.union(kr,Ar,_n,Mr,Er)}).actions(t=>({setKey(e){t.key=e},setLabel(e){t.label=e},setOrder(e){t.order=e},setType(e){switch(e){case re.Select:t.config=ic();break;case re.MultiSelect:t.config=ac();break;case re.TextInput:t.config=kn();break;case re.Checkbox:t.config=sc();break;case re.DateRange:t.config=oc();break}t.type=e},setVisibleInViewsIDs(e){console.log(e),t.visibleInViewsIDs.length=0,t.visibleInViewsIDs.push(...e)}})),Vr=y.types.model("FiltersModel",{original:y.types.optional(y.types.array(Yt),[]),current:y.types.optional(y.types.array(Yt),[]),values:y.types.optional(y.types.frozen(),{})}).views(t=>({get changed(){return!P.default.isEqual(t.original,t.current)},get firstID(){if(t.current.length!==0)return t.current[0].id},get inOrder(){return P.default.sortBy(t.current,"order")},get empty(){return t.current.length===0},visibleInView(e){return P.default.sortBy(t.current.filter(n=>n.visibleInViewsIDs.includes(e)),"order")}})).actions(t=>({reset(){t.current=P.default.cloneDeep(t.original)},replace(e){t.current=y.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},setValues(e){t.values=e},setValueByKey(e,n){t.values[e]=n},getValueByKey(e){return t.values[e]}}));function zr(t){const e=t.reduce((n,i)=>{var s;return n[i.key]=(s=i.config.default_value)!=null?s:"",n},{});return{original:t,current:t,values:e}}var Ut={exports:{}};(function(t,e){(function(n,i){i()})(Oe,function(){function n(h,f){return typeof f>"u"?f={autoBom:!1}:typeof f!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),f={autoBom:!f}),f.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(h.type)?new Blob(["\uFEFF",h],{type:h.type}):h}function i(h,f,m){var g=new XMLHttpRequest;g.open("GET",h),g.responseType="blob",g.onload=function(){d(g.response,f,m)},g.onerror=function(){console.error("could not download file")},g.send()}function s(h){var f=new XMLHttpRequest;f.open("HEAD",h,!1);try{f.send()}catch{}return 200<=f.status&&299>=f.status}function o(h){try{h.dispatchEvent(new MouseEvent("click"))}catch{var f=document.createEvent("MouseEvents");f.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),h.dispatchEvent(f)}}var l=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof Oe=="object"&&Oe.global===Oe?Oe:void 0,u=l.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),d=l.saveAs||(typeof window!="object"||window!==l?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(h,f,m){var g=l.URL||l.webkitURL,v=document.createElement("a");f=f||h.name||"download",v.download=f,v.rel="noopener",typeof h=="string"?(v.href=h,v.origin===location.origin?o(v):s(v.href)?i(h,f,m):o(v,v.target="_blank")):(v.href=g.createObjectURL(h),setTimeout(function(){g.revokeObjectURL(v.href)},4e4),setTimeout(function(){o(v)},0))}:"msSaveOrOpenBlob"in navigator?function(h,f,m){if(f=f||h.name||"download",typeof h!="string")navigator.msSaveOrOpenBlob(n(h,m),f);else if(s(h))i(h,f,m);else{var g=document.createElement("a");g.href=h,g.target="_blank",setTimeout(function(){o(g)})}}:function(h,f,m,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),typeof h=="string")return i(h,f,m);var v=h.type==="application/octet-stream",D=/constructor/i.test(l.HTMLElement)||l.safari,A=/CriOS\/[\d]+/.test(navigator.userAgent);if((A||v&&D||u)&&typeof FileReader<"u"){var V=new FileReader;V.onloadend=function(){var ue=V.result;ue=A?ue:ue.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=ue:location=ue,g=null},V.readAsDataURL(h)}else{var B=l.URL||l.webkitURL,R=B.createObjectURL(h);g?g.location=R:location.href=R,g=null,setTimeout(function(){B.revokeObjectURL(R)},4e4)}});l.saveAs=d.saveAs=d,t.exports=d})})(Ut);function lc(t,e){const n=new Blob([e],{type:"text/csv"});Ut.exports.saveAs(n,`${t}.csv`)}function uc(t){const e=new Ii.default;t.forEach(({id:n,data:i})=>{e.file(`${n}.csv`,Or(i))}),e.generateAsync({type:"blob"}).then(n=>{Ut.exports.saveAs(n,"dashboard_data.zip")})}function Or(t){if(!Array.isArray(t)||t.length===0)return"";const e=[],n=Object.keys(t[0]);return e.push(n.join(",")),t.forEach(i=>{const s=Object.values(i).join(",");e.push(s)}),e.join(`
42
+ `)}const Pr=y.types.model("QueryModel",{id:y.types.string,type:y.types.enumeration("DataSourceType",[pe.Postgresql,pe.MySQL,pe.HTTP]),key:y.types.string,sql:y.types.string}).views(t=>({get valid(){return t.id&&t.type&&t.key&&t.sql},get configurations(){const{id:e,type:n,key:i,sql:s}=t;return{id:e,type:n,key:i,sql:s}}})),qr=y.types.compose("QueryModel",Pr,y.types.model({state:y.types.optional(y.types.enumeration(["idle","loading","error"]),"idle"),data:y.types.optional(y.types.array(y.types.frozen()),[]),error:y.types.frozen()})).views(t=>({get formattedSQL(){const{context:e,sqlSnippets:n,filterValues:i}=y.getRoot(t).payloadForSQL;return yn(t.sql,e,n,i)}})).actions(t=>({setID(e){t.id=e},setKey(e){t.key=e},setType(e){t.type=e},setSQL(e){t.sql=e},fetchData:y.flow(function*(){if(!!t.valid){t.state="loading";try{const e=t.id,{context:n,sqlSnippets:i,filterValues:s}=y.getRoot(t).payloadForSQL;t.data=yield*y.toGenerator(Ei({context:n,sqlSnippets:i,title:e,query:{type:t.type,key:t.key,sql:t.sql},filterValues:s})),t.state="idle"}catch(e){console.error(e),t.error=e,t.state="error"}}})})).actions(t=>({afterCreate(){y.addDisposer(t,J.reaction(()=>`${t.id}--${t.key}--${t.type}--${t.formattedSQL}`,t.fetchData,{fireImmediately:!0,delay:500}))}})),Fr=y.types.model("QueriesModel",{original:y.types.optional(y.types.array(Pr),[]),current:y.types.optional(y.types.array(qr),[])}).views(t=>({get changed(){return t.original.length!==t.current.length?!0:t.original.some((e,n)=>!P.default.isEqual(e.configurations,t.current[n].configurations))},get firstID(){if(t.current.length!==0)return t.current[0].id},findByID(e){return t.current.find(n=>n.id===e)},get options(){return t.current.map(e=>({value:e.id,label:e.id}))}})).actions(t=>({reset(){const e=t.original.map(n=>({...n,state:"idle",data:[],error:null}));t.current.length=0,t.current.unshift(...e)},replace(e){t.current=y.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},downloadAllData(){const e=t.current.map(({id:n,data:i})=>({id:n,data:i.toJSON()}));uc(e)},downloadDataByQueryID(e){const n=t.findByID(e);if(!n){console.log(`[downloadDataByQueryID] query by ID[${e}] not found`);return}const{id:i,data:s}=n,o=Or(s);lc(i,o)},refetchDataByQueryID(e){const n=t.findByID(e);if(!n){console.error(new Error(`[downloadDataByQueryID] query by ID[${e}] not found`));return}return n.fetchData()}})),Xt=y.types.model("SQLSnippetModel",{key:y.types.string,value:y.types.string}).actions(t=>({setKey(e){t.key=e},setValue(e){t.value=e}})),Gr=y.types.model("SQLSnippetsModel",{original:y.types.optional(y.types.array(Xt),[]),current:y.types.optional(y.types.array(Xt),[])}).views(t=>({get changed(){return!P.default.isEqual(t.original,t.current)}})).actions(t=>({reset(){t.current=P.default.cloneDeep(t.original)},replace(e){t.current=y.cast(e)},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},replaceByIndex(e,n){t.current.splice(e,1,n)}})),Rr=y.types.model("ContextModel",{current:y.types.optional(y.types.frozen(),{})}).views(t=>({get keys(){return Object.keys(t.current)},get entries(){return Object.entries(t.current)}})).actions(t=>({replace(e){t.current=e},get(e){return t.current[e]},set(e,n){t.current[e]=n}})),cc=y.types.model("PanelLayoutModel",{x:y.types.number,y:y.types.number,w:y.types.number,h:y.types.number,moved:y.types.optional(y.types.boolean,!1),static:y.types.optional(y.types.boolean,!1)}).views(t=>({get json(){const{x:e,y:n,w:i,h:s,moved:o}=t;return{x:e,y:n,w:i,h:s,moved:o,static:t.static}}})).actions(t=>({set(e){const{x:n,y:i,w:s,h:o,moved:l}=e;t.x=n,t.y=i,t.w=s,t.h=o,t.moved=!!l,t.static=!!e.static}})),dc=y.types.model("PanelStyleBorderModel",{enabled:y.types.boolean}).views(t=>({get json(){const{enabled:e}=t;return{enabled:e}}})).actions(t=>({setEnabled(e){t.enabled=e}})),pc=y.types.model("PanelStyleModel",{border:dc}).views(t=>({get json(){const{border:e}=t;return{border:e.json}}})).actions(t=>({})),fc=y.types.model("PanelVizModel",{type:y.types.string,conf:y.types.frozen()}).views(t=>({get json(){return{type:t.type,conf:t.conf}}})).actions(t=>({setType(e){t.type=e},setConf(e){t.conf=e}})),Br=y.types.model({id:y.types.string,title:y.types.string,description:y.types.string,layout:cc,queryID:y.types.string,viz:fc,style:pc}).views(t=>({get json(){const{id:e,title:n,description:i,queryID:s}=t;return{id:e,title:n,description:i,layout:t.layout.json,queryID:s,viz:t.viz.json,style:t.style.json}}})).actions(t=>({setID(e){t.id=e},setTitle(e){t.title=e},setDescription(e){t.description=e},setQueryID(e){t.queryID=e}})).actions(t=>({})),hc=y.types.model("PanelsModel",{original:y.types.optional(y.types.array(Br),[]),current:y.types.optional(y.types.array(Br),[])}).views(t=>({get changed(){return t.original.length!==t.current.length?!0:t.original.some((e,n)=>!P.default.isEqual(e.json,t.current[n].json))},get json(){return t.current.map(e=>e.json)},get layouts(){return t.current.map(e=>({...e.layout.json,i:e.id}))},findByID(e){return t.current.find(n=>n.id===e)}})).actions(t=>({reset(){const e=t.original.map(n=>({...n}));t.current.length=0,t.current.unshift(...e)},replace(e){t.current=y.cast(e)},addANewPanel(){const e=U.randomId();t.current.push({id:e,layout:{x:0,y:1/0,w:3,h:15},title:`Panel - ${e}`,description:"<p><br></p>",queryID:"",viz:{type:Pt.name,conf:Pt.createConfig()},style:{border:{enabled:!0}}})},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(i=>i.id===e);n!==-1&&t.current.splice(n,1)},duplicateByID(e){const n=t.current.find(i=>i.id===e);if(!n){console.error(new Error(`[duplicate panel] Can't find a panel by id[${e}]`));return}t.current.push({...n,id:U.randomId(),layout:{...n.layout,x:0,y:1/0,moved:!1}})},replaceByIndex(e,n){t.current.splice(e,1,n)}})),Jt=y.types.model({id:y.types.identifier,name:y.types.string,type:y.types.string,config:y.types.frozen(),panels:hc}).views(t=>({get json(){const{id:e,name:n,type:i,config:s}=t;return{id:e,name:n,type:i,config:s,panels:t.panels.json}}})).actions(t=>({setName(e){t.name=e},setType(e){t.type!==e&&(e===fe.Modal?t.config={width:"600px",height:"400px"}:t.config={},t.type=e)},setConfig(e){t.config=e},updateConfig(e,n){t.config={...t.config,[e]:n}}})).actions(t=>({})),Kt=y.types.model("ViewsModel",{original:y.types.optional(y.types.array(Jt),[]),current:y.types.optional(y.types.array(Jt),[]),visibleViewIDs:y.types.array(y.types.string),idOfVIE:y.types.string}).views(t=>({get changed(){return t.original.length!==t.current.length?!0:t.original.some((e,n)=>!P.default.isEqual(e.json,t.current[n].json))},get json(){return t.current.map(e=>e.json)},findByID(e){return t.current.find(n=>n.id===e)},get isVIETheFirstView(){return t.current.length===0||!t.idOfVIE?!1:t.current[0].id===t.idOfVIE},get firstVisibleView(){const[e]=t.visibleViewIDs;return t.current.find(({id:n})=>n===e)},get visibleViews(){const e=new Set(t.visibleViewIDs);return t.current.filter(({id:n})=>e.has(n))},get VIE(){return t.current.find(({id:e})=>e===t.idOfVIE)},get options(){return t.current.map(e=>({label:e.name,value:e.id,type:e.type}))}})).actions(t=>({reset(){const e=t.original.map(n=>({...n}));t.current.length=0,t.current.unshift(...e)},replace(e){t.current=y.cast(e)},addANewView(e,n,i){t.current.push({id:e,name:e,type:n,config:i,panels:{current:[],original:[]}})},append(e){t.current.push(e)},remove(e){t.current.splice(e,1)},removeByID(e){const n=t.current.findIndex(i=>i.id===e);n!==-1&&t.current.splice(n,1)},replaceByIndex(e,n){t.current.splice(e,1,n)},setIDOfVIE(e){t.idOfVIE=e,t.visibleViewIDs.length=0,t.visibleViewIDs.push(e)},addAPanelToVIE(){var e;(e=t.VIE)==null||e.panels.addANewPanel()}})).actions(t=>({addARandomNewView(){const e=U.randomId();t.addANewView(e,fe.Division,{}),t.setIDOfVIE(e)},removeVIE(){t.current.length!==1&&(t.removeByID(t.idOfVIE),t.setIDOfVIE(t.current[0].id))},rmVisibleViewID(e){const n=t.visibleViewIDs.findIndex(i=>i===e);n!==-1&&t.visibleViewIDs.splice(n,1)}}));function Lr(t){const e=t.length>0?[t[0].id]:[],n=t.length>0?t[0].id:"",i=t.map(s=>({...s,panels:{original:s.panels,current:s.panels}}));return Kt.create({original:i,current:i,visibleViewIDs:e,idOfVIE:n})}const gc=y.types.model({id:y.types.identifier,name:y.types.string,filters:Vr,queries:Fr,sqlSnippets:Gr,views:Kt,context:Rr}).views(t=>({get payloadForSQL(){return{context:t.context.current,sqlSnippets:t.sqlSnippets.current,filterValues:t.filters.values}},get data(){return t.queries.current.map(({id:n,data:i})=>({id:n,data:i})).reduce((n,i)=>(n[i.id]=i.data,n),{})},getDataStuffByID(e){const n=t.queries.findByID(e);return n?{data:n.data.toJSON(),state:n.state,error:void 0}:{data:[],state:"idle",error:void 0}},getDataStateByID(e){var n,i;return(i=(n=t.queries.findByID(e))==null?void 0:n.state)!=null?i:[]},getDataErrorByID(e){var n,i;return(i=(n=t.queries.findByID(e))==null?void 0:n.error)!=null?i:[]}}));function Zt({id:t,name:e,filters:n,views:i,definition:{queries:s,sqlSnippets:o}},l){return gc.create({id:t,name:e,filters:zr(n),queries:{original:s,current:s},sqlSnippets:{original:o,current:o},context:l,views:Lr(i)})}const Hc="",mc=k.observer(function({context:e,dashboard:n,update:i,className:s="dashboard",config:o}){Te.baseURL!==o.apiBaseURL&&(Te.baseURL=o.apiBaseURL);const[l,u]=b.default.useState(!1),d=b.default.useMemo(()=>Zt(n,e),[n]);b.default.useEffect(()=>{d.context.replace(e)},[e]);const h=async()=>{const m=[...d.queries.current],g=[...d.sqlSnippets.current],v=[...d.views.json],D={...n,filters:[...d.filters.current],views:v,definition:{sqlSnippets:g,queries:m}};await i(D)},f=L.useCreation(mr,[]);return r(he.ModalsProvider,{children:r(yt,{value:d,children:r(oe.Provider,{value:{layoutFrozen:l,freezeLayout:u,inEditMode:!0,inUseMode:!1},children:r(a.Box,{className:`${s} dashboard-root`,sx:{position:"relative"},children:r(me.Provider,{value:f,children:d.views.visibleViews.map(m=>r(Tr,{view:m,saveDashboardChanges:h},m.id))})})})})})});function yc({context:t,dashboard:e,className:n="dashboard",config:i}){Te.baseURL!==i.apiBaseURL&&(Te.baseURL=i.apiBaseURL);const s=b.default.useMemo(()=>Zt(e,t),[e]);return b.default.useEffect(()=>{s.context.replace(t)},[t]),r(he.ModalsProvider,{children:r(yt,{value:s,children:r(oe.Provider,{value:{layoutFrozen:!0,freezeLayout:P.default.noop,inEditMode:!1,inUseMode:!0},children:r(a.Box,{className:`${n} dashboard-root dashboard-sticky-parent`,children:s.views.visibleViews.map(o=>r(Dr,{view:o},o.id))})})})})}T.ContextModel=Rr,T.Dashboard=mc,T.DashboardFilterType=En,T.DashboardMode=Mn,T.EViewComponentType=fe,T.FilterModel=Yt,T.FiltersModel=Vr,T.LayoutStateContext=oe,T.MainDashboardView=Tr,T.ModelContextProvider=yt,T.Panel=it,T.PanelContextProvider=Cn,T.QueriesModel=Fr,T.QueryModel=qr,T.ReadOnlyDashboard=yc,T.ReadOnlyDashboardView=Dr,T.SQLSnippetModel=Xt,T.SQLSnippetsModel=Gr,T.ViewModel=Jt,T.ViewsModel=Kt,T.createDashboardModel=Zt,T.createDashboardViewsModel=Lr,T.getInitialFiltersPayload=zr,T.useModelContext=Q,T.usePanelContext=K,Object.defineProperties(T,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});