@devtable/dashboard 8.60.0 → 8.61.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.
Files changed (30) hide show
  1. package/dist/dashboard.es.js +5511 -4526
  2. package/dist/dashboard.umd.js +134 -54
  3. package/dist/plugins/common-echarts-fields/x-axis-label-formatter/function-editor.d.ts +8 -0
  4. package/dist/plugins/common-echarts-fields/x-axis-label-formatter/get-echarts-x-axis-tick-label.d.ts +2 -0
  5. package/dist/plugins/common-echarts-fields/x-axis-label-formatter/index.d.ts +10 -0
  6. package/dist/plugins/common-echarts-fields/x-axis-label-formatter/types.d.ts +5 -0
  7. package/dist/plugins/viz-components/merico-estimation-chart/editors/deviation.d.ts +10 -0
  8. package/dist/plugins/viz-components/merico-estimation-chart/editors/metrics/index.d.ts +10 -0
  9. package/dist/plugins/viz-components/merico-estimation-chart/editors/metrics/metric.d.ts +11 -0
  10. package/dist/plugins/viz-components/merico-estimation-chart/editors/x_axis.d.ts +10 -0
  11. package/dist/plugins/viz-components/merico-estimation-chart/index.d.ts +2 -0
  12. package/dist/plugins/viz-components/merico-estimation-chart/option/data.d.ts +8 -0
  13. package/dist/plugins/viz-components/merico-estimation-chart/option/grid.d.ts +31 -0
  14. package/dist/plugins/viz-components/merico-estimation-chart/option/index.d.ts +2 -0
  15. package/dist/plugins/viz-components/merico-estimation-chart/option/legend.d.ts +22 -0
  16. package/dist/plugins/viz-components/merico-estimation-chart/option/series/index.d.ts +64 -0
  17. package/dist/plugins/viz-components/merico-estimation-chart/option/series/series-1.d.ts +23 -0
  18. package/dist/plugins/viz-components/merico-estimation-chart/option/series/series-2.d.ts +22 -0
  19. package/dist/plugins/viz-components/merico-estimation-chart/option/series/series-3.d.ts +19 -0
  20. package/dist/plugins/viz-components/merico-estimation-chart/option/series/series-4.d.ts +11 -0
  21. package/dist/plugins/viz-components/merico-estimation-chart/option/series/utils.d.ts +1 -0
  22. package/dist/plugins/viz-components/merico-estimation-chart/option/x-axis.d.ts +52 -0
  23. package/dist/plugins/viz-components/merico-estimation-chart/option/y-axis.d.ts +144 -0
  24. package/dist/plugins/viz-components/merico-estimation-chart/toolbox/basis-metric-selector.d.ts +8 -0
  25. package/dist/plugins/viz-components/merico-estimation-chart/toolbox/index.d.ts +3 -0
  26. package/dist/plugins/viz-components/merico-estimation-chart/toolbox/metric-description.d.ts +2 -0
  27. package/dist/plugins/viz-components/merico-estimation-chart/type.d.ts +21 -0
  28. package/dist/plugins/viz-components/merico-estimation-chart/viz-merico-estimation-chart-editor.d.ts +3 -0
  29. package/dist/plugins/viz-components/merico-estimation-chart/viz-merico-estimation-chart.d.ts +3 -0
  30. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- (function(k,m){typeof exports=="object"&&typeof module<"u"?m(exports,require("react"),require("@mantine/core"),require("@mantine/modals"),require("ahooks"),require("mobx-react-lite"),require("lodash"),require("react-hook-form"),require("@tabler/icons"),require("@mantine/tiptap"),require("@tiptap/extension-color"),require("@tiptap/extension-highlight"),require("@tiptap/extension-placeholder"),require("@tiptap/extension-subscript"),require("@tiptap/extension-superscript"),require("@tiptap/extension-text-align"),require("@tiptap/extension-text-style"),require("@tiptap/extension-table"),require("@tiptap/extension-table-cell"),require("@tiptap/extension-table-header"),require("@tiptap/extension-table-row"),require("@tiptap/extension-underline"),require("@tiptap/react"),require("@tiptap/starter-kit"),require("@mantine/dates"),require("dayjs"),require("tabler-icons-react"),require("performant-array-to-tree"),require("rc-tree-select"),require("react-grid-layout"),require("mobx"),require("eventemitter2"),require("chroma-js"),require("echarts-gl"),require("echarts/core"),require("echarts/components"),require("echarts/renderers"),require("echarts-for-react/lib/core"),require("numbro"),require("echarts/charts"),require("@mantine/hooks"),require("@mantine/notifications"),require("d3-array"),require("mathjs"),require("popmotion"),require("@monaco-editor/react"),require("d3-regression"),require("@mantine/prism"),require("@tanstack/react-table"),require("react-virtual"),require("axios"),require("mobx-state-tree"),require("jszip"),require("file-saver"),require("crypto-js"),require("@faker-js/faker"),require("react-router-dom"),require("reactflow")):typeof define=="function"&&define.amd?define(["exports","react","@mantine/core","@mantine/modals","ahooks","mobx-react-lite","lodash","react-hook-form","@tabler/icons","@mantine/tiptap","@tiptap/extension-color","@tiptap/extension-highlight","@tiptap/extension-placeholder","@tiptap/extension-subscript","@tiptap/extension-superscript","@tiptap/extension-text-align","@tiptap/extension-text-style","@tiptap/extension-table","@tiptap/extension-table-cell","@tiptap/extension-table-header","@tiptap/extension-table-row","@tiptap/extension-underline","@tiptap/react","@tiptap/starter-kit","@mantine/dates","dayjs","tabler-icons-react","performant-array-to-tree","rc-tree-select","react-grid-layout","mobx","eventemitter2","chroma-js","echarts-gl","echarts/core","echarts/components","echarts/renderers","echarts-for-react/lib/core","numbro","echarts/charts","@mantine/hooks","@mantine/notifications","d3-array","mathjs","popmotion","@monaco-editor/react","d3-regression","@mantine/prism","@tanstack/react-table","react-virtual","axios","mobx-state-tree","jszip","file-saver","crypto-js","@faker-js/faker","react-router-dom","reactflow"],m):(k=typeof globalThis<"u"?globalThis:k||self,m(k.dashboard={},k.react,k["@mantine/core"],k["@mantine/modals"],k.ahooks,k["mobx-react-lite"],k._,k["react-hook-form"],k["@tabler/icons"],k["@mantine/tiptap"],k["@tiptap/extension-color"],k["@tiptap/extension-highlight"],k["@tiptap/extension-placeholder"],k["@tiptap/extension-subscript"],k["@tiptap/extension-superscript"],k["@tiptap/extension-text-align"],k["@tiptap/extension-text-style"],k["@tiptap/extension-table"],k["@tiptap/extension-table-cell"],k["@tiptap/extension-table-header"],k["@tiptap/extension-table-row"],k["@tiptap/extension-underline"],k["@tiptap/react"],k["@tiptap/starter-kit"],k["@mantine/dates"],k.dayjs,k["tabler-icons-react"],k["performant-array-to-tree"],k["rc-tree-select"],k["react-grid-layout"],k.mobx,k.eventemitter2,k["chroma-js"],k["echarts-gl"],k["echarts/core"],k["echarts/components"],k["echarts/renderers"],k["echarts-for-react/lib/core"],k.numbro,k["echarts/charts"],k["@mantine/hooks"],k["@mantine/notifications"],k["d3-array"],k.mathjs,k.popmotion,k["@monaco-editor/react"],k["d3-regression"],k["@mantine/prism"],k["@tanstack/react-table"],k["react-virtual"],k.axios,k["mobx-state-tree"],k.jszip,k["file-saver"],k.CryptoJS,k["@faker-js/faker"],k["react-router-dom"],k.reactflow))})(this,function(k,m,a,Pe,Z,T,y,x,V,X,ai,si,oi,li,ui,di,ci,pi,hi,fi,gi,mi,bi,vi,Qs,W,D,Us,yi,Et,ae,xi,Fe,lw,Xs,q,Ie,Me,ue,de,ve,Lt,bt,Zs,Pt,_e,Ks,at,Ee,Js,Qe,v,Hs,pn,Ci,eo,to,ye){"use strict";var sw=Object.defineProperty;var ow=(k,m,a)=>m in k?sw(k,m,{enumerable:!0,configurable:!0,writable:!0,value:a}):k[m]=a;var P=(k,m,a)=>(ow(k,typeof m!="symbol"?m+"":m,a),a);function Ot(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const oe=Ot(Xs),no=Ot(bt),Vt=Ot(Zs),Ue=Ot(Ks);var H=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vt={},ro={get exports(){return vt},set exports(e){vt=e}},yt={};/**
1
+ (function(D,b){typeof exports=="object"&&typeof module<"u"?b(exports,require("react"),require("@mantine/core"),require("@mantine/modals"),require("ahooks"),require("mobx-react-lite"),require("lodash"),require("react-hook-form"),require("@tabler/icons"),require("@mantine/tiptap"),require("@tiptap/extension-color"),require("@tiptap/extension-highlight"),require("@tiptap/extension-placeholder"),require("@tiptap/extension-subscript"),require("@tiptap/extension-superscript"),require("@tiptap/extension-text-align"),require("@tiptap/extension-text-style"),require("@tiptap/extension-table"),require("@tiptap/extension-table-cell"),require("@tiptap/extension-table-header"),require("@tiptap/extension-table-row"),require("@tiptap/extension-underline"),require("@tiptap/react"),require("@tiptap/starter-kit"),require("@mantine/dates"),require("dayjs"),require("tabler-icons-react"),require("performant-array-to-tree"),require("rc-tree-select"),require("react-grid-layout"),require("mobx"),require("eventemitter2"),require("chroma-js"),require("echarts-gl"),require("echarts/core"),require("echarts/components"),require("echarts/renderers"),require("echarts-for-react/lib/core"),require("numbro"),require("echarts/charts"),require("@mantine/hooks"),require("@mantine/notifications"),require("d3-array"),require("mathjs"),require("popmotion"),require("@monaco-editor/react"),require("d3-regression"),require("@mantine/prism"),require("@tanstack/react-table"),require("react-virtual"),require("axios"),require("mobx-state-tree"),require("jszip"),require("file-saver"),require("crypto-js"),require("@faker-js/faker"),require("react-router-dom"),require("reactflow")):typeof define=="function"&&define.amd?define(["exports","react","@mantine/core","@mantine/modals","ahooks","mobx-react-lite","lodash","react-hook-form","@tabler/icons","@mantine/tiptap","@tiptap/extension-color","@tiptap/extension-highlight","@tiptap/extension-placeholder","@tiptap/extension-subscript","@tiptap/extension-superscript","@tiptap/extension-text-align","@tiptap/extension-text-style","@tiptap/extension-table","@tiptap/extension-table-cell","@tiptap/extension-table-header","@tiptap/extension-table-row","@tiptap/extension-underline","@tiptap/react","@tiptap/starter-kit","@mantine/dates","dayjs","tabler-icons-react","performant-array-to-tree","rc-tree-select","react-grid-layout","mobx","eventemitter2","chroma-js","echarts-gl","echarts/core","echarts/components","echarts/renderers","echarts-for-react/lib/core","numbro","echarts/charts","@mantine/hooks","@mantine/notifications","d3-array","mathjs","popmotion","@monaco-editor/react","d3-regression","@mantine/prism","@tanstack/react-table","react-virtual","axios","mobx-state-tree","jszip","file-saver","crypto-js","@faker-js/faker","react-router-dom","reactflow"],b):(D=typeof globalThis<"u"?globalThis:D||self,b(D.dashboard={},D.react,D["@mantine/core"],D["@mantine/modals"],D.ahooks,D["mobx-react-lite"],D._,D["react-hook-form"],D["@tabler/icons"],D["@mantine/tiptap"],D["@tiptap/extension-color"],D["@tiptap/extension-highlight"],D["@tiptap/extension-placeholder"],D["@tiptap/extension-subscript"],D["@tiptap/extension-superscript"],D["@tiptap/extension-text-align"],D["@tiptap/extension-text-style"],D["@tiptap/extension-table"],D["@tiptap/extension-table-cell"],D["@tiptap/extension-table-header"],D["@tiptap/extension-table-row"],D["@tiptap/extension-underline"],D["@tiptap/react"],D["@tiptap/starter-kit"],D["@mantine/dates"],D.dayjs,D["tabler-icons-react"],D["performant-array-to-tree"],D["rc-tree-select"],D["react-grid-layout"],D.mobx,D.eventemitter2,D["chroma-js"],D["echarts-gl"],D["echarts/core"],D["echarts/components"],D["echarts/renderers"],D["echarts-for-react/lib/core"],D.numbro,D["echarts/charts"],D["@mantine/hooks"],D["@mantine/notifications"],D["d3-array"],D.mathjs,D.popmotion,D["@monaco-editor/react"],D["d3-regression"],D["@mantine/prism"],D["@tanstack/react-table"],D["react-virtual"],D.axios,D["mobx-state-tree"],D.jszip,D["file-saver"],D.CryptoJS,D["@faker-js/faker"],D["react-router-dom"],D.reactflow))})(this,function(D,b,a,Oe,Z,T,v,x,V,X,oi,li,ui,di,ci,pi,hi,fi,gi,mi,bi,yi,vi,xi,Hs,j,k,eo,Ci,Lt,ae,wi,Fe,Uw,to,B,ke,De,se,de,ye,Ot,yt,no,at,we,ro,st,Ee,io,Qe,y,ao,pn,_i,so,oo,ve){"use strict";var Rw=Object.defineProperty;var Qw=(D,b,a)=>b in D?Rw(D,b,{enumerable:!0,configurable:!0,writable:!0,value:a}):D[b]=a;var O=(D,b,a)=>(Qw(D,typeof b!="symbol"?b+"":b,a),a);function Pt(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const le=Pt(to),lo=Pt(yt),Vt=Pt(no),Ue=Pt(ro);var H=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vt={},uo={get exports(){return vt},set exports(e){vt=e}},xt={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var wi;function io(){if(wi)return yt;wi=1;var e=m,t=Symbol.for("react.element"),r=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function u(l,d,c){var f,g={},h=null,b=null;c!==void 0&&(h=""+c),d.key!==void 0&&(h=""+d.key),d.ref!==void 0&&(b=d.ref);for(f in d)i.call(d,f)&&!o.hasOwnProperty(f)&&(g[f]=d[f]);if(l&&l.defaultProps)for(f in d=l.defaultProps,d)g[f]===void 0&&(g[f]=d[f]);return{$$typeof:t,type:l,key:h,ref:b,props:g,_owner:s.current}}return yt.Fragment=r,yt.jsx=u,yt.jsxs=u,yt}var xt={};/**
9
+ */var Si;function co(){if(Si)return xt;Si=1;var e=b,t=Symbol.for("react.element"),r=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function u(l,d,c){var f,g={},h=null,m=null;c!==void 0&&(h=""+c),d.key!==void 0&&(h=""+d.key),d.ref!==void 0&&(m=d.ref);for(f in d)i.call(d,f)&&!o.hasOwnProperty(f)&&(g[f]=d[f]);if(l&&l.defaultProps)for(f in d=l.defaultProps,d)g[f]===void 0&&(g[f]=d[f]);return{$$typeof:t,type:l,key:h,ref:m,props:g,_owner:s.current}}return xt.Fragment=r,xt.jsx=u,xt.jsxs=u,xt}var Ct={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,25 +14,25 @@
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 _i;function ao(){return _i||(_i=1,process.env.NODE_ENV!=="production"&&function(){var e=m,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),u=Symbol.for("react.provider"),l=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),g=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),b=Symbol.for("react.offscreen"),w=Symbol.iterator,C="@@iterator";function S(_){if(_===null||typeof _!="object")return null;var I=w&&_[w]||_[C];return typeof I=="function"?I:null}var A=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function z(_){{for(var I=arguments.length,E=new Array(I>1?I-1:0),R=1;R<I;R++)E[R-1]=arguments[R];G("error",_,E)}}function G(_,I,E){{var R=A.ReactDebugCurrentFrame,ie=R.getStackAddendum();ie!==""&&(I+="%s",E=E.concat([ie]));var le=E.map(function(ee){return String(ee)});le.unshift("Warning: "+I),Function.prototype.apply.call(console[_],console,le)}}var F=!1,L=!1,$=!1,M=!1,N=!1,Q;Q=Symbol.for("react.module.reference");function Y(_){return!!(typeof _=="string"||typeof _=="function"||_===i||_===o||N||_===s||_===c||_===f||M||_===b||F||L||$||typeof _=="object"&&_!==null&&(_.$$typeof===h||_.$$typeof===g||_.$$typeof===u||_.$$typeof===l||_.$$typeof===d||_.$$typeof===Q||_.getModuleId!==void 0))}function te(_,I,E){var R=_.displayName;if(R)return R;var ie=I.displayName||I.name||"";return ie!==""?E+"("+ie+")":E}function re(_){return _.displayName||"Context"}function se(_){if(_==null)return null;if(typeof _.tag=="number"&&z("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof _=="function")return _.displayName||_.name||null;if(typeof _=="string")return _;switch(_){case i:return"Fragment";case r:return"Portal";case o:return"Profiler";case s:return"StrictMode";case c:return"Suspense";case f:return"SuspenseList"}if(typeof _=="object")switch(_.$$typeof){case l:var I=_;return re(I)+".Consumer";case u:var E=_;return re(E._context)+".Provider";case d:return te(_,_.render,"ForwardRef");case g:var R=_.displayName||null;return R!==null?R:se(_.type)||"Memo";case h:{var ie=_,le=ie._payload,ee=ie._init;try{return se(ee(le))}catch{return null}}}return null}var ne=Object.assign,pe=0,he,we,qe,ke,Re,rt,un;function dn(){}dn.__reactDisabledLog=!0;function Jr(){{if(pe===0){he=console.log,we=console.info,qe=console.warn,ke=console.error,Re=console.group,rt=console.groupCollapsed,un=console.groupEnd;var _={configurable:!0,enumerable:!0,value:dn,writable:!0};Object.defineProperties(console,{info:_,log:_,warn:_,error:_,group:_,groupCollapsed:_,groupEnd:_})}pe++}}function Hr(){{if(pe--,pe===0){var _={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ne({},_,{value:he}),info:ne({},_,{value:we}),warn:ne({},_,{value:qe}),error:ne({},_,{value:ke}),group:ne({},_,{value:Re}),groupCollapsed:ne({},_,{value:rt}),groupEnd:ne({},_,{value:un})})}pe<0&&z("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var It=A.ReactCurrentDispatcher,pt;function He(_,I,E){{if(pt===void 0)try{throw Error()}catch(ie){var R=ie.stack.trim().match(/\n( *(at )?)/);pt=R&&R[1]||""}return`
18
- `+pt+_}}var it=!1,et;{var ht=typeof WeakMap=="function"?WeakMap:Map;et=new ht}function ft(_,I){if(!_||it)return"";{var E=et.get(_);if(E!==void 0)return E}var R;it=!0;var ie=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var le;le=It.current,It.current=null,Jr();try{if(I){var ee=function(){throw Error()};if(Object.defineProperty(ee.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ee,[])}catch(Ye){R=Ye}Reflect.construct(_,[],ee)}else{try{ee.call()}catch(Ye){R=Ye}_.call(ee.prototype)}}else{try{throw Error()}catch(Ye){R=Ye}_()}}catch(Ye){if(Ye&&R&&typeof Ye.stack=="string"){for(var J=Ye.stack.split(`
17
+ */var Ti;function po(){return Ti||(Ti=1,process.env.NODE_ENV!=="production"&&function(){var e=b,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),u=Symbol.for("react.provider"),l=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),g=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen"),w=Symbol.iterator,C="@@iterator";function S(_){if(_===null||typeof _!="object")return null;var I=w&&_[w]||_[C];return typeof I=="function"?I:null}var A=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function $(_){{for(var I=arguments.length,E=new Array(I>1?I-1:0),R=1;R<I;R++)E[R-1]=arguments[R];q("error",_,E)}}function q(_,I,E){{var R=A.ReactDebugCurrentFrame,ie=R.getStackAddendum();ie!==""&&(I+="%s",E=E.concat([ie]));var ue=E.map(function(ee){return String(ee)});ue.unshift("Warning: "+I),Function.prototype.apply.call(console[_],console,ue)}}var F=!1,L=!1,z=!1,M=!1,G=!1,U;U=Symbol.for("react.module.reference");function Q(_){return!!(typeof _=="string"||typeof _=="function"||_===i||_===o||G||_===s||_===c||_===f||M||_===m||F||L||z||typeof _=="object"&&_!==null&&(_.$$typeof===h||_.$$typeof===g||_.$$typeof===u||_.$$typeof===l||_.$$typeof===d||_.$$typeof===U||_.getModuleId!==void 0))}function te(_,I,E){var R=_.displayName;if(R)return R;var ie=I.displayName||I.name||"";return ie!==""?E+"("+ie+")":E}function re(_){return _.displayName||"Context"}function oe(_){if(_==null)return null;if(typeof _.tag=="number"&&$("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof _=="function")return _.displayName||_.name||null;if(typeof _=="string")return _;switch(_){case i:return"Fragment";case r:return"Portal";case o:return"Profiler";case s:return"StrictMode";case c:return"Suspense";case f:return"SuspenseList"}if(typeof _=="object")switch(_.$$typeof){case l:var I=_;return re(I)+".Consumer";case u:var E=_;return re(E._context)+".Provider";case d:return te(_,_.render,"ForwardRef");case g:var R=_.displayName||null;return R!==null?R:oe(_.type)||"Memo";case h:{var ie=_,ue=ie._payload,ee=ie._init;try{return oe(ee(ue))}catch{return null}}}return null}var ne=Object.assign,pe=0,fe,_e,qe,Me,Ye,rt,un;function dn(){}dn.__reactDisabledLog=!0;function ei(){{if(pe===0){fe=console.log,_e=console.info,qe=console.warn,Me=console.error,Ye=console.group,rt=console.groupCollapsed,un=console.groupEnd;var _={configurable:!0,enumerable:!0,value:dn,writable:!0};Object.defineProperties(console,{info:_,log:_,warn:_,error:_,group:_,groupCollapsed:_,groupEnd:_})}pe++}}function ti(){{if(pe--,pe===0){var _={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ne({},_,{value:fe}),info:ne({},_,{value:_e}),warn:ne({},_,{value:qe}),error:ne({},_,{value:Me}),group:ne({},_,{value:Ye}),groupCollapsed:ne({},_,{value:rt}),groupEnd:ne({},_,{value:un})})}pe<0&&$("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Mt=A.ReactCurrentDispatcher,ht;function He(_,I,E){{if(ht===void 0)try{throw Error()}catch(ie){var R=ie.stack.trim().match(/\n( *(at )?)/);ht=R&&R[1]||""}return`
18
+ `+ht+_}}var it=!1,et;{var ft=typeof WeakMap=="function"?WeakMap:Map;et=new ft}function gt(_,I){if(!_||it)return"";{var E=et.get(_);if(E!==void 0)return E}var R;it=!0;var ie=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var ue;ue=Mt.current,Mt.current=null,ei();try{if(I){var ee=function(){throw Error()};if(Object.defineProperty(ee.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ee,[])}catch(Re){R=Re}Reflect.construct(_,[],ee)}else{try{ee.call()}catch(Re){R=Re}_.call(ee.prototype)}}else{try{throw Error()}catch(Re){R=Re}_()}}catch(Re){if(Re&&R&&typeof Re.stack=="string"){for(var J=Re.stack.split(`
19
19
  `),Te=R.stack.split(`
20
- `),fe=J.length-1,be=Te.length-1;fe>=1&&be>=0&&J[fe]!==Te[be];)be--;for(;fe>=1&&be>=0;fe--,be--)if(J[fe]!==Te[be]){if(fe!==1||be!==1)do if(fe--,be--,be<0||J[fe]!==Te[be]){var $e=`
21
- `+J[fe].replace(" at new "," at ");return _.displayName&&$e.includes("<anonymous>")&&($e=$e.replace("<anonymous>",_.displayName)),typeof _=="function"&&et.set(_,$e),$e}while(fe>=1&&be>=0);break}}}finally{it=!1,It.current=le,Hr(),Error.prepareStackTrace=ie}var mt=_?_.displayName||_.name:"",Ys=mt?He(mt):"";return typeof _=="function"&&et.set(_,Ys),Ys}function Mt(_,I,E){return ft(_,!1)}function At(_){var I=_.prototype;return!!(I&&I.isReactComponent)}function tt(_,I,E){if(_==null)return"";if(typeof _=="function")return ft(_,At(_));if(typeof _=="string")return He(_);switch(_){case c:return He("Suspense");case f:return He("SuspenseList")}if(typeof _=="object")switch(_.$$typeof){case d:return Mt(_.render);case g:return tt(_.type,I,E);case h:{var R=_,ie=R._payload,le=R._init;try{return tt(le(ie),I,E)}catch{}}}return""}var zt=Object.prototype.hasOwnProperty,Ls={},Ps=A.ReactDebugCurrentFrame;function cn(_){if(_){var I=_._owner,E=tt(_.type,_._source,I?I.type:null);Ps.setExtraStackFrame(E)}else Ps.setExtraStackFrame(null)}function G0(_,I,E,R,ie){{var le=Function.call.bind(zt);for(var ee in _)if(le(_,ee)){var J=void 0;try{if(typeof _[ee]!="function"){var Te=Error((R||"React class")+": "+E+" type `"+ee+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof _[ee]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Te.name="Invariant Violation",Te}J=_[ee](I,ee,R,E,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(fe){J=fe}J&&!(J instanceof Error)&&(cn(ie),z("%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).",R||"React class",E,ee,typeof J),cn(null)),J instanceof Error&&!(J.message in Ls)&&(Ls[J.message]=!0,cn(ie),z("Failed %s type: %s",E,J.message),cn(null))}}}var q0=Array.isArray;function ei(_){return q0(_)}function F0(_){{var I=typeof Symbol=="function"&&Symbol.toStringTag,E=I&&_[Symbol.toStringTag]||_.constructor.name||"Object";return E}}function W0(_){try{return Os(_),!1}catch{return!0}}function Os(_){return""+_}function Vs(_){if(W0(_))return z("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",F0(_)),Os(_)}var $t=A.ReactCurrentOwner,j0={key:!0,ref:!0,__self:!0,__source:!0},Bs,Ns,ti;ti={};function R0(_){if(zt.call(_,"ref")){var I=Object.getOwnPropertyDescriptor(_,"ref").get;if(I&&I.isReactWarning)return!1}return _.ref!==void 0}function Y0(_){if(zt.call(_,"key")){var I=Object.getOwnPropertyDescriptor(_,"key").get;if(I&&I.isReactWarning)return!1}return _.key!==void 0}function Q0(_,I){if(typeof _.ref=="string"&&$t.current&&I&&$t.current.stateNode!==I){var E=se($t.current.type);ti[E]||(z('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',se($t.current.type),_.ref),ti[E]=!0)}}function U0(_,I){{var E=function(){Bs||(Bs=!0,z("%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)",I))};E.isReactWarning=!0,Object.defineProperty(_,"key",{get:E,configurable:!0})}}function X0(_,I){{var E=function(){Ns||(Ns=!0,z("%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)",I))};E.isReactWarning=!0,Object.defineProperty(_,"ref",{get:E,configurable:!0})}}var Z0=function(_,I,E,R,ie,le,ee){var J={$$typeof:t,type:_,key:I,ref:E,props:ee,_owner:le};return J._store={},Object.defineProperty(J._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(J,"_self",{configurable:!1,enumerable:!1,writable:!1,value:R}),Object.defineProperty(J,"_source",{configurable:!1,enumerable:!1,writable:!1,value:ie}),Object.freeze&&(Object.freeze(J.props),Object.freeze(J)),J};function K0(_,I,E,R,ie){{var le,ee={},J=null,Te=null;E!==void 0&&(Vs(E),J=""+E),Y0(I)&&(Vs(I.key),J=""+I.key),R0(I)&&(Te=I.ref,Q0(I,ie));for(le in I)zt.call(I,le)&&!j0.hasOwnProperty(le)&&(ee[le]=I[le]);if(_&&_.defaultProps){var fe=_.defaultProps;for(le in fe)ee[le]===void 0&&(ee[le]=fe[le])}if(J||Te){var be=typeof _=="function"?_.displayName||_.name||"Unknown":_;J&&U0(ee,be),Te&&X0(ee,be)}return Z0(_,J,Te,ie,R,$t.current,ee)}}var ni=A.ReactCurrentOwner,Gs=A.ReactDebugCurrentFrame;function gt(_){if(_){var I=_._owner,E=tt(_.type,_._source,I?I.type:null);Gs.setExtraStackFrame(E)}else Gs.setExtraStackFrame(null)}var ri;ri=!1;function ii(_){return typeof _=="object"&&_!==null&&_.$$typeof===t}function qs(){{if(ni.current){var _=se(ni.current.type);if(_)return`
20
+ `),ge=J.length-1,be=Te.length-1;ge>=1&&be>=0&&J[ge]!==Te[be];)be--;for(;ge>=1&&be>=0;ge--,be--)if(J[ge]!==Te[be]){if(ge!==1||be!==1)do if(ge--,be--,be<0||J[ge]!==Te[be]){var ze=`
21
+ `+J[ge].replace(" at new "," at ");return _.displayName&&ze.includes("<anonymous>")&&(ze=ze.replace("<anonymous>",_.displayName)),typeof _=="function"&&et.set(_,ze),ze}while(ge>=1&&be>=0);break}}}finally{it=!1,Mt.current=ue,ti(),Error.prepareStackTrace=ie}var bt=_?_.displayName||_.name:"",Js=bt?He(bt):"";return typeof _=="function"&&et.set(_,Js),Js}function At(_,I,E){return gt(_,!1)}function $t(_){var I=_.prototype;return!!(I&&I.isReactComponent)}function tt(_,I,E){if(_==null)return"";if(typeof _=="function")return gt(_,$t(_));if(typeof _=="string")return He(_);switch(_){case c:return He("Suspense");case f:return He("SuspenseList")}if(typeof _=="object")switch(_.$$typeof){case d:return At(_.render);case g:return tt(_.type,I,E);case h:{var R=_,ie=R._payload,ue=R._init;try{return tt(ue(ie),I,E)}catch{}}}return""}var zt=Object.prototype.hasOwnProperty,Gs={},qs=A.ReactDebugCurrentFrame;function cn(_){if(_){var I=_._owner,E=tt(_.type,_._source,I?I.type:null);qs.setExtraStackFrame(E)}else qs.setExtraStackFrame(null)}function kw(_,I,E,R,ie){{var ue=Function.call.bind(zt);for(var ee in _)if(ue(_,ee)){var J=void 0;try{if(typeof _[ee]!="function"){var Te=Error((R||"React class")+": "+E+" type `"+ee+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof _[ee]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Te.name="Invariant Violation",Te}J=_[ee](I,ee,R,E,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(ge){J=ge}J&&!(J instanceof Error)&&(cn(ie),$("%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).",R||"React class",E,ee,typeof J),cn(null)),J instanceof Error&&!(J.message in Gs)&&(Gs[J.message]=!0,cn(ie),$("Failed %s type: %s",E,J.message),cn(null))}}}var Dw=Array.isArray;function ni(_){return Dw(_)}function Iw(_){{var I=typeof Symbol=="function"&&Symbol.toStringTag,E=I&&_[Symbol.toStringTag]||_.constructor.name||"Object";return E}}function Mw(_){try{return Fs(_),!1}catch{return!0}}function Fs(_){return""+_}function Ws(_){if(Mw(_))return $("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Iw(_)),Fs(_)}var Et=A.ReactCurrentOwner,Aw={key:!0,ref:!0,__self:!0,__source:!0},js,Ys,ri;ri={};function $w(_){if(zt.call(_,"ref")){var I=Object.getOwnPropertyDescriptor(_,"ref").get;if(I&&I.isReactWarning)return!1}return _.ref!==void 0}function zw(_){if(zt.call(_,"key")){var I=Object.getOwnPropertyDescriptor(_,"key").get;if(I&&I.isReactWarning)return!1}return _.key!==void 0}function Ew(_,I){if(typeof _.ref=="string"&&Et.current&&I&&Et.current.stateNode!==I){var E=oe(Et.current.type);ri[E]||($('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',oe(Et.current.type),_.ref),ri[E]=!0)}}function Lw(_,I){{var E=function(){js||(js=!0,$("%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)",I))};E.isReactWarning=!0,Object.defineProperty(_,"key",{get:E,configurable:!0})}}function Ow(_,I){{var E=function(){Ys||(Ys=!0,$("%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)",I))};E.isReactWarning=!0,Object.defineProperty(_,"ref",{get:E,configurable:!0})}}var Pw=function(_,I,E,R,ie,ue,ee){var J={$$typeof:t,type:_,key:I,ref:E,props:ee,_owner:ue};return J._store={},Object.defineProperty(J._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(J,"_self",{configurable:!1,enumerable:!1,writable:!1,value:R}),Object.defineProperty(J,"_source",{configurable:!1,enumerable:!1,writable:!1,value:ie}),Object.freeze&&(Object.freeze(J.props),Object.freeze(J)),J};function Vw(_,I,E,R,ie){{var ue,ee={},J=null,Te=null;E!==void 0&&(Ws(E),J=""+E),zw(I)&&(Ws(I.key),J=""+I.key),$w(I)&&(Te=I.ref,Ew(I,ie));for(ue in I)zt.call(I,ue)&&!Aw.hasOwnProperty(ue)&&(ee[ue]=I[ue]);if(_&&_.defaultProps){var ge=_.defaultProps;for(ue in ge)ee[ue]===void 0&&(ee[ue]=ge[ue])}if(J||Te){var be=typeof _=="function"?_.displayName||_.name||"Unknown":_;J&&Lw(ee,be),Te&&Ow(ee,be)}return Pw(_,J,Te,ie,R,Et.current,ee)}}var ii=A.ReactCurrentOwner,Rs=A.ReactDebugCurrentFrame;function mt(_){if(_){var I=_._owner,E=tt(_.type,_._source,I?I.type:null);Rs.setExtraStackFrame(E)}else Rs.setExtraStackFrame(null)}var ai;ai=!1;function si(_){return typeof _=="object"&&_!==null&&_.$$typeof===t}function Qs(){{if(ii.current){var _=oe(ii.current.type);if(_)return`
22
22
 
23
- Check the render method of \``+_+"`."}return""}}function J0(_){{if(_!==void 0){var I=_.fileName.replace(/^.*[\\\/]/,""),E=_.lineNumber;return`
23
+ Check the render method of \``+_+"`."}return""}}function Bw(_){{if(_!==void 0){var I=_.fileName.replace(/^.*[\\\/]/,""),E=_.lineNumber;return`
24
24
 
25
- Check your code at `+I+":"+E+"."}return""}}var Fs={};function H0(_){{var I=qs();if(!I){var E=typeof _=="string"?_:_.displayName||_.name;E&&(I=`
25
+ Check your code at `+I+":"+E+"."}return""}}var Us={};function Nw(_){{var I=Qs();if(!I){var E=typeof _=="string"?_:_.displayName||_.name;E&&(I=`
26
26
 
27
- Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(!_._store||_._store.validated||_.key!=null)return;_._store.validated=!0;var E=H0(I);if(Fs[E])return;Fs[E]=!0;var R="";_&&_._owner&&_._owner!==ni.current&&(R=" It was passed a child from "+se(_._owner.type)+"."),gt(_),z('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',E,R),gt(null)}}function js(_,I){{if(typeof _!="object")return;if(ei(_))for(var E=0;E<_.length;E++){var R=_[E];ii(R)&&Ws(R,I)}else if(ii(_))_._store&&(_._store.validated=!0);else if(_){var ie=S(_);if(typeof ie=="function"&&ie!==_.entries)for(var le=ie.call(_),ee;!(ee=le.next()).done;)ii(ee.value)&&Ws(ee.value,I)}}}function ew(_){{var I=_.type;if(I==null||typeof I=="string")return;var E;if(typeof I=="function")E=I.propTypes;else if(typeof I=="object"&&(I.$$typeof===d||I.$$typeof===g))E=I.propTypes;else return;if(E){var R=se(I);G0(E,_.props,"prop",R,_)}else if(I.PropTypes!==void 0&&!ri){ri=!0;var ie=se(I);z("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",ie||"Unknown")}typeof I.getDefaultProps=="function"&&!I.getDefaultProps.isReactClassApproved&&z("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function tw(_){{for(var I=Object.keys(_.props),E=0;E<I.length;E++){var R=I[E];if(R!=="children"&&R!=="key"){gt(_),z("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",R),gt(null);break}}_.ref!==null&&(gt(_),z("Invalid attribute `ref` supplied to `React.Fragment`."),gt(null))}}function Rs(_,I,E,R,ie,le){{var ee=Y(_);if(!ee){var J="";(_===void 0||typeof _=="object"&&_!==null&&Object.keys(_).length===0)&&(J+=" 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 Te=J0(ie);Te?J+=Te:J+=qs();var fe;_===null?fe="null":ei(_)?fe="array":_!==void 0&&_.$$typeof===t?(fe="<"+(se(_.type)||"Unknown")+" />",J=" Did you accidentally export a JSX literal instead of a component?"):fe=typeof _,z("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",fe,J)}var be=K0(_,I,E,ie,le);if(be==null)return be;if(ee){var $e=I.children;if($e!==void 0)if(R)if(ei($e)){for(var mt=0;mt<$e.length;mt++)js($e[mt],_);Object.freeze&&Object.freeze($e)}else z("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 js($e,_)}return _===i?tw(be):ew(be),be}}function nw(_,I,E){return Rs(_,I,E,!0)}function rw(_,I,E){return Rs(_,I,E,!1)}var iw=rw,aw=nw;xt.Fragment=i,xt.jsx=iw,xt.jsxs=aw}()),xt}(function(e){process.env.NODE_ENV==="production"?e.exports=io():e.exports=ao()})(ro);const O=vt.Fragment,n=vt.jsx,p=vt.jsxs;function Si(e,t){m.useEffect(()=>{const r=i=>{console.log(i);const{viewID:s}=i.detail;if(!s){console.error(new Error("[Open View] Needs to pick a view first"));return}e.views.appendToVisibles(s),t&&e.views.setIDOfVIE(s)};return window.addEventListener("open-view",r),()=>{window.removeEventListener("open-view",r)}},[e,t]),m.useEffect(()=>{const r=i=>{console.log(i);const{dictionary:s,payload:o}=i.detail;if(!o||Object.keys(o).length===0){console.error(new Error("[Set Filter Values] payload is empty"));return}Object.entries(s).forEach(([u,l])=>{e.filters.setValueByKey(u,y.get(o,l))})};return window.addEventListener("set-filter-values",r),()=>{window.removeEventListener("set-filter-values",r)}},[e]),m.useEffect(()=>{function r(s){return Array.isArray(s)?[]:typeof s=="object"?{}:typeof s=="boolean"?!1:typeof s=="string"?"":typeof s=="number"?0:s}const i=s=>{console.log(s);const{filter_keys:o}=s.detail;o.forEach(u=>{const l=y.get(e.filters.values,u),d=r(l);console.log(`${u}: ${d}`),e.filters.setValueByKey(u,d)})};return window.addEventListener("clear-filter-values",i),()=>{window.removeEventListener("clear-filter-values",i)}},[e]),m.useEffect(()=>{const r=i=>{console.log(i);const{urlTemplate:s,openInNewTab:o,enableEncoding:u=!1,payload:l}=i.detail;if(!s){console.error(new Error("[Open Link] URL is empty"));return}function d(g){return y.cloneDeepWith(g,b=>{if(u&&typeof b=="string")return encodeURIComponent(b)})}const f=y.template(s||"")(d({...l,filters:e.filters.values,context:e.context.current}));window.open(f,o?"_blank":"_self","noopener")};return window.addEventListener("open-link",r),()=>{window.removeEventListener("open-link",r)}},[e])}class so{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function We(e){return new so(e)}class hn{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new hn;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const r=this.factoryRegistry.get(t.symbol);if(r){const i=r(this);return this.instanceRegistry.set(t.symbol,i),i}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=y.get(t,"dispose");y.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const fn=m.createContext(null);function Bt(e){const t=m.useContext(fn),r=Z.useCreation(()=>e.configure(t||new hn),[e.configure]),i=Z.usePrevious(r);return i&&i!==r&&i.dispose(),n(fn.Provider,{value:r,children:e.children})}function Ti(){return m.useContext(fn)}const oo={viewPanelInFullScreen:y.noop,inFullScreen:!1},gn=m.createContext(oo),Di=m.createContext(null),mn=Di.Provider;function B(){const e=m.useContext(Di);if(!e)throw new Error("Please use ModelContextProvider");return e}class Ae extends m.Component{constructor(t){super(t),this.state={error:null}}componentDidCatch(t){this.setState({error:t})}render(){var t;if(this.state.error){const r=()=>{this.setState({error:null})};return p(a.Box,{children:[n(a.Text,{size:"xs",children:(t=this.state.error)==null?void 0:t.message}),n(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:r,children:"Retry"})]})}return this.props.children}}const bn={fontSize:"14px",lineHeight:"32px",color:"#3D3E45",ul:{paddingLeft:"2em",margin:"6px 0 0"},p:{margin:0},a:{WebkitTapHighlightColor:"transparent",color:"rgb(34, 139, 230)",textDecoration:"none","&:hover":{textDecoration:"underline"},"&:active, &:hover":{outlineWidth:0}},table:{tr:{"th, td":{padding:"0 .5em"}}},"table.rich-text-table-render, div.tableWrapper table":{"th, td":{border:"1px solid #eaeaea"},"tr:last-of-type td":{borderBottom:"1px solid #eaeaea"}},".resize-cursor":{cursor:"col-resize"},details:{summary:{listStyle:"none",cursor:"pointer",transition:"color 300ms ease",userSelect:"none"},"summary::-webkit-details-marker":{display:"none"},"summary:hover":{color:"black","&::before":{opacity:1}},"summary::before":{content:'"►"',fontSize:"10px",margin:"0px 5px",opacity:.5,display:"inline-block",transition:"opacity 300ms ease, transform 300ms ease"}},"details[open] summary::before":{transform:"rotate(90deg)"},"details + details":{marginTop:"10px"}},Nt=({value:e,styles:t={}})=>{const r=bi.useEditor({extensions:[vi,mi,X.Link,ui,li,si,pi.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),gi,fi,hi,di.configure({types:["heading","paragraph"]}),oi.configure({placeholder:"This is placeholder"}),ci,ai.Color],content:e,editable:!1});m.useEffect(()=>{r==null||r.commands.setContent(e)},[e,r]);const i=m.useMemo(()=>y.defaultsDeep({},{content:bn},t),[t]);return n(X.RichTextEditor,{editor:r,styles:i,children:n(X.RichTextEditor.Content,{})})},lo=({description:e,isDescriptionEmpty:t})=>t?null:n(a.Tooltip,{color:"white",label:n(Nt,{value:e,styles:{root:{border:"none"},content:{padding:0}}}),styles:{tooltip:{border:"0.0625rem solid rgb(233, 236, 239)",boxShadow:"rgb(0 0 0 / 5%) 0px 0.0625rem 0.1875rem, rgb(0 0 0 / 5%) 0px 1.25rem 1.5625rem -0.3125rem, rgb(0 0 0 / 4%) 0px 0.625rem 0.625rem -0.3125rem"}},withArrow:!0,children:n(a.Box,{sx:{height:"16px",alignSelf:"center"},children:n(V.IconInfoCircle,{size:16,color:"gray"})})}),uo=T.observer(({label:e,config:{default_value:t,description:r,isDescriptionEmpty:i,...s},value:o,onChange:u})=>p(a.Box,{children:[n(a.Text,{children:" "}),n(a.Checkbox,{label:p(a.Group,{noWrap:!0,position:"apart",align:"middle",spacing:6,children:[n(a.Box,{sx:{flexGrow:1},children:e}),n(lo,{description:r,isDescriptionEmpty:i})]}),checked:o||!1,onChange:l=>u(l.currentTarget.checked),...s,pt:".4em",styles:{input:{borderColor:"#e9ecef"}}})]})),ki=T.observer(({label:e,config:t,value:r=[null,null],onChange:i})=>{const s=Array.isArray(r)?r.map(d=>d?W(d).toDate():null):[null,null],o=d=>{i(d.map(c=>c&&W(c).format(t.inputFormat)))},u=t.getMinDate(s[0]),l=t.getMaxDate(s[0]);return n(Qs.DateRangePicker,{label:e,value:s,onChange:o,icon:n(D.Calendar,{size:16}),sx:{minWidth:"16em"},minDate:u,maxDate:l,styles:{input:{borderColor:"#e9ecef"}},...t})}),co={layoutFrozen:!1,freezeLayout:y.noop,inEditMode:!1},Xe=m.createContext(co),Ii=m.createContext({panel:null,data:[],loading:!1}),vn=Ii.Provider;function xe(){const e=m.useContext(Ii);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const po={fullScreenPanelID:"",setFullScreenPanelID:y.noop},yn=m.createContext(po);function Mi(){const e=m.useContext(yn);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const Ai=m.forwardRef(({label:e,description:t,...r},i)=>n("div",{ref:i,...r,children:n(a.Group,{noWrap:!0,children:p("div",{children:[n(a.Text,{size:"sm","data-role":"label",children:e}),n(a.Text,{size:"xs",color:"dimmed","data-role":"description",children:t})]})})})),ho=T.observer(({label:e,config:t,value:r,onChange:i})=>{const s=B(),o=!!t.options_query_id,{state:u}=s.getDataStuffByID(t.options_query_id),l=u==="loading",d=t.min_width?t.min_width:"200px",c=o?l:!1;return n(a.MultiSelect,{label:e,data:t.options,disabled:c,value:r,onChange:i,styles:{root:{minWidth:d,maxWidth:c?d:"unset"},input:{borderColor:"#e9ecef"}},itemComponent:Ai})}),fo=T.observer(({label:e,config:t,value:r,onChange:i})=>{const s=B(),o=!!t.options_query_id,{state:u}=s.getDataStuffByID(t.options_query_id),l=u==="loading";return m.useEffect(()=>{var f;const{default_selection_count:d}=t;if(!d)return;const c=((f=t.options[0])==null?void 0:f.value)??"";console.log("Selecting the first option by default. New value: ",c),i(c,!0)},[t.default_selection_count,t.options]),n(a.Select,{label:e,data:t.options,disabled:o?l:!1,value:r,onChange:i,styles:{root:{width:t.width?t.width:"200px"},input:{borderColor:"#e9ecef"}},sx:{".mantine-Select-item[data-selected] .mantine-Text-root[data-role=description]":{color:"rgba(255,255,255,.7)"}},itemComponent:Ai})});function go({label:e,config:t,value:r,onChange:i}){return n(a.TextInput,{label:e,value:r||"",onChange:s=>i(s.currentTarget.value),...t,styles:{input:{borderColor:"#e9ecef"}}})}function mo(e){return Us.arrayToTree(e,{id:"value",parentId:"parent_value",childrenField:"children",dataField:null})}const bo=({rotate:e,onClick:t})=>n("svg",{onClick:t,className:"caret-icon",viewBox:"0 0 1024 1024",focusable:"false","data-icon":"caret-down",width:"14px",height:"14px",fill:"currentColor","aria-hidden":"true",transform:`rotate(${e})`,children:n("path",{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"})}),vo=({expanded:e,isLeaf:t,value:r,onClick:i,...s})=>(r==="0-0-value"&&console.log(s),t?n("span",{style:{width:"14px",display:"inline-block"}}):n(bo,{rotate:e?"0":"-90",onClick:i,...s})),yo=({onClick:e})=>p("svg",{onClick:e,className:"checkbox-icon",width:"16",height:"16",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",children:[n("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),n("rect",{className:"border",x:"4",y:"4",width:"16",height:"16",rx:"2"}),n("rect",{className:"checkmark-indeterminate",x:"8",y:"8",width:"8",height:"8",rx:"2",stroke:"none"}),n("path",{className:"checkmark-checked",d:"M9 12l2 2l4 -4"})]}),xo=({onClick:e,...t})=>n(yo,{onClick:e,...t}),Co=a.createStyles((e,{radius:t=4})=>({root:{borderRadius:e.fn.radius(t),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef","&.rc-tree-select.rc-tree-select-open":{borderColor:"#228be6 !important",".rc-tree-select-selection-overflow-item-rest":{display:"none"},".rc-tree-select-selection-overflow-item-suffix":{display:"block"}},".rc-tree-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"12px",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",flexGrow:1},".rc-tree-select-selection-search-mirror":{display:"none"},".rc-tree-select-selection-search":{flexGrow:1,width:"auto !important"},".rc-tree-select-selection-overflow":{display:"flex",minHeight:"34px",alignItems:"center",flexWrap:"nowrap",marginLeft:"calc(-10px / 2)",boxSizing:"border-box"},".rc-tree-select-selection-overflow-item":{display:"flex",alignItems:"center",backgroundColor:"#f1f3f5",color:"#495057",height:"24px",paddingLeft:"12px",paddingRight:"12px",fontWeight:500,fontSize:"12px",borderRadius:"4px",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",margin:"calc(10px / 2 - 2px) calc(10px / 2)"},".rc-tree-select-selection-overflow-item-rest":{cursor:"pointer"},".rc-tree-select-selection-overflow-item-suffix":{display:"none",backgroundColor:"transparent",width:"100%",maxWidth:"100%",height:"28px",margin:0,paddingLeft:0,paddingRight:0},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-tree-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-tree-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-tree-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:e.fontSizes.sm,fontWeight:500,color:"#212529"},dropdown:{fontSize:e.fontSizes.xs,zIndex:300,paddingTop:"6px","&.rc-tree-select-dropdown-slide-up-leave-active":{display:"none"},".rc-tree-select-tree-list .rc-tree-select-tree-list-holder":{},".rc-tree-select-tree-list, .rc-tree-select-empty":{backgroundColor:"#fff",border:"1px solid #e9ecef",padding:0,boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px"},".rc-tree-select-empty":{padding:"8px 12px"},".rc-tree-select-tree-treenode":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"8px 12px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden","&:hover":{backgroundColor:"#f1f3f5"},"&.rc-tree-select-tree-treenode-checkbox-checked":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-checked":{stroke:"rgb(64, 192, 87)",animation:"check 200ms linear forwards"}},"&.rc-tree-select-tree-treenode-checkbox-indeterminate":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-indeterminate":{fill:"rgb(64, 192, 87)"}},".rc-tree-select-tree-switcher":{height:"16px",alignSelf:"center",paddingRight:"2px",transition:"color 200ms ease","&:hover":{color:"#228be6","svg.caret-icon":{color:"#228be6"}},"svg.caret-icon":{color:"#ced4da",transition:"all 200ms ease"}},".rc-tree-select-tree-node-content-wrapper":{display:"flex",flexWrap:"nowrap",overflow:"hidden",alignItems:"center",gap:"8px",transition:"color 200ms ease","&:hover":{color:"#228be6"}},".rc-tree-select-tree-iconEle":{height:"16px","svg .border":{stroke:"#ced4da"},".checkbox-icon .checkmark-indeterminate":{fill:"transparent",transition:"fill 200ms ease"},".checkbox-icon .checkmark-checked":{transform:"scale(1.2)",transformOrigin:"center center",strokeDasharray:10,strokeDashoffset:-10},"@keyframes check":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}},".rc-tree-select-tree-title":{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",".rc-tree-select-tree-title-desc":{fontSize:"12px",maxWidth:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}},".rc-tree-select-tree-indent":{flexGrow:0,height:0,verticalAlign:"bottom"},".rc-tree-select-tree-indent-unit":{display:"inline-block",width:"1em"}}}})),wo=({disabled:e,classNames:t,styles:r,unstyled:i,radius:s,style:o,label:u,value:l,onChange:d,treeData:c})=>{const{classes:f,cx:g}=Co({radius:s},{name:"FilterTreeSelectWidget",classNames:t,styles:r,unstyled:i}),[h,b]=m.useState((l==null?void 0:l.length)>0),w=S=>{b(S)},C=h&&(l==null?void 0:l.length)>0;return p(a.Stack,{spacing:3,children:[p(a.Group,{position:"apart",children:[n(a.Text,{className:f.label,children:u}),C&&n(a.Tooltip,{label:`${l.length} selected`,children:n(a.Badge,{children:l.length})})]}),n(yi,{disabled:e,allowClear:!0,className:g(f.root,"check-select"),dropdownClassName:g(f.dropdown,""),onDropdownVisibleChange:w,transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:o,treeLine:!0,clearIcon:()=>n(a.CloseButton,{}),switcherIcon:vo,treeIcon:xo,maxTagTextLength:10,value:l,treeData:c,treeNodeFilterProp:"filterBasis",treeCheckable:!0,showCheckedStrategy:yi.SHOW_PARENT,onChange:d,onSelect:console.log,maxTagCount:0,maxTagPlaceholder:S=>`${S.length} selected`})]})};function _o(e){return e.map(t=>{const{label:r,description:i,...s}=t,o={...s,filterBasis:`${r}___${i??""}`,description:i,label:r};return i&&(o.label=p("div",{children:[n(a.Text,{title:t.label,children:t.label}),n(a.Text,{className:"rc-tree-select-tree-title-desc",color:"dimmed",title:t.description,children:t.description})]})),o})}const So=T.observer(({label:e,config:t,value:r,onChange:i})=>{const s=B(),{state:o,dataProxy:u,len:l}=s.getDataStuffByID(t.options_query_id),d=o==="loading",c=m.useMemo(()=>{if(!u)return[];const b=[...u],w=_o(b);return mo(w)},[u,l]);m.useEffect(()=>{const{default_selection_count:b}=t;if(!b)return;if(c.length===0){console.log("[filter.tree-select] Resetting to empty"),i([],!0);return}const w=c.slice(0,b).map(C=>C.value);console.log(`[filter.tree-select] Selecting first ${b} option(s)`),i(w,!0)},[t.default_selection_count,c]);const f=t.min_width?t.min_width:"200px",h=!!t.options_query_id?d:!1;return n(wo,{disabled:h,style:{minWidth:f,maxWidth:h?f:"unset",borderColor:"#e9ecef"},value:r,onChange:b=>i(b,!1),treeData:c,label:e})}),To=T.observer(({filter:{type:e,config:t,key:r,...i},formFieldProps:s})=>{switch(e){case"select":return n(fo,{...i,...s,config:t});case"multi-select":return n(ho,{...i,...s,config:t});case"tree-select":return n(So,{...i,...s,config:t});case"text-input":return n(go,{...i,...s,config:t});case"date-range":return n(ki,{...i,...s,config:t});case"checkbox":return n(uo,{...i,...s,config:t});default:return null}}),zi=T.observer(m.forwardRef(({filter:e,...t},r)=>n("div",{className:"filter-root",ref:r,children:n(Ae,{children:n(To,{filter:e,formFieldProps:t})})}))),$i=T.observer(function({view:t}){const r=B(),{control:i,handleSubmit:s,reset:o}=x.useForm({defaultValues:r.filters.values,reValidateMode:"onBlur"}),u=x.useWatch({control:i});m.useEffect(()=>{o(r.filters.values)},[r.filters.values,o]),m.useEffect(()=>{r.filters.updatePreviewValues(u)},[u]);const l=r.filters.visibleInView(t.id),d=m.useMemo(()=>l.every(h=>h.should_auto_submit),[l]),c=m.useMemo(()=>l.filter(h=>y.get(h,"config.required",!1)),[l]),f=m.useMemo(()=>c.length===0?!1:c.some(h=>!h.requiredAndPass(u[h.key])),[u,c]);if(l.length===0)return null;const g=(h,b)=>(w,C)=>{b(w),(h.should_auto_submit||C)&&r.filters.setValueByKey(h.key,w)};return n("form",{onSubmit:s(r.filters.setValues),children:p(a.Group,{className:"dashboard-filters",position:"apart",noWrap:!0,sx:d?{}:{border:"1px solid #e9ecef",borderRadius:"4px",padding:"16px"},children:[n(a.Group,{align:"flex-start",children:l.map(h=>n(x.Controller,{name:h.key,control:i,render:({field:b})=>n(zi,{filter:h,value:b.value,onChange:g(h,b.onChange)})},h.id))}),!d&&n(a.Group,{sx:{alignSelf:"flex-end"},children:n(a.Button,{color:"blue",size:"sm",type:"submit",disabled:f,children:"Search"})})]})})}),uw="";function Do(e){return e?["<p><br></p>","<p></p>"].includes(e):!0}const Ei=T.observer(()=>{const{freezeLayout:e}=m.useContext(Xe),[t,r]=m.useState(!1),{panel:i}=xe();return m.useEffect(()=>{e(t)},[t]),Do(i.description)?null:p(O,{children:[n(a.Modal,{opened:t,onClose:()=>r(!1),title:i.title,withCloseButton:!1,withinPortal:!0,zIndex:310,children:n(Nt,{value:i.description,styles:{root:{border:"none"},content:{padding:0}}})}),n(a.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:n(a.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>r(s=>!s),sx:{verticalAlign:"baseline",cursor:"pointer"},children:n(D.InfoCircle,{size:20})})})]})}),ko=T.observer(({view:e})=>{const t=B(),r=Pe.useModals(),{panel:i}=xe(),{id:s,query:o}=i,{inEditMode:u}=m.useContext(Xe),l=()=>o==null?void 0:o.fetchData(),{viewPanelInFullScreen:d,inFullScreen:c}=m.useContext(gn),f=()=>{t.duplicatePanelByID(s,e.id)},g=()=>{t.editor.open(["_VIEWS_",e.id,"_PANELS_",s])},h=()=>r.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>t.removePanelByID(s,e.id),confirmProps:{color:"red"},zIndex:320}),b=m.useCallback(()=>{d(s)},[s,d]),w=!c&&e.type!==K.Modal;return n(O,{children:n(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:p(a.Menu,{withinPortal:!0,children:[n(a.Menu.Target,{children:n(a.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),p(a.Menu.Dropdown,{children:[n(a.Menu.Item,{onClick:l,icon:n(D.Refresh,{size:14}),children:"Refresh"}),n(a.Menu.Item,{onClick:()=>t.queries.downloadDataByQueryID((o==null?void 0:o.id)??""),icon:n(D.Download,{size:14}),children:"Download Data"}),w&&n(a.Menu.Item,{onClick:b,icon:n(D.ArrowsMaximize,{size:14}),disabled:u,children:"Full Screen"}),u&&p(O,{children:[n(a.Divider,{label:"Edit",labelPosition:"center"}),n(a.Menu.Item,{onClick:g,icon:n(D.Settings,{size:14}),children:"Settings"}),n(a.Menu.Item,{onClick:f,icon:n(D.Copy,{size:14}),children:"Duplicate"}),n(a.Menu.Item,{color:"red",onClick:h,icon:n(D.Trash,{size:14}),children:"Delete"})]})]})]})})})}),dw="",Io=T.observer(function(){const{panel:t}=xe(),{title:r}=t;return r?n(a.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:n(a.Text,{align:"center",lineClamp:1,weight:"bold",children:r})}):null}),Oe=(e,t)=>{const[r,i]=m.useState([]);return m.useEffect(()=>e.watchTriggerSnapshotList(s=>i(s.filter(o=>o.schemaRef===t))),[]),r};class st{constructor(t,r){this.root=t,this.path=r}async deleteItem(t){t===null&&await this.root.deleteItem(this.path);const r=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,y.omit(r,t))}async getItem(t){const r=await this.root.getItem(this.path);return t===null?r:y.get(r,t)}async setItem(t,r){if(t===null)await this.root.setItem(this.path,r);else{const i=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...i,[t]:r})}return await this.getItem(t)}watchItem(t,r,i){return t===null?this.root.watchItem(this.path,(s,o)=>{r(s,o)},i):this.root.watchItem(this.path,(s,o)=>{const u=y.get(s,t),l=y.get(o,t);u!==l&&r(u,l)},i)}}class xn{constructor(t,r,i){P(this,"attachmentStorage");this.instance=t,this.attachmentKey=r,this.constructInstance=i,this.attachmentStorage=new st(t.instanceData,r)}async getInstance(t){if(await this.attachmentStorage.getItem(t))return this.constructInstance(new st(this.attachmentStorage,t))}async create(t,r){return await this.attachmentStorage.setItem(t,r),this.constructInstance(new st(this.attachmentStorage,t))}async remove(t){await this.attachmentStorage.deleteItem(t)}async list(){const t=await this.attachmentStorage.getItem(null);return Promise.all(y.values(t).map(r=>this.constructInstance(new st(this.attachmentStorage,r.id))))}}class Li{constructor(t){P(this,"rootRef");this.rootRef=ae.observable({current:t})}async deleteItem(t){ae.runInAction(()=>{y.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?ae.toJS(this.rootRef.current):y.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(y.isObject(r))ae.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else ae.runInAction(()=>{y.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,i){return ae.reaction(()=>this.getValueFromRoot(t),(s,o)=>{r(s,o)},{requiresObservable:!0,fireImmediately:y.get(i,"fireImmediately",!1)})}}class Mo{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new xi)}getChannel(t){const r=this.channels.get(t);if(r)return r;const i=new xi;return this.channels.set(t,i),i}}class Ao{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const i={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Mo,instanceData:new Li(t.viz.conf)};return this.instances.set(t.id,i),i}}function Pi(e,t,r,i){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Li({}),colorPalette:{getColor(){return()=>""}},data:t,variables:i}}const zo=e=>{const{panel:t,vizManager:r,data:i,variables:s}=e,o=r.resolveComponent(t.viz.type),u=r.getOrCreateInstance(t),l={...Pi(u,i,r,s),viewport:{width:t.layout.w,height:t.layout.h}},d=o.viewRender;return n(d,{context:l,instance:u,...y.omit(e,["panel","vizManager","data"])})},$o=e=>{const{vizManager:t,panel:r,panelInfoEditor:i,data:s,variables:o}=e,u=t.resolveComponent(r.viz.type),l=t.getOrCreateInstance(r),d={...Pi(l,s,t,o),panelInfoEditor:i},c=u.configRender;return n(c,{context:d,instance:l,...y.omit(e,["panel","vizManager","data","panelInfoEditor"])})},Oi=(e,t)=>{const r=Fe.bezier(e),i=Fe.bezier(t);return function(s){return s<50?r(s*2/100).hex():i((s-50)*2/100).hex()}},Gt=e=>{const t=Fe.bezier(e);return function(r){return t(r/100).hex()}},Eo={type:"interpolation",displayName:"Red / Green",getColor:Oi(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Lo={type:"interpolation",displayName:"Yellow / Blue",getColor:Oi(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Po={type:"interpolation",displayName:"Red",getColor:Gt(["#fff7f1","darkred"]),name:"red",category:"sequential"},Oo={type:"interpolation",displayName:"Green",getColor:Gt(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Vo={type:"interpolation",displayName:"Blue",getColor:Gt(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Bo={type:"interpolation",displayName:"Orange",getColor:Gt(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},Vi="@devtable/dashboard",Cn="8.60.0",Bi="Apache-2.0",Ni={access:"public",registry:"https://registry.npmjs.org/"},Gi=["dist"],qi="./dist/dashboard.umd.js",Fi="./dist/dashboard.es.js",Wi="./dist/index.d.ts",ji={".":{import:"./dist/dashboard.es.js",require:"./dist/dashboard.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},Ri={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview",test:"vitest","test:ui":"vitest --ui",coverage:"vitest --coverage"},Yi={"@monaco-editor/react":"4.5.0","@types/chroma-js":"^2.1.4","file-saver":"2.0.5",mathjs:"11.7.0","monaco-editor":"0.36.0","performant-array-to-tree":"1.11.0",popmotion:"^11.0.3","rc-tree-select":"5.5.5",reactflow:"^11.5.3"},Qi={"@emotion/babel-plugin":"11.10.6","@faker-js/faker":"7.6.0","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/hooks":"5.9.5","@mantine/modals":"5.9.5","@mantine/notifications":"5.9.5","@mantine/prism":"5.9.5","@mantine/tiptap":"5.9.5","@tabler/icons":"^1.118.0","@testing-library/cypress":"^9.0.0","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.3.0","@testing-library/react-hooks":"^8.0.1","@testing-library/user-event":"^14.3.0","@tiptap/extension-code-block-lowlight":"2.0.3","@tiptap/extension-color":"2.0.3","@tiptap/extension-highlight":"2.0.3","@tiptap/extension-link":"2.0.3","@tiptap/extension-placeholder":"2.0.3","@tiptap/extension-subscript":"2.0.3","@tiptap/extension-superscript":"2.0.3","@tiptap/extension-table":"2.0.3","@tiptap/extension-table-cell":"2.0.3","@tiptap/extension-table-header":"2.0.3","@tiptap/extension-table-row":"2.0.3","@tiptap/extension-text-align":"2.0.3","@tiptap/extension-text-style":"2.0.3","@tiptap/extension-underline":"2.0.3","@tiptap/pm":"2.0.3","@tiptap/react":"2.0.3","@tiptap/starter-kit":"2.0.3","@types/crypto-js":"v4.1.1","@types/d3-array":"3.0.4","@types/eventemitter2":"^4.1.0","@types/file-saver":"2.0.5","@types/lodash":"^4.14.182","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/react-grid-layout":"^1.3.2",ahooks:"^3.3.11",ajv:"8.12.0",axios:"^0.27.2","crypto-js":"^4.1.1",cypress:"^12.9.0","cypress-wait-until":"^1.7.2",echarts:"^5.3.2","echarts-for-react":"^3.0.2","echarts-gl":"^2.0.9",jsdom:"^20.0.0","jsdom-testing-mocks":"^1.5.0",lodash:"^4.17.21",lowlight:"^2.8.0",numbro:"^2.3.6","prosemirror-commands":"^1.5.0","prosemirror-dropcursor":"^1.6.1","prosemirror-gapcursor":"^1.3.1","prosemirror-history":"^1.3.0","prosemirror-keymap":"^1.2.0","prosemirror-schema-list":"^1.2.2","react-grid-layout":"^1.3.4","react-hook-form":"^7.31.2","rollup-plugin-visualizer":"5.6.0","tabler-icons-react":"^1.48.0",typescript:"^4.6.3","vite-plugin-static-copy":"0.13.1"},Ui={"@emotion/react":"11.10.6","@faker-js/faker":"7.6.0","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/hooks":"5.9.5","@mantine/modals":"5.9.5","@mantine/notifications":"5.9.5","@mantine/prism":"5.9.5","@mantine/tiptap":"5.9.5","@tabler/icons":"^1.118.0","@tanstack/react-table":"^8.5.13","@tiptap/extension-code-block-lowlight":"2.0.3","@tiptap/extension-color":"2.0.3","@tiptap/extension-highlight":"2.0.3","@tiptap/extension-link":"2.0.3","@tiptap/extension-placeholder":"2.0.3","@tiptap/extension-subscript":"2.0.3","@tiptap/extension-superscript":"2.0.3","@tiptap/extension-table":"2.0.3","@tiptap/extension-table-cell":"2.0.3","@tiptap/extension-table-header":"2.0.3","@tiptap/extension-table-row":"2.0.3","@tiptap/extension-text-align":"2.0.3","@tiptap/extension-text-style":"2.0.3","@tiptap/extension-underline":"2.0.3","@tiptap/pm":"2.0.3","@tiptap/react":"2.0.3","@tiptap/starter-kit":"2.0.3",ahooks:"^3.3.11",axios:"^0.27.2","chroma-js":"^2.4.2","crypto-js":"^4.1.1","d3-array":"3.2.3","d3-regression":"1.2.8",dayjs:"1.11.7",echarts:"^5.3.2","echarts-for-react":"^3.0.2","echarts-gl":"^2.0.9",eventemitter2:"^6.4.6",jszip:"3.10.1",lodash:"^4.17.21",lowlight:"^2.8.0",mobx:"^6.6.1","mobx-react-lite":"^3.4.0","mobx-state-tree":"^5.1.5",numbro:"^2.3.6","prosemirror-commands":"^1.5.0","prosemirror-dropcursor":"^1.6.1","prosemirror-gapcursor":"^1.3.1","prosemirror-history":"^1.3.0","prosemirror-keymap":"^1.2.0","prosemirror-schema-list":"^1.2.2",react:"^16.8.0 || 17.x || 18.x","react-dom":"^16.8.0 || 17.x || 18.x","react-grid-layout":"^1.3.4","react-hook-form":"^7.31.2","react-router-dom":"^6.3.0","react-virtual":"^2.10.4","tabler-icons-react":"^1.48.0"},No=Object.freeze(Object.defineProperty({__proto__:null,default:{name:Vi,version:Cn,license:Bi,publishConfig:Ni,files:Gi,main:qi,module:Fi,types:Wi,exports:ji,scripts:Ri,dependencies:Yi,devDependencies:Qi,peerDependencies:Ui},dependencies:Yi,devDependencies:Qi,exports:ji,files:Gi,license:Bi,main:qi,module:Fi,name:Vi,peerDependencies:Ui,publishConfig:Ni,scripts:Ri,types:Wi,version:Cn},Symbol.toStringTag,{value:"Module"}));class Go{constructor(t){P(this,"staticColors",new Map);P(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(i=>{this.register(i)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(r,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class qo{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Fo{constructor(){P(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,i){var u;if(t.from===t.to)return r;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const s=this.migrations.filter(l=>l.version>t.from&&l.version<=t.to),o=y.orderBy(s,"version","asc");if(((u=y.last(o))==null?void 0:u.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((l,d)=>d.handler(l,i),r)}}class ge extends Fo{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(i,s)=>({version:t,...r(i,s)}))}async migrate({configData:t,panelModel:r}){const i=await t.getItem(null),s=y.get(i,"version",0),o=this.run({from:s,to:this.VERSION},i,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return y.get(r,"version",0)<this.VERSION}}const j=(e,t)=>{const[r,{setFalse:i}]=Z.useBoolean(!0),[s,o]=m.useState();m.useEffect(()=>(e.getItem(t).then(l=>{o(l),i()}),e.watchItem(t,l=>{o(l)})));const u=m.useCallback(async l=>{await e.setItem(t,l),o(l)},[e,t]);return{loading:r,value:s,set:u}},wn={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"}};oe.use([q.GridComponent,q.VisualMapComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer]);function Wo({context:e}){const{value:t}=j(e.instanceData,"config"),r=e.data,{width:i,height:s}=e.viewport,{x_axis_data_key:o,y_axis_data_key:u,z_axis_data_key:l,xAxis3D:d,yAxis3D:c,zAxis3D:f}=y.defaults({},t,wn),g=m.useMemo(()=>{const w=y.minBy(r,C=>C[l]);return y.get(w,l)},[r,l]),h=m.useMemo(()=>{const w=y.maxBy(r,C=>C[l]);return y.get(w,l)},[r,l]),b={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:g,max:h,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:d,yAxis3D:c,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:r.map(w=>[w[o],w[u],w[l]])}]};return t?n(Me,{echarts:oe,option:b,style:{width:i,height:s},notMerge:!0,theme:"merico-light"}):null}function jo({label:e,required:t,value:r,onChange:i,data:s,clearable:o=!1,sx:u,...l},d){const c=m.useMemo(()=>{if(!Array.isArray(s)||s.length===0)return[];const g=Object.keys(s[0]).map(h=>({label:h,value:h}));return o?g.concat([{label:"unset",value:""}]):g},[s]);return n(a.Select,{ref:d,label:e,data:c,value:r,onChange:i,required:t,sx:u,...l})}const U=m.forwardRef(jo);function Ro({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=y.defaults({},t,wn),{control:o,handleSubmit:u,reset:l}=x.useForm({defaultValues:s});return m.useEffect(()=>{l(s)},[t]),t?n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[n(a.Text,{children:"X Axis"}),p(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(x.Controller,{name:"x_axis_data_key",control:o,render:({field:d})=>n(U,{label:"Data Field",required:!0,data:i,...d})}),n(x.Controller,{name:"xAxis3D.name",control:o,render:({field:d})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),n(a.Text,{mt:"lg",children:"Y Axis"}),p(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(x.Controller,{name:"y_axis_data_key",control:o,render:({field:d})=>n(U,{label:"Data Field",required:!0,data:i,...d})}),n(x.Controller,{name:"yAxis3D.name",control:o,render:({field:d})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),n(a.Text,{mt:"lg",children:"Z Axis"}),p(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(x.Controller,{name:"z_axis_data_key",control:o,render:({field:d})=>n(U,{label:"Data Field",required:!0,data:i,...d})}),n(x.Controller,{name:"zAxis3D.name",control:o,render:({field:d})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),n(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:p(a.Button,{color:"blue",type:"submit",children:[n(D.DeviceFloppy,{size:20}),n(a.Text,{ml:"md",children:"Save"})]})})]})}):null}class Yo extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Qo={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Yo,name:"bar-3d",viewRender:Wo,configRender:Ro,createConfig(){return{version:1,config:y.cloneDeep(wn)}}},De={mantissa:0,output:"number",trimMantissa:!1,average:!1};function Uo({value:e,onChange:t},r){const i=l=>{t({...e,output:l})},s=l=>{const d=l===0?!1:e.trimMantissa;t({...e,mantissa:l,trimMantissa:d})},o=l=>{t({...e,trimMantissa:l.currentTarget.checked})},u=l=>{t({...e,average:l.currentTarget.checked})};return p(a.Stack,{ref:r,children:[p(a.Group,{grow:!0,children:[n(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:i,sx:{flexGrow:1}}),n(a.Switch,{label:p(a.Stack,{spacing:0,children:[n(a.Text,{children:"Average"}),n(a.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:e.average,onChange:u,disabled:e.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),p(a.Group,{grow:!0,children:[n(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:s}),n(a.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:o,disabled:e.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),p(a.Stack,{spacing:0,children:[n(a.Text,{weight:"bold",children:"Preview"}),n(Ae,{children:p(a.Group,{position:"apart",children:[p(a.Text,{size:12,color:"gray",children:["123456789 ",n(D.ArrowRight,{size:9})," ",ue(123456789).format(e)]}),p(a.Text,{size:12,color:"gray",children:["1234 ",n(D.ArrowRight,{size:9})," ",ue(1234).format(e)]}),p(a.Text,{size:12,color:"gray",children:["0.1234 ",n(D.ArrowRight,{size:9})," ",ue(.1234).format(e)]})]})})]})]})}const Ve=m.forwardRef(Uo),Be={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
28
- `)},Xi={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Zo,configRender:Xo,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'boxplot'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"Record of 'name', 'min', 'q1', 'median', 'q3', 'max'",valueType:"object"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function Xo(e){return n(O,{})}function Zo(e){return n(a.Text,{children:"Click chart's series"})}const Ko=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],qt=m.forwardRef(({sectionTitle:e,value:t,onChange:r},i)=>{const s=o=>u=>{const l=y.cloneDeep(t);y.set(l,o,u),r(l)};return p(a.Stack,{spacing:0,children:[e&&n(a.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",labelProps:{color:"dimmed"}}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.NumberInput,{label:"Max Width",hideControls:!0,value:t.width,onChange:s("width")}),n(a.Select,{label:"Overflow",data:Ko,value:t.overflow,onChange:s("overflow")}),n(a.TextInput,{label:"Ellipsis",value:t.ellipsis,disabled:!0})]})]})}),nt=m.forwardRef(({value:e,onChange:t},r)=>{const i=o=>{t({...e,on_axis:o})},s=o=>{t({...e,in_tooltip:o})};return p(a.Stack,{ref:r,spacing:0,children:[n(qt,{sectionTitle:"Overflow on Axis",value:e.on_axis,onChange:i}),n(qt,{sectionTitle:"Overflow in Tooltip",value:e.in_tooltip,onChange:s})]})}),je={on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}};function Ze({overflow:e,width:t}){const r={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],i=e==="truncate"?"nowrap":"initial",s={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
27
+ Check the top-level render call using <`+E+">.")}return I}}function Xs(_,I){{if(!_._store||_._store.validated||_.key!=null)return;_._store.validated=!0;var E=Nw(I);if(Us[E])return;Us[E]=!0;var R="";_&&_._owner&&_._owner!==ii.current&&(R=" It was passed a child from "+oe(_._owner.type)+"."),mt(_),$('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',E,R),mt(null)}}function Zs(_,I){{if(typeof _!="object")return;if(ni(_))for(var E=0;E<_.length;E++){var R=_[E];si(R)&&Xs(R,I)}else if(si(_))_._store&&(_._store.validated=!0);else if(_){var ie=S(_);if(typeof ie=="function"&&ie!==_.entries)for(var ue=ie.call(_),ee;!(ee=ue.next()).done;)si(ee.value)&&Xs(ee.value,I)}}}function Gw(_){{var I=_.type;if(I==null||typeof I=="string")return;var E;if(typeof I=="function")E=I.propTypes;else if(typeof I=="object"&&(I.$$typeof===d||I.$$typeof===g))E=I.propTypes;else return;if(E){var R=oe(I);kw(E,_.props,"prop",R,_)}else if(I.PropTypes!==void 0&&!ai){ai=!0;var ie=oe(I);$("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",ie||"Unknown")}typeof I.getDefaultProps=="function"&&!I.getDefaultProps.isReactClassApproved&&$("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function qw(_){{for(var I=Object.keys(_.props),E=0;E<I.length;E++){var R=I[E];if(R!=="children"&&R!=="key"){mt(_),$("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",R),mt(null);break}}_.ref!==null&&(mt(_),$("Invalid attribute `ref` supplied to `React.Fragment`."),mt(null))}}function Ks(_,I,E,R,ie,ue){{var ee=Q(_);if(!ee){var J="";(_===void 0||typeof _=="object"&&_!==null&&Object.keys(_).length===0)&&(J+=" 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 Te=Bw(ie);Te?J+=Te:J+=Qs();var ge;_===null?ge="null":ni(_)?ge="array":_!==void 0&&_.$$typeof===t?(ge="<"+(oe(_.type)||"Unknown")+" />",J=" Did you accidentally export a JSX literal instead of a component?"):ge=typeof _,$("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",ge,J)}var be=Vw(_,I,E,ie,ue);if(be==null)return be;if(ee){var ze=I.children;if(ze!==void 0)if(R)if(ni(ze)){for(var bt=0;bt<ze.length;bt++)Zs(ze[bt],_);Object.freeze&&Object.freeze(ze)}else $("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 Zs(ze,_)}return _===i?qw(be):Gw(be),be}}function Fw(_,I,E){return Ks(_,I,E,!0)}function Ww(_,I,E){return Ks(_,I,E,!1)}var jw=Ww,Yw=Fw;Ct.Fragment=i,Ct.jsx=jw,Ct.jsxs=Yw}()),Ct}(function(e){process.env.NODE_ENV==="production"?e.exports=co():e.exports=po()})(uo);const P=vt.Fragment,n=vt.jsx,p=vt.jsxs;function ki(e,t){b.useEffect(()=>{const r=i=>{console.log(i);const{viewID:s}=i.detail;if(!s){console.error(new Error("[Open View] Needs to pick a view first"));return}e.views.appendToVisibles(s),t&&e.views.setIDOfVIE(s)};return window.addEventListener("open-view",r),()=>{window.removeEventListener("open-view",r)}},[e,t]),b.useEffect(()=>{const r=i=>{console.log(i);const{dictionary:s,payload:o}=i.detail;if(!o||Object.keys(o).length===0){console.error(new Error("[Set Filter Values] payload is empty"));return}Object.entries(s).forEach(([u,l])=>{e.filters.setValueByKey(u,v.get(o,l))})};return window.addEventListener("set-filter-values",r),()=>{window.removeEventListener("set-filter-values",r)}},[e]),b.useEffect(()=>{function r(s){return Array.isArray(s)?[]:typeof s=="object"?{}:typeof s=="boolean"?!1:typeof s=="string"?"":typeof s=="number"?0:s}const i=s=>{console.log(s);const{filter_keys:o}=s.detail;o.forEach(u=>{const l=v.get(e.filters.values,u),d=r(l);console.log(`${u}: ${d}`),e.filters.setValueByKey(u,d)})};return window.addEventListener("clear-filter-values",i),()=>{window.removeEventListener("clear-filter-values",i)}},[e]),b.useEffect(()=>{const r=i=>{console.log(i);const{urlTemplate:s,openInNewTab:o,enableEncoding:u=!1,payload:l}=i.detail;if(!s){console.error(new Error("[Open Link] URL is empty"));return}function d(g){return v.cloneDeepWith(g,m=>{if(u&&typeof m=="string")return encodeURIComponent(m)})}const f=v.template(s||"")(d({...l,filters:e.filters.values,context:e.context.current}));window.open(f,o?"_blank":"_self","noopener")};return window.addEventListener("open-link",r),()=>{window.removeEventListener("open-link",r)}},[e])}class ho{constructor(t){O(this,"symbol");this.symbol=Symbol(t)}}function We(e){return new ho(e)}class hn{constructor(){O(this,"parent");O(this,"factoryRegistry",new Map);O(this,"instanceRegistry",new Map)}createScoped(){const t=new hn;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const r=this.factoryRegistry.get(t.symbol);if(r){const i=r(this);return this.instanceRegistry.set(t.symbol,i),i}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=v.get(t,"dispose");v.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const fn=b.createContext(null);function Bt(e){const t=b.useContext(fn),r=Z.useCreation(()=>e.configure(t||new hn),[e.configure]),i=Z.usePrevious(r);return i&&i!==r&&i.dispose(),n(fn.Provider,{value:r,children:e.children})}function Di(){return b.useContext(fn)}const fo={viewPanelInFullScreen:v.noop,inFullScreen:!1},gn=b.createContext(fo),Ii=b.createContext(null),mn=Ii.Provider;function N(){const e=b.useContext(Ii);if(!e)throw new Error("Please use ModelContextProvider");return e}class Ae extends b.Component{constructor(t){super(t),this.state={error:null}}componentDidCatch(t){this.setState({error:t})}render(){var t;if(this.state.error){const r=()=>{this.setState({error:null})};return p(a.Box,{children:[n(a.Text,{size:"xs",children:(t=this.state.error)==null?void 0:t.message}),n(a.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:r,children:"Retry"})]})}return this.props.children}}const bn={fontSize:"14px",lineHeight:"32px",color:"#3D3E45",ul:{paddingLeft:"2em",margin:"6px 0 0"},p:{margin:0},a:{WebkitTapHighlightColor:"transparent",color:"rgb(34, 139, 230)",textDecoration:"none","&:hover":{textDecoration:"underline"},"&:active, &:hover":{outlineWidth:0}},table:{tr:{"th, td":{padding:"0 .5em"}}},"table.rich-text-table-render, div.tableWrapper table":{"th, td":{border:"1px solid #eaeaea"},"tr:last-of-type td":{borderBottom:"1px solid #eaeaea"}},".resize-cursor":{cursor:"col-resize"},details:{summary:{listStyle:"none",cursor:"pointer",transition:"color 300ms ease",userSelect:"none"},"summary::-webkit-details-marker":{display:"none"},"summary:hover":{color:"black","&::before":{opacity:1}},"summary::before":{content:'"►"',fontSize:"10px",margin:"0px 5px",opacity:.5,display:"inline-block",transition:"opacity 300ms ease, transform 300ms ease"}},"details[open] summary::before":{transform:"rotate(90deg)"},"details + details":{marginTop:"10px"}},Nt=({value:e,styles:t={}})=>{const r=vi.useEditor({extensions:[xi,yi,X.Link,ci,di,li,fi.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),bi,mi,gi,pi.configure({types:["heading","paragraph"]}),ui.configure({placeholder:"This is placeholder"}),hi,oi.Color],content:e,editable:!1});b.useEffect(()=>{r==null||r.commands.setContent(e)},[e,r]);const i=b.useMemo(()=>v.defaultsDeep({},{content:bn},t),[t]);return n(X.RichTextEditor,{editor:r,styles:i,children:n(X.RichTextEditor.Content,{})})},go=({description:e,isDescriptionEmpty:t})=>t?null:n(a.Tooltip,{color:"white",label:n(Nt,{value:e,styles:{root:{border:"none"},content:{padding:0}}}),styles:{tooltip:{border:"0.0625rem solid rgb(233, 236, 239)",boxShadow:"rgb(0 0 0 / 5%) 0px 0.0625rem 0.1875rem, rgb(0 0 0 / 5%) 0px 1.25rem 1.5625rem -0.3125rem, rgb(0 0 0 / 4%) 0px 0.625rem 0.625rem -0.3125rem"}},withArrow:!0,children:n(a.Box,{sx:{height:"16px",alignSelf:"center"},children:n(V.IconInfoCircle,{size:16,color:"gray"})})}),mo=T.observer(({label:e,config:{default_value:t,description:r,isDescriptionEmpty:i,...s},value:o,onChange:u})=>p(a.Box,{children:[n(a.Text,{children:" "}),n(a.Checkbox,{label:p(a.Group,{noWrap:!0,position:"apart",align:"middle",spacing:6,children:[n(a.Box,{sx:{flexGrow:1},children:e}),n(go,{description:r,isDescriptionEmpty:i})]}),checked:o||!1,onChange:l=>u(l.currentTarget.checked),...s,pt:".4em",styles:{input:{borderColor:"#e9ecef"}}})]})),Mi=T.observer(({label:e,config:t,value:r=[null,null],onChange:i})=>{const s=Array.isArray(r)?r.map(d=>d?j(d).toDate():null):[null,null],o=d=>{i(d.map(c=>c&&j(c).format(t.inputFormat)))},u=t.getMinDate(s[0]),l=t.getMaxDate(s[0]);return n(Hs.DateRangePicker,{label:e,value:s,onChange:o,icon:n(k.Calendar,{size:16}),sx:{minWidth:"16em"},minDate:u,maxDate:l,styles:{input:{borderColor:"#e9ecef"}},...t})}),bo={layoutFrozen:!1,freezeLayout:v.noop,inEditMode:!1},Xe=b.createContext(bo),Ai=b.createContext({panel:null,data:[],loading:!1}),yn=Ai.Provider;function xe(){const e=b.useContext(Ai);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const yo={fullScreenPanelID:"",setFullScreenPanelID:v.noop},vn=b.createContext(yo);function $i(){const e=b.useContext(vn);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const zi=b.forwardRef(({label:e,description:t,...r},i)=>n("div",{ref:i,...r,children:n(a.Group,{noWrap:!0,children:p("div",{children:[n(a.Text,{size:"sm","data-role":"label",children:e}),n(a.Text,{size:"xs",color:"dimmed","data-role":"description",children:t})]})})})),vo=T.observer(({label:e,config:t,value:r,onChange:i})=>{const s=N(),o=!!t.options_query_id,{state:u}=s.getDataStuffByID(t.options_query_id),l=u==="loading",d=t.min_width?t.min_width:"200px",c=o?l:!1;return n(a.MultiSelect,{label:e,data:t.options,disabled:c,value:r,onChange:i,styles:{root:{minWidth:d,maxWidth:c?d:"unset"},input:{borderColor:"#e9ecef"}},itemComponent:zi})}),xo=T.observer(({label:e,config:t,value:r,onChange:i})=>{const s=N(),o=!!t.options_query_id,{state:u}=s.getDataStuffByID(t.options_query_id),l=u==="loading";return b.useEffect(()=>{var f;const{default_selection_count:d}=t;if(!d)return;const c=((f=t.options[0])==null?void 0:f.value)??"";console.log("Selecting the first option by default. New value: ",c),i(c,!0)},[t.default_selection_count,t.options]),n(a.Select,{label:e,data:t.options,disabled:o?l:!1,value:r,onChange:i,styles:{root:{width:t.width?t.width:"200px"},input:{borderColor:"#e9ecef"}},sx:{".mantine-Select-item[data-selected] .mantine-Text-root[data-role=description]":{color:"rgba(255,255,255,.7)"}},itemComponent:zi})});function Co({label:e,config:t,value:r,onChange:i}){return n(a.TextInput,{label:e,value:r||"",onChange:s=>i(s.currentTarget.value),...t,styles:{input:{borderColor:"#e9ecef"}}})}function wo(e){return eo.arrayToTree(e,{id:"value",parentId:"parent_value",childrenField:"children",dataField:null})}const _o=({rotate:e,onClick:t})=>n("svg",{onClick:t,className:"caret-icon",viewBox:"0 0 1024 1024",focusable:"false","data-icon":"caret-down",width:"14px",height:"14px",fill:"currentColor","aria-hidden":"true",transform:`rotate(${e})`,children:n("path",{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"})}),So=({expanded:e,isLeaf:t,value:r,onClick:i,...s})=>(r==="0-0-value"&&console.log(s),t?n("span",{style:{width:"14px",display:"inline-block"}}):n(_o,{rotate:e?"0":"-90",onClick:i,...s})),To=({onClick:e})=>p("svg",{onClick:e,className:"checkbox-icon",width:"16",height:"16",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",children:[n("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),n("rect",{className:"border",x:"4",y:"4",width:"16",height:"16",rx:"2"}),n("rect",{className:"checkmark-indeterminate",x:"8",y:"8",width:"8",height:"8",rx:"2",stroke:"none"}),n("path",{className:"checkmark-checked",d:"M9 12l2 2l4 -4"})]}),ko=({onClick:e,...t})=>n(To,{onClick:e,...t}),Do=a.createStyles((e,{radius:t=4})=>({root:{borderRadius:e.fn.radius(t),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef","&.rc-tree-select.rc-tree-select-open":{borderColor:"#228be6 !important",".rc-tree-select-selection-overflow-item-rest":{display:"none"},".rc-tree-select-selection-overflow-item-suffix":{display:"block"}},".rc-tree-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"12px",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",flexGrow:1},".rc-tree-select-selection-search-mirror":{display:"none"},".rc-tree-select-selection-search":{flexGrow:1,width:"auto !important"},".rc-tree-select-selection-overflow":{display:"flex",minHeight:"34px",alignItems:"center",flexWrap:"nowrap",marginLeft:"calc(-10px / 2)",boxSizing:"border-box"},".rc-tree-select-selection-overflow-item":{display:"flex",alignItems:"center",backgroundColor:"#f1f3f5",color:"#495057",height:"24px",paddingLeft:"12px",paddingRight:"12px",fontWeight:500,fontSize:"12px",borderRadius:"4px",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",margin:"calc(10px / 2 - 2px) calc(10px / 2)"},".rc-tree-select-selection-overflow-item-rest":{cursor:"pointer"},".rc-tree-select-selection-overflow-item-suffix":{display:"none",backgroundColor:"transparent",width:"100%",maxWidth:"100%",height:"28px",margin:0,paddingLeft:0,paddingRight:0},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-tree-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-tree-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-tree-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:e.fontSizes.sm,fontWeight:500,color:"#212529"},dropdown:{fontSize:e.fontSizes.xs,zIndex:300,paddingTop:"6px","&.rc-tree-select-dropdown-slide-up-leave-active":{display:"none"},".rc-tree-select-tree-list .rc-tree-select-tree-list-holder":{},".rc-tree-select-tree-list, .rc-tree-select-empty":{backgroundColor:"#fff",border:"1px solid #e9ecef",padding:0,boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px"},".rc-tree-select-empty":{padding:"8px 12px"},".rc-tree-select-tree-treenode":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"8px 12px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden","&:hover":{backgroundColor:"#f1f3f5"},"&.rc-tree-select-tree-treenode-checkbox-checked":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-checked":{stroke:"rgb(64, 192, 87)",animation:"check 200ms linear forwards"}},"&.rc-tree-select-tree-treenode-checkbox-indeterminate":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-indeterminate":{fill:"rgb(64, 192, 87)"}},".rc-tree-select-tree-switcher":{height:"16px",alignSelf:"center",paddingRight:"2px",transition:"color 200ms ease","&:hover":{color:"#228be6","svg.caret-icon":{color:"#228be6"}},"svg.caret-icon":{color:"#ced4da",transition:"all 200ms ease"}},".rc-tree-select-tree-node-content-wrapper":{display:"flex",flexWrap:"nowrap",overflow:"hidden",alignItems:"center",gap:"8px",transition:"color 200ms ease","&:hover":{color:"#228be6"}},".rc-tree-select-tree-iconEle":{height:"16px","svg .border":{stroke:"#ced4da"},".checkbox-icon .checkmark-indeterminate":{fill:"transparent",transition:"fill 200ms ease"},".checkbox-icon .checkmark-checked":{transform:"scale(1.2)",transformOrigin:"center center",strokeDasharray:10,strokeDashoffset:-10},"@keyframes check":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}},".rc-tree-select-tree-title":{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",".rc-tree-select-tree-title-desc":{fontSize:"12px",maxWidth:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}},".rc-tree-select-tree-indent":{flexGrow:0,height:0,verticalAlign:"bottom"},".rc-tree-select-tree-indent-unit":{display:"inline-block",width:"1em"}}}})),Io=({disabled:e,classNames:t,styles:r,unstyled:i,radius:s,style:o,label:u,value:l,onChange:d,treeData:c})=>{const{classes:f,cx:g}=Do({radius:s},{name:"FilterTreeSelectWidget",classNames:t,styles:r,unstyled:i}),[h,m]=b.useState((l==null?void 0:l.length)>0),w=S=>{m(S)},C=h&&(l==null?void 0:l.length)>0;return p(a.Stack,{spacing:3,children:[p(a.Group,{position:"apart",children:[n(a.Text,{className:f.label,children:u}),C&&n(a.Tooltip,{label:`${l.length} selected`,children:n(a.Badge,{children:l.length})})]}),n(Ci,{disabled:e,allowClear:!0,className:g(f.root,"check-select"),dropdownClassName:g(f.dropdown,""),onDropdownVisibleChange:w,transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:o,treeLine:!0,clearIcon:()=>n(a.CloseButton,{}),switcherIcon:So,treeIcon:ko,maxTagTextLength:10,value:l,treeData:c,treeNodeFilterProp:"filterBasis",treeCheckable:!0,showCheckedStrategy:Ci.SHOW_PARENT,onChange:d,onSelect:console.log,maxTagCount:0,maxTagPlaceholder:S=>`${S.length} selected`})]})};function Mo(e){return e.map(t=>{const{label:r,description:i,...s}=t,o={...s,filterBasis:`${r}___${i??""}`,description:i,label:r};return i&&(o.label=p("div",{children:[n(a.Text,{title:t.label,children:t.label}),n(a.Text,{className:"rc-tree-select-tree-title-desc",color:"dimmed",title:t.description,children:t.description})]})),o})}const Ao=T.observer(({label:e,config:t,value:r,onChange:i})=>{const s=N(),{state:o,dataProxy:u,len:l}=s.getDataStuffByID(t.options_query_id),d=o==="loading",c=b.useMemo(()=>{if(!u)return[];const m=[...u],w=Mo(m);return wo(w)},[u,l]);b.useEffect(()=>{const{default_selection_count:m}=t;if(!m)return;if(c.length===0){console.log("[filter.tree-select] Resetting to empty"),i([],!0);return}const w=c.slice(0,m).map(C=>C.value);console.log(`[filter.tree-select] Selecting first ${m} option(s)`),i(w,!0)},[t.default_selection_count,c]);const f=t.min_width?t.min_width:"200px",h=!!t.options_query_id?d:!1;return n(Io,{disabled:h,style:{minWidth:f,maxWidth:h?f:"unset",borderColor:"#e9ecef"},value:r,onChange:m=>i(m,!1),treeData:c,label:e})}),$o=T.observer(({filter:{type:e,config:t,key:r,...i},formFieldProps:s})=>{switch(e){case"select":return n(xo,{...i,...s,config:t});case"multi-select":return n(vo,{...i,...s,config:t});case"tree-select":return n(Ao,{...i,...s,config:t});case"text-input":return n(Co,{...i,...s,config:t});case"date-range":return n(Mi,{...i,...s,config:t});case"checkbox":return n(mo,{...i,...s,config:t});default:return null}}),Ei=T.observer(b.forwardRef(({filter:e,...t},r)=>n("div",{className:"filter-root",ref:r,children:n(Ae,{children:n($o,{filter:e,formFieldProps:t})})}))),Li=T.observer(function({view:t}){const r=N(),{control:i,handleSubmit:s,reset:o}=x.useForm({defaultValues:r.filters.values,reValidateMode:"onBlur"}),u=x.useWatch({control:i});b.useEffect(()=>{o(r.filters.values)},[r.filters.values,o]),b.useEffect(()=>{r.filters.updatePreviewValues(u)},[u]);const l=r.filters.visibleInView(t.id),d=b.useMemo(()=>l.every(h=>h.should_auto_submit),[l]),c=b.useMemo(()=>l.filter(h=>v.get(h,"config.required",!1)),[l]),f=b.useMemo(()=>c.length===0?!1:c.some(h=>!h.requiredAndPass(u[h.key])),[u,c]);if(l.length===0)return null;const g=(h,m)=>(w,C)=>{m(w),(h.should_auto_submit||C)&&r.filters.setValueByKey(h.key,w)};return n("form",{onSubmit:s(r.filters.setValues),children:p(a.Group,{className:"dashboard-filters",position:"apart",noWrap:!0,sx:d?{}:{border:"1px solid #e9ecef",borderRadius:"4px",padding:"16px"},children:[n(a.Group,{align:"flex-start",children:l.map(h=>n(x.Controller,{name:h.key,control:i,render:({field:m})=>n(Ei,{filter:h,value:m.value,onChange:g(h,m.onChange)})},h.id))}),!d&&n(a.Group,{sx:{alignSelf:"flex-end"},children:n(a.Button,{color:"blue",size:"sm",type:"submit",disabled:f,children:"Search"})})]})})}),Xw="";function zo(e){return e?["<p><br></p>","<p></p>"].includes(e):!0}const Oi=T.observer(()=>{const{freezeLayout:e}=b.useContext(Xe),[t,r]=b.useState(!1),{panel:i}=xe();return b.useEffect(()=>{e(t)},[t]),zo(i.description)?null:p(P,{children:[n(a.Modal,{opened:t,onClose:()=>r(!1),title:i.title,withCloseButton:!1,withinPortal:!0,zIndex:310,children:n(Nt,{value:i.description,styles:{root:{border:"none"},content:{padding:0}}})}),n(a.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:n(a.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>r(s=>!s),sx:{verticalAlign:"baseline",cursor:"pointer"},children:n(k.InfoCircle,{size:20})})})]})}),Eo=T.observer(({view:e})=>{const t=N(),r=Oe.useModals(),{panel:i}=xe(),{id:s,query:o}=i,{inEditMode:u}=b.useContext(Xe),l=()=>o==null?void 0:o.fetchData(),{viewPanelInFullScreen:d,inFullScreen:c}=b.useContext(gn),f=()=>{t.duplicatePanelByID(s,e.id)},g=()=>{t.editor.open(["_VIEWS_",e.id,"_PANELS_",s])},h=()=>r.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>t.removePanelByID(s,e.id),confirmProps:{color:"red"},zIndex:320}),m=b.useCallback(()=>{d(s)},[s,d]),w=!c&&e.type!==K.Modal;return n(P,{children:n(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:p(a.Menu,{withinPortal:!0,children:[n(a.Menu.Target,{children:n(a.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),p(a.Menu.Dropdown,{children:[n(a.Menu.Item,{onClick:l,icon:n(k.Refresh,{size:14}),children:"Refresh"}),n(a.Menu.Item,{onClick:()=>t.queries.downloadDataByQueryID((o==null?void 0:o.id)??""),icon:n(k.Download,{size:14}),children:"Download Data"}),w&&n(a.Menu.Item,{onClick:m,icon:n(k.ArrowsMaximize,{size:14}),disabled:u,children:"Full Screen"}),u&&p(P,{children:[n(a.Divider,{label:"Edit",labelPosition:"center"}),n(a.Menu.Item,{onClick:g,icon:n(k.Settings,{size:14}),children:"Settings"}),n(a.Menu.Item,{onClick:f,icon:n(k.Copy,{size:14}),children:"Duplicate"}),n(a.Menu.Item,{color:"red",onClick:h,icon:n(k.Trash,{size:14}),children:"Delete"})]})]})]})})})}),Zw="",Lo=T.observer(function(){const{panel:t}=xe(),{title:r}=t;return r?n(a.Group,{grow:!0,position:"center",px:20,className:"panel-title-wrapper",sx:{flexGrow:1},children:n(a.Text,{align:"center",lineClamp:1,weight:"bold",children:r})}):null}),Pe=(e,t)=>{const[r,i]=b.useState([]);return b.useEffect(()=>e.watchTriggerSnapshotList(s=>i(s.filter(o=>o.schemaRef===t))),[]),r};class ot{constructor(t,r){this.root=t,this.path=r}async deleteItem(t){t===null&&await this.root.deleteItem(this.path);const r=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,v.omit(r,t))}async getItem(t){const r=await this.root.getItem(this.path);return t===null?r:v.get(r,t)}async setItem(t,r){if(t===null)await this.root.setItem(this.path,r);else{const i=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...i,[t]:r})}return await this.getItem(t)}watchItem(t,r,i){return t===null?this.root.watchItem(this.path,(s,o)=>{r(s,o)},i):this.root.watchItem(this.path,(s,o)=>{const u=v.get(s,t),l=v.get(o,t);u!==l&&r(u,l)},i)}}class xn{constructor(t,r,i){O(this,"attachmentStorage");this.instance=t,this.attachmentKey=r,this.constructInstance=i,this.attachmentStorage=new ot(t.instanceData,r)}async getInstance(t){if(await this.attachmentStorage.getItem(t))return this.constructInstance(new ot(this.attachmentStorage,t))}async create(t,r){return await this.attachmentStorage.setItem(t,r),this.constructInstance(new ot(this.attachmentStorage,t))}async remove(t){await this.attachmentStorage.deleteItem(t)}async list(){const t=await this.attachmentStorage.getItem(null);return Promise.all(v.values(t).map(r=>this.constructInstance(new ot(this.attachmentStorage,r.id))))}}class Pi{constructor(t){O(this,"rootRef");this.rootRef=ae.observable({current:t})}async deleteItem(t){ae.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?ae.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(v.isObject(r))ae.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else ae.runInAction(()=>{v.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,i){return ae.reaction(()=>this.getValueFromRoot(t),(s,o)=>{r(s,o)},{requiresObservable:!0,fireImmediately:v.get(i,"fireImmediately",!1)})}}class Oo{constructor(){O(this,"channels",new Map);O(this,"globalChannel",new wi)}getChannel(t){const r=this.channels.get(t);if(r)return r;const i=new wi;return this.channels.set(t,i),i}}class Po{constructor(t){O(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const i={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Oo,instanceData:new Pi(t.viz.conf)};return this.instances.set(t.id,i),i}}function Vi(e,t,r,i){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Pi({}),colorPalette:{getColor(){return()=>""}},data:t,variables:i}}const Vo=e=>{const{panel:t,vizManager:r,data:i,variables:s}=e,o=r.resolveComponent(t.viz.type),u=r.getOrCreateInstance(t),l={...Vi(u,i,r,s),viewport:{width:t.layout.w,height:t.layout.h}},d=o.viewRender;return n(d,{context:l,instance:u,...v.omit(e,["panel","vizManager","data"])})},Bo=e=>{const{vizManager:t,panel:r,panelInfoEditor:i,data:s,variables:o}=e,u=t.resolveComponent(r.viz.type),l=t.getOrCreateInstance(r),d={...Vi(l,s,t,o),panelInfoEditor:i},c=u.configRender;return n(c,{context:d,instance:l,...v.omit(e,["panel","vizManager","data","panelInfoEditor"])})},Bi=(e,t)=>{const r=Fe.bezier(e),i=Fe.bezier(t);return function(s){return s<50?r(s*2/100).hex():i((s-50)*2/100).hex()}},Gt=e=>{const t=Fe.bezier(e);return function(r){return t(r/100).hex()}},No={type:"interpolation",displayName:"Red / Green",getColor:Bi(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Go={type:"interpolation",displayName:"Yellow / Blue",getColor:Bi(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},qo={type:"interpolation",displayName:"Red",getColor:Gt(["#fff7f1","darkred"]),name:"red",category:"sequential"},Fo={type:"interpolation",displayName:"Green",getColor:Gt(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Wo={type:"interpolation",displayName:"Blue",getColor:Gt(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},jo={type:"interpolation",displayName:"Orange",getColor:Gt(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},Ni="@devtable/dashboard",Cn="8.61.0",Gi="Apache-2.0",qi={access:"public",registry:"https://registry.npmjs.org/"},Fi=["dist"],Wi="./dist/dashboard.umd.js",ji="./dist/dashboard.es.js",Yi="./dist/index.d.ts",Ri={".":{import:"./dist/dashboard.es.js",require:"./dist/dashboard.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},Qi={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview",test:"vitest","test:ui":"vitest --ui",coverage:"vitest --coverage"},Ui={"@monaco-editor/react":"4.4.6","@types/chroma-js":"^2.1.4","file-saver":"2.0.5",mathjs:"11.8.0","monaco-editor":"0.36.0","performant-array-to-tree":"1.11.0",popmotion:"^11.0.3","rc-tree-select":"5.5.5",reactflow:"^11.5.3"},Xi={"@emotion/babel-plugin":"11.10.6","@faker-js/faker":"7.6.0","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/hooks":"5.9.5","@mantine/modals":"5.9.5","@mantine/notifications":"5.9.5","@mantine/prism":"5.9.5","@mantine/tiptap":"5.9.5","@tabler/icons":"^1.118.0","@testing-library/cypress":"^9.0.0","@testing-library/jest-dom":"^5.16.4","@testing-library/react":"^13.3.0","@testing-library/react-hooks":"^8.0.1","@testing-library/user-event":"^14.3.0","@tiptap/extension-code-block-lowlight":"2.0.3","@tiptap/extension-color":"2.0.3","@tiptap/extension-highlight":"2.0.3","@tiptap/extension-link":"2.0.3","@tiptap/extension-placeholder":"2.0.3","@tiptap/extension-subscript":"2.0.3","@tiptap/extension-superscript":"2.0.3","@tiptap/extension-table":"2.0.3","@tiptap/extension-table-cell":"2.0.3","@tiptap/extension-table-header":"2.0.3","@tiptap/extension-table-row":"2.0.3","@tiptap/extension-text-align":"2.0.3","@tiptap/extension-text-style":"2.0.3","@tiptap/extension-underline":"2.0.3","@tiptap/pm":"2.0.3","@tiptap/react":"2.0.3","@tiptap/starter-kit":"2.0.3","@types/crypto-js":"v4.1.1","@types/d3-array":"3.0.4","@types/eventemitter2":"^4.1.0","@types/file-saver":"2.0.5","@types/lodash":"^4.14.182","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/react-grid-layout":"^1.3.2",ahooks:"^3.3.11",ajv:"8.12.0",axios:"^0.27.2","crypto-js":"^4.1.1",cypress:"^12.9.0","cypress-wait-until":"^1.7.2",echarts:"^5.3.2","echarts-for-react":"^3.0.2","echarts-gl":"^2.0.9",jsdom:"^20.0.0","jsdom-testing-mocks":"^1.5.0",lodash:"^4.17.21",lowlight:"^2.8.0",numbro:"^2.3.6","prosemirror-commands":"^1.5.0","prosemirror-dropcursor":"^1.6.1","prosemirror-gapcursor":"^1.3.1","prosemirror-history":"^1.3.0","prosemirror-keymap":"^1.2.0","prosemirror-schema-list":"^1.2.2","react-grid-layout":"^1.3.4","react-hook-form":"^7.31.2","rollup-plugin-visualizer":"5.6.0","tabler-icons-react":"^1.48.0",typescript:"^4.6.3","vite-plugin-static-copy":"0.13.1"},Zi={"@emotion/react":"11.10.6","@faker-js/faker":"7.6.0","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/hooks":"5.9.5","@mantine/modals":"5.9.5","@mantine/notifications":"5.9.5","@mantine/prism":"5.9.5","@mantine/tiptap":"5.9.5","@tabler/icons":"^1.118.0","@tanstack/react-table":"^8.5.13","@tiptap/extension-code-block-lowlight":"2.0.3","@tiptap/extension-color":"2.0.3","@tiptap/extension-highlight":"2.0.3","@tiptap/extension-link":"2.0.3","@tiptap/extension-placeholder":"2.0.3","@tiptap/extension-subscript":"2.0.3","@tiptap/extension-superscript":"2.0.3","@tiptap/extension-table":"2.0.3","@tiptap/extension-table-cell":"2.0.3","@tiptap/extension-table-header":"2.0.3","@tiptap/extension-table-row":"2.0.3","@tiptap/extension-text-align":"2.0.3","@tiptap/extension-text-style":"2.0.3","@tiptap/extension-underline":"2.0.3","@tiptap/pm":"2.0.3","@tiptap/react":"2.0.3","@tiptap/starter-kit":"2.0.3",ahooks:"^3.3.11",axios:"^0.27.2","chroma-js":"^2.4.2","crypto-js":"^4.1.1","d3-array":"3.2.3","d3-regression":"1.3.10",dayjs:"1.11.7",echarts:"^5.3.2","echarts-for-react":"^3.0.2","echarts-gl":"^2.0.9",eventemitter2:"^6.4.6",jszip:"3.10.1",lodash:"^4.17.21",lowlight:"^2.8.0",mobx:"^6.6.1","mobx-react-lite":"^3.4.0","mobx-state-tree":"^5.1.5",numbro:"^2.3.6","prosemirror-commands":"^1.5.0","prosemirror-dropcursor":"^1.6.1","prosemirror-gapcursor":"^1.3.1","prosemirror-history":"^1.3.0","prosemirror-keymap":"^1.2.0","prosemirror-schema-list":"^1.2.2",react:"^16.8.0 || 17.x || 18.x","react-dom":"^16.8.0 || 17.x || 18.x","react-grid-layout":"^1.3.4","react-hook-form":"^7.31.2","react-router-dom":"^6.3.0","react-virtual":"^2.10.4","tabler-icons-react":"^1.48.0"},Yo=Object.freeze(Object.defineProperty({__proto__:null,default:{name:Ni,version:Cn,license:Gi,publishConfig:qi,files:Fi,main:Wi,module:ji,types:Yi,exports:Ri,scripts:Qi,dependencies:Ui,devDependencies:Xi,peerDependencies:Zi},dependencies:Ui,devDependencies:Xi,exports:Ri,files:Fi,license:Gi,main:Wi,module:ji,name:Ni,peerDependencies:Zi,publishConfig:qi,scripts:Qi,types:Yi,version:Cn},Symbol.toStringTag,{value:"Module"}));class Ro{constructor(t){O(this,"staticColors",new Map);O(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(i=>{this.register(i)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(r,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Qo{constructor(){O(this,"plugins",new Map);O(this,"vizComponents",new Map);O(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Uo{constructor(){O(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,i){var u;if(t.from===t.to)return r;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const s=this.migrations.filter(l=>l.version>t.from&&l.version<=t.to),o=v.orderBy(s,"version","asc");if(((u=v.last(o))==null?void 0:u.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((l,d)=>d.handler(l,i),r)}}class he extends Uo{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(i,s)=>({version:t,...r(i,s)}))}async migrate({configData:t,panelModel:r}){const i=await t.getItem(null),s=v.get(i,"version",0),o=this.run({from:s,to:this.VERSION},i,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return v.get(r,"version",0)<this.VERSION}}const W=(e,t)=>{const[r,{setFalse:i}]=Z.useBoolean(!0),[s,o]=b.useState();b.useEffect(()=>(e.getItem(t).then(l=>{o(l),i()}),e.watchItem(t,l=>{o(l)})));const u=b.useCallback(async l=>{await e.setItem(t,l),o(l)},[e,t]);return{loading:r,value:s,set:u}},wn={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"}};le.use([B.GridComponent,B.VisualMapComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer]);function Xo({context:e}){const{value:t}=W(e.instanceData,"config"),r=e.data,{width:i,height:s}=e.viewport,{x_axis_data_key:o,y_axis_data_key:u,z_axis_data_key:l,xAxis3D:d,yAxis3D:c,zAxis3D:f}=v.defaults({},t,wn),g=b.useMemo(()=>{const w=v.minBy(r,C=>C[l]);return v.get(w,l)},[r,l]),h=b.useMemo(()=>{const w=v.maxBy(r,C=>C[l]);return v.get(w,l)},[r,l]),m={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:g,max:h,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:d,yAxis3D:c,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:r.map(w=>[w[o],w[u],w[l]])}]};return t?n(De,{echarts:le,option:m,style:{width:i,height:s},notMerge:!0,theme:"merico-light"}):null}function Zo({label:e,required:t,value:r,onChange:i,data:s,clearable:o=!1,sx:u,...l},d){const c=b.useMemo(()=>{if(!Array.isArray(s)||s.length===0)return[];const g=Object.keys(s[0]).map(h=>({label:h,value:h}));return o?g.concat([{label:"unset",value:""}]):g},[s]);return n(a.Select,{ref:d,label:e,data:c,value:r,onChange:i,required:t,sx:u,...l})}const Y=b.forwardRef(Zo);function Ko({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=v.defaults({},t,wn),{control:o,handleSubmit:u,reset:l}=x.useForm({defaultValues:s});return b.useEffect(()=>{l(s)},[t]),t?n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[n(a.Text,{children:"X Axis"}),p(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(x.Controller,{name:"x_axis_data_key",control:o,render:({field:d})=>n(Y,{label:"Data Field",required:!0,data:i,...d})}),n(x.Controller,{name:"xAxis3D.name",control:o,render:({field:d})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),n(a.Text,{mt:"lg",children:"Y Axis"}),p(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(x.Controller,{name:"y_axis_data_key",control:o,render:({field:d})=>n(Y,{label:"Data Field",required:!0,data:i,...d})}),n(x.Controller,{name:"yAxis3D.name",control:o,render:({field:d})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),n(a.Text,{mt:"lg",children:"Z Axis"}),p(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(x.Controller,{name:"z_axis_data_key",control:o,render:({field:d})=>n(Y,{label:"Data Field",required:!0,data:i,...d})}),n(x.Controller,{name:"zAxis3D.name",control:o,render:({field:d})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...d})})]}),n(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:p(a.Button,{color:"blue",type:"submit",children:[n(k.DeviceFloppy,{size:20}),n(a.Text,{ml:"md",children:"Save"})]})})]})}):null}class Jo extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Ho={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Jo,name:"bar-3d",viewRender:Xo,configRender:Ko,createConfig(){return{version:1,config:v.cloneDeep(wn)}}},Ie={mantissa:0,output:"number",trimMantissa:!1,average:!1};function el({value:e,onChange:t},r){const i=l=>{t({...e,output:l})},s=l=>{const d=l===0?!1:e.trimMantissa;t({...e,mantissa:l,trimMantissa:d})},o=l=>{t({...e,trimMantissa:l.currentTarget.checked})},u=l=>{t({...e,average:l.currentTarget.checked})};return p(a.Stack,{ref:r,children:[p(a.Group,{grow:!0,children:[n(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:i,sx:{flexGrow:1}}),n(a.Switch,{label:p(a.Stack,{spacing:0,children:[n(a.Text,{children:"Average"}),n(a.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:e.average,onChange:u,disabled:e.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),p(a.Group,{grow:!0,children:[n(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:s}),n(a.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:o,disabled:e.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),p(a.Stack,{spacing:0,children:[n(a.Text,{weight:"bold",children:"Preview"}),n(Ae,{children:p(a.Group,{position:"apart",children:[p(a.Text,{size:12,color:"gray",children:["123456789 ",n(k.ArrowRight,{size:9})," ",se(123456789).format(e)]}),p(a.Text,{size:12,color:"gray",children:["1234 ",n(k.ArrowRight,{size:9})," ",se(1234).format(e)]}),p(a.Text,{size:12,color:"gray",children:["0.1234 ",n(k.ArrowRight,{size:9})," ",se(.1234).format(e)]})]})})]})]})}const Ve=b.forwardRef(el),Be={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
28
+ `)},Ki={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:nl,configRender:tl,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'boxplot'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"Record of 'name', 'min', 'q1', 'median', 'q3', 'max'",valueType:"object"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function tl(e){return n(P,{})}function nl(e){return n(a.Text,{children:"Click chart's series"})}const rl=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],qt=b.forwardRef(({sectionTitle:e,value:t,onChange:r},i)=>{const s=o=>u=>{const l=v.cloneDeep(t);v.set(l,o,u),r(l)};return p(a.Stack,{spacing:0,children:[e&&n(a.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",labelProps:{color:"dimmed"}}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.NumberInput,{label:"Max Width",hideControls:!0,value:t.width,onChange:s("width")}),n(a.Select,{label:"Overflow",data:rl,value:t.overflow,onChange:s("overflow")}),n(a.TextInput,{label:"Ellipsis",value:t.ellipsis,disabled:!0})]})]})}),nt=b.forwardRef(({value:e,onChange:t},r)=>{const i=o=>{t({...e,on_axis:o})},s=o=>{t({...e,in_tooltip:o})};return p(a.Stack,{ref:r,spacing:0,children:[n(qt,{sectionTitle:"Overflow on Axis",value:e.on_axis,onChange:i}),n(qt,{sectionTitle:"Overflow in Tooltip",value:e.in_tooltip,onChange:s})]})}),je={on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}};function Ze({overflow:e,width:t}){const r={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],i=e==="truncate"?"nowrap":"initial",s={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
29
29
  max-width: ${t}px;
30
30
  word-break: ${r};
31
31
  white-space: ${i};
32
32
  overflow: hidden;
33
33
  text-overflow: ${s};
34
- `}function Ke(e){return{width:e.width,overflow:e.overflow,ellipsis:e.ellipsis}}const _n={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...Be},overflow:je}},y_axis:{name:"Y Axis",data_key:"value",label_formatter:De},color:"#228be6",reference_lines:[]},Ct=m.forwardRef(function({value:t,onChange:r,...i},s){return n(a.TextInput,{ref:s,value:t,onChange:r,...i})}),Jo=[{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:"Coefficient of Variation",value:"CV"},{label:"Standard Variation",value:"std"},{label:"Quantile(99%, 95%, ...)",value:"quantile"}];function Ho({label:e,value:t,onChange:r,pt:i="sm"},s){m.useEffect(()=>{typeof t=="string"&&(console.log(t),r({type:t,config:{}}))},[t,r]);const o=l=>{r(l==="quantile"?{type:"quantile",config:{p:.99}}:{type:l,config:{}})},u=l=>{r({type:"quantile",config:{p:l}})};return p(a.Group,{grow:!0,noWrap:!0,pt:i,children:[n(a.Select,{ref:s,label:e,data:Jo,value:t.type,onChange:o}),t.type==="quantile"&&n(a.NumberInput,{label:"p",value:t.config.p,onChange:u,precision:2,min:.05,step:.05,max:1})]})}const Ft=m.forwardRef(Ho);function el({label:e,value:t,onChange:r},i){const[s,o]=m.useState(Array.isArray(t)?[...t]:[]),u=m.useCallback(()=>{o(h=>[...h,""])},[o]),l=m.useCallback(h=>{o(b=>(b.splice(h,1),[...b]))},[o]),d=m.useMemo(()=>!y.isEqual(s,t),[s,t]),c=()=>{r(s.map(h=>h.toString()))},f=a.useMantineTheme(),g=m.useMemo(()=>Object.entries(f.colors).map(([h,b])=>b[6]),[f]);return p(O,{children:[p(a.Group,{position:"left",ref:i,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:c,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Group,{children:[s.map((h,b)=>n(a.ColorInput,{value:h,onChange:w=>{o(C=>(C.splice(b,1,w),[...C]))},swatches:g,rightSection:n(a.ActionIcon,{onClick:()=>l(b),color:"red",children:n(D.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:n(D.PlaylistAdd,{size:20})})]})]})}const tl=m.forwardRef(el);function nl({value:e,onChange:t},r){const{colorManager:i}=m.useContext(Ne),s=m.useMemo(()=>i.getStaticColors().map(l=>({label:l.name,group:l.category,value:l.value})),[i]),o=m.useMemo(()=>s.some(u=>u.value===e),[e,s]);return p(a.Group,{position:"apart",spacing:4,ref:r,children:[n(a.TextInput,{placeholder:"Set any color",value:o?"":e,onChange:u=>t(u.currentTarget.value),rightSection:n(a.ColorSwatch,{color:o?"transparent":e,radius:4}),variant:o?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),n(a.Text,{sx:{flexGrow:0},children:"or"}),n(a.Select,{data:s,value:e,onChange:t,variant:o?"default":"filled",placeholder:"Pick a theme color",icon:n(a.ColorSwatch,{color:o?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const Se=m.forwardRef(nl),Wt=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function rl({label:e,value:t,onChange:r},i){var u;const[s,o]=m.useState(((u=Wt.find(l=>l.label===t))==null?void 0:u.value)??Wt[0].value);return m.useEffect(()=>{const l=Wt.find(d=>d.value===s);l&&r(l.label)},[s]),p(a.Stack,{spacing:0,mt:"sm",mb:"lg",children:[n(a.Text,{size:"sm",children:e}),n(a.Slider,{label:null,marks:Wt,value:s,onChange:o,step:25,placeholder:"Pick a font size",px:"1em",ref:i})]})}const Zi=m.forwardRef(rl);function il({label:e,value:t,onChange:r,type:i},s){const[o,u]=m.useState(Array.isArray(t)?[...t]:[]),l=m.useCallback(()=>{u(g=>[...g,""])},[u]),d=m.useCallback(g=>{u(h=>(h.splice(g,1),[...h]))},[u]),c=m.useMemo(()=>!y.isEqual(o.map(String),t.map(String)),[o,t]),f=()=>{r(o.map(g=>i==="number"?Number(g):g.toString()))};return p(O,{children:[p(a.Group,{position:"left",ref:s,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:f,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Group,{children:[o.map((g,h)=>n(a.TextInput,{type:i,value:g,onChange:b=>{const w=b.currentTarget.value;u(C=>(C.splice(h,1,w),[...C]))},rightSection:n(a.ActionIcon,{onClick:()=>d(h),color:"red",children:n(D.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:n(D.PlaylistAdd,{size:20})})]})]})}const al=m.forwardRef(il),Ki=m.forwardRef(function({value:t,onChange:r},i){const s=t.color.type,o=(u,l)=>{const d=y.cloneDeep(t);y.set(d,u,l),r(d)};return p(O,{children:[n(a.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),n(a.Stack,{children:n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:t.size,onChange:u=>o("size",u.currentTarget.value)})}),n(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:n(Zi,{label:"Font Weight",value:t.weight,onChange:u=>o("weight",u)})}),n(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),p(a.Stack,{children:[n(a.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:t.color.type,onChange:u=>o("color.type",u)}),s==="static"&&n(Se,{value:t.color.staticColor,onChange:u=>o("color.staticColor",u)}),s==="continuous"&&p(O,{children:[n(al,{label:"Value Range",value:t.color.valueRange,type:"number",onChange:u=>o("color.valueRange",u)}),n(tl,{label:"Color Range",value:t.color.colorRange,onChange:u=>o("color.colorRange",u)})]})]})]})});m.forwardRef(function({value:t,onChange:r,data:i,withStyle:s=!0},o){const u=(l,d)=>{const c=y.cloneDeep(t);y.set(c,l,d),r(c)};return p(a.Box,{px:"sm",py:"md",ref:o,children:[n(a.Text,{weight:"bold",pb:0,children:t.name}),n(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:l=>u("name",l.currentTarget.value)}),n(U,{label:"Data Field",required:!0,data:i,value:t.data_field,onChange:l=>u("data_field",l)})]}),n(Ft,{label:"Aggregation",value:t.aggregation,onChange:l=>u("aggregation",l)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(Ve,{value:t.formatter,onChange:l=>u("formatter",l)}),s&&n(Ki,{value:t,onChange:r})]})});const wt={type:"none",config:{}};function sl(e){const t=Array.from(e).sort((i,s)=>i-s),r=Math.floor(t.length/2);return t.length%2===0?(t[r-1]+t[r])/2:t[r]}function ol(e,t){const r=e[t],i=Number(r);return isFinite(i)?i:0}function _t(e,t,r){try{const i=e.map(s=>ol(s,t));switch(r.type){case"sum":return y.sum(i);case"mean":return y.mean(i);case"median":return sl(i);case"max":return y.max(i)??0;case"min":return y.min(i)??0;case"quantile":return bt.quantile(i,r.config.p)??0;case"CV":const s=Vt.std(...i),o=Vt.mean(...i);return o?s/o:"N/A";case"std":return Vt.std(...i);default:return i}}catch(i){return console.error(i),null}}class ll{constructor({valueRange:t,colorRange:r}){P(this,"mapper");this.mapper=Pt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function ul(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function ot({data_field:e,aggregation:t},r){return _t(r,e,t)}function Je({formatter:e},t){if(!["string","number"].includes(typeof t))return ul(t);try{return ue(t).format(e)}catch(r){return console.error(r),t}}function dl(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{if(typeof t!="number")throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}`);return new ll(e).getColor(t)}catch(r){return console.error(r),"black"}return"black"}function Ji(e,t){const{color:r,data_field:i,aggregation:s,size:o,weight:u}=e,l=_t(t,i,s),d=Je(e,l);return n(a.Text,{sx:{fontSize:o,display:"inline"},color:dl(r,l),weight:u,children:d})}function cl(e,t){const r={};return e.forEach(i=>{const s=i.name;r[s]=Ji(i,t)}),r}function pl(e){return e.split(" ").map((t,r)=>p(m.Fragment,{children:[t," "]},r))}function hl(e){const r=e.replaceAll("<br />","<br/>").replaceAll(`
35
- `,"<br/>").split("<br/>");return r.map((s,o)=>{const u=[pl(s)];return o!==r.length-1&&u.push(n("br",{})),u}).flat().filter(s=>s!==void 0)}function Sn(e){return hl(e)}function St(e,t,r){const i=cl(t,r),s=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{const u=s.exec(o);if(!u)return Sn(o);const l=i[u[1]];if(!l)return Sn(o);const d=u[2]??"";return p(O,{children:[l,Sn(d)]})})}function fl(e,t){const r={};return e.forEach(i=>{const{name:s,data_field:o,aggregation:u}=i,l=_t(t,o,u);r[s]=Je(i,l)}),r}function jt(e,t,r){const i=fl(t,r),s=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{const u=s.exec(o);if(!u)return o;const l=i[u[1]];if(!l)return o;const d=u[2]??"";return`${l}${d}`}).join("")}function lt({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}const Tn=["max","q3","median","q1","min"];function gl({config:e}){return{show:!0,bottom:0,left:"center",type:"scroll",data:[{name:"Box",icon:"roundRect",itemStyle:{color:e.color}},{name:"Outlier",icon:"circle",itemStyle:{color:"#2F8CC0"}}]}}function ml(e,t){return`
34
+ `}function Ke(e){return{width:e.width,overflow:e.overflow,ellipsis:e.ellipsis}}const _n={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...Be},overflow:je}},y_axis:{name:"Y Axis",data_key:"value",label_formatter:Ie},color:"#228be6",reference_lines:[]},wt=b.forwardRef(function({value:t,onChange:r,...i},s){return n(a.TextInput,{ref:s,value:t,onChange:r,...i})}),il=[{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:"Coefficient of Variation",value:"CV"},{label:"Standard Variation",value:"std"},{label:"Quantile(99%, 95%, ...)",value:"quantile"}];function al({label:e,value:t,onChange:r,pt:i="sm"},s){b.useEffect(()=>{typeof t=="string"&&(console.log(t),r({type:t,config:{}}))},[t,r]);const o=l=>{r(l==="quantile"?{type:"quantile",config:{p:.99}}:{type:l,config:{}})},u=l=>{r({type:"quantile",config:{p:l}})};return p(a.Group,{grow:!0,noWrap:!0,pt:i,children:[n(a.Select,{ref:s,label:e,data:il,value:t.type,onChange:o}),t.type==="quantile"&&n(a.NumberInput,{label:"p",value:t.config.p,onChange:u,precision:2,min:.05,step:.05,max:1})]})}const Ft=b.forwardRef(al);function sl({label:e,value:t,onChange:r},i){const[s,o]=b.useState(Array.isArray(t)?[...t]:[]),u=b.useCallback(()=>{o(h=>[...h,""])},[o]),l=b.useCallback(h=>{o(m=>(m.splice(h,1),[...m]))},[o]),d=b.useMemo(()=>!v.isEqual(s,t),[s,t]),c=()=>{r(s.map(h=>h.toString()))},f=a.useMantineTheme(),g=b.useMemo(()=>Object.entries(f.colors).map(([h,m])=>m[6]),[f]);return p(P,{children:[p(a.Group,{position:"left",ref:i,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!d,onClick:c,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Group,{children:[s.map((h,m)=>n(a.ColorInput,{value:h,onChange:w=>{o(C=>(C.splice(m,1,w),[...C]))},swatches:g,rightSection:n(a.ActionIcon,{onClick:()=>l(m),color:"red",children:n(k.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:u,color:"blue",variant:"outline",children:n(k.PlaylistAdd,{size:20})})]})]})}const ol=b.forwardRef(sl);function ll({value:e,onChange:t},r){const{colorManager:i}=b.useContext(Ne),s=b.useMemo(()=>i.getStaticColors().map(l=>({label:l.name,group:l.category,value:l.value})),[i]),o=b.useMemo(()=>s.some(u=>u.value===e),[e,s]);return p(a.Group,{position:"apart",spacing:4,ref:r,children:[n(a.TextInput,{placeholder:"Set any color",value:o?"":e,onChange:u=>t(u.currentTarget.value),rightSection:n(a.ColorSwatch,{color:o?"transparent":e,radius:4}),variant:o?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),n(a.Text,{sx:{flexGrow:0},children:"or"}),n(a.Select,{data:s,value:e,onChange:t,variant:o?"default":"filled",placeholder:"Pick a theme color",icon:n(a.ColorSwatch,{color:o?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const Se=b.forwardRef(ll),Wt=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function ul({label:e,value:t,onChange:r},i){var u;const[s,o]=b.useState(((u=Wt.find(l=>l.label===t))==null?void 0:u.value)??Wt[0].value);return b.useEffect(()=>{const l=Wt.find(d=>d.value===s);l&&r(l.label)},[s]),p(a.Stack,{spacing:0,mt:"sm",mb:"lg",children:[n(a.Text,{size:"sm",children:e}),n(a.Slider,{label:null,marks:Wt,value:s,onChange:o,step:25,placeholder:"Pick a font size",px:"1em",ref:i})]})}const Ji=b.forwardRef(ul);function dl({label:e,value:t,onChange:r,type:i},s){const[o,u]=b.useState(Array.isArray(t)?[...t]:[]),l=b.useCallback(()=>{u(g=>[...g,""])},[u]),d=b.useCallback(g=>{u(h=>(h.splice(g,1),[...h]))},[u]),c=b.useMemo(()=>!v.isEqual(o.map(String),t.map(String)),[o,t]),f=()=>{r(o.map(g=>i==="number"?Number(g):g.toString()))};return p(P,{children:[p(a.Group,{position:"left",ref:s,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:f,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Group,{children:[o.map((g,h)=>n(a.TextInput,{type:i,value:g,onChange:m=>{const w=m.currentTarget.value;u(C=>(C.splice(h,1,w),[...C]))},rightSection:n(a.ActionIcon,{onClick:()=>d(h),color:"red",children:n(k.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:n(k.PlaylistAdd,{size:20})})]})]})}const cl=b.forwardRef(dl),Hi=b.forwardRef(function({value:t,onChange:r},i){const s=t.color.type,o=(u,l)=>{const d=v.cloneDeep(t);v.set(d,u,l),r(d)};return p(P,{children:[n(a.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),n(a.Stack,{children:n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:t.size,onChange:u=>o("size",u.currentTarget.value)})}),n(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:n(Ji,{label:"Font Weight",value:t.weight,onChange:u=>o("weight",u)})}),n(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),p(a.Stack,{children:[n(a.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:t.color.type,onChange:u=>o("color.type",u)}),s==="static"&&n(Se,{value:t.color.staticColor,onChange:u=>o("color.staticColor",u)}),s==="continuous"&&p(P,{children:[n(cl,{label:"Value Range",value:t.color.valueRange,type:"number",onChange:u=>o("color.valueRange",u)}),n(ol,{label:"Color Range",value:t.color.colorRange,onChange:u=>o("color.colorRange",u)})]})]})]})});b.forwardRef(function({value:t,onChange:r,data:i,withStyle:s=!0},o){const u=(l,d)=>{const c=v.cloneDeep(t);v.set(c,l,d),r(c)};return p(a.Box,{px:"sm",py:"md",ref:o,children:[n(a.Text,{weight:"bold",pb:0,children:t.name}),n(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:l=>u("name",l.currentTarget.value)}),n(Y,{label:"Data Field",required:!0,data:i,value:t.data_field,onChange:l=>u("data_field",l)})]}),n(Ft,{label:"Aggregation",value:t.aggregation,onChange:l=>u("aggregation",l)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(Ve,{value:t.formatter,onChange:l=>u("formatter",l)}),s&&n(Hi,{value:t,onChange:r})]})});const _t={type:"none",config:{}};function pl(e){const t=Array.from(e).sort((i,s)=>i-s),r=Math.floor(t.length/2);return t.length%2===0?(t[r-1]+t[r])/2:t[r]}function hl(e,t){const r=e[t],i=Number(r);return isFinite(i)?i:0}function St(e,t,r){try{const i=e.map(s=>hl(s,t));switch(r.type){case"sum":return v.sum(i);case"mean":return v.mean(i);case"median":return pl(i);case"max":return v.max(i)??0;case"min":return v.min(i)??0;case"quantile":return yt.quantile(i,r.config.p)??0;case"CV":const s=Vt.std(...i),o=Vt.mean(...i);return o?s/o:"N/A";case"std":return Vt.std(...i);default:return i}}catch(i){return console.error(i),null}}class fl{constructor({valueRange:t,colorRange:r}){O(this,"mapper");this.mapper=at.interpolate(t,r)}getColor(t){return this.mapper(t)}}function gl(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function lt({data_field:e,aggregation:t},r){return St(r,e,t)}function Je({formatter:e},t){if(!["string","number"].includes(typeof t))return gl(t);try{return se(t).format(e)}catch(r){return console.error(r),t}}function ml(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{if(typeof t!="number")throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}`);return new fl(e).getColor(t)}catch(r){return console.error(r),"black"}return"black"}function ea(e,t){const{color:r,data_field:i,aggregation:s,size:o,weight:u}=e,l=St(t,i,s),d=Je(e,l);return n(a.Text,{sx:{fontSize:o,display:"inline"},color:ml(r,l),weight:u,children:d})}function bl(e,t){const r={};return e.forEach(i=>{const s=i.name;r[s]=ea(i,t)}),r}function yl(e){return e.split(" ").map((t,r)=>p(b.Fragment,{children:[t," "]},r))}function vl(e){const r=e.replaceAll("<br />","<br/>").replaceAll(`
35
+ `,"<br/>").split("<br/>");return r.map((s,o)=>{const u=[yl(s)];return o!==r.length-1&&u.push(n("br",{})),u}).flat().filter(s=>s!==void 0)}function Sn(e){return vl(e)}function Tt(e,t,r){const i=bl(t,r),s=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{const u=s.exec(o);if(!u)return Sn(o);const l=i[u[1]];if(!l)return Sn(o);const d=u[2]??"";return p(P,{children:[l,Sn(d)]})})}function xl(e,t){const r={};return e.forEach(i=>{const{name:s,data_field:o,aggregation:u}=i,l=St(t,o,u);r[s]=Je(i,l)}),r}function jt(e,t,r){const i=xl(t,r),s=/^\{(.+)\}(.*)$/;return e.split("$").map(o=>{const u=s.exec(o);if(!u)return o;const l=i[u[1]];if(!l)return o;const d=u[2]??"";return`${l}${d}`}).join("")}function ut({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}const Tn=["max","q3","median","q1","min"];function Cl({config:e}){return{show:!0,bottom:0,left:"center",type:"scroll",data:[{name:"Box",icon:"roundRect",itemStyle:{color:e.color}},{name:"Outlier",icon:"circle",itemStyle:{color:"#2F8CC0"}}]}}function wl(e,t){return`
36
36
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
37
37
  <div style="${Ze(e.x_axis.axisLabel.overflow.in_tooltip)}">${t[0]}</div>
38
38
  </div>
@@ -44,11 +44,11 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
44
44
  </tr>
45
45
  </tbody>
46
46
  </table>
47
- `}const bl=e=>t=>{const{componentSubType:r,value:i}=t;if(r==="scatter")return ml(e,i);const s=Tn.map(l=>`
47
+ `}const _l=e=>t=>{const{componentSubType:r,value:i}=t;if(r==="scatter")return wl(e,i);const s=Tn.map(l=>`
48
48
  <tr>
49
- <th style="text-align: right; padding: 0 1em;">${y.capitalize(l)}</th>
49
+ <th style="text-align: right; padding: 0 1em;">${v.capitalize(l)}</th>
50
50
  <td style="text-align: left; padding: 0 1em;">
51
- ${ue(i[l]).format(e.y_axis.label_formatter)}
51
+ ${se(i[l]).format(e.y_axis.label_formatter)}
52
52
  </td>
53
53
  </tr>`);return`
54
54
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
@@ -59,13 +59,13 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
59
59
  ${s.join("")}
60
60
  </tbody>
61
61
  </table>
62
- `};function vl({config:e}){return{trigger:"item",confine:!0,formatter:bl(e)}}function yl(e,t){return Object.entries(e).map(([i,s])=>{const o=s.map(C=>C[t]).sort((C,S)=>C-S),u=bt.quantile(o,.25)??0,l=bt.quantile(o,.5)??0,d=bt.quantile(o,.75)??0,c=d-u,f=u-1.5*c,g=d+1.5*c,h=Math.max(o[0],f),b=Math.min(y.last(o)??0,g),w=o.filter(C=>C<h||C>b).map(C=>[i,C]);return{name:i,min:h,q1:u,median:l,q3:d,max:b,outliers:w}})}function xl(e,t,r){const i=t.reduce((s,o)=>{const u=ot(o,r);return s[o.name]=Je(o,u),s},{});return e.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 jt(s.template,t,r)},position:"insideEndTop"}}}))}function Cl({config:e,data:t,variables:r}){const{x_axis:i,y_axis:s,color:o,reference_lines:u}=e,l=y.groupBy(t,i.data_key),d=yl(l,s.data_key),c=d.map(g=>g.outliers).flat(),f=Ke(i.axisLabel.overflow.on_axis);return{dataset:[{source:d},{source:c}],legend:gl({config:e}),tooltip:vl({config:e}),xAxis:[{type:"category",name:i.name,axisTick:{show:!0,alignWithLabel:!0},axisLabel:{...i.axisLabel,...f,formatter:lt(i.axisLabel.formatter)}}],yAxis:[{name:s.name,axisLine:{show:!0},axisLabel:{formatter:function(g){return ue(g).format(s.label_formatter)}}}],series:[{name:"Box",type:"boxplot",itemStyle:{color:o,borderColor:"#2F8CC0",borderWidth:2},emphasis:{disabled:!0},boxWidth:[10,40],datasetIndex:0,encode:{y:Tn,x:"name",itemName:["name"],tooltip:Tn}},{name:"Outlier",type:"scatter",symbolSize:5,itemStyle:{color:"#2F8CC0"},emphasis:{scale:2},datasetIndex:1},...xl(u,r,t)]}}oe.use([q.DataZoomComponent,de.BoxplotChart,q.MarkLineComponent,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer]);function wl({context:e,instance:t}){const{value:r}=j(e.instanceData,"config"),{variables:i}=e,s=e.data,{width:o,height:u}=e.viewport,l=y.defaults({},r,_n),d=Ge({vizManager:e.vizManager,instance:t}),c=Oe(d.triggerManager,Xi.id),f=m.useMemo(()=>y.keyBy(s,l.x_axis.data_key),[s,l.x_axis.data_key]),g=m.useCallback(w=>{const C=y.get(f,w.name,{error:"rowData is not found"});c.forEach(S=>{d.runInteraction(S.id,{...w,rowData:C})})},[f,c,d]),h=m.useMemo(()=>({click:g}),[g]),b=m.useMemo(()=>Cl({config:l,data:s,variables:i}),[l,s,i]);return!r||!o||!u?null:n(Me,{echarts:oe,option:b,style:{width:o,height:u},onEvents:h,notMerge:!0,theme:"merico-light"})}function _l({control:e,index:t,remove:r,variableOptions:i}){return p(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:s})=>n(a.Select,{label:"Value",required:!0,data:i,sx:{flex:1},...s})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:s})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...s})}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(t),sx:{position:"absolute",top:15,right:5},children:n(D.Trash,{size:16})})]},t)}function Sl({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((f,g)=>({...f,...u[g]})),d=()=>s({name:"",template:"",variable_key:""}),c=m.useMemo(()=>r.map(f=>({label:f.name,value:f.name})),[r]);return p(a.Stack,{children:[l.map((f,g)=>n(_l,{control:e,index:g,remove:o,variableOptions:c})),n(a.Group,{position:"center",mt:"xs",children:n(a.Button,{onClick:d,children:"Add a Reference Line"})})]})}const Tl=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(_e,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Rt=m.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e);m.useEffect(()=>{l(e)},[e]);const d=b=>{l({...u,enabled:b})},c=()=>{o();const{enabled:b,func_content:w}=u,C={enabled:b,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=b=>{l(w=>({...w,func_content:b}))},h=()=>{g(Be.func_content)};return p(O,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:b=>d(b.currentTarget.checked)}),n(Tl,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})}),Dl=({control:e,data:t,watch:r})=>(r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.name",control:e,render:({field:i})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.data_key",control:e,render:({field:i})=>n(U,{label:"X Axis Data Field",required:!0,data:t,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:i})=>n(Rt,{data:t,...i})})]}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:i})=>n(nt,{...i})})]})),kl=({control:e,data:t,watch:r})=>(r(["y_axis"]),p(O,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.name",control:e,render:({field:i})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...i})}),n(x.Controller,{name:"y_axis.data_key",control:e,render:({field:i})=>n(U,{label:"Y Axis Data Field",required:!0,data:t,sx:{flex:1},...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:"y_axis.label_formatter",control:e,render:({field:i})=>n(Ve,{...i})})]})]}));function Il({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,{variables:s}=e,o=m.useMemo(()=>y.defaults({},t,_n),[t]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]),d(["x_axis","y_axis","reference_lines","color"]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,t),[g,t]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Style",children:"Style"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(Dl,{control:u,data:i,watch:d})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(kl,{control:u,data:i,watch:d})}),n(a.Tabs.Panel,{value:"Style",children:p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"color",control:u,render:({field:b})=>n(Se,{...b})})]})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(Sl,{variables:s,control:u,watch:d})})]})]})})}function Ml(e){return y.omit(e,"variables")}function Al(e){const{label_formatter:t=De,...r}=e.y_axis;return{...e,y_axis:{...r,label_formatter:t}}}function zl(e){const t={rotate:0,formatter:{...Be}},{axisLabel:r=t,...i}=e.x_axis;return{...e,x_axis:{...i,axisLabel:r}}}function $l(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return y.defaultsDeep(t,e)}function El(e){delete e.config;const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,i={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return y.defaultsDeep(i,e)}class Ll extends ge{constructor(){super(...arguments);P(this,"VERSION",6)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:i})=>{const{config:s}=r;return(s.variables||[]).forEach(u=>{i.variables.find(l=>l.name===u.name)||i.addVariable(u)}),{...r,version:2,config:Ml(s)}}),this.version(3,r=>{const{config:i}=r;return{...r,version:3,config:Al(i)}}),this.version(4,r=>{const{config:i}=r;return{...r,version:4,config:zl(i)}}),this.version(5,r=>{const{config:i}=r;return{...r,version:5,config:$l(i)}}),this.version(6,r=>{const{config:i}=r;return{...r,version:6,config:El(i)}})}}const Pl={displayName:"Boxplot Chart",displayGroup:"ECharts-based charts",migrator:new Ll,name:"boxplot",viewRender:wl,configRender:Il,createConfig(){return{version:6,config:y.cloneDeep(_n)}},triggers:[Xi]},Hi={id:"builtin:button:click-button",displayName:"Click Button",nameRender:Vl,configRender:Ol,payload:[]};function Ol(e){return n(O,{})}function Vl(e){return n(a.Text,{children:"Click this button"})}const Dn={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},Bl={left:"flex-start",center:"center",right:"flex-end"},Nl={top:"flex-start",center:"center",bottom:"flex-end"},Gl=T.observer(({context:e,instance:t})=>{const r=Ge({vizManager:e.vizManager,instance:t}),i=Oe(r.triggerManager,Hi.id),s=B(),{value:o}=j(e.instanceData,"config"),u=m.useMemo(()=>y.defaultsDeep({},o,Dn),[o]),{content:l,horizontal_align:d,vertical_align:c,...f}=u,{width:g,height:h}=e.viewport,b={filters:s.filters.values,context:s.context.current},w=()=>{i.forEach(C=>{r.runInteraction(C.id,{})})};return n(a.Center,{sx:{width:g,height:h,justifyContent:Bl[d],alignItems:Nl[c]},children:n(a.Button,{...f,onClick:w,children:y.template(l)(b)})})}),ql=({value:e,onChange:t,label:r})=>{const i=a.useMantineTheme(),s=m.useCallback(u=>()=>t(u),[t]),o=u=>e===u;return p(a.Stack,{spacing:2,children:[n(a.Text,{size:14,sx:{fontWeight:500},children:r}),n(a.Group,{position:"left",spacing:"xs",children:Object.keys(i.colors).map(u=>{const l=i.colors[u][6];return n(a.ColorSwatch,{color:l,onClick:s(u),radius:4,size:26,sx:{cursor:"pointer"},children:o(u)&&n(a.CheckIcon,{width:10,color:"white"})},u)})})]})},Fl=a.MANTINE_SIZES.map(e=>({label:e.toUpperCase(),value:e})),Wl=({label:e,value:t,onChange:r})=>n(a.Select,{data:Fl,label:e,value:t,onChange:r}),jl=[{label:"Filled",value:"filled"},{label:"Outline",value:"outline"},{label:"Light",value:"light"},{label:"White",value:"white"},{label:"Default",value:"default"},{label:"Subtle",value:"subtle"},{label:"Gradient",value:"gradient",disabled:!0}],Rl=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Yl=[{label:"Top",value:"top"},{label:"Center",value:"center"},{label:"Bottom",value:"bottom"}];function Ql({context:e}){const{value:t,set:r}=j(e.instanceData,"config");e.data;const i=m.useMemo(()=>y.defaultsDeep({},t,Dn),[t]),s=i;m.useEffect(()=>{!y.isEqual(i,s)&&(console.log("config malformed, resetting to defaults",i,s),r(s))},[i,s]);const{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});m.useEffect(()=>{c(s)},[s]);const f=d(),g=m.useMemo(()=>!y.isEqual(f,i),[f,i]);return l(["content","variant","color","size","compact","horizontal_align","vertical_align"]),p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Stack,{children:[n(x.Controller,{control:o,name:"content",render:({field:h})=>n(a.TextInput,{label:"Content Template",description:"Filter values & context entries are supported",...h,required:!0})}),n(a.Divider,{mt:"xs",mb:0,label:"Styles",labelPosition:"center",variant:"dashed"}),p(a.SimpleGrid,{cols:2,children:[n(x.Controller,{control:o,name:"variant",render:({field:h})=>n(a.Select,{label:"Variant",data:jl,...h})}),n(x.Controller,{control:o,name:"color",render:({field:h})=>n(ql,{label:"Theme",...h})})]}),p(a.SimpleGrid,{cols:2,children:[n(x.Controller,{control:o,name:"size",render:({field:h})=>n(Wl,{label:"Size",...h})}),n(x.Controller,{control:o,name:"compact",render:({field:h})=>n(a.Checkbox,{label:"Compact",checked:h.value,onChange:b=>h.onChange(b.currentTarget.checked),mt:26})})]}),p(a.SimpleGrid,{cols:2,children:[n(x.Controller,{control:o,name:"horizontal_align",render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:Rl,...h})}),n(x.Controller,{control:o,name:"vertical_align",render:({field:h})=>n(a.Select,{label:"Vertical Alignment",data:Yl,...h})})]})]})]})}class Ul extends ge{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{horizontal_align:i="left",vertical_align:s="center",...o}=r.config;return{...r,version:2,config:{...o,horizontal_align:i,vertical_align:s}}})}}const Xl={displayName:"Button",displayGroup:"Others",migrator:new Ul,name:"button",viewRender:Gl,configRender:Ql,createConfig(){return{version:2,config:y.cloneDeep(Dn)}},triggers:[Hi]},kn={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Kl,configRender:Zl,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function Zl(e){return n(O,{})}function Kl(e){return n(a.Text,{children:"Click chart's series"})}const ut={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1},In={regressions:[],series:[],stats:{templates:{bottom:"",top:""}},x_axis:{axisLabel:{rotate:0,formatter:{...Be},overflow:je}},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:De}],reference_lines:[],reference_areas:[],dataZoom:ut};function Mn(e){const t=[];return e.x_axis_scroll&&t.push({type:"inside",xAxisIndex:[0],filterMode:"none",minSpan:1}),e.y_axis_scroll&&t.push({type:"inside",yAxisIndex:[0],filterMode:"none",minSpan:1}),e.x_axis_slider&&t.push({type:"slider",xAxisIndex:[0],filterMode:"none",bottom:"auto",top:0,height:15,moveHandleSize:0,showDataShadow:!1,minSpan:1}),t}function Jl(e){const t=e.y_axes.some(s=>!!s.name);let r=10;t&&(r+=20),e.dataZoom.x_axis_slider&&(r+=20);let i=5;return e.x_axis_name&&(i+=15),e.series.some(s=>!s.hide_in_legend)&&(i+=20),{top:r,bottom:i}}function Hl(e){return e!=="line"?{}:{itemStyle:{opacity:0}}}function eu(e){switch(e){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function tu(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(r=>!r.hide_in_legend).map(({name:r,type:i})=>({name:r,icon:eu(i),...Hl(i)})),t}function ea(e,t){switch(e.config.method){case"linear":return[...Ue.regressionLinear()(t)];case"exponential":return[...Ue.regressionExp()(t)];case"logarithmic":return[...Ue.regressionLog()(t)];case"polynomial":return[...Ue.regressionPoly().order(e.config.order)(t)];default:return[]}}function nu(e,t,r,i){const{transform:s,plot:o}=e,u={...o,name:t,data:ea(s,i),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return r&&(u.custom={type:"regression-line",targetSeries:r}),{series:[u],xaxes:[]}}function ru({regressions:e=[],x_axis_data_key:t},r){const i=[];if(r.length===0)return{regressionSeries:i};function s(o,u,l,d){const{series:c}=nu(o,u,l,d);i.push(...c)}return e.forEach(o=>{const{name:u,group_by_key:l}=o;if(!l||l===t){const c=r.map((f,g)=>[g,Number(f[o.y_axis_data_key])]);s(o,u,"",c);return}const d=y.groupBy(r,l);Object.entries(d).forEach(([c,f])=>{const g=f.map((b,w)=>[w,Number(b[o.y_axis_data_key])]),h=`${u} (${c})`;s(o,h,c,g)})}),{regressionSeries:i}}function iu(e,t){return e.map(r=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:r.color},data:[[{yAxis:t[r.y_keys.upper]},{yAxis:t[r.y_keys.lower]}]],silent:!0}}))}function au(e,t,r,i){return e.map(s=>{const o=s.orientation==="horizontal",u=o?"yAxis":"xAxis",l=o?"insideEndTop":"end";return{name:s.name,type:"line",hide_in_legend:!s.show_in_legend,yAxisIndex:s.yAxisIndex,data:[],lineStyle:s.lineStyle,markLine:{data:[{name:s.name,[u]:Number(r[s.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:s.lineStyle,label:{formatter:function(){return s.template?jt(s.template,t,i):""},position:l}}}})}function su({type:e,...t},r,i,s){if(!e)return 10;if(e==="static"){const{size:l}=t;return l}const{func_content:o}=t,u=y.keyBy(r,i);return(l,d)=>{let c;d.name?c=u[d.name]:c=r[d.dataIndex];try{return new Function(`return ${o}`)()({rowData:c,params:d,variables:s},{lodash:y,interpolate:Pt.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function An(e,t,r){return e.map(i=>[i[t],i[r]])}function ou(e,t,r,i){const s=An(t,r,i);return y.unionBy(s,e,0)}function lu({dataTemplate:e,data:t,x_axis_data_key:r,y_axis_data_key:i,valueTypedXAxis:s}){return s?ou(e,t,r,i):t.map(o=>o[i])}function uu({dataTemplate:e,data:t,aggregation_on_value:r,x_axis_data_key:i,y_axis_data_key:s,valueTypedXAxis:o}){if(!r||r.type==="none")return lu({dataTemplate:e,data:t,x_axis_data_key:i,y_axis_data_key:s,valueTypedXAxis:o});const u=An(t,i,s),l=y.groupBy(u,"0");return Object.entries(l).map(([c,f])=>{const g=_t(f,"1",r);return[c,g]})}function du({group_by_key:e,data:t,x_axis_data_key:r,y_axis_data_key:i}){const s=y.groupBy(t,e);return Object.entries(s).forEach(([o,u])=>{s[o]=An(u,r,i)}),s}function cu({x_axis_data_key:e},{y_axis_data_key:t,yAxisIndex:r,label_position:i,name:s,group_by_key:o,aggregation_on_value:u,stack:l,color:d,display_name_on_line:c,symbolSize:f,hide_in_legend:g,...h},b,w,C,S,A){const z={label:{show:!!i,position:i,formatter:A[r??"default"]},name:s,xAxisId:"main-x-axis",yAxisIndex:r,stack:l,color:d,symbolSize:su(f,C,e,S),hide_in_legend:g,labelLayout:{hideOverlap:!0},...h};if(c&&(z.endLabel={show:!0,formatter:s,offset:[-12,12],align:"right"}),!o||o===e)return z.data=uu({dataTemplate:b,data:C,aggregation_on_value:u,x_axis_data_key:e,y_axis_data_key:t,valueTypedXAxis:w}),z;const G=du({group_by_key:o,data:C,x_axis_data_key:e,y_axis_data_key:t});return Object.entries(G).map(([F,L])=>{const $=y.cloneDeep(z);return $.name=F,$.color=void 0,$.data=L,$})}function pu(e,t,r,i,s,o,u){const l=t.map(c=>[c,0]);return e.series.map(c=>cu(e,c,l,r,i,u,s)).flat().concat(au(e.reference_lines,o,u,i)).concat(iu(e.reference_areas,u))}function hu(e,t){const r=e.find(o=>o.axisDim==="x"&&o.axisId==="main-x-axis");if(!r)return"";const{axisValue:i,axisIndex:s}=r;return lt(t.x_axis.axisLabel.formatter)(i,s)}function fu(e,t,r){const i=t.reduce((s,{yAxisIndex:o,name:u})=>(s[u]=o,s),{});return{formatter:function(s){const o=Array.isArray(s)?s:[s];if(o.length===0)return"";const u=o.map(({seriesName:c,marker:f,value:g})=>{if(Array.isArray(g)&&g.length===2&&(g=g[1]),!c)return g;const h=i[c],b=r[h]??r.default;return`
62
+ `};function Sl({config:e}){return{trigger:"item",confine:!0,formatter:_l(e)}}function Tl(e,t){return Object.entries(e).map(([i,s])=>{const o=s.map(C=>C[t]).sort((C,S)=>C-S),u=yt.quantile(o,.25)??0,l=yt.quantile(o,.5)??0,d=yt.quantile(o,.75)??0,c=d-u,f=u-1.5*c,g=d+1.5*c,h=Math.max(o[0],f),m=Math.min(v.last(o)??0,g),w=o.filter(C=>C<h||C>m).map(C=>[i,C]);return{name:i,min:h,q1:u,median:l,q3:d,max:m,outliers:w}})}function kl(e,t,r){const i=t.reduce((s,o)=>{const u=lt(o,r);return s[o.name]=Je(o,u),s},{});return e.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 jt(s.template,t,r)},position:"insideEndTop"}}}))}function Dl({config:e,data:t,variables:r}){const{x_axis:i,y_axis:s,color:o,reference_lines:u}=e,l=v.groupBy(t,i.data_key),d=Tl(l,s.data_key),c=d.map(g=>g.outliers).flat(),f=Ke(i.axisLabel.overflow.on_axis);return{dataset:[{source:d},{source:c}],legend:Cl({config:e}),tooltip:Sl({config:e}),xAxis:[{type:"category",name:i.name,axisTick:{show:!0,alignWithLabel:!0},axisLabel:{...i.axisLabel,...f,formatter:ut(i.axisLabel.formatter)}}],yAxis:[{name:s.name,axisLine:{show:!0},axisLabel:{formatter:function(g){return se(g).format(s.label_formatter)}}}],series:[{name:"Box",type:"boxplot",itemStyle:{color:o,borderColor:"#2F8CC0",borderWidth:2},emphasis:{disabled:!0},boxWidth:[10,40],datasetIndex:0,encode:{y:Tn,x:"name",itemName:["name"],tooltip:Tn}},{name:"Outlier",type:"scatter",symbolSize:5,itemStyle:{color:"#2F8CC0"},emphasis:{scale:2},datasetIndex:1},...kl(u,r,t)]}}le.use([B.DataZoomComponent,de.BoxplotChart,B.MarkLineComponent,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer]);function Il({context:e,instance:t}){const{value:r}=W(e.instanceData,"config"),{variables:i}=e,s=e.data,{width:o,height:u}=e.viewport,l=v.defaults({},r,_n),d=Ge({vizManager:e.vizManager,instance:t}),c=Pe(d.triggerManager,Ki.id),f=b.useMemo(()=>v.keyBy(s,l.x_axis.data_key),[s,l.x_axis.data_key]),g=b.useCallback(w=>{const C=v.get(f,w.name,{error:"rowData is not found"});c.forEach(S=>{d.runInteraction(S.id,{...w,rowData:C})})},[f,c,d]),h=b.useMemo(()=>({click:g}),[g]),m=b.useMemo(()=>Dl({config:l,data:s,variables:i}),[l,s,i]);return!r||!o||!u?null:n(De,{echarts:le,option:m,style:{width:o,height:u},onEvents:h,notMerge:!0,theme:"merico-light"})}function Ml({control:e,index:t,remove:r,variableOptions:i}){return p(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:s})=>n(a.Select,{label:"Value",required:!0,data:i,sx:{flex:1},...s})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:s})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...s})}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(t),sx:{position:"absolute",top:15,right:5},children:n(k.Trash,{size:16})})]},t)}function Al({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((f,g)=>({...f,...u[g]})),d=()=>s({name:"",template:"",variable_key:""}),c=b.useMemo(()=>r.map(f=>({label:f.name,value:f.name})),[r]);return p(a.Stack,{children:[l.map((f,g)=>n(Ml,{control:e,index:g,remove:o,variableOptions:c})),n(a.Group,{position:"center",mt:"xs",children:n(a.Button,{onClick:d,children:"Add a Reference Line"})})]})}const $l=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(we,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Yt=b.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e);b.useEffect(()=>{l(e)},[e]);const d=m=>{l({...u,enabled:m})},c=()=>{o();const{enabled:m,func_content:w}=u,C={enabled:m,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=m=>{l(w=>({...w,func_content:m}))},h=()=>{g(Be.func_content)};return p(P,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:m=>d(m.currentTarget.checked)}),n($l,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})}),zl=({control:e,data:t,watch:r})=>(r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.name",control:e,render:({field:i})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.data_key",control:e,render:({field:i})=>n(Y,{label:"X Axis Data Field",required:!0,data:t,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:i})=>n(Yt,{data:t,...i})})]}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:i})=>n(nt,{...i})})]})),El=({control:e,data:t,watch:r})=>(r(["y_axis"]),p(P,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.name",control:e,render:({field:i})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...i})}),n(x.Controller,{name:"y_axis.data_key",control:e,render:({field:i})=>n(Y,{label:"Y Axis Data Field",required:!0,data:t,sx:{flex:1},...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:"y_axis.label_formatter",control:e,render:({field:i})=>n(Ve,{...i})})]})]}));function Ll({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,{variables:s}=e,o=b.useMemo(()=>v.defaults({},t,_n),[t]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]),d(["x_axis","y_axis","reference_lines","color"]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,t),[g,t]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Style",children:"Style"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(zl,{control:u,data:i,watch:d})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(El,{control:u,data:i,watch:d})}),n(a.Tabs.Panel,{value:"Style",children:p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"color",control:u,render:({field:m})=>n(Se,{...m})})]})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(Al,{variables:s,control:u,watch:d})})]})]})})}function Ol(e){return v.omit(e,"variables")}function Pl(e){const{label_formatter:t=Ie,...r}=e.y_axis;return{...e,y_axis:{...r,label_formatter:t}}}function Vl(e){const t={rotate:0,formatter:{...Be}},{axisLabel:r=t,...i}=e.x_axis;return{...e,x_axis:{...i,axisLabel:r}}}function Bl(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return v.defaultsDeep(t,e)}function Nl(e){delete e.config;const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,i={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return v.defaultsDeep(i,e)}class Gl extends he{constructor(){super(...arguments);O(this,"VERSION",6)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:i})=>{const{config:s}=r;return(s.variables||[]).forEach(u=>{i.variables.find(l=>l.name===u.name)||i.addVariable(u)}),{...r,version:2,config:Ol(s)}}),this.version(3,r=>{const{config:i}=r;return{...r,version:3,config:Pl(i)}}),this.version(4,r=>{const{config:i}=r;return{...r,version:4,config:Vl(i)}}),this.version(5,r=>{const{config:i}=r;return{...r,version:5,config:Bl(i)}}),this.version(6,r=>{const{config:i}=r;return{...r,version:6,config:Nl(i)}})}}const ql={displayName:"Boxplot Chart",displayGroup:"ECharts-based charts",migrator:new Gl,name:"boxplot",viewRender:Il,configRender:Ll,createConfig(){return{version:6,config:v.cloneDeep(_n)}},triggers:[Ki]},ta={id:"builtin:button:click-button",displayName:"Click Button",nameRender:Wl,configRender:Fl,payload:[]};function Fl(e){return n(P,{})}function Wl(e){return n(a.Text,{children:"Click this button"})}const kn={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},jl={left:"flex-start",center:"center",right:"flex-end"},Yl={top:"flex-start",center:"center",bottom:"flex-end"},Rl=T.observer(({context:e,instance:t})=>{const r=Ge({vizManager:e.vizManager,instance:t}),i=Pe(r.triggerManager,ta.id),s=N(),{value:o}=W(e.instanceData,"config"),u=b.useMemo(()=>v.defaultsDeep({},o,kn),[o]),{content:l,horizontal_align:d,vertical_align:c,...f}=u,{width:g,height:h}=e.viewport,m={filters:s.filters.values,context:s.context.current},w=()=>{i.forEach(C=>{r.runInteraction(C.id,{})})};return n(a.Center,{sx:{width:g,height:h,justifyContent:jl[d],alignItems:Yl[c]},children:n(a.Button,{...f,onClick:w,children:v.template(l)(m)})})}),Ql=({value:e,onChange:t,label:r})=>{const i=a.useMantineTheme(),s=b.useCallback(u=>()=>t(u),[t]),o=u=>e===u;return p(a.Stack,{spacing:2,children:[n(a.Text,{size:14,sx:{fontWeight:500},children:r}),n(a.Group,{position:"left",spacing:"xs",children:Object.keys(i.colors).map(u=>{const l=i.colors[u][6];return n(a.ColorSwatch,{color:l,onClick:s(u),radius:4,size:26,sx:{cursor:"pointer"},children:o(u)&&n(a.CheckIcon,{width:10,color:"white"})},u)})})]})},Ul=a.MANTINE_SIZES.map(e=>({label:e.toUpperCase(),value:e})),Xl=({label:e,value:t,onChange:r})=>n(a.Select,{data:Ul,label:e,value:t,onChange:r}),Zl=[{label:"Filled",value:"filled"},{label:"Outline",value:"outline"},{label:"Light",value:"light"},{label:"White",value:"white"},{label:"Default",value:"default"},{label:"Subtle",value:"subtle"},{label:"Gradient",value:"gradient",disabled:!0}],Kl=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Jl=[{label:"Top",value:"top"},{label:"Center",value:"center"},{label:"Bottom",value:"bottom"}];function Hl({context:e}){const{value:t,set:r}=W(e.instanceData,"config");e.data;const i=b.useMemo(()=>v.defaultsDeep({},t,kn),[t]),s=i;b.useEffect(()=>{!v.isEqual(i,s)&&(console.log("config malformed, resetting to defaults",i,s),r(s))},[i,s]);const{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,i),[f,i]);return l(["content","variant","color","size","compact","horizontal_align","vertical_align"]),p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Stack,{children:[n(x.Controller,{control:o,name:"content",render:({field:h})=>n(a.TextInput,{label:"Content Template",description:"Filter values & context entries are supported",...h,required:!0})}),n(a.Divider,{mt:"xs",mb:0,label:"Styles",labelPosition:"center",variant:"dashed"}),p(a.SimpleGrid,{cols:2,children:[n(x.Controller,{control:o,name:"variant",render:({field:h})=>n(a.Select,{label:"Variant",data:Zl,...h})}),n(x.Controller,{control:o,name:"color",render:({field:h})=>n(Ql,{label:"Theme",...h})})]}),p(a.SimpleGrid,{cols:2,children:[n(x.Controller,{control:o,name:"size",render:({field:h})=>n(Xl,{label:"Size",...h})}),n(x.Controller,{control:o,name:"compact",render:({field:h})=>n(a.Checkbox,{label:"Compact",checked:h.value,onChange:m=>h.onChange(m.currentTarget.checked),mt:26})})]}),p(a.SimpleGrid,{cols:2,children:[n(x.Controller,{control:o,name:"horizontal_align",render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:Kl,...h})}),n(x.Controller,{control:o,name:"vertical_align",render:({field:h})=>n(a.Select,{label:"Vertical Alignment",data:Jl,...h})})]})]})]})}class eu extends he{constructor(){super(...arguments);O(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{horizontal_align:i="left",vertical_align:s="center",...o}=r.config;return{...r,version:2,config:{...o,horizontal_align:i,vertical_align:s}}})}}const tu={displayName:"Button",displayGroup:"Others",migrator:new eu,name:"button",viewRender:Rl,configRender:Hl,createConfig(){return{version:2,config:v.cloneDeep(kn)}},triggers:[ta]},Dn={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:ru,configRender:nu,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function nu(e){return n(P,{})}function ru(e){return n(a.Text,{children:"Click chart's series"})}const dt={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1},In={regressions:[],series:[],stats:{templates:{bottom:"",top:""}},x_axis:{axisLabel:{rotate:0,formatter:{...Be},overflow:je}},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:Ie}],reference_lines:[],reference_areas:[],dataZoom:dt};function Mn(e){const t=[];return e.x_axis_scroll&&t.push({type:"inside",xAxisIndex:[0],filterMode:"none",minSpan:1}),e.y_axis_scroll&&t.push({type:"inside",yAxisIndex:[0],filterMode:"none",minSpan:1}),e.x_axis_slider&&t.push({type:"slider",xAxisIndex:[0],filterMode:"none",bottom:"auto",top:0,height:15,moveHandleSize:0,showDataShadow:!1,minSpan:1}),t}function iu(e){const t=e.y_axes.some(s=>!!s.name);let r=10;t&&(r+=20),e.dataZoom.x_axis_slider&&(r+=20);let i=5;return e.x_axis_name&&(i+=15),e.series.some(s=>!s.hide_in_legend)&&(i+=20),{top:r,bottom:i}}function au(e){return e!=="line"?{}:{itemStyle:{opacity:0}}}function su(e){switch(e){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function ou(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(r=>!r.hide_in_legend).map(({name:r,type:i})=>({name:r,icon:su(i),...au(i)})),t}function na(e,t){switch(e.config.method){case"linear":return[...Ue.regressionLinear()(t)];case"exponential":return[...Ue.regressionExp()(t)];case"logarithmic":return[...Ue.regressionLog()(t)];case"polynomial":return[...Ue.regressionPoly().order(e.config.order)(t)];default:return[]}}function lu(e,t,r,i){const{transform:s,plot:o}=e,u={...o,name:t,data:na(s,i),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return r&&(u.custom={type:"regression-line",targetSeries:r}),{series:[u],xaxes:[]}}function uu({regressions:e=[],x_axis_data_key:t},r){const i=[];if(r.length===0)return{regressionSeries:i};function s(o,u,l,d){const{series:c}=lu(o,u,l,d);i.push(...c)}return e.forEach(o=>{const{name:u,group_by_key:l}=o;if(!l||l===t){const c=r.map((f,g)=>[g,Number(f[o.y_axis_data_key])]);s(o,u,"",c);return}const d=v.groupBy(r,l);Object.entries(d).forEach(([c,f])=>{const g=f.map((m,w)=>[w,Number(m[o.y_axis_data_key])]),h=`${u} (${c})`;s(o,h,c,g)})}),{regressionSeries:i}}function du(e,t){return e.map(r=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:r.color},data:[[{yAxis:t[r.y_keys.upper]},{yAxis:t[r.y_keys.lower]}]],silent:!0}}))}function cu(e,t,r,i){return e.map(s=>{const o=s.orientation==="horizontal",u=o?"yAxis":"xAxis",l=o?"insideEndTop":"end";return{name:s.name,type:"line",hide_in_legend:!s.show_in_legend,yAxisIndex:s.yAxisIndex,data:[],lineStyle:s.lineStyle,markLine:{data:[{name:s.name,[u]:Number(r[s.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:s.lineStyle,label:{formatter:function(){return s.template?jt(s.template,t,i):""},position:l}}}})}function pu({type:e,...t},r,i,s){if(!e)return 10;if(e==="static"){const{size:l}=t;return l}const{func_content:o}=t,u=v.keyBy(r,i);return(l,d)=>{let c;d.name?c=u[d.name]:c=r[d.dataIndex];try{return new Function(`return ${o}`)()({rowData:c,params:d,variables:s},{lodash:v,interpolate:at.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function An(e,t,r){return e.map(i=>[i[t],i[r]])}function hu(e,t,r,i){const s=An(t,r,i);return v.unionBy(s,e,0)}function fu({dataTemplate:e,data:t,x_axis_data_key:r,y_axis_data_key:i,valueTypedXAxis:s}){return s?hu(e,t,r,i):t.map(o=>o[i])}function gu({dataTemplate:e,data:t,aggregation_on_value:r,x_axis_data_key:i,y_axis_data_key:s,valueTypedXAxis:o}){if(!r||r.type==="none")return fu({dataTemplate:e,data:t,x_axis_data_key:i,y_axis_data_key:s,valueTypedXAxis:o});const u=An(t,i,s),l=v.groupBy(u,"0");return Object.entries(l).map(([c,f])=>{const g=St(f,"1",r);return[c,g]})}function mu({group_by_key:e,data:t,x_axis_data_key:r,y_axis_data_key:i}){const s=v.groupBy(t,e);return Object.entries(s).forEach(([o,u])=>{s[o]=An(u,r,i)}),s}function bu({x_axis_data_key:e},{y_axis_data_key:t,yAxisIndex:r,label_position:i,name:s,group_by_key:o,aggregation_on_value:u,stack:l,color:d,display_name_on_line:c,symbolSize:f,hide_in_legend:g,...h},m,w,C,S,A){const $={label:{show:!!i,position:i,formatter:A[r??"default"]},name:s,xAxisId:"main-x-axis",yAxisIndex:r,stack:l,color:d,symbolSize:pu(f,C,e,S),hide_in_legend:g,labelLayout:{hideOverlap:!0},...h};if(c&&($.endLabel={show:!0,formatter:s,offset:[-12,12],align:"right"}),!o||o===e)return $.data=gu({dataTemplate:m,data:C,aggregation_on_value:u,x_axis_data_key:e,y_axis_data_key:t,valueTypedXAxis:w}),$;const q=mu({group_by_key:o,data:C,x_axis_data_key:e,y_axis_data_key:t});return Object.entries(q).map(([F,L])=>{const z=v.cloneDeep($);return z.name=F,z.color=void 0,z.data=L,z})}function yu(e,t,r,i,s,o,u){const l=t.map(c=>[c,0]);return e.series.map(c=>bu(e,c,l,r,i,u,s)).flat().concat(cu(e.reference_lines,o,u,i)).concat(du(e.reference_areas,u))}function vu(e,t){const r=e.find(o=>o.axisDim==="x"&&o.axisId==="main-x-axis");if(!r)return"";const{axisValue:i,axisIndex:s}=r;return ut(t.x_axis.axisLabel.formatter)(i,s)}function xu(e,t,r){const i=t.reduce((s,{yAxisIndex:o,name:u})=>(s[u]=o,s),{});return{formatter:function(s){const o=Array.isArray(s)?s:[s];if(o.length===0)return"";const u=o.map(({seriesName:c,marker:f,value:g})=>{if(Array.isArray(g)&&g.length===2&&(g=g[1]),!c)return g;const h=i[c],m=r[h]??r.default;return`
63
63
  <tr>
64
64
  <td>${f}</td>
65
65
  <th style="text-align: right; padding: 0 1em;">${c}</th>
66
- <td style="text-align: left; padding: 0 1em;">${b({value:g})}</td>
66
+ <td style="text-align: left; padding: 0 1em;">${m({value:g})}</td>
67
67
  </tr>
68
- `}),l=Ze(e.x_axis.axisLabel.overflow.in_tooltip),d=hu(o,e);return`
68
+ `}),l=Ze(e.x_axis.axisLabel.overflow.in_tooltip),d=vu(o,e);return`
69
69
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
70
70
  <div style="${l}">${d}</div>
71
71
  </div>
@@ -74,8 +74,8 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
74
74
  ${u.join("")}
75
75
  </tbody>
76
76
  </table>
77
- `}}}function gu(e){return e.y_axes.reduce((r,{label_formatter:i},s)=>(r[s]=function(u){let l=u;if(typeof u=="object"&&(Array.isArray(u.value)&&u.value.length===2?l=u.value[1]:l=u.value),!i)return l;try{return ue(l).format(i)}catch(d){return console.error(d),l}},r),{default:({value:r})=>r})}function mu(e,t){const r={};return t.map(i=>{const s=ot(i,e);r[i.name]=Je(i,s)}),r}function bu(e,t){const r=t.every(u=>!Number.isNaN(Number(u))),{overflow:i,...s}=e.x_axis.axisLabel,o=Ke(i.on_axis);return[{data:t,name:e.x_axis_name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:r?"value":"category",axisLabel:{...s,...o,formatter:lt(s.formatter)}}]}function vu(e,t){return e.y_axes.map(({nameAlignment:r,min:i,max:s,...o},u)=>{let l=o.position;return l||(l=u>0?"right":"left"),{...o,min:i||void 0,max:s||void 0,position:l,axisLabel:{show:!0,formatter:t[u]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}const yu={tooltip:{trigger:"axis",confine:!0},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0}}],grid:{top:10,left:20,right:15,bottom:25,containLabel:!0}};function xu(e,t,r){const i=mu(t,r),s=gu(e),o=y.uniq(t.map(f=>f[e.x_axis_data_key])),u=o.every(f=>!Number.isNaN(Number(f))),l=pu(e,o,u,t,s,r,i),{regressionSeries:d}=ru(e,t),c={xAxis:bu(e,o),yAxis:vu(e,s),series:[...l,...d],tooltip:fu(e,l,s),grid:Jl(e),legend:tu(l),dataZoom:Mn(e.dataZoom)};return y.defaultsDeep({},c,yu)}function ta(e){const t=e.getModel(),r=t.getSeries().map(i=>{if(!i.option.custom)return i.option;const s=t.getColorFromPalette(i.option.custom.targetSeries,null);return i.option.color=s,i.option});e.setOption({...e.getOption(),series:r})}oe.use([q.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer,q.MarkLineComponent,q.MarkAreaComponent]);function na(e){return e.trim().length>0}function Cu({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=m.useMemo(()=>y.keyBy(t,e.x_axis_data_key),[t,e.x_axis_data_key]),l=Oe(s.triggerManager,kn.id),d=m.useCallback(b=>{const w=y.get(u,b.name,{error:"rowData is not found"});l.forEach(C=>{s.runInteraction(C.id,{...b,rowData:w})})},[u,l,s]),c=m.useMemo(()=>xu(e,t,o),[e,t]),f=m.useRef(),g=m.useMemo(()=>({click:d}),[d]),h=b=>{f.current=b,ta(b)};return m.useEffect(()=>{f.current&&ta(f.current)},[c]),!r||!i?null:n(Me,{echarts:oe,option:c,style:{width:r,height:i},onEvents:g,onChartReady:h,notMerge:!0,theme:"merico-light"})}function wu({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=j(e.instanceData,"config"),{variables:s}=e,o=m.useMemo(()=>y.defaults({},i,In),[i]),u=e.data,{width:l,height:d}=e.viewport,{ref:c,height:f}=ve.useElementSize(),{ref:g,height:h}=ve.useElementSize(),b=m.useMemo(()=>{const{stats:{templates:C}}=o;return{top:St(C.top,s,u),bottom:St(C.bottom,s,u)}},[o,u]),w=Math.max(0,d-f-h);return p(a.Box,{children:[n(a.Text,{ref:c,align:"left",size:"xs",pl:"sm",sx:{display:na(o.stats.templates.top)?"block":"none"},children:Object.values(b.top).map((C,S)=>n(m.Fragment,{children:C},S))}),n(Cu,{variables:s,width:l,height:w,data:u,conf:o,interactionManager:r}),n(a.Text,{ref:g,align:"left",size:"xs",pl:"sm",sx:{display:na(o.stats.templates.bottom)?"block":"none"},children:Object.values(b.bottom).map((C,S)=>n(m.Fragment,{children:C},S))})]})}const zn=m.forwardRef(({value:e,onChange:t},r)=>{const i=s=>o=>{t({...e,[s]:o})};return p(a.Stack,{children:[n(a.Divider,{variant:"dashed",label:"Scroll to Zoom",labelPosition:"center"}),p(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on X Axis",checked:e.x_axis_scroll,onChange:s=>i("x_axis_scroll")(s.currentTarget.checked)})}),n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on Y Axis",checked:e.y_axis_scroll,onChange:s=>i("y_axis_scroll")(s.currentTarget.checked)})})]}),n(a.Divider,{variant:"dashed",label:"Slider for Zooming",labelPosition:"center"}),p(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Slider for X Axis",checked:e.x_axis_slider,onChange:s=>i("x_axis_slider")(s.currentTarget.checked)})}),n(a.Tooltip,{label:"Not available for now, will overlap y-axis's label",children:n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Slider for Y Axis",disabled:!e.y_axis_slider,checked:e.y_axis_slider,onChange:s=>i("y_axis_slider")(s.currentTarget.checked)})})})]})]})}),_u=[{label:"Rectangle",value:"rectangle"}],Su=[{label:"Horizontal",value:"horizontal"}];function Tu({control:e,index:t,remove:r,variableOptions:i}){return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:s})=>n(a.TextInput,{label:"Color",required:!0,sx:{flex:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:s})=>n(a.Select,{label:"Type",required:!0,data:_u,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:s})=>n(a.Select,{label:"Direction",required:!0,data:Su,sx:{flex:1},...s})})]}),n(a.Divider,{variant:"dashed",label:"Data",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:s})=>n(a.Select,{label:"Upper Boundary",required:!0,data:i,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:s})=>n(a.Select,{label:"Lower Boundary",required:!0,data:i,sx:{flex:1},...s})})]}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Area"})]},t)}function Du({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_areas"}),u=t("reference_areas"),l=i.map((f,g)=>({...f,...u[g]})),d=()=>s({name:"",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),c=m.useMemo(()=>r.map(f=>({label:f.name,value:f.name})),[r]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"6px 0px 0px"}},children:[p(a.Tabs.List,{children:[l.map((f,g)=>n(a.Tabs.Tab,{value:g.toString(),children:g+1},g)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((f,g)=>n(a.Tabs.Panel,{value:g.toString(),children:n(Tu,{control:e,index:g,remove:o,variableOptions:c})},g))]})}const ku=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],Iu=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function Mu({control:e,index:t,remove:r,watch:i,variableOptions:s,yAxisOptions:o}){const u=i(`reference_lines.${t}.orientation`);return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:s,sx:{flex:1},...l})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...l})}),p(a.Group,{grow:!0,children:[p(a.Stack,{children:[n(x.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:l})=>n(a.Select,{label:"Orientation",data:Iu,required:!0,sx:{flex:1},...l})}),u==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),u==="horizontal"&&n(x.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:o,disabled:o.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:ku,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:l})=>n(a.Checkbox,{label:"Show in legend",checked:l.value,onChange:d=>l.onChange(d.currentTarget.checked)})}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function Au({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>{s({name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,yAxisIndex:0})},c=m.useMemo(()=>r.map(h=>({label:h.name,value:h.name})),[r]),f=t("y_axes"),g=m.useMemo(()=>f.map(({name:h},b)=>({label:h,value:b.toString()})),[f]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:b.toString(),children:b+1},b)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:b.toString(),children:n(Mu,{control:e,index:b,remove:o,watch:t,variableOptions:c,yAxisOptions:g})},b))]})}const zu=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}],$u=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Eu({control:e,regressionItem:t,index:r,remove:i,yAxisOptions:s,data:o}){const u=t.transform.config.method;return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:`regressions.${r}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`regressions.${r}.group_by_key`,control:e,render:({field:l})=>n(U,{label:"Split into multiple regression lines by this key...",data:o,clearable:!0,sx:{flex:1},...l})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`regressions.${r}.y_axis_data_key`,control:e,render:({field:l})=>n(U,{label:"Value Field",required:!0,data:o,sx:{flex:1},...l})}),n(x.Controller,{name:`regressions.${r}.plot.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`regressions.${r}.transform.config.method`,control:e,render:({field:l})=>n(a.Select,{label:"Method",data:zu,sx:{flex:1},...l})}),u==="polynomial"&&n(x.Controller,{name:`regressions.${r}.transform.config.order`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...l})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Line Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`regressions.${r}.plot.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:$u,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`regressions.${r}.plot.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`regressions.${r}.plot.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Regression Line"})]},r)}function Lu({control:e,watch:t,data:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"regressions"}),u=t("regressions"),l=i.map((g,h)=>({...g,...u[h]})),d=t("y_axes"),c=m.useMemo(()=>d.map(({name:g},h)=>({label:g,value:h.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",lineStyle:{type:"solid",width:1}}});return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((g,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},h)),n(a.Tabs.Tab,{onClick:f,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((g,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(Eu,{regressionItem:g,control:e,index:h,remove:o,yAxisOptions:c,data:r},h)},h))]})}const $n={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
78
- `)}},Pu=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function Ou({control:e,index:t,seriesItem:r}){const i=!!r.barWidth.trim();return p(O,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.stack`,control:e,render:({field:s})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barGap`,control:e,render:({field:s})=>n(a.Select,{label:"Bar Gap",data:Pu,sx:{flexGrow:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:i,sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:i,sx:{flexGrow:1},...s})})]})]})}const Vu=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{children:n(_e,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Bu=({value:e,onChange:t,data:r})=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e),d=()=>{o();const{type:h,func_content:b}=u,w={type:h,func_content:b};l(w),t(w)},c=()=>{o(),l(e)},f=h=>{l(b=>({...b,func_content:h}))},g=()=>{f($n.dynamic.func_content)};return p(O,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(Vu,{value:u.func_content,onChange:f}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},Nu=({value:e,onChange:t,data:r})=>e.type!=="dynamic"?null:n(Bu,{value:e,onChange:t,data:r}),Gu=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=i=>{t({...e,size:i})};return n(O,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:r})})},qu=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],ra=m.forwardRef(({label:e="Size",value:t,onChange:r,data:i},s)=>{const o=u=>{r({...$n[u]})};return p(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:s,label:e,data:qu,value:t.type,onChange:o,sx:{flexGrow:1}}),n(Gu,{value:t,onChange:r}),n(Nu,{value:t,onChange:r,data:i})]})}),Fu=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}],Wu=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function ju({control:e,index:t,seriesItem:r,data:i}){const s=r.showSymbol;return p(O,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Line Settings",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:o})=>n(a.Select,{label:"Line Type",data:Wu,sx:{flexGrow:1},...o})}),n(x.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...o})})]}),p(a.Group,{grow:!0,align:"center",children:[n(x.Controller,{name:`series.${t}.step`,control:e,render:({field:o})=>n(a.Select,{label:"Step",data:Fu,sx:{flexGrow:1,maxWidth:"48%"},...o,value:String(o.value),onChange:u=>{const l=u==="false"?!1:u;o.onChange(l)}})}),p(a.Stack,{children:[n(x.Controller,{name:`series.${t}.smooth`,control:e,render:({field:o})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Smooth Line",checked:o.value,onChange:u=>o.onChange(u.currentTarget.checked)})})}),n(x.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:o})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Display Name on Line",checked:o.value??!1,onChange:u=>o.onChange(u.currentTarget.checked)})})})]})]}),p(a.Stack,{children:[n(x.Controller,{name:`series.${t}.showSymbol`,control:e,render:({field:o})=>n(a.Box,{mt:10,mb:-10,sx:{flexGrow:1},children:n(a.Switch,{label:"Show Symbol on Line",checked:o.value,onChange:u=>o.onChange(u.currentTarget.checked)})})}),s&&n(x.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:o})=>n(ra,{label:"Symbol Size",data:i,...o})})]})]})}function Ru({control:e,index:t,data:r}){return n(x.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:i})=>n(ra,{label:"Size",data:r,...i})})}const Yu=[{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 Qu({control:e,index:t,remove:r,seriesItem:i,yAxisOptions:s,data:o}){const u=i.type;return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[n(a.Stack,{children:n(x.Controller,{name:`series.${t}.type`,control:e,render:({field:l})=>n(a.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"}],...l})})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:l})=>n(U,{label:"Value Field",required:!0,data:o,sx:{flex:1},...l})}),n(x.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:l})=>n(Ft,{label:"Aggregation on Value",value:l.value??wt,onChange:l.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(x.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:l})=>n(U,{label:"Split into multiple series by this key...",data:o,clearable:!0,sx:{flex:1},...l})})}),u==="line"&&n(ju,{index:t,control:e,seriesItem:i,data:o}),u==="bar"&&n(Ou,{index:t,control:e,seriesItem:i}),u==="scatter"&&n(Ru,{index:t,control:e,data:o}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.label_position`,control:e,render:({field:l})=>n(a.Select,{label:"Label Position",data:Yu,...l})}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`series.${t}.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:l})=>n(a.Checkbox,{label:"Hide in legend",checked:l.value,onChange:d=>l.onChange(d.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function Uu({control:e,watch:t,data:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"series"}),u=t("series"),l=i.map((g,h)=>({...g,...u[h]})),d=()=>{const g={type:"bar",name:ve.randomId(),showSymbol:!1,symbolSize:$n.static,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",display_name_on_line:!1,stack:"",color:"#000",step:!1,smooth:!1,barMinWidth:"1",barWidth:"10%",barMaxWidth:"10",barGap:"0%",lineStyle:{type:"solid",width:1},hide_in_legend:!1,group_by_key:""};s(g)},c=t("y_axes"),f=m.useMemo(()=>c.map(({name:g},h)=>({label:g,value:h.toString()})),[c]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((g,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},g.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((g,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(Qu,{control:e,index:h,remove:o,seriesItem:g,yAxisOptions:f,data:r},g.id)},g.id))]})}function Xu({control:e,watch:t}){return t("stats"),n(a.Stack,{children:p(a.Stack,{spacing:0,children:[n(x.Controller,{name:"stats.templates.top",control:e,render:({field:r})=>n(Ct,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...r})}),n(x.Controller,{name:"stats.templates.bottom",control:e,render:({field:r})=>n(Ct,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...r})})]})})}function Zu({data:e,control:t,watch:r}){return r(["x_axis_data_key","x_axis_name","x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis_data_key",control:t,render:({field:i})=>n(U,{label:"X Axis Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis_name",control:t,render:({field:i})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(Rt,{data:e,...i})})]}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})})]})}const Ku=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],Ju=[{label:"left",value:"left"},{label:"right",value:"right"}];function Hu({control:e,index:t,remove:r}){return p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),n(x.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:Ku,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:i})=>n(a.Select,{label:"Position",required:!0,data:Ju,sx:{flex:1},...i})})}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:i})=>n(Ve,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:i})=>n(a.TextInput,{label:"Min",...i})}),n(x.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:i})=>n(a.TextInput,{label:"Max",...i})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`y_axes.${t}.show`,control:e,render:({field:i})=>n(a.Checkbox,{label:"Visible",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),disabled:t===0,children:"Delete this YAxis"})]})}function ed({control:e,watch:t}){const{fields:r,append:i,remove:s}=x.useFieldArray({control:e,name:"y_axes"}),o=t("y_axes"),u=r.map((d,c)=>({...d,...o[c]})),l=()=>i({name:"",label_formatter:De});return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[u.map((d,c)=>n(a.Tabs.Tab,{value:c.toString(),children:c+1},c)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),u.map((d,c)=>n(a.Tabs.Panel,{value:c.toString(),children:n(Hu,{control:e,index:c,remove:s})},c))]})}function td({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),{variables:i}=e,s=e.data,o=m.useMemo(()=>y.defaultsDeep({},t,In),[t]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,o),[g,o]);return d(["dataZoom"]),n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axes",children:"Y Axes"}),n(a.Tabs.Tab,{value:"Series",children:"Series"}),n(a.Tabs.Tab,{value:"Regression Lines",children:"Regression Lines"}),n(a.Tabs.Tab,{value:"Stats",children:"Stats"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"}),n(a.Tabs.Tab,{value:"Reference Areas",children:"Reference Areas"}),n(a.Tabs.Tab,{value:"Zooming",children:"Zooming"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(Zu,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(ed,{control:u,watch:d})}),n(a.Tabs.Panel,{value:"Series",children:n(Uu,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Regression Lines",children:n(Lu,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Stats",children:n(Xu,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(Au,{variables:i,control:u,watch:d})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(Du,{variables:i,control:u,watch:d})}),n(a.Tabs.Panel,{value:"Zooming",children:n(x.Controller,{name:"dataZoom",control:u,render:({field:b})=>n(zn,{...b})})})]})]})})}function nd(e){const t=y.cloneDeep(y.omit(e,"variables"));return t.stats=y.omit(t.stats,"variables"),t}function rd(e){const{rotate:t,formatter:r=Be}=e.x_axis.axisLabel;return{...e,x_axis:{...e.x_axis,axisLabel:{rotate:t,formatter:r}}}}function id(e){const{dataZoom:t=ut,...r}=e;return{...r,dataZoom:t}}function ad(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return y.defaultsDeep(t,e)}function sd(e){const t=e.reference_lines.map(r=>{const{lineStyle:i={type:"dashed",width:1,color:Fe.random().css()},show_in_legend:s=!1}=r;return{...r,lineStyle:i,show_in_legend:s}});return{...e,reference_lines:t}}function od(e){const t=e.reference_lines.map(r=>{const{yAxisIndex:i=0}=r;return{...r,yAxisIndex:i}});return{...e,reference_lines:t}}function ld(e){const t=e.series.map(r=>{const{aggregation_on_group:i=wt}=r;return{...r,aggregation_on_group:i}});return{...e,series:t}}function ud(e){const t=e.series.map(r=>{const{aggregation_on_value:i=wt}=r;return{...r,aggregation_on_value:i}});return{...e,series:t}}function dd(e){delete e.config;const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,i={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return y.defaultsDeep(i,e)}function cd(e){const{series:t,...r}=e;return{...r,series:t.map(i=>{const{barMinWidth:s,barWidth:o,barMaxWidth:u}=i;return s?{...i,barMinWidth:s,barWidth:"",barMaxWidth:u??o}:{...i,barMinWidth:"",barWidth:o,barMaxWidth:""}})}}function pd(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(i=>{const{min:s="",max:o=""}=i;return{...i,min:s,max:o}})}}function hd(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(i=>{const{nameAlignment:s="left"}=i;return{...i,nameAlignment:s}})}}function fd(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(i=>{const{show:s=!0}=i;return{...i,show:s}})}}function gd(e){const{regressions:t,...r}=e;return{...r,regressions:t.map(i=>{const{group_by_key:s=""}=i;return{...i,group_by_key:s}})}}class md extends ge{constructor(){super(...arguments);P(this,"VERSION",15)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:i})=>{const{config:s}=r;return(s.variables||[]).forEach(l=>{i.variables.find(d=>d.name===l.name)||i.addVariable(l)}),(y.get(s,"stats.variables")||[]).forEach(l=>{i.variables.find(d=>d.name===l.name)||i.addVariable(l)}),{...r,version:2,config:nd(s)}}),this.version(3,r=>({...r,version:3,config:rd(r.config)})),this.version(4,r=>({...r,version:4,config:id(r.config)})),this.version(5,r=>({...r,version:5,config:ad(r.config)})),this.version(6,r=>({...r,version:6,config:sd(r.config)})),this.version(7,r=>({...r,version:7,config:od(r.config)})),this.version(8,r=>({...r,version:8,config:ld(r.config)})),this.version(9,r=>({...r,version:9,config:ud(r.config)})),this.version(10,r=>({...r,version:10,config:dd(r.config)})),this.version(11,r=>({...r,version:11,config:cd(r.config)})),this.version(12,r=>({...r,version:12,config:pd(r.config)})),this.version(13,r=>({...r,version:13,config:hd(r.config)})),this.version(14,r=>({...r,version:14,config:fd(r.config)})),this.version(15,r=>({...r,version:15,config:gd(r.config)}))}}const bd={displayName:"Cartesian Chart",displayGroup:"ECharts-based charts",migrator:new md,name:"cartesian",viewRender:wu,configRender:td,createConfig(){return{version:15,config:y.cloneDeep(In)}},triggers:[kn]};function vd(e){if(e.enable_value)return e.value}function yd(e){if(e.enable_value)return e.value}function xd(e){const t=e.axisLabel.overflow.on_axis.width,r=e.axisLabel.position,i={top:5,left:5,right:5,bottom:5};return e.orient==="vertical"&&y.get(i,r)&&r===e.funnelAlign&&y.set(i,r,t),i}function Cd(e,t){return e.series.map(r=>{const{level_name_data_key:i,level_value_data_key:s,axisLabel:o,min:u,max:l,funnelAlign:d,orient:c,...f}=r,g=t.map(b=>({name:b[i],value:b[s]})),h=Ke(o.overflow.on_axis);return{type:"funnel",...xd(r),min:vd(u),max:yd(l),minSize:u.size,maxSize:l.size,...f,label:{show:!0,position:o.position,...h},orient:c,funnelAlign:c==="horizontal"?"center":d,data:g}})}function wd({conf:e,params:t,max:r}){const{name:i,value:s}=t.data,o=ue(s/r).format({output:"percent",mantissa:2,trimMantissa:!0});return[{label:`${t.marker} ${i}`,value:`${s} (${o})`,style:{label:"",value:""}}]}function _d(e,t){var s;const r=e.series[0].level_value_data_key,i=(s=y.maxBy(t,r))==null?void 0:s[r];return o=>{const l=wd({conf:e,params:o,max:i}).map(c=>`
77
+ `}}}function Cu(e){return e.y_axes.reduce((r,{label_formatter:i},s)=>(r[s]=function(u){let l=u;if(typeof u=="object"&&(Array.isArray(u.value)&&u.value.length===2?l=u.value[1]:l=u.value),!i)return l;try{return se(l).format(i)}catch(d){return console.error(d),l}},r),{default:({value:r})=>r})}function wu(e,t){const r={};return t.map(i=>{const s=lt(i,e);r[i.name]=Je(i,s)}),r}function _u(e,t){const r=t.every(u=>!Number.isNaN(Number(u))),{overflow:i,...s}=e.x_axis.axisLabel,o=Ke(i.on_axis);return[{data:t,name:e.x_axis_name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:r?"value":"category",axisLabel:{...s,...o,formatter:ut(s.formatter)}}]}function Su(e,t){return e.y_axes.map(({nameAlignment:r,min:i,max:s,...o},u)=>{let l=o.position;return l||(l=u>0?"right":"left"),{...o,min:i||void 0,max:s||void 0,position:l,axisLabel:{show:!0,formatter:t[u]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}const Tu={tooltip:{trigger:"axis",confine:!0},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0}}],grid:{top:10,left:20,right:15,bottom:25,containLabel:!0}};function ku(e,t,r){const i=wu(t,r),s=Cu(e),o=v.uniq(t.map(f=>f[e.x_axis_data_key])),u=o.every(f=>!Number.isNaN(Number(f))),l=yu(e,o,u,t,s,r,i),{regressionSeries:d}=uu(e,t),c={xAxis:_u(e,o),yAxis:Su(e,s),series:[...l,...d],tooltip:xu(e,l,s),grid:iu(e),legend:ou(l),dataZoom:Mn(e.dataZoom)};return v.defaultsDeep({},c,Tu)}function ra(e){const t=e.getModel(),r=t.getSeries().map(i=>{if(!i.option.custom)return i.option;const s=t.getColorFromPalette(i.option.custom.targetSeries,null);return i.option.color=s,i.option});e.setOption({...e.getOption(),series:r})}le.use([B.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer,B.MarkLineComponent,B.MarkAreaComponent]);function ia(e){return e.trim().length>0}function Du({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=b.useMemo(()=>v.keyBy(t,e.x_axis_data_key),[t,e.x_axis_data_key]),l=Pe(s.triggerManager,Dn.id),d=b.useCallback(m=>{const w=v.get(u,m.name,{error:"rowData is not found"});l.forEach(C=>{s.runInteraction(C.id,{...m,rowData:w})})},[u,l,s]),c=b.useMemo(()=>ku(e,t,o),[e,t]),f=b.useRef(),g=b.useMemo(()=>({click:d}),[d]),h=m=>{f.current=m,ra(m)};return b.useEffect(()=>{f.current&&ra(f.current)},[c]),!r||!i?null:n(De,{echarts:le,option:c,style:{width:r,height:i},onEvents:g,onChartReady:h,notMerge:!0,theme:"merico-light"})}function Iu({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=W(e.instanceData,"config"),{variables:s}=e,o=b.useMemo(()=>v.defaults({},i,In),[i]),u=e.data,{width:l,height:d}=e.viewport,{ref:c,height:f}=ye.useElementSize(),{ref:g,height:h}=ye.useElementSize(),m=b.useMemo(()=>{const{stats:{templates:C}}=o;return{top:Tt(C.top,s,u),bottom:Tt(C.bottom,s,u)}},[o,u]),w=Math.max(0,d-f-h);return p(a.Box,{children:[n(a.Text,{ref:c,align:"left",size:"xs",pl:"sm",sx:{display:ia(o.stats.templates.top)?"block":"none"},children:Object.values(m.top).map((C,S)=>n(b.Fragment,{children:C},S))}),n(Du,{variables:s,width:l,height:w,data:u,conf:o,interactionManager:r}),n(a.Text,{ref:g,align:"left",size:"xs",pl:"sm",sx:{display:ia(o.stats.templates.bottom)?"block":"none"},children:Object.values(m.bottom).map((C,S)=>n(b.Fragment,{children:C},S))})]})}const $n=b.forwardRef(({value:e,onChange:t},r)=>{const i=s=>o=>{t({...e,[s]:o})};return p(a.Stack,{children:[n(a.Divider,{variant:"dashed",label:"Scroll to Zoom",labelPosition:"center"}),p(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on X Axis",checked:e.x_axis_scroll,onChange:s=>i("x_axis_scroll")(s.currentTarget.checked)})}),n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on Y Axis",checked:e.y_axis_scroll,onChange:s=>i("y_axis_scroll")(s.currentTarget.checked)})})]}),n(a.Divider,{variant:"dashed",label:"Slider for Zooming",labelPosition:"center"}),p(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Slider for X Axis",checked:e.x_axis_slider,onChange:s=>i("x_axis_slider")(s.currentTarget.checked)})}),n(a.Tooltip,{label:"Not available for now, will overlap y-axis's label",children:n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Slider for Y Axis",disabled:!e.y_axis_slider,checked:e.y_axis_slider,onChange:s=>i("y_axis_slider")(s.currentTarget.checked)})})})]})]})}),Mu=[{label:"Rectangle",value:"rectangle"}],Au=[{label:"Horizontal",value:"horizontal"}];function $u({control:e,index:t,remove:r,variableOptions:i}){return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:s})=>n(a.TextInput,{label:"Color",required:!0,sx:{flex:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:s})=>n(a.Select,{label:"Type",required:!0,data:Mu,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:s})=>n(a.Select,{label:"Direction",required:!0,data:Au,sx:{flex:1},...s})})]}),n(a.Divider,{variant:"dashed",label:"Data",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:s})=>n(a.Select,{label:"Upper Boundary",required:!0,data:i,sx:{flex:1},...s})}),n(x.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:s})=>n(a.Select,{label:"Lower Boundary",required:!0,data:i,sx:{flex:1},...s})})]}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Area"})]},t)}function zu({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_areas"}),u=t("reference_areas"),l=i.map((f,g)=>({...f,...u[g]})),d=()=>s({name:"",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),c=b.useMemo(()=>r.map(f=>({label:f.name,value:f.name})),[r]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"6px 0px 0px"}},children:[p(a.Tabs.List,{children:[l.map((f,g)=>n(a.Tabs.Tab,{value:g.toString(),children:g+1},g)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((f,g)=>n(a.Tabs.Panel,{value:g.toString(),children:n($u,{control:e,index:g,remove:o,variableOptions:c})},g))]})}const Eu=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],Lu=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function Ou({control:e,index:t,remove:r,watch:i,variableOptions:s,yAxisOptions:o}){const u=i(`reference_lines.${t}.orientation`);return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:s,sx:{flex:1},...l})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...l})}),p(a.Group,{grow:!0,children:[p(a.Stack,{children:[n(x.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:l})=>n(a.Select,{label:"Orientation",data:Lu,required:!0,sx:{flex:1},...l})}),u==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),u==="horizontal"&&n(x.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:o,disabled:o.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:Eu,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:l})=>n(a.Checkbox,{label:"Show in legend",checked:l.value,onChange:d=>l.onChange(d.currentTarget.checked)})}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function Pu({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>{s({name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,yAxisIndex:0})},c=b.useMemo(()=>r.map(h=>({label:h.name,value:h.name})),[r]),f=t("y_axes"),g=b.useMemo(()=>f.map(({name:h},m)=>({label:h,value:m.toString()})),[f]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:m.toString(),children:m+1},m)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:m.toString(),children:n(Ou,{control:e,index:m,remove:o,watch:t,variableOptions:c,yAxisOptions:g})},m))]})}const Vu=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}],Bu=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Nu({control:e,regressionItem:t,index:r,remove:i,yAxisOptions:s,data:o}){const u=t.transform.config.method;return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:`regressions.${r}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`regressions.${r}.group_by_key`,control:e,render:({field:l})=>n(Y,{label:"Split into multiple regression lines by this key...",data:o,clearable:!0,sx:{flex:1},...l})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`regressions.${r}.y_axis_data_key`,control:e,render:({field:l})=>n(Y,{label:"Value Field",required:!0,data:o,sx:{flex:1},...l})}),n(x.Controller,{name:`regressions.${r}.plot.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`regressions.${r}.transform.config.method`,control:e,render:({field:l})=>n(a.Select,{label:"Method",data:Vu,sx:{flex:1},...l})}),u==="polynomial"&&n(x.Controller,{name:`regressions.${r}.transform.config.order`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...l})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Line Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`regressions.${r}.plot.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:Bu,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`regressions.${r}.plot.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`regressions.${r}.plot.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Regression Line"})]},r)}function Gu({control:e,watch:t,data:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"regressions"}),u=t("regressions"),l=i.map((g,h)=>({...g,...u[h]})),d=t("y_axes"),c=b.useMemo(()=>d.map(({name:g},h)=>({label:g,value:h.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",lineStyle:{type:"solid",width:1}}});return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((g,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},h)),n(a.Tabs.Tab,{onClick:f,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((g,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(Nu,{regressionItem:g,control:e,index:h,remove:o,yAxisOptions:c,data:r},h)},h))]})}const zn={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
78
+ `)}},qu=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function Fu({control:e,index:t,seriesItem:r}){const i=!!r.barWidth.trim();return p(P,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.stack`,control:e,render:({field:s})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barGap`,control:e,render:({field:s})=>n(a.Select,{label:"Bar Gap",data:qu,sx:{flexGrow:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:i,sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:i,sx:{flexGrow:1},...s})})]})]})}const Wu=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{children:n(we,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},ju=({value:e,onChange:t,data:r})=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e),d=()=>{o();const{type:h,func_content:m}=u,w={type:h,func_content:m};l(w),t(w)},c=()=>{o(),l(e)},f=h=>{l(m=>({...m,func_content:h}))},g=()=>{f(zn.dynamic.func_content)};return p(P,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(Wu,{value:u.func_content,onChange:f}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},Yu=({value:e,onChange:t,data:r})=>e.type!=="dynamic"?null:n(ju,{value:e,onChange:t,data:r}),Ru=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=i=>{t({...e,size:i})};return n(P,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:r})})},Qu=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],aa=b.forwardRef(({label:e="Size",value:t,onChange:r,data:i},s)=>{const o=u=>{r({...zn[u]})};return p(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:s,label:e,data:Qu,value:t.type,onChange:o,sx:{flexGrow:1}}),n(Ru,{value:t,onChange:r}),n(Yu,{value:t,onChange:r,data:i})]})}),Uu=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}],Xu=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Zu({control:e,index:t,seriesItem:r,data:i}){const s=r.showSymbol;return p(P,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Line Settings",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:o})=>n(a.Select,{label:"Line Type",data:Xu,sx:{flexGrow:1},...o})}),n(x.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...o})})]}),p(a.Group,{grow:!0,align:"center",children:[n(x.Controller,{name:`series.${t}.step`,control:e,render:({field:o})=>n(a.Select,{label:"Step",data:Uu,sx:{flexGrow:1,maxWidth:"48%"},...o,value:String(o.value),onChange:u=>{const l=u==="false"?!1:u;o.onChange(l)}})}),p(a.Stack,{children:[n(x.Controller,{name:`series.${t}.smooth`,control:e,render:({field:o})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Smooth Line",checked:o.value,onChange:u=>o.onChange(u.currentTarget.checked)})})}),n(x.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:o})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Display Name on Line",checked:o.value??!1,onChange:u=>o.onChange(u.currentTarget.checked)})})})]})]}),p(a.Stack,{children:[n(x.Controller,{name:`series.${t}.showSymbol`,control:e,render:({field:o})=>n(a.Box,{mt:10,mb:-10,sx:{flexGrow:1},children:n(a.Switch,{label:"Show Symbol on Line",checked:o.value,onChange:u=>o.onChange(u.currentTarget.checked)})})}),s&&n(x.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:o})=>n(aa,{label:"Symbol Size",data:i,...o})})]})]})}function Ku({control:e,index:t,data:r}){return n(x.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:i})=>n(aa,{label:"Size",data:r,...i})})}const Ju=[{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 Hu({control:e,index:t,remove:r,seriesItem:i,yAxisOptions:s,data:o}){const u=i.type;return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[n(a.Stack,{children:n(x.Controller,{name:`series.${t}.type`,control:e,render:({field:l})=>n(a.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"}],...l})})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:l})=>n(Y,{label:"Value Field",required:!0,data:o,sx:{flex:1},...l})}),n(x.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:l})=>n(Ft,{label:"Aggregation on Value",value:l.value??_t,onChange:l.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(x.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:l})=>n(Y,{label:"Split into multiple series by this key...",data:o,clearable:!0,sx:{flex:1},...l})})}),u==="line"&&n(Zu,{index:t,control:e,seriesItem:i,data:o}),u==="bar"&&n(Fu,{index:t,control:e,seriesItem:i}),u==="scatter"&&n(Ku,{index:t,control:e,data:o}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.label_position`,control:e,render:({field:l})=>n(a.Select,{label:"Label Position",data:Ju,...l})}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`series.${t}.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:l})=>n(a.Checkbox,{label:"Hide in legend",checked:l.value,onChange:d=>l.onChange(d.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function ed({control:e,watch:t,data:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"series"}),u=t("series"),l=i.map((g,h)=>({...g,...u[h]})),d=()=>{const g={type:"bar",name:ye.randomId(),showSymbol:!1,symbolSize:zn.static,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",display_name_on_line:!1,stack:"",color:"#000",step:!1,smooth:!1,barMinWidth:"1",barWidth:"10%",barMaxWidth:"10",barGap:"0%",lineStyle:{type:"solid",width:1},hide_in_legend:!1,group_by_key:""};s(g)},c=t("y_axes"),f=b.useMemo(()=>c.map(({name:g},h)=>({label:g,value:h.toString()})),[c]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((g,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},g.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((g,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(Hu,{control:e,index:h,remove:o,seriesItem:g,yAxisOptions:f,data:r},g.id)},g.id))]})}function td({control:e,watch:t}){return t("stats"),n(a.Stack,{children:p(a.Stack,{spacing:0,children:[n(x.Controller,{name:"stats.templates.top",control:e,render:({field:r})=>n(wt,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...r})}),n(x.Controller,{name:"stats.templates.bottom",control:e,render:({field:r})=>n(wt,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...r})})]})})}function nd({data:e,control:t,watch:r}){return r(["x_axis_data_key","x_axis_name","x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis_data_key",control:t,render:({field:i})=>n(Y,{label:"X Axis Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis_name",control:t,render:({field:i})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(Yt,{data:e,...i})})]}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})})]})}const rd=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],id=[{label:"left",value:"left"},{label:"right",value:"right"}];function ad({control:e,index:t,remove:r}){return p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),n(x.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:rd,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:i})=>n(a.Select,{label:"Position",required:!0,data:id,sx:{flex:1},...i})})}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:i})=>n(Ve,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:i})=>n(a.TextInput,{label:"Min",...i})}),n(x.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:i})=>n(a.TextInput,{label:"Max",...i})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`y_axes.${t}.show`,control:e,render:({field:i})=>n(a.Checkbox,{label:"Visible",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),disabled:t===0,children:"Delete this YAxis"})]})}function sd({control:e,watch:t}){const{fields:r,append:i,remove:s}=x.useFieldArray({control:e,name:"y_axes"}),o=t("y_axes"),u=r.map((d,c)=>({...d,...o[c]})),l=()=>i({name:"",label_formatter:Ie});return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[u.map((d,c)=>n(a.Tabs.Tab,{value:c.toString(),children:c+1},c)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),u.map((d,c)=>n(a.Tabs.Panel,{value:c.toString(),children:n(ad,{control:e,index:c,remove:s})},c))]})}function od({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),{variables:i}=e,s=e.data,o=b.useMemo(()=>v.defaultsDeep({},t,In),[t]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,o),[g,o]);return d(["dataZoom"]),n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axes",children:"Y Axes"}),n(a.Tabs.Tab,{value:"Series",children:"Series"}),n(a.Tabs.Tab,{value:"Regression Lines",children:"Regression Lines"}),n(a.Tabs.Tab,{value:"Stats",children:"Stats"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"}),n(a.Tabs.Tab,{value:"Reference Areas",children:"Reference Areas"}),n(a.Tabs.Tab,{value:"Zooming",children:"Zooming"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(nd,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(sd,{control:u,watch:d})}),n(a.Tabs.Panel,{value:"Series",children:n(ed,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Regression Lines",children:n(Gu,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Stats",children:n(td,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(Pu,{variables:i,control:u,watch:d})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(zu,{variables:i,control:u,watch:d})}),n(a.Tabs.Panel,{value:"Zooming",children:n(x.Controller,{name:"dataZoom",control:u,render:({field:m})=>n($n,{...m})})})]})]})})}function ld(e){const t=v.cloneDeep(v.omit(e,"variables"));return t.stats=v.omit(t.stats,"variables"),t}function ud(e){const{rotate:t,formatter:r=Be}=e.x_axis.axisLabel;return{...e,x_axis:{...e.x_axis,axisLabel:{rotate:t,formatter:r}}}}function dd(e){const{dataZoom:t=dt,...r}=e;return{...r,dataZoom:t}}function cd(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return v.defaultsDeep(t,e)}function pd(e){const t=e.reference_lines.map(r=>{const{lineStyle:i={type:"dashed",width:1,color:Fe.random().css()},show_in_legend:s=!1}=r;return{...r,lineStyle:i,show_in_legend:s}});return{...e,reference_lines:t}}function hd(e){const t=e.reference_lines.map(r=>{const{yAxisIndex:i=0}=r;return{...r,yAxisIndex:i}});return{...e,reference_lines:t}}function fd(e){const t=e.series.map(r=>{const{aggregation_on_group:i=_t}=r;return{...r,aggregation_on_group:i}});return{...e,series:t}}function gd(e){const t=e.series.map(r=>{const{aggregation_on_value:i=_t}=r;return{...r,aggregation_on_value:i}});return{...e,series:t}}function md(e){delete e.config;const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,i={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return v.defaultsDeep(i,e)}function bd(e){const{series:t,...r}=e;return{...r,series:t.map(i=>{const{barMinWidth:s,barWidth:o,barMaxWidth:u}=i;return s?{...i,barMinWidth:s,barWidth:"",barMaxWidth:u??o}:{...i,barMinWidth:"",barWidth:o,barMaxWidth:""}})}}function yd(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(i=>{const{min:s="",max:o=""}=i;return{...i,min:s,max:o}})}}function vd(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(i=>{const{nameAlignment:s="left"}=i;return{...i,nameAlignment:s}})}}function xd(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(i=>{const{show:s=!0}=i;return{...i,show:s}})}}function Cd(e){const{regressions:t,...r}=e;return{...r,regressions:t.map(i=>{const{group_by_key:s=""}=i;return{...i,group_by_key:s}})}}class wd extends he{constructor(){super(...arguments);O(this,"VERSION",15)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:i})=>{const{config:s}=r;return(s.variables||[]).forEach(l=>{i.variables.find(d=>d.name===l.name)||i.addVariable(l)}),(v.get(s,"stats.variables")||[]).forEach(l=>{i.variables.find(d=>d.name===l.name)||i.addVariable(l)}),{...r,version:2,config:ld(s)}}),this.version(3,r=>({...r,version:3,config:ud(r.config)})),this.version(4,r=>({...r,version:4,config:dd(r.config)})),this.version(5,r=>({...r,version:5,config:cd(r.config)})),this.version(6,r=>({...r,version:6,config:pd(r.config)})),this.version(7,r=>({...r,version:7,config:hd(r.config)})),this.version(8,r=>({...r,version:8,config:fd(r.config)})),this.version(9,r=>({...r,version:9,config:gd(r.config)})),this.version(10,r=>({...r,version:10,config:md(r.config)})),this.version(11,r=>({...r,version:11,config:bd(r.config)})),this.version(12,r=>({...r,version:12,config:yd(r.config)})),this.version(13,r=>({...r,version:13,config:vd(r.config)})),this.version(14,r=>({...r,version:14,config:xd(r.config)})),this.version(15,r=>({...r,version:15,config:Cd(r.config)}))}}const _d={displayName:"Cartesian Chart",displayGroup:"ECharts-based charts",migrator:new wd,name:"cartesian",viewRender:Iu,configRender:od,createConfig(){return{version:15,config:v.cloneDeep(In)}},triggers:[Dn]};function Sd(e){if(e.enable_value)return e.value}function Td(e){if(e.enable_value)return e.value}function kd(e){const t=e.axisLabel.overflow.on_axis.width,r=e.axisLabel.position,i={top:5,left:5,right:5,bottom:5};return e.orient==="vertical"&&v.get(i,r)&&r===e.funnelAlign&&v.set(i,r,t),i}function Dd(e,t){return e.series.map(r=>{const{level_name_data_key:i,level_value_data_key:s,axisLabel:o,min:u,max:l,funnelAlign:d,orient:c,...f}=r,g=t.map(m=>({name:m[i],value:m[s]})),h=Ke(o.overflow.on_axis);return{type:"funnel",...kd(r),min:Sd(u),max:Td(l),minSize:u.size,maxSize:l.size,...f,label:{show:!0,position:o.position,...h},orient:c,funnelAlign:c==="horizontal"?"center":d,data:g}})}function Id({conf:e,params:t,max:r}){const{name:i,value:s}=t.data,o=se(s/r).format({output:"percent",mantissa:2,trimMantissa:!0});return[{label:`${t.marker} ${i}`,value:`${s} (${o})`,style:{label:"",value:""}}]}function Md(e,t){var s;const r=e.series[0].level_value_data_key,i=(s=v.maxBy(t,r))==null?void 0:s[r];return o=>{const l=Id({conf:e,params:o,max:i}).map(c=>`
79
79
  <tr>
80
80
  <th style="text-align: right;">
81
81
  <div style="${c.style.label}">${c.label}</div>
@@ -91,7 +91,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
91
91
  <table style="width: auto">
92
92
  <tbody>${l.join("")}</tbody>
93
93
  </table>
94
- `}}function Sd(e,t){return{trigger:"item",formatter:_d(e,t)}}function Td(e,t){return{grid:{top:0,left:0,right:0,bottom:0},tooltip:Sd(e,t),series:Cd(e,t)}}function Dd(e){return e||(e=Date.now().toString()),{id:e,name:e,level_name_data_key:"",level_value_data_key:"",min:{value:0,enable_value:!1,size:"0%"},max:{value:0,enable_value:!1,size:"100%"},gap:2,axisLabel:{show:!0,position:"inside",overflow:je},sort:"descending",orient:"vertical",funnelAlign:"center"}}const En={series:[Dd("Funnel")]};oe.use([de.FunnelChart,q.DataZoomComponent,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer]);function kd({conf:e,data:t,width:r,height:i}){const s=m.useMemo(()=>Td(e,t),[e,t]);return!r||!i?null:n(Me,{echarts:oe,option:s,style:{width:r,height:i},notMerge:!0,theme:"merico-light"})}function Id({context:e}){const{value:t}=j(e.instanceData,"config"),r=m.useMemo(()=>y.defaults({},t,En),[t]),i=e.data,{width:s,height:o}=e.viewport;return n(a.Box,{children:n(kd,{width:s,height:o,data:i,conf:r})})}const Md=[{label:"Top",value:"top"},{label:"Left",value:"left"},{label:"Right",value:"right"},{label:"Bottom",value:"bottom"},{label:"Outside",value:"outside"},{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"}],Ln=m.forwardRef(({label:e,value:t,onChange:r,options:i=Md},s)=>n(a.Select,{ref:s,label:e,data:i,value:t,onChange:r})),Ad=[{label:"Ascending",value:"ascending"},{label:"Descending",value:"descending"},{label:"Use original data order",value:"0"}],zd=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],$d=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}],Ed={horizontal:[{label:"Top",value:"top"},{label:"Inside Center",value:"inside"},{label:"Bottom",value:"bottom"}],vertical:[{label:"Left",value:"left"},{label:"Inside Left",value:"insideLeft"},{label:"Inside Center",value:"inside"},{label:"Inside Right",value:"insideRight"},{label:"Right",value:"right"}]},Ld=({item:e,control:t,data:r,index:i,remove:s})=>{const o=e.min.enable_value,u=e.max.enable_value,{orient:l}=e;return p(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`series.${i}.name`,control:t,render:({field:d})=>n(a.TextInput,{label:"Series Name",...d})})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.level_name_data_key`,control:t,render:({field:d})=>n(U,{label:"Level Name Field",data:r,...d})}),n(x.Controller,{name:`series.${i}.level_value_data_key`,control:t,render:({field:d})=>n(U,{label:"Level Value Field",data:r,...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Funnel Style",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.min.value`,control:t,render:({field:d})=>n(a.NumberInput,{disabled:!o,labelProps:{display:"block"},label:p(a.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[n(a.Text,{children:"Min Value"}),n(a.Tooltip,{label:"Check to enable specific min value",children:n(a.Box,{children:n(x.Controller,{name:`series.${i}.min.enable_value`,control:t,render:({field:c})=>n(a.Checkbox,{size:"xs",checked:c.value,onChange:f=>c.onChange(f.currentTarget.checked)})})})})]}),...d})}),n(x.Controller,{name:`series.${i}.min.size`,control:t,render:({field:d})=>n(a.TextInput,{placeholder:"0%",label:"Min Size",...d})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.max.value`,control:t,render:({field:d})=>n(a.NumberInput,{disabled:!u,labelProps:{display:"block"},label:p(a.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[n(a.Text,{children:"Max Value"}),n(a.Tooltip,{label:"Check to enable specific max value",children:n(a.Box,{children:n(x.Controller,{name:`series.${i}.max.enable_value`,control:t,render:({field:c})=>n(a.Checkbox,{size:"xs",checked:c.value,onChange:f=>c.onChange(f.currentTarget.checked)})})})})]}),...d})}),n(x.Controller,{name:`series.${i}.max.size`,control:t,render:({field:d})=>n(a.TextInput,{placeholder:"100%",label:"Max Size",...d})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.orient`,control:t,render:({field:d})=>n(a.Select,{label:"Orientation",data:$d,...d})}),n(x.Controller,{name:`series.${i}.sort`,control:t,render:({field:d})=>n(a.Select,{label:"Sort",data:Ad,...d})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.funnelAlign`,control:t,render:({field:d})=>n(a.Select,{label:"Align",disabled:l==="horizontal",data:zd,...d})}),n(x.Controller,{name:`series.${i}.gap`,control:t,render:({field:d})=>n(a.NumberInput,{placeholder:"0, 5, 10...",label:"Gap",...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.axisLabel.position`,control:t,render:({field:d})=>n(Ln,{label:"Position",options:Ed[l],...d})}),n(a.Box,{})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`series.${i}.axisLabel.overflow`,control:t,render:({field:d})=>n(nt,{...d})})})]})},Pd=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"series"}),u=t("series"),l=i.map((g,h)=>({...g,...u[h]})),d=y.get(l,"0.id"),[c,f]=m.useState(d??null);return m.useEffect(()=>{d&&f(g=>g!==null?g:d)},[d]),p(a.Tabs,{value:c,onTabChange:g=>f(g),styles:{panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((g,h)=>n(a.Tabs.Tab,{value:g.id,children:g.name},g.id)),n(a.Tabs.Tab,{value:"add",disabled:!0,children:n(a.Tooltip,{label:"TODO",children:n(a.Center,{children:n(V.IconPlus,{size:18,color:"#228be6"})})})})]}),l.map((g,h)=>n(a.Tabs.Panel,{value:g.id,children:n(Ld,{item:g,control:e,index:h,remove:o,data:r})},g.id))]})};function Od({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,En),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});m.useEffect(()=>{c(s)},[s]),l([]);const f=d(),g=m.useMemo(()=>!y.isEqual(f,s),[f,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Funnel Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(D.DeviceFloppy,{size:20})})]}),n(Pd,{control:o,watch:l,data:i})]})})}function Vd(e){return{series:e.series.map(t=>{const{min:r,minSize:i,max:s,maxSize:o,...u}=t;return{...u,min:{value:r,use_data_min:!1,size:i},max:{value:s,use_data_max:!1,size:o}}})}}class Bd extends ge{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{config:i}=r;return{...r,version:2,config:Vd(i)}})}}const Nd={displayName:"Funnel Chart",displayGroup:"ECharts-based charts",migrator:new Bd,name:"funnel",viewRender:Id,configRender:Od,createConfig:()=>({version:2,config:En})};function ia({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}function Gd(e){const t=ia(e.x_axis.axisLabel.formatter),r=ia(e.y_axis.axisLabel.formatter);return{x_axis:t,y_axis:r}}function qd(e){return{heat_block:function(i){if(!e.heat_block.value_formatter)return i;try{return ue(i).format(e.heat_block.value_formatter)}catch(s){return console.error(s),i}}}}function Fd(e){let t=0;return e.x_axis.name&&(t+=20),{top:45,left:5,right:5,bottom:t}}function Wd(e,t){const{x_axis:r,y_axis:i,heat_block:s}=e;return{type:"heatmap",name:s.name,xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{borderColor:"white",borderWidth:2},data:t.map(o=>[y.get(o,r.data_key),y.get(o,i.data_key),y.get(o,s.data_key)])}}const jd=e=>{try{return ue(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Rd({conf:e,labelFormatters:t,valueFormatters:r,dataDict:i,params:s}){const{value:o,dataIndex:u}=s,[l,d,c]=o,f={label:e.x_axis.name?e.x_axis.name:"X Axis",value:t.x_axis(l,u),style:{label:"",value:Ze(e.x_axis.axisLabel.overflow.in_tooltip)}},g={label:e.y_axis.name?e.y_axis.name:"Y Axis",value:t.y_axis(d,u),style:{label:"",value:Ze(e.y_axis.axisLabel.overflow.in_tooltip)}},h={label:e.heat_block.name,value:r.heat_block(c),style:{label:"",value:""}},b=[f,g,h],w=i[`${l}---${d}`];return w&&e.tooltip.metrics.forEach(C=>{b.push({label:C.name,value:jd(y.get(w,C.data_key,"")),style:{label:"",value:""}})}),b}function Yd(e,t,r,i){const s=y.keyBy(t,o=>`${o[e.x_axis.data_key]}---${o[e.y_axis.data_key]}`);return{confine:!0,formatter:function(o){const l=Rd({conf:e,labelFormatters:r,valueFormatters:i,dataDict:s,params:o}).map(c=>`
94
+ `}}function Ad(e,t){return{trigger:"item",formatter:Md(e,t)}}function $d(e,t){return{grid:{top:0,left:0,right:0,bottom:0},tooltip:Ad(e,t),series:Dd(e,t)}}function zd(e){return e||(e=Date.now().toString()),{id:e,name:e,level_name_data_key:"",level_value_data_key:"",min:{value:0,enable_value:!1,size:"0%"},max:{value:0,enable_value:!1,size:"100%"},gap:2,axisLabel:{show:!0,position:"inside",overflow:je},sort:"descending",orient:"vertical",funnelAlign:"center"}}const En={series:[zd("Funnel")]};le.use([de.FunnelChart,B.DataZoomComponent,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer]);function Ed({conf:e,data:t,width:r,height:i}){const s=b.useMemo(()=>$d(e,t),[e,t]);return!r||!i?null:n(De,{echarts:le,option:s,style:{width:r,height:i},notMerge:!0,theme:"merico-light"})}function Ld({context:e}){const{value:t}=W(e.instanceData,"config"),r=b.useMemo(()=>v.defaults({},t,En),[t]),i=e.data,{width:s,height:o}=e.viewport;return n(a.Box,{children:n(Ed,{width:s,height:o,data:i,conf:r})})}const Od=[{label:"Top",value:"top"},{label:"Left",value:"left"},{label:"Right",value:"right"},{label:"Bottom",value:"bottom"},{label:"Outside",value:"outside"},{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"}],Ln=b.forwardRef(({label:e,value:t,onChange:r,options:i=Od},s)=>n(a.Select,{ref:s,label:e,data:i,value:t,onChange:r})),Pd=[{label:"Ascending",value:"ascending"},{label:"Descending",value:"descending"},{label:"Use original data order",value:"0"}],Vd=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Bd=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}],Nd={horizontal:[{label:"Top",value:"top"},{label:"Inside Center",value:"inside"},{label:"Bottom",value:"bottom"}],vertical:[{label:"Left",value:"left"},{label:"Inside Left",value:"insideLeft"},{label:"Inside Center",value:"inside"},{label:"Inside Right",value:"insideRight"},{label:"Right",value:"right"}]},Gd=({item:e,control:t,data:r,index:i,remove:s})=>{const o=e.min.enable_value,u=e.max.enable_value,{orient:l}=e;return p(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`series.${i}.name`,control:t,render:({field:d})=>n(a.TextInput,{label:"Series Name",...d})})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.level_name_data_key`,control:t,render:({field:d})=>n(Y,{label:"Level Name Field",data:r,...d})}),n(x.Controller,{name:`series.${i}.level_value_data_key`,control:t,render:({field:d})=>n(Y,{label:"Level Value Field",data:r,...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Funnel Style",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.min.value`,control:t,render:({field:d})=>n(a.NumberInput,{disabled:!o,labelProps:{display:"block"},label:p(a.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[n(a.Text,{children:"Min Value"}),n(a.Tooltip,{label:"Check to enable specific min value",children:n(a.Box,{children:n(x.Controller,{name:`series.${i}.min.enable_value`,control:t,render:({field:c})=>n(a.Checkbox,{size:"xs",checked:c.value,onChange:f=>c.onChange(f.currentTarget.checked)})})})})]}),...d})}),n(x.Controller,{name:`series.${i}.min.size`,control:t,render:({field:d})=>n(a.TextInput,{placeholder:"0%",label:"Min Size",...d})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.max.value`,control:t,render:({field:d})=>n(a.NumberInput,{disabled:!u,labelProps:{display:"block"},label:p(a.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[n(a.Text,{children:"Max Value"}),n(a.Tooltip,{label:"Check to enable specific max value",children:n(a.Box,{children:n(x.Controller,{name:`series.${i}.max.enable_value`,control:t,render:({field:c})=>n(a.Checkbox,{size:"xs",checked:c.value,onChange:f=>c.onChange(f.currentTarget.checked)})})})})]}),...d})}),n(x.Controller,{name:`series.${i}.max.size`,control:t,render:({field:d})=>n(a.TextInput,{placeholder:"100%",label:"Max Size",...d})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.orient`,control:t,render:({field:d})=>n(a.Select,{label:"Orientation",data:Bd,...d})}),n(x.Controller,{name:`series.${i}.sort`,control:t,render:({field:d})=>n(a.Select,{label:"Sort",data:Pd,...d})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.funnelAlign`,control:t,render:({field:d})=>n(a.Select,{label:"Align",disabled:l==="horizontal",data:Vd,...d})}),n(x.Controller,{name:`series.${i}.gap`,control:t,render:({field:d})=>n(a.NumberInput,{placeholder:"0, 5, 10...",label:"Gap",...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${i}.axisLabel.position`,control:t,render:({field:d})=>n(Ln,{label:"Position",options:Nd[l],...d})}),n(a.Box,{})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`series.${i}.axisLabel.overflow`,control:t,render:({field:d})=>n(nt,{...d})})})]})},qd=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"series"}),u=t("series"),l=i.map((g,h)=>({...g,...u[h]})),d=v.get(l,"0.id"),[c,f]=b.useState(d??null);return b.useEffect(()=>{d&&f(g=>g!==null?g:d)},[d]),p(a.Tabs,{value:c,onTabChange:g=>f(g),styles:{panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((g,h)=>n(a.Tabs.Tab,{value:g.id,children:g.name},g.id)),n(a.Tabs.Tab,{value:"add",disabled:!0,children:n(a.Tooltip,{label:"TODO",children:n(a.Center,{children:n(V.IconPlus,{size:18,color:"#228be6"})})})})]}),l.map((g,h)=>n(a.Tabs.Panel,{value:g.id,children:n(Gd,{item:g,control:e,index:h,remove:o,data:r})},g.id))]})};function Fd({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,En),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]),l([]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,s),[f,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Funnel Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),n(qd,{control:o,watch:l,data:i})]})})}function Wd(e){return{series:e.series.map(t=>{const{min:r,minSize:i,max:s,maxSize:o,...u}=t;return{...u,min:{value:r,use_data_min:!1,size:i},max:{value:s,use_data_max:!1,size:o}}})}}class jd extends he{constructor(){super(...arguments);O(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{config:i}=r;return{...r,version:2,config:Wd(i)}})}}const Yd={displayName:"Funnel Chart",displayGroup:"ECharts-based charts",migrator:new jd,name:"funnel",viewRender:Ld,configRender:Fd,createConfig:()=>({version:2,config:En})};function sa({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}function Rd(e){const t=sa(e.x_axis.axisLabel.formatter),r=sa(e.y_axis.axisLabel.formatter);return{x_axis:t,y_axis:r}}function Qd(e){return{heat_block:function(i){if(!e.heat_block.value_formatter)return i;try{return se(i).format(e.heat_block.value_formatter)}catch(s){return console.error(s),i}}}}function Ud(e){let t=0;return e.x_axis.name&&(t+=20),{top:45,left:5,right:5,bottom:t}}function Xd(e,t){const{x_axis:r,y_axis:i,heat_block:s}=e;return{type:"heatmap",name:s.name,xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{borderColor:"white",borderWidth:2},data:t.map(o=>[v.get(o,r.data_key),v.get(o,i.data_key),v.get(o,s.data_key)])}}const Zd=e=>{try{return se(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Kd({conf:e,labelFormatters:t,valueFormatters:r,dataDict:i,params:s}){const{value:o,dataIndex:u}=s,[l,d,c]=o,f={label:e.x_axis.name?e.x_axis.name:"X Axis",value:t.x_axis(l,u),style:{label:"",value:Ze(e.x_axis.axisLabel.overflow.in_tooltip)}},g={label:e.y_axis.name?e.y_axis.name:"Y Axis",value:t.y_axis(d,u),style:{label:"",value:Ze(e.y_axis.axisLabel.overflow.in_tooltip)}},h={label:e.heat_block.name,value:r.heat_block(c),style:{label:"",value:""}},m=[f,g,h],w=i[`${l}---${d}`];return w&&e.tooltip.metrics.forEach(C=>{m.push({label:C.name,value:Zd(v.get(w,C.data_key,"")),style:{label:"",value:""}})}),m}function Jd(e,t,r,i){const s=v.keyBy(t,o=>`${o[e.x_axis.data_key]}---${o[e.y_axis.data_key]}`);return{confine:!0,formatter:function(o){const l=Kd({conf:e,labelFormatters:r,valueFormatters:i,dataDict:s,params:o}).map(c=>`
95
95
  <tr>
96
96
  <th style="text-align: right;">
97
97
  <div style="${c.style.label}">${c.label}</div>
@@ -112,8 +112,8 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
112
112
  </thead>
113
113
  <tbody>${l.join("")}</tbody>
114
114
  </table>
115
- `}}}function Qd(e){return{min:e.heat_block.min??0,max:e.heat_block.max??100,calculable:!0,orient:"horizontal",left:"center",top:0,itemWidth:15}}function Ud(e,t,r){const{overflow:i,rotate:s}=e.x_axis.axisLabel,o=Ke(i.on_axis);return{id:"main-x-axis",type:"category",data:y.uniq(t.map(u=>u[e.x_axis.data_key])),name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:s,...o,formatter:r},splitArea:{show:!0},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:1}}function Xd(e,t,r){const{nameAlignment:i,data_key:s,...o}=e.y_axis,{overflow:u,rotate:l}=e.y_axis.axisLabel,d=Ke(u.on_axis);return{...o,type:"category",data:y.uniq(t.map(c=>c[s])),axisLabel:{rotate:l,...d,formatter:r},axisLine:{show:!0,color:"blue"},axisTick:{show:!0,alignWithLabel:!0},splitArea:{show:!0},nameTextStyle:{fontWeight:"bold",align:i},nameLocation:"end",nameGap:15,z:1}}const Zd={tooltip:{confine:!0},grid:{containLabel:!0}};function Kd(e,t,r){const i=Gd(e),s=qd(e),o={xAxis:Ud(e,t,i.x_axis),yAxis:Xd(e,t,i.y_axis),series:Wd(e,t),dataset:[{source:t}],tooltip:Yd(e,t,i,s),grid:Fd(e),visualMap:Qd(e)};return y.defaultsDeep({},o,Zd)}function Jd(e){return n(O,{})}function Hd(e){return n(a.Text,{children:"Click heat block"})}const aa={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:Hd,configRender:Jd,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Pn={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:je,formatter:{...Be}}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:je,formatter:{...Be}}},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:De},tooltip:{metrics:[]}};oe.use([q.DataZoomComponent,de.BarChart,de.LineChart,de.HeatmapChart,q.GridComponent,q.LegendComponent,q.TooltipComponent,q.VisualMapComponent,Ie.CanvasRenderer]);function ec({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=m.useMemo(()=>{const g=e.x_axis.data_key,h=e.y_axis.data_key;return y.keyBy(t,b=>`${b[g]}---${b[h]}`)},[t,e.x_axis.data_key]),l=Oe(s.triggerManager,aa.id),d=m.useCallback(g=>{const[h,b]=g.value,w=y.get(u,`${h}---${b}`,{error:"rowData is not found"});l.forEach(C=>{s.runInteraction(C.id,{...g,rowData:w})})},[u,l,s]),c=m.useMemo(()=>({click:d}),[d]),f=m.useMemo(()=>Kd(e,t),[e,t]);return!r||!i?null:n(Me,{echarts:oe,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function tc({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=j(e.instanceData,"config"),{variables:s}=e,o=m.useMemo(()=>y.defaults({},i,Pn),[i]),u=e.data,{width:l,height:d}=e.viewport;return n(a.Box,{children:n(ec,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}function nc({data:e,control:t,watch:r}){return r(["heat_block"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.data_key",control:t,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"heat_block.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.min",control:t,render:({field:i})=>n(a.NumberInput,{label:"Min Value",...i})}),n(x.Controller,{name:"heat_block.max",control:t,render:({field:i})=>n(a.NumberInput,{label:"Max Value",...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(x.Controller,{name:"heat_block.value_formatter",control:t,render:({field:i})=>n(Ve,{...i})})]})}const rc=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`tooltip.metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`tooltip.metrics.${r}.data_key`,control:e,render:({field:s})=>n(U,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),ic=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"tooltip.metrics"}),u=t("tooltip.metrics"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("tooltip.metrics.0.id"),[f,g]=m.useState(()=>c??null);return m.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(O,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(D.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:b},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:h.id,children:n(rc,{control:e,index:b,remove:o,data:r},h.id)},h.id))]})]})};function ac({data:e,control:t,watch:r}){return n(ic,{control:t,watch:r,data:e})}const sc=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(_e,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},oc={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
116
- `)},sa=m.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e);m.useEffect(()=>{l(e)},[e]);const d=b=>{l({...u,enabled:b})},c=()=>{o();const{enabled:b,func_content:w}=u,C={enabled:b,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=b=>{l(w=>({...w,func_content:b}))},h=()=>{g(oc.func_content)};return p(O,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:b=>d(b.currentTarget.checked)}),n(sc,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})});function lc({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(sa,{data:e,...i})})]})]})}const uc=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function dc({control:e,watch:t,data:r}){return t(["y_axis"]),p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.data_key",control:e,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:r,sx:{flex:1},...i})}),n(x.Controller,{name:"y_axis.name",control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:i})=>n(a.Select,{label:"Name Alignment",required:!0,data:uc,sx:{flex:1},...i})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(x.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:i})=>n(nt,{...i})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:i})=>n(sa,{data:r,...i})})]})]})}function cc({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,Pn),[t]),o=m.useMemo(()=>y.cloneDeep(s),[s]);m.useEffect(()=>{!y.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),r(o))},[s,o]);const{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,s),[g,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Heat Block",children:"Heat Block"}),n(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(lc,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(dc,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(nc,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(ac,{control:u,watch:d,data:i})})]})]})})}class pc extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>(console.log("🟥 unexpected calling"),{version:1,config:r}))}}const hc={displayName:"Heatmap",displayGroup:"ECharts-based charts",migrator:new pc,name:"heatmap",viewRender:tc,configRender:cc,createConfig:()=>({version:1,config:Pn}),triggers:[aa]},oa={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:gc,configRender:fc,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'line' | 'bar'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function fc(e){return n(O,{})}function gc(e){return n(a.Text,{children:"Click chart's series"})}const la={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"rgba(0,0,0,0.3)"},On={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...Be},overflow:je}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:De},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:ut,markLine:la};function Yt(e){return ue(e).format({output:"percent",mantissa:0})}function mc(e){const t=e.value[1];try{return Yt(t)}catch(r){return console.error(r),t}}function bc(e){function t(r){let i=r;if(typeof r=="object"&&(Array.isArray(r.value)&&r.value.length===2?i=r.value[1]:i=r.value),!e.bar.label_formatter)return i;try{return ue(i).format(e.bar.label_formatter)}catch(s){return console.error(s),i}}return{bar:t,line:mc,lineValue:Yt}}function vc(e,t,r){const{label_template:i}=e.markLine;if(!i)return"";const s={...e,percentage:t,count:r},o=Object.keys(s),u=Object.values(s);return new Function(...o,`return \`${i}\`;`)(...u)}function yc(e,t){if(t.length===0)return{};const r=t.findIndex(l=>l[1]>=.8);if(r===-1)return{};const i=t[r],s={x:Yt((r+1)/t.length),y:Yt(i[1])},o={left:r+1,right:t.length-r-1},u=i[0];return u?{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:u,lineStyle:{color:e.markLine.color},label:{formatter:vc(e,s,o)}}]}:{}}function xc(e,t,r){const i=t.map(l=>[l[e.x_axis.data_key],Number(l[e.data_key])]).sort((l,d)=>d[1]-l[1]),s=i.reduce((l,d)=>l+d[1],0),o=i.reduce((l,d,c)=>{const f=c===0?0:l[c-1][1];return l.push([d[0],f+d[1]]),l},[]).map(l=>[l[0],l[1]/s]),u=yc(e,o);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:r.bar},yAxisIndex:0,data:i},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1},label:{show:!1,position:"top",formatter:r.line},yAxisIndex:1,data:o,markLine:u}]}const Cc=(e,t)=>r=>{const i=Array.isArray(r)?r:[r];if(i.length===0)return"";const s=i.map((l,d)=>{const c=l.seriesName,[f,g]=l.value;if(!c)return g;const h=d===0?t.bar:t.lineValue;return`
115
+ `}}}function Hd(e){return{min:e.heat_block.min??0,max:e.heat_block.max??100,calculable:!0,orient:"horizontal",left:"center",top:0,itemWidth:15}}function ec(e,t,r){const{overflow:i,rotate:s}=e.x_axis.axisLabel,o=Ke(i.on_axis);return{id:"main-x-axis",type:"category",data:v.uniq(t.map(u=>u[e.x_axis.data_key])),name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:s,...o,formatter:r},splitArea:{show:!0},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:1}}function tc(e,t,r){const{nameAlignment:i,data_key:s,...o}=e.y_axis,{overflow:u,rotate:l}=e.y_axis.axisLabel,d=Ke(u.on_axis);return{...o,type:"category",data:v.uniq(t.map(c=>c[s])),axisLabel:{rotate:l,...d,formatter:r},axisLine:{show:!0,color:"blue"},axisTick:{show:!0,alignWithLabel:!0},splitArea:{show:!0},nameTextStyle:{fontWeight:"bold",align:i},nameLocation:"end",nameGap:15,z:1}}const nc={tooltip:{confine:!0},grid:{containLabel:!0}};function rc(e,t,r){const i=Rd(e),s=Qd(e),o={xAxis:ec(e,t,i.x_axis),yAxis:tc(e,t,i.y_axis),series:Xd(e,t),dataset:[{source:t}],tooltip:Jd(e,t,i,s),grid:Ud(e),visualMap:Hd(e)};return v.defaultsDeep({},o,nc)}function ic(e){return n(P,{})}function ac(e){return n(a.Text,{children:"Click heat block"})}const oa={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:ac,configRender:ic,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},On={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:je,formatter:{...Be}}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:je,formatter:{...Be}}},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:Ie},tooltip:{metrics:[]}};le.use([B.DataZoomComponent,de.BarChart,de.LineChart,de.HeatmapChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,B.VisualMapComponent,ke.CanvasRenderer]);function sc({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=b.useMemo(()=>{const g=e.x_axis.data_key,h=e.y_axis.data_key;return v.keyBy(t,m=>`${m[g]}---${m[h]}`)},[t,e.x_axis.data_key]),l=Pe(s.triggerManager,oa.id),d=b.useCallback(g=>{const[h,m]=g.value,w=v.get(u,`${h}---${m}`,{error:"rowData is not found"});l.forEach(C=>{s.runInteraction(C.id,{...g,rowData:w})})},[u,l,s]),c=b.useMemo(()=>({click:d}),[d]),f=b.useMemo(()=>rc(e,t),[e,t]);return!r||!i?null:n(De,{echarts:le,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function oc({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=W(e.instanceData,"config"),{variables:s}=e,o=b.useMemo(()=>v.defaults({},i,On),[i]),u=e.data,{width:l,height:d}=e.viewport;return n(a.Box,{children:n(sc,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}function lc({data:e,control:t,watch:r}){return r(["heat_block"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.data_key",control:t,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"heat_block.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.min",control:t,render:({field:i})=>n(a.NumberInput,{label:"Min Value",...i})}),n(x.Controller,{name:"heat_block.max",control:t,render:({field:i})=>n(a.NumberInput,{label:"Max Value",...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(x.Controller,{name:"heat_block.value_formatter",control:t,render:({field:i})=>n(Ve,{...i})})]})}const uc=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`tooltip.metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`tooltip.metrics.${r}.data_key`,control:e,render:({field:s})=>n(Y,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),dc=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"tooltip.metrics"}),u=t("tooltip.metrics"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("tooltip.metrics.0.id"),[f,g]=b.useState(()=>c??null);return b.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(P,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(k.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:m},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:h.id,children:n(uc,{control:e,index:m,remove:o,data:r},h.id)},h.id))]})]})};function cc({data:e,control:t,watch:r}){return n(dc,{control:t,watch:r,data:e})}const pc=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(we,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},hc={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
116
+ `)},la=b.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e);b.useEffect(()=>{l(e)},[e]);const d=m=>{l({...u,enabled:m})},c=()=>{o();const{enabled:m,func_content:w}=u,C={enabled:m,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=m=>{l(w=>({...w,func_content:m}))},h=()=>{g(hc.func_content)};return p(P,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:m=>d(m.currentTarget.checked)}),n(pc,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})});function fc({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(la,{data:e,...i})})]})]})}const gc=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function mc({control:e,watch:t,data:r}){return t(["y_axis"]),p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.data_key",control:e,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:r,sx:{flex:1},...i})}),n(x.Controller,{name:"y_axis.name",control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:i})=>n(a.Select,{label:"Name Alignment",required:!0,data:gc,sx:{flex:1},...i})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(x.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:i})=>n(nt,{...i})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:i})=>n(la,{data:r,...i})})]})]})}function bc({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,On),[t]),o=b.useMemo(()=>v.cloneDeep(s),[s]);b.useEffect(()=>{!v.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),r(o))},[s,o]);const{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,s),[g,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Heat Block",children:"Heat Block"}),n(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(fc,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(mc,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(lc,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(cc,{control:u,watch:d,data:i})})]})]})})}class yc extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>(console.log("🟥 unexpected calling"),{version:1,config:r}))}}const vc={displayName:"Heatmap",displayGroup:"ECharts-based charts",migrator:new yc,name:"heatmap",viewRender:oc,configRender:bc,createConfig:()=>({version:1,config:On}),triggers:[oa]},ua={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Cc,configRender:xc,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'line' | 'bar'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function xc(e){return n(P,{})}function Cc(e){return n(a.Text,{children:"Click chart's series"})}const da={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"rgba(0,0,0,0.3)"},Pn={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...Be},overflow:je}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:Ie},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:dt,markLine:da};function Rt(e){return se(e).format({output:"percent",mantissa:0})}function wc(e){const t=e.value[1];try{return Rt(t)}catch(r){return console.error(r),t}}function _c(e){function t(r){let i=r;if(typeof r=="object"&&(Array.isArray(r.value)&&r.value.length===2?i=r.value[1]:i=r.value),!e.bar.label_formatter)return i;try{return se(i).format(e.bar.label_formatter)}catch(s){return console.error(s),i}}return{bar:t,line:wc,lineValue:Rt}}function Sc(e,t,r){const{label_template:i}=e.markLine;if(!i)return"";const s={...e,percentage:t,count:r},o=Object.keys(s),u=Object.values(s);return new Function(...o,`return \`${i}\`;`)(...u)}function Tc(e,t){if(t.length===0)return{};const r=t.findIndex(l=>l[1]>=.8);if(r===-1)return{};const i=t[r],s={x:Rt((r+1)/t.length),y:Rt(i[1])},o={left:r+1,right:t.length-r-1},u=i[0];return u?{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:u,lineStyle:{color:e.markLine.color},label:{formatter:Sc(e,s,o)}}]}:{}}function kc(e,t,r){const i=t.map(l=>[l[e.x_axis.data_key],Number(l[e.data_key])]).sort((l,d)=>d[1]-l[1]),s=i.reduce((l,d)=>l+d[1],0),o=i.reduce((l,d,c)=>{const f=c===0?0:l[c-1][1];return l.push([d[0],f+d[1]]),l},[]).map(l=>[l[0],l[1]/s]),u=Tc(e,o);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:r.bar},yAxisIndex:0,data:i},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1},label:{show:!1,position:"top",formatter:r.line},yAxisIndex:1,data:o,markLine:u}]}const Dc=(e,t)=>r=>{const i=Array.isArray(r)?r:[r];if(i.length===0)return"";const s=i.map((l,d)=>{const c=l.seriesName,[f,g]=l.value;if(!c)return g;const h=d===0?t.bar:t.lineValue;return`
117
117
  <tr>
118
118
  <th style="text-align: right; padding: 0 1em;">${c}</th>
119
119
  <td style="text-align: left; padding: 0 1em;">${h(g)}</td>
@@ -127,7 +127,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
127
127
  ${s.join("")}
128
128
  </tbody>
129
129
  </table>
130
- `};function wc(e,t){return{trigger:"axis",formatter:Cc(e,t)}}function _c(e){const{name:t,axisLabel:r}=e.x_axis,i=Ke(r.overflow.on_axis);return[{type:"category",name:t,nameLocation:"middle",nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0},axisLabel:{...r,...i,formatter:lt(r.formatter)}}]}function Sc(e,t){return[{name:e.bar.name,nameGap:20,nameTextStyle:{fontWeight:"bold",align:e.bar.nameAlignment},position:"left",axisLine:{show:!0},axisLabel:{show:!0,formatter:t.bar},splitLine:{show:!1}},{name:e.line.name,nameGap:20,nameTextStyle:{fontWeight:"bold",align:e.line.nameAlignment},position:"right",axisLine:{show:!0},axisLabel:{show:!0,formatter:t.lineValue},splitLine:{show:!1}}]}function Tc(e,t,r){const i=bc(e);return{dataZoom:Mn(e.dataZoom),tooltip:wc(e,i),xAxis:_c(e),yAxis:Sc(e,i),series:xc(e,t,i),grid:{top:50,left:30,right:15,bottom:5,containLabel:!0}}}oe.use([de.BarChart,de.LineChart,q.DataZoomComponent,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer]);function Dc({context:e,instance:t}){const{value:r}=j(e.instanceData,"config"),i=e.data,{width:s,height:o}=e.viewport,u=y.defaults({},r,On),l=Tc(u,i),d=Ge({vizManager:e.vizManager,instance:t}),c=Oe(d.triggerManager,oa.id),f=m.useMemo(()=>y.keyBy(i,u.x_axis.data_key),[i,u.x_axis.data_key]),g=m.useCallback(b=>{const w=y.get(f,b.name,{error:"rowData is not found"});c.forEach(C=>{d.runInteraction(C.id,{...b,rowData:w})})},[f,c,d]),h=m.useMemo(()=>({click:g}),[g]);return!u||!s||!o?null:n(Me,{echarts:oe,option:l,style:{width:s,height:o},onEvents:h,notMerge:!0,theme:"merico-light"})}const kc=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function Ic({data:e,control:t,watch:r}){return r(["bar"]),p(a.Stack,{children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:"bar.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Bar Name",sx:{flex:1},...i})}),n(x.Controller,{name:"bar.nameAlignment",control:t,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:kc,sx:{flex:1},...i})})]}),p(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"bar.color",control:t,render:({field:i})=>n(Se,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:"bar.label_formatter",control:t,render:({field:i})=>n(Ve,{...i})})]})]})}const Mc=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function Ac({data:e,control:t,watch:r}){return r(["line"]),p(a.Stack,{children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:"line.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Line Name",sx:{flex:1},...i})}),n(x.Controller,{name:"line.nameAlignment",control:t,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:Mc,sx:{flex:1},...i})})]}),p(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"line.color",control:t,render:({field:i})=>n(Se,{...i})})]})]})}const zc=`
130
+ `};function Ic(e,t){return{trigger:"axis",formatter:Dc(e,t)}}function Mc(e){const{name:t,axisLabel:r}=e.x_axis,i=Ke(r.overflow.on_axis);return[{type:"category",name:t,nameLocation:"middle",nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0},axisLabel:{...r,...i,formatter:ut(r.formatter)}}]}function Ac(e,t){return[{name:e.bar.name,nameGap:20,nameTextStyle:{fontWeight:"bold",align:e.bar.nameAlignment},position:"left",axisLine:{show:!0},axisLabel:{show:!0,formatter:t.bar},splitLine:{show:!1}},{name:e.line.name,nameGap:20,nameTextStyle:{fontWeight:"bold",align:e.line.nameAlignment},position:"right",axisLine:{show:!0},axisLabel:{show:!0,formatter:t.lineValue},splitLine:{show:!1}}]}function $c(e,t,r){const i=_c(e);return{dataZoom:Mn(e.dataZoom),tooltip:Ic(e,i),xAxis:Mc(e),yAxis:Ac(e,i),series:kc(e,t,i),grid:{top:50,left:30,right:15,bottom:5,containLabel:!0}}}le.use([de.BarChart,de.LineChart,B.DataZoomComponent,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer]);function zc({context:e,instance:t}){const{value:r}=W(e.instanceData,"config"),i=e.data,{width:s,height:o}=e.viewport,u=v.defaults({},r,Pn),l=$c(u,i),d=Ge({vizManager:e.vizManager,instance:t}),c=Pe(d.triggerManager,ua.id),f=b.useMemo(()=>v.keyBy(i,u.x_axis.data_key),[i,u.x_axis.data_key]),g=b.useCallback(m=>{const w=v.get(f,m.name,{error:"rowData is not found"});c.forEach(C=>{d.runInteraction(C.id,{...m,rowData:w})})},[f,c,d]),h=b.useMemo(()=>({click:g}),[g]);return!u||!s||!o?null:n(De,{echarts:le,option:l,style:{width:s,height:o},onEvents:h,notMerge:!0,theme:"merico-light"})}const Ec=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function Lc({data:e,control:t,watch:r}){return r(["bar"]),p(a.Stack,{children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:"bar.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Bar Name",sx:{flex:1},...i})}),n(x.Controller,{name:"bar.nameAlignment",control:t,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:Ec,sx:{flex:1},...i})})]}),p(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"bar.color",control:t,render:({field:i})=>n(Se,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:"bar.label_formatter",control:t,render:({field:i})=>n(Ve,{...i})})]})]})}const Oc=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function Pc({data:e,control:t,watch:r}){return r(["line"]),p(a.Stack,{children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:"line.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Line Name",sx:{flex:1},...i})}),n(x.Controller,{name:"line.nameAlignment",control:t,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:Oc,sx:{flex:1},...i})})]}),p(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"line.color",control:t,render:({field:i})=>n(Se,{...i})})]})]})}const Vc=`
131
131
  {
132
132
  // 80-20 line stuff
133
133
  percentage: {
@@ -150,8 +150,8 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
150
150
  name: string;
151
151
  };
152
152
  }
153
- `,$c=()=>{const[e,t]=m.useState(!1);return p(O,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(r=>!r),children:e?"Close":"Click to see params for Label Template"}),n(a.Collapse,{in:e,children:n(at.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:zc})})]})};function Ec({data:e,control:t,watch:r}){return r(["markLine"]),p(a.Stack,{children:[p(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"markLine.color",control:t,render:({field:i})=>n(Se,{...i})})]}),p(a.Stack,{spacing:4,children:[n(x.Controller,{name:"markLine.label_template",control:t,render:({field:i})=>n(a.Textarea,{autosize:!0,minRows:2,maxRows:4,label:"Label Template",sx:{flex:1},...i})}),n($c,{})]})]})}function Lc({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(Rt,{data:e,...i})})]}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})})]})}function Pc({data:e,control:t,watch:r}){return r(["data_key"]),n(a.Stack,{children:n(x.Controller,{name:"data_key",control:t,render:({field:i})=>n(U,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...i})})})}function Oc({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaults({},t,On),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});m.useEffect(()=>{c(s)},[s]),l(["x_axis","data_key","bar","line","dataZoom"]);const f=d(),g=m.useMemo(()=>!y.isEqual(f,t),[f,t]);return p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Bar",children:"Bar"}),n(a.Tabs.Tab,{value:"Line",children:"Line"}),n(a.Tabs.Tab,{value:"80-20 Line",children:"80-20 Line"}),n(a.Tabs.Tab,{value:"Zooming",children:"Zooming"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(Lc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(Pc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Bar",children:n(Ic,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Line",children:n(Ac,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"80-20 Line",children:n(Ec,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Zooming",children:n(x.Controller,{name:"dataZoom",control:o,render:({field:h})=>n(zn,{...h})})})]})]})}function Vc(e){const{dataZoom:t=ut,...r}=e;return{...r,dataZoom:t}}function Bc(e){const{markLine:t=la,...r}=e;return{...r,markLine:t}}function Nc(e){const t=y.defaultsDeep({},e.x_axis.axisLabel,{rotate:0,formatter:{...Be}});return{...e,x_axis:{...e.x_axis,axisLabel:t}}}function Gc(e){const{label_formatter:t=De}=e.bar;return{...e,bar:{...e.bar,label_formatter:t}}}function qc(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return y.defaultsDeep(t,e)}function Fc(e){const t={bar:{nameAlignment:"left"},line:{nameAlignment:"right"}};return y.defaultsDeep(t,e)}function Wc(e){console.log(e);const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,i={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return y.defaultsDeep(i,e)}class jc extends ge{constructor(){super(...arguments);P(this,"VERSION",8)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:Vc(r.config)})),this.version(3,r=>({...r,version:3,config:Bc(r.config)})),this.version(4,r=>({...r,version:4,config:Nc(r.config)})),this.version(5,r=>({...r,version:5,config:Gc(r.config)})),this.version(6,r=>({...r,version:6,config:qc(r.config)})),this.version(7,r=>({...r,version:7,config:Fc(r.config)})),this.version(8,r=>({...r,version:8,config:Wc(r.config)}))}}const Rc={displayName:"Pareto Chart",displayGroup:"ECharts-based charts",migrator:new jc,name:"paretoChart",viewRender:Dc,configRender:Oc,createConfig(){return{version:8,config:y.cloneDeep(On)}},triggers:[oa]},Vn={label_field:"",value_field:""};oe.use([de.PieChart,Ie.CanvasRenderer]);const Yc={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
154
- {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 Qc({context:e}){const{value:t}=j(e.instanceData,"config"),r=e.data,{width:i,height:s}=e.viewport,{label_field:o,value_field:u}=y.defaults({},t,Vn),l=m.useMemo(()=>r.map(f=>({name:f[o],value:Number(f[u])})),[r,o,u]),d=m.useMemo(()=>({series:{labelLayout:function(f){const g=f.labelRect.x<i/2,h=f.labelLinePoints;return y.set(h,[2,0],g?f.labelRect.x:f.labelRect.x+f.labelRect.width),{labelLinePoints:h}}}}),[i]),c=y.merge({},Yc,d,{series:{data:l}});return!i||!s?null:n(Me,{echarts:oe,option:c,style:{width:i,height:s},notMerge:!0,theme:"merico-light"})}function Uc({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,Vn),[t]),o=m.useMemo(()=>y.clone(s),[s]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,s),[g,s]);return d(["label_field","value_field"]),n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Pie Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[n(x.Controller,{control:u,name:"label_field",render:({field:b})=>n(U,{label:"Label Key",required:!0,data:i,...b})}),n(x.Controller,{control:u,name:"value_field",render:({field:b})=>n(U,{label:"Value Key",required:!0,data:i,...b})})]})]})})}class Xc extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Zc={displayName:"Pie Chart",displayGroup:"ECharts-based charts",migrator:new Xc,name:"pie",viewRender:Qc,configRender:Uc,createConfig(){return{version:1,config:y.cloneDeep(Vn)}}};function Kc(e){return n(O,{})}function Jc(e){return n(a.Text,{children:"Click heat block"})}const ua={id:"builtin:echarts:click-radar-chart:series",displayName:"Click radar chart series",nameRender:Jc,configRender:Kc,payload:[{name:"seriesType",description:"'radar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Qt={series_name_key:"name",background:{enabled:!0},label:{enabled:!0},dimensions:[]};function da(e){return e?t=>{try{return ue(t).format(e)}catch(r){return console.error(r),t}}:t=>t}function Hc(e){return{show:e.label.enabled,formatter:({dimensionIndex:t,value:r})=>da(e.dimensions[t].formatter)(r)}}function ep(e){return({name:t,marker:r,value:i})=>{if(i.length===0)return"";const s=i.map((o,u)=>{const l=e.dimensions[u],d=da(l.formatter);return`
153
+ `,Bc=()=>{const[e,t]=b.useState(!1);return p(P,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(r=>!r),children:e?"Close":"Click to see params for Label Template"}),n(a.Collapse,{in:e,children:n(st.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:Vc})})]})};function Nc({data:e,control:t,watch:r}){return r(["markLine"]),p(a.Stack,{children:[p(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"markLine.color",control:t,render:({field:i})=>n(Se,{...i})})]}),p(a.Stack,{spacing:4,children:[n(x.Controller,{name:"markLine.label_template",control:t,render:({field:i})=>n(a.Textarea,{autosize:!0,minRows:2,maxRows:4,label:"Label Template",sx:{flex:1},...i})}),n(Bc,{})]})]})}function Gc({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(Yt,{data:e,...i})})]}),n(x.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})})]})}function qc({data:e,control:t,watch:r}){return r(["data_key"]),n(a.Stack,{children:n(x.Controller,{name:"data_key",control:t,render:({field:i})=>n(Y,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...i})})})}function Fc({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaults({},t,Pn),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]),l(["x_axis","data_key","bar","line","dataZoom"]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,t),[f,t]);return p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Bar",children:"Bar"}),n(a.Tabs.Tab,{value:"Line",children:"Line"}),n(a.Tabs.Tab,{value:"80-20 Line",children:"80-20 Line"}),n(a.Tabs.Tab,{value:"Zooming",children:"Zooming"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(Gc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(qc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Bar",children:n(Lc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Line",children:n(Pc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"80-20 Line",children:n(Nc,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Zooming",children:n(x.Controller,{name:"dataZoom",control:o,render:({field:h})=>n($n,{...h})})})]})]})}function Wc(e){const{dataZoom:t=dt,...r}=e;return{...r,dataZoom:t}}function jc(e){const{markLine:t=da,...r}=e;return{...r,markLine:t}}function Yc(e){const t=v.defaultsDeep({},e.x_axis.axisLabel,{rotate:0,formatter:{...Be}});return{...e,x_axis:{...e.x_axis,axisLabel:t}}}function Rc(e){const{label_formatter:t=Ie}=e.bar;return{...e,bar:{...e.bar,label_formatter:t}}}function Qc(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return v.defaultsDeep(t,e)}function Uc(e){const t={bar:{nameAlignment:"left"},line:{nameAlignment:"right"}};return v.defaultsDeep(t,e)}function Xc(e){console.log(e);const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,i={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return v.defaultsDeep(i,e)}class Zc extends he{constructor(){super(...arguments);O(this,"VERSION",8)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:Wc(r.config)})),this.version(3,r=>({...r,version:3,config:jc(r.config)})),this.version(4,r=>({...r,version:4,config:Yc(r.config)})),this.version(5,r=>({...r,version:5,config:Rc(r.config)})),this.version(6,r=>({...r,version:6,config:Qc(r.config)})),this.version(7,r=>({...r,version:7,config:Uc(r.config)})),this.version(8,r=>({...r,version:8,config:Xc(r.config)}))}}const Kc={displayName:"Pareto Chart",displayGroup:"ECharts-based charts",migrator:new Zc,name:"paretoChart",viewRender:zc,configRender:Fc,createConfig(){return{version:8,config:v.cloneDeep(Pn)}},triggers:[ua]},Vn={label_field:"",value_field:""};le.use([de.PieChart,ke.CanvasRenderer]);const Jc={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
154
+ {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 Hc({context:e}){const{value:t}=W(e.instanceData,"config"),r=e.data,{width:i,height:s}=e.viewport,{label_field:o,value_field:u}=v.defaults({},t,Vn),l=b.useMemo(()=>r.map(f=>({name:f[o],value:Number(f[u])})),[r,o,u]),d=b.useMemo(()=>({series:{labelLayout:function(f){const g=f.labelRect.x<i/2,h=f.labelLinePoints;return v.set(h,[2,0],g?f.labelRect.x:f.labelRect.x+f.labelRect.width),{labelLinePoints:h}}}}),[i]),c=v.merge({},Jc,d,{series:{data:l}});return!i||!s?null:n(De,{echarts:le,option:c,style:{width:i,height:s},notMerge:!0,theme:"merico-light"})}function ep({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,Vn),[t]),o=b.useMemo(()=>v.clone(s),[s]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,s),[g,s]);return d(["label_field","value_field"]),n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Pie Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[n(x.Controller,{control:u,name:"label_field",render:({field:m})=>n(Y,{label:"Label Key",required:!0,data:i,...m})}),n(x.Controller,{control:u,name:"value_field",render:({field:m})=>n(Y,{label:"Value Key",required:!0,data:i,...m})})]})]})})}class tp extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const np={displayName:"Pie Chart",displayGroup:"ECharts-based charts",migrator:new tp,name:"pie",viewRender:Hc,configRender:ep,createConfig(){return{version:1,config:v.cloneDeep(Vn)}}};function rp(e){return n(P,{})}function ip(e){return n(a.Text,{children:"Click heat block"})}const ca={id:"builtin:echarts:click-radar-chart:series",displayName:"Click radar chart series",nameRender:ip,configRender:rp,payload:[{name:"seriesType",description:"'radar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Qt={series_name_key:"name",background:{enabled:!0},label:{enabled:!0},dimensions:[]};function pa(e){return e?t=>{try{return se(t).format(e)}catch(r){return console.error(r),t}}:t=>t}function ap(e){return{show:e.label.enabled,formatter:({dimensionIndex:t,value:r})=>pa(e.dimensions[t].formatter)(r)}}function sp(e){return({name:t,marker:r,value:i})=>{if(i.length===0)return"";const s=i.map((o,u)=>{const l=e.dimensions[u],d=pa(l.formatter);return`
155
155
  <tr>
156
156
  <td style="padding-left: 18px;">${l.name}</td>
157
157
  <td style="text-align: right; "><strong>${d(o)}</strong></td>
@@ -179,9 +179,9 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
179
179
  ${s.join("")}
180
180
  </tbody>
181
181
  </table>
182
- `}}const tp={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function np(e,t){const r=["#66B4DB","#39BFA2","#E46464","#33A678","#EEBA00","#9D88CB","#939943","#E49792","#09A2B8","#AF5F6B","#6CA157","#09A2B8","#6398C7","#E692BA","#97B566","#8CACE2","#CA79AC","#6DBC80","#B08F4B","#826BAF"],i=e.dimensions.map(({name:u,max:l})=>({name:u,max:l})),s=t.map(u=>({value:e.dimensions.map(({data_key:l})=>u[l]),name:u[e.series_name_key]})),o={radar:{indicator:i,splitArea:{show:!1}},tooltip:{confine:!0,backgroundColor:"rgba(255,255,255,0.6)",formatter:ep(e)},legend:{show:!0,bottom:0,left:"center",type:"scroll"},series:{type:"radar",data:s,symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:e.background.enabled?{opacity:.4}:void 0,label:Hc(e)},color:r};return y.merge({},tp,o)}oe.use([de.RadarChart,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer]);function rp({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=m.useMemo(()=>y.keyBy(t,e.series_name_key),[t,e.series_name_key]),l=Oe(s.triggerManager,ua.id),d=m.useCallback(g=>{const h=y.get(u,g.name,{error:"rowData is not found"});l.forEach(b=>{s.runInteraction(b.id,{...g,rowData:h})})},[u,l,s]),c=m.useMemo(()=>({click:d}),[d]),f=m.useMemo(()=>np(y.defaultsDeep({},e,Qt),t),[e,t]);return!r||!i?null:n(Me,{echarts:oe,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function ip({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=j(e.instanceData,"config"),{variables:s}=e,o=m.useMemo(()=>y.defaults({},i,Qt),[i]),u=e.data,{width:l,height:d}=e.viewport;return!l||!d||!o||y.isEmpty(o==null?void 0:o.dimensions)?null:n(a.Box,{children:n(rp,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}function ap({control:e,index:t,remove:r,data:i}){return p(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`dimensions.${t}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`dimensions.${t}.data_key`,control:e,render:({field:s})=>n(U,{label:"Data Key",required:!0,data:i,sx:{flex:1},...s})}),n(x.Controller,{name:`dimensions.${t}.max`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...s})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Formatter",labelPosition:"center"}),n(x.Controller,{name:`dimensions.${t}.formatter`,control:e,render:({field:s})=>n(Ve,{...s})})]}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:n(D.Trash,{size:16})})]},t)}function sp({control:e,watch:t,data:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"dimensions"}),u=t("dimensions"),l=i.map((b,w)=>({...b,...u[w]})),d=()=>{const b=new Date().getTime().toString();s({id:b,name:b,data_key:"",max:100,formatter:De})},c=y.get(l,"0.id",null),[f,g]=m.useState(c);m.useEffect(()=>{g(b=>b||c)},[c]);const h=b=>{o(b);const w=y.get(l,"0.id",null);g(w)};return p(O,{children:[n(a.Divider,{mt:15,variant:"dashed",label:"Metrics",labelPosition:"center"}),p(a.Tabs,{value:f,onTabChange:g,styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((b,w)=>n(a.Tabs.Tab,{value:b.id,children:b.name?b.name:w+1},w)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(V.IconPlus,{size:18,color:"#228be6"})})]}),l.map((b,w)=>n(a.Tabs.Panel,{value:b.id,children:n(ap,{data:r,control:e,index:w,remove:h})},w))]})]})}function op({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,Qt),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});m.useEffect(()=>{c(s)},[s]),l(["series_name_key","background","label"]);const f=d(),g=m.useMemo(()=>!y.isEqual(f,s),[f,s]);return n("form",{onSubmit:u(r),children:p(a.Stack,{spacing:"xs",children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Radar Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(D.DeviceFloppy,{size:20})})]}),n(a.Divider,{mt:15,variant:"dashed",label:"Basics",labelPosition:"center"}),n(x.Controller,{name:"series_name_key",control:o,render:({field:h})=>n(U,{label:"Series Name Field",required:!0,data:i,sx:{flex:1},...h})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"background.enabled",control:o,render:({field:h})=>n(a.Checkbox,{label:"Show background",checked:h.value,onChange:b=>h.onChange(b.currentTarget.checked)})}),n(x.Controller,{name:"label.enabled",control:o,render:({field:h})=>n(a.Checkbox,{label:"Show value label",checked:h.value,onChange:b=>h.onChange(b.currentTarget.checked)})})]}),n(sp,{control:o,watch:l,data:i})]})})}function lp(e){const{dimensions:t=[],...r}=e;function i({name:s="",data_key:o="",max:u=10,formatter:l=De}){return{name:s,data_key:o,max:u,formatter:l}}return{...r,dimensions:t.map(i)}}function up(e){const{dimensions:t=[],...r}=e;return{...r,dimensions:t.map(i=>({...i,id:i.id??i.name}))}}function dp(e){const t={background:{enabled:!0},label:{enabled:!0}};return y.defaultsDeep(t,e)}class cp extends ge{constructor(){super(...arguments);P(this,"VERSION",4)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{config:i}=r;return{...r,version:2,config:lp(i)}}),this.version(3,r=>{const{config:i}=r;return{...r,version:3,config:up(i)}}),this.version(4,r=>{const{config:i}=r;return{...r,version:4,config:dp(i)}})}}const pp={displayName:"Radar Chart",displayGroup:"ECharts-based charts",migrator:new cp,name:"radar",viewRender:ip,configRender:op,createConfig:()=>({version:4,config:Qt}),triggers:[ua]};function hp({regression:e},t){const r=[],i=[];if(t.length===0)return{regressionSeries:r,regressionXAxes:i};const{transform:s,plot:o,name:u}=e,l=ea(s,t);return r.push({...o,name:u,data:l,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:r,regressionXAxes:i}}const fp={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function gp(e,t){const r=y.uniqBy(t.map(o=>[o[e.x_axis.data_key],o[e.regression.y_axis_data_key]]),0),{regressionSeries:i}=hp(e,r),s={xAxis:{type:"category",name:e.x_axis.name??"",axisTick:{show:!0,alignWithLabel:!0}},yAxis:{name:e.y_axis.name??"",axisLine:{show:!0}},series:[{data:r,name:e.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...i]};return y.defaultsDeep({},s,fp)}function Ut(e,t,r){return 1-(1-e)*(t-1)/(t-r-1)}function mp(e,t){if(!t)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:r,x_axis:i,y_axis:s}=t,o=e.map(u=>[u[i.data_key],u[r.y_axis_data_key]]);if(r.transform.config.method==="linear"){const u=Ue.regressionLinear()(o),{a:l,b:d,rSquared:c}=u;return{expression:p(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:s.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:d}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:l}),n(a.Text,{children:"×"}),n(a.Text,{children:i.name})]}),rSquared:c,adjustedRSquared:Ut(c,e.length,1)}}if(r.transform.config.method==="exponential"){const{a:u,b:l,rSquared:d}=Ue.regressionExp()(o);return{expression:p(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:s.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:u}),n(a.Text,{children:"×"}),p(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.exp("}),n(a.Text,{weight:"bold",color:"gray",children:l}),n(a.Text,{children:"×"}),n(a.Text,{children:i.name}),n(a.Text,{children:")"})]})]}),rSquared:d,adjustedRSquared:Ut(d,e.length,1)}}if(r.transform.config.method==="logarithmic"){const{a:u,b:l,rSquared:d}=Ue.regressionLog()(o);return{expression:p(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:s.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:u}),n(a.Text,{children:"×"}),p(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.log("}),n(a.Text,{children:i.name}),n(a.Text,{children:")"}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:l})]})]}),rSquared:d,adjustedRSquared:Ut(d,e.length,1)}}if(r.transform.config.method==="polynomial"){const u=Ue.regressionPoly().order(r.transform.config.order)(o),{rSquared:l}=u;return console.log(u),{expression:"",rSquared:l,adjustedRSquared:Ut(l,e.length,1)}}return{expression:"",rSquared:0}}const Bn={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",lineStyle:{type:"solid",width:1}},name:"regression",y_axis_data_key:"value"}};oe.use([q.DataZoomComponent,de.ScatterChart,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer]);function bp({context:e}){const{value:t}=j(e.instanceData,"config"),{width:r,height:i}=e.viewport,s=m.useMemo(()=>{var h;const f=e.data,g=(h=t==null?void 0:t.regression)==null?void 0:h.y_axis_data_key;return g?f.map(b=>typeof b[g]=="number"?b:{...b,[g]:Number(b[g])}):f},[e.data,t==null?void 0:t.regression.y_axis_data_key]),o=m.useMemo(()=>gp(y.defaultsDeep({},t,Bn),s),[t,s]),{expression:u,rSquared:l,adjustedRSquared:d}=m.useMemo(()=>mp(s,t),[t,s]);if(!r||!i||!t)return null;let c=i;return u&&(c-=20),p(a.Box,{children:[u&&n(a.Text,{align:"center",size:12,children:u}),p(a.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[n(Me,{echarts:oe,option:o,style:{width:r-190,height:c},notMerge:!0,theme:"merico-light"}),l&&n(a.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:p("tbody",{children:[p("tr",{children:[n("td",{children:"R-Sq"}),n("td",{style:{textAlign:"right"},children:ue(l).format({output:"percent",mantissa:1})})]}),p("tr",{children:[n("td",{children:"R-Sq(Adjusted)"}),n("td",{style:{textAlign:"right"},children:ue(d).format({output:"percent",mantissa:1})})]})]})})]})]})}const vp=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function yp({control:e,watch:t,data:r}){const i=t("regression.transform.config.method");return p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"regression.name",control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:"regression.y_axis_data_key",control:e,render:({field:s})=>n(U,{label:"Value Field",required:!0,data:r,sx:{flex:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"regression.transform.config.method",control:e,render:({field:s})=>n(a.Select,{label:"Method",data:vp,sx:{flex:1},...s})}),i==="polynomial"&&n(x.Controller,{name:"regression.transform.config.order",control:e,render:({field:s})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...s})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"regression.plot.color",control:e,render:({field:s})=>n(Se,{...s})})]})]})}function xp({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaults({},t,Bn),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});m.useEffect(()=>{c(s)},[s]),l(["x_axis","y_axis","regression"]);const f=d(),g=m.useMemo(()=>!y.isEqual(f,t),[f,t]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[p(a.Accordion.Item,{value:"Axis",children:[n(a.Accordion.Control,{children:"Axis"}),p(a.Accordion.Panel,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.name",control:o,render:({field:h})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),n(x.Controller,{name:"x_axis.data_key",control:o,render:({field:h})=>n(U,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...h})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"y_axis.name",control:o,render:({field:h})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})})})]})]}),p(a.Accordion.Item,{value:"Regression",children:[n(a.Accordion.Control,{children:"Regression Line"}),n(a.Accordion.Panel,{children:n(yp,{control:o,watch:l,data:i})})]})]})]})})}class Cp extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const wp={displayName:"Regression Chart",displayGroup:"Merico suite",migrator:new Cp,name:"regressionChart",viewRender:bp,configRender:xp,createConfig(){return{version:1,config:y.cloneDeep(Bn)}}},Xt={content:""};function _p({context:e}){const{value:t}=j(e.instanceData,"config"),r=m.useMemo(()=>y.defaults({},t,Xt),[t]);return r!=null&&r.content?n(Nt,{value:r.content,styles:{root:{border:"none",height:"100%"},content:{padding:0}}}):null}function Sp(){const{editor:e}=X.useRichTextEditorContext();return n(X.RichTextEditor.Control,{onClick:()=>e==null?void 0:e.commands.insertTable({rows:3,cols:3,withHeaderRow:!0}),"aria-label":"Insert table",title:"Insert table",children:n(V.IconBorderAll,{stroke:1.5,size:16})})}const Nn=m.forwardRef(({value:e,onChange:t,styles:r={},label:i,onSubmit:s},o)=>{const[u,l]=m.useState(e),d=bi.useEditor({extensions:[vi,mi,X.Link,ui,li,si,pi.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),gi,fi,hi,di.configure({types:["heading","paragraph"]}),oi.configure({placeholder:"This is placeholder"}),ci,ai.Color],content:u,onUpdate:({editor:h})=>{l(h.getHTML())}});m.useEffect(()=>{l(e),d==null||d.commands.setContent(e)},[e]);const c=()=>{t(u),s==null||s()},f=e!==u,g=m.useMemo(()=>y.defaultsDeep({},{content:bn},r),[r]);return p(a.Stack,{spacing:4,sx:{flexGrow:1,position:"relative"},children:[p(a.Group,{align:"center",children:[n(a.Text,{size:14,fw:500,children:i}),n(a.ActionIcon,{color:"blue",disabled:!f,onClick:c,children:n(V.IconDeviceFloppy,{size:18})})]}),p(X.RichTextEditor,{editor:d,styles:g,children:[p(X.RichTextEditor.Toolbar,{sticky:!0,stickyOffset:0,children:[n(X.RichTextEditor.ControlsGroup,{children:n(X.RichTextEditor.ColorPicker,{colors:["#25262b","#868e96","#fa5252","#e64980","#be4bdb","#7950f2","#4c6ef5","#228be6","#15aabf","#12b886","#40c057","#82c91e","#fab005","#fd7e14"]})}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.Bold,{}),n(X.RichTextEditor.Italic,{}),n(X.RichTextEditor.Underline,{}),n(X.RichTextEditor.Strikethrough,{}),n(X.RichTextEditor.ClearFormatting,{}),n(X.RichTextEditor.Highlight,{}),n(X.RichTextEditor.Code,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.H1,{}),n(X.RichTextEditor.H2,{}),n(X.RichTextEditor.H3,{}),n(X.RichTextEditor.H4,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.Blockquote,{}),n(X.RichTextEditor.Hr,{}),n(X.RichTextEditor.BulletList,{}),n(X.RichTextEditor.OrderedList,{}),n(X.RichTextEditor.Subscript,{}),n(X.RichTextEditor.Superscript,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.Link,{}),n(X.RichTextEditor.Unlink,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.AlignLeft,{}),n(X.RichTextEditor.AlignCenter,{}),n(X.RichTextEditor.AlignJustify,{}),n(X.RichTextEditor.AlignRight,{})]}),n(X.RichTextEditor.ControlsGroup,{children:n(Sp,{})})]}),n(X.RichTextEditor.Content,{})]})]})});function Tp({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=m.useMemo(()=>y.defaults({},t,Xt),[t]),{control:s,handleSubmit:o,watch:u,reset:l}=x.useForm({defaultValues:i});u("content"),m.useEffect(()=>{l(i)},[i]);const d=m.useRef(null),c=()=>{var f;return(f=d.current)==null?void 0:f.click()};return n("form",{onSubmit:o(r),style:{flexGrow:1,display:"flex",flexDirection:"column"},children:p(a.Stack,{spacing:"xs",sx:{flexGrow:1},children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",display:"none"},children:[n(a.Text,{children:"Content"}),n(a.ActionIcon,{ref:d,type:"submit",mr:5,variant:"filled",color:"blue",children:n(D.DeviceFloppy,{size:20})})]}),n(x.Controller,{name:"content",control:s,render:({field:f})=>n(Nn,{...f,styles:{root:{flexGrow:1}},label:"Content",onSubmit:c})})]})})}class Dp extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}fixMalformedConfig(r){return y.defaults({},r,Xt)}configVersions(){this.version(1,r=>({version:1,config:this.fixMalformedConfig(r)}))}}const kp={displayName:"Rich Text",displayGroup:"Others",migrator:new Dp,name:"richText",viewRender:_p,configRender:Tp,createConfig(){return{version:1,config:y.cloneDeep(Xt)}}},Tt={static:{type:"static",color:Fe.random().css()},dynamic:{type:"dynamic",func_content:["function getColor({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here",' // return "blue"',"}"].join(`
183
- `)}},ca={id:"builtin:echarts:click-scatter-chart:series",displayName:"Click Scatter",nameRender:Mp,configRender:Ip,payload:[{name:"seriesType",description:"'scatter'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function Ip(e){return n(O,{})}function Mp(e){return n(a.Text,{children:"Click scatter"})}const pa={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
184
- `)},ha={label:je.on_axis,tooltip:je.in_tooltip},Gn={scatter:{y_data_key:"",name_data_key:"",symbolSize:{type:"static",size:10},color:Tt.static,label_position:"right",label_overflow:ha},stats:{templates:{top:"",bottom:""}},x_axis:{name:"",data_key:"",axisLabel:{rotate:0,formatter:{...pa}}},y_axes:[{name:"Y Axis",position:"left",nameAlignment:"center",label_formatter:De,min:"",max:"",show:!0}],tooltip:{metrics:[]},reference_lines:[],reference_areas:[],dataZoom:ut};function Ap(e){const t=e.y_axes.some(s=>!!s.name);let r=10;t&&(r+=20),e.dataZoom.x_axis_slider&&(r+=20);let i=5;return e.x_axis.name&&(i+=15),{top:r,bottom:i}}function Zt(e,t){if(e)return t[e]??void 0}function zp({reference_areas:e,variableValueMap:t}){const r=e.map(i=>[{name:i.content.text,value:i.content.text,itemStyle:i.itemStyle,label:i.label,xAxis:Zt(i.leftBottomPoint.x_data_key,t),yAxis:Zt(i.leftBottomPoint.y_data_key,t)},{xAxis:Zt(i.rightTopPoint.x_data_key,t),yAxis:Zt(i.rightTopPoint.y_data_key,t)}]);return{type:"scatter",name:"ref_areas",silent:!0,data:[],markArea:{data:r}}}function $p({type:e,...t},r,i,s){if(!e)return 10;if(e==="static"){const{size:l}=t;return l}const{func_content:o}=t,u=y.keyBy(r,i);return(l,d)=>{let c;d.name?c=u[d.name]:c=r[d.dataIndex];try{return new Function(`return ${o}`)()({rowData:c,params:d,variables:s},{lodash:y,interpolate:Pt.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function Ep({type:e,...t},r){if(!e)return Tt.static.color;if(e==="static"){const{color:s}=t;return s}const{func_content:i}=t;return({value:s})=>{try{return new Function(`return ${i}`)()({rowData:s,variables:r},{lodash:y,interpolate:Pt.interpolate})}catch(o){return console.error(`[getSeriesColor] failed parsing custom function, error: ${o.message}`),10}}}function Lp(e,t,r,i){return e.map(s=>{const o=s.orientation==="horizontal",u=o?"yAxis":"xAxis",l=o?"insideEndTop":"end";return{name:s.name,type:"line",hide_in_legend:!s.show_in_legend,yAxisIndex:s.yAxisIndex,data:[],lineStyle:s.lineStyle,markLine:{data:[{name:s.name,[u]:Number(r[s.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:s.lineStyle,label:{formatter:function(){return s.template?jt(s.template,t,i):""},position:l}}}})}function Pp({x_axis:e,scatter:t},r,i,s){return{label:{show:!!t.label_position,position:t.label_position,...Ke(t.label_overflow.label),formatter:({value:o})=>o[t.name_data_key]},type:"scatter",name:"",xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{color:Ep(t.color,i)},symbolSize:$p(t.symbolSize,r,e.data_key,i),encode:{x:e.data_key,y:t.y_data_key}}}function Op(e,t,r,i,s,o,u){return[Pp(e,i,u)].concat(Lp(e.reference_lines,o,u,i)).concat(zp({reference_areas:e.reference_areas,variableValueMap:u}))}function fa({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}function Vp(e,t){const r=e.find(u=>u.axisDim==="x"&&u.axisId==="main-x-axis");if(!r)return"";const{name:i,axisValue:s,axisIndex:o}=r;return t.x_axis.axisLabel.formatter.enabled?fa(t.x_axis.axisLabel.formatter)(s,o):s}const Bp=e=>{try{return ue(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Np(e,t){const{scatter:r}=e;return{confine:!0,formatter:function(i){const s=t[0]??t.default,o=Array.isArray(i)?i:[i];if(o.length===0)return"";const u=Vp(o,e),l=Ze(e.scatter.label_overflow.tooltip),d=o.map(({value:h})=>`
182
+ `}}const op={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function lp(e,t){const r=["#66B4DB","#39BFA2","#E46464","#33A678","#EEBA00","#9D88CB","#939943","#E49792","#09A2B8","#AF5F6B","#6CA157","#09A2B8","#6398C7","#E692BA","#97B566","#8CACE2","#CA79AC","#6DBC80","#B08F4B","#826BAF"],i=e.dimensions.map(({name:u,max:l})=>({name:u,max:l})),s=t.map(u=>({value:e.dimensions.map(({data_key:l})=>u[l]),name:u[e.series_name_key]})),o={radar:{indicator:i,splitArea:{show:!1}},tooltip:{confine:!0,backgroundColor:"rgba(255,255,255,0.6)",formatter:sp(e)},legend:{show:!0,bottom:0,left:"center",type:"scroll"},series:{type:"radar",data:s,symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:e.background.enabled?{opacity:.4}:void 0,label:ap(e)},color:r};return v.merge({},op,o)}le.use([de.RadarChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer]);function up({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=b.useMemo(()=>v.keyBy(t,e.series_name_key),[t,e.series_name_key]),l=Pe(s.triggerManager,ca.id),d=b.useCallback(g=>{const h=v.get(u,g.name,{error:"rowData is not found"});l.forEach(m=>{s.runInteraction(m.id,{...g,rowData:h})})},[u,l,s]),c=b.useMemo(()=>({click:d}),[d]),f=b.useMemo(()=>lp(v.defaultsDeep({},e,Qt),t),[e,t]);return!r||!i?null:n(De,{echarts:le,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function dp({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=W(e.instanceData,"config"),{variables:s}=e,o=b.useMemo(()=>v.defaults({},i,Qt),[i]),u=e.data,{width:l,height:d}=e.viewport;return!l||!d||!o||v.isEmpty(o==null?void 0:o.dimensions)?null:n(a.Box,{children:n(up,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}function cp({control:e,index:t,remove:r,data:i}){return p(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`dimensions.${t}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`dimensions.${t}.data_key`,control:e,render:({field:s})=>n(Y,{label:"Data Key",required:!0,data:i,sx:{flex:1},...s})}),n(x.Controller,{name:`dimensions.${t}.max`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...s})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Formatter",labelPosition:"center"}),n(x.Controller,{name:`dimensions.${t}.formatter`,control:e,render:({field:s})=>n(Ve,{...s})})]}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:n(k.Trash,{size:16})})]},t)}function pp({control:e,watch:t,data:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"dimensions"}),u=t("dimensions"),l=i.map((m,w)=>({...m,...u[w]})),d=()=>{const m=new Date().getTime().toString();s({id:m,name:m,data_key:"",max:100,formatter:Ie})},c=v.get(l,"0.id",null),[f,g]=b.useState(c);b.useEffect(()=>{g(m=>m||c)},[c]);const h=m=>{o(m);const w=v.get(l,"0.id",null);g(w)};return p(P,{children:[n(a.Divider,{mt:15,variant:"dashed",label:"Metrics",labelPosition:"center"}),p(a.Tabs,{value:f,onTabChange:g,styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((m,w)=>n(a.Tabs.Tab,{value:m.id,children:m.name?m.name:w+1},w)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(V.IconPlus,{size:18,color:"#228be6"})})]}),l.map((m,w)=>n(a.Tabs.Panel,{value:m.id,children:n(cp,{data:r,control:e,index:w,remove:h})},w))]})]})}function hp({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,Qt),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]),l(["series_name_key","background","label"]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,s),[f,s]);return n("form",{onSubmit:u(r),children:p(a.Stack,{spacing:"xs",children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Radar Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),n(a.Divider,{mt:15,variant:"dashed",label:"Basics",labelPosition:"center"}),n(x.Controller,{name:"series_name_key",control:o,render:({field:h})=>n(Y,{label:"Series Name Field",required:!0,data:i,sx:{flex:1},...h})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"background.enabled",control:o,render:({field:h})=>n(a.Checkbox,{label:"Show background",checked:h.value,onChange:m=>h.onChange(m.currentTarget.checked)})}),n(x.Controller,{name:"label.enabled",control:o,render:({field:h})=>n(a.Checkbox,{label:"Show value label",checked:h.value,onChange:m=>h.onChange(m.currentTarget.checked)})})]}),n(pp,{control:o,watch:l,data:i})]})})}function fp(e){const{dimensions:t=[],...r}=e;function i({name:s="",data_key:o="",max:u=10,formatter:l=Ie}){return{name:s,data_key:o,max:u,formatter:l}}return{...r,dimensions:t.map(i)}}function gp(e){const{dimensions:t=[],...r}=e;return{...r,dimensions:t.map(i=>({...i,id:i.id??i.name}))}}function mp(e){const t={background:{enabled:!0},label:{enabled:!0}};return v.defaultsDeep(t,e)}class bp extends he{constructor(){super(...arguments);O(this,"VERSION",4)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{config:i}=r;return{...r,version:2,config:fp(i)}}),this.version(3,r=>{const{config:i}=r;return{...r,version:3,config:gp(i)}}),this.version(4,r=>{const{config:i}=r;return{...r,version:4,config:mp(i)}})}}const yp={displayName:"Radar Chart",displayGroup:"ECharts-based charts",migrator:new bp,name:"radar",viewRender:dp,configRender:hp,createConfig:()=>({version:4,config:Qt}),triggers:[ca]};function vp({regression:e},t){const r=[],i=[];if(t.length===0)return{regressionSeries:r,regressionXAxes:i};const{transform:s,plot:o,name:u}=e,l=na(s,t);return r.push({...o,name:u,data:l,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:r,regressionXAxes:i}}const xp={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function Cp(e,t){const r=v.uniqBy(t.map(o=>[o[e.x_axis.data_key],o[e.regression.y_axis_data_key]]),0),{regressionSeries:i}=vp(e,r),s={xAxis:{type:"category",name:e.x_axis.name??"",axisTick:{show:!0,alignWithLabel:!0}},yAxis:{name:e.y_axis.name??"",axisLine:{show:!0}},series:[{data:r,name:e.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...i]};return v.defaultsDeep({},s,xp)}function Ut(e,t,r){return 1-(1-e)*(t-1)/(t-r-1)}function wp(e,t){if(!t)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:r,x_axis:i,y_axis:s}=t,o=e.map(u=>[u[i.data_key],u[r.y_axis_data_key]]);if(r.transform.config.method==="linear"){const u=Ue.regressionLinear()(o),{a:l,b:d,rSquared:c}=u;return{expression:p(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:s.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:d}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:l}),n(a.Text,{children:"×"}),n(a.Text,{children:i.name})]}),rSquared:c,adjustedRSquared:Ut(c,e.length,1)}}if(r.transform.config.method==="exponential"){const{a:u,b:l,rSquared:d}=Ue.regressionExp()(o);return{expression:p(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:s.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:u}),n(a.Text,{children:"×"}),p(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.exp("}),n(a.Text,{weight:"bold",color:"gray",children:l}),n(a.Text,{children:"×"}),n(a.Text,{children:i.name}),n(a.Text,{children:")"})]})]}),rSquared:d,adjustedRSquared:Ut(d,e.length,1)}}if(r.transform.config.method==="logarithmic"){const{a:u,b:l,rSquared:d}=Ue.regressionLog()(o);return{expression:p(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:s.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:u}),n(a.Text,{children:"×"}),p(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.log("}),n(a.Text,{children:i.name}),n(a.Text,{children:")"}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:l})]})]}),rSquared:d,adjustedRSquared:Ut(d,e.length,1)}}if(r.transform.config.method==="polynomial"){const u=Ue.regressionPoly().order(r.transform.config.order)(o),{rSquared:l}=u;return console.log(u),{expression:"",rSquared:l,adjustedRSquared:Ut(l,e.length,1)}}return{expression:"",rSquared:0}}const Bn={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",lineStyle:{type:"solid",width:1}},name:"regression",y_axis_data_key:"value"}};le.use([B.DataZoomComponent,de.ScatterChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer]);function _p({context:e}){const{value:t}=W(e.instanceData,"config"),{width:r,height:i}=e.viewport,s=b.useMemo(()=>{var h;const f=e.data,g=(h=t==null?void 0:t.regression)==null?void 0:h.y_axis_data_key;return g?f.map(m=>typeof m[g]=="number"?m:{...m,[g]:Number(m[g])}):f},[e.data,t==null?void 0:t.regression.y_axis_data_key]),o=b.useMemo(()=>Cp(v.defaultsDeep({},t,Bn),s),[t,s]),{expression:u,rSquared:l,adjustedRSquared:d}=b.useMemo(()=>wp(s,t),[t,s]);if(!r||!i||!t)return null;let c=i;return u&&(c-=20),p(a.Box,{children:[u&&n(a.Text,{align:"center",size:12,children:u}),p(a.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[n(De,{echarts:le,option:o,style:{width:r-190,height:c},notMerge:!0,theme:"merico-light"}),l&&n(a.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:p("tbody",{children:[p("tr",{children:[n("td",{children:"R-Sq"}),n("td",{style:{textAlign:"right"},children:se(l).format({output:"percent",mantissa:1})})]}),p("tr",{children:[n("td",{children:"R-Sq(Adjusted)"}),n("td",{style:{textAlign:"right"},children:se(d).format({output:"percent",mantissa:1})})]})]})})]})]})}const Sp=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function Tp({control:e,watch:t,data:r}){const i=t("regression.transform.config.method");return p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"regression.name",control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:"regression.y_axis_data_key",control:e,render:({field:s})=>n(Y,{label:"Value Field",required:!0,data:r,sx:{flex:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"regression.transform.config.method",control:e,render:({field:s})=>n(a.Select,{label:"Method",data:Sp,sx:{flex:1},...s})}),i==="polynomial"&&n(x.Controller,{name:"regression.transform.config.order",control:e,render:({field:s})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...s})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:"regression.plot.color",control:e,render:({field:s})=>n(Se,{...s})})]})]})}function kp({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaults({},t,Bn),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]),l(["x_axis","y_axis","regression"]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,t),[f,t]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[p(a.Accordion.Item,{value:"Axis",children:[n(a.Accordion.Control,{children:"Axis"}),p(a.Accordion.Panel,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.name",control:o,render:({field:h})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),n(x.Controller,{name:"x_axis.data_key",control:o,render:({field:h})=>n(Y,{label:"X Axis Data Field",required:!0,data:i,sx:{flex:1},...h})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"y_axis.name",control:o,render:({field:h})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})})})]})]}),p(a.Accordion.Item,{value:"Regression",children:[n(a.Accordion.Control,{children:"Regression Line"}),n(a.Accordion.Panel,{children:n(Tp,{control:o,watch:l,data:i})})]})]})]})})}class Dp extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Ip={displayName:"Regression Chart",displayGroup:"Merico suite",migrator:new Dp,name:"regressionChart",viewRender:_p,configRender:kp,createConfig(){return{version:1,config:v.cloneDeep(Bn)}}},Xt={content:""};function Mp({context:e}){const{value:t}=W(e.instanceData,"config"),r=b.useMemo(()=>v.defaults({},t,Xt),[t]);return r!=null&&r.content?n(Nt,{value:r.content,styles:{root:{border:"none",height:"100%"},content:{padding:0}}}):null}function Ap(){const{editor:e}=X.useRichTextEditorContext();return n(X.RichTextEditor.Control,{onClick:()=>e==null?void 0:e.commands.insertTable({rows:3,cols:3,withHeaderRow:!0}),"aria-label":"Insert table",title:"Insert table",children:n(V.IconBorderAll,{stroke:1.5,size:16})})}const Nn=b.forwardRef(({value:e,onChange:t,styles:r={},label:i,onSubmit:s},o)=>{const[u,l]=b.useState(e),d=vi.useEditor({extensions:[xi,yi,X.Link,ci,di,li,fi.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),bi,mi,gi,pi.configure({types:["heading","paragraph"]}),ui.configure({placeholder:"This is placeholder"}),hi,oi.Color],content:u,onUpdate:({editor:h})=>{l(h.getHTML())}});b.useEffect(()=>{l(e),d==null||d.commands.setContent(e)},[e]);const c=()=>{t(u),s==null||s()},f=e!==u,g=b.useMemo(()=>v.defaultsDeep({},{content:bn},r),[r]);return p(a.Stack,{spacing:4,sx:{flexGrow:1,position:"relative"},children:[p(a.Group,{align:"center",children:[n(a.Text,{size:14,fw:500,children:i}),n(a.ActionIcon,{color:"blue",disabled:!f,onClick:c,children:n(V.IconDeviceFloppy,{size:18})})]}),p(X.RichTextEditor,{editor:d,styles:g,children:[p(X.RichTextEditor.Toolbar,{sticky:!0,stickyOffset:0,children:[n(X.RichTextEditor.ControlsGroup,{children:n(X.RichTextEditor.ColorPicker,{colors:["#25262b","#868e96","#fa5252","#e64980","#be4bdb","#7950f2","#4c6ef5","#228be6","#15aabf","#12b886","#40c057","#82c91e","#fab005","#fd7e14"]})}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.Bold,{}),n(X.RichTextEditor.Italic,{}),n(X.RichTextEditor.Underline,{}),n(X.RichTextEditor.Strikethrough,{}),n(X.RichTextEditor.ClearFormatting,{}),n(X.RichTextEditor.Highlight,{}),n(X.RichTextEditor.Code,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.H1,{}),n(X.RichTextEditor.H2,{}),n(X.RichTextEditor.H3,{}),n(X.RichTextEditor.H4,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.Blockquote,{}),n(X.RichTextEditor.Hr,{}),n(X.RichTextEditor.BulletList,{}),n(X.RichTextEditor.OrderedList,{}),n(X.RichTextEditor.Subscript,{}),n(X.RichTextEditor.Superscript,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.Link,{}),n(X.RichTextEditor.Unlink,{})]}),p(X.RichTextEditor.ControlsGroup,{children:[n(X.RichTextEditor.AlignLeft,{}),n(X.RichTextEditor.AlignCenter,{}),n(X.RichTextEditor.AlignJustify,{}),n(X.RichTextEditor.AlignRight,{})]}),n(X.RichTextEditor.ControlsGroup,{children:n(Ap,{})})]}),n(X.RichTextEditor.Content,{})]})]})});function $p({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=b.useMemo(()=>v.defaults({},t,Xt),[t]),{control:s,handleSubmit:o,watch:u,reset:l}=x.useForm({defaultValues:i});u("content"),b.useEffect(()=>{l(i)},[i]);const d=b.useRef(null),c=()=>{var f;return(f=d.current)==null?void 0:f.click()};return n("form",{onSubmit:o(r),style:{flexGrow:1,display:"flex",flexDirection:"column"},children:p(a.Stack,{spacing:"xs",sx:{flexGrow:1},children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",display:"none"},children:[n(a.Text,{children:"Content"}),n(a.ActionIcon,{ref:d,type:"submit",mr:5,variant:"filled",color:"blue",children:n(k.DeviceFloppy,{size:20})})]}),n(x.Controller,{name:"content",control:s,render:({field:f})=>n(Nn,{...f,styles:{root:{flexGrow:1}},label:"Content",onSubmit:c})})]})})}class zp extends he{constructor(){super(...arguments);O(this,"VERSION",1)}fixMalformedConfig(r){return v.defaults({},r,Xt)}configVersions(){this.version(1,r=>({version:1,config:this.fixMalformedConfig(r)}))}}const Ep={displayName:"Rich Text",displayGroup:"Others",migrator:new zp,name:"richText",viewRender:Mp,configRender:$p,createConfig(){return{version:1,config:v.cloneDeep(Xt)}}},kt={static:{type:"static",color:Fe.random().css()},dynamic:{type:"dynamic",func_content:["function getColor({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here",' // return "blue"',"}"].join(`
183
+ `)}},ha={id:"builtin:echarts:click-scatter-chart:series",displayName:"Click Scatter",nameRender:Op,configRender:Lp,payload:[{name:"seriesType",description:"'scatter'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function Lp(e){return n(P,{})}function Op(e){return n(a.Text,{children:"Click scatter"})}const fa={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
184
+ `)},ga={label:je.on_axis,tooltip:je.in_tooltip},Gn={scatter:{y_data_key:"",name_data_key:"",symbolSize:{type:"static",size:10},color:kt.static,label_position:"right",label_overflow:ga},stats:{templates:{top:"",bottom:""}},x_axis:{name:"",data_key:"",axisLabel:{rotate:0,formatter:{...fa}}},y_axes:[{name:"Y Axis",position:"left",nameAlignment:"center",label_formatter:Ie,min:"",max:"",show:!0}],tooltip:{metrics:[]},reference_lines:[],reference_areas:[],dataZoom:dt};function Pp(e){const t=e.y_axes.some(s=>!!s.name);let r=10;t&&(r+=20),e.dataZoom.x_axis_slider&&(r+=20);let i=5;return e.x_axis.name&&(i+=15),{top:r,bottom:i}}function Zt(e,t){if(e)return t[e]??void 0}function Vp({reference_areas:e,variableValueMap:t}){const r=e.map(i=>[{name:i.content.text,value:i.content.text,itemStyle:i.itemStyle,label:i.label,xAxis:Zt(i.leftBottomPoint.x_data_key,t),yAxis:Zt(i.leftBottomPoint.y_data_key,t)},{xAxis:Zt(i.rightTopPoint.x_data_key,t),yAxis:Zt(i.rightTopPoint.y_data_key,t)}]);return{type:"scatter",name:"ref_areas",silent:!0,data:[],markArea:{data:r}}}function Bp({type:e,...t},r,i,s){if(!e)return 10;if(e==="static"){const{size:l}=t;return l}const{func_content:o}=t,u=v.keyBy(r,i);return(l,d)=>{let c;d.name?c=u[d.name]:c=r[d.dataIndex];try{return new Function(`return ${o}`)()({rowData:c,params:d,variables:s},{lodash:v,interpolate:at.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function Np({type:e,...t},r){if(!e)return kt.static.color;if(e==="static"){const{color:s}=t;return s}const{func_content:i}=t;return({value:s})=>{try{return new Function(`return ${i}`)()({rowData:s,variables:r},{lodash:v,interpolate:at.interpolate})}catch(o){return console.error(`[getSeriesColor] failed parsing custom function, error: ${o.message}`),10}}}function Gp(e,t,r,i){return e.map(s=>{const o=s.orientation==="horizontal",u=o?"yAxis":"xAxis",l=o?"insideEndTop":"end";return{name:s.name,type:"line",hide_in_legend:!s.show_in_legend,yAxisIndex:s.yAxisIndex,data:[],lineStyle:s.lineStyle,markLine:{data:[{name:s.name,[u]:Number(r[s.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:s.lineStyle,label:{formatter:function(){return s.template?jt(s.template,t,i):""},position:l}}}})}function qp({x_axis:e,scatter:t},r,i,s){return{label:{show:!!t.label_position,position:t.label_position,...Ke(t.label_overflow.label),formatter:({value:o})=>o[t.name_data_key]},type:"scatter",name:"",xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{color:Np(t.color,i)},symbolSize:Bp(t.symbolSize,r,e.data_key,i),encode:{x:e.data_key,y:t.y_data_key}}}function Fp(e,t,r,i,s,o,u){return[qp(e,i,u)].concat(Gp(e.reference_lines,o,u,i)).concat(Vp({reference_areas:e.reference_areas,variableValueMap:u}))}function ma({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}function Wp(e,t){const r=e.find(u=>u.axisDim==="x"&&u.axisId==="main-x-axis");if(!r)return"";const{name:i,axisValue:s,axisIndex:o}=r;return t.x_axis.axisLabel.formatter.enabled?ma(t.x_axis.axisLabel.formatter)(s,o):s}const jp=e=>{try{return se(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Yp(e,t){const{scatter:r}=e;return{confine:!0,formatter:function(i){const s=t[0]??t.default,o=Array.isArray(i)?i:[i];if(o.length===0)return"";const u=Wp(o,e),l=Ze(e.scatter.label_overflow.tooltip),d=o.map(({value:h})=>`
185
185
  <th style="text-align: right; padding-right: 1em">
186
186
  <div style="${l}">${h[r.name_data_key]}</div>
187
187
  </th>
@@ -196,14 +196,14 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
196
196
  </td>`).join("")}
197
197
  </tr>`],f=e.tooltip.metrics.map(h=>`<tr>
198
198
  <th style="text-align: right;">${h.name}</th>
199
- ${o.map(({value:b})=>`<td style="text-align: right; padding: 0 1em;">${Bp(b[h.data_key])}</td>`).join("")}
199
+ ${o.map(({value:m})=>`<td style="text-align: right; padding: 0 1em;">${jp(m[h.data_key])}</td>`).join("")}
200
200
  </tr>`);return c.push(...f),`
201
201
  <table style="width: auto">
202
202
  <thead><tr>${d.join("")}</tr></thead>
203
203
  <tbody>${c.join("")}</tbody>
204
204
  </table>
205
- `}}}function Gp(e,t){const r=t.every(s=>!Number.isNaN(Number(s))),{axisLabel:i}=e.x_axis;return[{data:t,name:e.x_axis.name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:r?"value":"category",axisLabel:{...i,formatter:fa(i.formatter)}}]}function qp(e,t){return e.y_axes.map(({nameAlignment:r,min:i,max:s,...o},u)=>{let l=o.position;return l||(l=u>0?"right":"left"),{...o,min:i||void 0,max:s||void 0,position:l,axisLabel:{show:!0,formatter:t[u]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}function Fp(){return{show:!1,bottom:0,left:"center",type:"scroll"}}const Wp={tooltip:{trigger:"axis"},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0}}],grid:{top:10,left:20,right:15,bottom:25,containLabel:!0}};function jp(e,t,r){const i=r.reduce((c,f)=>{const g=ot(f,t);return c[f.name]=Je(f,g),c},{}),s=e.y_axes.reduce((c,{label_formatter:f},g)=>(c[g]=function(b){let w=b;if(typeof b=="object"&&(Array.isArray(b.value)&&b.value.length===2?w=b.value[1]:w=b.value),!f)return w;try{return ue(w).format(f)}catch(C){return console.error(C),w}},c),{default:({value:c})=>c}),o=y.uniq(t.map(c=>c[e.x_axis.data_key])),u=o.every(c=>!Number.isNaN(Number(c))),l=Op(e,o,u,t,s,r,i),d={xAxis:Gp(e,o),yAxis:qp(e,s),series:l,dataset:[{source:t}],tooltip:Np(e,s),grid:Ap(e),legend:Fp(),dataZoom:Mn(e.dataZoom)};return y.defaultsDeep({},d,Wp)}oe.use([q.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer,q.MarkLineComponent,q.MarkAreaComponent]);function ga(e){return e.trim().length>0}function Rp({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=m.useMemo(()=>y.keyBy(t,e.x_axis.data_key),[t,e.x_axis.data_key]),l=Oe(s.triggerManager,ca.id),d=m.useCallback(g=>{const h=g.value[0],b=y.get(u,h,{error:"rowData is not found"});l.forEach(w=>{s.runInteraction(w.id,{...g,rowData:b})})},[u,l,s]),c=m.useMemo(()=>({click:d}),[d]),f=m.useMemo(()=>jp(e,t,o),[e,t]);return!r||!i?null:n(Me,{echarts:oe,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function Yp({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=j(e.instanceData,"config"),{variables:s}=e,o=m.useMemo(()=>y.defaults({},i,Gn),[i]),u=e.data,{width:l,height:d}=e.viewport,{ref:c,height:f}=ve.useElementSize(),{ref:g,height:h}=ve.useElementSize(),b=m.useMemo(()=>{const{stats:{templates:C}}=o;return{top:St(C.top,s,u),bottom:St(C.bottom,s,u)}},[o,u]),w=Math.max(0,d-f-h);return p(a.Box,{children:[n(a.Text,{ref:c,align:"left",size:"xs",pl:"sm",sx:{display:ga(o.stats.templates.top)?"block":"none"},children:Object.values(b.top).map(C=>C)}),n(Rp,{variables:s,width:l,height:w,data:u,conf:o,interactionManager:r}),n(a.Text,{ref:g,align:"left",size:"xs",pl:"sm",sx:{display:ga(o.stats.templates.bottom)?"block":"none"},children:Object.values(b.bottom).map(C=>C)})]})}const Qp=m.forwardRef(({value:e,onChange:t,xAxisOptions:r,yAxisOptions:i,variableOptions:s},o)=>{const u=(l,d)=>{const c=y.cloneDeep(e);y.set(c,l,d),t(c)};return p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Content",labelPosition:"right"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Content Text",value:e.content.text,onChange:l=>u("content.text",l.currentTarget.value)}),n(Ln,{label:"Text Position",value:e.label.position,onChange:l=>u("label.position",l)})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Endpoints",labelPosition:"right"}),p(a.Group,{grow:!0,noWrap:!0,children:[r&&n(a.Select,{label:"X Axis",data:r,value:e.xAxisIndex,onChange:l=>u("xAxisIndex",l)}),i&&n(a.Select,{label:"Y Axis",data:i,value:e.yAxisIndex,onChange:l=>u("xAxisIndex",l)})]}),p(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Left-Bottom Point"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:s,value:e.leftBottomPoint.x_data_key,onChange:l=>u("leftBottomPoint.x_data_key",l??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:s,value:e.leftBottomPoint.y_data_key,onChange:l=>u("leftBottomPoint.y_data_key",l??""),clearable:!0})]})]}),p(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Right-Top Point"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:s,value:e.rightTopPoint.x_data_key,onChange:l=>u("rightTopPoint.x_data_key",l??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:s,value:e.rightTopPoint.y_data_key,onChange:l=>u("rightTopPoint.y_data_key",l??""),clearable:!0})]})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Style",labelPosition:"right"}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Background Color"}),n(Se,{value:e.itemStyle.color,onChange:l=>u("itemStyle.color",l)})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Text Color"}),n(Se,{value:e.label.color,onChange:l=>u("label.color",l)})]})]})});function Up(){const e=new Date().getTime().toString();return{id:e,content:{text:e},itemStyle:{color:"rgba(0,0,0,0.05)"},label:{position:"inside",color:"rgba(0,0,0,0.5)"},leftBottomPoint:{x_data_key:"",y_data_key:""},rightTopPoint:{x_data_key:"",y_data_key:""},xAxisIndex:"0",yAxisIndex:"0"}}function Xp({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_areas"}),u=t("reference_areas"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>{const h=Up();s(h)},c=m.useMemo(()=>r.map(h=>({label:h.name,value:h.name})),[r]),f=t("y_axes"),g=m.useMemo(()=>f.map(({name:h},b)=>({label:h,value:b.toString()})),[f]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:b.toString(),children:b+1},b)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:b.toString(),children:n(x.Controller,{name:`reference_areas.${b}`,control:e,render:({field:w})=>p(a.Stack,{children:[n(Qp,{variableOptions:c,yAxisOptions:g,...w}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(V.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>o(b),children:"Delete this Reference Area"})]})})},b))]})}const Zp=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],Kp=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function Jp({control:e,index:t,remove:r,watch:i,variableOptions:s,yAxisOptions:o}){const u=i(`reference_lines.${t}.orientation`);return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:s,sx:{flex:1},...l})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...l})}),p(a.Group,{grow:!0,children:[p(a.Stack,{children:[n(x.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:l})=>n(a.Select,{label:"Orientation",data:Kp,required:!0,sx:{flex:1},...l})}),u==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),u==="horizontal"&&n(x.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:o,disabled:o.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:Zp,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function Hp({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>{const h={name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:Fe.random().css()},show_in_legend:!1,yAxisIndex:0};s(h)},c=m.useMemo(()=>r.map(h=>({label:h.name,value:h.name})),[r]),f=t("y_axes"),g=m.useMemo(()=>f.map(({name:h},b)=>({label:h,value:b.toString()})),[f]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:b.toString(),children:b+1},b)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:b.toString(),children:n(Jp,{control:e,index:b,remove:o,watch:t,variableOptions:c,yAxisOptions:g})},b))]})}const eh=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{children:n(_e,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},th=({value:e,onChange:t,data:r})=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e),d=()=>{o();const{type:h,func_content:b}=u,w={type:h,func_content:b};l(w),t(w)},c=()=>{o(),l(e)},f=h=>{l(b=>({...b,func_content:h}))},g=()=>{f(Tt.dynamic.func_content)};return p(O,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic color",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(eh,{value:u.func_content,onChange:f}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},nh=({value:e,onChange:t,data:r})=>e.type!=="dynamic"?null:n(th,{value:e,onChange:t,data:r}),rh=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=i=>{t({...e,color:i})};return n(a.ColorInput,{label:" ",format:"rgb",value:e.color,onChange:r})},ih=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],ah=m.forwardRef(({label:e="Color",value:t,onChange:r,data:i},s)=>{const o=u=>{r({...Tt[u]})};return p(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:s,label:e,data:ih,value:t.type,onChange:o,sx:{flexGrow:1}}),n(rh,{value:t,onChange:r}),n(nh,{value:t,onChange:r,data:i})]})}),sh=m.forwardRef(({value:e,onChange:t},r)=>{const i=o=>{t({...e,label:o})},s=o=>{t({...e,tooltip:o})};return p(a.Stack,{ref:r,spacing:0,children:[n(qt,{sectionTitle:"Overflow on Chart",value:e.label,onChange:i}),n(qt,{sectionTitle:"Overflow in Tooltip",value:e.tooltip,onChange:s})]})}),oh=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{children:n(_e,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},ma={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
206
- `)}},lh=({value:e,onChange:t,data:r})=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e),d=()=>{o();const{type:h,func_content:b}=u,w={type:h,func_content:b};l(w),t(w)},c=()=>{o(),l(e)},f=h=>{l(b=>({...b,func_content:h}))},g=()=>{f(ma.dynamic.func_content)};return p(O,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(oh,{value:u.func_content,onChange:f}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},uh=({value:e,onChange:t,data:r})=>e.type!=="dynamic"?null:n(lh,{value:e,onChange:t,data:r}),dh=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=i=>{t({...e,size:i})};return n(O,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:r})})},ch=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],ph=m.forwardRef(({label:e="Size",value:t,onChange:r,data:i},s)=>{const o=u=>{r({...ma[u]})};return p(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:s,label:e,data:ch,value:t.type,onChange:o,sx:{flexGrow:1}}),n(dh,{value:t,onChange:r}),n(uh,{value:t,onChange:r,data:i})]})}),hh=[{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 fh({data:e,control:t,watch:r}){return r(["scatter"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"scatter.name_data_key",control:t,render:({field:i})=>n(U,{label:"Name Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"scatter.y_data_key",control:t,render:({field:i})=>n(U,{label:"Value Data Field",required:!0,data:e,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Style",labelPosition:"center"}),n(x.Controller,{name:"scatter.symbolSize",control:t,render:({field:i})=>n(ph,{label:"Size",data:e,...i})}),n(x.Controller,{name:"scatter.color",control:t,render:({field:i})=>n(ah,{data:e,...i})}),n(a.Divider,{mb:-15,label:"Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"scatter.label_position",control:t,render:({field:i})=>n(a.Select,{label:"Label Position",data:hh,...i})})}),n(x.Controller,{name:"scatter.label_overflow",control:t,render:({field:i})=>n(sh,{...i})})]})}function gh({control:e,watch:t}){return t("stats"),n(a.Stack,{children:p(a.Stack,{spacing:0,children:[n(x.Controller,{name:"stats.templates.top",control:e,render:({field:r})=>n(Ct,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...r})}),n(x.Controller,{name:"stats.templates.bottom",control:e,render:({field:r})=>n(Ct,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...r})})]})})}const mh=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`tooltip.metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`tooltip.metrics.${r}.data_key`,control:e,render:({field:s})=>n(U,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),bh=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"tooltip.metrics"}),u=t("tooltip.metrics"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("tooltip.metrics.0.id"),[f,g]=m.useState(()=>c??null);return m.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(O,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(D.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:b},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:h.id,children:n(mh,{control:e,index:b,remove:o,data:r},h.id)},h.id))]})]})};function vh({data:e,control:t,watch:r}){return n(bh,{control:t,watch:r,data:e})}const yh=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(_e,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},xh=m.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e);m.useEffect(()=>{l(e)},[e]);const d=b=>{l({...u,enabled:b})},c=()=>{o();const{enabled:b,func_content:w}=u,C={enabled:b,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=b=>{l(w=>({...w,func_content:b}))},h=()=>{g(pa.func_content)};return p(O,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:b=>d(b.currentTarget.checked)}),n(yh,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})});function Ch({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(xh,{data:e,...i})})]})]})}const wh=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],_h=[{label:"left",value:"left"},{label:"right",value:"right"}];function Sh({control:e,index:t,remove:r}){return p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),n(x.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:wh,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:i})=>n(a.Select,{label:"Position",required:!0,data:_h,sx:{flex:1},...i})})}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:i})=>n(Ve,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:i})=>n(a.TextInput,{label:"Min",...i})}),n(x.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:i})=>n(a.TextInput,{label:"Max",...i})})]})]}),n(a.Button,{mt:20,leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),disabled:t===0,children:"Delete this YAxis"})]})}function Th({control:e,watch:t}){const{fields:r,append:i,remove:s}=x.useFieldArray({control:e,name:"y_axes"}),o=t("y_axes"),u=r.map((d,c)=>({...d,...o[c]})),l=()=>i({name:"",label_formatter:De});return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[u.map((d,c)=>n(a.Tabs.Tab,{value:c.toString(),children:c+1},c)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),u.map((d,c)=>n(a.Tabs.Panel,{value:c.toString(),children:n(Sh,{control:e,index:c,remove:s})},c))]})}function Dh(e){return e||{templates:{top:"",bottom:""}}}function kh({reference_lines:e=[],stats:t,...r}){return{reference_lines:e,stats:Dh(t),...r}}function Ih({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),{variables:i}=e,s=e.data,o=m.useMemo(()=>y.defaultsDeep({},t,Gn),[t]),u=m.useMemo(()=>kh(o),[o]);m.useEffect(()=>{!y.isEqual(o,u)&&(console.log("config malformed, resetting to defaults",o,u),r(u))},[o,u]);const{control:l,handleSubmit:d,watch:c,getValues:f,reset:g}=x.useForm({defaultValues:u});m.useEffect(()=>{g(u)},[u]);const h=f(),b=m.useMemo(()=>!y.isEqual(h,o),[h,o]);return c(["dataZoom"]),n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:d(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!b,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axes",children:"Y Axes"}),n(a.Tabs.Tab,{value:"Scatter",children:"Scatter"}),n(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"}),n(a.Tabs.Tab,{value:"Stats",children:"Stats"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"}),n(a.Tabs.Tab,{value:"Reference Areas",children:"Reference Areas"}),n(a.Tabs.Tab,{value:"Zooming",children:"Zooming"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(Ch,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(Th,{control:l,watch:c})}),n(a.Tabs.Panel,{value:"Scatter",children:n(fh,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(vh,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Stats",children:n(gh,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(Hp,{variables:i,control:l,watch:c})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(Xp,{variables:i,control:l,watch:c})}),n(a.Tabs.Panel,{value:"Zooming",children:n(x.Controller,{name:"dataZoom",control:l,render:({field:w})=>n(zn,{...w})})})]})]})})}function Mh(e){const{dataZoom:t=ut,...r}=e;return{...r,dataZoom:t}}function Ah(e){const t={scatter:{label_overflow:ha}};return y.defaultsDeep(t,e)}function zh(e){const{color:t}=e.scatter;return typeof t=="string"?{...e,scatter:{...e.scatter,color:{...Tt.static,color:t}}}:e}function $h(e){const t=e.reference_lines.map(r=>{const{lineStyle:i={type:"dashed",width:1,color:Fe.random().css()},show_in_legend:s=!1,yAxisIndex:o=0}=r;return{...r,lineStyle:i,show_in_legend:s,yAxisIndex:o}});return{...e,reference_lines:t}}class Eh extends ge{constructor(){super(...arguments);P(this,"VERSION",7)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{tooltip:i={metrics:[]},...s}=r.config;return{...r,version:2,config:{...s,tooltip:i}}}),this.version(3,r=>({...r,version:3,config:Mh(r.config)})),this.version(4,r=>{const{config:i}=r;return{...r,version:5,config:Ah(i)}}),this.version(6,r=>{const{config:i}=r;return{...r,version:6,config:zh(i)}}),this.version(7,r=>{const{config:i}=r;return{...r,version:7,config:$h(i)}})}}const Lh={displayName:"Scatter Chart",displayGroup:"ECharts-based charts",migrator:new Eh,name:"scatterChart",viewRender:Yp,configRender:Ih,createConfig(){return{version:7,config:y.cloneDeep(Gn)}},triggers:[ca]},qn={align:"center",template:"The variable ${value} is defined in Variables section"};function Ph(e){if("variables"in e)return e;const{align:t,size:r,weight:i,color:s,content:{prefix:o="",data_field:u="value",formatter:l={output:"number",mantissa:0},postfix:d=""}={}}=e;return{align:t,template:`${o} \${value} ${d}`,variables:[{name:"value",data_field:u,aggregation:{type:"none",config:{}},formatter:l,color:s,weight:i,size:r}]}}function Oh(e){return y.omit(e,["variables"])}function Vh(e){const t=y.cloneDeep(e),r=y.get(t,"color.valueRange");return r!==void 0&&y.set(t,"color.valueRange",r.map(i=>Number(i))),t}class Bh extends ge{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:Ph(r)})),this.version(2,(r,{panelModel:i})=>{const{config:s}=r;return(s.variables||[]).forEach(u=>{i.variables.find(l=>l.name===u.name)||i.addVariable(Vh(u))}),{...r,version:2,config:Oh(s)}})}}const Nh=T.observer(({context:e})=>{const t=B(),{value:r=qn}=j(e.instanceData,"config"),{variables:i}=e,{template:s,align:o}=r,u=m.useMemo(()=>{try{const d={filters:t.filters.values,context:t.context.current};return y.template(s)(d)}catch{return s}},[t.filters.values,t.context.current,s]),l=m.useMemo(()=>St(u,i,e.data),[u,i,e.data,e]);return n(a.Text,{align:o,children:Object.values(l).map((d,c)=>n(m.Fragment,{children:d},c))})}),Gh=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function qh({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=m.useMemo(()=>{const{align:g,template:h=""}=y.defaultsDeep({},t,qn);return{template:h,align:g}},[t]),{control:s,handleSubmit:o,watch:u,getValues:l,reset:d}=x.useForm({defaultValues:i});m.useEffect(()=>{d(i)},[i]),u(["template","align"]);const c=l(),f=m.useMemo(()=>!y.isEqual(c,t),[c,t]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:o(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{weight:500,children:"Stats Configurations"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:n(D.DeviceFloppy,{size:20})})]}),n(x.Controller,{name:"template",control:s,render:({field:g})=>n(Ct,{label:"Template",py:"md",sx:{flexGrow:1},...g})}),n(x.Controller,{name:"align",control:s,render:({field:g})=>n(a.Select,{label:"Horizontal Alignment",data:Gh,...g})})]})})}const Fh={createConfig(){return{version:2,config:qn}},displayName:"Stats",displayGroup:"Others",migrator:new Bh,name:"stats",viewRender:Nh,configRender:qh},Fn={label_key:"",value_key:"",group_key:"",levels:[]};function Wh(e){const t=new Set(e.map(i=>i.parent_id)),r=new Set(e.map(i=>i.id));return t.forEach(i=>{i===null||r.has(i)||e.push({id:i,name:i,parent_id:null})}),e}function jh(e){const t=Wh(e).map(s=>({...s,children:[]})),r=y.keyBy(t,s=>s.id),i=[];return t.forEach(s=>{if(!s.parent_id||!r[s.parent_id]){i.push(s);return}r[s.parent_id].children.push(s)}),i}function Rh(e,t){const{label_key:r,value_key:i,group_key:s}=e,o=r,u=t.map(l=>({...l,id:l[o],parent_id:l[s],name:l[r],value:l[i]?Number(l[i]):l[i]}));return s?jh(u):u}const Yh=e=>({treePathInfo:t,name:r,value:i})=>{if(t.length===1||!e)return r;try{const s=t[t.length-2].value;if(i/s<e)return" "}catch{return r}};function Qh(e){const{levels:t}=e;return t.map(r=>{const{show_label_tolerance:i,...s}=r.label;return{...r,label:{...s,formatter:Yh(i)}}})}function Uh(){return({treePathInfo:e,name:t,value:r,color:i,marker:s,...o})=>{const u=e.slice(0,e.length-1),l=[`<tr>
205
+ `}}}function Rp(e,t){const r=t.every(s=>!Number.isNaN(Number(s))),{axisLabel:i}=e.x_axis;return[{data:t,name:e.x_axis.name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:r?"value":"category",axisLabel:{...i,formatter:ma(i.formatter)}}]}function Qp(e,t){return e.y_axes.map(({nameAlignment:r,min:i,max:s,...o},u)=>{let l=o.position;return l||(l=u>0?"right":"left"),{...o,min:i||void 0,max:s||void 0,position:l,axisLabel:{show:!0,formatter:t[u]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}function Up(){return{show:!1,bottom:0,left:"center",type:"scroll"}}const Xp={tooltip:{trigger:"axis"},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0}}],grid:{top:10,left:20,right:15,bottom:25,containLabel:!0}};function Zp(e,t,r){const i=r.reduce((c,f)=>{const g=lt(f,t);return c[f.name]=Je(f,g),c},{}),s=e.y_axes.reduce((c,{label_formatter:f},g)=>(c[g]=function(m){let w=m;if(typeof m=="object"&&(Array.isArray(m.value)&&m.value.length===2?w=m.value[1]:w=m.value),!f)return w;try{return se(w).format(f)}catch(C){return console.error(C),w}},c),{default:({value:c})=>c}),o=v.uniq(t.map(c=>c[e.x_axis.data_key])),u=o.every(c=>!Number.isNaN(Number(c))),l=Fp(e,o,u,t,s,r,i),d={xAxis:Rp(e,o),yAxis:Qp(e,s),series:l,dataset:[{source:t}],tooltip:Yp(e,s),grid:Pp(e),legend:Up(),dataZoom:Mn(e.dataZoom)};return v.defaultsDeep({},d,Xp)}le.use([B.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer,B.MarkLineComponent,B.MarkAreaComponent]);function ba(e){return e.trim().length>0}function Kp({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=b.useMemo(()=>v.keyBy(t,e.x_axis.data_key),[t,e.x_axis.data_key]),l=Pe(s.triggerManager,ha.id),d=b.useCallback(g=>{const h=g.value[0],m=v.get(u,h,{error:"rowData is not found"});l.forEach(w=>{s.runInteraction(w.id,{...g,rowData:m})})},[u,l,s]),c=b.useMemo(()=>({click:d}),[d]),f=b.useMemo(()=>Zp(e,t,o),[e,t]);return!r||!i?null:n(De,{echarts:le,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function Jp({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=W(e.instanceData,"config"),{variables:s}=e,o=b.useMemo(()=>v.defaults({},i,Gn),[i]),u=e.data,{width:l,height:d}=e.viewport,{ref:c,height:f}=ye.useElementSize(),{ref:g,height:h}=ye.useElementSize(),m=b.useMemo(()=>{const{stats:{templates:C}}=o;return{top:Tt(C.top,s,u),bottom:Tt(C.bottom,s,u)}},[o,u]),w=Math.max(0,d-f-h);return p(a.Box,{children:[n(a.Text,{ref:c,align:"left",size:"xs",pl:"sm",sx:{display:ba(o.stats.templates.top)?"block":"none"},children:Object.values(m.top).map(C=>C)}),n(Kp,{variables:s,width:l,height:w,data:u,conf:o,interactionManager:r}),n(a.Text,{ref:g,align:"left",size:"xs",pl:"sm",sx:{display:ba(o.stats.templates.bottom)?"block":"none"},children:Object.values(m.bottom).map(C=>C)})]})}const Hp=b.forwardRef(({value:e,onChange:t,xAxisOptions:r,yAxisOptions:i,variableOptions:s},o)=>{const u=(l,d)=>{const c=v.cloneDeep(e);v.set(c,l,d),t(c)};return p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Content",labelPosition:"right"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Content Text",value:e.content.text,onChange:l=>u("content.text",l.currentTarget.value)}),n(Ln,{label:"Text Position",value:e.label.position,onChange:l=>u("label.position",l)})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Endpoints",labelPosition:"right"}),p(a.Group,{grow:!0,noWrap:!0,children:[r&&n(a.Select,{label:"X Axis",data:r,value:e.xAxisIndex,onChange:l=>u("xAxisIndex",l)}),i&&n(a.Select,{label:"Y Axis",data:i,value:e.yAxisIndex,onChange:l=>u("xAxisIndex",l)})]}),p(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Left-Bottom Point"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:s,value:e.leftBottomPoint.x_data_key,onChange:l=>u("leftBottomPoint.x_data_key",l??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:s,value:e.leftBottomPoint.y_data_key,onChange:l=>u("leftBottomPoint.y_data_key",l??""),clearable:!0})]})]}),p(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Right-Top Point"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:s,value:e.rightTopPoint.x_data_key,onChange:l=>u("rightTopPoint.x_data_key",l??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:s,value:e.rightTopPoint.y_data_key,onChange:l=>u("rightTopPoint.y_data_key",l??""),clearable:!0})]})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Style",labelPosition:"right"}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Background Color"}),n(Se,{value:e.itemStyle.color,onChange:l=>u("itemStyle.color",l)})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Text Color"}),n(Se,{value:e.label.color,onChange:l=>u("label.color",l)})]})]})});function eh(){const e=new Date().getTime().toString();return{id:e,content:{text:e},itemStyle:{color:"rgba(0,0,0,0.05)"},label:{position:"inside",color:"rgba(0,0,0,0.5)"},leftBottomPoint:{x_data_key:"",y_data_key:""},rightTopPoint:{x_data_key:"",y_data_key:""},xAxisIndex:"0",yAxisIndex:"0"}}function th({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_areas"}),u=t("reference_areas"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>{const h=eh();s(h)},c=b.useMemo(()=>r.map(h=>({label:h.name,value:h.name})),[r]),f=t("y_axes"),g=b.useMemo(()=>f.map(({name:h},m)=>({label:h,value:m.toString()})),[f]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:m.toString(),children:m+1},m)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:m.toString(),children:n(x.Controller,{name:`reference_areas.${m}`,control:e,render:({field:w})=>p(a.Stack,{children:[n(Hp,{variableOptions:c,yAxisOptions:g,...w}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(V.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>o(m),children:"Delete this Reference Area"})]})})},m))]})}const nh=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],rh=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function ih({control:e,index:t,remove:r,watch:i,variableOptions:s,yAxisOptions:o}){const u=i(`reference_lines.${t}.orientation`);return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:s,sx:{flex:1},...l})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...l})}),p(a.Group,{grow:!0,children:[p(a.Stack,{children:[n(x.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:l})=>n(a.Select,{label:"Orientation",data:rh,required:!0,sx:{flex:1},...l})}),u==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),u==="horizontal"&&n(x.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:l,onChange:d,...c}})=>n(a.Select,{label:"Y Axis",data:o,disabled:o.length===0,...c,value:(l==null?void 0:l.toString())??"",onChange:f=>{if(!f){d(0);return}d(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:nh,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function ah({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>{const h={name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:Fe.random().css()},show_in_legend:!1,yAxisIndex:0};s(h)},c=b.useMemo(()=>r.map(h=>({label:h.name,value:h.name})),[r]),f=t("y_axes"),g=b.useMemo(()=>f.map(({name:h},m)=>({label:h,value:m.toString()})),[f]);return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:m.toString(),children:m+1},m)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:m.toString(),children:n(ih,{control:e,index:m,remove:o,watch:t,variableOptions:c,yAxisOptions:g})},m))]})}const sh=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{children:n(we,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},oh=({value:e,onChange:t,data:r})=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e),d=()=>{o();const{type:h,func_content:m}=u,w={type:h,func_content:m};l(w),t(w)},c=()=>{o(),l(e)},f=h=>{l(m=>({...m,func_content:h}))},g=()=>{f(kt.dynamic.func_content)};return p(P,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic color",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(sh,{value:u.func_content,onChange:f}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},lh=({value:e,onChange:t,data:r})=>e.type!=="dynamic"?null:n(oh,{value:e,onChange:t,data:r}),uh=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=i=>{t({...e,color:i})};return n(a.ColorInput,{label:" ",format:"rgb",value:e.color,onChange:r})},dh=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],ch=b.forwardRef(({label:e="Color",value:t,onChange:r,data:i},s)=>{const o=u=>{r({...kt[u]})};return p(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:s,label:e,data:dh,value:t.type,onChange:o,sx:{flexGrow:1}}),n(uh,{value:t,onChange:r}),n(lh,{value:t,onChange:r,data:i})]})}),ph=b.forwardRef(({value:e,onChange:t},r)=>{const i=o=>{t({...e,label:o})},s=o=>{t({...e,tooltip:o})};return p(a.Stack,{ref:r,spacing:0,children:[n(qt,{sectionTitle:"Overflow on Chart",value:e.label,onChange:i}),n(qt,{sectionTitle:"Overflow in Tooltip",value:e.tooltip,onChange:s})]})}),hh=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{children:n(we,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},ya={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
206
+ `)}},fh=({value:e,onChange:t,data:r})=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e),d=()=>{o();const{type:h,func_content:m}=u,w={type:h,func_content:m};l(w),t(w)},c=()=>{o(),l(e)},f=h=>{l(m=>({...m,func_content:h}))},g=()=>{f(ya.dynamic.func_content)};return p(P,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(hh,{value:u.func_content,onChange:f}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},gh=({value:e,onChange:t,data:r})=>e.type!=="dynamic"?null:n(fh,{value:e,onChange:t,data:r}),mh=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=i=>{t({...e,size:i})};return n(P,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:r})})},bh=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],yh=b.forwardRef(({label:e="Size",value:t,onChange:r,data:i},s)=>{const o=u=>{r({...ya[u]})};return p(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:s,label:e,data:bh,value:t.type,onChange:o,sx:{flexGrow:1}}),n(mh,{value:t,onChange:r}),n(gh,{value:t,onChange:r,data:i})]})}),vh=[{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 xh({data:e,control:t,watch:r}){return r(["scatter"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"scatter.name_data_key",control:t,render:({field:i})=>n(Y,{label:"Name Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"scatter.y_data_key",control:t,render:({field:i})=>n(Y,{label:"Value Data Field",required:!0,data:e,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Style",labelPosition:"center"}),n(x.Controller,{name:"scatter.symbolSize",control:t,render:({field:i})=>n(yh,{label:"Size",data:e,...i})}),n(x.Controller,{name:"scatter.color",control:t,render:({field:i})=>n(ch,{data:e,...i})}),n(a.Divider,{mb:-15,label:"Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"scatter.label_position",control:t,render:({field:i})=>n(a.Select,{label:"Label Position",data:vh,...i})})}),n(x.Controller,{name:"scatter.label_overflow",control:t,render:({field:i})=>n(ph,{...i})})]})}function Ch({control:e,watch:t}){return t("stats"),n(a.Stack,{children:p(a.Stack,{spacing:0,children:[n(x.Controller,{name:"stats.templates.top",control:e,render:({field:r})=>n(wt,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...r})}),n(x.Controller,{name:"stats.templates.bottom",control:e,render:({field:r})=>n(wt,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...r})})]})})}const wh=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`tooltip.metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`tooltip.metrics.${r}.data_key`,control:e,render:({field:s})=>n(Y,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),_h=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"tooltip.metrics"}),u=t("tooltip.metrics"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("tooltip.metrics.0.id"),[f,g]=b.useState(()=>c??null);return b.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(P,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(k.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:m},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:h.id,children:n(wh,{control:e,index:m,remove:o,data:r},h.id)},h.id))]})]})};function Sh({data:e,control:t,watch:r}){return n(_h,{control:t,watch:r,data:e})}const Th=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(we,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},kh=b.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e);b.useEffect(()=>{l(e)},[e]);const d=m=>{l({...u,enabled:m})},c=()=>{o();const{enabled:m,func_content:w}=u,C={enabled:m,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=m=>{l(w=>({...w,func_content:m}))},h=()=>{g(fa.func_content)};return p(P,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:m=>d(m.currentTarget.checked)}),n(Th,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})});function Dh({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(kh,{data:e,...i})})]})]})}const Ih=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],Mh=[{label:"left",value:"left"},{label:"right",value:"right"}];function Ah({control:e,index:t,remove:r}){return p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),n(x.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:i})=>n(a.Select,{label:"Align",required:!0,data:Ih,sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:i})=>n(a.Select,{label:"Position",required:!0,data:Mh,sx:{flex:1},...i})})}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:i})=>n(Ve,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:i})=>n(a.TextInput,{label:"Min",...i})}),n(x.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:i})=>n(a.TextInput,{label:"Max",...i})})]})]}),n(a.Button,{mt:20,leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),disabled:t===0,children:"Delete this YAxis"})]})}function $h({control:e,watch:t}){const{fields:r,append:i,remove:s}=x.useFieldArray({control:e,name:"y_axes"}),o=t("y_axes"),u=r.map((d,c)=>({...d,...o[c]})),l=()=>i({name:"",label_formatter:Ie});return p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[u.map((d,c)=>n(a.Tabs.Tab,{value:c.toString(),children:c+1},c)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),u.map((d,c)=>n(a.Tabs.Panel,{value:c.toString(),children:n(Ah,{control:e,index:c,remove:s})},c))]})}function zh(e){return e||{templates:{top:"",bottom:""}}}function Eh({reference_lines:e=[],stats:t,...r}){return{reference_lines:e,stats:zh(t),...r}}function Lh({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),{variables:i}=e,s=e.data,o=b.useMemo(()=>v.defaultsDeep({},t,Gn),[t]),u=b.useMemo(()=>Eh(o),[o]);b.useEffect(()=>{!v.isEqual(o,u)&&(console.log("config malformed, resetting to defaults",o,u),r(u))},[o,u]);const{control:l,handleSubmit:d,watch:c,getValues:f,reset:g}=x.useForm({defaultValues:u});b.useEffect(()=>{g(u)},[u]);const h=f(),m=b.useMemo(()=>!v.isEqual(h,o),[h,o]);return c(["dataZoom"]),n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:d(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!m,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X Axis"}),n(a.Tabs.Tab,{value:"Y Axes",children:"Y Axes"}),n(a.Tabs.Tab,{value:"Scatter",children:"Scatter"}),n(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"}),n(a.Tabs.Tab,{value:"Stats",children:"Stats"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"}),n(a.Tabs.Tab,{value:"Reference Areas",children:"Reference Areas"}),n(a.Tabs.Tab,{value:"Zooming",children:"Zooming"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(Dh,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Y Axes",children:n($h,{control:l,watch:c})}),n(a.Tabs.Panel,{value:"Scatter",children:n(xh,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(Sh,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Stats",children:n(Ch,{control:l,watch:c,data:s})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(ah,{variables:i,control:l,watch:c})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(th,{variables:i,control:l,watch:c})}),n(a.Tabs.Panel,{value:"Zooming",children:n(x.Controller,{name:"dataZoom",control:l,render:({field:w})=>n($n,{...w})})})]})]})})}function Oh(e){const{dataZoom:t=dt,...r}=e;return{...r,dataZoom:t}}function Ph(e){const t={scatter:{label_overflow:ga}};return v.defaultsDeep(t,e)}function Vh(e){const{color:t}=e.scatter;return typeof t=="string"?{...e,scatter:{...e.scatter,color:{...kt.static,color:t}}}:e}function Bh(e){const t=e.reference_lines.map(r=>{const{lineStyle:i={type:"dashed",width:1,color:Fe.random().css()},show_in_legend:s=!1,yAxisIndex:o=0}=r;return{...r,lineStyle:i,show_in_legend:s,yAxisIndex:o}});return{...e,reference_lines:t}}class Nh extends he{constructor(){super(...arguments);O(this,"VERSION",7)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{tooltip:i={metrics:[]},...s}=r.config;return{...r,version:2,config:{...s,tooltip:i}}}),this.version(3,r=>({...r,version:3,config:Oh(r.config)})),this.version(4,r=>{const{config:i}=r;return{...r,version:5,config:Ph(i)}}),this.version(6,r=>{const{config:i}=r;return{...r,version:6,config:Vh(i)}}),this.version(7,r=>{const{config:i}=r;return{...r,version:7,config:Bh(i)}})}}const Gh={displayName:"Scatter Chart",displayGroup:"ECharts-based charts",migrator:new Nh,name:"scatterChart",viewRender:Jp,configRender:Lh,createConfig(){return{version:7,config:v.cloneDeep(Gn)}},triggers:[ha]},qn={align:"center",template:"The variable ${value} is defined in Variables section"};function qh(e){if("variables"in e)return e;const{align:t,size:r,weight:i,color:s,content:{prefix:o="",data_field:u="value",formatter:l={output:"number",mantissa:0},postfix:d=""}={}}=e;return{align:t,template:`${o} \${value} ${d}`,variables:[{name:"value",data_field:u,aggregation:{type:"none",config:{}},formatter:l,color:s,weight:i,size:r}]}}function Fh(e){return v.omit(e,["variables"])}function Wh(e){const t=v.cloneDeep(e),r=v.get(t,"color.valueRange");return r!==void 0&&v.set(t,"color.valueRange",r.map(i=>Number(i))),t}class jh extends he{constructor(){super(...arguments);O(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:qh(r)})),this.version(2,(r,{panelModel:i})=>{const{config:s}=r;return(s.variables||[]).forEach(u=>{i.variables.find(l=>l.name===u.name)||i.addVariable(Wh(u))}),{...r,version:2,config:Fh(s)}})}}const Yh=T.observer(({context:e})=>{const t=N(),{value:r=qn}=W(e.instanceData,"config"),{variables:i}=e,{template:s,align:o}=r,u=b.useMemo(()=>{try{const d={filters:t.filters.values,context:t.context.current};return v.template(s)(d)}catch{return s}},[t.filters.values,t.context.current,s]),l=b.useMemo(()=>Tt(u,i,e.data),[u,i,e.data,e]);return n(a.Text,{align:o,children:Object.values(l).map((d,c)=>n(b.Fragment,{children:d},c))})}),Rh=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function Qh({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=b.useMemo(()=>{const{align:g,template:h=""}=v.defaultsDeep({},t,qn);return{template:h,align:g}},[t]),{control:s,handleSubmit:o,watch:u,getValues:l,reset:d}=x.useForm({defaultValues:i});b.useEffect(()=>{d(i)},[i]),u(["template","align"]);const c=l(),f=b.useMemo(()=>!v.isEqual(c,t),[c,t]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:o(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{weight:500,children:"Stats Configurations"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:n(k.DeviceFloppy,{size:20})})]}),n(x.Controller,{name:"template",control:s,render:({field:g})=>n(wt,{label:"Template",py:"md",sx:{flexGrow:1},...g})}),n(x.Controller,{name:"align",control:s,render:({field:g})=>n(a.Select,{label:"Horizontal Alignment",data:Rh,...g})})]})})}const Uh={createConfig(){return{version:2,config:qn}},displayName:"Stats",displayGroup:"Others",migrator:new jh,name:"stats",viewRender:Yh,configRender:Qh},Fn={label_key:"",value_key:"",group_key:"",levels:[]};function Xh(e){const t=new Set(e.map(i=>i.parent_id)),r=new Set(e.map(i=>i.id));return t.forEach(i=>{i===null||r.has(i)||e.push({id:i,name:i,parent_id:null})}),e}function Zh(e){const t=Xh(e).map(s=>({...s,children:[]})),r=v.keyBy(t,s=>s.id),i=[];return t.forEach(s=>{if(!s.parent_id||!r[s.parent_id]){i.push(s);return}r[s.parent_id].children.push(s)}),i}function Kh(e,t){const{label_key:r,value_key:i,group_key:s}=e,o=r,u=t.map(l=>({...l,id:l[o],parent_id:l[s],name:l[r],value:l[i]?Number(l[i]):l[i]}));return s?Zh(u):u}const Jh=e=>({treePathInfo:t,name:r,value:i})=>{if(t.length===1||!e)return r;try{const s=t[t.length-2].value;if(i/s<e)return" "}catch{return r}};function Hh(e){const{levels:t}=e;return t.map(r=>{const{show_label_tolerance:i,...s}=r.label;return{...r,label:{...s,formatter:Jh(i)}}})}function ef(){return({treePathInfo:e,name:t,value:r,color:i,marker:s,...o})=>{const u=e.slice(0,e.length-1),l=[`<tr>
207
207
  <th style="text-align: right; padding: 0 1em;">Value</th>
208
208
  <td style="text-align: left; padding: 0 1em;">${r}</td>
209
209
  </tr>
@@ -211,7 +211,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
211
211
  <tr>
212
212
  <th style="text-align: right; padding: 0 1em;">${f||"Total"}</th>
213
213
  <td style="text-align: left; padding: 0 1em;">
214
- ${ue(r/c).format({output:"percent",mantissa:2,trimMantissa:!0})}
214
+ ${se(r/c).format({output:"percent",mantissa:2,trimMantissa:!0})}
215
215
  </td>
216
216
  </tr>
217
217
  `)}),`
@@ -221,9 +221,9 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
221
221
  <table style="width: auto">
222
222
  <tbody>${l.join("")}</tbody>
223
223
  </table>
224
- `}}function Xh(){return{show:!0,trigger:"item",confine:!0,formatter:Uh()}}const Zh={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function Kh(e,t,r){r.reduce((o,u)=>{const l=ot(u,t);return o[u.name]=Je(u,l),o},{});const s={series:{data:Rh(e,t),levels:Qh(e)},tooltip:Xh()};return y.defaultsDeep({},s,Zh)}oe.use([de.SunburstChart,Ie.CanvasRenderer]);function Jh({context:e}){const{variables:t}=e,{value:r}=j(e.instanceData,"config"),i=m.useMemo(()=>y.defaults({},r,Fn),[r]),s=e.data,{width:o,height:u}=e.viewport,l=m.useMemo(()=>Kh(i,s,t),[i,s,t]);return!o||!u?null:n(Me,{echarts:oe,option:l,style:{width:o,height:u},notMerge:!0,theme:"merico-light"})}function Hh({data:e,control:t,watch:r}){return r(["label_key","value_key","group_key"]),p(a.Stack,{children:[n(x.Controller,{name:"label_key",control:t,render:({field:i})=>n(U,{label:"Label Key",required:!0,data:e,...i})}),n(x.Controller,{name:"value_key",control:t,render:({field:i})=>n(U,{label:"Value Key",required:!0,data:e,...i})}),n(x.Controller,{name:"group_key",control:t,render:({field:i})=>n(U,{label:"Group Key",data:e,clearable:!0,...i})})]})}const ef=[{label:"Radial",value:"radial"},{label:"Tangential",value:"tangential"},{label:"None",value:"0"}],tf=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],nf=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`levels.${r}.r0`,control:e,render:({field:s})=>n(a.TextInput,{label:"Inside Radius",placeholder:"0%",...s})}),n(x.Controller,{name:`levels.${r}.r`,control:e,render:({field:s})=>n(a.TextInput,{label:"Outside Radius",placeholder:"50%",...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),n(x.Controller,{name:`levels.${r}.label.show_label_tolerance`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Hide label when its percentage is less than...",precision:4,step:5e-4,min:0,max:1,...s})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`levels.${r}.label.rotate`,control:e,render:({field:s})=>n(a.Select,{label:"Rotate",data:ef,...s})}),n(x.Controller,{name:`levels.${r}.label.align`,control:e,render:({field:s})=>n(a.Select,{label:"Align",data:tf,...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`levels.${r}.label.position`,control:e,render:({field:s})=>n(Ln,{label:"Position",...s})}),n(x.Controller,{name:`levels.${r}.label.padding`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Padding",min:0,hideControls:!0,...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Level"})]}),rf=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"levels"}),u=t("levels"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>s({id:Date.now().toString(),r0:"",r:"",label:{show_label_tolerance:.001,rotate:"0",align:"center",position:"inside",padding:0}}),c=t("levels.0.id"),[f,g]=m.useState(()=>c??null);return m.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(O,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(D.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure ring style on each level"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:h.id,children:b},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:h.id,children:n(nf,{control:e,index:b,remove:o,data:r},h.id)},h.id))]})]})};function af({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,Fn),[t]),o=m.useMemo(()=>y.clone(s),[s]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,s),[g,s]);d(["label_key","value_key","group_key","levels"]);const[b,w]=m.useState("Data");return n("form",{onSubmit:l(r),children:p(a.Stack,{spacing:"xs",children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Sunburst Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{value:b,onTabChange:w,orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Data",children:"Data"}),n(a.Tabs.Tab,{value:"Levels",children:"Levels"})]}),n(a.Tabs.Panel,{value:"Data",children:n(Hh,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Levels",children:n(rf,{control:u,watch:d,data:i})})]})]})})}function sf(e){const{label_field:t,value_field:r,...i}=e;return{...i,label_key:t,value_key:r}}function of(e){const{group_key:t="",...r}=e;return{...r,group_key:t}}function lf(e){const{levels:t=[],...r}=e;return{...r,levels:t}}class uf extends ge{constructor(){super(...arguments);P(this,"VERSION",4)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:sf(r.config)})),this.version(3,r=>({...r,version:3,config:of(r.config)})),this.version(4,r=>({...r,version:4,config:lf(r.config)}))}}const df={displayName:"Sunburst Chart",displayGroup:"ECharts-based charts",migrator:new uf,name:"sunburst",viewRender:Jh,configRender:af,createConfig(){return{version:4,config:y.cloneDeep(Fn)}}};var Le=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e.custom="custom",e))(Le||{});const ba=["function text({ value }) {"," // your code goes here"," return value","}"].join(`
225
- `),Wn={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!0,verticalSpacing:"1em"},va={left:"flex-start",center:"center",right:"flex-end"},cf=({header:e,cx:t})=>{const r=y.get(e.column.columnDef.meta,"align","left");return p(a.Text,{className:t("table-head-cell",{"table-head-cell--sortable":e.column.getCanSort()}),onClick:e.column.getToggleSortingHandler(),align:r,sx:{justifyContent:va[r]},children:[e.isPlaceholder?null:Ee.flexRender(e.column.columnDef.header,e.getContext()),n(pf,{direction:e.column.getIsSorted()})]})},pf=({direction:e})=>{switch(e){case"asc":return n(V.IconArrowUp,{size:16});case"desc":return n(V.IconArrowDown,{size:"1em"});default:return null}},jn={id:"builtin:table:click-cell-content",displayName:"Click Cell Content",nameRender:bf,configRender:gf,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"}]},hf={column:""};function ya(e){const{value:t}=j(e.instanceData,"config");return t?t.columns.map((r,i)=>({label:r.label,value:i.toString()})):[]}function ff(e){return y.isEmpty(e)?[]:Object.keys(e[0]).map(t=>({label:t,value:t}))}function gf(e){const t=ya(e.instance),r=ff(e.sampleData),i=t.length>0?t:r,{value:s,set:o}=j(e.trigger.triggerData,"config"),{column:u}=y.defaults({},s,hf),l=d=>{isNaN(+d)?o({column:d}):o({column:+d})};return n(a.Select,{clearable:!1,data:i,label:"Choose a column",value:u.toString(),onChange:l})}function mf(e,t){return e?y.isNumber(e.column)?`Click cell of ${t[e.column].label}`:`Click cell of ${e.column}`:"Click cell content (click to config)"}function bf(e){const t=ya(e.instance),{value:r}=j(e.trigger.triggerData,"config");return n(a.Text,{children:mf(r,t)})}const vf=a.createStyles(e=>({root:{overflow:"auto",position:"relative","& .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:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[0]}}},thead:{background:e.colorScheme==="dark"?e.colors.dark[7]:e.white,position:"sticky",top:24,transform:"translateY(-1px)",zIndex:10,"&::after":{content:'" "',display:"block",background:"white",position:"absolute",left:0,right:0,top:0,bottom:0,zIndex:-1}},info_bar:{position:"sticky",top:0,left:0,right:0,zIndex:10,background:"white"}})),yf={tableLayout:"fixed","th, td":{padding:"2px 10px",div:{overflow:"hidden",textOverflow:"ellipsis"},"&:first-of-type":{paddingLeft:2,paddingRight:2}}};function xa(e,t,r){return Math.min(Math.max(e,t),r)}class xf{constructor(t){this.steps=t;const r=[],i=new Set;for(const s of t)i.has(s.to)||(r.push(s),i.add(s.to));if(r.sort((s,o)=>s.from-o.from),r.length<2)throw new Error("MultiStepValueMapper requires at least 2 steps");this.steps=r}getLinearFunction(t,r){const i=(r.to-t.to)/(r.from-t.from),s=t.to-i*t.from;return o=>i*o+s}getStepFunctionForValue(t){let r=y.findLastIndex(this.steps,i=>i.from<=t);return r=xa(r,0,this.steps.length-2),this.getLinearFunction(this.steps[r],this.steps[r+1])}mapValue(t){return xa(this.getStepFunctionForValue(t)(t),0,100)}}class Cf{constructor(t,r,i,s,o){this.getColIndex=t,this.cell=r,this.triggers=i,this.interactionManager=s,this.colorManager=o}getClickHandler(){const t=this.getRelatedTrigger();if(t.length!==0)return()=>{const r={row_data:this.cell.row.original,row_index:this.cell.row.index,col_index:this.getColIndex(this.cell)};for(const i of t)this.interactionManager.runInteraction(i.id,r)}}getRelatedTrigger(){return this.triggers.filter(r=>r.schemaRef===jn.id).filter(r=>{const i=this.getColIndex(this.cell),s=y.get(this.cell.column.columnDef.meta,"value_field"),o=y.get(r.config,"column");return o==i||o==s})}isClickable(){return this.getRelatedTrigger().length>0}get columnConf(){return this.cell.column.columnDef.meta}get bgColor(){const t=this.columnConf.cellBackgroundColor;if(!t||t==="none")return;if(y.isString(t))return t;const r=+this.cell.getValue();if(isFinite(r)){const i=this.colorManager.decodeInterpolation(t.interpolation),o=new xf(t.steps).mapValue(r);return i==null?void 0:i.getColor(o)}}}const wf=a.createStyles((e,t)=>({content:{display:"flex",alignItems:"center",justifyContent:va[t.align],".table-cell-text":{whiteSpace:"nowrap",cursor:t.clickable?"pointer":"default",textDecoration:t.clickable?"underline":"none"}}}));function _f(e){return e?Fe(e).oklch()[0]>.7?"black":"white":"inherit"}function Sf(e){const t=e.tableCellContext.bgColor;return{backgroundColor:t,color:_f(t)}}function dt(e){const t=e.tableCellContext.isClickable(),r=wf({clickable:t,align:e.align});return n("div",{className:r.classes.content,style:{...Sf(e)},children:n(a.Text,{className:"table-cell-text",onClick:e.tableCellContext.getClickHandler(),children:n("span",{title:e.children,children:e.children})})})}function Tf(e){return n(dt,{...e,children:e.value})}function Df(e){const t=ue(e.value).format({average:!0,mantissa:2,trimMantissa:!0});return n(dt,{...e,children:t})}function kf(e){const t=ue(e.value).format({thousandSeparated:!0});return n(dt,{...e,children:t})}function If(e){const t=ue(e.value).format({output:"percent",mantissa:3});return n(dt,{...e,children:t})}function Mf(e){const t=e.value,r=e.func_content;if(!r)return n(dt,{...e,children:t});const i=new Function(`return ${r}`)()({value:t});return n(dt,{...e,children:i})}function Af(e){switch(e.type){case Le.string:return n(Tf,{...e});case Le.eloc:return n(Df,{...e});case Le.number:return n(kf,{...e});case Le.percentage:return n(If,{...e});case Le.custom:return n(Mf,{...e})}}const zf=e=>{const t=Ge(e),r=Oe(t.triggerManager,jn.id),{colorManager:i}=m.useContext(Ne);return m.useCallback(s=>new Cf(e.getColIndex,s,r,t,i),[r,t,e.getColIndex])};function $f({context:e,instance:t}){var re,se;const r=e.data??[],{height:i,width:s}=e.viewport,{value:o=Wn}=j(e.instanceData,"config"),{use_raw_columns:u,columns:l,...d}=o,{classes:c,cx:f}=vf(),g=m.useMemo(()=>u?!Array.isArray(r)||r.length===0?[]:Object.keys(r[0]).map(ne=>({id:ne,label:ne,value_field:ne,value_type:Le.string,align:"left"})):l,[u,l,r]),h=zf({getColIndex:m.useCallback(ne=>g.indexOf(ne.column.columnDef.meta),[g]),vizManager:e.vizManager,instance:t}),b=m.useMemo(()=>{const ne=Ee.createColumnHelper();return g.map(he=>ne.accessor(he.value_field,{cell:we=>n(Af,{tableCellContext:h(we.cell),value:we.getValue(),type:he.value_type,...he}),header:he.label,enableSorting:!0,meta:he,size:he.width,minSize:he.width}))},[g,h]),[w,C]=m.useState([]),S=Ee.useReactTable({data:r,state:{sorting:w},onSortingChange:C,columns:b,getCoreRowModel:Ee.getCoreRowModel(),getSortedRowModel:Ee.getSortedRowModel()}),{rows:A}=S.getRowModel(),z=m.useRef(null),G=Js.useVirtual({parentRef:z,size:A.length,estimateSize:m.useCallback(()=>28,[]),overscan:20}),{virtualItems:F,totalSize:L}=G,$=F.length>0&&((re=F==null?void 0:F[0])==null?void 0:re.start)||0,M=F.length>0?L-(((se=F==null?void 0:F[F.length-1])==null?void 0:se.end)||0):0,N=A.length,Q=N>0,Y=Q?i-22:i,te=Q?22:0;return!Array.isArray(r)||r.length===0?n(a.Text,{color:"gray",align:"center",children:"Empty Data"}):p("div",{ref:z,style:{height:i,width:s},"data-enable-scrollbar":!0,className:f(c.root,{"table-highlight-on-hover":o.highlightOnHover}),children:[N>0&&n(a.Box,{className:c.info_bar,sx:{height:22},children:p(a.Text,{align:"right",pr:6,size:14,color:"dimmed",fw:"normal",children:["Total: ",N]})}),p(a.Table,{sx:{...yf,maxHeight:Y},...d,striped:o.striped,children:[n("thead",{className:c.thead,style:{top:te},children:S.getHeaderGroups().map(ne=>n("tr",{children:ne.headers.map(pe=>n("th",{style:{width:pe.getSize()},children:n(cf,{header:pe,cx:f})},pe.id))},ne.id))}),p("tbody",{children:[$>0&&n("tr",{children:n("td",{style:{height:`${$}px`}})}),F.map(ne=>{const pe=A[ne.index];return n("tr",{children:pe.getVisibleCells().map(he=>n("td",{children:Ee.flexRender(he.column.columnDef.cell,he.getContext())},he.id))},pe.id)}),M>0&&n("tr",{children:n("td",{style:{height:`${M}px`}})})]})]})]})}const Ca=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)"}}}})),Ef=[{from:0,to:0},{from:100,to:100}];class Lf{constructor(){P(this,"steps",new Map);P(this,"interpolation");P(this,"onChange");ae.makeAutoObservable(this,{steps:ae.observable},{deep:!1}),ae.reaction(()=>ae.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(t){for(const r of t)this.steps.set(r.to,r.from)}notifyStepChange(){var t;(t=this.onChange)==null||t.call(this,Array.from(this.steps.entries()).map(([r,i])=>({to:r,from:i})).sort((r,i)=>r.to-i.to||r.from-i.from))}fromProps(t){t.steps.length<2?this.setSteps(Ef):this.setSteps(t.steps),this.interpolation=t.interpolation,this.onChange=t.onChange}changeStep(t,r){t==null?this.steps.delete(r):this.steps.set(r,t)}getStepFromValue(t){return this.steps.get(t)}}function Pf(e){const{onChange:t,color:r,index:i,value:s}=e,{classes:o}=Ca(),[u,l]=m.useState(s),[d,{setTrue:c,setFalse:f}]=Z.useBoolean(!1),g=i%2===1,h=g&&s!=null,b=!g&&s!=null,w=`map ${s} to color ${i}`,C=()=>{l(s),f()},S=()=>{f(),t==null||t(u)},A=ue(s).format({average:!0});return p("div",{"data-testid":`palette-item-${i}`,className:o.paletteItem,children:[n(a.Text,{title:w,style:{opacity:h?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:A}),p(a.Popover,{width:200,trapFocus:!0,opened:d,onClose:f,children:[n(a.Popover.Target,{children:n("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:c,style:{"--shadow-color":Fe(r).alpha(.5).hex(),backgroundColor:r}})}),n(a.Popover.Dropdown,{children:p(a.Stack,{children:[n(a.NumberInput,{size:"xs",label:"Map a value to this color",value:u,onChange:l}),p(a.Group,{position:"right",children:[n(a.Button,{variant:"subtle",size:"xs",onClick:C,children:"Cancel"}),n(a.Button,{"data-testid":"palette-item-ok",size:"xs",onClick:S,children:"OK"})]})]})})]}),n(a.Text,{title:w,style:{opacity:b?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:A})]})}const Of=T.observer(({model:e})=>{const{classes:t}=Ca(),r=y.range(0,13,1).map(i=>100/12*i).map(i=>[e.interpolation.getColor(i),i]);return n("div",{className:t.palette,children:r.map(([i,s],o)=>n(Pf,{index:o,color:i,value:e.getStepFromValue(s),onChange:u=>e.changeStep(u,s)},i))})}),Vf=T.observer(function(t){const r=Z.useCreation(()=>new Lf,[]);return m.useEffect(()=>{r.fromProps(t)}),r.interpolation==null?null:n(Of,{model:r})}),Bf=e=>{const{value:t,onChange:r,colorManager:i}=e,s=i.getColorInterpolations(),[o,u]=m.useState(t),l=i.decodeInterpolation(o.interpolation)||s[0],[d,{setTrue:c,setFalse:f}]=Z.useBoolean(),g=s.map(S=>({label:S.displayName,value:i.encodeColor(S),group:S.category}));function h(S){S&&u(A=>({...A,interpolation:S}))}const b=()=>{f(),r==null||r(ae.toJS(o))};function w(S){u(A=>({...A,steps:S}))}const C=()=>{f(),u(t)};return p(O,{children:[n(a.Button,{variant:"outline",onClick:c,children:l==null?void 0:l.displayName}),n(a.Modal,{size:508,title:"Setup color interpolation",opened:d,onClose:f,zIndex:320,children:d&&p(a.Stack,{"data-testid":"color-interpolation-modal",children:[n(a.Select,{label:"Color style",value:o.interpolation,data:g,onChange:h}),n(Vf,{steps:o.steps,interpolation:l,onChange:w}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:C,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:b,children:"OK"})]})]})})]})},Nf=["static","interpolation","none"].map(e=>({label:y.capitalize(e),value:e})),Gf=[{from:0,to:0},{from:100,to:100}];function wa(e){return e?y.isString(e)?e==="none"?"none":"static":"interpolation":"none"}function qf(e,t){var r;return wa(t)==="static"?t:(r=e.getStaticColors()[0])==null?void 0:r.value}function Ff(e,t){return y.isObject(t)?t:{steps:Gf,interpolation:e.encodeColor(e.getColorInterpolations()[0])}}const Wf=m.forwardRef((e,t)=>{const{colorManager:r}=m.useContext(Ne),[i,s]=m.useState(wa(e.value)),[o,u]=m.useState(qf(r,e.value)),l=Z.useLatest(o),[d,c]=m.useState(Ff(r,e.value)),f=Z.useLatest(d),g=w=>{var C,S,A;s(w||"none"),w==="static"?(C=e.onChange)==null||C.call(e,l.current):w==="none"||!w?(S=e.onChange)==null||S.call(e,"none"):(A=e.onChange)==null||A.call(e,f.current)},h=w=>{var C;u(w),(C=e.onChange)==null||C.call(e,w)},b=w=>{var C;c(w),(C=e.onChange)==null||C.call(e,w)};return p(a.Stack,{align:"stretch",children:[n(a.Select,{label:"Cell background",value:i||"none",onChange:g,data:Nf}),i==="static"&&n(Se,{value:o,onChange:h}),i==="interpolation"&&n(Bf,{colorManager:r,value:d,onChange:b})]})}),jf={[Le.eloc]:"ELOC"},Rf=Object.values(Le).map(e=>({label:y.get(jf,e,y.capitalize(e)),value:e})),Yf=m.forwardRef(({label:e,value:t,onChange:r,sx:i},s)=>n(a.Select,{ref:s,label:e,data:Rf,value:t,onChange:r,sx:i})),Qf=m.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e),d=()=>{o(),t(u)},c=()=>{o(),l(e)},f=()=>{l(ba)};return m.useEffect(()=>{l(e)},[e]),p(O,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Custom Cell Content"}),n(a.Modal,{size:800,title:"Custom cell content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Box,{sx:{position:"relative"},children:n(_e,{height:"500px",defaultLanguage:"javascript",value:u,onChange:g=>l(g??""),theme:"vs-dark",options:{minimap:{enabled:!1}}})}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})}),Uf=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Rn=()=>n(a.Text,{color:"dimmed",size:12,children:"px"}),Xf=({control:e,index:t,watch:r,remove:i,column:s,data:o})=>{const u=r(`columns.${t}.value_type`);return p(a.Stack,{my:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:`columns.${t}.label`,control:e,render:({field:l})=>n(a.TextInput,{label:"Label",required:!0,id:`col-label-${t}`,sx:{flex:1},...l})}),n(x.Controller,{name:`columns.${t}.value_field`,control:e,render:({field:l})=>n(U,{label:"Value Field",required:!0,data:o,...l})})]}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`columns.${t}.value_type`,control:e,render:({field:l})=>n(Yf,{label:"Value Type",sx:{flex:1},...l})}),u===Le.custom&&n(x.Controller,{name:`columns.${t}.func_content`,control:e,render:({field:l})=>n(Qf,{value:l.value??ba,onChange:d=>l.onChange(d??"")})})]}),n(a.Divider,{mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(a.NumberInput,{hideControls:!0,label:"Min Width",rightSection:n(Rn,{}),disabled:!0}),n(x.Controller,{name:`columns.${t}.width`,control:e,render:({field:l})=>n(a.NumberInput,{hideControls:!0,label:"Width",rightSection:n(Rn,{}),...l})}),n(a.NumberInput,{hideControls:!0,label:"Max Width",rightSection:n(Rn,{}),disabled:!0})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`columns.${t}.align`,control:e,render:({field:l})=>n(a.Select,{label:"Alignment",data:Uf,...l})})}),n(x.Controller,{name:`columns.${t}.cellBackgroundColor`,control:e,render:({field:l})=>n(Wf,{...l})}),n(a.Divider,{mb:4,mt:12,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),children:"Delete this column"})]})},Zf=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o,update:u}=x.useFieldArray({control:e,name:"columns"}),l=()=>{const c=ve.randomId();s({id:c,label:c,value_field:"value",value_type:Le.string})};t("columns");const d=t("use_raw_columns");return p(O,{children:[n(x.Controller,{name:"use_raw_columns",control:e,render:({field:c})=>n(a.Switch,{mt:20,label:"Use Original Data Columns",checked:c.value,onChange:f=>c.onChange(f.currentTarget.checked)})}),n(a.Divider,{mt:20,mb:10,variant:"dashed"}),!d&&p(a.Stack,{children:[n(a.Text,{my:0,children:"Custom Columns"}),p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[i.map((c,f)=>n(a.Tabs.Tab,{value:f.toString(),children:f+1},c.id)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),i.map((c,f)=>n(a.Tabs.Panel,{value:f.toString(),children:n(Xf,{control:e,watch:t,index:f,column:c,data:r,remove:o},f)},c.id))]})]})]})};function Kf({control:e,watch:t,data:r}){return t(["horizontalSpacing","verticalSpacing","fontSize","striped","highlightOnHover"]),p(a.Stack,{spacing:"xs",children:[p(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[n(x.Controller,{name:"horizontalSpacing",control:e,render:({field:i})=>n(a.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i})}),n(x.Controller,{name:"verticalSpacing",control:e,render:({field:i})=>n(a.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i})})]}),n(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:n(x.Controller,{name:"fontSize",control:e,render:({field:i})=>n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i})})}),p(a.Group,{position:"apart",grow:!0,children:[n(x.Controller,{name:"striped",control:e,render:({field:i})=>n(a.Switch,{label:"Striped",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})}),n(x.Controller,{name:"highlightOnHover",control:e,render:({field:i})=>n(a.Switch,{label:"Highlight on hover",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})})]})]})}function Jf({columns:e,...t}){return{...t,columns:e.map(({id:r,...i})=>({id:r??ve.randomId(),...i}))}}function Hf({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,Wn),[t]),o=m.useMemo(()=>Jf(s),[s]);m.useEffect(()=>{!y.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),r(o))},[s,o]);const{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,s),[g,s]);return d(["id_field"]),p("form",{onSubmit:l(r),children:[p(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Table Config"}),n(a.ActionIcon,{type:"submit","aria-label":"save config",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Columns",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Data",children:"Data"}),n(a.Tabs.Tab,{value:"Style",children:"Style"}),n(a.Tabs.Tab,{value:"Columns",children:"Columns"})]}),n(a.Tabs.Panel,{value:"Data",children:n(x.Controller,{name:"id_field",control:u,render:({field:b})=>n(U,{label:"ID Field",required:!0,data:i,...b})})}),n(a.Tabs.Panel,{value:"Style",children:n(Kf,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Columns",children:n(Zf,{control:u,watch:d,data:i})})]})]})}function eg(e){const{columns:t,...r}=e;return{...e,columns:t.map(i=>({...i,align:i.align??"left"}))}}class tg extends ge{constructor(){super(...arguments);P(this,"VERSION",3)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{columns:i,...s}=r.config;return{...r,version:2,config:{...s,columns:i.map(({id:o,...u})=>({id:o??ve.randomId(),...u}))}}}),this.version(3,r=>({...r,version:3,config:eg(r.config)}))}}const Yn={createConfig(){return{version:3,config:y.cloneDeep(Wn)}},displayName:"Table",displayGroup:"Others",migrator:new tg,name:"table",viewRender:$f,configRender:Hf,triggers:[jn]},_a=["function text({ data, variables, filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
226
- `),Qn={func_content:_a,horizontal_align:"left",font_size:"14px",font_weight:"normal"},ng=T.observer(({context:e})=>{const t=B(),{value:r=Qn}=j(e.instanceData,"config"),{variables:i}=e,s=e.data,{func_content:o,horizontal_align:u,font_size:l,font_weight:d}=r,c=m.useMemo(()=>i.reduce((g,h)=>{const b=ot(h,s);return g[h.name]=Je(h,b),g},{}),[i,s]),f=m.useMemo(()=>new Function(`return ${o}`)()({data:s,variables:c,filters:t.filters.values,context:t.context.current}),[o,s,c,t.filters.values,t.context.current]);return n(a.Text,{align:u,weight:d,sx:{fontSize:l},children:f})}),rg=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{sx:{position:"relative"},children:n(_e,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},ig=m.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=m.useState(e),d=()=>{o(),t(u)},c=()=>{o(),l(e)},f=()=>{l(_a)};return m.useEffect(()=>{l(e)},[e]),p(O,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Edit Content"}),n(a.Modal,{size:800,title:"Text content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(rg,{value:u,onChange:l}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})}),ag=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function sg({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=m.useMemo(()=>y.defaultsDeep({},t,Qn),[t]),s=m.useMemo(()=>{const{func_content:h,horizontal_align:b,font_size:w,font_weight:C}=i;return{func_content:h,horizontal_align:b,font_size:w,font_weight:C}},[i]);m.useEffect(()=>{!y.isEqual(i,s)&&(console.log("config malformed, resetting to defaults",i,s),r(s))},[i,s]);const{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});m.useEffect(()=>{c(s)},[s]),l(["func_content","horizontal_align","font_size","font_weight"]);const f=d(),g=m.useMemo(()=>!y.isEqual(f,i),[f,i]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{weight:500,children:"Configurations"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Stack,{spacing:10,children:[n(x.Controller,{name:"func_content",control:o,render:({field:h})=>n(ig,{...h})}),n(a.Divider,{mt:10,mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),n(x.Controller,{name:"horizontal_align",control:o,render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:ag,...h})}),n(x.Controller,{name:"font_size",control:o,render:({field:h})=>n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},...h})}),n(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:n(x.Controller,{name:"font_weight",control:o,render:({field:h})=>n(Zi,{label:"Font Weight",...h})})})]})]})})}class og extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const lg={displayName:"Text",displayGroup:"Others",migrator:new og,name:"text",viewRender:ng,configRender:sg,createConfig(){return{version:1,config:y.cloneDeep(Qn)}}},ug=()=>p("svg",{width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",children:[n("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M22.49 27.79H14.47C13.55 27.79 12.81 28.53 12.81 29.45C12.81 30.37 13.55 31.11 14.47 31.11H22.49C23.41 31.11 24.15 30.37 24.15 29.45C24.15 28.54 23.41 27.79 22.49 27.79ZM34.32 31.28C35.22 31.32 35.7 31.82 35.74 32.76C35.78 33.54 35.37 34.3 34.51 35.04C33.52 35.9 33.03 36.95 33.03 38.19V38.81H34.82V38.25C34.78 37.59 35.07 37.02 35.68 36.52C37.12 35.41 37.82 34.15 37.78 32.75C37.66 30.53 36.5 29.35 34.32 29.23C32.3 29.23 31.05 30.46 30.55 32.93L32.53 33.55C32.82 32.04 33.42 31.28 34.32 31.28ZM35 39.93H32.84V42.21H35V39.93ZM14.83 36.42H18.54C19.46 36.42 20.2 37.17 20.2 38.08C20.2 39 19.46 39.74 18.54 39.74H10.52C9.6 39.74 8.86 39 8.86 38.08C8.86 37.61 9.06 37.19 9.37 36.89H5.66C4.74 36.89 4 36.15 4 35.23C4 34.31 4.74 33.57 5.66 33.57H13.68C14.6 33.57 15.34 34.31 15.34 35.23C15.34 35.7 15.14 36.12 14.83 36.42ZM50.94 36.85H58.74C59.66 36.85 60.4 37.59 60.41 38.51C60.41 39.43 59.67 40.17 58.75 40.17H54.26C54.56 40.47 54.74 40.88 54.74 41.34C54.74 42.26 54 43 53.08 43H50.94V36.85Z",fill:"#B8C0CC"}),n("path",{d:"M18.39 32.28H16.51V35.02H18.39V32.28Z",fill:"#9399A5"}),n("path",{d:"M46.87 15H20.69C18.38 15 16.5 16.88 16.5 19.19V26.22H18.38V23.45H49.18V47.68H18.38V41.07H16.5V49.55H51.05V19.19C51.06 16.88 49.18 15 46.87 15ZM39.46 20.73C38.81 20.73 38.29 20.2 38.29 19.56C38.29 18.92 38.82 18.39 39.46 18.39C40.11 18.39 40.63 18.92 40.63 19.56C40.63 20.2 40.11 20.73 39.46 20.73ZM43.22 20.73C42.57 20.73 42.05 20.2 42.05 19.56C42.05 18.92 42.58 18.39 43.22 18.39C43.87 18.39 44.39 18.92 44.39 19.56C44.39 20.2 43.87 20.73 43.22 20.73ZM46.97 20.73C46.32 20.73 45.8 20.2 45.8 19.56C45.8 18.92 46.33 18.39 46.97 18.39C47.62 18.39 48.14 18.92 48.14 19.56C48.14 20.2 47.62 20.73 46.97 20.73Z",fill:"#9399A5"})]});function Sa(e,t){const r=y.get(e,t,"");if(r)throw new Error(r)}async function dg(e,t,r,i={}){const s={"X-Requested-With":"XMLHttpRequest","Content-Type":i.string?"application/x-www-form-urlencoded":"application/json",...i.headers},o={baseURL:e,method:"POST",url:t,params:i.params,headers:s};return o.data=i.string?JSON.stringify(r):r,Qe(o).then(u=>u.data).catch(u=>Promise.reject(u))}const cg=({conf:e,data:t})=>async()=>{const{expertSystemURL:r,path:i,goal:s,question:o}=e;if(!i||!s||!o)return;const u={dashboard:s,panel:o,data:t};try{const l=r.startsWith("http")?r:window.location.origin;return await dg(l,`/expert/v3/devtable/${i}`,u,{})}catch(l){throw Sa(l,"response.data.detail"),Sa(l,"response.data.error"),console.error(l),l}},Un={expertSystemURL:"",path:"",goal:"",question:""},Xn={height:"100%",overflowY:"auto",...bn},Ta=({message:e})=>n(a.Box,{sx:Xn,children:n("div",{dangerouslySetInnerHTML:{__html:e},style:{fontSize:"14px",lineHeight:"32px",color:"#3D3E45"}})}),pg=({error:e,width:t,height:r})=>{const i=e.message;if(i.startsWith("<"))return n(Ta,{message:i});const o=r-25-20-30;return n(a.Center,{sx:{width:"100%",height:o},children:p(a.Stack,{align:"center",spacing:20,children:[n(ug,{}),n(Ta,{message:i})]})})};function hg({context:e}){const{value:t}=j(e.instanceData,"config"),r=m.useMemo(()=>y.defaultsDeep({},t,Un),[t]),{width:i,height:s}=e.viewport,o=e.data??[],{data:u,error:l,loading:d}=Z.useRequest(cg({conf:r,data:o}),{refreshDeps:[o,r]});return!i||!s||!r?null:d?n(a.Box,{sx:{position:"relative",height:s},children:n(a.LoadingOverlay,{visible:!0})}):l?n(a.Box,{sx:Xn,"data-enable-scrollbar":!0,children:n(pg,{error:l,width:i,height:s})}):!u||!Array.isArray(u.replies)||u.replies.length===0?null:n(a.Box,{sx:Xn,"data-enable-scrollbar":!0,children:u.replies.map((c,f)=>n("div",{dangerouslySetInnerHTML:{__html:c.interpretation.html}},f))})}function fg({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=m.useMemo(()=>y.defaultsDeep({},t,Un),[t]),{control:s,handleSubmit:o,watch:u,getValues:l,reset:d}=x.useForm({defaultValues:i});m.useEffect(()=>{d(i)},[i]),u(["expertSystemURL","goal","path","question"]);const c=l(),f=m.useMemo(()=>!y.isEqual(c,i),[c,i]);return n("form",{onSubmit:o(r),children:p(a.Stack,{children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:"expertSystemURL",control:s,render:({field:g})=>n(a.TextInput,{label:"Expert System URL",...g})}),n(x.Controller,{name:"path",control:s,render:({field:g})=>n(a.TextInput,{label:"Path",required:!0,...g})})]}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:"goal",control:s,render:({field:g})=>n(a.TextInput,{label:"Goal",required:!0,...g})}),n(x.Controller,{name:"question",control:s,render:({field:g})=>n(a.TextInput,{label:"Question",required:!0,...g})})]}),n(a.Divider,{variant:"dashed",mt:16,mb:8}),n(a.Button,{type:"submit",variant:"filled",color:"blue",leftIcon:n(D.DeviceFloppy,{size:20}),disabled:!f,sx:{alignSelf:"flex-end"},children:"Submit Changes"})]})})}class gg extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const mg={displayName:"Merico GQM",displayGroup:"Merico suite",migrator:new gg,name:"mericoGQM",viewRender:hg,configRender:fg,createConfig(){return{version:1,config:y.cloneDeep(Un)}}};function bg(e,t,r){if(!e)return r[0];try{return[t,W(t).add(1,"year").subtract(1,"day").valueOf()]}catch(i){return console.error(i),r[0]}}function vg(e,t,r){const i=bg(e,t,r);return{top:50,left:25,right:5,cellSize:["auto",13],range:i,itemStyle:{borderColor:"#eee"},splitLine:{show:!0},dayLabel:{firstDay:1},monthLabel:{position:"end"},yearLabel:{show:!0}}}function yg(e){return{heat_block:function(i){if(!e.heat_block.value_formatter)return i;try{return ue(i).format(e.heat_block.value_formatter)}catch(s){return console.error(s),i}}}}function xg(e,t){return{show:!e,selectedMode:"single",top:5,right:5,data:t.map(r=>({name:r,icon:"circle"}))}}function Cg(e,t,r,i){const{calendar:s,heat_block:o}=e;return t?{type:"heatmap",name:"heatmap",coordinateSystem:"calendar",calendarIndex:0,data:i.map(u=>[y.get(u,s.data_key),y.get(u,o.data_key)])}:Object.entries(r).map(([u,l])=>({type:"heatmap",name:u,coordinateSystem:"calendar",calendarIndex:0,data:l.map(d=>[y.get(d,s.data_key),y.get(d,o.data_key)])}))}const wg=e=>{try{return ue(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function _g({conf:e,valueFormatters:t,dataDict:r,params:i}){const{value:s}=i,[o,u]=s,d=[{label:e.heat_block.name,value:t.heat_block(u),style:{label:"",value:""}}],c=r[o];return c&&e.tooltip.metrics.forEach(f=>{d.push({label:f.name,value:wg(y.get(c,f.data_key,"")),style:{label:"",value:""}})}),d}function Sg(e,t,r){const i=y.keyBy(t,e.calendar.data_key);return{confine:!0,formatter:function(s){const u=_g({conf:e,valueFormatters:r,dataDict:i,params:s}).map(c=>`
224
+ `}}function tf(){return{show:!0,trigger:"item",confine:!0,formatter:ef()}}const nf={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function rf(e,t,r){r.reduce((o,u)=>{const l=lt(u,t);return o[u.name]=Je(u,l),o},{});const s={series:{data:Kh(e,t),levels:Hh(e)},tooltip:tf()};return v.defaultsDeep({},s,nf)}le.use([de.SunburstChart,ke.CanvasRenderer]);function af({context:e}){const{variables:t}=e,{value:r}=W(e.instanceData,"config"),i=b.useMemo(()=>v.defaults({},r,Fn),[r]),s=e.data,{width:o,height:u}=e.viewport,l=b.useMemo(()=>rf(i,s,t),[i,s,t]);return!o||!u?null:n(De,{echarts:le,option:l,style:{width:o,height:u},notMerge:!0,theme:"merico-light"})}function sf({data:e,control:t,watch:r}){return r(["label_key","value_key","group_key"]),p(a.Stack,{children:[n(x.Controller,{name:"label_key",control:t,render:({field:i})=>n(Y,{label:"Label Key",required:!0,data:e,...i})}),n(x.Controller,{name:"value_key",control:t,render:({field:i})=>n(Y,{label:"Value Key",required:!0,data:e,...i})}),n(x.Controller,{name:"group_key",control:t,render:({field:i})=>n(Y,{label:"Group Key",data:e,clearable:!0,...i})})]})}const of=[{label:"Radial",value:"radial"},{label:"Tangential",value:"tangential"},{label:"None",value:"0"}],lf=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],uf=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`levels.${r}.r0`,control:e,render:({field:s})=>n(a.TextInput,{label:"Inside Radius",placeholder:"0%",...s})}),n(x.Controller,{name:`levels.${r}.r`,control:e,render:({field:s})=>n(a.TextInput,{label:"Outside Radius",placeholder:"50%",...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),n(x.Controller,{name:`levels.${r}.label.show_label_tolerance`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Hide label when its percentage is less than...",precision:4,step:5e-4,min:0,max:1,...s})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`levels.${r}.label.rotate`,control:e,render:({field:s})=>n(a.Select,{label:"Rotate",data:of,...s})}),n(x.Controller,{name:`levels.${r}.label.align`,control:e,render:({field:s})=>n(a.Select,{label:"Align",data:lf,...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`levels.${r}.label.position`,control:e,render:({field:s})=>n(Ln,{label:"Position",...s})}),n(x.Controller,{name:`levels.${r}.label.padding`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Padding",min:0,hideControls:!0,...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Level"})]}),df=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"levels"}),u=t("levels"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>s({id:Date.now().toString(),r0:"",r:"",label:{show_label_tolerance:.001,rotate:"0",align:"center",position:"inside",padding:0}}),c=t("levels.0.id"),[f,g]=b.useState(()=>c??null);return b.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(P,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(k.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure ring style on each level"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:h.id,children:m},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:h.id,children:n(uf,{control:e,index:m,remove:o,data:r},h.id)},h.id))]})]})};function cf({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,Fn),[t]),o=b.useMemo(()=>v.clone(s),[s]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,s),[g,s]);d(["label_key","value_key","group_key","levels"]);const[m,w]=b.useState("Data");return n("form",{onSubmit:l(r),children:p(a.Stack,{spacing:"xs",children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Sunburst Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{value:m,onTabChange:w,orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Data",children:"Data"}),n(a.Tabs.Tab,{value:"Levels",children:"Levels"})]}),n(a.Tabs.Panel,{value:"Data",children:n(sf,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Levels",children:n(df,{control:u,watch:d,data:i})})]})]})})}function pf(e){const{label_field:t,value_field:r,...i}=e;return{...i,label_key:t,value_key:r}}function hf(e){const{group_key:t="",...r}=e;return{...r,group_key:t}}function ff(e){const{levels:t=[],...r}=e;return{...r,levels:t}}class gf extends he{constructor(){super(...arguments);O(this,"VERSION",4)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:pf(r.config)})),this.version(3,r=>({...r,version:3,config:hf(r.config)})),this.version(4,r=>({...r,version:4,config:ff(r.config)}))}}const mf={displayName:"Sunburst Chart",displayGroup:"ECharts-based charts",migrator:new gf,name:"sunburst",viewRender:af,configRender:cf,createConfig(){return{version:4,config:v.cloneDeep(Fn)}}};var Le=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e.custom="custom",e))(Le||{});const va=["function text({ value }) {"," // your code goes here"," return value","}"].join(`
225
+ `),Wn={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!0,verticalSpacing:"1em"},xa={left:"flex-start",center:"center",right:"flex-end"},bf=({header:e,cx:t})=>{const r=v.get(e.column.columnDef.meta,"align","left");return p(a.Text,{className:t("table-head-cell",{"table-head-cell--sortable":e.column.getCanSort()}),onClick:e.column.getToggleSortingHandler(),align:r,sx:{justifyContent:xa[r]},children:[e.isPlaceholder?null:Ee.flexRender(e.column.columnDef.header,e.getContext()),n(yf,{direction:e.column.getIsSorted()})]})},yf=({direction:e})=>{switch(e){case"asc":return n(V.IconArrowUp,{size:16});case"desc":return n(V.IconArrowDown,{size:"1em"});default:return null}},jn={id:"builtin:table:click-cell-content",displayName:"Click Cell Content",nameRender:_f,configRender:Cf,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"}]},vf={column:""};function Ca(e){const{value:t}=W(e.instanceData,"config");return t?t.columns.map((r,i)=>({label:r.label,value:i.toString()})):[]}function xf(e){return v.isEmpty(e)?[]:Object.keys(e[0]).map(t=>({label:t,value:t}))}function Cf(e){const t=Ca(e.instance),r=xf(e.sampleData),i=t.length>0?t:r,{value:s,set:o}=W(e.trigger.triggerData,"config"),{column:u}=v.defaults({},s,vf),l=d=>{isNaN(+d)?o({column:d}):o({column:+d})};return n(a.Select,{clearable:!1,data:i,label:"Choose a column",value:u.toString(),onChange:l})}function wf(e,t){return e?v.isNumber(e.column)?`Click cell of ${t[e.column].label}`:`Click cell of ${e.column}`:"Click cell content (click to config)"}function _f(e){const t=Ca(e.instance),{value:r}=W(e.trigger.triggerData,"config");return n(a.Text,{children:wf(r,t)})}const Sf=a.createStyles(e=>({root:{overflow:"auto",position:"relative","& .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:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[0]}}},thead:{background:e.colorScheme==="dark"?e.colors.dark[7]:e.white,position:"sticky",top:24,transform:"translateY(-1px)",zIndex:10,"&::after":{content:'" "',display:"block",background:"white",position:"absolute",left:0,right:0,top:0,bottom:0,zIndex:-1}},info_bar:{position:"sticky",top:0,left:0,right:0,zIndex:10,background:"white"}})),Tf={tableLayout:"fixed","th, td":{padding:"2px 10px",div:{overflow:"hidden",textOverflow:"ellipsis"},"&:first-of-type":{paddingLeft:2,paddingRight:2}}};function wa(e,t,r){return Math.min(Math.max(e,t),r)}class kf{constructor(t){this.steps=t;const r=[],i=new Set;for(const s of t)i.has(s.to)||(r.push(s),i.add(s.to));if(r.sort((s,o)=>s.from-o.from),r.length<2)throw new Error("MultiStepValueMapper requires at least 2 steps");this.steps=r}getLinearFunction(t,r){const i=(r.to-t.to)/(r.from-t.from),s=t.to-i*t.from;return o=>i*o+s}getStepFunctionForValue(t){let r=v.findLastIndex(this.steps,i=>i.from<=t);return r=wa(r,0,this.steps.length-2),this.getLinearFunction(this.steps[r],this.steps[r+1])}mapValue(t){return wa(this.getStepFunctionForValue(t)(t),0,100)}}class Df{constructor(t,r,i,s,o){this.getColIndex=t,this.cell=r,this.triggers=i,this.interactionManager=s,this.colorManager=o}getClickHandler(){const t=this.getRelatedTrigger();if(t.length!==0)return()=>{const r={row_data:this.cell.row.original,row_index:this.cell.row.index,col_index:this.getColIndex(this.cell)};for(const i of t)this.interactionManager.runInteraction(i.id,r)}}getRelatedTrigger(){return this.triggers.filter(r=>r.schemaRef===jn.id).filter(r=>{const i=this.getColIndex(this.cell),s=v.get(this.cell.column.columnDef.meta,"value_field"),o=v.get(r.config,"column");return o==i||o==s})}isClickable(){return this.getRelatedTrigger().length>0}get columnConf(){return this.cell.column.columnDef.meta}get bgColor(){const t=this.columnConf.cellBackgroundColor;if(!t||t==="none")return;if(v.isString(t))return t;const r=+this.cell.getValue();if(isFinite(r)){const i=this.colorManager.decodeInterpolation(t.interpolation),o=new kf(t.steps).mapValue(r);return i==null?void 0:i.getColor(o)}}}const If=a.createStyles((e,t)=>({content:{display:"flex",alignItems:"center",justifyContent:xa[t.align],".table-cell-text":{whiteSpace:"nowrap",cursor:t.clickable?"pointer":"default",textDecoration:t.clickable?"underline":"none"}}}));function Mf(e){return e?Fe(e).oklch()[0]>.7?"black":"white":"inherit"}function Af(e){const t=e.tableCellContext.bgColor;return{backgroundColor:t,color:Mf(t)}}function ct(e){const t=e.tableCellContext.isClickable(),r=If({clickable:t,align:e.align});return n("div",{className:r.classes.content,style:{...Af(e)},children:n(a.Text,{className:"table-cell-text",onClick:e.tableCellContext.getClickHandler(),children:n("span",{title:e.children,children:e.children})})})}function $f(e){return n(ct,{...e,children:e.value})}function zf(e){const t=se(e.value).format({average:!0,mantissa:2,trimMantissa:!0});return n(ct,{...e,children:t})}function Ef(e){const t=se(e.value).format({thousandSeparated:!0});return n(ct,{...e,children:t})}function Lf(e){const t=se(e.value).format({output:"percent",mantissa:3});return n(ct,{...e,children:t})}function Of(e){const t=e.value,r=e.func_content;if(!r)return n(ct,{...e,children:t});const i=new Function(`return ${r}`)()({value:t});return n(ct,{...e,children:i})}function Pf(e){switch(e.type){case Le.string:return n($f,{...e});case Le.eloc:return n(zf,{...e});case Le.number:return n(Ef,{...e});case Le.percentage:return n(Lf,{...e});case Le.custom:return n(Of,{...e})}}const Vf=e=>{const t=Ge(e),r=Pe(t.triggerManager,jn.id),{colorManager:i}=b.useContext(Ne);return b.useCallback(s=>new Df(e.getColIndex,s,r,t,i),[r,t,e.getColIndex])};function Bf({context:e,instance:t}){var re,oe;const r=e.data??[],{height:i,width:s}=e.viewport,{value:o=Wn}=W(e.instanceData,"config"),{use_raw_columns:u,columns:l,...d}=o,{classes:c,cx:f}=Sf(),g=b.useMemo(()=>u?!Array.isArray(r)||r.length===0?[]:Object.keys(r[0]).map(ne=>({id:ne,label:ne,value_field:ne,value_type:Le.string,align:"left"})):l,[u,l,r]),h=Vf({getColIndex:b.useCallback(ne=>g.indexOf(ne.column.columnDef.meta),[g]),vizManager:e.vizManager,instance:t}),m=b.useMemo(()=>{const ne=Ee.createColumnHelper();return g.map(fe=>ne.accessor(fe.value_field,{cell:_e=>n(Pf,{tableCellContext:h(_e.cell),value:_e.getValue(),type:fe.value_type,...fe}),header:fe.label,enableSorting:!0,meta:fe,size:fe.width,minSize:fe.width}))},[g,h]),[w,C]=b.useState([]),S=Ee.useReactTable({data:r,state:{sorting:w},onSortingChange:C,columns:m,getCoreRowModel:Ee.getCoreRowModel(),getSortedRowModel:Ee.getSortedRowModel()}),{rows:A}=S.getRowModel(),$=b.useRef(null),q=io.useVirtual({parentRef:$,size:A.length,estimateSize:b.useCallback(()=>28,[]),overscan:20}),{virtualItems:F,totalSize:L}=q,z=F.length>0&&((re=F==null?void 0:F[0])==null?void 0:re.start)||0,M=F.length>0?L-(((oe=F==null?void 0:F[F.length-1])==null?void 0:oe.end)||0):0,G=A.length,U=G>0,Q=U?i-22:i,te=U?22:0;return!Array.isArray(r)||r.length===0?n(a.Text,{color:"gray",align:"center",children:"Empty Data"}):p("div",{ref:$,style:{height:i,width:s},"data-enable-scrollbar":!0,className:f(c.root,{"table-highlight-on-hover":o.highlightOnHover}),children:[G>0&&n(a.Box,{className:c.info_bar,sx:{height:22},children:p(a.Text,{align:"right",pr:6,size:14,color:"dimmed",fw:"normal",children:["Total: ",G]})}),p(a.Table,{sx:{...Tf,maxHeight:Q},...d,striped:o.striped,children:[n("thead",{className:c.thead,style:{top:te},children:S.getHeaderGroups().map(ne=>n("tr",{children:ne.headers.map(pe=>n("th",{style:{width:pe.getSize()},children:n(bf,{header:pe,cx:f})},pe.id))},ne.id))}),p("tbody",{children:[z>0&&n("tr",{children:n("td",{style:{height:`${z}px`}})}),F.map(ne=>{const pe=A[ne.index];return n("tr",{children:pe.getVisibleCells().map(fe=>n("td",{children:Ee.flexRender(fe.column.columnDef.cell,fe.getContext())},fe.id))},pe.id)}),M>0&&n("tr",{children:n("td",{style:{height:`${M}px`}})})]})]})]})}const _a=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)"}}}})),Nf=[{from:0,to:0},{from:100,to:100}];class Gf{constructor(){O(this,"steps",new Map);O(this,"interpolation");O(this,"onChange");ae.makeAutoObservable(this,{steps:ae.observable},{deep:!1}),ae.reaction(()=>ae.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(t){for(const r of t)this.steps.set(r.to,r.from)}notifyStepChange(){var t;(t=this.onChange)==null||t.call(this,Array.from(this.steps.entries()).map(([r,i])=>({to:r,from:i})).sort((r,i)=>r.to-i.to||r.from-i.from))}fromProps(t){t.steps.length<2?this.setSteps(Nf):this.setSteps(t.steps),this.interpolation=t.interpolation,this.onChange=t.onChange}changeStep(t,r){t==null?this.steps.delete(r):this.steps.set(r,t)}getStepFromValue(t){return this.steps.get(t)}}function qf(e){const{onChange:t,color:r,index:i,value:s}=e,{classes:o}=_a(),[u,l]=b.useState(s),[d,{setTrue:c,setFalse:f}]=Z.useBoolean(!1),g=i%2===1,h=g&&s!=null,m=!g&&s!=null,w=`map ${s} to color ${i}`,C=()=>{l(s),f()},S=()=>{f(),t==null||t(u)},A=se(s).format({average:!0});return p("div",{"data-testid":`palette-item-${i}`,className:o.paletteItem,children:[n(a.Text,{title:w,style:{opacity:h?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:A}),p(a.Popover,{width:200,trapFocus:!0,opened:d,onClose:f,children:[n(a.Popover.Target,{children:n("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:c,style:{"--shadow-color":Fe(r).alpha(.5).hex(),backgroundColor:r}})}),n(a.Popover.Dropdown,{children:p(a.Stack,{children:[n(a.NumberInput,{size:"xs",label:"Map a value to this color",value:u,onChange:l}),p(a.Group,{position:"right",children:[n(a.Button,{variant:"subtle",size:"xs",onClick:C,children:"Cancel"}),n(a.Button,{"data-testid":"palette-item-ok",size:"xs",onClick:S,children:"OK"})]})]})})]}),n(a.Text,{title:w,style:{opacity:m?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:A})]})}const Ff=T.observer(({model:e})=>{const{classes:t}=_a(),r=v.range(0,13,1).map(i=>100/12*i).map(i=>[e.interpolation.getColor(i),i]);return n("div",{className:t.palette,children:r.map(([i,s],o)=>n(qf,{index:o,color:i,value:e.getStepFromValue(s),onChange:u=>e.changeStep(u,s)},i))})}),Wf=T.observer(function(t){const r=Z.useCreation(()=>new Gf,[]);return b.useEffect(()=>{r.fromProps(t)}),r.interpolation==null?null:n(Ff,{model:r})}),jf=e=>{const{value:t,onChange:r,colorManager:i}=e,s=i.getColorInterpolations(),[o,u]=b.useState(t),l=i.decodeInterpolation(o.interpolation)||s[0],[d,{setTrue:c,setFalse:f}]=Z.useBoolean(),g=s.map(S=>({label:S.displayName,value:i.encodeColor(S),group:S.category}));function h(S){S&&u(A=>({...A,interpolation:S}))}const m=()=>{f(),r==null||r(ae.toJS(o))};function w(S){u(A=>({...A,steps:S}))}const C=()=>{f(),u(t)};return p(P,{children:[n(a.Button,{variant:"outline",onClick:c,children:l==null?void 0:l.displayName}),n(a.Modal,{size:508,title:"Setup color interpolation",opened:d,onClose:f,zIndex:320,children:d&&p(a.Stack,{"data-testid":"color-interpolation-modal",children:[n(a.Select,{label:"Color style",value:o.interpolation,data:g,onChange:h}),n(Wf,{steps:o.steps,interpolation:l,onChange:w}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:C,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:m,children:"OK"})]})]})})]})},Yf=["static","interpolation","none"].map(e=>({label:v.capitalize(e),value:e})),Rf=[{from:0,to:0},{from:100,to:100}];function Sa(e){return e?v.isString(e)?e==="none"?"none":"static":"interpolation":"none"}function Qf(e,t){var r;return Sa(t)==="static"?t:(r=e.getStaticColors()[0])==null?void 0:r.value}function Uf(e,t){return v.isObject(t)?t:{steps:Rf,interpolation:e.encodeColor(e.getColorInterpolations()[0])}}const Xf=b.forwardRef((e,t)=>{const{colorManager:r}=b.useContext(Ne),[i,s]=b.useState(Sa(e.value)),[o,u]=b.useState(Qf(r,e.value)),l=Z.useLatest(o),[d,c]=b.useState(Uf(r,e.value)),f=Z.useLatest(d),g=w=>{var C,S,A;s(w||"none"),w==="static"?(C=e.onChange)==null||C.call(e,l.current):w==="none"||!w?(S=e.onChange)==null||S.call(e,"none"):(A=e.onChange)==null||A.call(e,f.current)},h=w=>{var C;u(w),(C=e.onChange)==null||C.call(e,w)},m=w=>{var C;c(w),(C=e.onChange)==null||C.call(e,w)};return p(a.Stack,{align:"stretch",children:[n(a.Select,{label:"Cell background",value:i||"none",onChange:g,data:Yf}),i==="static"&&n(Se,{value:o,onChange:h}),i==="interpolation"&&n(jf,{colorManager:r,value:d,onChange:m})]})}),Zf={[Le.eloc]:"ELOC"},Kf=Object.values(Le).map(e=>({label:v.get(Zf,e,v.capitalize(e)),value:e})),Jf=b.forwardRef(({label:e,value:t,onChange:r,sx:i},s)=>n(a.Select,{ref:s,label:e,data:Kf,value:t,onChange:r,sx:i})),Hf=b.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e),d=()=>{o(),t(u)},c=()=>{o(),l(e)},f=()=>{l(va)};return b.useEffect(()=>{l(e)},[e]),p(P,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Custom Cell Content"}),n(a.Modal,{size:800,title:"Custom cell content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Box,{sx:{position:"relative"},children:n(we,{height:"500px",defaultLanguage:"javascript",value:u,onChange:g=>l(g??""),theme:"vs-dark",options:{minimap:{enabled:!1}}})}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})}),eg=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Yn=()=>n(a.Text,{color:"dimmed",size:12,children:"px"}),tg=({control:e,index:t,watch:r,remove:i,column:s,data:o})=>{const u=r(`columns.${t}.value_type`);return p(a.Stack,{my:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:`columns.${t}.label`,control:e,render:({field:l})=>n(a.TextInput,{label:"Label",required:!0,id:`col-label-${t}`,sx:{flex:1},...l})}),n(x.Controller,{name:`columns.${t}.value_field`,control:e,render:({field:l})=>n(Y,{label:"Value Field",required:!0,data:o,...l})})]}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`columns.${t}.value_type`,control:e,render:({field:l})=>n(Jf,{label:"Value Type",sx:{flex:1},...l})}),u===Le.custom&&n(x.Controller,{name:`columns.${t}.func_content`,control:e,render:({field:l})=>n(Hf,{value:l.value??va,onChange:d=>l.onChange(d??"")})})]}),n(a.Divider,{mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(a.NumberInput,{hideControls:!0,label:"Min Width",rightSection:n(Yn,{}),disabled:!0}),n(x.Controller,{name:`columns.${t}.width`,control:e,render:({field:l})=>n(a.NumberInput,{hideControls:!0,label:"Width",rightSection:n(Yn,{}),...l})}),n(a.NumberInput,{hideControls:!0,label:"Max Width",rightSection:n(Yn,{}),disabled:!0})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`columns.${t}.align`,control:e,render:({field:l})=>n(a.Select,{label:"Alignment",data:eg,...l})})}),n(x.Controller,{name:`columns.${t}.cellBackgroundColor`,control:e,render:({field:l})=>n(Xf,{...l})}),n(a.Divider,{mb:4,mt:12,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),children:"Delete this column"})]})},ng=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o,update:u}=x.useFieldArray({control:e,name:"columns"}),l=()=>{const c=ye.randomId();s({id:c,label:c,value_field:"value",value_type:Le.string})};t("columns");const d=t("use_raw_columns");return p(P,{children:[n(x.Controller,{name:"use_raw_columns",control:e,render:({field:c})=>n(a.Switch,{mt:20,label:"Use Original Data Columns",checked:c.value,onChange:f=>c.onChange(f.currentTarget.checked)})}),n(a.Divider,{mt:20,mb:10,variant:"dashed"}),!d&&p(a.Stack,{children:[n(a.Text,{my:0,children:"Custom Columns"}),p(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[i.map((c,f)=>n(a.Tabs.Tab,{value:f.toString(),children:f+1},c.id)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),i.map((c,f)=>n(a.Tabs.Panel,{value:f.toString(),children:n(tg,{control:e,watch:t,index:f,column:c,data:r,remove:o},f)},c.id))]})]})]})};function rg({control:e,watch:t,data:r}){return t(["horizontalSpacing","verticalSpacing","fontSize","striped","highlightOnHover"]),p(a.Stack,{spacing:"xs",children:[p(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[n(x.Controller,{name:"horizontalSpacing",control:e,render:({field:i})=>n(a.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i})}),n(x.Controller,{name:"verticalSpacing",control:e,render:({field:i})=>n(a.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i})})]}),n(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:n(x.Controller,{name:"fontSize",control:e,render:({field:i})=>n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...i})})}),p(a.Group,{position:"apart",grow:!0,children:[n(x.Controller,{name:"striped",control:e,render:({field:i})=>n(a.Switch,{label:"Striped",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})}),n(x.Controller,{name:"highlightOnHover",control:e,render:({field:i})=>n(a.Switch,{label:"Highlight on hover",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})})]})]})}function ig({columns:e,...t}){return{...t,columns:e.map(({id:r,...i})=>({id:r??ye.randomId(),...i}))}}function ag({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,Wn),[t]),o=b.useMemo(()=>ig(s),[s]);b.useEffect(()=>{!v.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),r(o))},[s,o]);const{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,s),[g,s]);return d(["id_field"]),p("form",{onSubmit:l(r),children:[p(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Table Config"}),n(a.ActionIcon,{type:"submit","aria-label":"save config",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Columns",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Data",children:"Data"}),n(a.Tabs.Tab,{value:"Style",children:"Style"}),n(a.Tabs.Tab,{value:"Columns",children:"Columns"})]}),n(a.Tabs.Panel,{value:"Data",children:n(x.Controller,{name:"id_field",control:u,render:({field:m})=>n(Y,{label:"ID Field",required:!0,data:i,...m})})}),n(a.Tabs.Panel,{value:"Style",children:n(rg,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Columns",children:n(ng,{control:u,watch:d,data:i})})]})]})}function sg(e){const{columns:t,...r}=e;return{...e,columns:t.map(i=>({...i,align:i.align??"left"}))}}class og extends he{constructor(){super(...arguments);O(this,"VERSION",3)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{columns:i,...s}=r.config;return{...r,version:2,config:{...s,columns:i.map(({id:o,...u})=>({id:o??ye.randomId(),...u}))}}}),this.version(3,r=>({...r,version:3,config:sg(r.config)}))}}const Rn={createConfig(){return{version:3,config:v.cloneDeep(Wn)}},displayName:"Table",displayGroup:"Others",migrator:new og,name:"table",viewRender:Bf,configRender:ag,triggers:[jn]},Ta=["function text({ data, variables, filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
226
+ `),Qn={func_content:Ta,horizontal_align:"left",font_size:"14px",font_weight:"normal"},lg=T.observer(({context:e})=>{const t=N(),{value:r=Qn}=W(e.instanceData,"config"),{variables:i}=e,s=e.data,{func_content:o,horizontal_align:u,font_size:l,font_weight:d}=r,c=b.useMemo(()=>i.reduce((g,h)=>{const m=lt(h,s);return g[h.name]=Je(h,m),g},{}),[i,s]),f=b.useMemo(()=>new Function(`return ${o}`)()({data:s,variables:c,filters:t.filters.values,context:t.context.current}),[o,s,c,t.filters.values,t.context.current]);return n(a.Text,{align:u,weight:d,sx:{fontSize:l},children:f})}),ug=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{sx:{position:"relative"},children:n(we,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},dg=b.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e),d=()=>{o(),t(u)},c=()=>{o(),l(e)},f=()=>{l(Ta)};return b.useEffect(()=>{l(e)},[e]),p(P,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Edit Content"}),n(a.Modal,{size:800,title:"Text content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(ug,{value:u,onChange:l}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})}),cg=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function pg({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=b.useMemo(()=>v.defaultsDeep({},t,Qn),[t]),s=b.useMemo(()=>{const{func_content:h,horizontal_align:m,font_size:w,font_weight:C}=i;return{func_content:h,horizontal_align:m,font_size:w,font_weight:C}},[i]);b.useEffect(()=>{!v.isEqual(i,s)&&(console.log("config malformed, resetting to defaults",i,s),r(s))},[i,s]);const{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]),l(["func_content","horizontal_align","font_size","font_weight"]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,i),[f,i]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{weight:500,children:"Configurations"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Stack,{spacing:10,children:[n(x.Controller,{name:"func_content",control:o,render:({field:h})=>n(dg,{...h})}),n(a.Divider,{mt:10,mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),n(x.Controller,{name:"horizontal_align",control:o,render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:cg,...h})}),n(x.Controller,{name:"font_size",control:o,render:({field:h})=>n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},...h})}),n(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:n(x.Controller,{name:"font_weight",control:o,render:({field:h})=>n(Ji,{label:"Font Weight",...h})})})]})]})})}class hg extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const fg={displayName:"Text",displayGroup:"Others",migrator:new hg,name:"text",viewRender:lg,configRender:pg,createConfig(){return{version:1,config:v.cloneDeep(Qn)}}},gg=()=>p("svg",{width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",children:[n("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M22.49 27.79H14.47C13.55 27.79 12.81 28.53 12.81 29.45C12.81 30.37 13.55 31.11 14.47 31.11H22.49C23.41 31.11 24.15 30.37 24.15 29.45C24.15 28.54 23.41 27.79 22.49 27.79ZM34.32 31.28C35.22 31.32 35.7 31.82 35.74 32.76C35.78 33.54 35.37 34.3 34.51 35.04C33.52 35.9 33.03 36.95 33.03 38.19V38.81H34.82V38.25C34.78 37.59 35.07 37.02 35.68 36.52C37.12 35.41 37.82 34.15 37.78 32.75C37.66 30.53 36.5 29.35 34.32 29.23C32.3 29.23 31.05 30.46 30.55 32.93L32.53 33.55C32.82 32.04 33.42 31.28 34.32 31.28ZM35 39.93H32.84V42.21H35V39.93ZM14.83 36.42H18.54C19.46 36.42 20.2 37.17 20.2 38.08C20.2 39 19.46 39.74 18.54 39.74H10.52C9.6 39.74 8.86 39 8.86 38.08C8.86 37.61 9.06 37.19 9.37 36.89H5.66C4.74 36.89 4 36.15 4 35.23C4 34.31 4.74 33.57 5.66 33.57H13.68C14.6 33.57 15.34 34.31 15.34 35.23C15.34 35.7 15.14 36.12 14.83 36.42ZM50.94 36.85H58.74C59.66 36.85 60.4 37.59 60.41 38.51C60.41 39.43 59.67 40.17 58.75 40.17H54.26C54.56 40.47 54.74 40.88 54.74 41.34C54.74 42.26 54 43 53.08 43H50.94V36.85Z",fill:"#B8C0CC"}),n("path",{d:"M18.39 32.28H16.51V35.02H18.39V32.28Z",fill:"#9399A5"}),n("path",{d:"M46.87 15H20.69C18.38 15 16.5 16.88 16.5 19.19V26.22H18.38V23.45H49.18V47.68H18.38V41.07H16.5V49.55H51.05V19.19C51.06 16.88 49.18 15 46.87 15ZM39.46 20.73C38.81 20.73 38.29 20.2 38.29 19.56C38.29 18.92 38.82 18.39 39.46 18.39C40.11 18.39 40.63 18.92 40.63 19.56C40.63 20.2 40.11 20.73 39.46 20.73ZM43.22 20.73C42.57 20.73 42.05 20.2 42.05 19.56C42.05 18.92 42.58 18.39 43.22 18.39C43.87 18.39 44.39 18.92 44.39 19.56C44.39 20.2 43.87 20.73 43.22 20.73ZM46.97 20.73C46.32 20.73 45.8 20.2 45.8 19.56C45.8 18.92 46.33 18.39 46.97 18.39C47.62 18.39 48.14 18.92 48.14 19.56C48.14 20.2 47.62 20.73 46.97 20.73Z",fill:"#9399A5"})]});function ka(e,t){const r=v.get(e,t,"");if(r)throw new Error(r)}async function mg(e,t,r,i={}){const s={"X-Requested-With":"XMLHttpRequest","Content-Type":i.string?"application/x-www-form-urlencoded":"application/json",...i.headers},o={baseURL:e,method:"POST",url:t,params:i.params,headers:s};return o.data=i.string?JSON.stringify(r):r,Qe(o).then(u=>u.data).catch(u=>Promise.reject(u))}const bg=({conf:e,data:t})=>async()=>{const{expertSystemURL:r,path:i,goal:s,question:o}=e;if(!i||!s||!o)return;const u={dashboard:s,panel:o,data:t};try{const l=r.startsWith("http")?r:window.location.origin;return await mg(l,`/expert/v3/devtable/${i}`,u,{})}catch(l){throw ka(l,"response.data.detail"),ka(l,"response.data.error"),console.error(l),l}},Un={expertSystemURL:"",path:"",goal:"",question:""},Xn={height:"100%",overflowY:"auto",...bn},Da=({message:e})=>n(a.Box,{sx:Xn,children:n("div",{dangerouslySetInnerHTML:{__html:e},style:{fontSize:"14px",lineHeight:"32px",color:"#3D3E45"}})}),yg=({error:e,width:t,height:r})=>{const i=e.message;if(i.startsWith("<"))return n(Da,{message:i});const o=r-25-20-30;return n(a.Center,{sx:{width:"100%",height:o},children:p(a.Stack,{align:"center",spacing:20,children:[n(gg,{}),n(Da,{message:i})]})})};function vg({context:e}){const{value:t}=W(e.instanceData,"config"),r=b.useMemo(()=>v.defaultsDeep({},t,Un),[t]),{width:i,height:s}=e.viewport,o=e.data??[],{data:u,error:l,loading:d}=Z.useRequest(bg({conf:r,data:o}),{refreshDeps:[o,r]});return!i||!s||!r?null:d?n(a.Box,{sx:{position:"relative",height:s},children:n(a.LoadingOverlay,{visible:!0})}):l?n(a.Box,{sx:Xn,"data-enable-scrollbar":!0,children:n(yg,{error:l,width:i,height:s})}):!u||!Array.isArray(u.replies)||u.replies.length===0?null:n(a.Box,{sx:Xn,"data-enable-scrollbar":!0,children:u.replies.map((c,f)=>n("div",{dangerouslySetInnerHTML:{__html:c.interpretation.html}},f))})}function xg({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=b.useMemo(()=>v.defaultsDeep({},t,Un),[t]),{control:s,handleSubmit:o,watch:u,getValues:l,reset:d}=x.useForm({defaultValues:i});b.useEffect(()=>{d(i)},[i]),u(["expertSystemURL","goal","path","question"]);const c=l(),f=b.useMemo(()=>!v.isEqual(c,i),[c,i]);return n("form",{onSubmit:o(r),children:p(a.Stack,{children:[p(a.Group,{grow:!0,children:[n(x.Controller,{name:"expertSystemURL",control:s,render:({field:g})=>n(a.TextInput,{label:"Expert System URL",...g})}),n(x.Controller,{name:"path",control:s,render:({field:g})=>n(a.TextInput,{label:"Path",required:!0,...g})})]}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:"goal",control:s,render:({field:g})=>n(a.TextInput,{label:"Goal",required:!0,...g})}),n(x.Controller,{name:"question",control:s,render:({field:g})=>n(a.TextInput,{label:"Question",required:!0,...g})})]}),n(a.Divider,{variant:"dashed",mt:16,mb:8}),n(a.Button,{type:"submit",variant:"filled",color:"blue",leftIcon:n(k.DeviceFloppy,{size:20}),disabled:!f,sx:{alignSelf:"flex-end"},children:"Submit Changes"})]})})}class Cg extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const wg={displayName:"Merico GQM",displayGroup:"Merico suite",migrator:new Cg,name:"mericoGQM",viewRender:vg,configRender:xg,createConfig(){return{version:1,config:v.cloneDeep(Un)}}};function _g(e,t,r){if(!e)return r[0];try{return[t,j(t).add(1,"year").subtract(1,"day").valueOf()]}catch(i){return console.error(i),r[0]}}function Sg(e,t,r){const i=_g(e,t,r);return{top:50,left:25,right:5,cellSize:["auto",13],range:i,itemStyle:{borderColor:"#eee"},splitLine:{show:!0},dayLabel:{firstDay:1},monthLabel:{position:"end"},yearLabel:{show:!0}}}function Tg(e){return{heat_block:function(i){if(!e.heat_block.value_formatter)return i;try{return se(i).format(e.heat_block.value_formatter)}catch(s){return console.error(s),i}}}}function kg(e,t){return{show:!e,selectedMode:"single",top:5,right:5,data:t.map(r=>({name:r,icon:"circle"}))}}function Dg(e,t,r,i){const{calendar:s,heat_block:o}=e;return t?{type:"heatmap",name:"heatmap",coordinateSystem:"calendar",calendarIndex:0,data:i.map(u=>[v.get(u,s.data_key),v.get(u,o.data_key)])}:Object.entries(r).map(([u,l])=>({type:"heatmap",name:u,coordinateSystem:"calendar",calendarIndex:0,data:l.map(d=>[v.get(d,s.data_key),v.get(d,o.data_key)])}))}const Ig=e=>{try{return se(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Mg({conf:e,valueFormatters:t,dataDict:r,params:i}){const{value:s}=i,[o,u]=s,d=[{label:e.heat_block.name,value:t.heat_block(u),style:{label:"",value:""}}],c=r[o];return c&&e.tooltip.metrics.forEach(f=>{d.push({label:f.name,value:Ig(v.get(c,f.data_key,"")),style:{label:"",value:""}})}),d}function Ag(e,t,r){const i=v.keyBy(t,e.calendar.data_key);return{confine:!0,formatter:function(s){const u=Mg({conf:e,valueFormatters:r,dataDict:i,params:s}).map(c=>`
227
227
  <tr>
228
228
  <th style="text-align: right;">
229
229
  <div style="${c.style.label}">${c.label}</div>
@@ -232,7 +232,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
232
232
  <div style="${c.style.value}">${c.value}
233
233
  </td>
234
234
  </tr>
235
- `),l=y.get(s.value,0);return`
235
+ `),l=v.get(s.value,0);return`
236
236
  <table style="width: auto">
237
237
  <thead>
238
238
  <tr colspan="2">
@@ -249,13 +249,13 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
249
249
  </thead>
250
250
  <tbody>${u.join("")}</tbody>
251
251
  </table>
252
- `}}}function Tg(e,t){return{min:e.heat_block.min??0,max:e.heat_block.max??100,calculable:!0,orient:"horizontal",left:t?"center":5,top:0,itemWidth:15}}const Dg={tooltip:{confine:!0},grid:{containLabel:!0}},kg=e=>W(e).get("year");function Ig(e,t){const r=e.calendar.data_key,i=y.groupBy(t,d=>kg(d[r])),s=Object.keys(i),o=t.map(d=>W(d[r]).valueOf()),u=y.min(o),l=y.max(o);return{minDate:u??0,maxDate:l??0,dateSpan:W(l).diff(u,"day"),dataByYear:i,years:s}}function Mg(e,t,r){const i=yg(e),{dateSpan:s,minDate:o,dataByYear:u,years:l}=Ig(e,t),d=s<=366,c={calendar:vg(d,o,l),series:Cg(e,d,u,t),tooltip:Sg(e,t,i),visualMap:Tg(e,d),legend:xg(d,l)};return y.defaultsDeep({},c,Dg)}function Ag(e){return n(O,{})}function zg(e){return n(a.Text,{children:"Click heat block"})}const Da={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:zg,configRender:Ag,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Zn={calendar:{data_key:"",locale:"EN"},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:De},tooltip:{metrics:[]}};oe.use([q.DataZoomComponent,de.BarChart,de.LineChart,de.HeatmapChart,q.CalendarComponent,q.GridComponent,q.LegendComponent,q.TooltipComponent,q.VisualMapComponent,Ie.CanvasRenderer]);function $g({name:e},t){const r=t.getOption();r.calendar.forEach(i=>{i.range=e}),t.setOption(r)}function Eg({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=m.useMemo(()=>{const g=e.calendar.data_key;return y.keyBy(t,g)},[t,e.calendar.data_key]),l=Oe(s.triggerManager,Da.id),d=m.useCallback(g=>{const[h,b]=g.value,w=y.get(u,h,{error:"rowData is not found"});l.forEach(C=>{s.runInteraction(C.id,{...g,rowData:w})})},[u,l,s]),c=m.useMemo(()=>({click:d,legendselectchanged:$g}),[d]),f=m.useMemo(()=>Mg(e,t),[e,t]);return!r||!i?null:n(Me,{echarts:oe,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,opts:{locale:e.calendar.locale},theme:"merico-light"})}function Lg({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=j(e.instanceData,"config"),{variables:s}=e,o=m.useMemo(()=>y.defaults({},i,Zn),[i]),u=e.data,{width:l,height:d}=e.viewport;return!o.calendar.data_key||!o.heat_block.data_key?null:n(a.Box,{children:n(Eg,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}function Pg({data:e,control:t,watch:r}){return r(["heat_block"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.data_key",control:t,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"heat_block.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.min",control:t,render:({field:i})=>n(a.NumberInput,{label:"Min Value",...i})}),n(x.Controller,{name:"heat_block.max",control:t,render:({field:i})=>n(a.NumberInput,{label:"Max Value",...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(x.Controller,{name:"heat_block.value_formatter",control:t,render:({field:i})=>n(Ve,{...i})})]})}const Og=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`tooltip.metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`tooltip.metrics.${r}.data_key`,control:e,render:({field:s})=>n(U,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),Vg=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"tooltip.metrics"}),u=t("tooltip.metrics"),l=i.map((h,b)=>({...h,...u[b]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("tooltip.metrics.0.id"),[f,g]=m.useState(()=>c??null);return m.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(O,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(D.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,b)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:b},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((h,b)=>n(a.Tabs.Panel,{value:h.id,children:n(Og,{control:e,index:b,remove:o,data:r},h.id)},h.id))]})]})};function Bg({data:e,control:t,watch:r}){return n(Vg,{control:t,watch:r,data:e})}const Ng=[{label:"Chinese",value:"ZH"},{label:"English",value:"EN"}];function Gg({data:e,control:t,watch:r}){return r(["calendar"]),p(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"calendar.data_key",control:t,render:({field:i})=>n(U,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})})}),n(x.Controller,{name:"calendar.locale",control:t,render:({field:i})=>n(a.Select,{label:"Language",required:!0,data:Ng,sx:{flex:1},...i})})]})}function qg({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),i=e.data,s=m.useMemo(()=>y.defaultsDeep({},t,Zn),[t]),o=m.useMemo(()=>y.cloneDeep(s),[s]);m.useEffect(()=>{!y.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),r(o))},[s,o]);const{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,s),[g,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Calendar Heatmap Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Calendar",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Calendar",children:"Calendar"}),n(a.Tabs.Tab,{value:"Heat Block",children:"Heat Block"}),n(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"})]}),n(a.Tabs.Panel,{value:"Calendar",children:n(Gg,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(Pg,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(Bg,{control:u,watch:d,data:i})})]})]})})}class Fg extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Wg={displayName:"Heatmap(Calendar)",displayGroup:"ECharts-based charts",migrator:new Fg,name:"calendarHeatmap",viewRender:Lg,configRender:qg,createConfig:()=>({version:1,config:Zn}),triggers:[Da]};function jg(e){const t=e.x_axes.some(o=>o.position==="top"&&!!o.name&&o.show);let r=0;t&&(r+=15);const i=e.x_axes.some(o=>o.position==="bottom"&&!!o.name&&o.show);let s=0;return i&&(s+=15),e.series.some(o=>!o.hide_in_legend)&&(s+=20),{top:r,right:5,bottom:s,left:5,containLabel:!0}}function Rg(e){switch(e){case"bar":return"roundRect";case"scatter":return"circle"}}function Yg(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(r=>!r.hide_in_legend).map(({name:r,type:i})=>({name:r,icon:Rg(i)})),t}function Qg(e,t,r,i){return e.map(s=>{const o=s.orientation==="horizontal",u=o?"yAxis":"xAxis",l=o?"insideEndTop":"end";return{name:s.name,type:"line",hide_in_legend:!s.show_in_legend,xAxisIndex:s.xAxisIndex,data:[],lineStyle:s.lineStyle,markLine:{data:[{name:s.name,[u]:Number(r[s.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:s.lineStyle,label:{formatter:function(){return s.template?jt(s.template,t,i):""},position:l}}}})}function Kn(e,t,r){return e.map(i=>[i[r],i[t]])}function Ug(e,t,r,i){const s=Kn(t,r,i);return y.unionBy(s,e,0)}function Xg({dataTemplate:e,data:t,name_data_key:r,value_data_key:i,valueTypedXAxis:s}){return s?Ug(e,t,r,i):t.map(o=>[o[i],o[r]])}function Zg({dataTemplate:e,data:t,aggregation_on_value:r,name_data_key:i,value_data_key:s,valueTypedXAxis:o}){if(!r||r.type==="none")return Xg({dataTemplate:e,data:t,name_data_key:i,value_data_key:s,valueTypedXAxis:o});const u=Kn(t,i,s),l=y.groupBy(u,"0");return Object.entries(l).map(([c,f])=>{const g=_t(f,"1",r);return[c,g]})}function Kg({group_by_key:e,data:t,value_data_key:r,name_data_key:i}){const s=y.groupBy(t,e);return Object.entries(s).forEach(([o,u])=>{s[o]=Kn(u,i,r)}),s}function Jg({y_axis:e},{data_key:t,xAxisIndex:r,label_position:i,name:s,group_by_key:o,aggregation_on_value:u,stack:l,color:d,hide_in_legend:c,invisible:f,id:g,...h},b,w,C,S,A){const z={label:{show:!!i,position:i,formatter:A[r??"default"]},name:s,yAxisId:"main-y-axis",xAxisIndex:r,stack:l,color:f?"transparent":d,hide_in_legend:c,labelLayout:{hideOverlap:!0},emphasis:{disabled:!0},...h};if(!o||o===e.data_key)return z.data=Zg({dataTemplate:b,data:C,aggregation_on_value:u,name_data_key:e.data_key,value_data_key:t,valueTypedXAxis:w}),z;const G=Kg({group_by_key:o,data:C,name_data_key:e.data_key,value_data_key:t});return Object.entries(G).map(([F,L])=>{const $=y.cloneDeep(z);return $.name=F,$.color=void 0,$.data=L,$})}function Hg(e,t,r,i,s,o,u){const l=t.map(c=>[c,0]);return e.series.map(c=>Jg(e,c,l,r,i,u,s)).flat().concat(Qg(e.reference_lines,o,u,i))}function em(e,t){const r=e.find(l=>l.axisDim==="y"&&l.axisId==="main-y-axis");if(!r)return"";const{name:i,axisType:s,axisValue:o,axisIndex:u}=r;return s==="yAxis.category"?i:lt(t.y_axis.axisLabel.formatter)(o,u)}function tm(e,t,r){const i=t.reduce((s,{xAxisIndex:o,name:u})=>(s[u]=o,s),{});return{trigger:"axis",axisPointer:{type:"shadow"},formatter:function(s){const o=Array.isArray(s)?s:[s];if(o.length===0)return"";const u=o.map(({seriesName:c,marker:f,value:g})=>{if(Array.isArray(g)&&g.length===2&&(g=g[0]),!c)return g;const h=i[c],b=r[h]??r.default;return`
252
+ `}}}function $g(e,t){return{min:e.heat_block.min??0,max:e.heat_block.max??100,calculable:!0,orient:"horizontal",left:t?"center":5,top:0,itemWidth:15}}const zg={tooltip:{confine:!0},grid:{containLabel:!0}},Eg=e=>j(e).get("year");function Lg(e,t){const r=e.calendar.data_key,i=v.groupBy(t,d=>Eg(d[r])),s=Object.keys(i),o=t.map(d=>j(d[r]).valueOf()),u=v.min(o),l=v.max(o);return{minDate:u??0,maxDate:l??0,dateSpan:j(l).diff(u,"day"),dataByYear:i,years:s}}function Og(e,t,r){const i=Tg(e),{dateSpan:s,minDate:o,dataByYear:u,years:l}=Lg(e,t),d=s<=366,c={calendar:Sg(d,o,l),series:Dg(e,d,u,t),tooltip:Ag(e,t,i),visualMap:$g(e,d),legend:kg(d,l)};return v.defaultsDeep({},c,zg)}function Pg(e){return n(P,{})}function Vg(e){return n(a.Text,{children:"Click heat block"})}const Ia={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:Vg,configRender:Pg,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Zn={calendar:{data_key:"",locale:"EN"},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:Ie},tooltip:{metrics:[]}};le.use([B.DataZoomComponent,de.BarChart,de.LineChart,de.HeatmapChart,B.CalendarComponent,B.GridComponent,B.LegendComponent,B.TooltipComponent,B.VisualMapComponent,ke.CanvasRenderer]);function Bg({name:e},t){const r=t.getOption();r.calendar.forEach(i=>{i.range=e}),t.setOption(r)}function Ng({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=b.useMemo(()=>{const g=e.calendar.data_key;return v.keyBy(t,g)},[t,e.calendar.data_key]),l=Pe(s.triggerManager,Ia.id),d=b.useCallback(g=>{const[h,m]=g.value,w=v.get(u,h,{error:"rowData is not found"});l.forEach(C=>{s.runInteraction(C.id,{...g,rowData:w})})},[u,l,s]),c=b.useMemo(()=>({click:d,legendselectchanged:Bg}),[d]),f=b.useMemo(()=>Og(e,t),[e,t]);return!r||!i?null:n(De,{echarts:le,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,opts:{locale:e.calendar.locale},theme:"merico-light"})}function Gg({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=W(e.instanceData,"config"),{variables:s}=e,o=b.useMemo(()=>v.defaults({},i,Zn),[i]),u=e.data,{width:l,height:d}=e.viewport;return!o.calendar.data_key||!o.heat_block.data_key?null:n(a.Box,{children:n(Ng,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}function qg({data:e,control:t,watch:r}){return r(["heat_block"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.data_key",control:t,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"heat_block.name",control:t,render:({field:i})=>n(a.TextInput,{label:"Name",sx:{flex:1},...i})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"heat_block.min",control:t,render:({field:i})=>n(a.NumberInput,{label:"Min Value",...i})}),n(x.Controller,{name:"heat_block.max",control:t,render:({field:i})=>n(a.NumberInput,{label:"Max Value",...i})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(x.Controller,{name:"heat_block.value_formatter",control:t,render:({field:i})=>n(Ve,{...i})})]})}const Fg=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`tooltip.metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`tooltip.metrics.${r}.data_key`,control:e,render:({field:s})=>n(Y,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),Wg=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"tooltip.metrics"}),u=t("tooltip.metrics"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("tooltip.metrics.0.id"),[f,g]=b.useState(()=>c??null);return b.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(P,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(k.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"Configure additional metrics to show in tooltip"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:m},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:h.id,children:n(Fg,{control:e,index:m,remove:o,data:r},h.id)},h.id))]})]})};function jg({data:e,control:t,watch:r}){return n(Wg,{control:t,watch:r,data:e})}const Yg=[{label:"Chinese",value:"ZH"},{label:"English",value:"EN"}];function Rg({data:e,control:t,watch:r}){return r(["calendar"]),p(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"calendar.data_key",control:t,render:({field:i})=>n(Y,{label:"Data Field",required:!0,data:e,sx:{flex:1},...i})})}),n(x.Controller,{name:"calendar.locale",control:t,render:({field:i})=>n(a.Select,{label:"Language",required:!0,data:Yg,sx:{flex:1},...i})})]})}function Qg({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,Zn),[t]),o=b.useMemo(()=>v.cloneDeep(s),[s]);b.useEffect(()=>{!v.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),r(o))},[s,o]);const{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,s),[g,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Calendar Heatmap Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Calendar",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Calendar",children:"Calendar"}),n(a.Tabs.Tab,{value:"Heat Block",children:"Heat Block"}),n(a.Tabs.Tab,{value:"Tooltip",children:"Tooltip"})]}),n(a.Tabs.Panel,{value:"Calendar",children:n(Rg,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(qg,{control:u,watch:d,data:i})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(jg,{control:u,watch:d,data:i})})]})]})})}class Ug extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Xg={displayName:"Heatmap(Calendar)",displayGroup:"ECharts-based charts",migrator:new Ug,name:"calendarHeatmap",viewRender:Gg,configRender:Qg,createConfig:()=>({version:1,config:Zn}),triggers:[Ia]};function Zg(e){const t=e.x_axes.some(o=>o.position==="top"&&!!o.name&&o.show);let r=0;t&&(r+=15);const i=e.x_axes.some(o=>o.position==="bottom"&&!!o.name&&o.show);let s=0;return i&&(s+=15),e.series.some(o=>!o.hide_in_legend)&&(s+=20),{top:r,right:5,bottom:s,left:5,containLabel:!0}}function Kg(e){switch(e){case"bar":return"roundRect";case"scatter":return"circle"}}function Jg(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(r=>!r.hide_in_legend).map(({name:r,type:i})=>({name:r,icon:Kg(i)})),t}function Hg(e,t,r,i){return e.map(s=>{const o=s.orientation==="horizontal",u=o?"yAxis":"xAxis",l=o?"insideEndTop":"end";return{name:s.name,type:"line",hide_in_legend:!s.show_in_legend,xAxisIndex:s.xAxisIndex,data:[],lineStyle:s.lineStyle,markLine:{data:[{name:s.name,[u]:Number(r[s.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:s.lineStyle,label:{formatter:function(){return s.template?jt(s.template,t,i):""},position:l}}}})}function Kn(e,t,r){return e.map(i=>[i[r],i[t]])}function em(e,t,r,i){const s=Kn(t,r,i);return v.unionBy(s,e,0)}function tm({dataTemplate:e,data:t,name_data_key:r,value_data_key:i,valueTypedXAxis:s}){return s?em(e,t,r,i):t.map(o=>[o[i],o[r]])}function nm({dataTemplate:e,data:t,aggregation_on_value:r,name_data_key:i,value_data_key:s,valueTypedXAxis:o}){if(!r||r.type==="none")return tm({dataTemplate:e,data:t,name_data_key:i,value_data_key:s,valueTypedXAxis:o});const u=Kn(t,i,s),l=v.groupBy(u,"0");return Object.entries(l).map(([c,f])=>{const g=St(f,"1",r);return[c,g]})}function rm({group_by_key:e,data:t,value_data_key:r,name_data_key:i}){const s=v.groupBy(t,e);return Object.entries(s).forEach(([o,u])=>{s[o]=Kn(u,i,r)}),s}function im({y_axis:e},{data_key:t,xAxisIndex:r,label_position:i,name:s,group_by_key:o,aggregation_on_value:u,stack:l,color:d,hide_in_legend:c,invisible:f,id:g,...h},m,w,C,S,A){const $={label:{show:!!i,position:i,formatter:A[r??"default"]},name:s,yAxisId:"main-y-axis",xAxisIndex:r,stack:l,color:f?"transparent":d,hide_in_legend:c,labelLayout:{hideOverlap:!0},emphasis:{disabled:!0},...h};if(!o||o===e.data_key)return $.data=nm({dataTemplate:m,data:C,aggregation_on_value:u,name_data_key:e.data_key,value_data_key:t,valueTypedXAxis:w}),$;const q=rm({group_by_key:o,data:C,name_data_key:e.data_key,value_data_key:t});return Object.entries(q).map(([F,L])=>{const z=v.cloneDeep($);return z.name=F,z.color=void 0,z.data=L,z})}function am(e,t,r,i,s,o,u){const l=t.map(c=>[c,0]);return e.series.map(c=>im(e,c,l,r,i,u,s)).flat().concat(Hg(e.reference_lines,o,u,i))}function sm(e,t){const r=e.find(l=>l.axisDim==="y"&&l.axisId==="main-y-axis");if(!r)return"";const{name:i,axisType:s,axisValue:o,axisIndex:u}=r;return s==="yAxis.category"?i:ut(t.y_axis.axisLabel.formatter)(o,u)}function om(e,t,r){const i=t.reduce((s,{xAxisIndex:o,name:u})=>(s[u]=o,s),{});return{trigger:"axis",axisPointer:{type:"shadow"},formatter:function(s){const o=Array.isArray(s)?s:[s];if(o.length===0)return"";const u=o.map(({seriesName:c,marker:f,value:g})=>{if(Array.isArray(g)&&g.length===2&&(g=g[0]),!c)return g;const h=i[c],m=r[h]??r.default;return`
253
253
  <tr>
254
254
  <td>${f}</td>
255
255
  <th style="text-align: right; padding: 0 1em;">${c}</th>
256
- <td style="text-align: left; padding: 0 1em;">${b({value:g})}</td>
256
+ <td style="text-align: left; padding: 0 1em;">${m({value:g})}</td>
257
257
  </tr>
258
- `}),l=Ze(e.y_axis.axisLabel.overflow.in_tooltip),d=em(o,e);return`
258
+ `}),l=Ze(e.y_axis.axisLabel.overflow.in_tooltip),d=sm(o,e);return`
259
259
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
260
260
  <div style="${l}">${d}</div>
261
261
  </div>
@@ -264,8 +264,88 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
264
264
  ${u.join("")}
265
265
  </tbody>
266
266
  </table>
267
- `}}}function nm(e){return e.x_axes.reduce((r,{label_formatter:i},s)=>(r[s]=function(u){let l=u;if(typeof u=="object"&&(Array.isArray(u.value)&&u.value.length===2?l=u.value[0]:l=u.value),!i)return l;try{return ue(l).format(i)}catch(d){return console.error(d),l}},r),{default:({value:r})=>r})}function rm(e,t){const r={};return t.map(i=>{const s=ot(i,e);r[i.name]=Je(i,s)}),r}function im(e,t){return e.x_axes.map(({min:r,max:i,...s},o)=>{let u=s.position;return u||(u=o>0?"bottom":"top"),{...s,type:"value",min:r||void 0,max:i||void 0,position:u,axisLabel:{show:!0,margin:2,formatter:t[o]??t.default},axisLine:{show:!0},axisTick:{show:!1},splitLine:{show:!0},nameTextStyle:{fontWeight:"bold"},nameLocation:"center",nameGap:15}})}function am(e,t){const r=t.every(u=>!Number.isNaN(Number(u))),{overflow:i,...s}=e.y_axis.axisLabel,o=Ke(i.on_axis);return[{data:t,name:e.y_axis.name??"",nameLocation:"end",nameTextStyle:{align:"center",fontWeight:"bold"},id:"main-y-axis",axisTick:{show:!0,alignWithLabel:!0},type:r?"value":"category",axisLabel:{...s,...o,formatter:lt(s.formatter)},z:5}]}function sm(e,t,r){const i=rm(t,r),s=nm(e),o=y.uniq(t.map(c=>c[e.y_axis.data_key])),u=o.every(c=>!Number.isNaN(Number(c))),l=Hg(e,o,u,t,s,r,i);return{xAxis:im(e,s),yAxis:am(e,o),series:l,tooltip:tm(e,l,s),grid:jg(e),legend:Yg(l)}}const Jn={x_axes:[{id:"initial-x",min:"",max:"",name:"X Axis",data_key:"",position:"bottom",label_formatter:De,show:!0}],y_axis:{name:"Y Axis",data_key:"",axisLabel:{formatter:{...Be},overflow:je},nameAlignment:"center"},series:[],tooltip:{metrics:[]},reference_lines:[]};function om(){const e=new Date().getTime().toString();return{id:e,min:"",max:"",name:e,data_key:"",position:"bottom",label_formatter:De,show:!0}}function lm(){const e=new Date().getTime().toString();return{id:e,type:"bar",name:e,stack:"",color:"",barGap:"0%",data_key:"",barWidth:"",barMinWidth:"1",barMaxWidth:"10",group_by_key:"",hide_in_legend:!1,invisible:!1,label_position:"right",aggregation_on_value:wt,xAxisIndex:"0"}}function um(){const e=new Date().getTime().toString();return{id:e,name:e,template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,xAxisIndex:"0"}}oe.use([q.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,q.GridComponent,q.LegendComponent,q.TooltipComponent,Ie.CanvasRenderer,q.MarkLineComponent,q.MarkAreaComponent]);function dm({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=m.useMemo(()=>y.keyBy(t,e.y_axis.data_key),[t,e.y_axis.data_key]),l=Oe(s.triggerManager,kn.id),d=m.useCallback(g=>{const h=y.get(u,g.name,{error:"rowData is not found"});l.forEach(b=>{s.runInteraction(b.id,{...g,rowData:h})})},[u,l,s]),c=m.useMemo(()=>({click:d}),[d]),f=m.useMemo(()=>sm(e,t,o),[e,t]);return!r||!i?null:n(Me,{echarts:oe,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function cm({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=j(e.instanceData,"config"),{variables:s}=e,o=m.useMemo(()=>y.defaults({},i,Jn),[i]),u=e.data,{width:l,height:d}=e.viewport;return n(a.Box,{children:n(dm,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}const pm=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],hm=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function fm({control:e,index:t,remove:r,watch:i,variableOptions:s,xAxisOptions:o}){const u=i(`reference_lines.${t}.orientation`);return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:s,sx:{flex:1},...l})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...l})}),p(a.Group,{grow:!0,children:[p(a.Stack,{children:[n(x.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:l})=>n(a.Select,{label:"Orientation",data:hm,required:!0,sx:{flex:1},...l})}),u==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),u==="horizontal"&&n(x.Controller,{name:`reference_lines.${t}.xAxisIndex`,control:e,render:({field:l})=>n(a.Select,{label:"X Axis",data:o,disabled:o.length===0,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:pm,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:l})=>n(a.Checkbox,{label:"Show in legend",checked:l.value,onChange:d=>l.onChange(d.currentTarget.checked)})}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function gm({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((b,w)=>({...b,...u[w]})),d=()=>{const b=um();s(b)},c=m.useMemo(()=>r.map(b=>({label:b.name,value:b.name})),[r]),f=t("x_axes"),g=m.useMemo(()=>f.map(({name:b},w)=>({label:b,value:w.toString()})),[f]),h=l.length>0?l[0].id:"0";return p(a.Tabs,{defaultValue:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((b,w)=>n(a.Tabs.Tab,{value:b.id,children:b.name},w)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((b,w)=>n(a.Tabs.Panel,{value:b.id,children:n(fm,{control:e,index:w,remove:o,watch:t,variableOptions:c,xAxisOptions:g})},w))]})}function mm(e){const[t,r]=m.useState(e);return m.useEffect(()=>{r(e)},[e]),{tab:t,setTab:r}}const bm=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function vm({control:e,index:t,seriesItem:r}){const i=!!r.barWidth.trim();return p(O,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.stack`,control:e,render:({field:s})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barGap`,control:e,render:({field:s})=>n(a.Select,{label:"Bar Gap",data:bm,sx:{flexGrow:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:i,sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:i,sx:{flexGrow:1},...s})})]})]})}const ym=[{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 xm({control:e,index:t,remove:r,seriesItem:i,xAxisOptions:s,data:o}){return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.name`,control:e,render:({field:u})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),n(x.Controller,{name:`series.${t}.xAxisIndex`,control:e,render:({field:u})=>n(a.Select,{label:"X Axis",data:s,disabled:s.length===0,sx:{flex:1},...u})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.data_key`,control:e,render:({field:u})=>n(U,{label:"Value Field",required:!0,data:o,sx:{flex:1},...u})}),n(x.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:u})=>n(Ft,{label:"Aggregation on Value",value:u.value??wt,onChange:u.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(x.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:u})=>n(U,{label:"Split into multiple series by this key...",data:o,clearable:!0,sx:{flex:1},...u})})}),n(vm,{index:t,control:e,seriesItem:i}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.label_position`,control:e,render:({field:u})=>n(a.Select,{label:"Label Position",data:ym,...u})}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`series.${t}.color`,control:e,render:({field:u})=>n(Se,{...u})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:u})=>n(a.Checkbox,{label:"Hide in legend",checked:u.value,onChange:l=>u.onChange(l.currentTarget.checked)})}),n(x.Controller,{name:`series.${t}.invisible`,control:e,render:({field:u})=>n(a.Checkbox,{label:"Invisible",checked:u.value,onChange:l=>u.onChange(l.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function Cm({control:e,watch:t,data:r}){var b;const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"series"}),u=t("series"),l=i.map((w,C)=>({...w,...u[C]})),d=()=>{const w=lm();s(w)},c=t("x_axes"),f=m.useMemo(()=>c.map(({name:w},C)=>({label:w,value:C.toString()})),[c]),{tab:g,setTab:h}=mm((b=l[0])==null?void 0:b.id);return p(a.Tabs,{value:g,onTabChange:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map(w=>n(a.Tabs.Tab,{value:w.id,children:w.name},w.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),l.map((w,C)=>n(a.Tabs.Panel,{value:w.id,children:n(xm,{control:e,index:C,remove:o,seriesItem:w,xAxisOptions:f,data:r},w.id)},w.id))]})}const wm=[{label:"Top",value:"top"},{label:"Bottom",value:"bottom"}];function _m({control:e,index:t,remove:r}){return p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`x_axes.${t}.name`,control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`x_axes.${t}.position`,control:e,render:({field:i})=>n(a.Select,{label:"Position",required:!0,data:wm,sx:{flex:1},...i})})}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:`x_axes.${t}.label_formatter`,control:e,render:({field:i})=>n(Ve,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`x_axes.${t}.min`,control:e,render:({field:i})=>n(a.TextInput,{label:"Min",...i})}),n(x.Controller,{name:`x_axes.${t}.max`,control:e,render:({field:i})=>n(a.TextInput,{label:"Max",...i})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`x_axes.${t}.show`,control:e,render:({field:i})=>n(a.Checkbox,{label:"Visible",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),disabled:t===0,children:"Delete this X Axis"})]})}function Sm({control:e,watch:t}){const{fields:r,append:i,remove:s}=x.useFieldArray({control:e,name:"x_axes"}),o=t("x_axes"),u=r.map((c,f)=>({...c,...o[f]})),l=()=>{const c=om();i(c)},d=u.length>0?u[0].id:"0";return p(a.Tabs,{defaultValue:d,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[u.map(c=>n(a.Tabs.Tab,{value:c.id,children:c.name},c.id)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(D.Plus,{size:18,color:"#228be6"})})]}),u.map((c,f)=>n(a.Tabs.Panel,{value:c.id,children:n(_m,{control:e,index:f,remove:s})},c.id))]})}function Tm({data:e,control:t,watch:r}){return r(["y_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.data_key",control:t,render:({field:i})=>n(U,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"y_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"y_axis.axisLabel.formatter",control:t,render:({field:i})=>n(Rt,{data:e,...i})})}),n(x.Controller,{name:"y_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})})]})}function Dm({context:e}){const{value:t,set:r}=j(e.instanceData,"config"),{variables:i}=e,s=e.data,o=m.useMemo(()=>y.defaultsDeep({},t,Jn),[t]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});m.useEffect(()=>{f(o)},[o]),d([]);const g=c(),h=m.useMemo(()=>!y.isEqual(g,o),[g,o]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Horizontal Bar Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(D.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axes",children:"X Axes"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Series",children:"Series"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"})]}),n(a.Tabs.Panel,{value:"X Axes",children:n(Sm,{control:u,watch:d})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(Tm,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Series",children:n(Cm,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(gm,{variables:i,control:u,watch:d})})]})]})})}class km extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Im={displayName:"Horizontal Bar Chart",displayGroup:"ECharts-based charts",migrator:new km,name:"horizontalBarChart",viewRender:cm,configRender:Dm,createConfig:()=>({version:1,config:Jn})},Mm=[{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(e=>({name:e.name,value:e.value,type:"single",category:"basic"})),Am=[Eo,Lo,Vo,Oo,Po,Bo],ka=()=>({id:"dashboard",version:Cn,manifest:{viz:[Yn,Fh,lg,kp,df,Zc,Im,Qo,Pl,Nd,hc,Wg,Rc,bd,Lh,pp,wp,mg,Xl],color:[...Mm,...Am]}}),Dt=new qo,me={pluginManager:We("pluginManager"),vizManager:We("vizManager"),colorManager:We("colorManager"),instanceScope:{panelModel:We("panelModel"),vizInstance:We("vizInstance"),interactionManager:We("interactionManager"),migrator:We("migrator"),operationManager:We("operationManager"),triggerManager:We("triggerManager")}},Hn=()=>{try{Dt.install(ka())}catch{}const e=new Ao(Dt),t=new Go(Dt);return{pluginManager:Dt,vizManager:e,colorManager:t}},Ne=m.createContext(Hn());try{Dt.install(ka())}catch{}function zm(e,t){const{value:r,set:i}=j(e.operation.operationData,"config"),[s,o]=m.useState(y.defaults({},r,t)),u=async()=>{await i(s)};return m.useEffect(()=>{o(y.defaults({},r,t))},[r]),{config:s,setConfig:o,commit:u}}function $m(e){const{config:t,setConfig:r,commit:i}=zm(e,{urlTemplate:"",openInNewTab:!0});async function s(){await i()}async function o(l){r({...t,openInNewTab:l}),await i()}const u=l=>r({...t,urlTemplate:l.currentTarget.value});return p(a.Stack,{children:[n(a.TextInput,{label:"Url",value:t.urlTemplate,onChange:u,onBlur:s}),n(a.Switch,{label:"Open in new Tab",checked:t.openInNewTab,onChange:l=>o(l.currentTarget.checked)})]})}async function Em(e,t){const{urlTemplate:r,openInNewTab:i}=await t.operationData.getItem("config");window.dispatchEvent(new CustomEvent("open-link",{detail:{urlTemplate:r,openInNewTab:i,payload:e}}))}class Lm extends ge{constructor(){super(...arguments);P(this,"VERSION",1)}configVersions(){this.version(1,r=>r)}}const Pm={displayName:"Open Link",id:"builtin:op:open-link",configRender:$m,run:Em,migrator:new Lm,createDefaultConfig:()=>({version:1,config:{urlTemplate:"",openInNewTab:!0}})};function Om(e){const{value:t,set:r}=j(e.operationData,"config"),i=s=>void r({template:s});return[(t==null?void 0:t.template)||"",i]}function Vm(e){const[t,r]=Om(e.operation);return n(a.TextInput,{defaultValue:t,onBlur:i=>r(i.currentTarget.value),label:"console.log"})}async function Bm(e,t){const r=await t.operationData.getItem("config"),i=y.template(r.template||"");console.log("run with payload",e),console.log(i(e))}const Nm={displayName:"console.log (debug)",id:"builtin:op:debug",configRender:Vm,run:Bm},Gm=T.observer(e=>{const t=B(),{value:r,set:i}=j(e.operation.operationData,"config");console.log({value:r,viewID:r==null?void 0:r.viewID});const s=(r==null?void 0:r.viewID)||"",o=u=>void i({viewID:u});return n(a.Select,{defaultValue:s,value:s,onChange:o,label:"View",data:t.views.options})});async function qm(e,t){const i=(await t.operationData.getItem("config")).viewID;window.dispatchEvent(new CustomEvent("open-view",{detail:{viewID:i}}))}const Fm={displayName:"Open View",id:"builtin:op:open_view",configRender:Gm,run:qm},Wm={dictionary:{}},jm=T.observer(e=>{const t=B(),{value:r=Wm,set:i}=j(e.operation.operationData,"config"),{dictionary:s={}}=r,o=(d,c)=>{i({dictionary:{...s,[d]:c}})},u=()=>{o(t.filters.firstFilterValueKey,"")},l=d=>{const c={...s};delete c[d],i({dictionary:c})};return p(a.Stack,{spacing:10,children:[n(a.Text,{children:"Mapping Rules"}),Object.entries(s).map(([d,c])=>p(a.Flex,{justify:"space-between",gap:10,children:[n(a.TextInput,{label:"Payload key",value:c,onChange:f=>{o(d,f.currentTarget.value)},sx:{flexGrow:1}}),n(U,{data:[t.filters.values],value:d,onChange:f=>{o(f,c)},label:"Filter key",sx:{flexGrow:1}}),n(a.ActionIcon,{onClick:()=>l(d),sx:{marginTop:"26px",flexGrow:0},children:n(D.Trash,{size:14,color:"red"})})]},d)),n(a.Button,{size:"xs",onClick:u,sx:{alignSelf:"center",width:"300px"},children:"Add one mapping rule"})]})});async function Rm(e,t){const i=(await t.operationData.getItem("config")).dictionary;window.dispatchEvent(new CustomEvent("set-filter-values",{detail:{dictionary:i,payload:e}}))}const Ym={displayName:"Set Filter Values",id:"builtin:op:set_filter_values",configRender:jm,run:Rm},Qm={filter_keys:[]},Um=T.observer(e=>{const t=B(),{value:r=Qm,set:i}=j(e.operation.operationData,"config"),{filter_keys:s=[]}=r,o=l=>{i({filter_keys:[...l]})},u=m.useMemo(()=>t.filters.current.map(l=>({label:l.label,value:l.key})),[t.filters.values]);return n(a.Stack,{spacing:10,children:n(a.MultiSelect,{label:"Select Filters to Clear",data:u,value:s,onChange:o})})});async function Xm(e,t){const i=(await t.operationData.getItem("config")).filter_keys;window.dispatchEvent(new CustomEvent("clear-filter-values",{detail:{filter_keys:i,payload:e}}))}const Kt=[Nm,Pm,Fm,Ym,{displayName:"Clear Filter Values",id:"builtin:op:clear_filter_values",configRender:Um,run:Xm}];class Zm{constructor(t,r=Kt){P(this,"attachments");this.operations=r;const i=async s=>{const{id:o,schemaRef:u}=await s.getItem(null);return{id:o,schemaRef:u,operationData:new st(s,"data")}};this.attachments=new xn(t,"__OPERATIONS",i)}async runOperation(t,r){const i=await this.attachments.getInstance(t);if(!i){console.warn(`Operation '${t}' is not defined`);return}const s=this.tryGetSchema(i.schemaRef);if(!s){console.warn(`Operation schema '${i.schemaRef}' is not defined`);return}await s.run(r,i)}tryGetSchema(t){return this.operations.find(r=>r.id===t)}async needMigration(){const r=(await this.attachments.list()).map(async i=>{const s={configData:i.operationData},o=this.tryGetSchema(i.schemaRef),u=o==null?void 0:o.migrator;return u&&await u.needMigration(s)});return(await Promise.all(r)).some(i=>i)}async runMigration(){const r=(await this.attachments.list()).map(async i=>{const s={configData:i.operationData},o=this.tryGetSchema(i.schemaRef),u=o==null?void 0:o.migrator;u&&await u.needMigration(s)&&await u.migrate(s)});await Promise.all(r)}async createOrGetOperation(t,r){var u;if(!this.getOperationSchemaList().some(l=>l.id===r.id))throw new Error(`Operation schema '${r.id}' is not defined`);const s=await this.attachments.getInstance(t);return!s||s.schemaRef!==r.id?await this.attachments.create(t,{id:t,schemaRef:r.id,data:((u=r.createDefaultConfig)==null?void 0:u.call(r))??{}}):s}getOperationList(){return this.attachments.list()}getOperationSchemaList(){return this.operations}removeOperation(t){return this.attachments.remove(t)}async retrieveTrigger(t){return await this.attachments.getInstance(t)}}const Ia="__TRIGGERS";class Km{constructor(t,r){P(this,"attachments");this.instance=t,this.component=r;const i=async s=>{const{id:o,schemaRef:u}=await s.getItem(null);return{id:o,schemaRef:u,triggerData:new st(s,"data")}};this.attachments=new xn(t,Ia,i)}watchTriggerSnapshotList(t){return this.instance.instanceData.watchItem(Ia,r=>{const i=y.values(r).map(s=>({id:y.get(s,"id"),schemaRef:y.get(s,"schemaRef"),config:ae.toJS(y.get(s,"data.config"))}));t(i)},{fireImmediately:!0})}async createOrGetTrigger(t,r,i={recreate:!1}){var l;if(!this.getTriggerSchemaList().some(d=>d.id===r.id))throw new Error(`Trigger schema '${r.id}' is not defined in component '${this.component.name}'`);const o=await this.attachments.getInstance(t);return!o||i.recreate||o.schemaRef!==r.id?await this.attachments.create(t,{id:t,schemaRef:r.id,data:((l=r==null?void 0:r.createDefaultConfig)==null?void 0:l.call(r))||{}}):o}async getTriggerList(){return await this.attachments.list()}getTriggerSchemaList(){return this.component.triggers||[]}async removeTrigger(t){await this.attachments.remove(t)}async retrieveTrigger(t){return await this.attachments.getInstance(t)}async getMigrationTasks(){const r=(await this.getTriggerList()).map(async i=>{const s=this.getTriggerSchemaList().find(l=>l.id===i.schemaRef),o=s==null?void 0:s.migrator,u={configData:i.triggerData};return o&&await o.needMigration(u)?()=>o.migrate(u):null});return Promise.all(r).then(i=>i.filter(s=>s))}async needMigration(){return(await this.getMigrationTasks()).length>0}async runMigration(){const t=await this.getMigrationTasks();await Promise.all(t.map(r=>r()))}}class er{constructor(t,r,i){P(this,"operationManager");P(this,"triggerManager");P(this,"attachments");this.operationManager=new Zm(t,i),this.triggerManager=new Km(t,r);const s=async o=>{const{id:u,triggerRef:l,operationRef:d}=await o.getItem(null);return{id:u,triggerRef:l,operationRef:d}};this.attachments=new xn(t,"__INTERACTIONS",s)}async addInteraction(t,r){const i=t.id,s=r.id,o=`[${i}]:[${s}]`;await this.attachments.create(o,{id:o,triggerRef:i,operationRef:s})}getInteractionList(){return this.attachments.list()}async removeInteraction(t){const r=await this.attachments.getInstance(t);if(!r)return;const{triggerRef:i,operationRef:s}=r;await this.getTriggerRefCount(i)<=1&&await this.triggerManager.removeTrigger(i),await this.getOperationRefCount(s)<=1&&await this.operationManager.removeOperation(s),await this.attachments.remove(t)}async getOperationRefCount(t){return(await this.getInteractionList()).filter(i=>i.operationRef===t).length}async getTriggerRefCount(t){return(await this.getInteractionList()).filter(i=>i.triggerRef===t).length}async runInteraction(t,r){const s=(await this.getInteractionList()).filter(o=>o.triggerRef===t);await Promise.all(s.map(async o=>{try{return await this.operationManager.runOperation(o.operationRef,r)}catch(u){console.warn(`Failed to run operation '${o.operationRef}'`,u)}}))}}const Ge=({vizManager:e,instance:t})=>Z.useCreation(()=>new er(t,e.resolveComponent(t.type),Kt),[t,e]),Ma=e=>{const{title:t="Variables",variables:r}=e,i=ve.useClipboard(),s=o=>{i.copy(o),Lt.showNotification({color:"green",message:"Copied to clipboard"})};return p(a.Paper,{withBorder:!0,p:"sm",children:[n(a.Text,{size:"xs",color:"dimmed",mb:"sm",children:t}),n(a.Stack,{style:{maxHeight:"500px"},children:r.map(o=>p(a.Text,{size:"sm",children:[p(a.Code,{color:"teal",children:["// ",o.description]}),n("br",{}),p(a.Code,{onClick:()=>s(o.name),style:{cursor:"pointer"},children:[o.name," : ",o.valueType]})]},o.name))})]})};class Jm{constructor(t,r){P(this,"operationId");P(this,"operation");P(this,"operationSchema");P(this,"variables",[]);this.operationManager=t,this.instance=r,ae.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(t,r){const i=await this.operationManager.retrieveTrigger(t),s=this.operationManager.getOperationSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));ae.runInAction(()=>{this.operationId=t,this.operation=i,this.operationSchema=s,this.variables=r})}async changeSchema(t){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,t),await this.configOperation(this.operationId,this.variables))}}function Hm(e){return!!e.operationId}const eb=T.observer(({model:e,onClick:t})=>{var i;const r=(i=e.operationSchema)==null?void 0:i.displayName;return n(a.Button,{variant:"outline",onClick:t,children:r})}),tb=T.observer(({model:e})=>{const t={operation:e.operation,instance:e.instance,variables:[]};return m.createElement(e.operationSchema.configRender,t)});function nb({model:e}){const t=e.schemaList,r=t.map(s=>({label:s.displayName,value:s.id}));async function i(s){await e.changeSchema(t.find(o=>o.id===s))}return n(a.Select,{label:"Operation",data:r,onChange:i,value:e.operationSchema.id})}const rb=T.observer(e=>{const[t,{setTrue:r,setFalse:i}]=Z.useBoolean(!1),{operationManager:s,operationId:o,instance:u,variables:l}=e,d=Z.useCreation(()=>new Jm(s,u),[s,u]);return Z.useAsyncEffect(async()=>{await d.configOperation(o,l)},[o,d]),Hm(d)?p(O,{children:[n(eb,{model:d,onClick:r}),n(a.Modal,{size:600,opened:t,onClose:i,title:"Operation Settings",closeButtonLabel:"close",zIndex:320,children:p(a.Stack,{children:[n(nb,{model:d}),n(tb,{model:d}),n(Ma,{title:"Variables",variables:d.variables})]})})]}):null});class ib{constructor(t,r){P(this,"triggerId");P(this,"trigger");P(this,"triggerSchema");P(this,"sampleData");this.triggerManager=t,this.instance=r,ae.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(t,r){const i=await this.triggerManager.retrieveTrigger(t),s=this.triggerManager.getTriggerSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));ae.runInAction(()=>{this.triggerId=t,this.trigger=i,this.triggerSchema=s,this.sampleData=r})}async changeSchema(t){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,t),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return ab(this)}}function ab(e){return!!e.triggerId&&!!e.triggerSchema}function sb(e,t){return Z.useCreation(()=>new ib(e,t),[e,t])}const ob=T.observer(({model:e,onClick:t})=>{const r=e.triggerSchema.nameRender,i={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return n(a.Button,{variant:"outline",onClick:t,children:m.createElement(r,i)})}),lb=T.observer(({model:e})=>{const t=e.schemaList,r=t.map(s=>({label:s.displayName,value:s.id}));async function i(s){await e.changeSchema(t.find(o=>o.id===s))}return n(a.Select,{label:"Trigger",data:r,value:e.triggerSchema.id,onChange:i})}),ub=T.observer(({model:e})=>{const t={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return m.createElement(e.triggerSchema.configRender,t)}),db=T.observer(e=>{const[t,{setTrue:r,setFalse:i}]=Z.useBoolean(!1),s=e.model;return p(O,{children:[n(a.Modal,{opened:t,onClose:i,title:"Setup Trigger",closeButtonLabel:"close setup",zIndex:320,children:p(a.Stack,{children:[n(lb,{model:s}),n(ub,{model:s}),n(Ma,{title:"Payload",variables:s.triggerSchema.payload})]})}),n(ob,{onClick:r,model:s})]})});function cb(e,t){const[r,i]=m.useState([]);return Z.useAsyncEffect(async()=>{const s=await e.getInteractionList();i(s)},[t,e]),r}const pb=T.observer(({item:e,manager:t,instance:r,sampleData:i,variables:s,onRemove:o})=>{const{triggerRef:u,operationRef:l}=e,d=sb(t.triggerManager,r);if(Z.useAsyncEffect(async()=>{await d.configTrigger(u,i)},[d,u,i]),d.isReady()){const c=[...d.triggerSchema.payload,...s];return p(a.Group,{children:[n(db,{model:d}),n(rb,{instance:r,operationId:l,variables:c,operationManager:t.operationManager}),n(a.ActionIcon,{"aria-label":"delete-interaction",variant:"filled",color:"red",onClick:()=>o(e),children:n(D.Trash,{size:16})})]})}return null}),hb=e=>{const[t,r]=m.useState(0),{interactionManager:i,instance:s,sampleData:o,variables:u}=e,l=cb(i,t),d=async()=>{const h=await i.triggerManager.createOrGetTrigger(ve.randomId(),i.triggerManager.getTriggerSchemaList()[0]),b=await i.operationManager.createOrGetOperation(ve.randomId(),i.operationManager.getOperationSchemaList()[0]);await i.addInteraction(h,b),r(w=>w+1)};async function c(h){await i.removeInteraction(h.id),r(b=>b+1)}const{data:f=0,loading:g}=Z.useRequest(async()=>{try{return(await i.triggerManager.getTriggerSchemaList()).length}catch{return 0}});return p(a.Stack,{children:[n(a.LoadingOverlay,{visible:g}),f===0&&n(a.Alert,{icon:n(D.AlertCircle,{size:16}),title:"Unavailable",color:"gray",children:"This visualization does not have available interactions to choose from"}),l.map(h=>n(pb,{onRemove:c,instance:s,sampleData:o,variables:u,item:h,manager:e.interactionManager},h.id)),n(a.Button,{style:{width:"fit-content"},onClick:()=>d(),disabled:f===0,children:"Add interaction"})]})},fb=()=>{const{panel:e,data:t}=xe(),r=e.viz,{vizManager:i}=m.useContext(Ne),s=e.json,o=Z.useCreation(()=>i.getOrCreateInstance(s),[i,s]),u=Z.useCreation(()=>new er(o,i.resolveComponent(r.type),Kt),[o,r.type]);return m.useEffect(()=>o.instanceData.watchItem(null,y.throttle(l=>{e.viz.setConf(l)},100,{leading:!1,trailing:!0})),[o]),{instance:o,vizManager:i,interactionManager:u,sampleData:t,variables:[]}},gb=()=>{const e=fb();return n(hb,{...e})};var Aa=(e=>(e.migrated="migrated",e.nothingToMigrate="nothingToMigrate",e.checkFailed="checkFailed",e.migrationFailed="migrationFailed",e))(Aa||{}),Jt=(e=>(e.notStarted="notStarted",e.inProgress="inProgress",e.done="done",e))(Jt||{});class mb{constructor(t){P(this,"vizInstance");P(this,"operationManager");P(this,"triggerManager");P(this,"vizManager");P(this,"runningMigration");P(this,"panelModel");P(this,"status","notStarted");this.panelModel=t.getRequired(me.instanceScope.panelModel),this.vizInstance=t.getRequired(me.instanceScope.vizInstance),this.operationManager=t.getRequired(me.instanceScope.operationManager),this.triggerManager=t.getRequired(me.instanceScope.triggerManager),this.vizManager=t.getRequired(me.vizManager)}async createMigrationTask(){const t=[];try{await this.instanceNeedMigration()&&t.push(()=>this.runInstanceMigration()),await this.interactionNeedMigration()&&t.push(()=>this.runInteractionMigration())}catch(r){return console.warn("check migration failed",r),"checkFailed"}if(t.length===0)return"nothingToMigrate";try{return await Promise.all(t.map(r=>r())),"migrated"}catch(r){return console.warn("migration failed",r),"migrationFailed"}}async runMigration(){return this.runningMigration||(this.status="inProgress",this.runningMigration=this.createMigrationTask().then(t=>(this.status="done",t))),this.runningMigration}async runInteractionMigration(){await this.operationManager.runMigration(),await this.triggerManager.runMigration()}async runInstanceMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),r={configData:this.vizInstance.instanceData,panelModel:this.panelModel};await t.migrator.migrate(r)}async instanceNeedMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),r={configData:this.vizInstance.instanceData};return t.migrator.needMigration(r)}async interactionNeedMigration(){return await this.operationManager.needMigration()||await this.triggerManager.needMigration()}}function za(e){const{panel:t}=xe();return m.useCallback(r=>{const i=r.getRequired(me.vizManager),s=i.resolveComponent(e.viz.type);return r.createScoped().provideFactory(me.instanceScope.vizInstance,()=>i.getOrCreateInstance(e)).provideFactory(me.instanceScope.interactionManager,o=>{const u=o.getRequired(me.instanceScope.vizInstance);return new er(u,s,Kt)}).provideFactory(me.instanceScope.operationManager,o=>o.getRequired(me.instanceScope.interactionManager).operationManager).provideFactory(me.instanceScope.triggerManager,o=>o.getRequired(me.instanceScope.interactionManager).triggerManager).provideValue(me.instanceScope.panelModel,t).provideFactory(me.instanceScope.migrator,o=>new mb(o))},[e.viz.type,e.viz.conf])}function $a(e){const[t,r]=m.useState(!1),i=Ti().getRequired(me.instanceScope.migrator);return Z.useAsyncEffect(async()=>{const s=i.status===Jt.notStarted;r(i.status===Jt.done),i.status===Jt.notStarted&&i.runMigration().then(o=>{o===Aa.migrated&&s&&(e==null||e())}).finally(()=>{r(!0)})},[i]),t}function Ea(e,t){const r=Ti().getRequired(me.instanceScope.vizInstance);return m.useEffect(()=>(r.instanceData.setItem(null,t.viz.conf),r.instanceData.watchItem(null,i=>{e(i)})),[e,t.viz.type]),r}function bb({setVizConf:e,...t}){const{panel:r}=t,i=Ea(e,r),s=$a(()=>{Lt.showNotification({title:`${r.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return Z.useAsyncEffect(async()=>{await i.instanceData.setItem(null,r.viz.conf)},[i,r.viz.type]),s?n($o,{...t}):n(a.Text,{children:"Checking update..."})}function vb(e){const{panel:t,setVizConf:r}=e;Ea(r,t);const{inEditMode:i}=m.useContext(Xe);return $a(()=>{i&&Lt.showNotification({title:`${t.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?n(zo,{...e}):n(a.Text,{children:"Checking update"})}const hw="";function yb(e,t){const{vizManager:r}=m.useContext(Ne),{panel:{viz:i,title:s,id:o,description:u,queryID:l,variables:d}}=xe(),c={title:s,id:o,description:u,queryID:l,viz:i,layout:t},f=za(c);try{return r.resolveComponent(i.type),n(Bt,{configure:f,children:n(vb,{setVizConf:i.setConf,panel:c,data:e,variables:d,vizManager:r})})}catch(g){return console.info(y.get(g,"message")),null}}const xb=["richText","button"],La=T.observer(function({height:t,viz:r,data:i,loading:s,error:o,query:u}){const{ref:l,width:d,height:c}=ve.useElementSize(),f=yb(i,{w:d,h:c});if(xb.includes(r.type))return n("div",{className:"viz-root",style:{height:t},ref:l,children:n(Ae,{children:f})});if(s)return n("div",{className:"viz-root",style:{height:t,position:"relative"},ref:l,children:n(a.LoadingOverlay,{visible:s,exitTransitionDuration:0})});const h=!!o,b=!h&&!!(u!=null&&u.stateMessage),w=!h&&!b;return p("div",{className:"viz-root",style:{height:t},ref:l,children:[h&&n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:o}),b&&n(a.Text,{color:"gray",align:"center",children:u.stateMessage}),w&&n(Ae,{children:f})]})});function Cb(e){return!["richText","button"].includes(e)}const wb={border:"1px solid #e9ecef"},Pa={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function _b(e,t,r){return e.style.border.enabled?wb:r||t?Pa:{border:"1px dashed transparent"}}const Ht=T.observer(function({panel:t,view:r}){const i=B(),{inEditMode:s}=m.useContext(Xe),{data:o,state:u,error:l}=i.getDataStuffByID(t.queryID),d=i.queries.findByID(t.queryID),c=Cb(t.viz.type),f=c&&u==="loading",g=t.title?"calc(100% - 25px - 5px)":"100%",h=_b(t,c,s),b=c||s;return n(vn,{value:{panel:t,data:o,loading:f},children:p(a.Box,{className:"panel-root",p:5,pt:0,sx:{...h},children:[n(a.Box,{sx:{position:"absolute",left:0,top:0,height:28,zIndex:310},children:n(Ei,{})}),b&&n(ko,{view:r}),n(Io,{}),n(La,{viz:t.viz,data:o,loading:f,error:l,height:g,query:d})]})})}),fw="",Sb=m.forwardRef(({h:e},t)=>n(a.ActionIcon,{ref:t,className:"react-grid-customDragHandle",sx:{userSelect:"none",cursor:"grab",position:"absolute",top:5,right:e>38?5:20,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",children:n(D.ArrowsMove,{size:16})})),Tb=m.forwardRef(({handleAxis:e,...t},r)=>n(a.ActionIcon,{ref:r,className:"react-grid-customResizeHandle",sx:{userSelect:"none",cursor:"nwse-resize",position:"absolute",bottom:0,right:0,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",...t,children:n(D.ChevronDownRight,{size:16})})),Db=Et.WidthProvider(Et),kb=T.observer(({view:e,className:t="layout"})=>{const r=B(),{panels:i,layouts:s}=r.panels.panelsByIDs(e.panelIDs),o=m.useCallback(l=>{l.forEach(({i:d,...c})=>{const f=r.panels.findByID(d);f&&f.layout.set(c)})},[r]),u=(l,d,c,f)=>{c.h<30&&(c.h=30,f.h=30),c.w<4&&(c.w=4,f.w=4)};return n(Db,{onLayoutChange:o,className:`dashboard-layout ${t}`,rowHeight:1,cols:36,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,layout:s,draggableHandle:".react-grid-customDragHandle",resizeHandle:n(Tb,{}),onResize:u,children:i.map((l,d)=>p("div",{"data-grid":{...l.layout},className:"panel-grid-item",children:[n(Sb,{h:l.layout.h}),n(Ht,{view:e,panel:l})]},l.id))})}),Ib=Et.WidthProvider(Et),Mb=T.observer(function({view:t,className:r="layout"}){const{panels:i,layouts:s}=B().panels.panelsByIDs(t.panelIDs);return n(Ib,{className:`dashboard-layout ${r}`,cols:36,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:s,children:i.map(o=>n("div",{"data-grid":{...o.layout},className:"panel-grid-item",children:n(Ht,{view:t,panel:o})},o.id))})});var Oa=(e=>(e.Use="use",e.Edit="edit",e))(Oa||{}),K=(e=>(e.Division="div",e.Modal="modal",e.Tabs="tabs",e))(K||{});const Ab={div:"Division",tabs:"Tabs",modal:"Modal"},Va={div:"rgba(255, 0, 0, 0.2)",modal:"rgba(0, 0, 0, 0.2)",tabs:"rgba(255, 200, 100, 0.4)"},zb={div:"#ff4000",modal:"#000",tabs:"#ffad18"};var tr=(e=>(e.Select="select",e.TreeSelect="tree-select",e.MultiSelect="multi-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(tr||{});const $b=T.observer(({children:e})=>n(a.Box,{pt:10,pb:100,children:e})),Eb=T.observer(({children:e,view:t})=>{const r=t.config;return n(a.Modal,{size:r.width,overflow:"inside",opened:!0,onClose:y.noop,withCloseButton:!1,title:r.custom_modal_title.value,trapFocus:!0,onDragStart:i=>{i.stopPropagation()},styles:{root:{position:"relative",height:"100%"},overlay:{position:"absolute !important"},modal:{border:"1px solid #efefef"},body:{maxHeight:"calc(100vh - 325px)"}},withinPortal:!1,transitionDuration:0,children:e})}),Lb=({variant:e,orientation:t})=>{const r={tab:{},panel:{padding:"16px"}};return e==="pills"&&t==="horizontal"&&(r.tab.paddingTop="6px",r.tab.paddingBottom="6px"),t==="vertical"&&(r.tab["&.add-a-tab"]={paddingTop:"1px",paddingBottom:"1px"},r.tab["&.add-a-tab .mantine-Tabs-tabLabel"]={marginLeft:"auto",marginRight:"auto"}),r},Pb=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},Ob=T.observer(({children:e,view:t})=>{const r=Pe.useModals(),i=B(),s=m.useMemo(()=>i.views.options.filter(d=>d.type===K.Division),[t.id,i.views.options]),o=t.config,u=d=>r.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{o.removeTab(d)},confirmProps:{color:"red"},zIndex:320}),l=o.tabs.length===0;return p(a.Box,{className:"preview-view-tabs",children:[p(a.Tabs,{variant:o.variant,orientation:o.orientation,defaultValue:o.tabs.length>0?o.tabs[0].id:"0",styles:Lb(o),children:[p(a.Tabs.List,{grow:o.grow,children:[o.tabs.map(d=>n(a.Tabs.Tab,{value:d.id,sx:Pb(d),children:d.name??d.id},d.id)),n(a.Tabs.Tab,{onClick:o.addTab,value:"add",className:"add-a-tab",children:n(D.Plus,{size:18,color:"#228be6"})})]}),o.tabs.map((d,c)=>{const f=i.views.findByID(d.view_id);return p(a.Tabs.Panel,{value:d.id,sx:{position:"relative"},children:[p(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:200},children:[n(a.Overlay,{opacity:.8,color:"#FFF",blur:10,zIndex:100}),p(a.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[n(a.TextInput,{label:"Tab Name",value:d.name,onChange:g=>d.setName(g.currentTarget.value)}),n(a.Select,{label:"View",value:d.view_id,onChange:d.setViewID,data:s}),n(a.ColorInput,{label:"Color",value:d.color,onChange:d.setColor,disabled:o.variant!=="default"}),f&&p(a.Button,{mt:20,variant:"gradient",leftIcon:n(V.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>i.views.setIDOfVIE(f.id),children:["Swith to View: ",f.name]}),n(a.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>u(c),disabled:l,leftIcon:n(V.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),f&&n(en,{view:f})]},d.id)})]}),e]})}),Vb=T.observer(({view:e,children:t})=>{switch(e.type){case K.Modal:return n(Eb,{view:e,children:t});case K.Tabs:return n(Ob,{view:e,children:t});case K.Division:default:return n($b,{children:t})}}),Ba=T.observer(function({view:t}){return n(gn.Provider,{value:{viewPanelInFullScreen:y.noop,inFullScreen:!1},children:n(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:n(Vb,{view:t,children:p(a.Box,{sx:{position:"relative"},children:[n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n($i,{view:t})}),n(kb,{view:t})]})})})})}),Bb={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},Nb=T.observer(function({view:t,panel:r,exitFullScreen:i}){return n(a.Modal,{opened:!0,fullScreen:!0,onClose:i,title:n(a.Button,{color:"blue",size:"xs",onClick:i,leftIcon:n(D.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:Bb,children:n(a.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:n(Ht,{view:t,panel:r})})})});function Gb(e,t,r){const{panels:i}=B(),s=e.id==="Main",[o,u]=m.useState(()=>s&&i.findByID(t)?t:null),l=m.useCallback(g=>{u(g),s&&r(g)},[s,r]),d=m.useCallback(()=>{u(null),s&&r("")},[s,r]),c=o?i.findByID(o):null;return{viewPanelInFullScreen:l,exitFullScreen:d,inFullScreen:!!c,fullScreenPanel:c}}const qb=T.observer(({children:e})=>n(a.Box,{children:e})),Fb=T.observer(({children:e,view:t})=>{const r=B(),i=t.config,s=r.views.visibleViewIDs.includes(t.id),o=()=>r.views.rmVisibleViewID(t.id);return n(a.Modal,{size:i.width,centered:!0,overflow:"inside",opened:s,onClose:o,withCloseButton:!1,title:i.custom_modal_title.value,trapFocus:!0,onDragStart:u=>{u.stopPropagation()},styles:{modal:{border:"1px solid #efefef"},body:{maxHeight:i.height,overflow:"auto"}},transitionDuration:0,children:e})}),Wb=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},jb=T.observer(({children:e,view:t})=>{const r=B(),i=t.config;return p(a.Box,{className:"render-view-tabs",children:[p(a.Tabs,{variant:i.variant,orientation:i.orientation,defaultValue:i.tabs.length>0?i.tabs[0].id:"0",styles:{panel:{padding:i.orientation==="horizontal"?"16px 0px":"0"}},keepMounted:!1,children:[n(a.Tabs.List,{grow:i.grow,children:i.tabs.map(s=>n(a.Tabs.Tab,{value:s.id,sx:Wb(s),disabled:!s.view_id,children:s.name??s.id},s.id))}),i.tabs.map(s=>{const o=r.views.findByID(s.view_id);return o?n(a.Tabs.Panel,{value:s.id,children:n(en,{view:o})},s.id):null})]}),e]})}),Rb=T.observer(({view:e,children:t})=>{switch(e.type){case K.Modal:return n(Fb,{view:e,children:t});case K.Tabs:return n(jb,{view:e,children:t});case K.Division:default:return n(qb,{children:t})}}),en=T.observer(function({view:t}){const{fullScreenPanelID:r,setFullScreenPanelID:i}=Mi(),{viewPanelInFullScreen:s,exitFullScreen:o,inFullScreen:u,fullScreenPanel:l}=Gb(t,r,i);return n(gn.Provider,{value:{viewPanelInFullScreen:s,inFullScreen:u},children:p(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:[u&&n(Nb,{view:t,panel:l,exitFullScreen:o}),n(Rb,{view:t,children:p(a.Box,{sx:{position:"relative"},children:[!u&&n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n($i,{view:t})}),!u&&n(Mb,{view:t})]})})]})})});function Yb(e){e=e||{};const t=Object.keys(e).sort(),r=[];for(let i=0;i<t.length;i++){const s=t[i];if(s!="authentication"&&e[s])r.push(t[i]+"="+(typeof e[s]=="object"?JSON.stringify(e[s]):e[s]));else{const o=Object.keys(e[s]).sort();for(let u=0;u<o.length;u++){const l=o[u];l!="sign"&&e[s][l]&&r.push(o[u]+"="+(typeof e[s][l]=="object"?JSON.stringify(e[s][l]):e[s][l]))}}}return r.sort().join("&")}function Qb(e,t){let r=Yb(e);return r+="&key="+t,Ci.MD5(r).toString().toUpperCase()}const ze={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(e){if(!this.app_id||!this.app_secret)return;const t=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:t,sign:Qb({app_id:this.app_id,nonce_str:t,...e},this.app_secret)}},getRequest(e,t){return(r,i,s={})=>{const o=window.localStorage.getItem("token"),u={"X-Requested-With":"XMLHttpRequest","Content-Type":s.string?"application/x-www-form-urlencoded":"application/json",authorization:o?`bearer ${o}`:"",...s.headers},l={baseURL:this.baseURL,method:e,url:r,params:e==="GET"?i:s.params,headers:u,signal:t};return["POST","PUT"].includes(e)&&(l.data=s.string?JSON.stringify(i):i,l.data.authentication=this.getAuthentication(l.data)),Qe(l).then(d=>d.data).catch(d=>Promise.reject(d))}}};function Na(e){ze.baseURL!==e.apiBaseURL&&(ze.baseURL=e.apiBaseURL),e.app_id&&(ze.app_id=e.app_id),e.app_secret&&(ze.app_secret=e.app_secret)}const Ga=v.types.model("FilterConfigModel_Checkbox",{_name:v.types.literal("checkbox"),description:v.types.optional(v.types.string,""),default_value:v.types.boolean}).views(e=>({get json(){const{_name:t,description:r,default_value:i}=e;return{_name:t,description:r,default_value:i}},get isDescriptionEmpty(){const{description:t}=e;return t===""||t==="<p></p>"}})).actions(e=>({setDefaultValue(t){e.default_value=t},setDescription(t){e.description=t}})),Ub=()=>Ga.create({_name:"checkbox",description:"",default_value:!1});var ce=(e=>(e.Postgresql="postgresql",e.MySQL="mysql",e.HTTP="http",e))(ce||{}),Ce=(e=>(e.Select="select",e.MultiSelect="multi-select",e.TreeSelect="tree-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(Ce||{});v.types.model({type:v.types.enumeration("DataSourceType",[ce.Postgresql,ce.MySQL,ce.HTTP]),key:v.types.string,sql:v.types.string});function qa(e,t){return e.map(r=>{try{return r?W.tz(r,"UTC").format(t):null}catch{return console.log(`[date-range] failed parsing ${r}`),null}})}const Xb=v.types.model("FilterConfigModel_DateRange",{_name:v.types.literal("date-range"),required:v.types.boolean,inputFormat:v.types.enumeration("DateRangeInputFormat",["YYYY","YYYYMM","YYYYMMDD","YYYY-MM","YYYY-MM-DD"]),default_value:v.types.optional(v.types.array(v.types.union(v.types.string,v.types.null)),[null,null]),clearable:v.types.boolean,max_days:v.types.optional(v.types.number,0),allowSingleDateInRange:v.types.optional(v.types.boolean,!1)}).views(e=>({get json(){const{_name:t,max_days:r,required:i,clearable:s,inputFormat:o,default_value:u,allowSingleDateInRange:l}=e;return{_name:t,max_days:r,required:i,clearable:s,inputFormat:o,default_value:qa(u,o),allowSingleDateInRange:l}},truthy(t){return Array.isArray(t)&&t.length===2&&t.every(r=>!!r)}})).views(e=>({getMaxDate(t){const{max_days:r}=e;if(!(!r||!t))return W(t).startOf("day").add(r,"days").toDate()},getMinDate(t){const{max_days:r}=e;if(!(!r||!t))return W(t).startOf("day").subtract(r,"days").toDate()}})).actions(e=>({setFilterValue(t){try{const r=v.getParent(e);v.getRoot(e).filters.setValueByKey(r.key,t)}catch(r){console.error(r)}}})).actions(e=>({setRequired(t){e.required=t},setClearable(t){e.clearable=t},setInputFormat(t){e.inputFormat=t},setDefaultValue(t){e.default_value.length=0,e.default_value.push(...t),e.setFilterValue(t)},setMaxDays(t){e.max_days=t,t>0&&(e.clearable=!0)},setAllowSingleDateInRange(t){e.allowSingleDateInRange=t}})),Fa=v.types.snapshotProcessor(Xb,{preProcessor({default_value:e,...t}){return{...t,default_value:e.map(r=>r===null?null:W.tz(r,"UTC").toISOString())}},postProcessor(e){const{default_value:t,...r}=e;return{...r,default_value:qa(t,r.inputFormat)}}}),Zb=()=>Fa.create({_name:"date-range",required:!1,inputFormat:"YYYY-MM-DD",clearable:!1,default_value:[null,null]}),Kb=v.types.model({label:v.types.string,value:v.types.string}).actions(e=>({setLabel(t){e.label=t},setValue(t){e.value=t}})),nr=v.types.model("FilterConfigModel_BaseSelect",{static_options:v.types.optional(v.types.array(Kb),[]),options_query_id:v.types.optional(v.types.string,""),default_selection_count:v.types.optional(v.types.number,0)}).views(e=>({get usingQuery(){return!!e.options_query_id}})).views(e=>({get options(){if(!e.usingQuery)return e.static_options;const{data:t,state:r,error:i}=v.getRoot(e).getDataStuffByID(e.options_query_id);return r==="idle"?t:[]}})).actions(e=>({addStaticOption(t){e.static_options.push(t)},removeStaticOption(t){e.static_options.splice(t,1)},setDefaultSelectionCount(t){e.default_selection_count=t},setOptionsQueryID(t){e.options_query_id=t??""}})),tn=e=>y.cloneDeepWith(e,(t,r)=>{if(r!==void 0&&t)return ae.toJS(t)}),Wa=v.types.compose("FilterConfigModel_MultiSelect",v.types.model({_name:v.types.literal("multi-select"),min_width:v.types.optional(v.types.string,""),default_value:v.types.optional(v.types.array(v.types.string),[])}),nr).views(e=>({get json(){const{_name:t,default_value:r,min_width:i,static_options:s,options_query_id:o,default_selection_count:u}=e;return tn({_name:t,min_width:i,default_value:r,static_options:s,options_query_id:o,default_selection_count:u})},get default_selection(){return e.usingQuery?e.options.slice(0,e.default_selection_count).map(t=>t.value):e.default_value}})).actions(e=>({setDefaultValue(t){e.default_value=v.cast(t)},setMinWidth(t){e.min_width=t},setDefaultSelection(){const t=v.getRoot(e).filters,r=v.getParent(e).key;t.setValueByKey(r,e.default_selection)}})).actions(e=>({afterCreate(){v.addDisposer(e,ae.reaction(()=>ae.toJS(e.default_selection),e.setDefaultSelection,{fireImmediately:!0,delay:0}))}})),Jb=()=>Wa.create({_name:"multi-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),ja=v.types.compose("FilterConfigModel_TreeSelect",v.types.model({_name:v.types.literal("tree-select"),min_width:v.types.optional(v.types.string,""),default_value:v.types.optional(v.types.array(v.types.string),[])}),nr).views(e=>({get json(){const{_name:t,default_value:r,min_width:i,static_options:s,options_query_id:o,default_selection_count:u}=e;return{_name:t,min_width:i,default_value:r,static_options:s,options_query_id:o,default_selection_count:u}}})).actions(e=>({setDefaultValue(t){e.default_value=v.cast(t)},setMinWidth(t){e.min_width=t}})),Hb=()=>ja.create({_name:"tree-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),Ra=v.types.compose("FilterConfigModel_Select",v.types.model({_name:v.types.literal("select"),default_value:v.types.string,required:v.types.boolean,width:v.types.optional(v.types.string,"")}),nr).views(e=>({get json(){const{_name:t,default_value:r,required:i,width:s,static_options:o,options_query_id:u,default_selection_count:l}=e;return tn({_name:t,width:s,required:i,default_value:r,static_options:o,options_query_id:u,default_selection_count:l})},truthy(t){return!!t}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t},setWidth(t){e.width=t}})),ev=()=>Ra.create({_name:"select",required:!1,default_value:"",static_options:[],options_query_id:"",default_selection_count:0}),Ya=v.types.model("FilterConfigModel_TextInput",{_name:v.types.literal("text-input"),required:v.types.boolean,default_value:v.types.string}).views(e=>({get json(){const{_name:t,required:r,default_value:i}=e;return{_name:t,required:r,default_value:i}},truthy(t){return typeof t!="string"?!1:!!t.trim()}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t}})),Qa=()=>Ya.create({_name:"text-input",required:!1,default_value:""}),rr=v.types.model("FilterModel",{id:v.types.identifier,key:v.types.string,label:v.types.string,order:v.types.number,visibleInViewsIDs:v.types.array(v.types.string),auto_submit:v.types.optional(v.types.boolean,!1),type:v.types.enumeration("DashboardFilterType",[Ce.Select,Ce.MultiSelect,Ce.TreeSelect,Ce.TextInput,Ce.Checkbox,Ce.DateRange]),config:v.types.union(Ra,Wa,ja,Ya,Ga,Fa)}).views(e=>({get plainDefaultValue(){const t=e.config.default_value;return Array.isArray(t)?[...t]:t},get usingDefaultValue(){return e.type!==Ce.TreeSelect},get auto_submit_supported(){return[Ce.Select,Ce.Checkbox,Ce.DateRange].includes(e.type)}})).views(e=>({get json(){const{id:t,key:r,label:i,order:s,visibleInViewsIDs:o,auto_submit:u,type:l,config:d}=e;return{id:t,key:r,type:l,label:i,order:s,config:d.json,auto_submit:u,visibleInViewsIDs:ae.toJS(o)}},get should_auto_submit(){return e.auto_submit_supported&&e.auto_submit},requiredAndPass(t){return y.get(e.config,"required",!1)?y.get(e.config,"truthy",()=>!0)(t):!1}})).actions(e=>({setKey(t){e.key=t},setLabel(t){e.label=t},setOrder(t){e.order=t},setType(t){switch(t){case Ce.Select:e.config=ev();break;case Ce.MultiSelect:e.config=Jb();break;case Ce.TreeSelect:e.config=Hb();break;case Ce.TextInput:e.config=Qa();break;case Ce.Checkbox:e.config=Ub();break;case Ce.DateRange:e.config=Zb();break}e.type=t},setVisibleInViewsIDs(t){e.visibleInViewsIDs.length=0,e.visibleInViewsIDs.push(...t)},setAutoSubmit(t){e.auto_submit=e.auto_submit_supported&&t}}));function Ua(e,t){if(e===void 0)return e;if(t._name==="date-range")try{const[...r]=e;return r.map(i=>i===null?i:W.tz(i,"UTC").format(t.inputFormat)??i)}catch(r){return console.error(r),e}return e}function Xa(e){return e.reduce((t,r)=>(t[r.key]=Ua(r.config.default_value,r.config),t),{})}function tv(e,t,r){v.addDisposer(e,v.addMiddleware(e,(i,s)=>{s(i,()=>{v.getType(i.context)===t&&i.type==="action"&&r(i.name,i.context)})}))}const Za=v.types.model("FiltersModel",{current:v.types.optional(v.types.array(rr),[]),values:v.types.optional(v.types.frozen(),{}),previewValues:v.types.optional(v.types.frozen(),{})}).views(e=>({get json(){return e.current.map(t=>t.json)},get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},get inOrder(){return y.sortBy(e.current,"order")},get options(){return e.current.map(t=>({label:t.label??t.id,value:t.id,_type:"filter"}))},get empty(){return e.current.length===0},visibleInView(t){return y.sortBy(e.current.filter(r=>r.visibleInViewsIDs.includes(t)),"order")},get firstFilterValueKey(){return Object.keys(e.values)[0]??""},get keyLabelMap(){return e.current.reduce((t,r)=>(t[r.key]=r.label,t),{})}})).actions(e=>({replace(t){e.current=v.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const r=e.current.findIndex(i=>i.id===t);r>=0&&e.current.splice(r,1)},setValues(t){e.values=t},setValueByKey(t,r){e.values={...e.values,[t]:r}},getValueByKey(t){return e.values[t]},refreshValues(){console.log("refreshing values"),e.values=Xa(e.current)},updatePreviewValues(t){e.previewValues=t}})).actions(e=>{function t(){tv(e.current,rr,(r,i)=>{if(r==="setType"){const s=Ua(i.config.default_value,i.config);e.setValueByKey(i.key,s),e.updatePreviewValues({...e.previewValues,[i.key]:s})}})}return{afterCreate(){t()}}});function Ka(e){return{current:e,values:Xa(e)}}const Ja="\uFEFF";function nv(e,t){const r=new Blob([Ja+t],{type:"text/csv"});pn.saveAs(r,`${e}.csv`)}function rv(e,t){const r=new Blob([t],{type:"application/json"});pn.saveAs(r,`${e}.json`)}function iv(e){const t=new Hs;e.forEach(({id:r,data:i})=>{t.file(`${r}.csv`,Ha(i))}),t.generateAsync({type:"blob"}).then(r=>{pn.saveAs(r,"dashboard_data.zip")})}function Ha(e){if(!Array.isArray(e)||e.length===0)return"";const t=[],r=Object.keys(e[0]);return t.push(r.join(",")),e.forEach(i=>{const s=Object.values(i).join(",");t.push(s)}),Ja+t.join(`
268
- `)}const ct={CryptoJS:Ci,d3Array:no,dayjs:W,lodash:y,numbro:ue,mathjs:Vt,faker:eo.faker},av=[{name:"CryptoJS",url:"https://github.com/brix/crypto-js",version:"4.1.1"},{name:"d3Array",url:"https://github.com/d3/d3-array",version:"3.2.0"},{name:"dayjs",url:"https://day.js.org/",version:"1.11.6"},{name:"lodash",url:"https://lodash.com/docs/4.17.15",version:"4.17.21"},{name:"mathjs",url:"https://mathjs.org/",version:"11.7.0"},{name:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"faker",url:"https://fakerjs.dev/",version:"7.6.0"}],sv=e=>`
267
+ `}}}function lm(e){return e.x_axes.reduce((r,{label_formatter:i},s)=>(r[s]=function(u){let l=u;if(typeof u=="object"&&(Array.isArray(u.value)&&u.value.length===2?l=u.value[0]:l=u.value),!i)return l;try{return se(l).format(i)}catch(d){return console.error(d),l}},r),{default:({value:r})=>r})}function um(e,t){const r={};return t.map(i=>{const s=lt(i,e);r[i.name]=Je(i,s)}),r}function dm(e,t){return e.x_axes.map(({min:r,max:i,...s},o)=>{let u=s.position;return u||(u=o>0?"bottom":"top"),{...s,type:"value",min:r||void 0,max:i||void 0,position:u,axisLabel:{show:!0,margin:2,formatter:t[o]??t.default},axisLine:{show:!0},axisTick:{show:!1},splitLine:{show:!0},nameTextStyle:{fontWeight:"bold"},nameLocation:"center",nameGap:15}})}function cm(e,t){const r=t.every(u=>!Number.isNaN(Number(u))),{overflow:i,...s}=e.y_axis.axisLabel,o=Ke(i.on_axis);return[{data:t,name:e.y_axis.name??"",nameLocation:"end",nameTextStyle:{align:"center",fontWeight:"bold"},id:"main-y-axis",axisTick:{show:!0,alignWithLabel:!0},type:r?"value":"category",axisLabel:{...s,...o,formatter:ut(s.formatter)},z:5}]}function pm(e,t,r){const i=um(t,r),s=lm(e),o=v.uniq(t.map(c=>c[e.y_axis.data_key])),u=o.every(c=>!Number.isNaN(Number(c))),l=am(e,o,u,t,s,r,i);return{xAxis:dm(e,s),yAxis:cm(e,o),series:l,tooltip:om(e,l,s),grid:Zg(e),legend:Jg(l)}}const Jn={x_axes:[{id:"initial-x",min:"",max:"",name:"X Axis",data_key:"",position:"bottom",label_formatter:Ie,show:!0}],y_axis:{name:"Y Axis",data_key:"",axisLabel:{formatter:{...Be},overflow:je},nameAlignment:"center"},series:[],tooltip:{metrics:[]},reference_lines:[]};function hm(){const e=new Date().getTime().toString();return{id:e,min:"",max:"",name:e,data_key:"",position:"bottom",label_formatter:Ie,show:!0}}function fm(){const e=new Date().getTime().toString();return{id:e,type:"bar",name:e,stack:"",color:"",barGap:"0%",data_key:"",barWidth:"",barMinWidth:"1",barMaxWidth:"10",group_by_key:"",hide_in_legend:!1,invisible:!1,label_position:"right",aggregation_on_value:_t,xAxisIndex:"0"}}function gm(){const e=new Date().getTime().toString();return{id:e,name:e,template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,xAxisIndex:"0"}}le.use([B.DataZoomComponent,de.BarChart,de.LineChart,de.ScatterChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer,B.MarkLineComponent,B.MarkAreaComponent]);function mm({conf:e,data:t,width:r,height:i,interactionManager:s,variables:o}){const u=b.useMemo(()=>v.keyBy(t,e.y_axis.data_key),[t,e.y_axis.data_key]),l=Pe(s.triggerManager,Dn.id),d=b.useCallback(g=>{const h=v.get(u,g.name,{error:"rowData is not found"});l.forEach(m=>{s.runInteraction(m.id,{...g,rowData:h})})},[u,l,s]),c=b.useMemo(()=>({click:d}),[d]),f=b.useMemo(()=>pm(e,t,o),[e,t]);return!r||!i?null:n(De,{echarts:le,option:f,style:{width:r,height:i},onEvents:c,notMerge:!0,theme:"merico-light"})}function bm({context:e,instance:t}){const r=Ge({vizManager:e.vizManager,instance:t}),{value:i}=W(e.instanceData,"config"),{variables:s}=e,o=b.useMemo(()=>v.defaults({},i,Jn),[i]),u=e.data,{width:l,height:d}=e.viewport;return n(a.Box,{children:n(mm,{variables:s,width:l,height:d,data:u,conf:o,interactionManager:r})})}const ym=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],vm=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function xm({control:e,index:t,remove:r,watch:i,variableOptions:s,xAxisOptions:o}){const u=i(`reference_lines.${t}.orientation`);return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:s,sx:{flex:1},...l})})]}),n(x.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...l})}),p(a.Group,{grow:!0,children:[p(a.Stack,{children:[n(x.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:l})=>n(a.Select,{label:"Orientation",data:vm,required:!0,sx:{flex:1},...l})}),u==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),u==="horizontal"&&n(x.Controller,{name:`reference_lines.${t}.xAxisIndex`,control:e,render:({field:l})=>n(a.Select,{label:"X Axis",data:o,disabled:o.length===0,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:l})=>n(a.Select,{label:"Line Type",data:ym,sx:{flexGrow:1},...l})}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...l})})]}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:l})=>n(Se,{...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:l})=>n(a.Checkbox,{label:"Show in legend",checked:l.value,onChange:d=>l.onChange(d.currentTarget.checked)})}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function Cm({control:e,watch:t,variables:r}){const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"reference_lines"}),u=t("reference_lines"),l=i.map((m,w)=>({...m,...u[w]})),d=()=>{const m=gm();s(m)},c=b.useMemo(()=>r.map(m=>({label:m.name,value:m.name})),[r]),f=t("x_axes"),g=b.useMemo(()=>f.map(({name:m},w)=>({label:m,value:w.toString()})),[f]),h=l.length>0?l[0].id:"0";return p(a.Tabs,{defaultValue:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[l.map((m,w)=>n(a.Tabs.Tab,{value:m.id,children:m.name},w)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((m,w)=>n(a.Tabs.Panel,{value:m.id,children:n(xm,{control:e,index:w,remove:o,watch:t,variableOptions:c,xAxisOptions:g})},w))]})}function wm(e){const[t,r]=b.useState(e);return b.useEffect(()=>{r(e)},[e]),{tab:t,setTab:r}}const _m=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function Sm({control:e,index:t,seriesItem:r}){const i=!!r.barWidth.trim();return p(P,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.stack`,control:e,render:({field:s})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barGap`,control:e,render:({field:s})=>n(a.Select,{label:"Bar Gap",data:_m,sx:{flexGrow:1},...s})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:i,sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...s})}),n(x.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:s})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:i,sx:{flexGrow:1},...s})})]})]})}const Tm=[{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 km({control:e,index:t,remove:r,seriesItem:i,xAxisOptions:s,data:o}){return p(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.name`,control:e,render:({field:u})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),n(x.Controller,{name:`series.${t}.xAxisIndex`,control:e,render:({field:u})=>n(a.Select,{label:"X Axis",data:s,disabled:s.length===0,sx:{flex:1},...u})})]}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`series.${t}.data_key`,control:e,render:({field:u})=>n(Y,{label:"Value Field",required:!0,data:o,sx:{flex:1},...u})}),n(x.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:u})=>n(Ft,{label:"Aggregation on Value",value:u.value??_t,onChange:u.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(x.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:u})=>n(Y,{label:"Split into multiple series by this key...",data:o,clearable:!0,sx:{flex:1},...u})})}),n(Sm,{index:t,control:e,seriesItem:i}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.label_position`,control:e,render:({field:u})=>n(a.Select,{label:"Label Position",data:Tm,...u})}),p(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(x.Controller,{name:`series.${t}.color`,control:e,render:({field:u})=>n(Se,{...u})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:u})=>n(a.Checkbox,{label:"Hide in legend",checked:u.value,onChange:l=>u.onChange(l.currentTarget.checked)})}),n(x.Controller,{name:`series.${t}.invisible`,control:e,render:({field:u})=>n(a.Checkbox,{label:"Invisible",checked:u.value,onChange:l=>u.onChange(l.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function Dm({control:e,watch:t,data:r}){var m;const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"series"}),u=t("series"),l=i.map((w,C)=>({...w,...u[C]})),d=()=>{const w=fm();s(w)},c=t("x_axes"),f=b.useMemo(()=>c.map(({name:w},C)=>({label:w,value:C.toString()})),[c]),{tab:g,setTab:h}=wm((m=l[0])==null?void 0:m.id);return p(a.Tabs,{value:g,onTabChange:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map(w=>n(a.Tabs.Tab,{value:w.id,children:w.name},w.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((w,C)=>n(a.Tabs.Panel,{value:w.id,children:n(km,{control:e,index:C,remove:o,seriesItem:w,xAxisOptions:f,data:r},w.id)},w.id))]})}const Im=[{label:"Top",value:"top"},{label:"Bottom",value:"bottom"}];function Mm({control:e,index:t,remove:r}){return p(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`x_axes.${t}.name`,control:e,render:({field:i})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:`x_axes.${t}.position`,control:e,render:({field:i})=>n(a.Select,{label:"Position",required:!0,data:Im,sx:{flex:1},...i})})}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(x.Controller,{name:`x_axes.${t}.label_formatter`,control:e,render:({field:i})=>n(Ve,{...i})})]}),p(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),p(a.Group,{grow:!0,children:[n(x.Controller,{name:`x_axes.${t}.min`,control:e,render:({field:i})=>n(a.TextInput,{label:"Min",...i})}),n(x.Controller,{name:`x_axes.${t}.max`,control:e,render:({field:i})=>n(a.TextInput,{label:"Max",...i})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(x.Controller,{name:`x_axes.${t}.show`,control:e,render:({field:i})=>n(a.Checkbox,{label:"Visible",checked:i.value,onChange:s=>i.onChange(s.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),disabled:t===0,children:"Delete this X Axis"})]})}function Am({control:e,watch:t}){const{fields:r,append:i,remove:s}=x.useFieldArray({control:e,name:"x_axes"}),o=t("x_axes"),u=r.map((c,f)=>({...c,...o[f]})),l=()=>{const c=hm();i(c)},d=u.length>0?u[0].id:"0";return p(a.Tabs,{defaultValue:d,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[p(a.Tabs.List,{children:[u.map(c=>n(a.Tabs.Tab,{value:c.id,children:c.name},c.id)),n(a.Tabs.Tab,{onClick:l,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),u.map((c,f)=>n(a.Tabs.Panel,{value:c.id,children:n(Mm,{control:e,index:f,remove:s})},c.id))]})}function $m({data:e,control:t,watch:r}){return r(["y_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"y_axis.data_key",control:t,render:({field:i})=>n(Y,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"y_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"y_axis.axisLabel.formatter",control:t,render:({field:i})=>n(Yt,{data:e,...i})})}),n(x.Controller,{name:"y_axis.axisLabel.overflow",control:t,render:({field:i})=>n(nt,{...i})})]})}function zm({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),{variables:i}=e,s=e.data,o=b.useMemo(()=>v.defaultsDeep({},t,Jn),[t]),{control:u,handleSubmit:l,watch:d,getValues:c,reset:f}=x.useForm({defaultValues:o});b.useEffect(()=>{f(o)},[o]),d([]);const g=c(),h=b.useMemo(()=>!v.isEqual(g,o),[g,o]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:l(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Horizontal Bar Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axes",children:"X Axes"}),n(a.Tabs.Tab,{value:"Y Axis",children:"Y Axis"}),n(a.Tabs.Tab,{value:"Series",children:"Series"}),n(a.Tabs.Tab,{value:"Reference Lines",children:"Reference Lines"})]}),n(a.Tabs.Panel,{value:"X Axes",children:n(Am,{control:u,watch:d})}),n(a.Tabs.Panel,{value:"Y Axis",children:n($m,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Series",children:n(Dm,{control:u,watch:d,data:s})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(Cm,{variables:i,control:u,watch:d})})]})]})})}class Em extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const Lm={displayName:"Horizontal Bar Chart",displayGroup:"ECharts-based charts",migrator:new Em,name:"horizontalBarChart",viewRender:bm,configRender:zm,createConfig:()=>({version:1,config:Jn})};function Om(){return[{top:20,left:30,right:60,height:40,containLabel:!0,backgroundColor:"rgba(235, 235, 255, 0.5)",borderWidth:0,show:!0},{top:70,left:30,right:60,height:100,containLabel:!0,backgroundColor:"rgba(235, 235, 255, 0.5)",borderWidth:0,show:!0},{top:180,left:30,right:60,bottom:110,containLabel:!0,backgroundColor:"rgba(235, 235, 255, 0.5)",borderWidth:0,show:!0},{left:30,right:60,bottom:0,height:100,containLabel:!1,backgroundColor:"rgba(235, 235, 255, 0.5)",borderWidth:0,show:!0}]}const Ma=({value:e})=>{try{return se(e[2]).format({output:"percent",mantissa:0})}catch(t){return console.error(t),e}};function Pm(e,t,r){return{type:"heatmap",name:"准确估算比例",xAxisIndex:0,yAxisIndex:0,data:t.map(s=>{const o=r[s].length,d=(v.countBy(r[s],c=>c.level.diff===0).true??0)/o;return[s,"_y",d]}),label:{show:!0,formatter:Ma},labelLayout:{hideOverlap:!0},visualMapIndex:0,tooltip:{trigger:"item",formatter:({color:s,value:o})=>`
268
+ <table style="width: auto">
269
+ <thead>
270
+ <tr colspan="2">
271
+ <div style="
272
+ width: 100%; height: 4px; border-radius: 2px; margin-bottom: 6px;
273
+ background-color: ${s};"
274
+ />
275
+ </tr>
276
+ <tr>
277
+ <th colspan="2" style="text-align: center;">
278
+ <div>${o[0]}</div>
279
+ </th>
280
+ </tr>
281
+ </thead>
282
+ <tbody>
283
+ <tr>
284
+ <th style="text-align: right;">准确估算比例</th>
285
+ <td style="text-align: left; padding: 0 1em;">${Ma({value:o})}</td>
286
+ </tr>
287
+ </tbody>
288
+ </table>
289
+ `},show_in_legend:!1}}function Aa(e){const t=[`background-color: ${e}`];return e==="rgba(255, 255, 255, 1)"&&t.push("box-shadow: 0px 0px 1px 0px rgba(0,0,0,.5)"),t.join(";")}function Vm([e,t]){const r={x:e,v:`${t}`};try{r.v=se(t).format({output:"number",mantissa:2,trimMantissa:!0})}catch{}return r}function Bm(e,t,r,i){var d,c;const s=t.map(f=>{const g=r[f],h=v.sumBy(g,m=>m.level.diff);return[f,h/g.length]}),o=Number(((d=v.maxBy(s,f=>f[1]))==null?void 0:d[1])??0),u=Number(((c=v.minBy(s,f=>f[1]))==null?void 0:c[1])??0),l=at.interpolate([o,0,u],["#D15A40","#FFF","#418AAF"]);return{type:"bar",name:"平均偏差",xAxisIndex:1,yAxisIndex:1,...i,data:s,itemStyle:{color:({value:f})=>{try{return l(f[1])}catch{return"#FFF"}}},label:{position:"outside",show:!0,formatter:({value:f})=>{try{return se(f[1]).format({output:"number",mantissa:1,trimMantissa:!0})}catch{return f[1]}}},tooltip:{trigger:"item",formatter:({color:f,value:g})=>{const{x:h,v:m}=Vm(g);return`
290
+ <table style="width: auto">
291
+ <thead>
292
+ <tr colspan="2">
293
+ <div style="
294
+ width: 100%; height: 4px; border-radius: 2px; margin-bottom: 6px;
295
+ ${Aa(f)}
296
+ "/>
297
+ </tr>
298
+ <tr>
299
+ <th colspan="2" style="text-align: center;">
300
+ <div>${h}</div>
301
+ </th>
302
+ </tr>
303
+ </thead>
304
+ <tbody>
305
+ <tr>
306
+ <th style="text-align: right;">平均偏差</th>
307
+ <td style="text-align: left; padding: 0 1em;">${m}</td>
308
+ </tr>
309
+ </tbody>
310
+ </table>
311
+ `}},show_in_legend:!1}}function Nm([e,t,r,i]){const s={x:e,percentage:`${t}`,count:r,sum:i};try{s.percentage=se(t).format({output:"percent",mantissa:2,trimMantissa:!0})}catch{}return s}function Gm(e,t,r,i){const s={};t.forEach(f=>{const g=v.countBy(r[f],m=>m.level.diff),h=v.sum(Object.values(g));Object.entries(g).forEach(([m,w])=>{s[m]||(s[m]=[]);const C=w/h;s[m].push([f,C,w,h])})});const o=Object.entries(s).map(([f])=>Number(f)).sort((f,g)=>f-g),u=Math.max(...o),l=Math.min(...o),d=at.interpolate([u,0,l],["#D15A40","#FFF","#418AAF"]);return o.map(f=>({type:"bar",name:f,xAxisIndex:2,yAxisIndex:2,stack:1,...i,color:d(f),data:s[f],tooltip:{trigger:"item",formatter:({color:g,value:h})=>{const{x:m,percentage:w,count:C,sum:S}=Nm(h);return`
312
+ <table style="width: auto">
313
+ <thead>
314
+ <tr colspan="2">
315
+ <div style="
316
+ width: 100%; height: 4px; border-radius: 2px; margin-bottom: 6px;
317
+ ${Aa(g)}
318
+ "
319
+ />
320
+ </tr>
321
+ <tr>
322
+ <th colspan="2" style="text-align: center;">
323
+ ${m}
324
+ </th>
325
+ </tr>
326
+ </thead>
327
+ <tbody>
328
+ <tr>
329
+ <th style="text-align: right;">偏差档位</th>
330
+ <td style="text-align: left; padding: 0 1em;">${f}</td>
331
+ </tr>
332
+ <tr>
333
+ <th style="text-align: right;">占比</th>
334
+ <td style="text-align: left; padding: 0 1em;">${w}</td>
335
+ </tr>
336
+ <tr>
337
+ <th style="text-align: right;">数量</th>
338
+ <td style="text-align: left; padding: 0 1em;">${C}</td>
339
+ </tr>
340
+ <tr>
341
+ <th style="text-align: right;">总数</th>
342
+ <td style="text-align: left; padding: 0 1em;">${S}</td>
343
+ </tr>
344
+ </tbody>
345
+ </table>
346
+ `}},show_in_legend:!0}))}function qm(e,t,r,i){const s=t.data_key,o=t.name,u=r.map(l=>{const d=v.sumBy(i[l],s);return[l,d]});return{type:"line",name:o,xAxisIndex:3,yAxisIndex:3,color:"#b41529",data:u,show_in_legend:!1}}function Fm(e,t,r,i){const u={barMinWidth:5,barMaxWidth:20};return[Pm(e,r,i),Bm(e,r,i,u),...Gm(e,r,i,u),qm(e,t,r,i)]}function Wm({enabled:e,func_content:t}){return(r,i)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,i)}catch(s){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${s.message}`),r}}}function jm(e,t){const{axisLabel:r}=e.x_axis;return[{data:t,id:"准确估算比例",gridIndex:0,axisTick:{show:!1},axisLabel:{show:!1},axisLine:{show:!1},type:"category"},{data:t,id:"平均偏差",gridIndex:1,axisTick:{show:!1},axisLabel:{show:!1},axisLine:{show:!0,lineStyle:{color:"#FFFFFF",width:2}},type:"category"},{data:t,id:"数量占比",gridIndex:2,axisTick:{show:!1},axisLabel:{show:!1},axisLine:{show:!1},type:"category"},{data:t,id:"代码当量",gridIndex:3,axisTick:{show:!1},type:"category",axisLabel:{...r,formatter:Wm(r.formatter)},axisLine:{show:!1}}]}function Ym(e){return[{type:"category",name:"准确估算比例",nameRotate:0,nameGap:5,nameLocation:"end",nameTextStyle:{align:"left"},gridIndex:0,axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}},{type:"value",name:"平均偏差",nameGap:5,nameRotate:90,nameLocation:"middle",gridIndex:1,boundaryGap:[1,1],axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}},{type:"value",name:"数量占比",nameGap:5,nameRotate:90,nameLocation:"middle",gridIndex:2,axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1},min:0,max:1},{type:"value",gridIndex:3,position:"right",splitNumber:3,axisLabel:{show:!0,verticalAlign:"top",showMinLabel:!1,lineHeight:14},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}},{type:"value",name:e.name,nameGap:5,nameRotate:90,nameLocation:"middle",gridIndex:3,position:"left",axisLabel:{show:!1},axisTick:{show:!1},axisLine:{show:!1},splitLine:{show:!1}}]}function Hn(e){return e==1||e==2?1:Hn(e-2)+Hn(e-1)}const Rm=Array.from(new Array(20),(e,t)=>Hn(t+1));function $a(e){return e<=1?e:Rm.findIndex(t=>e<=t)-1}function Qm(e,t){const{estimated_value:r,actual_value:i}=e.deviation.data_keys;return t.map(s=>{const o=$a(s[r]),u=$a(s[i]),l=o-u;return{...s,level:{estimated:o,actual:u,diff:l}}})}function Um(e){return e==="rgba(255, 255, 255, 1)"?{borderColor:"rgba(0,0,0,.1)",borderWidth:1}:{}}function Xm(e){return{show:!0,orient:"vertical",top:"middle",right:0,data:e.filter(r=>r.show_in_legend).reverse().map(r=>({name:`${r.name}`,color:r.color,itemStyle:Um(r.color)})),tooltip:{show:!0,formatter:"档位偏差:{a}"}}}const Zm={tooltip:{trigger:"axis"}};function Km(e,t){const{deviation:r,metrics:i}=e,s=i.find(u=>u.data_key===t);if(s)return s;const o=r.data_keys.actual_value;return{id:o,name:r.name,data_key:o}}function Jm(e,t,r){const i=Qm(e,r),s=v.uniqBy(r,e.x_axis.data_key).map(c=>c[e.x_axis.data_key]),o=v.groupBy(i,e.x_axis.data_key),u=Km(e,t),l=Fm(e,u,s,o),d={xAxis:jm(e,s),yAxis:Ym(u),series:l,grid:Om(),visualMap:[{min:0,max:1,calculable:!0,show:!1,seriesIndex:0,color:["#F0F0F0","#418AAF"]}],legend:Xm(l)};return v.defaultsDeep({},d,Zm)}const za={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
347
+ `)},er={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,formatter:{...za}}},deviation:{name:"",data_keys:{estimated_value:"",actual_value:""}},metrics:[]},Hm={input:{border:"none !important",paddingLeft:0,lineHeight:"1.55 !important"}},eb=({conf:e,metricKey:t,setMetricKey:r})=>{const{deviation:i,metrics:s}=e,o=b.useMemo(()=>{const u=s.map(l=>({label:l.name,value:l.data_key}));return u.push({label:i.name?i.name:i.data_keys.actual_value,value:i.data_keys.actual_value}),u},[i,s]);return p(a.Group,{spacing:1,children:[n(a.Text,{size:12,color:"dimmed",sx:{cursor:"default",userSelect:"none"},children:"基线指标"}),n(a.NativeSelect,{size:"xs",data:o,value:t,onChange:u=>r(u.currentTarget.value),styles:Hm})]})},tb={"tbody th, tbody td":{padding:"7px 10px"},"tbody tr:not(:first-of-type) th":{borderTop:"1px solid #dee2e6"}};function nb(){return p(a.HoverCard,{width:400,shadow:"md",children:[n(a.HoverCard.Target,{children:n(a.Button,{size:"xs",variant:"subtle",compact:!0,leftIcon:n(V.IconInfoCircle,{size:14}),children:"指标说明"})}),n(a.HoverCard.Dropdown,{children:n(a.Table,{fontSize:14,sx:tb,children:p("tbody",{children:[p("tr",{children:[n("th",{children:"估算偏差"}),n("td",{children:"使用斐波那契数列(1,2,3,5,8,13)估算故事点,每个数位为一个档位,计算issue实际故事点与估算故事点的档位偏差,即为估算偏差。如估算故事点为5,实际故事点为8,则估算偏差为-1。"})]}),p("tr",{children:[n("th",{children:"准确估算比例"}),n("td",{children:"偏差在 ± 1 档位内的 issue 均为准确估算,以此计算准确估算的比例。"})]})]})})})]})}function rb(e){return p(a.Group,{position:"apart",children:[n(nb,{}),n(eb,{...e})]})}le.use([de.BarChart,de.LineChart,de.HeatmapChart,B.GridComponent,B.LegendComponent,B.TooltipComponent,ke.CanvasRenderer,B.VisualMapComponent]);function ib({conf:e,data:t,width:r,height:i,metricKey:s}){const o=b.useMemo(()=>Jm(e,s,t),[e,t,s]);return!r||!i?null:n(De,{echarts:le,option:o,style:{width:r,height:i},notMerge:!0,theme:"merico-light"})}function ab({context:e}){const{value:t}=W(e.instanceData,"config"),r=b.useMemo(()=>v.defaults({},t,er),[t]),i=e.data,{width:s,height:o}=e.viewport,{x_axis:u,deviation:l}=r,{estimated_value:d,actual_value:c}=l.data_keys,[f,g]=b.useState(c);if(b.useEffect(()=>{g(w=>w||c)},[c]),!u.data_key||!d||!c)return null;const h=Math.max(s,300),m=Math.max(o,370);return p(a.Box,{sx:{overflow:"hidden",height:m,width:h},children:[n(rb,{conf:r,metricKey:f,setMetricKey:g}),n(ib,{width:h,height:m-30,data:i,conf:r,metricKey:f})]})}const sb=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(we,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},ob=b.forwardRef(({value:e,onChange:t},r)=>{const[i,{setTrue:s,setFalse:o}]=Z.useBoolean(),[u,l]=b.useState(e);b.useEffect(()=>{l(e)},[e]);const d=m=>{l({...u,enabled:m})},c=()=>{o();const{enabled:m,func_content:w}=u,C={enabled:m,func_content:w};l(C),t(C)},f=()=>{o(),l(e)},g=m=>{l(w=>({...w,func_content:m}))},h=()=>{g(za.func_content)};return p(P,{children:[n(a.Button,{variant:"filled",mt:24,onClick:s,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:i,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:u.enabled,onChange:m=>d(m.currentTarget.checked)}),n(sb,{value:u.func_content,onChange:g,disabled:!u.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})});function lb({data:e,control:t,watch:r}){return r(["x_axis"]),p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.data_key",control:t,render:({field:i})=>n(Y,{label:"数据字段",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"x_axis.name",control:t,render:({field:i})=>n(a.TextInput,{label:"X轴名称",sx:{flex:1},...i})})]}),n(a.Divider,{mb:-15,label:"点位文案",labelPosition:"center"}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:i})=>n(a.NumberInput,{label:"旋转",hideControls:!0,min:-90,max:90,rightSection:n(a.Text,{color:"dimmed",children:"度"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...i})}),n(x.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:i})=>n(ob,{data:e,...i})})]})]})}function ub({data:e,control:t,watch:r}){return r(["deviation"]),p(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(x.Controller,{name:"deviation.name",control:t,render:({field:i})=>n(a.TextInput,{label:"指标名称",sx:{flex:1},...i})})}),p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:"deviation.data_keys.estimated_value",control:t,render:({field:i})=>n(Y,{label:"估算值字段",required:!0,data:e,sx:{flex:1},...i})}),n(x.Controller,{name:"deviation.data_keys.actual_value",control:t,render:({field:i})=>n(Y,{label:"实际值字段",required:!0,data:e,sx:{flex:1},...i})})]})]})}const db=({control:e,data:t,index:r,remove:i})=>p(a.Stack,{children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(x.Controller,{name:`metrics.${r}.name`,control:e,render:({field:s})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...s})}),n(x.Controller,{name:`metrics.${r}.data_key`,control:e,render:({field:s})=>n(Y,{label:"Value Field",required:!0,data:t,sx:{flex:1},...s})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(r),sx:{top:15,right:5},children:"Delete this Metric"})]}),cb=({control:e,watch:t,data:r})=>{const{fields:i,append:s,remove:o}=x.useFieldArray({control:e,name:"metrics"}),u=t("metrics"),l=i.map((h,m)=>({...h,...u[m]})),d=()=>s({id:Date.now().toString(),data_key:"",name:""}),c=t("metrics.0.id"),[f,g]=b.useState(()=>c??null);return b.useEffect(()=>{c&&g(h=>h!==null?h:c)},[c]),p(P,{children:[p(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(k.InfoCircle,{size:14,color:"#888"}),n(a.Text,{size:14,color:"#888",children:"设置可以展示在基线图的指标,例如代码当量"})]}),n(a.Divider,{variant:"dashed",my:10}),p(a.Tabs,{value:f,onTabChange:h=>g(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[p(a.Tabs.List,{children:[l.map((h,m)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:m},h.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(k.Plus,{size:18,color:"#228be6"})})]}),l.map((h,m)=>n(a.Tabs.Panel,{value:h.id,children:n(db,{control:e,index:m,remove:o,data:r},h.id)},h.id))]})]})};function pb({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),i=e.data,s=b.useMemo(()=>v.defaultsDeep({},t,er),[t]),{control:o,handleSubmit:u,watch:l,getValues:d,reset:c}=x.useForm({defaultValues:s});b.useEffect(()=>{c(s)},[s]),l([]);const f=d(),g=b.useMemo(()=>!v.isEqual(f,s),[f,s]);return n(a.Stack,{spacing:"xs",children:p("form",{onSubmit:u(r),children:[p(a.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n(a.Text,{children:"Merico Estimation Chart Config"}),n(a.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!g,children:n(k.DeviceFloppy,{size:20})})]}),p(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"12px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"X Axis",children:"X 轴"}),n(a.Tabs.Tab,{value:"Deviation",children:"偏差"}),n(a.Tabs.Tab,{value:"Additional Metrics",children:"指标"})]}),n(a.Tabs.Panel,{value:"X Axis",children:n(lb,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Deviation",children:n(ub,{control:o,watch:l,data:i})}),n(a.Tabs.Panel,{value:"Additional Metrics",children:n(cb,{control:o,watch:l,data:i})})]})]})})}class hb extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>({version:1,config:r}))}}const fb={displayName:"Merico Estimation Chart",displayGroup:"Merico suite",migrator:new hb,name:"mericoEstimationChart",viewRender:ab,configRender:pb,createConfig:()=>({version:1,config:er})},gb=[{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(e=>({name:e.name,value:e.value,type:"single",category:"basic"})),mb=[No,Go,Wo,Fo,qo,jo],Ea=()=>({id:"dashboard",version:Cn,manifest:{viz:[Rn,Uh,fg,Ep,mf,np,Lm,Ho,ql,Yd,vc,Xg,Kc,_d,Gh,yp,Ip,wg,fb,tu],color:[...gb,...mb]}}),Dt=new Qo,me={pluginManager:We("pluginManager"),vizManager:We("vizManager"),colorManager:We("colorManager"),instanceScope:{panelModel:We("panelModel"),vizInstance:We("vizInstance"),interactionManager:We("interactionManager"),migrator:We("migrator"),operationManager:We("operationManager"),triggerManager:We("triggerManager")}},tr=()=>{try{Dt.install(Ea())}catch{}const e=new Po(Dt),t=new Ro(Dt);return{pluginManager:Dt,vizManager:e,colorManager:t}},Ne=b.createContext(tr());try{Dt.install(Ea())}catch{}function bb(e,t){const{value:r,set:i}=W(e.operation.operationData,"config"),[s,o]=b.useState(v.defaults({},r,t)),u=async()=>{await i(s)};return b.useEffect(()=>{o(v.defaults({},r,t))},[r]),{config:s,setConfig:o,commit:u}}function yb(e){const{config:t,setConfig:r,commit:i}=bb(e,{urlTemplate:"",openInNewTab:!0});async function s(){await i()}async function o(l){r({...t,openInNewTab:l}),await i()}const u=l=>r({...t,urlTemplate:l.currentTarget.value});return p(a.Stack,{children:[n(a.TextInput,{label:"Url",value:t.urlTemplate,onChange:u,onBlur:s}),n(a.Switch,{label:"Open in new Tab",checked:t.openInNewTab,onChange:l=>o(l.currentTarget.checked)})]})}async function vb(e,t){const{urlTemplate:r,openInNewTab:i}=await t.operationData.getItem("config");window.dispatchEvent(new CustomEvent("open-link",{detail:{urlTemplate:r,openInNewTab:i,payload:e}}))}class xb extends he{constructor(){super(...arguments);O(this,"VERSION",1)}configVersions(){this.version(1,r=>r)}}const Cb={displayName:"Open Link",id:"builtin:op:open-link",configRender:yb,run:vb,migrator:new xb,createDefaultConfig:()=>({version:1,config:{urlTemplate:"",openInNewTab:!0}})};function wb(e){const{value:t,set:r}=W(e.operationData,"config"),i=s=>void r({template:s});return[(t==null?void 0:t.template)||"",i]}function _b(e){const[t,r]=wb(e.operation);return n(a.TextInput,{defaultValue:t,onBlur:i=>r(i.currentTarget.value),label:"console.log"})}async function Sb(e,t){const r=await t.operationData.getItem("config"),i=v.template(r.template||"");console.log("run with payload",e),console.log(i(e))}const Tb={displayName:"console.log (debug)",id:"builtin:op:debug",configRender:_b,run:Sb},kb=T.observer(e=>{const t=N(),{value:r,set:i}=W(e.operation.operationData,"config");console.log({value:r,viewID:r==null?void 0:r.viewID});const s=(r==null?void 0:r.viewID)||"",o=u=>void i({viewID:u});return n(a.Select,{defaultValue:s,value:s,onChange:o,label:"View",data:t.views.options})});async function Db(e,t){const i=(await t.operationData.getItem("config")).viewID;window.dispatchEvent(new CustomEvent("open-view",{detail:{viewID:i}}))}const Ib={displayName:"Open View",id:"builtin:op:open_view",configRender:kb,run:Db},Mb={dictionary:{}},Ab=T.observer(e=>{const t=N(),{value:r=Mb,set:i}=W(e.operation.operationData,"config"),{dictionary:s={}}=r,o=(d,c)=>{i({dictionary:{...s,[d]:c}})},u=()=>{o(t.filters.firstFilterValueKey,"")},l=d=>{const c={...s};delete c[d],i({dictionary:c})};return p(a.Stack,{spacing:10,children:[n(a.Text,{children:"Mapping Rules"}),Object.entries(s).map(([d,c])=>p(a.Flex,{justify:"space-between",gap:10,children:[n(a.TextInput,{label:"Payload key",value:c,onChange:f=>{o(d,f.currentTarget.value)},sx:{flexGrow:1}}),n(Y,{data:[t.filters.values],value:d,onChange:f=>{o(f,c)},label:"Filter key",sx:{flexGrow:1}}),n(a.ActionIcon,{onClick:()=>l(d),sx:{marginTop:"26px",flexGrow:0},children:n(k.Trash,{size:14,color:"red"})})]},d)),n(a.Button,{size:"xs",onClick:u,sx:{alignSelf:"center",width:"300px"},children:"Add one mapping rule"})]})});async function $b(e,t){const i=(await t.operationData.getItem("config")).dictionary;window.dispatchEvent(new CustomEvent("set-filter-values",{detail:{dictionary:i,payload:e}}))}const zb={displayName:"Set Filter Values",id:"builtin:op:set_filter_values",configRender:Ab,run:$b},Eb={filter_keys:[]},Lb=T.observer(e=>{const t=N(),{value:r=Eb,set:i}=W(e.operation.operationData,"config"),{filter_keys:s=[]}=r,o=l=>{i({filter_keys:[...l]})},u=b.useMemo(()=>t.filters.current.map(l=>({label:l.label,value:l.key})),[t.filters.values]);return n(a.Stack,{spacing:10,children:n(a.MultiSelect,{label:"Select Filters to Clear",data:u,value:s,onChange:o})})});async function Ob(e,t){const i=(await t.operationData.getItem("config")).filter_keys;window.dispatchEvent(new CustomEvent("clear-filter-values",{detail:{filter_keys:i,payload:e}}))}const Kt=[Tb,Cb,Ib,zb,{displayName:"Clear Filter Values",id:"builtin:op:clear_filter_values",configRender:Lb,run:Ob}];class Pb{constructor(t,r=Kt){O(this,"attachments");this.operations=r;const i=async s=>{const{id:o,schemaRef:u}=await s.getItem(null);return{id:o,schemaRef:u,operationData:new ot(s,"data")}};this.attachments=new xn(t,"__OPERATIONS",i)}async runOperation(t,r){const i=await this.attachments.getInstance(t);if(!i){console.warn(`Operation '${t}' is not defined`);return}const s=this.tryGetSchema(i.schemaRef);if(!s){console.warn(`Operation schema '${i.schemaRef}' is not defined`);return}await s.run(r,i)}tryGetSchema(t){return this.operations.find(r=>r.id===t)}async needMigration(){const r=(await this.attachments.list()).map(async i=>{const s={configData:i.operationData},o=this.tryGetSchema(i.schemaRef),u=o==null?void 0:o.migrator;return u&&await u.needMigration(s)});return(await Promise.all(r)).some(i=>i)}async runMigration(){const r=(await this.attachments.list()).map(async i=>{const s={configData:i.operationData},o=this.tryGetSchema(i.schemaRef),u=o==null?void 0:o.migrator;u&&await u.needMigration(s)&&await u.migrate(s)});await Promise.all(r)}async createOrGetOperation(t,r){var u;if(!this.getOperationSchemaList().some(l=>l.id===r.id))throw new Error(`Operation schema '${r.id}' is not defined`);const s=await this.attachments.getInstance(t);return!s||s.schemaRef!==r.id?await this.attachments.create(t,{id:t,schemaRef:r.id,data:((u=r.createDefaultConfig)==null?void 0:u.call(r))??{}}):s}getOperationList(){return this.attachments.list()}getOperationSchemaList(){return this.operations}removeOperation(t){return this.attachments.remove(t)}async retrieveTrigger(t){return await this.attachments.getInstance(t)}}const La="__TRIGGERS";class Vb{constructor(t,r){O(this,"attachments");this.instance=t,this.component=r;const i=async s=>{const{id:o,schemaRef:u}=await s.getItem(null);return{id:o,schemaRef:u,triggerData:new ot(s,"data")}};this.attachments=new xn(t,La,i)}watchTriggerSnapshotList(t){return this.instance.instanceData.watchItem(La,r=>{const i=v.values(r).map(s=>({id:v.get(s,"id"),schemaRef:v.get(s,"schemaRef"),config:ae.toJS(v.get(s,"data.config"))}));t(i)},{fireImmediately:!0})}async createOrGetTrigger(t,r,i={recreate:!1}){var l;if(!this.getTriggerSchemaList().some(d=>d.id===r.id))throw new Error(`Trigger schema '${r.id}' is not defined in component '${this.component.name}'`);const o=await this.attachments.getInstance(t);return!o||i.recreate||o.schemaRef!==r.id?await this.attachments.create(t,{id:t,schemaRef:r.id,data:((l=r==null?void 0:r.createDefaultConfig)==null?void 0:l.call(r))||{}}):o}async getTriggerList(){return await this.attachments.list()}getTriggerSchemaList(){return this.component.triggers||[]}async removeTrigger(t){await this.attachments.remove(t)}async retrieveTrigger(t){return await this.attachments.getInstance(t)}async getMigrationTasks(){const r=(await this.getTriggerList()).map(async i=>{const s=this.getTriggerSchemaList().find(l=>l.id===i.schemaRef),o=s==null?void 0:s.migrator,u={configData:i.triggerData};return o&&await o.needMigration(u)?()=>o.migrate(u):null});return Promise.all(r).then(i=>i.filter(s=>s))}async needMigration(){return(await this.getMigrationTasks()).length>0}async runMigration(){const t=await this.getMigrationTasks();await Promise.all(t.map(r=>r()))}}class nr{constructor(t,r,i){O(this,"operationManager");O(this,"triggerManager");O(this,"attachments");this.operationManager=new Pb(t,i),this.triggerManager=new Vb(t,r);const s=async o=>{const{id:u,triggerRef:l,operationRef:d}=await o.getItem(null);return{id:u,triggerRef:l,operationRef:d}};this.attachments=new xn(t,"__INTERACTIONS",s)}async addInteraction(t,r){const i=t.id,s=r.id,o=`[${i}]:[${s}]`;await this.attachments.create(o,{id:o,triggerRef:i,operationRef:s})}getInteractionList(){return this.attachments.list()}async removeInteraction(t){const r=await this.attachments.getInstance(t);if(!r)return;const{triggerRef:i,operationRef:s}=r;await this.getTriggerRefCount(i)<=1&&await this.triggerManager.removeTrigger(i),await this.getOperationRefCount(s)<=1&&await this.operationManager.removeOperation(s),await this.attachments.remove(t)}async getOperationRefCount(t){return(await this.getInteractionList()).filter(i=>i.operationRef===t).length}async getTriggerRefCount(t){return(await this.getInteractionList()).filter(i=>i.triggerRef===t).length}async runInteraction(t,r){const s=(await this.getInteractionList()).filter(o=>o.triggerRef===t);await Promise.all(s.map(async o=>{try{return await this.operationManager.runOperation(o.operationRef,r)}catch(u){console.warn(`Failed to run operation '${o.operationRef}'`,u)}}))}}const Ge=({vizManager:e,instance:t})=>Z.useCreation(()=>new nr(t,e.resolveComponent(t.type),Kt),[t,e]),Oa=e=>{const{title:t="Variables",variables:r}=e,i=ye.useClipboard(),s=o=>{i.copy(o),Ot.showNotification({color:"green",message:"Copied to clipboard"})};return p(a.Paper,{withBorder:!0,p:"sm",children:[n(a.Text,{size:"xs",color:"dimmed",mb:"sm",children:t}),n(a.Stack,{style:{maxHeight:"500px"},children:r.map(o=>p(a.Text,{size:"sm",children:[p(a.Code,{color:"teal",children:["// ",o.description]}),n("br",{}),p(a.Code,{onClick:()=>s(o.name),style:{cursor:"pointer"},children:[o.name," : ",o.valueType]})]},o.name))})]})};class Bb{constructor(t,r){O(this,"operationId");O(this,"operation");O(this,"operationSchema");O(this,"variables",[]);this.operationManager=t,this.instance=r,ae.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(t,r){const i=await this.operationManager.retrieveTrigger(t),s=this.operationManager.getOperationSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));ae.runInAction(()=>{this.operationId=t,this.operation=i,this.operationSchema=s,this.variables=r})}async changeSchema(t){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,t),await this.configOperation(this.operationId,this.variables))}}function Nb(e){return!!e.operationId}const Gb=T.observer(({model:e,onClick:t})=>{var i;const r=(i=e.operationSchema)==null?void 0:i.displayName;return n(a.Button,{variant:"outline",onClick:t,children:r})}),qb=T.observer(({model:e})=>{const t={operation:e.operation,instance:e.instance,variables:[]};return b.createElement(e.operationSchema.configRender,t)});function Fb({model:e}){const t=e.schemaList,r=t.map(s=>({label:s.displayName,value:s.id}));async function i(s){await e.changeSchema(t.find(o=>o.id===s))}return n(a.Select,{label:"Operation",data:r,onChange:i,value:e.operationSchema.id})}const Wb=T.observer(e=>{const[t,{setTrue:r,setFalse:i}]=Z.useBoolean(!1),{operationManager:s,operationId:o,instance:u,variables:l}=e,d=Z.useCreation(()=>new Bb(s,u),[s,u]);return Z.useAsyncEffect(async()=>{await d.configOperation(o,l)},[o,d]),Nb(d)?p(P,{children:[n(Gb,{model:d,onClick:r}),n(a.Modal,{size:600,opened:t,onClose:i,title:"Operation Settings",closeButtonLabel:"close",zIndex:320,children:p(a.Stack,{children:[n(Fb,{model:d}),n(qb,{model:d}),n(Oa,{title:"Variables",variables:d.variables})]})})]}):null});class jb{constructor(t,r){O(this,"triggerId");O(this,"trigger");O(this,"triggerSchema");O(this,"sampleData");this.triggerManager=t,this.instance=r,ae.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(t,r){const i=await this.triggerManager.retrieveTrigger(t),s=this.triggerManager.getTriggerSchemaList().find(o=>o.id===(i==null?void 0:i.schemaRef));ae.runInAction(()=>{this.triggerId=t,this.trigger=i,this.triggerSchema=s,this.sampleData=r})}async changeSchema(t){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,t),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return Yb(this)}}function Yb(e){return!!e.triggerId&&!!e.triggerSchema}function Rb(e,t){return Z.useCreation(()=>new jb(e,t),[e,t])}const Qb=T.observer(({model:e,onClick:t})=>{const r=e.triggerSchema.nameRender,i={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return n(a.Button,{variant:"outline",onClick:t,children:b.createElement(r,i)})}),Ub=T.observer(({model:e})=>{const t=e.schemaList,r=t.map(s=>({label:s.displayName,value:s.id}));async function i(s){await e.changeSchema(t.find(o=>o.id===s))}return n(a.Select,{label:"Trigger",data:r,value:e.triggerSchema.id,onChange:i})}),Xb=T.observer(({model:e})=>{const t={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return b.createElement(e.triggerSchema.configRender,t)}),Zb=T.observer(e=>{const[t,{setTrue:r,setFalse:i}]=Z.useBoolean(!1),s=e.model;return p(P,{children:[n(a.Modal,{opened:t,onClose:i,title:"Setup Trigger",closeButtonLabel:"close setup",zIndex:320,children:p(a.Stack,{children:[n(Ub,{model:s}),n(Xb,{model:s}),n(Oa,{title:"Payload",variables:s.triggerSchema.payload})]})}),n(Qb,{onClick:r,model:s})]})});function Kb(e,t){const[r,i]=b.useState([]);return Z.useAsyncEffect(async()=>{const s=await e.getInteractionList();i(s)},[t,e]),r}const Jb=T.observer(({item:e,manager:t,instance:r,sampleData:i,variables:s,onRemove:o})=>{const{triggerRef:u,operationRef:l}=e,d=Rb(t.triggerManager,r);if(Z.useAsyncEffect(async()=>{await d.configTrigger(u,i)},[d,u,i]),d.isReady()){const c=[...d.triggerSchema.payload,...s];return p(a.Group,{children:[n(Zb,{model:d}),n(Wb,{instance:r,operationId:l,variables:c,operationManager:t.operationManager}),n(a.ActionIcon,{"aria-label":"delete-interaction",variant:"filled",color:"red",onClick:()=>o(e),children:n(k.Trash,{size:16})})]})}return null}),Hb=e=>{const[t,r]=b.useState(0),{interactionManager:i,instance:s,sampleData:o,variables:u}=e,l=Kb(i,t),d=async()=>{const h=await i.triggerManager.createOrGetTrigger(ye.randomId(),i.triggerManager.getTriggerSchemaList()[0]),m=await i.operationManager.createOrGetOperation(ye.randomId(),i.operationManager.getOperationSchemaList()[0]);await i.addInteraction(h,m),r(w=>w+1)};async function c(h){await i.removeInteraction(h.id),r(m=>m+1)}const{data:f=0,loading:g}=Z.useRequest(async()=>{try{return(await i.triggerManager.getTriggerSchemaList()).length}catch{return 0}});return p(a.Stack,{children:[n(a.LoadingOverlay,{visible:g}),f===0&&n(a.Alert,{icon:n(k.AlertCircle,{size:16}),title:"Unavailable",color:"gray",children:"This visualization does not have available interactions to choose from"}),l.map(h=>n(Jb,{onRemove:c,instance:s,sampleData:o,variables:u,item:h,manager:e.interactionManager},h.id)),n(a.Button,{style:{width:"fit-content"},onClick:()=>d(),disabled:f===0,children:"Add interaction"})]})},ey=()=>{const{panel:e,data:t}=xe(),r=e.viz,{vizManager:i}=b.useContext(Ne),s=e.json,o=Z.useCreation(()=>i.getOrCreateInstance(s),[i,s]),u=Z.useCreation(()=>new nr(o,i.resolveComponent(r.type),Kt),[o,r.type]);return b.useEffect(()=>o.instanceData.watchItem(null,v.throttle(l=>{e.viz.setConf(l)},100,{leading:!1,trailing:!0})),[o]),{instance:o,vizManager:i,interactionManager:u,sampleData:t,variables:[]}},ty=()=>{const e=ey();return n(Hb,{...e})};var Pa=(e=>(e.migrated="migrated",e.nothingToMigrate="nothingToMigrate",e.checkFailed="checkFailed",e.migrationFailed="migrationFailed",e))(Pa||{}),Jt=(e=>(e.notStarted="notStarted",e.inProgress="inProgress",e.done="done",e))(Jt||{});class ny{constructor(t){O(this,"vizInstance");O(this,"operationManager");O(this,"triggerManager");O(this,"vizManager");O(this,"runningMigration");O(this,"panelModel");O(this,"status","notStarted");this.panelModel=t.getRequired(me.instanceScope.panelModel),this.vizInstance=t.getRequired(me.instanceScope.vizInstance),this.operationManager=t.getRequired(me.instanceScope.operationManager),this.triggerManager=t.getRequired(me.instanceScope.triggerManager),this.vizManager=t.getRequired(me.vizManager)}async createMigrationTask(){const t=[];try{await this.instanceNeedMigration()&&t.push(()=>this.runInstanceMigration()),await this.interactionNeedMigration()&&t.push(()=>this.runInteractionMigration())}catch(r){return console.warn("check migration failed",r),"checkFailed"}if(t.length===0)return"nothingToMigrate";try{return await Promise.all(t.map(r=>r())),"migrated"}catch(r){return console.warn("migration failed",r),"migrationFailed"}}async runMigration(){return this.runningMigration||(this.status="inProgress",this.runningMigration=this.createMigrationTask().then(t=>(this.status="done",t))),this.runningMigration}async runInteractionMigration(){await this.operationManager.runMigration(),await this.triggerManager.runMigration()}async runInstanceMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),r={configData:this.vizInstance.instanceData,panelModel:this.panelModel};await t.migrator.migrate(r)}async instanceNeedMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),r={configData:this.vizInstance.instanceData};return t.migrator.needMigration(r)}async interactionNeedMigration(){return await this.operationManager.needMigration()||await this.triggerManager.needMigration()}}function Va(e){const{panel:t}=xe();return b.useCallback(r=>{const i=r.getRequired(me.vizManager),s=i.resolveComponent(e.viz.type);return r.createScoped().provideFactory(me.instanceScope.vizInstance,()=>i.getOrCreateInstance(e)).provideFactory(me.instanceScope.interactionManager,o=>{const u=o.getRequired(me.instanceScope.vizInstance);return new nr(u,s,Kt)}).provideFactory(me.instanceScope.operationManager,o=>o.getRequired(me.instanceScope.interactionManager).operationManager).provideFactory(me.instanceScope.triggerManager,o=>o.getRequired(me.instanceScope.interactionManager).triggerManager).provideValue(me.instanceScope.panelModel,t).provideFactory(me.instanceScope.migrator,o=>new ny(o))},[e.viz.type,e.viz.conf])}function Ba(e){const[t,r]=b.useState(!1),i=Di().getRequired(me.instanceScope.migrator);return Z.useAsyncEffect(async()=>{const s=i.status===Jt.notStarted;r(i.status===Jt.done),i.status===Jt.notStarted&&i.runMigration().then(o=>{o===Pa.migrated&&s&&(e==null||e())}).finally(()=>{r(!0)})},[i]),t}function Na(e,t){const r=Di().getRequired(me.instanceScope.vizInstance);return b.useEffect(()=>(r.instanceData.setItem(null,t.viz.conf),r.instanceData.watchItem(null,i=>{e(i)})),[e,t.viz.type]),r}function ry({setVizConf:e,...t}){const{panel:r}=t,i=Na(e,r),s=Ba(()=>{Ot.showNotification({title:`${r.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return Z.useAsyncEffect(async()=>{await i.instanceData.setItem(null,r.viz.conf)},[i,r.viz.type]),s?n(Bo,{...t}):n(a.Text,{children:"Checking update..."})}function iy(e){const{panel:t,setVizConf:r}=e;Na(r,t);const{inEditMode:i}=b.useContext(Xe);return Ba(()=>{i&&Ot.showNotification({title:`${t.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?n(Vo,{...e}):n(a.Text,{children:"Checking update"})}const Hw="";function ay(e,t){const{vizManager:r}=b.useContext(Ne),{panel:{viz:i,title:s,id:o,description:u,queryID:l,variables:d}}=xe(),c={title:s,id:o,description:u,queryID:l,viz:i,layout:t},f=Va(c);try{return r.resolveComponent(i.type),n(Bt,{configure:f,children:n(iy,{setVizConf:i.setConf,panel:c,data:e,variables:d,vizManager:r})})}catch(g){return console.info(v.get(g,"message")),null}}const sy=["richText","button"],Ga=T.observer(function({height:t,viz:r,data:i,loading:s,error:o,query:u}){const{ref:l,width:d,height:c}=ye.useElementSize(),f=ay(i,{w:d,h:c});if(sy.includes(r.type))return n("div",{className:"viz-root",style:{height:t},ref:l,children:n(Ae,{children:f})});if(s)return n("div",{className:"viz-root",style:{height:t,position:"relative"},ref:l,children:n(a.LoadingOverlay,{visible:s,exitTransitionDuration:0})});const h=!!o,m=!h&&!!(u!=null&&u.stateMessage),w=!h&&!m;return p("div",{className:"viz-root",style:{height:t},ref:l,children:[h&&n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:o}),m&&n(a.Text,{color:"gray",align:"center",children:u.stateMessage}),w&&n(Ae,{children:f})]})});function oy(e){return!["richText","button"].includes(e)}const ly={border:"1px solid #e9ecef"},qa={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function uy(e,t,r){return e.style.border.enabled?ly:r||t?qa:{border:"1px dashed transparent"}}const Ht=T.observer(function({panel:t,view:r}){const i=N(),{inEditMode:s}=b.useContext(Xe),{data:o,state:u,error:l}=i.getDataStuffByID(t.queryID),d=i.queries.findByID(t.queryID),c=oy(t.viz.type),f=c&&u==="loading",g=t.title?"calc(100% - 25px - 5px)":"100%",h=uy(t,c,s),m=c||s;return n(yn,{value:{panel:t,data:o,loading:f},children:p(a.Box,{className:"panel-root",p:5,pt:0,sx:{...h},children:[n(a.Box,{sx:{position:"absolute",left:0,top:0,height:28,zIndex:310},children:n(Oi,{})}),m&&n(Eo,{view:r}),n(Lo,{}),n(Ga,{viz:t.viz,data:o,loading:f,error:l,height:g,query:d})]})})}),e1="",dy=b.forwardRef(({h:e},t)=>n(a.ActionIcon,{ref:t,className:"react-grid-customDragHandle",sx:{userSelect:"none",cursor:"grab",position:"absolute",top:5,right:e>38?5:20,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",children:n(k.ArrowsMove,{size:16})})),cy=b.forwardRef(({handleAxis:e,...t},r)=>n(a.ActionIcon,{ref:r,className:"react-grid-customResizeHandle",sx:{userSelect:"none",cursor:"nwse-resize",position:"absolute",bottom:0,right:0,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",...t,children:n(k.ChevronDownRight,{size:16})})),py=Lt.WidthProvider(Lt),hy=T.observer(({view:e,className:t="layout"})=>{const r=N(),{panels:i,layouts:s}=r.panels.panelsByIDs(e.panelIDs),o=b.useCallback(l=>{l.forEach(({i:d,...c})=>{const f=r.panels.findByID(d);f&&f.layout.set(c)})},[r]),u=(l,d,c,f)=>{c.h<30&&(c.h=30,f.h=30),c.w<4&&(c.w=4,f.w=4)};return n(py,{onLayoutChange:o,className:`dashboard-layout ${t}`,rowHeight:1,cols:36,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,layout:s,draggableHandle:".react-grid-customDragHandle",resizeHandle:n(cy,{}),onResize:u,children:i.map((l,d)=>p("div",{"data-grid":{...l.layout},className:"panel-grid-item",children:[n(dy,{h:l.layout.h}),n(Ht,{view:e,panel:l})]},l.id))})}),fy=Lt.WidthProvider(Lt),gy=T.observer(function({view:t,className:r="layout"}){const{panels:i,layouts:s}=N().panels.panelsByIDs(t.panelIDs);return n(fy,{className:`dashboard-layout ${r}`,cols:36,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:s,children:i.map(o=>n("div",{"data-grid":{...o.layout},className:"panel-grid-item",children:n(Ht,{view:t,panel:o})},o.id))})});var Fa=(e=>(e.Use="use",e.Edit="edit",e))(Fa||{}),K=(e=>(e.Division="div",e.Modal="modal",e.Tabs="tabs",e))(K||{});const my={div:"Division",tabs:"Tabs",modal:"Modal"},Wa={div:"rgba(255, 0, 0, 0.2)",modal:"rgba(0, 0, 0, 0.2)",tabs:"rgba(255, 200, 100, 0.4)"},by={div:"#ff4000",modal:"#000",tabs:"#ffad18"};var rr=(e=>(e.Select="select",e.TreeSelect="tree-select",e.MultiSelect="multi-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(rr||{});const yy=T.observer(({children:e})=>n(a.Box,{pt:10,pb:100,children:e})),vy=T.observer(({children:e,view:t})=>{const r=t.config;return n(a.Modal,{size:r.width,overflow:"inside",opened:!0,onClose:v.noop,withCloseButton:!1,title:r.custom_modal_title.value,trapFocus:!0,onDragStart:i=>{i.stopPropagation()},styles:{root:{position:"relative",height:"100%"},overlay:{position:"absolute !important"},modal:{border:"1px solid #efefef"},body:{maxHeight:"calc(100vh - 325px)"}},withinPortal:!1,transitionDuration:0,children:e})}),xy=({variant:e,orientation:t})=>{const r={tab:{},panel:{padding:"16px"}};return e==="pills"&&t==="horizontal"&&(r.tab.paddingTop="6px",r.tab.paddingBottom="6px"),t==="vertical"&&(r.tab["&.add-a-tab"]={paddingTop:"1px",paddingBottom:"1px"},r.tab["&.add-a-tab .mantine-Tabs-tabLabel"]={marginLeft:"auto",marginRight:"auto"}),r},Cy=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},wy=T.observer(({children:e,view:t})=>{const r=Oe.useModals(),i=N(),s=b.useMemo(()=>i.views.options.filter(d=>d.type===K.Division),[t.id,i.views.options]),o=t.config,u=d=>r.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{o.removeTab(d)},confirmProps:{color:"red"},zIndex:320}),l=o.tabs.length===0;return p(a.Box,{className:"preview-view-tabs",children:[p(a.Tabs,{variant:o.variant,orientation:o.orientation,defaultValue:o.tabs.length>0?o.tabs[0].id:"0",styles:xy(o),children:[p(a.Tabs.List,{grow:o.grow,children:[o.tabs.map(d=>n(a.Tabs.Tab,{value:d.id,sx:Cy(d),children:d.name??d.id},d.id)),n(a.Tabs.Tab,{onClick:o.addTab,value:"add",className:"add-a-tab",children:n(k.Plus,{size:18,color:"#228be6"})})]}),o.tabs.map((d,c)=>{const f=i.views.findByID(d.view_id);return p(a.Tabs.Panel,{value:d.id,sx:{position:"relative"},children:[p(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:200},children:[n(a.Overlay,{opacity:.8,color:"#FFF",blur:10,zIndex:100}),p(a.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[n(a.TextInput,{label:"Tab Name",value:d.name,onChange:g=>d.setName(g.currentTarget.value)}),n(a.Select,{label:"View",value:d.view_id,onChange:d.setViewID,data:s}),n(a.ColorInput,{label:"Color",value:d.color,onChange:d.setColor,disabled:o.variant!=="default"}),f&&p(a.Button,{mt:20,variant:"gradient",leftIcon:n(V.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>i.views.setIDOfVIE(f.id),children:["Swith to View: ",f.name]}),n(a.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>u(c),disabled:l,leftIcon:n(V.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),f&&n(en,{view:f})]},d.id)})]}),e]})}),_y=T.observer(({view:e,children:t})=>{switch(e.type){case K.Modal:return n(vy,{view:e,children:t});case K.Tabs:return n(wy,{view:e,children:t});case K.Division:default:return n(yy,{children:t})}}),ja=T.observer(function({view:t}){return n(gn.Provider,{value:{viewPanelInFullScreen:v.noop,inFullScreen:!1},children:n(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:n(_y,{view:t,children:p(a.Box,{sx:{position:"relative"},children:[n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n(Li,{view:t})}),n(hy,{view:t})]})})})})}),Sy={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},Ty=T.observer(function({view:t,panel:r,exitFullScreen:i}){return n(a.Modal,{opened:!0,fullScreen:!0,onClose:i,title:n(a.Button,{color:"blue",size:"xs",onClick:i,leftIcon:n(k.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:Sy,children:n(a.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:n(Ht,{view:t,panel:r})})})});function ky(e,t,r){const{panels:i}=N(),s=e.id==="Main",[o,u]=b.useState(()=>s&&i.findByID(t)?t:null),l=b.useCallback(g=>{u(g),s&&r(g)},[s,r]),d=b.useCallback(()=>{u(null),s&&r("")},[s,r]),c=o?i.findByID(o):null;return{viewPanelInFullScreen:l,exitFullScreen:d,inFullScreen:!!c,fullScreenPanel:c}}const Dy=T.observer(({children:e})=>n(a.Box,{children:e})),Iy=T.observer(({children:e,view:t})=>{const r=N(),i=t.config,s=r.views.visibleViewIDs.includes(t.id),o=()=>r.views.rmVisibleViewID(t.id);return n(a.Modal,{size:i.width,centered:!0,overflow:"inside",opened:s,onClose:o,withCloseButton:!1,title:i.custom_modal_title.value,trapFocus:!0,onDragStart:u=>{u.stopPropagation()},styles:{modal:{border:"1px solid #efefef"},body:{maxHeight:i.height,overflow:"auto"}},transitionDuration:0,children:e})}),My=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},Ay=T.observer(({children:e,view:t})=>{const r=N(),i=t.config;return p(a.Box,{className:"render-view-tabs",children:[p(a.Tabs,{variant:i.variant,orientation:i.orientation,defaultValue:i.tabs.length>0?i.tabs[0].id:"0",styles:{panel:{padding:i.orientation==="horizontal"?"16px 0px":"0"}},keepMounted:!1,children:[n(a.Tabs.List,{grow:i.grow,children:i.tabs.map(s=>n(a.Tabs.Tab,{value:s.id,sx:My(s),disabled:!s.view_id,children:s.name??s.id},s.id))}),i.tabs.map(s=>{const o=r.views.findByID(s.view_id);return o?n(a.Tabs.Panel,{value:s.id,children:n(en,{view:o})},s.id):null})]}),e]})}),$y=T.observer(({view:e,children:t})=>{switch(e.type){case K.Modal:return n(Iy,{view:e,children:t});case K.Tabs:return n(Ay,{view:e,children:t});case K.Division:default:return n(Dy,{children:t})}}),en=T.observer(function({view:t}){const{fullScreenPanelID:r,setFullScreenPanelID:i}=$i(),{viewPanelInFullScreen:s,exitFullScreen:o,inFullScreen:u,fullScreenPanel:l}=ky(t,r,i);return n(gn.Provider,{value:{viewPanelInFullScreen:s,inFullScreen:u},children:p(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:[u&&n(Ty,{view:t,panel:l,exitFullScreen:o}),n($y,{view:t,children:p(a.Box,{sx:{position:"relative"},children:[!u&&n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n(Li,{view:t})}),!u&&n(gy,{view:t})]})})]})})});function zy(e){e=e||{};const t=Object.keys(e).sort(),r=[];for(let i=0;i<t.length;i++){const s=t[i];if(s!="authentication"&&e[s])r.push(t[i]+"="+(typeof e[s]=="object"?JSON.stringify(e[s]):e[s]));else{const o=Object.keys(e[s]).sort();for(let u=0;u<o.length;u++){const l=o[u];l!="sign"&&e[s][l]&&r.push(o[u]+"="+(typeof e[s][l]=="object"?JSON.stringify(e[s][l]):e[s][l]))}}}return r.sort().join("&")}function Ey(e,t){let r=zy(e);return r+="&key="+t,_i.MD5(r).toString().toUpperCase()}const $e={baseURL:"http://localhost:31200",app_id:"",app_secret:"",getAuthentication(e){if(!this.app_id||!this.app_secret)return;const t=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:t,sign:Ey({app_id:this.app_id,nonce_str:t,...e},this.app_secret)}},getRequest(e,t){return(r,i,s={})=>{const o=window.localStorage.getItem("token"),u={"X-Requested-With":"XMLHttpRequest","Content-Type":s.string?"application/x-www-form-urlencoded":"application/json",authorization:o?`bearer ${o}`:"",...s.headers},l={baseURL:this.baseURL,method:e,url:r,params:e==="GET"?i:s.params,headers:u,signal:t};return["POST","PUT"].includes(e)&&(l.data=s.string?JSON.stringify(i):i,l.data.authentication=this.getAuthentication(l.data)),Qe(l).then(d=>d.data).catch(d=>Promise.reject(d))}}};function Ya(e){$e.baseURL!==e.apiBaseURL&&($e.baseURL=e.apiBaseURL),e.app_id&&($e.app_id=e.app_id),e.app_secret&&($e.app_secret=e.app_secret)}const Ra=y.types.model("FilterConfigModel_Checkbox",{_name:y.types.literal("checkbox"),description:y.types.optional(y.types.string,""),default_value:y.types.boolean}).views(e=>({get json(){const{_name:t,description:r,default_value:i}=e;return{_name:t,description:r,default_value:i}},get isDescriptionEmpty(){const{description:t}=e;return t===""||t==="<p></p>"}})).actions(e=>({setDefaultValue(t){e.default_value=t},setDescription(t){e.description=t}})),Ly=()=>Ra.create({_name:"checkbox",description:"",default_value:!1});var ce=(e=>(e.Postgresql="postgresql",e.MySQL="mysql",e.HTTP="http",e))(ce||{}),Ce=(e=>(e.Select="select",e.MultiSelect="multi-select",e.TreeSelect="tree-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(Ce||{});y.types.model({type:y.types.enumeration("DataSourceType",[ce.Postgresql,ce.MySQL,ce.HTTP]),key:y.types.string,sql:y.types.string});function Qa(e,t){return e.map(r=>{try{return r?j.tz(r,"UTC").format(t):null}catch{return console.log(`[date-range] failed parsing ${r}`),null}})}const Oy=y.types.model("FilterConfigModel_DateRange",{_name:y.types.literal("date-range"),required:y.types.boolean,inputFormat:y.types.enumeration("DateRangeInputFormat",["YYYY","YYYYMM","YYYYMMDD","YYYY-MM","YYYY-MM-DD"]),default_value:y.types.optional(y.types.array(y.types.union(y.types.string,y.types.null)),[null,null]),clearable:y.types.boolean,max_days:y.types.optional(y.types.number,0),allowSingleDateInRange:y.types.optional(y.types.boolean,!1)}).views(e=>({get json(){const{_name:t,max_days:r,required:i,clearable:s,inputFormat:o,default_value:u,allowSingleDateInRange:l}=e;return{_name:t,max_days:r,required:i,clearable:s,inputFormat:o,default_value:Qa(u,o),allowSingleDateInRange:l}},truthy(t){return Array.isArray(t)&&t.length===2&&t.every(r=>!!r)}})).views(e=>({getMaxDate(t){const{max_days:r}=e;if(!(!r||!t))return j(t).startOf("day").add(r,"days").toDate()},getMinDate(t){const{max_days:r}=e;if(!(!r||!t))return j(t).startOf("day").subtract(r,"days").toDate()}})).actions(e=>({setFilterValue(t){try{const r=y.getParent(e);y.getRoot(e).filters.setValueByKey(r.key,t)}catch(r){console.error(r)}}})).actions(e=>({setRequired(t){e.required=t},setClearable(t){e.clearable=t},setInputFormat(t){e.inputFormat=t},setDefaultValue(t){e.default_value.length=0,e.default_value.push(...t),e.setFilterValue(t)},setMaxDays(t){e.max_days=t,t>0&&(e.clearable=!0)},setAllowSingleDateInRange(t){e.allowSingleDateInRange=t}})),Ua=y.types.snapshotProcessor(Oy,{preProcessor({default_value:e,...t}){return{...t,default_value:e.map(r=>r===null?null:j.tz(r,"UTC").toISOString())}},postProcessor(e){const{default_value:t,...r}=e;return{...r,default_value:Qa(t,r.inputFormat)}}}),Py=()=>Ua.create({_name:"date-range",required:!1,inputFormat:"YYYY-MM-DD",clearable:!1,default_value:[null,null]}),Vy=y.types.model({label:y.types.string,value:y.types.string}).actions(e=>({setLabel(t){e.label=t},setValue(t){e.value=t}})),ir=y.types.model("FilterConfigModel_BaseSelect",{static_options:y.types.optional(y.types.array(Vy),[]),options_query_id:y.types.optional(y.types.string,""),default_selection_count:y.types.optional(y.types.number,0)}).views(e=>({get usingQuery(){return!!e.options_query_id}})).views(e=>({get options(){if(!e.usingQuery)return e.static_options;const{data:t,state:r,error:i}=y.getRoot(e).getDataStuffByID(e.options_query_id);return r==="idle"?t:[]}})).actions(e=>({addStaticOption(t){e.static_options.push(t)},removeStaticOption(t){e.static_options.splice(t,1)},setDefaultSelectionCount(t){e.default_selection_count=t},setOptionsQueryID(t){e.options_query_id=t??""}})),tn=e=>v.cloneDeepWith(e,(t,r)=>{if(r!==void 0&&t)return ae.toJS(t)}),Xa=y.types.compose("FilterConfigModel_MultiSelect",y.types.model({_name:y.types.literal("multi-select"),min_width:y.types.optional(y.types.string,""),default_value:y.types.optional(y.types.array(y.types.string),[])}),ir).views(e=>({get json(){const{_name:t,default_value:r,min_width:i,static_options:s,options_query_id:o,default_selection_count:u}=e;return tn({_name:t,min_width:i,default_value:r,static_options:s,options_query_id:o,default_selection_count:u})},get default_selection(){return e.usingQuery?e.options.slice(0,e.default_selection_count).map(t=>t.value):e.default_value}})).actions(e=>({setDefaultValue(t){e.default_value=y.cast(t)},setMinWidth(t){e.min_width=t},setDefaultSelection(){const t=y.getRoot(e).filters,r=y.getParent(e).key;t.setValueByKey(r,e.default_selection)}})).actions(e=>({afterCreate(){y.addDisposer(e,ae.reaction(()=>ae.toJS(e.default_selection),e.setDefaultSelection,{fireImmediately:!0,delay:0}))}})),By=()=>Xa.create({_name:"multi-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),Za=y.types.compose("FilterConfigModel_TreeSelect",y.types.model({_name:y.types.literal("tree-select"),min_width:y.types.optional(y.types.string,""),default_value:y.types.optional(y.types.array(y.types.string),[])}),ir).views(e=>({get json(){const{_name:t,default_value:r,min_width:i,static_options:s,options_query_id:o,default_selection_count:u}=e;return{_name:t,min_width:i,default_value:r,static_options:s,options_query_id:o,default_selection_count:u}}})).actions(e=>({setDefaultValue(t){e.default_value=y.cast(t)},setMinWidth(t){e.min_width=t}})),Ny=()=>Za.create({_name:"tree-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),Ka=y.types.compose("FilterConfigModel_Select",y.types.model({_name:y.types.literal("select"),default_value:y.types.string,required:y.types.boolean,width:y.types.optional(y.types.string,"")}),ir).views(e=>({get json(){const{_name:t,default_value:r,required:i,width:s,static_options:o,options_query_id:u,default_selection_count:l}=e;return tn({_name:t,width:s,required:i,default_value:r,static_options:o,options_query_id:u,default_selection_count:l})},truthy(t){return!!t}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t},setWidth(t){e.width=t}})),Gy=()=>Ka.create({_name:"select",required:!1,default_value:"",static_options:[],options_query_id:"",default_selection_count:0}),Ja=y.types.model("FilterConfigModel_TextInput",{_name:y.types.literal("text-input"),required:y.types.boolean,default_value:y.types.string}).views(e=>({get json(){const{_name:t,required:r,default_value:i}=e;return{_name:t,required:r,default_value:i}},truthy(t){return typeof t!="string"?!1:!!t.trim()}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t}})),Ha=()=>Ja.create({_name:"text-input",required:!1,default_value:""}),ar=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),auto_submit:y.types.optional(y.types.boolean,!1),type:y.types.enumeration("DashboardFilterType",[Ce.Select,Ce.MultiSelect,Ce.TreeSelect,Ce.TextInput,Ce.Checkbox,Ce.DateRange]),config:y.types.union(Ka,Xa,Za,Ja,Ra,Ua)}).views(e=>({get plainDefaultValue(){const t=e.config.default_value;return Array.isArray(t)?[...t]:t},get usingDefaultValue(){return e.type!==Ce.TreeSelect},get auto_submit_supported(){return[Ce.Select,Ce.Checkbox,Ce.DateRange].includes(e.type)}})).views(e=>({get json(){const{id:t,key:r,label:i,order:s,visibleInViewsIDs:o,auto_submit:u,type:l,config:d}=e;return{id:t,key:r,type:l,label:i,order:s,config:d.json,auto_submit:u,visibleInViewsIDs:ae.toJS(o)}},get should_auto_submit(){return e.auto_submit_supported&&e.auto_submit},requiredAndPass(t){return v.get(e.config,"required",!1)?v.get(e.config,"truthy",()=>!0)(t):!1}})).actions(e=>({setKey(t){e.key=t},setLabel(t){e.label=t},setOrder(t){e.order=t},setType(t){switch(t){case Ce.Select:e.config=Gy();break;case Ce.MultiSelect:e.config=By();break;case Ce.TreeSelect:e.config=Ny();break;case Ce.TextInput:e.config=Ha();break;case Ce.Checkbox:e.config=Ly();break;case Ce.DateRange:e.config=Py();break}e.type=t},setVisibleInViewsIDs(t){e.visibleInViewsIDs.length=0,e.visibleInViewsIDs.push(...t)},setAutoSubmit(t){e.auto_submit=e.auto_submit_supported&&t}}));function es(e,t){if(e===void 0)return e;if(t._name==="date-range")try{const[...r]=e;return r.map(i=>i===null?i:j.tz(i,"UTC").format(t.inputFormat)??i)}catch(r){return console.error(r),e}return e}function ts(e){return e.reduce((t,r)=>(t[r.key]=es(r.config.default_value,r.config),t),{})}function qy(e,t,r){y.addDisposer(e,y.addMiddleware(e,(i,s)=>{s(i,()=>{y.getType(i.context)===t&&i.type==="action"&&r(i.name,i.context)})}))}const ns=y.types.model("FiltersModel",{current:y.types.optional(y.types.array(ar),[]),values:y.types.optional(y.types.frozen(),{}),previewValues:y.types.optional(y.types.frozen(),{})}).views(e=>({get json(){return e.current.map(t=>t.json)},get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},get inOrder(){return v.sortBy(e.current,"order")},get options(){return e.current.map(t=>({label:t.label??t.id,value:t.id,_type:"filter"}))},get empty(){return e.current.length===0},visibleInView(t){return v.sortBy(e.current.filter(r=>r.visibleInViewsIDs.includes(t)),"order")},get firstFilterValueKey(){return Object.keys(e.values)[0]??""},get keyLabelMap(){return e.current.reduce((t,r)=>(t[r.key]=r.label,t),{})}})).actions(e=>({replace(t){e.current=y.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const r=e.current.findIndex(i=>i.id===t);r>=0&&e.current.splice(r,1)},setValues(t){e.values=t},setValueByKey(t,r){e.values={...e.values,[t]:r}},getValueByKey(t){return e.values[t]},refreshValues(){console.log("refreshing values"),e.values=ts(e.current)},updatePreviewValues(t){e.previewValues=t}})).actions(e=>{function t(){qy(e.current,ar,(r,i)=>{if(r==="setType"){const s=es(i.config.default_value,i.config);e.setValueByKey(i.key,s),e.updatePreviewValues({...e.previewValues,[i.key]:s})}})}return{afterCreate(){t()}}});function rs(e){return{current:e,values:ts(e)}}const is="\uFEFF";function Fy(e,t){const r=new Blob([is+t],{type:"text/csv"});pn.saveAs(r,`${e}.csv`)}function Wy(e,t){const r=new Blob([t],{type:"application/json"});pn.saveAs(r,`${e}.json`)}function jy(e){const t=new ao;e.forEach(({id:r,data:i})=>{t.file(`${r}.csv`,as(i))}),t.generateAsync({type:"blob"}).then(r=>{pn.saveAs(r,"dashboard_data.zip")})}function as(e){if(!Array.isArray(e)||e.length===0)return"";const t=[],r=Object.keys(e[0]);return t.push(r.join(",")),e.forEach(i=>{const s=Object.values(i).join(",");t.push(s)}),is+t.join(`
348
+ `)}const pt={CryptoJS:_i,d3Array:lo,dayjs:j,lodash:v,numbro:se,mathjs:Vt,faker:so.faker},Yy=[{name:"CryptoJS",url:"https://github.com/brix/crypto-js",version:"4.1.1"},{name:"d3Array",url:"https://github.com/d3/d3-array",version:"3.2.0"},{name:"dayjs",url:"https://day.js.org/",version:"1.11.6"},{name:"lodash",url:"https://lodash.com/docs/4.17.15",version:"4.17.21"},{name:"mathjs",url:"https://mathjs.org/",version:"11.7.0"},{name:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"faker",url:"https://fakerjs.dev/",version:"7.6.0"}],Ry=e=>`
269
349
  <tr>
270
350
  <td><code>${e.name}</code></td>
271
351
  <td>
@@ -277,7 +357,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
277
357
  >
278
358
  </td>
279
359
  </tr>
280
- `,ov=`
360
+ `,Qy=`
281
361
  <p>
282
362
  Parameter <code>utils</code> is <code>functionUtils</code>, which contains:
283
363
  </p>
@@ -289,10 +369,10 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
289
369
  </tr>
290
370
  </thead>
291
371
  <tbody>
292
- ${av.map(sv).join("")}
372
+ ${Yy.map(Ry).join("")}
293
373
  </tbody>
294
374
  </table>
295
- `;function lv(e,t){return new Function(`return ${e}`)()(t,ct)}function uv(e,t,r){return{context:{...t,...e},filters:r}}function dv(e,t,r,i){const s=uv(t,r,i);return lv(e,s)}function cv(e,t){try{return new Function(`return ${e.config.processing.pre}`)()(t,ct)}catch(r){return console.error(r),t}}function pv(e,t){try{return new Function(`return ${e.config.processing.post}`)()(t,ct)}catch(r){return console.error(r),t}}function hv(e,t){try{return new Function(`return ${e}`)()(t,ct)}catch(r){return console.error(r),t}}function fv(e,t,r,i){const s=ar(t,r,[],i),o=Object.keys(s),u=Object.values(s);try{return new Function(...o,`return \`${e}\`;`)(...u)}catch(l){return console.info(l),l.message}}function ir(e,t={}){const r=Object.keys(t),i=Object.values(t);try{return new Function(...r,`return \`${e}\`;`)(...i)}catch(s){throw r.length===0&&e.includes("$")?new Error("[formatSQL] insufficient params"):s}}function ar(e,t,r,i){const s={...t,...e},o={context:s,filters:i},u=r.reduce((l,d)=>(l[d.key]=ir(d.value,o),l),{});return y.merge({},{context:s,filters:i,sql_snippets:u})}function es(e,t,r,i,s){try{const o=ar(t,r,i,s);return ir(e,o)}catch(o){return console.error(o),o.message}}function gv({sql:e,pre_process:t}){if(!t.trim())return e;try{return new Function(`return ${t}`)()({sql:e},ct)}catch(r){return console.error(r),e}}function mv(e,t){if(!e.trim())return t;try{return new Function(`return ${e}`)()(t,ct)}catch(r){return console.error(r),t}}async function bv({context:e,mock_context:t,sqlSnippets:r,query:i,filterValues:s},o){if(!i.sql)return[];const{type:u,key:l,sql:d,pre_process:c,post_process:f}=i,g=ar(e,t,r,s),h=ir(d,g),b=gv({sql:h,pre_process:c});let w=await ze.getRequest("POST",o)("/query",{type:u,key:l,query:b},{});return w=mv(f,w),w}async function vv({context:e,mock_context:t,query:r,filterValues:i,datasource:s},o){const{type:u,key:l,name:d,pre_process:c,post_process:f}=r;let g=dv(c,e,t,i);console.groupCollapsed(`Request config for: ${d}`),console.log(g),console.groupEnd(),g=cv(s,g);const h=JSON.stringify(g),b=await ze.getRequest("POST",o)("/query",{type:u,key:l,query:h},{});let w=pv(s,b);return w=hv(f,w),w}async function sr(){try{return(await ze.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}})).data}catch(e){return console.error(e),[]}}const yv=v.types.model("QueryModel",{id:v.types.string,name:v.types.string,type:v.types.enumeration("DataSourceType",[ce.Postgresql,ce.MySQL,ce.HTTP]),key:v.types.string,sql:v.types.string,pre_process:v.types.optional(v.types.string,""),post_process:v.types.optional(v.types.string,""),run_by:v.types.optional(v.types.array(v.types.string),[])}).views(e=>({get valid(){return e.id&&e.type&&e.key&&e.name?e.type===ce.HTTP?!!e.pre_process:!!e.sql:!1},get json(){const{id:t,name:r,type:i,key:s,sql:o,run_by:u,pre_process:l,post_process:d}=e;return tn({id:t,key:s,sql:o,name:r,type:i,run_by:u,pre_process:l,post_process:d})},get conditionOptions(){if(!v.isAlive(e))return[];const{context:t,mock_context:r,filterValues:i}=v.getRoot(e).payloadForSQL,s=Object.keys({...r,...t}).map(l=>`context.${l}`),o=Object.keys(i).map(l=>`filters.${l}`);return[...s,...o].map(l=>({label:l.split(".")[1],value:l,group:y.capitalize(l.split(".")[0])}))},get unmetRunByConditions(){if(!v.isAlive(e))return[];const{run_by:t}=e;if(t.length===0)return[];const{context:r,mock_context:i,filterValues:s}=v.getRoot(e).payloadForSQL,o={context:{...i,...r},filters:s};return t.filter(u=>{const l=y.get(o,u);return Array.isArray(l)?l.length===0:typeof l=="number"?Number.isNaN(l):!l})}})).views(e=>({get runByConditionsMet(){return e.unmetRunByConditions.length===0},get conditionNames(){if(e.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:t}=v.getRoot(e).filters,r=e.unmetRunByConditions.filter(s=>s.startsWith("context.")).map(s=>s.split("context.")[0]),i=e.unmetRunByConditions.filter(s=>s.startsWith("filters.")).map(s=>y.get({filters:t},s)).filter(s=>!!s);return{context:r,filters:i}}})).actions(e=>({setName(t){e.name=t},setKey(t){e.key=t},setType(t){e.type=t},setSQL(t){e.sql=t},setRunBy(t){e.run_by.length=0,e.run_by.push(...t)},setPreProcess(t){e.pre_process=t},setPostProcess(t){e.post_process=t}})),ts=v.types.compose("QueryModel",yv,v.types.model({state:v.types.optional(v.types.enumeration(["idle","loading","error"]),"idle"),data:v.types.optional(v.types.array(v.types.frozen()),[]),error:v.types.frozen()})).views(e=>({get formattedSQL(){const{context:t,mock_context:r,sqlSnippets:i,filterValues:s}=v.getRoot(e).payloadForSQL;return es(e.sql,t,r,i,s)},get typedAsSQL(){return[ce.Postgresql,ce.MySQL].includes(e.type)},get typedAsHTTP(){return[ce.HTTP].includes(e.type)},get datasource(){const{key:t,type:r}=e;return v.getRoot(e).datasources.find({type:r,key:t})}})).views(e=>({get stateMessage(){if(e.state!=="idle")return"";if(!e.runByConditionsMet){const{context:t,filters:r}=e.conditionNames;if(t.length===0&&r.length===0)return"Waiting";const i=[];return t.length>0&&i.push(`context: ${t.join(", ")}`),r.length>0&&i.push(`filter${r.length>1?"s":""}: ${r.join(", ")}`),i.length===2&&i.splice(1,0,"and"),i.unshift("Waiting for"),i.join(" ")}return e.data.length>0?"":"Empty Data"}})).volatile(()=>({controller:new AbortController})).actions(e=>({runSQL:v.flow(function*(){var t;if(e.valid&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet)){e.controller=new AbortController,e.state="loading";try{const{context:r,mock_context:i,sqlSnippets:s,filterValues:o}=v.getRoot(e).payloadForSQL;e.data=yield*v.toGenerator(bv({context:r,mock_context:i,sqlSnippets:s,title:e.name,query:e.json,filterValues:o},e.controller.signal)),e.state="idle",e.error=null}catch(r){if(!Qe.isCancel(r)){e.data.length=0;const i=y.get(r,"message","unkown error");e.error=y.get(r,"response.data.detail.message",i),e.state="error"}}}}),runHTTP:v.flow(function*(){var t;if(console.log("runHTTP, ",e.datasource),!(!e.valid||!e.datasource)&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet)){e.controller=new AbortController,e.state="loading";try{const{context:r,mock_context:i,filterValues:s}=v.getRoot(e).payloadForSQL;e.data=yield*v.toGenerator(vv({context:r,mock_context:i,query:e.json,filterValues:s,datasource:e.datasource},e.controller.signal)),e.state="idle",e.error=null}catch(r){if(console.error(r),!Qe.isCancel(r)){e.data.length=0;const i=y.get(r,"message","unkown error");e.error=y.get(r,"response.data.detail.message",i),e.state="error"}}}})})).actions(e=>({fetchData:e.typedAsHTTP?e.runHTTP:e.runSQL,beforeDestroy(){var t;(t=e.controller)==null||t.abort()}})).actions(e=>({afterCreate(){v.addDisposer(e,ae.reaction(()=>{var t,r;return e.typedAsHTTP?`${e.id}--${e.key}--${e.pre_process}--${e.post_process}--${(t=e.datasource)==null?void 0:t.id}`:`${e.id}--${e.key}--${e.formattedSQL}--${e.pre_process}--${e.post_process}--${(r=e.datasource)==null?void 0:r.id}`},e.fetchData,{fireImmediately:!0,delay:0}))}})),ns=v.types.model("QueriesModel",{current:v.types.optional(v.types.array(ts),[])}).views(e=>({get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},get options(){const t=e.current.map(r=>({value:r.id,label:r.name,_type:"query"}));return y.sortBy(t,r=>r.label.toLowerCase())}})).views(e=>({get json(){return e.current.filter(t=>t.id).map(t=>t.json)}})).actions(e=>({replace(t){e.current=v.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},replaceByIndex(t,r){e.current.splice(t,1,r)},downloadAllData(){const t=e.current.map(({name:r,data:i})=>({id:r,data:i.toJSON()}));iv(t)},downloadDataByQueryID(t){const r=e.findByID(t);if(!r){console.log("[downloadDataByQueryID] query not found");return}const{name:i,data:s}=r,o=Ha(s);nv(i,o)},refetchDataByQueryID(t){const r=e.findByID(t);if(!r){console.error(new Error(`[downloadDataByQueryID] query by ID[${t}] not found`));return}return r.fetchData()},removeQuery(t){const r=e.current.find(i=>i.id===t);r&&(v.detach(r),e.current.remove(r))}})),rs=v.types.model("SQLSnippetModel",{key:v.types.string,value:v.types.string}).views(e=>({get json(){const{key:t,value:r}=e;return{key:t,value:r}},isADuplicatedKey(t){return!t||t===e.key?!1:!!v.getParent(e,2).findByKey(t)}})).actions(e=>({setKey(t){e.key=t},setValue(t){e.value=t}})),is=v.types.model("SQLSnippetsModel",{current:v.types.optional(v.types.array(rs),[])}).views(e=>({get json(){return e.current.map(t=>t.json)},get options(){const t=e.current.map(r=>({label:r.key,value:r.key,_type:"sql_snippet"}));return y.sortBy(t,r=>r.label.toLowerCase())},get record(){return e.current.reduce((t,r)=>(t[r.key]=r.value,t),{})},get firstKey(){if(e.current.length!==0)return e.current[0].key},findByKey(t){return e.current.find(r=>r.key===t)}})).actions(e=>({replace(t){e.current=v.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByKey(t){const r=e.current.findIndex(i=>i.key===t);r>=0&&e.current.splice(r,1)},replaceByIndex(t,r){e.current.splice(t,1,r)}})),as=v.types.model("ContextModel",{current:v.types.optional(v.types.frozen(),{})}).views(e=>({get keys(){return Object.keys(e.current)},get entries(){return Object.entries(e.current)}})).actions(e=>({replace(t){e.current=t},get(t){return e.current[t]},set(t,r){e.current[t]=r}})),xv=v.types.model({data:v.types.optional(v.types.frozen(),[]),state:v.types.optional(v.types.enumeration(["idle","loading","error"]),"idle"),error:v.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get sql(){const t=v.getParent(e,1),{type:r,table_name:i,table_schema:s}=t;if(r===ce.MySQL)return`
375
+ `;function Uy(e,t){return new Function(`return ${e}`)()(t,pt)}function Xy(e,t,r){return{context:{...t,...e},filters:r}}function Zy(e,t,r,i){const s=Xy(t,r,i);return Uy(e,s)}function Ky(e,t){try{return new Function(`return ${e.config.processing.pre}`)()(t,pt)}catch(r){return console.error(r),t}}function Jy(e,t){try{return new Function(`return ${e.config.processing.post}`)()(t,pt)}catch(r){return console.error(r),t}}function Hy(e,t){try{return new Function(`return ${e}`)()(t,pt)}catch(r){return console.error(r),t}}function ev(e,t,r,i){const s=or(t,r,[],i),o=Object.keys(s),u=Object.values(s);try{return new Function(...o,`return \`${e}\`;`)(...u)}catch(l){return console.info(l),l.message}}function sr(e,t={}){const r=Object.keys(t),i=Object.values(t);try{return new Function(...r,`return \`${e}\`;`)(...i)}catch(s){throw r.length===0&&e.includes("$")?new Error("[formatSQL] insufficient params"):s}}function or(e,t,r,i){const s={...t,...e},o={context:s,filters:i},u=r.reduce((l,d)=>(l[d.key]=sr(d.value,o),l),{});return v.merge({},{context:s,filters:i,sql_snippets:u})}function ss(e,t,r,i,s){try{const o=or(t,r,i,s);return sr(e,o)}catch(o){return console.error(o),o.message}}function tv({sql:e,pre_process:t}){if(!t.trim())return e;try{return new Function(`return ${t}`)()({sql:e},pt)}catch(r){return console.error(r),e}}function nv(e,t){if(!e.trim())return t;try{return new Function(`return ${e}`)()(t,pt)}catch(r){return console.error(r),t}}async function rv({context:e,mock_context:t,sqlSnippets:r,query:i,filterValues:s},o){if(!i.sql)return[];const{type:u,key:l,sql:d,pre_process:c,post_process:f}=i,g=or(e,t,r,s),h=sr(d,g),m=tv({sql:h,pre_process:c});let w=await $e.getRequest("POST",o)("/query",{type:u,key:l,query:m},{});return w=nv(f,w),w}async function iv({context:e,mock_context:t,query:r,filterValues:i,datasource:s},o){const{type:u,key:l,name:d,pre_process:c,post_process:f}=r;let g=Zy(c,e,t,i);console.groupCollapsed(`Request config for: ${d}`),console.log(g),console.groupEnd(),g=Ky(s,g);const h=JSON.stringify(g),m=await $e.getRequest("POST",o)("/query",{type:u,key:l,query:h},{});let w=Jy(s,m);return w=Hy(f,w),w}async function lr(){try{return(await $e.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}})).data}catch(e){return console.error(e),[]}}const av=y.types.model("QueryModel",{id:y.types.string,name:y.types.string,type:y.types.enumeration("DataSourceType",[ce.Postgresql,ce.MySQL,ce.HTTP]),key:y.types.string,sql:y.types.string,pre_process:y.types.optional(y.types.string,""),post_process:y.types.optional(y.types.string,""),run_by:y.types.optional(y.types.array(y.types.string),[])}).views(e=>({get valid(){return e.id&&e.type&&e.key&&e.name?e.type===ce.HTTP?!!e.pre_process:!!e.sql:!1},get json(){const{id:t,name:r,type:i,key:s,sql:o,run_by:u,pre_process:l,post_process:d}=e;return tn({id:t,key:s,sql:o,name:r,type:i,run_by:u,pre_process:l,post_process:d})},get conditionOptions(){if(!y.isAlive(e))return[];const{context:t,mock_context:r,filterValues:i}=y.getRoot(e).payloadForSQL,s=Object.keys({...r,...t}).map(l=>`context.${l}`),o=Object.keys(i).map(l=>`filters.${l}`);return[...s,...o].map(l=>({label:l.split(".")[1],value:l,group:v.capitalize(l.split(".")[0])}))},get unmetRunByConditions(){if(!y.isAlive(e))return[];const{run_by:t}=e;if(t.length===0)return[];const{context:r,mock_context:i,filterValues:s}=y.getRoot(e).payloadForSQL,o={context:{...i,...r},filters:s};return t.filter(u=>{const l=v.get(o,u);return Array.isArray(l)?l.length===0:typeof l=="number"?Number.isNaN(l):!l})}})).views(e=>({get runByConditionsMet(){return e.unmetRunByConditions.length===0},get conditionNames(){if(e.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:t}=y.getRoot(e).filters,r=e.unmetRunByConditions.filter(s=>s.startsWith("context.")).map(s=>s.split("context.")[0]),i=e.unmetRunByConditions.filter(s=>s.startsWith("filters.")).map(s=>v.get({filters:t},s)).filter(s=>!!s);return{context:r,filters:i}}})).actions(e=>({setName(t){e.name=t},setKey(t){e.key=t},setType(t){e.type=t},setSQL(t){e.sql=t},setRunBy(t){e.run_by.length=0,e.run_by.push(...t)},setPreProcess(t){e.pre_process=t},setPostProcess(t){e.post_process=t}})),os=y.types.compose("QueryModel",av,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(e=>({get formattedSQL(){const{context:t,mock_context:r,sqlSnippets:i,filterValues:s}=y.getRoot(e).payloadForSQL;return ss(e.sql,t,r,i,s)},get typedAsSQL(){return[ce.Postgresql,ce.MySQL].includes(e.type)},get typedAsHTTP(){return[ce.HTTP].includes(e.type)},get datasource(){const{key:t,type:r}=e;return y.getRoot(e).datasources.find({type:r,key:t})}})).views(e=>({get stateMessage(){if(e.state!=="idle")return"";if(!e.runByConditionsMet){const{context:t,filters:r}=e.conditionNames;if(t.length===0&&r.length===0)return"Waiting";const i=[];return t.length>0&&i.push(`context: ${t.join(", ")}`),r.length>0&&i.push(`filter${r.length>1?"s":""}: ${r.join(", ")}`),i.length===2&&i.splice(1,0,"and"),i.unshift("Waiting for"),i.join(" ")}return e.data.length>0?"":"Empty Data"}})).volatile(()=>({controller:new AbortController})).actions(e=>({runSQL:y.flow(function*(){var t;if(e.valid&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet)){e.controller=new AbortController,e.state="loading";try{const{context:r,mock_context:i,sqlSnippets:s,filterValues:o}=y.getRoot(e).payloadForSQL;e.data=yield*y.toGenerator(rv({context:r,mock_context:i,sqlSnippets:s,title:e.name,query:e.json,filterValues:o},e.controller.signal)),e.state="idle",e.error=null}catch(r){if(!Qe.isCancel(r)){e.data.length=0;const i=v.get(r,"message","unkown error");e.error=v.get(r,"response.data.detail.message",i),e.state="error"}}}}),runHTTP:y.flow(function*(){var t;if(console.log("runHTTP, ",e.datasource),!(!e.valid||!e.datasource)&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet)){e.controller=new AbortController,e.state="loading";try{const{context:r,mock_context:i,filterValues:s}=y.getRoot(e).payloadForSQL;e.data=yield*y.toGenerator(iv({context:r,mock_context:i,query:e.json,filterValues:s,datasource:e.datasource},e.controller.signal)),e.state="idle",e.error=null}catch(r){if(console.error(r),!Qe.isCancel(r)){e.data.length=0;const i=v.get(r,"message","unkown error");e.error=v.get(r,"response.data.detail.message",i),e.state="error"}}}})})).actions(e=>({fetchData:e.typedAsHTTP?e.runHTTP:e.runSQL,beforeDestroy(){var t;(t=e.controller)==null||t.abort()}})).actions(e=>({afterCreate(){y.addDisposer(e,ae.reaction(()=>{var t,r;return e.typedAsHTTP?`${e.id}--${e.key}--${e.pre_process}--${e.post_process}--${(t=e.datasource)==null?void 0:t.id}`:`${e.id}--${e.key}--${e.formattedSQL}--${e.pre_process}--${e.post_process}--${(r=e.datasource)==null?void 0:r.id}`},e.fetchData,{fireImmediately:!0,delay:0}))}})),ls=y.types.model("QueriesModel",{current:y.types.optional(y.types.array(os),[])}).views(e=>({get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},get options(){const t=e.current.map(r=>({value:r.id,label:r.name,_type:"query"}));return v.sortBy(t,r=>r.label.toLowerCase())}})).views(e=>({get json(){return e.current.filter(t=>t.id).map(t=>t.json)}})).actions(e=>({replace(t){e.current=y.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},replaceByIndex(t,r){e.current.splice(t,1,r)},downloadAllData(){const t=e.current.map(({name:r,data:i})=>({id:r,data:i.toJSON()}));jy(t)},downloadDataByQueryID(t){const r=e.findByID(t);if(!r){console.log("[downloadDataByQueryID] query not found");return}const{name:i,data:s}=r,o=as(s);Fy(i,o)},refetchDataByQueryID(t){const r=e.findByID(t);if(!r){console.error(new Error(`[downloadDataByQueryID] query by ID[${t}] not found`));return}return r.fetchData()},removeQuery(t){const r=e.current.find(i=>i.id===t);r&&(y.detach(r),e.current.remove(r))}})),us=y.types.model("SQLSnippetModel",{key:y.types.string,value:y.types.string}).views(e=>({get json(){const{key:t,value:r}=e;return{key:t,value:r}},isADuplicatedKey(t){return!t||t===e.key?!1:!!y.getParent(e,2).findByKey(t)}})).actions(e=>({setKey(t){e.key=t},setValue(t){e.value=t}})),ds=y.types.model("SQLSnippetsModel",{current:y.types.optional(y.types.array(us),[])}).views(e=>({get json(){return e.current.map(t=>t.json)},get options(){const t=e.current.map(r=>({label:r.key,value:r.key,_type:"sql_snippet"}));return v.sortBy(t,r=>r.label.toLowerCase())},get record(){return e.current.reduce((t,r)=>(t[r.key]=r.value,t),{})},get firstKey(){if(e.current.length!==0)return e.current[0].key},findByKey(t){return e.current.find(r=>r.key===t)}})).actions(e=>({replace(t){e.current=y.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByKey(t){const r=e.current.findIndex(i=>i.key===t);r>=0&&e.current.splice(r,1)},replaceByIndex(t,r){e.current.splice(t,1,r)}})),cs=y.types.model("ContextModel",{current:y.types.optional(y.types.frozen(),{})}).views(e=>({get keys(){return Object.keys(e.current)},get entries(){return Object.entries(e.current)}})).actions(e=>({replace(t){e.current=t},get(t){return e.current[t]},set(t,r){e.current[t]=r}})),sv=y.types.model({data:y.types.optional(y.types.frozen(),[]),state:y.types.optional(y.types.enumeration(["idle","loading","error"]),"idle"),error:y.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get sql(){const t=y.getParent(e,1),{type:r,table_name:i,table_schema:s}=t;if(r===ce.MySQL)return`
296
376
  SELECT ordinal_position, column_key, column_name, column_type, is_nullable, column_default, column_comment
297
377
  FROM information_schema.columns
298
378
  WHERE table_name = '${i}' AND table_schema = '${s}'
@@ -313,7 +393,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
313
393
  LEFT JOIN pg_constraint pc ON pc.conrelid = ${o} AND ordinal_position = any(pc.conkey)
314
394
  WHERE
315
395
  table_name = '${i}' AND table_schema = '${s}';
316
- `}return""}})),Cv=v.types.model({data:v.types.optional(v.types.frozen(),[]),state:v.types.optional(v.types.enumeration(["idle","loading","error"]),"idle"),error:v.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get sql(){const t=v.getParent(e,1),{type:r,table_name:i,table_schema:s}=t;return r===ce.MySQL?`
396
+ `}return""}})),ov=y.types.model({data:y.types.optional(y.types.frozen(),[]),state:y.types.optional(y.types.enumeration(["idle","loading","error"]),"idle"),error:y.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get sql(){const t=y.getParent(e,1),{type:r,table_name:i,table_schema:s}=t;return r===ce.MySQL?`
317
397
  SELECT
318
398
  sub_part AS index_length,
319
399
  index_name AS index_name,
@@ -348,22 +428,22 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
348
428
  JOIN pg_am AS am ON ix.relam = am.oid
349
429
  WHERE
350
430
  t.relname = '${i}' AND n.nspname = '${s}';
351
- `:""}})),wv=v.types.model({data:v.types.optional(v.types.frozen(),{}),state:v.types.optional(v.types.enumeration(["idle","loading","error"]),"idle"),error:v.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return Object.keys(e.data).length===0},get sql(){const t=v.getParent(e,1).type;return t===ce.MySQL||t===ce.Postgresql?"SELECT table_schema, table_name, table_type FROM information_schema.tables ORDER BY table_schema, table_name":""}})),_v=v.types.model({page:v.types.optional(v.types.number,1),limit:v.types.optional(v.types.number,20),data:v.types.optional(v.types.frozen(),[]),total:v.types.optional(v.types.number,0),state:v.types.optional(v.types.enumeration(["idle","loading","error"]),"idle"),error:v.types.frozen()}).views(e=>({get keywords(){return v.getParent(e,1)},get keywordString(){const{table_name:t,table_schema:r}=v.getParent(e,1);return`${r}||${t}`}})).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get maxPage(){return Math.ceil(e.total/e.limit)},get sql(){const t=v.getParent(e,1),{table_name:r,table_schema:i}=t;return`
431
+ `:""}})),lv=y.types.model({data:y.types.optional(y.types.frozen(),{}),state:y.types.optional(y.types.enumeration(["idle","loading","error"]),"idle"),error:y.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return Object.keys(e.data).length===0},get sql(){const t=y.getParent(e,1).type;return t===ce.MySQL||t===ce.Postgresql?"SELECT table_schema, table_name, table_type FROM information_schema.tables ORDER BY table_schema, table_name":""}})),uv=y.types.model({page:y.types.optional(y.types.number,1),limit:y.types.optional(y.types.number,20),data:y.types.optional(y.types.frozen(),[]),total:y.types.optional(y.types.number,0),state:y.types.optional(y.types.enumeration(["idle","loading","error"]),"idle"),error:y.types.frozen()}).views(e=>({get keywords(){return y.getParent(e,1)},get keywordString(){const{table_name:t,table_schema:r}=y.getParent(e,1);return`${r}||${t}`}})).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get maxPage(){return Math.ceil(e.total/e.limit)},get sql(){const t=y.getParent(e,1),{table_name:r,table_schema:i}=t;return`
352
432
  SELECT *
353
433
  FROM ${i}.${r}
354
434
  LIMIT ${e.limit} OFFSET ${(e.page-1)*e.limit}
355
435
  `},get countSql(){const{table_name:t,table_schema:r}=e.keywords;return`
356
436
  SELECT count(*) AS total
357
437
  FROM ${r}.${t}
358
- `}})).actions(e=>({setPage(t){e.page=t},resetPage(){e.page=1},setLimit(t){e.limit=t}})).actions(e=>({afterCreate(){v.addDisposer(e,ae.reaction(()=>e.keywordString,e.resetPage,{fireImmediately:!1,delay:0})),v.addDisposer(e,ae.reaction(()=>e.limit,e.resetPage,{fireImmediately:!1,delay:0}))}})),Sv=v.types.model("DataSourceModel",{id:v.types.string,type:v.types.enumeration("DataSourceType",[ce.HTTP,ce.MySQL,ce.Postgresql]),key:v.types.string,config:v.types.frozen(),tables:v.types.optional(wv,{}),columns:v.types.optional(xv,{}),tableData:v.types.optional(_v,{}),indexes:v.types.optional(Cv,{}),table_schema:v.types.optional(v.types.string,""),table_name:v.types.optional(v.types.string,"")}).volatile(()=>({controllers:{tables:new AbortController,columns:new AbortController,indexes:new AbortController,tableData:new AbortController}})).actions(e=>({setKeywords(t,r){e.table_schema=t,e.table_name=r}})).actions(e=>({initKeywords(){if(e.tables.empty)return;const t=Object.keys(e.tables.data)[0],r=e.tables.data[t][0].table_name;e.setKeywords(t,r)}})).actions(e=>{const t=v.flow(function*(){var r;(r=e.controllers.tables)==null||r.abort(),e.controllers.tables=new AbortController,e.tables.state="loading";try{const i=yield*v.toGenerator(ze.getRequest("POST",e.controllers.tables.signal)("/query",{type:e.type,key:e.key,query:e.tables.sql},{}));e.tables.data=y.groupBy(i,"table_schema"),e.tables.state="idle",e.tables.error=null,e.initKeywords()}catch(i){if(!Qe.isCancel(i)){e.tables.data={};const s=y.get(i,"message","unkown error");e.tables.error=y.get(i,"response.data.detail.message",s),e.tables.state="error"}}});return{loadTables:t,loadTablesIfEmpty(){e.tables.empty&&t()},loadColumns:v.flow(function*(){var r;(r=e.controllers.columns)==null||r.abort(),e.controllers.columns=new AbortController,e.columns.state="loading";try{e.columns.data=yield*v.toGenerator(ze.getRequest("POST",e.controllers.columns.signal)("/query",{type:e.type,key:e.key,query:e.columns.sql},{})),e.columns.state="idle",e.columns.error=null}catch(i){if(Qe.isCancel(i))e.columns.state="idle",e.columns.error=null;else{e.columns.data=[];const s=y.get(i,"message","unkown error");e.columns.error=y.get(i,"response.data.detail.message",s),e.columns.state="error"}}}),loadIndexes:v.flow(function*(){var r;(r=e.controllers.indexes)==null||r.abort(),e.controllers.indexes=new AbortController,e.indexes.state="loading";try{e.indexes.data=yield*v.toGenerator(ze.getRequest("POST",e.controllers.indexes.signal)("/query",{type:e.type,key:e.key,query:e.indexes.sql},{})),e.indexes.state="idle",e.indexes.error=null}catch(i){if(Qe.isCancel(i))e.indexes.state="idle",e.indexes.error=null;else{e.indexes.data=[];const s=y.get(i,"message","unkown error");e.indexes.error=y.get(i,"response.data.detail.message",s),e.indexes.state="error"}}}),loadTableData:v.flow(function*(){var i;(i=e.controllers.tableData)==null||i.abort(),e.controllers.tableData=new AbortController;const r=e.tableData;r.state="loading";try{r.data=yield*v.toGenerator(ze.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:r.sql},{}));const[{total:s}]=yield*v.toGenerator(ze.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:r.countSql},{}));r.total=Number(s),r.state="idle",r.error=null}catch(s){if(Qe.isCancel(s))r.state="idle",r.error=null;else{r.data=[];const o=y.get(s,"message","unkown error");r.error=y.get(s,"response.data.detail.message",o),r.state="error"}}})}}).actions(e=>({afterCreate(){v.addDisposer(e,ae.reaction(()=>e.columns.sql,e.loadColumns,{fireImmediately:!1,delay:500}))}})).actions(e=>({afterCreate(){v.addDisposer(e,ae.reaction(()=>e.indexes.sql,e.loadIndexes,{fireImmediately:!1,delay:500})),v.addDisposer(e,ae.reaction(()=>e.tableData.sql,e.loadTableData,{fireImmediately:!1,delay:0}))}})),Tv=v.types.model("DataSourcesModel",{list:v.types.optional(v.types.array(Sv),[])}).views(e=>({find({type:t,key:r}){return e.list.find(i=>i.key===r&&i.type===t)},get options(){return e.list.map(t=>({value:t.key,label:t.key}))}})).actions(e=>({replace(t){e.list.length=0,e.list.push(...t)}}));function nn(e){return{label:e,value:e,_type:"ACTION",_action_type:e,Icon:null,children:null}}function Dv(e){switch(e._type){case"GROUP":case"ACTION":return null;case"global_variables":return["_GLOBAL_VARS_"];case"mock_context":return["_MOCK_CONTEXT_"];case"filter":return["_FILTERS_",e.value];case"sql_snippet":return["_SQL_SNIPPETS_",e.value];case"query":return["_QUERIES_",e.value];case"view":return["_VIEWS_",e.value];case"panel":return e.parentID?["_VIEWS_",e.parentID,"_PANELS_",e.value]:(console.error("[getPathFromOption] parentID is required"),null)}}const kv=v.types.model("EditorModel",{path:v.types.optional(v.types.frozen(),[]),settings_open:v.types.optional(v.types.boolean,!1)}).views(e=>({get navOptions(){const{filters:t,views:r,sqlSnippets:i,queries:s}=v.getRoot(e);return[{label:"Global Variables",value:"_GLOBAL_VARS_",_type:"global_variables",Icon:V.IconVariable},{label:"Mock Context",value:"_MOCK_CONTEXT_",Icon:V.IconCodeDots,_type:"mock_context"},{label:"Filters",value:"_FILTERS_",Icon:V.IconFilter,children:[...t.options,nn("_Add_A_Filter_")],_type:"GROUP"},{label:"SQL Snipepts",value:"_SQL_SNIPPETS_",Icon:V.IconCopy,children:[...i.options,nn("_Add_A_SQL_SNIPPET_")],_type:"GROUP"},{label:"Queries",value:"_QUERIES_",Icon:V.IconDatabase,children:[...s.options,nn("_Add_A_QUERY_")],_type:"GROUP"},{label:"Views",value:"_VIEWS_",Icon:V.IconBoxMultiple,children:[...r.editorOptions,nn("_Add_A_VIEW_")],_type:"GROUP"}]},isOptionActive(t,r){return t.length===0?!1:t[t.length-1]===r.value},isOptionOpened(t){const{path:r}=e;return r.length===0||!t.children||t.children.length===0?!1:r.includes(t.value)}})).actions(e=>({setPath(t){e.path=t},setSettingsOpen(t){e.settings_open=t}})).actions(e=>({open(t){e.setPath(t),e.setSettingsOpen(!0)},close(){e.setSettingsOpen(!1)},navigate(t){const r=Dv(t);r&&e.setPath(r)}})),Iv=v.types.model("MockContextModel",{current:v.types.optional(v.types.frozen(),{})}).views(e=>({get keys(){return Object.keys(e.current)},get entries(){return Object.entries(e.current)}})).actions(e=>({replace(t){e.current=t},get(t){return e.current[t]},set(t,r){e.current[t]=r}})),Mv=v.types.model("PanelLayoutModel",{x:v.types.number,y:v.types.maybeNull(v.types.number),w:v.types.number,h:v.types.number,moved:v.types.optional(v.types.boolean,!1),static:v.types.optional(v.types.boolean,!1)}).views(e=>({get json(){const{x:t,y:r,w:i,h:s,moved:o}=e;return{h:s,w:i,x:t,y:r===null?0:r,moved:o,static:e.static}}})).actions(e=>({set(t){const{x:r,y:i,w:s,h:o,moved:u}=t;e.x=r,e.y=i,e.w=s,e.h=o,e.moved=!!u,e.static=!!t.static}})),Av=v.types.model("PanelStyleBorderModel",{enabled:v.types.boolean}).views(e=>({get json(){const{enabled:t}=e;return{enabled:t}}})).actions(e=>({setEnabled(t){e.enabled=t}})),zv=v.types.model("PanelStyleModel",{border:Av}).views(e=>({get json(){const{border:t}=e;return{border:t.json}}})).actions(e=>({})),$v=v.types.model("PanelVizModel",{type:v.types.string,conf:v.types.frozen()}).views(e=>({get json(){return{conf:e.conf,type:e.type}}})).actions(e=>({setType(t){e.type=t},setConf(t){e.conf=t}})),Ev=v.types.model("VariableModel",{name:v.types.string,size:v.types.string,weight:v.types.string,color:v.types.union(v.types.model({type:v.types.literal("static"),staticColor:v.types.string}),v.types.model({type:v.types.literal("continuous"),valueRange:v.types.array(v.types.number),colorRange:v.types.array(v.types.string)}),v.types.model({type:v.types.literal("piecewise")})),formatter:v.types.model({output:v.types.enumeration("Output",["number","percent"]),average:v.types.optional(v.types.boolean,!1),mantissa:v.types.number,trimMantissa:v.types.optional(v.types.boolean,!1)}),data_field:v.types.string,aggregation:v.types.union(v.types.model({type:v.types.enumeration(["none","sum","mean","median","min","max","CV","std"]),config:v.types.frozen()}),v.types.model({type:v.types.literal("quantile"),config:v.types.model({p:v.types.number})}))}).views(e=>({get json(){const{name:t,size:r,weight:i,color:s,formatter:o,data_field:u,aggregation:l}=e;return y.cloneDeep({name:t,size:r,color:s,weight:i,formatter:o,data_field:u,aggregation:l})}}));class Lv{constructor(t){P(this,"origin");P(this,"copy");this.origin=t,this.copy=v.clone(t),ae.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!y.isEqual(v.getSnapshot(this.origin),v.getSnapshot(this.copy))}commit(){v.applySnapshot(this.origin,v.getSnapshot(this.copy))}update(t){v.applySnapshot(this.copy,t)}}const Pv=e=>new Lv(e),ss=v.types.model({id:v.types.string,title:v.types.string,description:v.types.string,layout:Mv,queryID:v.types.string,viz:$v,style:zv,variables:v.types.optional(v.types.array(Ev),[])}).views(e=>({get query(){return v.getParentOfType(e,rn).queries.findByID(e.queryID)},get json(){const{id:t,title:r,description:i,queryID:s}=e;return{id:t,viz:e.viz.json,style:e.style.json,title:r,layout:e.layout.json,queryID:s,variables:e.variables.map(o=>o.json),description:i}}})).actions(e=>({setID(t){e.id=t},setTitle(t){e.title=t},setDescription(t){e.description=t},setQueryID(t){if(v.getParentOfType(e,rn).queries.findByID(t))e.queryID=t;else throw new Error(`Query with id ${t} does not exist`)},addVariable(t){e.variables.push(t)},removeVariable(t){e.variables.remove(t)},removeSelf(){v.getParent(e,2).removeByID(e.id)}})).actions(e=>({moveToView(t,r){v.getRoot(e).views.findByID(t).removePanelID(e.id),v.getRoot(e).views.findByID(r).appendPanelID(e.id),v.getRoot(e).editor.setPath(["_VIEWS_",r,"_PANELS_",e.id])}}));function os(e){return{id:e,layout:{x:0,y:1/0,w:3,h:15},title:e,description:"<p></p>",queryID:"",viz:{type:Yn.name,conf:Yn.createConfig()},style:{border:{enabled:!0}}}}const ls=v.types.model("PanelsModel",{list:v.types.optional(v.types.array(ss),[])}).views(e=>({get json(){return e.list.map(t=>t.json)},findByID(t){return e.list.find(r=>r.id===t)},get idMap(){const t=new Map;return e.list.forEach(r=>{t.set(r.id,r)}),t}})).views(e=>({panelsByIDs(t){const r=[];t.forEach(s=>{const o=e.idMap.get(s);o?r.push(o):console.warn(`Panel is not found, id:${s}`)});const i=r.map(s=>({...s.layout.json,i:s.id}));return{panels:r,layouts:i}}})).views(e=>({editorOptions(t,r){const{panels:i}=e.panelsByIDs(r);i.length!==r.length&&console.warn(`Unfulfilled panels for View[${t}]`);const s=i.map(u=>({label:u.title?u.title:y.capitalize(u.viz.type),value:u.id,_type:"panel",parentID:t})),o="_Add_A_PANEL_";return s.push({label:o,value:o,_type:"ACTION",_action_type:o,parentID:t,Icon:null,children:null}),s}})).actions(e=>({replace(t){e.list=v.castToSnapshot(t)},append(t){e.list.push(t)},remove(t){e.list.splice(t,1)},removeByID(t){const r=e.list.findIndex(i=>i.id===t);r!==-1&&e.list.splice(r,1)},duplicateByID(t){const r=e.list.find(s=>s.id===t);if(!r){console.error(new Error(`[duplicate panel] Can't find a panel by id[${t}]`));return}const i=new Date().getTime().toString();return e.list.push({...r.json,id:i,layout:{...r.layout,y:1/0,moved:!1}}),i},replaceByIndex(t,r){e.list.splice(t,1,r)}})),us=v.types.model("ViewModel_Division",{_name:v.types.literal(K.Division)}).views(e=>({get json(){const{_name:t}=e;return{_name:t}}})).actions(e=>({})),Ov=()=>us.create({_name:K.Division}),or={enabled:!1,func_content:["function text({ filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
359
- `)},Vv=v.types.model("CustomModalTitleModel",{enabled:v.types.optional(v.types.boolean,!1),func_content:v.types.optional(v.types.string,"")}).views(e=>({get json(){const{enabled:t,func_content:r}=e;return{enabled:t,func_content:r}},get value(){const{enabled:t,func_content:r}=e,i=v.getParent(e,2),s=v.getRoot(e);if(!t)return i.name;try{const o={filters:s.filters.values,context:s.context.current};return new Function(`return ${r}`)()(o)}catch(o){return console.error(o),i.name}}})).actions(e=>({setEnabled(t){e.enabled=t},setFuncContent(t){e.func_content=t},replace({enabled:t,func_content:r}){e.enabled=t,e.func_content=r}})),ds=v.types.model("ViewModel_Modal",{_name:v.types.literal(K.Modal),width:v.types.string,height:v.types.string,custom_modal_title:v.types.optional(Vv,or)}).views(e=>({get json(){const{_name:t,width:r,height:i,custom_modal_title:s}=e;return{_name:t,width:r,height:i,custom_modal_title:s.json}}})).actions(e=>({setWidth(t){e.width=t},setHeight(t){e.height=t}})),Bv=()=>ds.create({_name:K.Modal,width:"90vw",height:"90vh"}),Nv=v.types.model("ViewModel_Tabs_Tab",{id:v.types.identifier,name:v.types.string,view_id:v.types.string,color:v.types.optional(v.types.string,"")}).views(e=>({get json(){const{id:t,name:r,view_id:i,color:s}=e;return{id:t,name:r,color:s,view_id:i}}})).actions(e=>({setName(t){e.name=t},setViewID(t){e.view_id=t},setColor(t){e.color=t}})),cs=v.types.model("ViewModel_Tabs",{_name:v.types.literal(K.Modal),tabs:v.types.optional(v.types.array(Nv),[]),variant:v.types.optional(v.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:v.types.optional(v.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:v.types.optional(v.types.boolean,!1)}).views(e=>({get json(){const{_name:t,variant:r,orientation:i,tabs:s,grow:o}=e;return{grow:o,tabs:s.map(u=>u.json),_name:t,variant:r,orientation:i}}})).actions(e=>({setVariant(t){e.variant=t},setOrientation(t){e.orientation=t},setGrow(t){e.grow=t},setTabs(t){e.tabs.length=0,e.tabs=v.cast(t)},addTab(){const t=ve.randomId(),r={id:t,name:t,view_id:""};e.tabs.push(r)},removeTab(t){e.tabs.splice(t,1)}})),Gv=()=>cs.create({_name:K.Modal,tabs:[]}),ps=v.types.model({id:v.types.identifier,name:v.types.string,type:v.types.enumeration("EViewComponentType",[K.Division,K.Modal,K.Tabs]),config:v.types.union(us,ds,cs),panelIDs:v.types.optional(v.types.array(v.types.string),[])}).views(e=>({get json(){const{id:t,name:r,type:i,config:s}=e;return{id:t,name:r,type:i,config:s.json,panelIDs:e.panelIDs}}})).actions(e=>({setName(t){e.name=t},setType(t){if(e.type!==t){switch(t){case K.Division:e.config=Ov();break;case K.Modal:e.config=Bv();break;case K.Tabs:e.config=Gv();break}e.type=t}},appendPanelID(t){e.panelIDs.push(t)},removePanelID(t){const r=e.panelIDs.filter(i=>i!==t);e.panelIDs.length=0,e.panelIDs.push(...r)}})).actions(e=>({})),hs=v.types.model("ViewsModel",{current:v.types.optional(v.types.array(ps),[]),visibleViewIDs:v.types.array(v.types.string),idOfVIE:v.types.string}).views(e=>({get json(){return e.current.map(t=>tn(t.json))},get idMap(){const t=new Map;return e.current.forEach(r=>{t.set(r.id,r)}),t},findByID(t){return e.current.find(r=>r.id===t)},get isVIETheFirstView(){return e.current.length===0||!e.idOfVIE?!1:e.current[0].id===e.idOfVIE},get firstVisibleView(){const[t]=e.visibleViewIDs;return e.current.find(({id:r})=>r===t)},get visibleViews(){const t=new Set(e.visibleViewIDs);return e.current.filter(({id:r})=>t.has(r))},get VIE(){return e.current.find(({id:t})=>t===e.idOfVIE)},get options(){return e.current.map(t=>({label:t.name,value:t.id,type:t.type}))},get editorOptions(){const t=v.getRoot(e).panels;return e.current.map(r=>({label:r.name,value:r.id,_type:"view",children:t.editorOptions(r.id,r.panelIDs)}))}})).actions(e=>({replace(t){e.current.replace(t)},addANewView(t,r,i,s){e.current.push({id:t,name:r,type:i,config:s,panelIDs:[]})},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const r=e.current.findIndex(i=>i.id===t);r!==-1&&e.current.splice(r,1)},replaceByIndex(t,r){e.current.splice(t,1,r)},setIDOfVIE(t){e.idOfVIE=t,e.visibleViewIDs.length=0,e.visibleViewIDs.push(t)},appendToVisibles(t){new Set(e.visibleViewIDs.map(i=>i)).has(t)||e.visibleViewIDs.push(t)}})).actions(e=>({addARandomNewView(){const t=new Date().getTime().toString();e.addANewView(t,K.Division,K.Division,{_name:K.Division}),e.setIDOfVIE(t)},removeVIE(){e.current.length!==1&&(e.removeByID(e.idOfVIE),e.setIDOfVIE(e.current[0].id))},rmVisibleViewID(t){const r=e.visibleViewIDs.findIndex(i=>i===t);r!==-1&&e.visibleViewIDs.splice(r,1)}}));function lr(e){const t=e.length>0?[e[0].id]:[],r=e.length>0?e[0].id:"";return{current:e.map(s=>{const{_name:o=s.type}=s.config;return{...s,config:{...s.config,_name:o},panelIDs:s.panelIDs}}),visibleViewIDs:t,idOfVIE:r}}const qv=v.types.model({id:v.types.identifier,name:v.types.string,group:v.types.string,version:v.types.string,datasources:Tv,filters:Za,queries:ns,sqlSnippets:is,views:hs,panels:ls,context:as,mock_context:Iv,editor:kv,origin:v.types.maybe(v.types.frozen())}).views(e=>({get json(){return{id:e.id,name:e.name,group:e.group,views:e.views.json,panels:e.panels.json,filters:e.filters.json,version:e.version,definition:{queries:e.queries.json,sqlSnippets:e.sqlSnippets.json,mock_context:e.mock_context.current}}},get filtersChanged(){const t="filters.current";return!y.isEqual(v.getSnapshot(y.get(e,t)),y.get(e.origin,t))},get queriesChanged(){const t="queries.current",r=v.getSnapshot(y.get(e,t)).map(i=>y.pick(i,["id","name","key","type","sql","run_by","pre_process","post_process"]));return!y.isEqual(r,y.get(e.origin,t))},get sqlSnippetsChanged(){const t="sqlSnippets.current";return!y.isEqual(v.getSnapshot(y.get(e,t)),y.get(e.origin,t))},get viewsChanged(){const t="views.current";return!y.isEqual(v.getSnapshot(y.get(e,t)),y.get(e.origin,t))},get panelsChanged(){const t="panels.list";return!y.isEqual(v.getSnapshot(y.get(e,t)),y.get(e.origin,t))},get mockContextChanged(){const t="mock_context.current";return!y.isEqual(y.get(e,t),y.get(e.origin,t))},get payloadForSQL(){return{context:e.context.current,mock_context:e.mock_context.current,sqlSnippets:e.sqlSnippets.current,filterValues:e.filters.values}},get changed(){return this.filtersChanged||this.queriesChanged||this.sqlSnippetsChanged||this.viewsChanged||this.panelsChanged||this.mockContextChanged},get data(){return e.queries.current.map(({id:r,data:i})=>({id:r,data:i})).reduce((r,i)=>(r[i.id]=i.data,r),{})},getDataStuffByID(t){const r=e.queries.findByID(t);return r?{data:r.data.toJSON(),dataProxy:r.data,len:r.data.length,state:r.state,error:r.error}:{data:[],dataProxy:null,len:0,state:"idle",error:void 0}},getDataStateByID(t){var r;return((r=e.queries.findByID(t))==null?void 0:r.state)??[]},getDataErrorByID(t){var r;return((r=e.queries.findByID(t))==null?void 0:r.error)??[]}})).views(e=>({findQueryUsage(t){const r=e.panels.idMap,i=e.views.current.flatMap(u=>u.panelIDs.map(l=>r.get(l)).filter(l=>(l==null?void 0:l.queryID)===t).map(l=>({type:"panel",id:l.id,label:l.title?l.title:l.viz.type,views:[{id:u.id,label:u.name}]}))),s=e.views.idMap,o=e.filters.current.filter(u=>y.get(u,"config.options_query_id")===t).map(u=>({type:"filter",id:u.id,label:u.label,views:u.visibleInViewsIDs.map(l=>{var d;return{id:l,label:((d=s.get(l))==null?void 0:d.name)??l}})}));return i.concat(o)}})).actions(e=>({duplicatePanelByID(t,r){var s;const i=e.panels.duplicateByID(t);i&&((s=e.views.findByID(r))==null||s.appendPanelID(i))},removePanelByID(t,r){var i;e.panels.removeByID(t),(i=e.views.findByID(r))==null||i.removePanelID(t)},addANewPanel(t){var i;const r=new Date().getTime().toString();e.panels.append(os(r)),(i=e.views.findByID(t))==null||i.appendPanelID(r)}})).actions(e=>({reset(){v.applySnapshot(e.filters.current,e.origin.filters.current),v.applySnapshot(e.queries.current,e.origin.queries.current),v.applySnapshot(e.sqlSnippets.current,e.origin.sqlSnippets.current),v.applySnapshot(e.views.current,e.origin.views.current),v.applySnapshot(e.panels.list,e.origin.panels.list),e.mock_context.current=e.origin.mock_context.current},resetFilters(){v.applySnapshot(e.filters.current,e.origin.filters.current)},updateCurrent(t){const{name:r,group:i,version:s,filters:o,views:u,panels:l,definition:{queries:d,sqlSnippets:c,mock_context:f={}}}=t;e.name=r,e.group=i,e.version=s,v.applySnapshot(e.filters.current,o),v.applySnapshot(e.views.current,lr(u).current),v.applySnapshot(e.panels.list,l),v.applySnapshot(e.queries.current,d),v.applySnapshot(e.sqlSnippets.current,c),e.mock_context.current=f}})),rn=v.types.snapshotProcessor(qv,{preProcessor(e){return{...e,origin:e}},postProcessor(e){delete e.origin;const t=v.castToSnapshot(e.queries.current.map(r=>y.pick(r,["id","key","type","sql"])));return y.defaults({},{queries:{current:t}},e)}});function Fv(e,t){t.filters&&v.applySnapshot(e.filters.current,t.filters)}function ur({id:e,name:t,group:r,version:i,filters:s,views:o,panels:u,definition:{queries:l,sqlSnippets:d,mock_context:c={}}},f,g){return rn.create({id:e,name:t,group:r,version:i,datasources:{list:f},filters:Ka(s),queries:{current:l},sqlSnippets:{current:d},context:{current:g},mock_context:{current:c},views:lr(o),panels:{list:u},editor:{}})}function dr(e){return m.useCallback(t=>t.provideValue(me.pluginManager,e.pluginManager).provideValue(me.vizManager,e.vizManager).provideValue(me.colorManager,e.colorManager),[])}const gw="",fs={"> button":{"&:first-of-type":{borderTopRightRadius:0,borderBottomRightRadius:0,borderRightWidth:.5},":not(:first-of-type):not(:last-of-type)":{borderTopRightRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5,borderRightWidth:.5},"&:last-of-type":{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5}}},Wv=T.observer(({saveDashboardChanges:e,headerSlot:t=null})=>{const r=to.useNavigate(),i=B(),s=()=>{const f=JSON.stringify(i.json,null,2);rv(i.name,f)},o=()=>{r(`/dashboard/${i.id}`)},u=Pe.useModals(),l=()=>{u.openConfirmModal({title:p(a.Group,{position:"left",children:[n(V.IconAlertTriangle,{size:18,color:"red"}),n(a.Text,{children:"There are unsaved changes"})]}),labels:{confirm:"Discard",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:o,zIndex:320,withCloseButton:!1})},d=()=>{u.openConfirmModal({title:p(a.Group,{position:"left",children:[n(V.IconAlertTriangle,{size:18,color:"red"}),n(a.Text,{children:"You are reverting changes"})]}),labels:{confirm:"Confirm",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:()=>i.reset(),zIndex:320,withCloseButton:!1})},c=i.changed;return n(a.Header,{height:60,px:"md",py:0,sx:{zIndex:299},children:p(a.Group,{position:"apart",sx:{height:60,position:"relative"},children:[n(a.Group,{children:n(a.Button,{size:"xs",color:c?"red":"green",leftIcon:n(V.IconArrowLeft,{size:20}),onClick:c?l:o,children:p(a.Group,{spacing:4,children:["End Editing",n(a.Text,{td:"underline",children:i.name})]})})}),t,p(a.Group,{position:"right",children:[n(a.Button,{variant:"filled",size:"xs",disabled:!i.views.VIE,onClick:()=>i.addANewPanel(i.views.idOfVIE),leftIcon:n(V.IconPlaylistAdd,{size:20}),children:"Add a Panel"}),p(a.Group,{spacing:0,sx:fs,children:[n(a.Tooltip,{label:"Download Schema",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:s,children:n(V.IconCode,{size:18})})}),n(a.Tooltip,{label:"Download Data",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:i.queries.downloadAllData,children:n(V.IconDownload,{size:18})})})]}),p(a.Group,{spacing:16,children:[n(a.Tooltip,{label:"Revert Changes",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",disabled:!c,onClick:d,children:n(V.IconRecycle,{size:20,color:"red"})})}),n(a.Button,{color:"green",variant:"filled",size:"xs",leftIcon:n(V.IconDeviceFloppy,{size:18}),onClick:e,disabled:!c,children:"Save Changes"})]})]})]})})}),mw="";function jv(e,t,r){const i=[];return e.filter(s=>"__INTERACTIONS"in s.viz.conf).forEach((s,o)=>{const u=t[s.id];u.data.interactions=y.get(u,"data.interactions",[]);const{__INTERACTIONS:l,__OPERATIONS:d,__TRIGGERS:c}=s.viz.conf;Object.entries(d).forEach(([f,g])=>{const{schemaRef:h,data:b}=g,{config:w}=b;switch(h){case"builtin:op:open-link":let C=w.urlTemplate.substring(0,100);w.urlTemplate.length>=20&&(C+="..."),u.type="interaction",u.data.interactions.push({schemaRef:h,urlTemplate:w.urlTemplate,shortURLTemplate:C});return;case"builtin:op:open_view":i.push({id:`OPERATION--${f}`,source:s.id,target:w.viewID,label:"Open View",style:{stroke:"rgba(0,0,0,0.8)"},type:"default"});return;case"builtin:op:set_filter_values":u.type="interaction",u.data.interactions.push({schemaRef:h,filters:Object.keys(w.dictionary).map(S=>({key:S,label:r[S]}))});return;case"builtin:op:clear_filter_values":u.type="interaction",u.data.interactions.push({schemaRef:h,filters:w.filter_keys.map(S=>({key:S,label:r[S]}))});return;default:return}})}),i}function Rv(e,t){const r=e.filters.keyLabelMap;return{edges:jv(e.panels.list,t,r),edgeNodes:[]}}function gs(e,t,r){return e*t+e*r}function Yv(e,t,r){return e*t+(e-1)*r}const an=25,cr=40,ms=25,pr=350,Qv=150,Uv=150,bs=150,vs=300,sn=40,ys=25,Xv=300;function Zv(e,t){const r=y.keyBy(t,s=>s.id),i=[];return e.current.forEach((s,o)=>{s.panelIDs.forEach((u,l)=>{const d=gs(l,sn,ys)+cr,c=r[u];if(!c){i.push({id:u,_node_type:"panel",parentNode:s.id,data:{label:`!: ${u}`},position:{x:an,y:d},sourcePosition:ye.Position.Right,targetPosition:ye.Position.Left,style:{width:vs,height:sn}});return}const f=c.title.trim()?`${c.title}`:c.viz.type;i.push({id:c.id,_node_type:"panel",parentNode:s.id,data:{label:f},position:{x:an,y:d},sourcePosition:ye.Position.Right,targetPosition:ye.Position.Left,style:{width:vs,height:sn}})})}),i}const Kv={[K.Division]:"Div",[K.Modal]:"Modal",[K.Tabs]:"Tabs"},Jv=Va;function Hv(e){return e.current.map((r,i)=>{const s=Yv(r.panelIDs.length,sn,ys)+cr+ms;let o=[];return r.type===K.Tabs&&(o=r.config.tabs.map(l=>l.view_id)),{id:r.id,_node_type:"view-root",_view_type:r.type,_view_level:0,_sub_view_ids:[],_tab_view_ids:o,data:{label:`${Kv[r.type]}:${r.name}`},position:{x:0,y:0},sourcePosition:ye.Position.Right,targetPosition:ye.Position.Left,className:"light",style:{backgroundColor:Jv[r.type],width:pr,height:s}}})}function ey(e){const t=y.keyBy(e,r=>r.id);e.forEach(r=>{r._node_type!=="view-root"||r._view_type!==K.Tabs||r._tab_view_ids.forEach(i=>{t[i].parentNode=r.id})})}function ty(e){const t=Hv(e.views);ey(t);const r=Zv(e.views,e.panels.list);return[...t,...r]}function ny({nodeMap:e,nodes:t,edges:r}){t.forEach(i=>{i._node_type!=="view-root"||i._view_type!==K.Tabs||(i.sourcePosition=ye.Position.Bottom,i.style.width=pr+an*2,i.style.height=ms+i._tab_view_ids.reduce((s,o)=>{const u=e[o];u.position.y=s,u.position.x=an;const l=u.style.height;return s+l+20},cr))})}function ry({nodeMap:e,nodes:t,edges:r}){r.filter(i=>i.label==="Open View").forEach(i=>{const s=e[i.source],o=e[i.target];if(!s||!o||!s.parentNode)return;const u=e[s.parentNode];u._node_type!=="view-root"||o._node_type!=="view-root"||(o._view_level+=1+u._view_level,u._sub_view_ids.push(o.id))}),t.sort((i,s)=>i._node_type==="view-root"&&s._node_type==="view-root"?i._view_level-s._view_level:i._node_type!=="view-root"&&s._node_type!=="view-root"?0:i._node_type==="view-root"?-1:1)}function iy({nodeMap:e,nodes:t,edges:r}){const i={};r.forEach(s=>{if(s.label!=="Open View")return;const o=e[s.source],u=e[s.target];if(o&&u&&o.parentNode){const l=e[o.parentNode],d=l.position.x,c=Number(y.get(u,"style.height",0)),f=Number(l.style.width);u.position.x=d+f+Xv,l._view_level===0&&u._sub_view_ids.length===0&&(o.sourcePosition=ye.Position.Left,u.targetPosition=ye.Position.Right,u.position.x*=-1);const h=u.position.x,b=y.get(i,h,0);u.position.y=b,i[h]=b+c+bs}})}function ay({nodeMap:e,nodes:t,edges:r}){const i=new Set,s=new Set;r.forEach(u=>{i.add(u.source),s.add(u.target)}),t.filter(u=>u._node_type!=="view-root"||u.id==="Main"||u.parentNode?!1:!i.has(u.id)&&!s.has(u.id)).forEach((u,l)=>{u.position.x=gs(l,pr,Uv),u.position.y=0-Qv-bs})}function sy({nodeMap:e,nodes:t,edges:r}){const i={nodeMap:e,nodes:t,edges:r};return ay(i),ry(i),ny(i),iy(i),{nodes:t,edges:r}}function oy(e){const t=ty(e),r=y.keyBy(t,d=>d.id),{edges:i,edgeNodes:s}=Rv(e,r),o=[...t,...s],u=y.keyBy(o,d=>d.id),l={edges:y.uniqBy(i,d=>d.id),nodes:o,nodeMap:u};return sy(l)}const bw="",hr={"builtin:op:open-link":n(a.ThemeIcon,{color:"blue",size:20,radius:"xl",children:n(V.IconCircleDashed,{size:14})}),"builtin:op:set_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(V.IconCircleDot,{size:14})}),"builtin:op:clear_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(V.IconCircleOff,{size:14})})};function ly(e){const t=[];return e.forEach(r=>{switch(r.schemaRef){case"builtin:op:open-link":t.push({key:r.urlTemplate,icon:hr[r.schemaRef],text:p(a.Group,{spacing:4,children:[n(a.Text,{children:"Open: "}),n(a.Text,{color:"dimmed",children:r.shortURLTemplate})]})});return;case"builtin:op:set_filter_values":r.filters.forEach(({key:i,label:s})=>{t.push({key:r.schemaRef+i,icon:hr[r.schemaRef],text:n(a.Group,{spacing:4,children:p(a.Text,{children:["Set Filter: ",s]})})})});return;case"builtin:op:clear_filter_values":r.filters.forEach(({key:i,label:s})=>{t.push({key:r.schemaRef+i,icon:hr[r.schemaRef],text:n(a.Group,{spacing:4,children:p(a.Text,{children:["Clear Filter: ",s]})})})});return}}),t}const uy=m.memo(({data:e,isConnectable:t,sourcePosition:r=ye.Position.Right,targetPosition:i=ye.Position.Left,...s})=>{const o=m.useMemo(()=>ly(e.interactions),[e.interactions]);return p(O,{children:[n(ye.Handle,{type:"target",position:i,isConnectable:t}),n(a.Box,{sx:{position:"absolute",top:0,right:0},children:n(D.ChevronsUpRight,{size:12})}),p(a.HoverCard,{shadow:"xl",withinPortal:!0,children:[n(a.HoverCard.Target,{children:n(a.Text,{children:e.label})}),n(a.HoverCard.Dropdown,{children:n(a.List,{spacing:"xs",size:"sm",center:!0,children:o.map(u=>n(a.List.Item,{icon:u.icon,children:u.text},u.key))})})]}),n(ye.Handle,{type:"source",position:r,isConnectable:t})]})}),vw="",dy={interaction:uy},cy=T.observer(()=>{const e=B(),{edges:t,nodes:r}=oy(e);return p(ye,{nodes:r,edges:t,onNodesChange:y.noop,onEdgesChange:y.noop,onConnect:y.noop,className:"interactions-viewer",fitView:!0,nodeTypes:dy,children:[n(ye.MiniMap,{}),n(ye.Controls,{}),n(ye.Background,{})]})}),py=T.observer(({opened:e,close:t})=>{const{freezeLayout:r}=m.useContext(Xe);return m.useEffect(()=>{r(e)},[e]),n(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:t,title:"Interactions",trapFocus:!0,onDragStart:i=>{i.stopPropagation()},styles:{body:{height:"90vh"},modal:{transform:"none !important"}},zIndex:300,children:n(cy,{})})});function hy({onClick:e,name:t,active:r,openSettings:i}){return p(a.Box,{sx:{position:"relative"},children:[n(a.UnstyledButton,{sx:s=>({display:"block",width:"100%",padding:s.spacing.xs,borderRadius:0,position:"relative",color:s.black,"&:hover":{backgroundColor:s.colors.gray[0]},backgroundColor:r?s.colors.gray[2]:"transparent"}),children:n(a.Group,{sx:{width:"calc(100% - 28px)"},onClick:e,children:n(a.Text,{size:"sm",children:t})})}),r&&n(a.Tooltip,{label:"Edit",position:"right",withinPortal:!0,children:n(a.ActionIcon,{onClick:i,variant:"light",color:"blue",sx:{position:"absolute",top:0,bottom:0,height:"100%",right:0,zIndex:0,borderRadius:0},children:n(V.IconAdjustments,{size:16})})})]})}const fy=T.observer(()=>{const e=B(),t=m.useCallback(i=>()=>e.views.setIDOfVIE(i),[e]),r=i=>{e.editor.open(["_VIEWS_",i])};return p(a.Box,{sx:{position:"relative"},children:[e.views.options.map(i=>n(hy,{active:e.views.idOfVIE===i.value,name:i.label,onClick:t(i.value),openSettings:()=>r(i.value)},i.value)),n(a.Divider,{variant:"dashed"}),n(a.Button,{variant:"subtle",rightIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",color:"blue",onClick:e.views.addARandomNewView,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"space-between"}},children:"Add a View"})]})}),gy=T.observer(()=>{const e=B(),t=()=>{if(!e.queries.firstID){e.editor.open(["_QUERIES_",""]);return}e.editor.open(["_QUERIES_",e.queries.firstID])},r=()=>{if(!e.filters.firstID){e.editor.open(["_FILTERS_",""]);return}e.editor.open(["_FILTERS_",e.filters.firstID])},[i,s]=m.useState(!1),o=()=>s(!0),u=()=>s(!1);return p(a.Navbar,{p:0,width:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},children:[p(a.Navbar.Section,{children:[p(a.Group,{grow:!0,spacing:0,sx:{...fs,button:{borderWidth:0,borderBottomWidth:1,borderColor:"#e9ecef"}},children:[n(a.Tooltip,{label:"Filters",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:r,children:n(V.IconFilter,{size:20})})}),n(a.Tooltip,{label:"Queries",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:t,children:n(V.IconDatabase,{size:20})})}),n(a.Tooltip,{label:"Interactions Viewer",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:o,children:n(V.IconLink,{size:20})})})]}),n(py,{opened:i,close:u})]}),n(a.Navbar.Section,{py:5,sx:{borderBottom:"1px solid #eee"},children:n(a.Text,{align:"center",sx:{userSelect:"none",cursor:"default"},children:"Views"})}),n(a.Navbar.Section,{grow:!0,sx:{overflow:"auto"},children:n(fy,{})}),n(a.Navbar.Section,{children:n(a.Group,{grow:!0,p:"md",pt:"sm",sx:{borderTop:"1px solid #eee"},children:n(a.Button,{size:"xs",leftIcon:n(V.IconSettings,{size:20}),onClick:()=>e.editor.open([]),children:"Settings"})})})]})}),my=T.observer(function({config:t}){return p(O,{children:[n(a.Checkbox,{checked:t.default_value,onChange:r=>t.setDefaultValue(r.currentTarget.checked),label:"Default Checked"}),n(Nn,{label:"Description",value:t.description,onChange:t.setDescription,styles:{root:{flexGrow:1,minHeight:"400px"}}})]})}),by=[{label:"2022",value:"YYYY"},{label:"202201",value:"YYYYMM"},{label:"20220101",value:"YYYYMMDD"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}],vy=T.observer(function({config:t}){return p(O,{children:[p(a.Group,{children:[n(a.Checkbox,{checked:t.required,onChange:r=>t.setRequired(r.currentTarget.checked),label:"Required"}),n(a.Checkbox,{checked:t.clearable,onChange:r=>t.setClearable(r.currentTarget.checked),disabled:t.max_days>0,label:"Clearable"}),n(a.Checkbox,{checked:t.allowSingleDateInRange,onChange:r=>t.setAllowSingleDateInRange(r.currentTarget.checked),label:"Allow choosing 1 day"})]}),n(a.Select,{data:by,label:"Display Format",value:t.inputFormat,onChange:t.setInputFormat}),n(ki,{label:"Default Value",config:t,value:t.default_value,onChange:t.setDefaultValue}),n(a.NumberInput,{label:"Max Days",description:p(a.Group,{position:"apart",children:[n(a.Text,{children:"Set 0 to disable."}),p(a.Group,{spacing:4,children:[n(a.Text,{children:"This feature requires"}),n(a.Text,{color:"blue",children:"Clearable"}),n(a.Text,{children:"to be checked"})]})]}),min:0,value:t.max_days,onChange:t.setMaxDays,hideControls:!0})]})}),fr=T.observer(({value:e,onChange:t})=>{const r=B(),i=m.useMemo(()=>r.queries.options,[r.queries.current]),s=i.length===0;return n(a.Select,{label:"Pick a query",data:i,value:e,onChange:t,allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:s,error:s?"You need to add a query in Data Settings":void 0})}),yy=`
438
+ `}})).actions(e=>({setPage(t){e.page=t},resetPage(){e.page=1},setLimit(t){e.limit=t}})).actions(e=>({afterCreate(){y.addDisposer(e,ae.reaction(()=>e.keywordString,e.resetPage,{fireImmediately:!1,delay:0})),y.addDisposer(e,ae.reaction(()=>e.limit,e.resetPage,{fireImmediately:!1,delay:0}))}})),dv=y.types.model("DataSourceModel",{id:y.types.string,type:y.types.enumeration("DataSourceType",[ce.HTTP,ce.MySQL,ce.Postgresql]),key:y.types.string,config:y.types.frozen(),tables:y.types.optional(lv,{}),columns:y.types.optional(sv,{}),tableData:y.types.optional(uv,{}),indexes:y.types.optional(ov,{}),table_schema:y.types.optional(y.types.string,""),table_name:y.types.optional(y.types.string,"")}).volatile(()=>({controllers:{tables:new AbortController,columns:new AbortController,indexes:new AbortController,tableData:new AbortController}})).actions(e=>({setKeywords(t,r){e.table_schema=t,e.table_name=r}})).actions(e=>({initKeywords(){if(e.tables.empty)return;const t=Object.keys(e.tables.data)[0],r=e.tables.data[t][0].table_name;e.setKeywords(t,r)}})).actions(e=>{const t=y.flow(function*(){var r;(r=e.controllers.tables)==null||r.abort(),e.controllers.tables=new AbortController,e.tables.state="loading";try{const i=yield*y.toGenerator($e.getRequest("POST",e.controllers.tables.signal)("/query",{type:e.type,key:e.key,query:e.tables.sql},{}));e.tables.data=v.groupBy(i,"table_schema"),e.tables.state="idle",e.tables.error=null,e.initKeywords()}catch(i){if(!Qe.isCancel(i)){e.tables.data={};const s=v.get(i,"message","unkown error");e.tables.error=v.get(i,"response.data.detail.message",s),e.tables.state="error"}}});return{loadTables:t,loadTablesIfEmpty(){e.tables.empty&&t()},loadColumns:y.flow(function*(){var r;(r=e.controllers.columns)==null||r.abort(),e.controllers.columns=new AbortController,e.columns.state="loading";try{e.columns.data=yield*y.toGenerator($e.getRequest("POST",e.controllers.columns.signal)("/query",{type:e.type,key:e.key,query:e.columns.sql},{})),e.columns.state="idle",e.columns.error=null}catch(i){if(Qe.isCancel(i))e.columns.state="idle",e.columns.error=null;else{e.columns.data=[];const s=v.get(i,"message","unkown error");e.columns.error=v.get(i,"response.data.detail.message",s),e.columns.state="error"}}}),loadIndexes:y.flow(function*(){var r;(r=e.controllers.indexes)==null||r.abort(),e.controllers.indexes=new AbortController,e.indexes.state="loading";try{e.indexes.data=yield*y.toGenerator($e.getRequest("POST",e.controllers.indexes.signal)("/query",{type:e.type,key:e.key,query:e.indexes.sql},{})),e.indexes.state="idle",e.indexes.error=null}catch(i){if(Qe.isCancel(i))e.indexes.state="idle",e.indexes.error=null;else{e.indexes.data=[];const s=v.get(i,"message","unkown error");e.indexes.error=v.get(i,"response.data.detail.message",s),e.indexes.state="error"}}}),loadTableData:y.flow(function*(){var i;(i=e.controllers.tableData)==null||i.abort(),e.controllers.tableData=new AbortController;const r=e.tableData;r.state="loading";try{r.data=yield*y.toGenerator($e.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:r.sql},{}));const[{total:s}]=yield*y.toGenerator($e.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:r.countSql},{}));r.total=Number(s),r.state="idle",r.error=null}catch(s){if(Qe.isCancel(s))r.state="idle",r.error=null;else{r.data=[];const o=v.get(s,"message","unkown error");r.error=v.get(s,"response.data.detail.message",o),r.state="error"}}})}}).actions(e=>({afterCreate(){y.addDisposer(e,ae.reaction(()=>e.columns.sql,e.loadColumns,{fireImmediately:!1,delay:500}))}})).actions(e=>({afterCreate(){y.addDisposer(e,ae.reaction(()=>e.indexes.sql,e.loadIndexes,{fireImmediately:!1,delay:500})),y.addDisposer(e,ae.reaction(()=>e.tableData.sql,e.loadTableData,{fireImmediately:!1,delay:0}))}})),cv=y.types.model("DataSourcesModel",{list:y.types.optional(y.types.array(dv),[])}).views(e=>({find({type:t,key:r}){return e.list.find(i=>i.key===r&&i.type===t)},get options(){return e.list.map(t=>({value:t.key,label:t.key}))}})).actions(e=>({replace(t){e.list.length=0,e.list.push(...t)}}));function nn(e){return{label:e,value:e,_type:"ACTION",_action_type:e,Icon:null,children:null}}function pv(e){switch(e._type){case"GROUP":case"ACTION":return null;case"global_variables":return["_GLOBAL_VARS_"];case"mock_context":return["_MOCK_CONTEXT_"];case"filter":return["_FILTERS_",e.value];case"sql_snippet":return["_SQL_SNIPPETS_",e.value];case"query":return["_QUERIES_",e.value];case"view":return["_VIEWS_",e.value];case"panel":return e.parentID?["_VIEWS_",e.parentID,"_PANELS_",e.value]:(console.error("[getPathFromOption] parentID is required"),null)}}const hv=y.types.model("EditorModel",{path:y.types.optional(y.types.frozen(),[]),settings_open:y.types.optional(y.types.boolean,!1)}).views(e=>({get navOptions(){const{filters:t,views:r,sqlSnippets:i,queries:s}=y.getRoot(e);return[{label:"Global Variables",value:"_GLOBAL_VARS_",_type:"global_variables",Icon:V.IconVariable},{label:"Mock Context",value:"_MOCK_CONTEXT_",Icon:V.IconCodeDots,_type:"mock_context"},{label:"Filters",value:"_FILTERS_",Icon:V.IconFilter,children:[...t.options,nn("_Add_A_Filter_")],_type:"GROUP"},{label:"SQL Snipepts",value:"_SQL_SNIPPETS_",Icon:V.IconCopy,children:[...i.options,nn("_Add_A_SQL_SNIPPET_")],_type:"GROUP"},{label:"Queries",value:"_QUERIES_",Icon:V.IconDatabase,children:[...s.options,nn("_Add_A_QUERY_")],_type:"GROUP"},{label:"Views",value:"_VIEWS_",Icon:V.IconBoxMultiple,children:[...r.editorOptions,nn("_Add_A_VIEW_")],_type:"GROUP"}]},isOptionActive(t,r){return t.length===0?!1:t[t.length-1]===r.value},isOptionOpened(t){const{path:r}=e;return r.length===0||!t.children||t.children.length===0?!1:r.includes(t.value)}})).actions(e=>({setPath(t){e.path=t},setSettingsOpen(t){e.settings_open=t}})).actions(e=>({open(t){e.setPath(t),e.setSettingsOpen(!0)},close(){e.setSettingsOpen(!1)},navigate(t){const r=pv(t);r&&e.setPath(r)}})),fv=y.types.model("MockContextModel",{current:y.types.optional(y.types.frozen(),{})}).views(e=>({get keys(){return Object.keys(e.current)},get entries(){return Object.entries(e.current)}})).actions(e=>({replace(t){e.current=t},get(t){return e.current[t]},set(t,r){e.current[t]=r}})),gv=y.types.model("PanelLayoutModel",{x:y.types.number,y:y.types.maybeNull(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(e=>({get json(){const{x:t,y:r,w:i,h:s,moved:o}=e;return{h:s,w:i,x:t,y:r===null?0:r,moved:o,static:e.static}}})).actions(e=>({set(t){const{x:r,y:i,w:s,h:o,moved:u}=t;e.x=r,e.y=i,e.w=s,e.h=o,e.moved=!!u,e.static=!!t.static}})),mv=y.types.model("PanelStyleBorderModel",{enabled:y.types.boolean}).views(e=>({get json(){const{enabled:t}=e;return{enabled:t}}})).actions(e=>({setEnabled(t){e.enabled=t}})),bv=y.types.model("PanelStyleModel",{border:mv}).views(e=>({get json(){const{border:t}=e;return{border:t.json}}})).actions(e=>({})),yv=y.types.model("PanelVizModel",{type:y.types.string,conf:y.types.frozen()}).views(e=>({get json(){return{conf:e.conf,type:e.type}}})).actions(e=>({setType(t){e.type=t},setConf(t){e.conf=t}})),vv=y.types.model("VariableModel",{name:y.types.string,size:y.types.string,weight:y.types.string,color:y.types.union(y.types.model({type:y.types.literal("static"),staticColor:y.types.string}),y.types.model({type:y.types.literal("continuous"),valueRange:y.types.array(y.types.number),colorRange:y.types.array(y.types.string)}),y.types.model({type:y.types.literal("piecewise")})),formatter:y.types.model({output:y.types.enumeration("Output",["number","percent"]),average:y.types.optional(y.types.boolean,!1),mantissa:y.types.number,trimMantissa:y.types.optional(y.types.boolean,!1)}),data_field:y.types.string,aggregation:y.types.union(y.types.model({type:y.types.enumeration(["none","sum","mean","median","min","max","CV","std"]),config:y.types.frozen()}),y.types.model({type:y.types.literal("quantile"),config:y.types.model({p:y.types.number})}))}).views(e=>({get json(){const{name:t,size:r,weight:i,color:s,formatter:o,data_field:u,aggregation:l}=e;return v.cloneDeep({name:t,size:r,color:s,weight:i,formatter:o,data_field:u,aggregation:l})}}));class xv{constructor(t){O(this,"origin");O(this,"copy");this.origin=t,this.copy=y.clone(t),ae.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!v.isEqual(y.getSnapshot(this.origin),y.getSnapshot(this.copy))}commit(){y.applySnapshot(this.origin,y.getSnapshot(this.copy))}update(t){y.applySnapshot(this.copy,t)}}const Cv=e=>new xv(e),ps=y.types.model({id:y.types.string,title:y.types.string,description:y.types.string,layout:gv,queryID:y.types.string,viz:yv,style:bv,variables:y.types.optional(y.types.array(vv),[])}).views(e=>({get query(){return y.getParentOfType(e,rn).queries.findByID(e.queryID)},get json(){const{id:t,title:r,description:i,queryID:s}=e;return{id:t,viz:e.viz.json,style:e.style.json,title:r,layout:e.layout.json,queryID:s,variables:e.variables.map(o=>o.json),description:i}}})).actions(e=>({setID(t){e.id=t},setTitle(t){e.title=t},setDescription(t){e.description=t},setQueryID(t){if(y.getParentOfType(e,rn).queries.findByID(t))e.queryID=t;else throw new Error(`Query with id ${t} does not exist`)},addVariable(t){e.variables.push(t)},removeVariable(t){e.variables.remove(t)},removeSelf(){y.getParent(e,2).removeByID(e.id)}})).actions(e=>({moveToView(t,r){y.getRoot(e).views.findByID(t).removePanelID(e.id),y.getRoot(e).views.findByID(r).appendPanelID(e.id),y.getRoot(e).editor.setPath(["_VIEWS_",r,"_PANELS_",e.id])}}));function hs(e){return{id:e,layout:{x:0,y:1/0,w:3,h:15},title:e,description:"<p></p>",queryID:"",viz:{type:Rn.name,conf:Rn.createConfig()},style:{border:{enabled:!0}}}}const fs=y.types.model("PanelsModel",{list:y.types.optional(y.types.array(ps),[])}).views(e=>({get json(){return e.list.map(t=>t.json)},findByID(t){return e.list.find(r=>r.id===t)},get idMap(){const t=new Map;return e.list.forEach(r=>{t.set(r.id,r)}),t}})).views(e=>({panelsByIDs(t){const r=[];t.forEach(s=>{const o=e.idMap.get(s);o?r.push(o):console.warn(`Panel is not found, id:${s}`)});const i=r.map(s=>({...s.layout.json,i:s.id}));return{panels:r,layouts:i}}})).views(e=>({editorOptions(t,r){const{panels:i}=e.panelsByIDs(r);i.length!==r.length&&console.warn(`Unfulfilled panels for View[${t}]`);const s=i.map(u=>({label:u.title?u.title:v.capitalize(u.viz.type),value:u.id,_type:"panel",parentID:t})),o="_Add_A_PANEL_";return s.push({label:o,value:o,_type:"ACTION",_action_type:o,parentID:t,Icon:null,children:null}),s}})).actions(e=>({replace(t){e.list=y.castToSnapshot(t)},append(t){e.list.push(t)},remove(t){e.list.splice(t,1)},removeByID(t){const r=e.list.findIndex(i=>i.id===t);r!==-1&&e.list.splice(r,1)},duplicateByID(t){const r=e.list.find(s=>s.id===t);if(!r){console.error(new Error(`[duplicate panel] Can't find a panel by id[${t}]`));return}const i=new Date().getTime().toString();return e.list.push({...r.json,id:i,layout:{...r.layout,y:1/0,moved:!1}}),i},replaceByIndex(t,r){e.list.splice(t,1,r)}})),gs=y.types.model("ViewModel_Division",{_name:y.types.literal(K.Division)}).views(e=>({get json(){const{_name:t}=e;return{_name:t}}})).actions(e=>({})),wv=()=>gs.create({_name:K.Division}),ur={enabled:!1,func_content:["function text({ filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
439
+ `)},_v=y.types.model("CustomModalTitleModel",{enabled:y.types.optional(y.types.boolean,!1),func_content:y.types.optional(y.types.string,"")}).views(e=>({get json(){const{enabled:t,func_content:r}=e;return{enabled:t,func_content:r}},get value(){const{enabled:t,func_content:r}=e,i=y.getParent(e,2),s=y.getRoot(e);if(!t)return i.name;try{const o={filters:s.filters.values,context:s.context.current};return new Function(`return ${r}`)()(o)}catch(o){return console.error(o),i.name}}})).actions(e=>({setEnabled(t){e.enabled=t},setFuncContent(t){e.func_content=t},replace({enabled:t,func_content:r}){e.enabled=t,e.func_content=r}})),ms=y.types.model("ViewModel_Modal",{_name:y.types.literal(K.Modal),width:y.types.string,height:y.types.string,custom_modal_title:y.types.optional(_v,ur)}).views(e=>({get json(){const{_name:t,width:r,height:i,custom_modal_title:s}=e;return{_name:t,width:r,height:i,custom_modal_title:s.json}}})).actions(e=>({setWidth(t){e.width=t},setHeight(t){e.height=t}})),Sv=()=>ms.create({_name:K.Modal,width:"90vw",height:"90vh"}),Tv=y.types.model("ViewModel_Tabs_Tab",{id:y.types.identifier,name:y.types.string,view_id:y.types.string,color:y.types.optional(y.types.string,"")}).views(e=>({get json(){const{id:t,name:r,view_id:i,color:s}=e;return{id:t,name:r,color:s,view_id:i}}})).actions(e=>({setName(t){e.name=t},setViewID(t){e.view_id=t},setColor(t){e.color=t}})),bs=y.types.model("ViewModel_Tabs",{_name:y.types.literal(K.Modal),tabs:y.types.optional(y.types.array(Tv),[]),variant:y.types.optional(y.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:y.types.optional(y.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:y.types.optional(y.types.boolean,!1)}).views(e=>({get json(){const{_name:t,variant:r,orientation:i,tabs:s,grow:o}=e;return{grow:o,tabs:s.map(u=>u.json),_name:t,variant:r,orientation:i}}})).actions(e=>({setVariant(t){e.variant=t},setOrientation(t){e.orientation=t},setGrow(t){e.grow=t},setTabs(t){e.tabs.length=0,e.tabs=y.cast(t)},addTab(){const t=ye.randomId(),r={id:t,name:t,view_id:""};e.tabs.push(r)},removeTab(t){e.tabs.splice(t,1)}})),kv=()=>bs.create({_name:K.Modal,tabs:[]}),ys=y.types.model({id:y.types.identifier,name:y.types.string,type:y.types.enumeration("EViewComponentType",[K.Division,K.Modal,K.Tabs]),config:y.types.union(gs,ms,bs),panelIDs:y.types.optional(y.types.array(y.types.string),[])}).views(e=>({get json(){const{id:t,name:r,type:i,config:s}=e;return{id:t,name:r,type:i,config:s.json,panelIDs:e.panelIDs}}})).actions(e=>({setName(t){e.name=t},setType(t){if(e.type!==t){switch(t){case K.Division:e.config=wv();break;case K.Modal:e.config=Sv();break;case K.Tabs:e.config=kv();break}e.type=t}},appendPanelID(t){e.panelIDs.push(t)},removePanelID(t){const r=e.panelIDs.filter(i=>i!==t);e.panelIDs.length=0,e.panelIDs.push(...r)}})).actions(e=>({})),vs=y.types.model("ViewsModel",{current:y.types.optional(y.types.array(ys),[]),visibleViewIDs:y.types.array(y.types.string),idOfVIE:y.types.string}).views(e=>({get json(){return e.current.map(t=>tn(t.json))},get idMap(){const t=new Map;return e.current.forEach(r=>{t.set(r.id,r)}),t},findByID(t){return e.current.find(r=>r.id===t)},get isVIETheFirstView(){return e.current.length===0||!e.idOfVIE?!1:e.current[0].id===e.idOfVIE},get firstVisibleView(){const[t]=e.visibleViewIDs;return e.current.find(({id:r})=>r===t)},get visibleViews(){const t=new Set(e.visibleViewIDs);return e.current.filter(({id:r})=>t.has(r))},get VIE(){return e.current.find(({id:t})=>t===e.idOfVIE)},get options(){return e.current.map(t=>({label:t.name,value:t.id,type:t.type}))},get editorOptions(){const t=y.getRoot(e).panels;return e.current.map(r=>({label:r.name,value:r.id,_type:"view",children:t.editorOptions(r.id,r.panelIDs)}))}})).actions(e=>({replace(t){e.current.replace(t)},addANewView(t,r,i,s){e.current.push({id:t,name:r,type:i,config:s,panelIDs:[]})},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const r=e.current.findIndex(i=>i.id===t);r!==-1&&e.current.splice(r,1)},replaceByIndex(t,r){e.current.splice(t,1,r)},setIDOfVIE(t){e.idOfVIE=t,e.visibleViewIDs.length=0,e.visibleViewIDs.push(t)},appendToVisibles(t){new Set(e.visibleViewIDs.map(i=>i)).has(t)||e.visibleViewIDs.push(t)}})).actions(e=>({addARandomNewView(){const t=new Date().getTime().toString();e.addANewView(t,K.Division,K.Division,{_name:K.Division}),e.setIDOfVIE(t)},removeVIE(){e.current.length!==1&&(e.removeByID(e.idOfVIE),e.setIDOfVIE(e.current[0].id))},rmVisibleViewID(t){const r=e.visibleViewIDs.findIndex(i=>i===t);r!==-1&&e.visibleViewIDs.splice(r,1)}}));function dr(e){const t=e.length>0?[e[0].id]:[],r=e.length>0?e[0].id:"";return{current:e.map(s=>{const{_name:o=s.type}=s.config;return{...s,config:{...s.config,_name:o},panelIDs:s.panelIDs}}),visibleViewIDs:t,idOfVIE:r}}const Dv=y.types.model({id:y.types.identifier,name:y.types.string,group:y.types.string,version:y.types.string,datasources:cv,filters:ns,queries:ls,sqlSnippets:ds,views:vs,panels:fs,context:cs,mock_context:fv,editor:hv,origin:y.types.maybe(y.types.frozen())}).views(e=>({get json(){return{id:e.id,name:e.name,group:e.group,views:e.views.json,panels:e.panels.json,filters:e.filters.json,version:e.version,definition:{queries:e.queries.json,sqlSnippets:e.sqlSnippets.json,mock_context:e.mock_context.current}}},get filtersChanged(){const t="filters.current";return!v.isEqual(y.getSnapshot(v.get(e,t)),v.get(e.origin,t))},get queriesChanged(){const t="queries.current",r=y.getSnapshot(v.get(e,t)).map(i=>v.pick(i,["id","name","key","type","sql","run_by","pre_process","post_process"]));return!v.isEqual(r,v.get(e.origin,t))},get sqlSnippetsChanged(){const t="sqlSnippets.current";return!v.isEqual(y.getSnapshot(v.get(e,t)),v.get(e.origin,t))},get viewsChanged(){const t="views.current";return!v.isEqual(y.getSnapshot(v.get(e,t)),v.get(e.origin,t))},get panelsChanged(){const t="panels.list";return!v.isEqual(y.getSnapshot(v.get(e,t)),v.get(e.origin,t))},get mockContextChanged(){const t="mock_context.current";return!v.isEqual(v.get(e,t),v.get(e.origin,t))},get payloadForSQL(){return{context:e.context.current,mock_context:e.mock_context.current,sqlSnippets:e.sqlSnippets.current,filterValues:e.filters.values}},get changed(){return this.filtersChanged||this.queriesChanged||this.sqlSnippetsChanged||this.viewsChanged||this.panelsChanged||this.mockContextChanged},get data(){return e.queries.current.map(({id:r,data:i})=>({id:r,data:i})).reduce((r,i)=>(r[i.id]=i.data,r),{})},getDataStuffByID(t){const r=e.queries.findByID(t);return r?{data:r.data.toJSON(),dataProxy:r.data,len:r.data.length,state:r.state,error:r.error}:{data:[],dataProxy:null,len:0,state:"idle",error:void 0}},getDataStateByID(t){var r;return((r=e.queries.findByID(t))==null?void 0:r.state)??[]},getDataErrorByID(t){var r;return((r=e.queries.findByID(t))==null?void 0:r.error)??[]}})).views(e=>({findQueryUsage(t){const r=e.panels.idMap,i=e.views.current.flatMap(u=>u.panelIDs.map(l=>r.get(l)).filter(l=>(l==null?void 0:l.queryID)===t).map(l=>({type:"panel",id:l.id,label:l.title?l.title:l.viz.type,views:[{id:u.id,label:u.name}]}))),s=e.views.idMap,o=e.filters.current.filter(u=>v.get(u,"config.options_query_id")===t).map(u=>({type:"filter",id:u.id,label:u.label,views:u.visibleInViewsIDs.map(l=>{var d;return{id:l,label:((d=s.get(l))==null?void 0:d.name)??l}})}));return i.concat(o)}})).actions(e=>({duplicatePanelByID(t,r){var s;const i=e.panels.duplicateByID(t);i&&((s=e.views.findByID(r))==null||s.appendPanelID(i))},removePanelByID(t,r){var i;e.panels.removeByID(t),(i=e.views.findByID(r))==null||i.removePanelID(t)},addANewPanel(t){var i;const r=new Date().getTime().toString();e.panels.append(hs(r)),(i=e.views.findByID(t))==null||i.appendPanelID(r)}})).actions(e=>({reset(){y.applySnapshot(e.filters.current,e.origin.filters.current),y.applySnapshot(e.queries.current,e.origin.queries.current),y.applySnapshot(e.sqlSnippets.current,e.origin.sqlSnippets.current),y.applySnapshot(e.views.current,e.origin.views.current),y.applySnapshot(e.panels.list,e.origin.panels.list),e.mock_context.current=e.origin.mock_context.current},resetFilters(){y.applySnapshot(e.filters.current,e.origin.filters.current)},updateCurrent(t){const{name:r,group:i,version:s,filters:o,views:u,panels:l,definition:{queries:d,sqlSnippets:c,mock_context:f={}}}=t;e.name=r,e.group=i,e.version=s,y.applySnapshot(e.filters.current,o),y.applySnapshot(e.views.current,dr(u).current),y.applySnapshot(e.panels.list,l),y.applySnapshot(e.queries.current,d),y.applySnapshot(e.sqlSnippets.current,c),e.mock_context.current=f}})),rn=y.types.snapshotProcessor(Dv,{preProcessor(e){return{...e,origin:e}},postProcessor(e){delete e.origin;const t=y.castToSnapshot(e.queries.current.map(r=>v.pick(r,["id","key","type","sql"])));return v.defaults({},{queries:{current:t}},e)}});function Iv(e,t){t.filters&&y.applySnapshot(e.filters.current,t.filters)}function cr({id:e,name:t,group:r,version:i,filters:s,views:o,panels:u,definition:{queries:l,sqlSnippets:d,mock_context:c={}}},f,g){return rn.create({id:e,name:t,group:r,version:i,datasources:{list:f},filters:rs(s),queries:{current:l},sqlSnippets:{current:d},context:{current:g},mock_context:{current:c},views:dr(o),panels:{list:u},editor:{}})}function pr(e){return b.useCallback(t=>t.provideValue(me.pluginManager,e.pluginManager).provideValue(me.vizManager,e.vizManager).provideValue(me.colorManager,e.colorManager),[])}const t1="",xs={"> button":{"&:first-of-type":{borderTopRightRadius:0,borderBottomRightRadius:0,borderRightWidth:.5},":not(:first-of-type):not(:last-of-type)":{borderTopRightRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5,borderRightWidth:.5},"&:last-of-type":{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5}}},Mv=T.observer(({saveDashboardChanges:e,headerSlot:t=null})=>{const r=oo.useNavigate(),i=N(),s=()=>{const f=JSON.stringify(i.json,null,2);Wy(i.name,f)},o=()=>{r(`/dashboard/${i.id}`)},u=Oe.useModals(),l=()=>{u.openConfirmModal({title:p(a.Group,{position:"left",children:[n(V.IconAlertTriangle,{size:18,color:"red"}),n(a.Text,{children:"There are unsaved changes"})]}),labels:{confirm:"Discard",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:o,zIndex:320,withCloseButton:!1})},d=()=>{u.openConfirmModal({title:p(a.Group,{position:"left",children:[n(V.IconAlertTriangle,{size:18,color:"red"}),n(a.Text,{children:"You are reverting changes"})]}),labels:{confirm:"Confirm",cancel:"Cancel"},confirmProps:{color:"red"},onCancel:()=>console.log("Cancel"),onConfirm:()=>i.reset(),zIndex:320,withCloseButton:!1})},c=i.changed;return n(a.Header,{height:60,px:"md",py:0,sx:{zIndex:299},children:p(a.Group,{position:"apart",sx:{height:60,position:"relative"},children:[n(a.Group,{children:n(a.Button,{size:"xs",color:c?"red":"green",leftIcon:n(V.IconArrowLeft,{size:20}),onClick:c?l:o,children:p(a.Group,{spacing:4,children:["End Editing",n(a.Text,{td:"underline",children:i.name})]})})}),t,p(a.Group,{position:"right",children:[n(a.Button,{variant:"filled",size:"xs",disabled:!i.views.VIE,onClick:()=>i.addANewPanel(i.views.idOfVIE),leftIcon:n(V.IconPlaylistAdd,{size:20}),children:"Add a Panel"}),p(a.Group,{spacing:0,sx:xs,children:[n(a.Tooltip,{label:"Download Schema",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:s,children:n(V.IconCode,{size:18})})}),n(a.Tooltip,{label:"Download Data",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:i.queries.downloadAllData,children:n(V.IconDownload,{size:18})})})]}),p(a.Group,{spacing:16,children:[n(a.Tooltip,{label:"Revert Changes",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",disabled:!c,onClick:d,children:n(V.IconRecycle,{size:20,color:"red"})})}),n(a.Button,{color:"green",variant:"filled",size:"xs",leftIcon:n(V.IconDeviceFloppy,{size:18}),onClick:e,disabled:!c,children:"Save Changes"})]})]})]})})}),n1="";function Av(e,t,r){const i=[];return e.filter(s=>"__INTERACTIONS"in s.viz.conf).forEach((s,o)=>{const u=t[s.id];u.data.interactions=v.get(u,"data.interactions",[]);const{__INTERACTIONS:l,__OPERATIONS:d,__TRIGGERS:c}=s.viz.conf;Object.entries(d).forEach(([f,g])=>{const{schemaRef:h,data:m}=g,{config:w}=m;switch(h){case"builtin:op:open-link":let C=w.urlTemplate.substring(0,100);w.urlTemplate.length>=20&&(C+="..."),u.type="interaction",u.data.interactions.push({schemaRef:h,urlTemplate:w.urlTemplate,shortURLTemplate:C});return;case"builtin:op:open_view":i.push({id:`OPERATION--${f}`,source:s.id,target:w.viewID,label:"Open View",style:{stroke:"rgba(0,0,0,0.8)"},type:"default"});return;case"builtin:op:set_filter_values":u.type="interaction",u.data.interactions.push({schemaRef:h,filters:Object.keys(w.dictionary).map(S=>({key:S,label:r[S]}))});return;case"builtin:op:clear_filter_values":u.type="interaction",u.data.interactions.push({schemaRef:h,filters:w.filter_keys.map(S=>({key:S,label:r[S]}))});return;default:return}})}),i}function $v(e,t){const r=e.filters.keyLabelMap;return{edges:Av(e.panels.list,t,r),edgeNodes:[]}}function Cs(e,t,r){return e*t+e*r}function zv(e,t,r){return e*t+(e-1)*r}const an=25,hr=40,ws=25,fr=350,Ev=150,Lv=150,_s=150,Ss=300,sn=40,Ts=25,Ov=300;function Pv(e,t){const r=v.keyBy(t,s=>s.id),i=[];return e.current.forEach((s,o)=>{s.panelIDs.forEach((u,l)=>{const d=Cs(l,sn,Ts)+hr,c=r[u];if(!c){i.push({id:u,_node_type:"panel",parentNode:s.id,data:{label:`!: ${u}`},position:{x:an,y:d},sourcePosition:ve.Position.Right,targetPosition:ve.Position.Left,style:{width:Ss,height:sn}});return}const f=c.title.trim()?`${c.title}`:c.viz.type;i.push({id:c.id,_node_type:"panel",parentNode:s.id,data:{label:f},position:{x:an,y:d},sourcePosition:ve.Position.Right,targetPosition:ve.Position.Left,style:{width:Ss,height:sn}})})}),i}const Vv={[K.Division]:"Div",[K.Modal]:"Modal",[K.Tabs]:"Tabs"},Bv=Wa;function Nv(e){return e.current.map((r,i)=>{const s=zv(r.panelIDs.length,sn,Ts)+hr+ws;let o=[];return r.type===K.Tabs&&(o=r.config.tabs.map(l=>l.view_id)),{id:r.id,_node_type:"view-root",_view_type:r.type,_view_level:0,_sub_view_ids:[],_tab_view_ids:o,data:{label:`${Vv[r.type]}:${r.name}`},position:{x:0,y:0},sourcePosition:ve.Position.Right,targetPosition:ve.Position.Left,className:"light",style:{backgroundColor:Bv[r.type],width:fr,height:s}}})}function Gv(e){const t=v.keyBy(e,r=>r.id);e.forEach(r=>{r._node_type!=="view-root"||r._view_type!==K.Tabs||r._tab_view_ids.forEach(i=>{t[i].parentNode=r.id})})}function qv(e){const t=Nv(e.views);Gv(t);const r=Pv(e.views,e.panels.list);return[...t,...r]}function Fv({nodeMap:e,nodes:t,edges:r}){t.forEach(i=>{i._node_type!=="view-root"||i._view_type!==K.Tabs||(i.sourcePosition=ve.Position.Bottom,i.style.width=fr+an*2,i.style.height=ws+i._tab_view_ids.reduce((s,o)=>{const u=e[o];u.position.y=s,u.position.x=an;const l=u.style.height;return s+l+20},hr))})}function Wv({nodeMap:e,nodes:t,edges:r}){r.filter(i=>i.label==="Open View").forEach(i=>{const s=e[i.source],o=e[i.target];if(!s||!o||!s.parentNode)return;const u=e[s.parentNode];u._node_type!=="view-root"||o._node_type!=="view-root"||(o._view_level+=1+u._view_level,u._sub_view_ids.push(o.id))}),t.sort((i,s)=>i._node_type==="view-root"&&s._node_type==="view-root"?i._view_level-s._view_level:i._node_type!=="view-root"&&s._node_type!=="view-root"?0:i._node_type==="view-root"?-1:1)}function jv({nodeMap:e,nodes:t,edges:r}){const i={};r.forEach(s=>{if(s.label!=="Open View")return;const o=e[s.source],u=e[s.target];if(o&&u&&o.parentNode){const l=e[o.parentNode],d=l.position.x,c=Number(v.get(u,"style.height",0)),f=Number(l.style.width);u.position.x=d+f+Ov,l._view_level===0&&u._sub_view_ids.length===0&&(o.sourcePosition=ve.Position.Left,u.targetPosition=ve.Position.Right,u.position.x*=-1);const h=u.position.x,m=v.get(i,h,0);u.position.y=m,i[h]=m+c+_s}})}function Yv({nodeMap:e,nodes:t,edges:r}){const i=new Set,s=new Set;r.forEach(u=>{i.add(u.source),s.add(u.target)}),t.filter(u=>u._node_type!=="view-root"||u.id==="Main"||u.parentNode?!1:!i.has(u.id)&&!s.has(u.id)).forEach((u,l)=>{u.position.x=Cs(l,fr,Lv),u.position.y=0-Ev-_s})}function Rv({nodeMap:e,nodes:t,edges:r}){const i={nodeMap:e,nodes:t,edges:r};return Yv(i),Wv(i),Fv(i),jv(i),{nodes:t,edges:r}}function Qv(e){const t=qv(e),r=v.keyBy(t,d=>d.id),{edges:i,edgeNodes:s}=$v(e,r),o=[...t,...s],u=v.keyBy(o,d=>d.id),l={edges:v.uniqBy(i,d=>d.id),nodes:o,nodeMap:u};return Rv(l)}const r1="",gr={"builtin:op:open-link":n(a.ThemeIcon,{color:"blue",size:20,radius:"xl",children:n(V.IconCircleDashed,{size:14})}),"builtin:op:set_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(V.IconCircleDot,{size:14})}),"builtin:op:clear_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(V.IconCircleOff,{size:14})})};function Uv(e){const t=[];return e.forEach(r=>{switch(r.schemaRef){case"builtin:op:open-link":t.push({key:r.urlTemplate,icon:gr[r.schemaRef],text:p(a.Group,{spacing:4,children:[n(a.Text,{children:"Open: "}),n(a.Text,{color:"dimmed",children:r.shortURLTemplate})]})});return;case"builtin:op:set_filter_values":r.filters.forEach(({key:i,label:s})=>{t.push({key:r.schemaRef+i,icon:gr[r.schemaRef],text:n(a.Group,{spacing:4,children:p(a.Text,{children:["Set Filter: ",s]})})})});return;case"builtin:op:clear_filter_values":r.filters.forEach(({key:i,label:s})=>{t.push({key:r.schemaRef+i,icon:gr[r.schemaRef],text:n(a.Group,{spacing:4,children:p(a.Text,{children:["Clear Filter: ",s]})})})});return}}),t}const Xv=b.memo(({data:e,isConnectable:t,sourcePosition:r=ve.Position.Right,targetPosition:i=ve.Position.Left,...s})=>{const o=b.useMemo(()=>Uv(e.interactions),[e.interactions]);return p(P,{children:[n(ve.Handle,{type:"target",position:i,isConnectable:t}),n(a.Box,{sx:{position:"absolute",top:0,right:0},children:n(k.ChevronsUpRight,{size:12})}),p(a.HoverCard,{shadow:"xl",withinPortal:!0,children:[n(a.HoverCard.Target,{children:n(a.Text,{children:e.label})}),n(a.HoverCard.Dropdown,{children:n(a.List,{spacing:"xs",size:"sm",center:!0,children:o.map(u=>n(a.List.Item,{icon:u.icon,children:u.text},u.key))})})]}),n(ve.Handle,{type:"source",position:r,isConnectable:t})]})}),i1="",Zv={interaction:Xv},Kv=T.observer(()=>{const e=N(),{edges:t,nodes:r}=Qv(e);return p(ve,{nodes:r,edges:t,onNodesChange:v.noop,onEdgesChange:v.noop,onConnect:v.noop,className:"interactions-viewer",fitView:!0,nodeTypes:Zv,children:[n(ve.MiniMap,{}),n(ve.Controls,{}),n(ve.Background,{})]})}),Jv=T.observer(({opened:e,close:t})=>{const{freezeLayout:r}=b.useContext(Xe);return b.useEffect(()=>{r(e)},[e]),n(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:t,title:"Interactions",trapFocus:!0,onDragStart:i=>{i.stopPropagation()},styles:{body:{height:"90vh"},modal:{transform:"none !important"}},zIndex:300,children:n(Kv,{})})});function Hv({onClick:e,name:t,active:r,openSettings:i}){return p(a.Box,{sx:{position:"relative"},children:[n(a.UnstyledButton,{sx:s=>({display:"block",width:"100%",padding:s.spacing.xs,borderRadius:0,position:"relative",color:s.black,"&:hover":{backgroundColor:s.colors.gray[0]},backgroundColor:r?s.colors.gray[2]:"transparent"}),children:n(a.Group,{sx:{width:"calc(100% - 28px)"},onClick:e,children:n(a.Text,{size:"sm",children:t})})}),r&&n(a.Tooltip,{label:"Edit",position:"right",withinPortal:!0,children:n(a.ActionIcon,{onClick:i,variant:"light",color:"blue",sx:{position:"absolute",top:0,bottom:0,height:"100%",right:0,zIndex:0,borderRadius:0},children:n(V.IconAdjustments,{size:16})})})]})}const ex=T.observer(()=>{const e=N(),t=b.useCallback(i=>()=>e.views.setIDOfVIE(i),[e]),r=i=>{e.editor.open(["_VIEWS_",i])};return p(a.Box,{sx:{position:"relative"},children:[e.views.options.map(i=>n(Hv,{active:e.views.idOfVIE===i.value,name:i.label,onClick:t(i.value),openSettings:()=>r(i.value)},i.value)),n(a.Divider,{variant:"dashed"}),n(a.Button,{variant:"subtle",rightIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",color:"blue",onClick:e.views.addARandomNewView,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"space-between"}},children:"Add a View"})]})}),tx=T.observer(()=>{const e=N(),t=()=>{if(!e.queries.firstID){e.editor.open(["_QUERIES_",""]);return}e.editor.open(["_QUERIES_",e.queries.firstID])},r=()=>{if(!e.filters.firstID){e.editor.open(["_FILTERS_",""]);return}e.editor.open(["_FILTERS_",e.filters.firstID])},[i,s]=b.useState(!1),o=()=>s(!0),u=()=>s(!1);return p(a.Navbar,{p:0,width:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},children:[p(a.Navbar.Section,{children:[p(a.Group,{grow:!0,spacing:0,sx:{...xs,button:{borderWidth:0,borderBottomWidth:1,borderColor:"#e9ecef"}},children:[n(a.Tooltip,{label:"Filters",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:r,children:n(V.IconFilter,{size:20})})}),n(a.Tooltip,{label:"Queries",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:t,children:n(V.IconDatabase,{size:20})})}),n(a.Tooltip,{label:"Interactions Viewer",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:o,children:n(V.IconLink,{size:20})})})]}),n(Jv,{opened:i,close:u})]}),n(a.Navbar.Section,{py:5,sx:{borderBottom:"1px solid #eee"},children:n(a.Text,{align:"center",sx:{userSelect:"none",cursor:"default"},children:"Views"})}),n(a.Navbar.Section,{grow:!0,sx:{overflow:"auto"},children:n(ex,{})}),n(a.Navbar.Section,{children:n(a.Group,{grow:!0,p:"md",pt:"sm",sx:{borderTop:"1px solid #eee"},children:n(a.Button,{size:"xs",leftIcon:n(V.IconSettings,{size:20}),onClick:()=>e.editor.open([]),children:"Settings"})})})]})}),nx=T.observer(function({config:t}){return p(P,{children:[n(a.Checkbox,{checked:t.default_value,onChange:r=>t.setDefaultValue(r.currentTarget.checked),label:"Default Checked"}),n(Nn,{label:"Description",value:t.description,onChange:t.setDescription,styles:{root:{flexGrow:1,minHeight:"400px"}}})]})}),rx=[{label:"2022",value:"YYYY"},{label:"202201",value:"YYYYMM"},{label:"20220101",value:"YYYYMMDD"},{label:"2022-01",value:"YYYY-MM"},{label:"2022-01-01",value:"YYYY-MM-DD"}],ix=T.observer(function({config:t}){return p(P,{children:[p(a.Group,{children:[n(a.Checkbox,{checked:t.required,onChange:r=>t.setRequired(r.currentTarget.checked),label:"Required"}),n(a.Checkbox,{checked:t.clearable,onChange:r=>t.setClearable(r.currentTarget.checked),disabled:t.max_days>0,label:"Clearable"}),n(a.Checkbox,{checked:t.allowSingleDateInRange,onChange:r=>t.setAllowSingleDateInRange(r.currentTarget.checked),label:"Allow choosing 1 day"})]}),n(a.Select,{data:rx,label:"Display Format",value:t.inputFormat,onChange:t.setInputFormat}),n(Mi,{label:"Default Value",config:t,value:t.default_value,onChange:t.setDefaultValue}),n(a.NumberInput,{label:"Max Days",description:p(a.Group,{position:"apart",children:[n(a.Text,{children:"Set 0 to disable."}),p(a.Group,{spacing:4,children:[n(a.Text,{children:"This feature requires"}),n(a.Text,{color:"blue",children:"Clearable"}),n(a.Text,{children:"to be checked"})]})]}),min:0,value:t.max_days,onChange:t.setMaxDays,hideControls:!0})]})}),mr=T.observer(({value:e,onChange:t})=>{const r=N(),i=b.useMemo(()=>r.queries.options,[r.queries.current]),s=i.length===0;return n(a.Select,{label:"Pick a query",data:i,value:e,onChange:t,allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:s,error:s?"You need to add a query in Data Settings":void 0})}),ax=`
360
440
  // row
361
441
  {
362
442
  label: string;
363
443
  value: string;
364
444
  description?: string; // optional
365
445
  }
366
- `,xs=()=>{const[e,t]=m.useState(!1);return p(O,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(r=>!r),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(at.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:yy})})]})},xy=T.observer(function({config:t}){const r=()=>{t.addStaticOption({label:"",value:""})},i=t.static_options,s=[...i];return p(O,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:o=>t.setMinWidth(o.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),p(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&p(O,{children:[n(a.Overlay,{opacity:.8,color:"#000",sx:{left:"-5px",right:"-5px",top:"-5px",bottom:"-5px"}}),n(a.Center,{sx:{position:"absolute",top:0,left:0,zIndex:200,height:"100%",width:"100%"},children:n(a.Text,{color:"white",size:16,children:"Using query"})})]}),i.length>0&&n(a.MultiSelect,{label:"Default Selection",data:s,value:[...t.default_value],onChange:t.setDefaultValue}),i.map((o,u)=>p(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[u].label,onChange:l=>{t.static_options[u].setLabel(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[u].value,onChange:l=>{t.static_options[u].setValue(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(u),sx:{position:"absolute",top:28,right:5},children:n(D.Trash,{size:16})})]},u)),n(a.Button,{mt:10,size:"xs",color:"blue",leftIcon:n(D.PlaylistAdd,{size:20}),onClick:r,sx:{width:"50%"},mx:"auto",children:"Add an Option"})]}),n(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),n(a.NumberInput,{value:t.default_selection_count,onChange:t.setDefaultSelectionCount,label:"Select first N options by default"}),n(fr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(xs,{})]})}),Cy=T.observer(function({config:t}){const r=()=>{t.addStaticOption({label:"",value:""})},i=t.static_options,s=[{label:"No default selection",value:""},...i];return p(O,{children:[n(a.Checkbox,{checked:t.required,onChange:o=>t.setRequired(o.currentTarget.checked),label:"Required"}),n(a.TextInput,{label:"Width",value:t.width,onChange:o=>t.setWidth(o.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),p(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&p(O,{children:[n(a.Overlay,{opacity:.8,color:"#000",sx:{left:"-5px",right:"-5px",top:"-5px",bottom:"-5px"}}),n(a.Center,{sx:{position:"absolute",top:0,left:0,zIndex:200,height:"100%",width:"100%"},children:n(a.Text,{color:"white",size:16,children:"Using query"})})]}),i.length>0&&n(a.Select,{label:"Default Selection",data:s,value:t.default_value,onChange:t.setDefaultValue}),i.map((o,u)=>p(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[u].label,onChange:l=>{t.static_options[u].setLabel(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[u].value,onChange:l=>{t.static_options[u].setValue(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(u),sx:{position:"absolute",top:28,right:5},children:n(D.Trash,{size:16})})]},u)),n(a.Button,{size:"xs",color:"blue",leftIcon:n(D.PlaylistAdd,{size:20}),onClick:r,sx:{width:"50%"},mx:"auto",children:"Add an Option"})]}),n(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),n(a.Checkbox,{checked:t.default_selection_count===1,onChange:o=>t.setDefaultSelectionCount(o.currentTarget.checked?1:0),label:"Select the first option by default"}),n(fr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(xs,{})]})}),wy=T.observer(function({config:t}){return p(O,{children:[n(a.TextInput,{label:"Default Value",value:t.default_value,onChange:r=>{t.setDefaultValue(r.currentTarget.value)}}),n(a.Checkbox,{checked:t.required,onChange:r=>t.setRequired(r.currentTarget.checked),label:"Required"})]})}),_y=`
446
+ `,ks=()=>{const[e,t]=b.useState(!1);return p(P,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(r=>!r),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(st.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:ax})})]})},sx=T.observer(function({config:t}){const r=()=>{t.addStaticOption({label:"",value:""})},i=t.static_options,s=[...i];return p(P,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:o=>t.setMinWidth(o.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),p(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&p(P,{children:[n(a.Overlay,{opacity:.8,color:"#000",sx:{left:"-5px",right:"-5px",top:"-5px",bottom:"-5px"}}),n(a.Center,{sx:{position:"absolute",top:0,left:0,zIndex:200,height:"100%",width:"100%"},children:n(a.Text,{color:"white",size:16,children:"Using query"})})]}),i.length>0&&n(a.MultiSelect,{label:"Default Selection",data:s,value:[...t.default_value],onChange:t.setDefaultValue}),i.map((o,u)=>p(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[u].label,onChange:l=>{t.static_options[u].setLabel(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[u].value,onChange:l=>{t.static_options[u].setValue(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(u),sx:{position:"absolute",top:28,right:5},children:n(k.Trash,{size:16})})]},u)),n(a.Button,{mt:10,size:"xs",color:"blue",leftIcon:n(k.PlaylistAdd,{size:20}),onClick:r,sx:{width:"50%"},mx:"auto",children:"Add an Option"})]}),n(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),n(a.NumberInput,{value:t.default_selection_count,onChange:t.setDefaultSelectionCount,label:"Select first N options by default"}),n(mr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(ks,{})]})}),ox=T.observer(function({config:t}){const r=()=>{t.addStaticOption({label:"",value:""})},i=t.static_options,s=[{label:"No default selection",value:""},...i];return p(P,{children:[n(a.Checkbox,{checked:t.required,onChange:o=>t.setRequired(o.currentTarget.checked),label:"Required"}),n(a.TextInput,{label:"Width",value:t.width,onChange:o=>t.setWidth(o.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),p(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&p(P,{children:[n(a.Overlay,{opacity:.8,color:"#000",sx:{left:"-5px",right:"-5px",top:"-5px",bottom:"-5px"}}),n(a.Center,{sx:{position:"absolute",top:0,left:0,zIndex:200,height:"100%",width:"100%"},children:n(a.Text,{color:"white",size:16,children:"Using query"})})]}),i.length>0&&n(a.Select,{label:"Default Selection",data:s,value:t.default_value,onChange:t.setDefaultValue}),i.map((o,u)=>p(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[u].label,onChange:l=>{t.static_options[u].setLabel(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[u].value,onChange:l=>{t.static_options[u].setValue(l.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(u),sx:{position:"absolute",top:28,right:5},children:n(k.Trash,{size:16})})]},u)),n(a.Button,{size:"xs",color:"blue",leftIcon:n(k.PlaylistAdd,{size:20}),onClick:r,sx:{width:"50%"},mx:"auto",children:"Add an Option"})]}),n(a.Divider,{label:"Or fetch options from database",labelPosition:"center"}),n(a.Checkbox,{checked:t.default_selection_count===1,onChange:o=>t.setDefaultSelectionCount(o.currentTarget.checked?1:0),label:"Select the first option by default"}),n(mr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(ks,{})]})}),lx=T.observer(function({config:t}){return p(P,{children:[n(a.TextInput,{label:"Default Value",value:t.default_value,onChange:r=>{t.setDefaultValue(r.currentTarget.value)}}),n(a.Checkbox,{checked:t.required,onChange:r=>t.setRequired(r.currentTarget.checked),label:"Required"})]})}),ux=`
367
447
  // row
368
448
  {
369
449
  label: string;
@@ -371,7 +451,7 @@ Check the top-level render call using <`+E+">.")}return I}}function Ws(_,I){{if(
371
451
  parent_value: string;
372
452
  description?: string;
373
453
  }
374
- `,Sy=()=>{const[e,t]=m.useState(!1);return p(O,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(r=>!r),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(at.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:_y})})]})},Ty=T.observer(function({config:t}){return p(O,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:r=>t.setMinWidth(r.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Fetch options from database",labelPosition:"center"}),n(a.NumberInput,{value:t.default_selection_count,onChange:t.setDefaultSelectionCount,label:"Select first N options by default"}),n(fr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(Sy,{})]})}),Dy=T.observer(function({filter:t}){const[r,i]=m.useState(t.plainDefaultValue);return m.useEffect(()=>{i(t.plainDefaultValue)},[t]),p(a.Box,{sx:{maxWidth:"480px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Preview"}),n(zi,{filter:t,value:r,onChange:i}),n(a.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),n(at.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(t,null,4)})]})}),ky={select:Cy,"multi-select":xy,"tree-select":Ty,"text-input":wy,checkbox:my,"date-range":vy},Iy=[{label:"Select",value:"select"},{label:"Multi Select",value:"multi-select"},{label:"Tree Select",value:"tree-select"},{label:"Text Input",value:"text-input"},{label:"Checkbox",value:"checkbox"},{label:"Date Range",value:"date-range"}],My=T.observer(function({filter:t}){const r=B(),i=m.useMemo(()=>ky[t.type],[t.type]);return p(a.Group,{grow:!0,spacing:20,align:"top",children:[p(a.Box,{sx:{maxWidth:"600px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Edit"}),p(a.Stack,{children:[p(a.Group,{noWrap:!0,children:[n(a.NumberInput,{label:"Placement Order",required:!0,value:t.order,onChange:t.setOrder,hideControls:!0,sx:{flexGrow:"1 !important"}}),t.auto_submit_supported&&n(a.Checkbox,{label:"Submit automatically",checked:t.auto_submit,onChange:s=>t.setAutoSubmit(s.currentTarget.checked),mt:22})]}),n(a.MultiSelect,{label:"Visible in...",data:r.views.options,value:[...t.visibleInViewsIDs],onChange:t.setVisibleInViewsIDs}),n(a.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,value:t.key,onChange:s=>{t.setKey(s.currentTarget.value)}}),n(a.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:t.label,onChange:s=>{t.setLabel(s.currentTarget.value)}}),n(a.Select,{label:"Widget",data:Iy,required:!0,value:t.type,onChange:t.setType}),n(i,{config:t.config})]})]}),n(Dy,{filter:t})]})}),Ay=T.observer(({id:e})=>{const t=Pe.useModals(),r=B();if(e==="")return null;const i=r.filters.findByID(e);if(!i)return p(a.Text,{size:14,children:["Filter by ID[",e,"] is not found"]});const s=()=>{r.editor.setPath(["_FILTERS_",""])},o=()=>{t.openConfirmModal({title:"Delete this filter?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.filters.removeByID(e),s()},zIndex:320})};return p(a.Stack,{sx:{maxWidth:"1100px",height:"100vh"},spacing:"sm",pb:30,children:[n(a.Group,{position:"right",pt:10,children:n(a.Button,{size:"xs",color:"red",leftIcon:n(D.Trash,{size:16}),onClick:o,children:"Delete this filter"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(My,{filter:i})})]})}),zy=T.observer(()=>{const e=B(),[t,r]=m.useState(()=>JSON.stringify(e.mock_context.current,null,4)),i=()=>{try{e.mock_context.replace(JSON.parse(t))}catch(o){Lt.showNotification({title:"Failed",message:o.message,color:"red"})}},s=m.useMemo(()=>{try{return JSON.stringify(JSON.parse(t))!==JSON.stringify(e.mock_context.current)}catch{return!1}},[t,e.mock_context.current]);return p(a.Stack,{sx:{border:"1px solid #eee",borderLeft:"none",borderRight:"none",flexGrow:1,maxWidth:"unset"},children:[n(a.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:n(a.Text,{weight:500,children:"Mock Context"})}),p(a.Group,{grow:!0,px:"md",pb:"md",pt:0,sx:{flexGrow:1,position:"relative",alignItems:"flex-start"},children:[p(a.Stack,{spacing:10,sx:{maxWidth:"unset !important"},children:[n(a.Text,{children:"A valid json string is required"}),n(a.JsonInput,{validationError:"Invalid json",formatOnBlur:!0,autosize:!0,minRows:30,value:t,onChange:r,sx:{flexGrow:1}})]}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",sx:{position:"absolute",right:12,top:0},disabled:!s,onClick:i,children:n(D.DeviceFloppy,{size:20})})]})]})}),$y=T.observer(()=>{const{panel:e}=xe();return n(Nn,{label:"Description",value:e.description,onChange:e.setDescription,styles:{root:{flexGrow:1}}})}),Ey=T.observer(()=>{const{panel:e}=xe(),{style:t}=e;return n(O,{children:n(a.Switch,{label:"Border",checked:t.border.enabled,onChange:r=>t.border.setEnabled(r.currentTarget.checked)})})}),Ly=T.observer(()=>{const{panel:e}=xe(),{title:t,setTitle:r}=e,[i,s]=ve.useInputState(t),o=t!==i,u=m.useCallback(()=>{o&&r(i)},[o,i]);return m.useEffect(()=>{s(t)},[t]),n(a.TextInput,{value:i,onChange:s,label:p(a.Group,{children:[n(a.Text,{children:"Panel Title"}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!o,onClick:u,children:n(D.DeviceFloppy,{size:20})})]}),styles:{label:{display:"block",paddingBottom:"4px"}}})});function Py(){return p(a.Stack,{sx:{height:"100%"},children:[n(a.Divider,{label:"Style",labelPosition:"center",variant:"dashed"}),n(Ey,{}),n(a.Divider,{label:"Info",labelPosition:"center",variant:"dashed"}),n(Ly,{}),n($y,{})]})}const Oy=({queryID:e})=>{const t=B(),{state:r,error:i}=t.getDataStuffByID(e),s=m.useMemo(()=>t.queries.findByID(e),[t,e]);return r==="loading"?null:i?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:i}):s!=null&&s.stateMessage?n(a.Text,{color:"gray",align:"center",children:s.stateMessage}):null},Vy={width:"fit-content",minWidth:"100%",tableLayout:"fixed",tr:{width:"fit-content"},th:{position:"relative"},".resizer":{position:"absolute",right:0,top:"50%",transform:"translateY(-50%)",cursor:"col-resize",userSelect:"none",touchAction:"none"},".resizer.isResizing":{color:"#228be6",opacity:"1"},"@media (hover: hover)":{".resizer":{opacity:"0"},"*:hover > .resizer":{color:"#228be6",opacity:"1"}}};function Cs({data:e}){const t=m.useMemo(()=>{if(!Array.isArray(e)||e.length===0)return[];const i=Ee.createColumnHelper();return Object.keys(e[0]).map(s=>i.accessor(s,{cell:o=>o.getValue()}))},[e]),r=Ee.useReactTable({data:e,columns:t,columnResizeMode:"onChange",getCoreRowModel:Ee.getCoreRowModel()});return e.length===0?n(a.Box,{sx:{height:"5em"}}):n(Ae,{children:p(a.Table,{sx:Vy,children:[n("thead",{children:r.getHeaderGroups().map(i=>n("tr",{children:i.headers.map(s=>p("th",{style:{width:s.getSize()},children:[s.isPlaceholder?null:Ee.flexRender(s.column.columnDef.header,s.getContext()),n(a.ActionIcon,{onMouseDown:s.getResizeHandler(),onTouchStart:s.getResizeHandler(),className:`resizer ${s.column.getIsResizing()?"isResizing":""}`,children:n(D.ArrowBarToRight,{})})]},s.id))},i.id))}),n("tbody",{children:r.getRowModel().rows.map(i=>n("tr",{children:i.getVisibleCells().map(s=>n("td",{children:n(Ae,{children:Ee.flexRender(s.column.columnDef.cell,s.getContext())})},s.id))},i.id))})]})})}const ws=T.observer(function({id:t}){const r=B(),{data:i,state:s}=r.getDataStuffByID(t),o=s==="loading",u=()=>{r.queries.refetchDataByQueryID(t)},l=()=>{r.queries.downloadDataByQueryID(t)},d=m.useMemo(()=>Array.isArray(i)?i.slice(0,10):[],[i]),c=!Array.isArray(i)||i.length===0;return p(a.Stack,{sx:{border:"1px solid #eee"},children:[p(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[p(a.Group,{position:"left",children:[n(a.Text,{weight:500,children:"Preview Data"}),i.length>10&&p(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",i.length]})]}),p(a.Group,{pr:15,children:[n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:o,onClick:u,children:n(D.Refresh,{size:15})}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:o||c,onClick:l,children:n(D.Download,{size:15})})]})]}),p(a.Box,{sx:{position:"relative",overflow:"auto"},children:[n(a.LoadingOverlay,{visible:o}),n(Oy,{queryID:t}),n(Cs,{data:d})]})]})}),By=T.observer(function(){const t=B(),{panel:{queryID:r,setQueryID:i}}=xe(),s=()=>{t.editor.setPath(["_QUERIES_",r])};return p(a.Stack,{children:[p(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[n(a.Text,{children:"Use query"}),n(a.Select,{data:t.queries.options,value:r,onChange:i,allowDeselect:!1,clearable:!1,sx:{flexGrow:"1 !important"},maxDropdownHeight:300,rightSection:r&&n(a.Tooltip,{label:"Open this query",children:n(a.ActionIcon,{variant:"subtle",color:"blue",onClick:s,children:n(V.IconArrowCurveRight,{size:16})})})})]}),n(ws,{id:r})]})}),Ny=T.observer(({height:e})=>{const t=B(),{data:r,loading:i,error:s,panel:{viz:o,queryID:u}}=xe(),l=t.queries.findByID(u);return n(La,{viz:o,data:r,loading:i,error:s,query:l,height:e})}),Gy=T.observer(()=>{const{panel:{title:e,style:{border:t}}}=xe();return n(Ae,{children:n(a.Box,{sx:{height:"100%",flexGrow:0,flexShrink:0,width:"600px"},children:p(a.Stack,{mt:24,spacing:5,sx:{width:"600px",height:"450px",background:"transparent",borderRadius:"5px",border:"1px solid #e9ecef",borderWidth:t.enabled?"1px":"0px"},children:[p(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[n(a.Group,{children:n(Ei,{})}),n(a.Group,{grow:!0,position:"center",children:n(a.Text,{lineClamp:1,weight:"bold",children:e})}),n(a.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),n(a.Group,{px:5,pb:5,sx:{flexGrow:1},children:n(Ny,{height:"410px"})})]})})})}),gr={name:"new_var",size:"1rem",weight:"initial",color:{type:"static",staticColor:"Red"},data_field:"",aggregation:{type:"sum",config:{}},formatter:{output:"number",mantissa:0,trimMantissa:!1,average:!1}};class qy{constructor(t){P(this,"panel");P(this,"selected");this.panel=t,ae.makeAutoObservable(this,{},{deep:!1,autoBind:!0})}get variables(){return this.panel.variables}addNew(){const t=this.panel.variables.filter(r=>r.name.startsWith(gr.name)).length;this.panel.addVariable(y.cloneDeep({...gr,name:`${gr.name}${t||""}`})),this.selected=y.last(this.panel.variables)}select(t){this.selected=t}remove(t){this.selected===t&&(this.selected=void 0);const r=this.panel.variables.indexOf(t);if(this.panel.removeVariable(t),!this.selected&&!y.isEmpty(this.panel.variables)){const i=Math.min(this.panel.variables.length-1,r);this.selected=this.panel.variables[i]}}}function Fy(){const{panel:e}=xe();return Z.useCreation(()=>new qy(e),[e])}const Wy=m.forwardRef(function({value:t,onChange:r,data:i,withStyle:s=!0},o){const u=(l,d)=>{const c=y.cloneDeep(t);y.set(c,l,d),r(c)};return p(a.Box,{px:"sm",py:"md",ref:o,children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:l=>u("name",l.currentTarget.value)}),n(U,{label:"Data Field",required:!0,data:i,value:t.data_field,onChange:l=>u("data_field",l)})]}),n(Ft,{label:"Aggregation",value:t.aggregation,onChange:l=>u("aggregation",l)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(Ve,{value:t.formatter,onChange:l=>u("formatter",l)}),s&&n(Ki,{value:t,onChange:r})]})}),_s=a.createStyles(e=>({root:{height:"100%",overflow:"hidden",".var-list-container":{"& > *":{height:"100%"},width:250,height:"100%"},".var-list-actions":{height:"fit-content",flexShrink:0,width:"100%"},".var-list":{flex:"1 1 auto",overflow:"auto",minHeight:0,"& > *":{flex:"0 0 auto"}}},config:{height:"100%",overflow:"auto",paddingRight:10}})),jy=e=>{const{uiModel:t}=e;return n(a.Stack,{className:"var-list",children:t.variables.map(r=>n(a.Button,{variant:t.selected===r?"filled":"subtle",color:"gray",onClick:()=>t.select(r),children:r.name},r.name))})},Ry=T.observer(jy),Yy=({variable:e,data:t})=>n(a.Group,{style:{minHeight:0,height:"calc(100% - 68px)"},children:n(a.Paper,{withBorder:!0,p:"md",children:Ji(e,t)})}),Qy=T.observer(Yy),Uy=e=>{const t=Z.useCreation(()=>Pv(e.variable),[e.variable]),{classes:r}=_s(),{data:i}=xe();return p(a.Group,{style:{height:"100%"},align:"start",children:[p(a.Stack,{"data-testid":"variable-editor",align:"stretch",className:r.config,children:[p(a.Group,{position:"right",children:[n(a.ActionIcon,{variant:"filled",disabled:!t.changed,color:"primary",onClick:t.commit,children:n(V.IconDeviceFloppy,{size:18})}),n(a.ActionIcon,{color:"red",onClick:()=>e.uiModel.remove(e.variable),children:n(V.IconTrash,{size:18})})]}),n(Wy,{value:v.getSnapshot(t.copy),onChange:t.update,data:i})]}),n(Qy,{variable:v.getSnapshot(t.copy),data:i})]})},Xy=T.observer(Uy),Zy=()=>{const e=Fy(),{classes:t}=_s();return p(a.Group,{className:t.root,noWrap:!0,align:"start",children:[n(a.Paper,{withBorder:!0,p:"md",className:"var-list-container",children:p(a.Stack,{justify:"space-between",children:[n(a.Box,{className:"var-list-actions",children:n(a.Button,{variant:"light",size:"sm",onClick:e.addNew,fullWidth:!0,children:"Add Variable"})}),n(Ry,{uiModel:e})]})}),e.selected?n(O,{children:n(Xy,{uiModel:e,variable:e.selected})}):n("span",{children:"Select or create a new variable on right side"})]})},Ky=T.observer(Zy);function Jy(){const{vizManager:e}=m.useContext(Ne);return m.useMemo(()=>{const t=e.availableVizList.map(r=>({value:r.name,label:r.displayName??r.name,group:r.displayGroup??""}));return y.orderBy(t,[r=>r.group,r=>r.label],["asc","asc"])},[e])}const Hy=T.observer(({value:e,submit:t})=>{const[r,i]=ve.useInputState(e);m.useEffect(()=>{i(e)},[e]);const s=Jy(),o=e!==r;return n(a.Select,{label:"Visualization",value:r,searchable:!0,onChange:i,data:s,rightSection:n(a.ActionIcon,{disabled:!o,onClick:()=>t(r),children:n(D.DeviceFloppy,{size:20})}),maxDropdownHeight:600})}),Ss=[];function ex(e,t){try{return e.resolveComponent(t).createConfig()}catch{return null}}function tx(){const{data:e,panel:{variables:t,viz:r,title:i,queryID:s,description:o,setDescription:u,setTitle:l,setQueryID:d,id:c}}=xe(),{vizManager:f}=m.useContext(Ne),g={title:i,description:o,viz:r,queryID:s,id:c},h={setDescription:u,setQueryID:d,setTitle:l},b=za(g);try{return f.resolveComponent(g.viz.type),n(Bt,{configure:b,children:n(bb,{variables:t,setVizConf:r.setConf,panel:g,panelInfoEditor:h,vizManager:f,data:e})})}catch(w){return console.info(y.get(w,"message")),null}}const nx=T.observer(()=>{const{data:e,panel:{viz:t}}=xe(),{vizManager:r}=m.useContext(Ne),i=m.useCallback(c=>{if(c===t.type)return;const f=ex(r,c);t.setType(c),t.setConf(f||{})},[t.type]),s=c=>{try{t.setConf(JSON.parse(c))}catch(f){console.error(f)}},o=m.useMemo(()=>{var c;return(c=Ss.find(f=>f.value===t.type))==null?void 0:c.Panel},[t.type,Ss]),u=tx(),l=o?m.createElement(o,{data:e,conf:t.conf,setConf:t.setConf}):null,d=u||l;return p(a.Stack,{align:"stretch",sx:{height:"100%",overflow:"hidden"},children:[n(Hy,{submit:i,value:t.type}),n(a.Stack,{pb:50,sx:{flexGrow:1,maxHeight:"calc(100% - 80px)",overflow:"auto"},children:d}),!d&&n(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(t.conf,null,2),onChange:s})]})}),rx=T.observer(({panel:e,sourceViewID:t})=>{const r=B(),[i,s]=m.useState(t);m.useEffect(()=>{s(t)},[t]);const[o,{open:u,close:l}]=ve.useDisclosure(!1),d=()=>{e.moveToView(t,i),l()};return p(O,{children:[n(a.Button,{size:"xs",variant:"subtle",color:"blue",onClick:u,leftIcon:n(V.IconBoxMultiple,{size:14}),children:"Move into Another View"}),n(a.Modal,{opened:o,onClose:l,title:"Move panel into another view",zIndex:320,overflow:"inside",children:p(a.Stack,{sx:{maxHeight:"calc(100vh - 185px)",overflow:"hidden"},children:[n(a.Radio.Group,{value:i,onChange:s,pb:10,sx:{flexGrow:1,maxHeight:"calc(100vh - 185px - 30px)",overflow:"auto"},children:n(a.Stack,{spacing:"xs",children:r.views.options.map(c=>n(a.Radio,{value:c.value,label:c.label},c.value))})}),p(a.Group,{noWrap:!0,position:"apart",sx:{flexGrow:0,flexShrink:0},children:[n(a.Button,{size:"xs",color:"red",leftIcon:n(V.IconX,{size:14}),onClick:l,children:"Cancel"}),n(a.Button,{size:"xs",color:"blue",leftIcon:n(V.IconDeviceFloppy,{size:14}),onClick:d,disabled:i===t,children:"Confirm"})]})]})})]})}),ix={root:{flexGrow:1,width:"100%",height:"100%"},panel:{width:"100%",height:"100%",padding:10}},Ts=({children:e})=>p(a.Group,{noWrap:!0,grow:!0,position:"left",spacing:20,sx:{width:"100%",height:"calc(100% - 36px)"},children:[n(a.Box,{sx:{maxWidth:"calc(100% - 610px - 10px)",height:"100%",overflow:"auto"},children:e}),n(Gy,{})]});function ax(e){return!["richText","button"].includes(e)}const sx=T.observer(({panel:e})=>{const t=Pe.useModals(),r=B(),[i,s]=m.useState("Data"),{data:o,state:u,error:l}=r.getDataStuffByID(e.queryID),d=r.queries.findByID(e.queryID),f=ax(e.viz.type)&&u==="loading",g=f||l||!d||!!d.stateMessage,h=r.editor.path[1];m.useEffect(()=>{s(C=>g&&C==="Visualization"?"Data":C)},[e.id,g]);const b=()=>{r.editor.setPath(["_VIEWS_",h])},w=()=>t.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.removePanelByID(e.id,h),b()},confirmProps:{color:"red"},zIndex:320});return p(vn,{value:{panel:e,data:o,loading:f,error:l},children:[p(a.Group,{px:16,position:"apart",sx:{borderBottom:"1px solid #eee"},children:[p(a.Text,{pt:9,pb:8,children:[e.title?e.title:e.viz.type," "]}),p(a.Group,{position:"right",noWrap:!0,children:[n(rx,{panel:e,sourceViewID:h}),n(a.Button,{size:"xs",variant:"subtle",color:"red",onClick:w,leftIcon:n(V.IconTrash,{size:14}),children:"Delete This Panel"})]})]}),p(a.Tabs,{value:i,onTabChange:s,keepMounted:!1,styles:ix,children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Data",disabled:f,children:"Data"}),n(a.Tabs.Tab,{value:"Panel",children:"Panel"}),n(a.Tabs.Tab,{value:"Variables",disabled:g,children:n(a.Tooltip,{label:"Requires data",disabled:!g,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Variables"})})}),n(a.Tabs.Tab,{value:"Visualization",disabled:g,children:n(a.Tooltip,{label:"Requires data",disabled:!g,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Visualization"})})}),n(a.Tabs.Tab,{value:"Interactions",children:"Interactions"})]}),p(a.Tabs.Panel,{value:"Data",children:[n(a.LoadingOverlay,{visible:f,exitTransitionDuration:0}),n(By,{})]}),n(a.Tabs.Panel,{value:"Panel",children:n(Ts,{children:n(Py,{})})}),n(a.Tabs.Panel,{value:"Variables",children:n(Ky,{})}),n(a.Tabs.Panel,{value:"Visualization",children:n(Ae,{children:n(Ts,{children:n(nx,{})})})}),n(a.Tabs.Panel,{value:"Interactions",children:n(Ae,{children:n(gb,{})})})]})]})}),ox=T.observer(({viewID:e,panelID:t})=>{const r=B();if(!r.views.findByID(e))return p(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const s=r.panels.findByID(t);return s?n(sx,{panel:s}):p(a.Text,{size:14,children:["Panel by ID[",t,"] is not found"]})}),Ds=({width:e="calc(100% - 32px)",lastWidth:t="50%",height:r,count:i,spacing:s=16,pl:o=0})=>p(a.Stack,{spacing:s,mt:6,pl:o,children:[Array.from(new Array(i-1),(u,l)=>n(a.Skeleton,{width:e,height:r,radius:"xs"},l)),n(a.Skeleton,{width:t,height:r,radius:"xs"})]}),kt=({value:e})=>e===null||e===""?null:n(a.Tooltip,{label:e,disabled:!e,multiline:!0,children:n(a.ActionIcon,{children:n(V.IconInfoCircle,{size:14})})}),lx=({column:e})=>{const{column_key:t,column_key_text:r}=e;return t?n(a.Tooltip,{label:r,disabled:!r,children:n(a.Badge,{children:t})}):null},ux=T.observer(({dataSource:e})=>{const{columns:t}=e;return t.loading?n(Ds,{height:"24px",width:"100%",lastWidth:"100%",count:20,pl:6}):t.empty?null:p(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"1000px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[p("colgroup",{children:[n("col",{style:{width:50}}),n("col",{style:{minWidth:300}}),n("col",{style:{width:30}}),n("col",{style:{width:70}}),n("col",{style:{minWidth:300}}),n("col",{style:{minWidth:80,width:80}}),n("col",{style:{minWidth:120,width:120}})]}),n("thead",{children:p("tr",{children:[n("th",{children:"#"}),n("th",{children:"Column Name"}),n("th",{}),n("th",{}),n("th",{children:"Type"}),n("th",{children:"Nullable"}),n("th",{children:"Default Value"})]})}),n("tbody",{children:t.data.map(r=>p("tr",{children:[n("td",{children:r.ordinal_position}),n("td",{children:r.column_name}),n("td",{children:n(kt,{value:r.column_comment})}),n("td",{children:n(lx,{column:r})}),n("td",{children:r.column_type}),n("td",{children:r.is_nullable}),n("td",{children:n(kt,{value:r.column_default})})]},r.column_name))})]})}),dx=T.observer(({dataSource:e})=>{const{indexes:t}=e,r=t.data;return p(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"950px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[p("colgroup",{children:[n("col",{style:{width:100}}),n("col",{style:{minWidth:300}}),n("col",{style:{width:150}}),n("col",{style:{width:150}}),n("col",{style:{width:250}})]}),n("thead",{children:p("tr",{children:[n("th",{children:"Index Length"}),n("th",{children:"Index Name"}),n("th",{children:"Index Algorithm"}),n("th",{children:"Unique"}),n("th",{children:"Column Name"})]})}),n("tbody",{children:r.map(i=>p("tr",{children:[n("td",{children:i.index_length}),n("td",{children:i.index_name}),n("td",{children:i.index_algorithm}),n("td",{children:i.is_unique?"YES":"NO"}),n("td",{children:i.column_name})]},i.index_name))})]})}),cx=T.observer(({dataSource:e})=>{const{indexes:t}=e,r=t.data;return p(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"850px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[p("colgroup",{children:[n("col",{style:{minWidth:300}}),n("col",{style:{width:150}}),n("col",{style:{width:100}}),n("col",{style:{width:100}}),n("col",{style:{width:100}}),n("col",{style:{width:100}})]}),n("thead",{children:p("tr",{children:[n("th",{children:"Index Name"}),n("th",{children:"Index Algorithm"}),n("th",{children:"Unique"}),n("th",{children:"Definition"}),n("th",{children:"Condition"}),n("th",{children:"Comment"})]})}),n("tbody",{children:r.map(i=>p("tr",{children:[n("td",{children:i.index_name}),n("td",{children:i.index_algorithm}),n("td",{children:i.is_unique?"YES":"NO"}),n("td",{children:n(kt,{value:i.index_definition})}),n("td",{children:n(kt,{value:i.condition})}),n("td",{children:n(kt,{value:i.comment})})]},i.index_name))})]})}),px=T.observer(({dataSource:e})=>{const{indexes:t}=e;return t.loading||t.empty?null:e.type===ce.MySQL?n(dx,{dataSource:e}):e.type===ce.Postgresql?n(cx,{dataSource:e}):null}),hx=T.observer(({dataSource:e})=>p(a.Stack,{spacing:40,pt:10,sx:{flexGrow:1,overflow:"auto",position:"relative"},children:[n(Ae,{children:n(ux,{dataSource:e})}),n(Ae,{children:n(px,{dataSource:e})})]}));function fx({table_type:e}){return e==="VIEW"?n(V.IconEye,{size:14}):e==="BASE TABLE"?n(V.IconTable,{size:14}):null}const gx=T.observer(({dataSource:e})=>{const{tables:t}=e;return t.loading?n(Ds,{height:"24px",lastWidth:"50%",count:15}):n(a.Box,{h:"100%",sx:{overflow:"auto",".mantine-NavLink-label":{fontFamily:"monospace"}},children:Object.entries(t.data).map(([r,i])=>n(a.NavLink,{label:r,icon:n(V.IconDatabase,{size:14}),defaultOpened:e.table_schema===r,pl:0,childrenOffset:14,children:i.map(s=>n(a.NavLink,{label:s.table_name,icon:n(fx,{table_type:s.table_type}),onClick:()=>{e.setKeywords(r,s.table_name)},active:e.table_name===s.table_name},s.table_name))},r))})}),mx=({visible:e})=>n(a.Box,{py:10,sx:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:n(a.LoadingOverlay,{visible:e})}),bx=[{label:"10",value:"10"},{label:"20",value:"20"},{label:"50",value:"50"},{label:"100",value:"100"}],vx={icon:{width:"50px",textAlign:"center"},input:{"&.mantine-Input-withIcon":{paddingLeft:"50px"}}},yx=T.observer(({dataSource:e})=>{const{tableData:t}=e;return p(a.Group,{pt:10,px:10,position:"apart",children:[p(a.Group,{position:"left",children:[t.maxPage>1&&n(a.Pagination,{size:"sm",page:t.page,onChange:t.setPage,total:t.maxPage,withEdges:t.maxPage>7,styles:{item:{height:"30px"}}}),n(a.Select,{icon:n(a.Text,{ta:"center",color:"dimmed",size:14,children:"Limit"}),size:"xs",styles:vx,data:bx,value:String(t.limit),onChange:r=>t.setLimit(Number(r))})]}),n(a.Group,{position:"right",children:p(a.Text,{color:"dimmed",my:0,size:14,children:["Total ",t.total," rows"]})})]})}),xx=T.observer(({dataSource:e})=>{const t=e.tableData;return t.maxPage===0?n(a.Text,{mt:20,color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:"This table is empty"}):t.error?n(a.Text,{mt:20,color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:t.error}):t.page===1&&t.loading?n(mx,{visible:!0}):p(Ae,{children:[n(yx,{dataSource:e}),p(a.Box,{py:10,sx:{width:"100%",height:"calc(100% - 42px)",overflow:"auto",position:"relative"},children:[n(a.LoadingOverlay,{visible:t.loading,overlayBlur:2}),n(Cs,{data:t.data})]})]})}),Cx={root:{flexGrow:1,overflow:"auto",borderLeft:"1px solid #efefef"},tabsList:{borderBottom:"1px solid #efefef"},tab:{minWidth:120}},wx=T.observer(({dataSource:e})=>(m.useEffect(()=>{e.loadTablesIfEmpty()},[e]),e.tables.error?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:e.tables.error}):p(a.Flex,{sx:{height:"100%"},children:[n(a.Box,{w:300,sx:{flexGrow:0,flexShrink:0,position:"relative"},children:n(Ae,{children:n(gx,{dataSource:e})})}),p(a.Tabs,{defaultValue:"structure",styles:Cx,children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"structure",icon:n(V.IconColumns,{size:14}),children:"Structure"}),n(a.Tabs.Tab,{value:"data",icon:n(V.IconDatabase,{size:14}),children:"Data"})]}),n(a.Tabs.Panel,{value:"structure",children:n(hx,{dataSource:e})}),n(a.Tabs.Panel,{value:"data",sx:{width:"100%",height:"calc(100% - 36px)",overflow:"hidden"},children:n(xx,{dataSource:e})})]})]}))),_x={modal:{paddingLeft:"0px !important",paddingRight:"0px !important"},header:{marginBottom:0,padding:"0 20px 10px",borderBottom:"1px solid #efefef"},title:{flexGrow:1},body:{padding:"0 0 0 20px"}},ks=T.observer(({dataSource:e,triggerButtonProps:t={}})=>{const[r,i]=m.useState(!1);return p(O,{children:[n(a.Modal,{opened:r,onClose:()=>i(!1),title:p(a.Group,{position:"apart",sx:{flexGrow:1},children:[n(a.Text,{fw:500,children:"Explorer Data Source"}),p(a.Group,{spacing:7,children:[n(a.Badge,{variant:"gradient",gradient:{from:"indigo",to:"cyan"},children:e.key}),n(a.Badge,{variant:"gradient",gradient:{from:"orange",to:"red"},children:e.type})]})]}),zIndex:320,size:"96vw",overflow:"inside",styles:_x,children:n(a.Box,{sx:{height:"calc(100vh - 220px)"},children:n(wx,{dataSource:e})})}),n(a.Button,{variant:"subtle",onClick:()=>i(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},...t,children:"See Table Structure"})]})}),Sx=m.forwardRef(({label:e,type:t,...r},i)=>p(a.Group,{position:"apart",ref:i,...r,children:[n(a.Text,{children:e}),n(a.Text,{children:t})]})),Tx=T.observer(({value:e,onChange:t})=>{const r=B(),{data:i=[],loading:s}=Z.useRequest(sr,{refreshDeps:[]},[]),o=m.useMemo(()=>i.map(c=>({label:c.key,value:c.key,type:c.type})),[i]),u=m.useMemo(()=>o.reduce((c,f)=>(c[f.value]=f.type,c),{}),[o]),l=c=>{c!==null&&t({key:c,type:u[c]})},d=m.useMemo(()=>r.datasources.find(e),[r,e]);return n(a.Select,{data:o,label:p(a.Group,{position:"apart",children:[n(a.Box,{children:"Data Source"}),d&&n(ks,{dataSource:d,triggerButtonProps:{compact:!0,size:"xs",px:10}})]}),itemComponent:Sx,rightSection:d?n(a.Text,{size:"xs",color:"dimmed",children:d.type}):void 0,rightSectionWidth:85,maxDropdownHeight:280,styles:{root:{flex:1},label:{display:"block"},rightSection:{pointerEvents:"none",".mantine-Text-root":{userSelect:"none"}}},disabled:s,value:e.key,onChange:l})}),Dx=e=>{const{queryModel:t}=e,r=B(),s=r.findQueryUsage(t.id).length>0,o=Pe.useModals(),u=()=>{o.openConfirmModal({title:"Delete this query?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.queries.removeQuery(t.id),r.editor.setPath(["_QUERIES_",""])},zIndex:320})};return s?n(a.Tooltip,{label:"Can't delete this query for it's being used, check out Usage tab for details",withArrow:!0,events:{hover:!0,focus:!1,touch:!1},withinPortal:!0,children:n(a.Button,{color:"gray",size:"xs",leftIcon:n(V.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})}):n(a.Button,{color:"red",size:"xs",onClick:u,leftIcon:n(V.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})},kx=T.observer(Dx),Ix=T.observer(({queryModel:e})=>n(a.Center,{ml:20,mt:20,sx:{maxWidth:"600px"},children:p(a.Stack,{spacing:10,sx:{width:"100%"},children:[n(a.Divider,{mb:-10,variant:"dashed",label:"Basics",labelPosition:"center"}),n(a.TextInput,{placeholder:"A unique name",label:"Name",required:!0,sx:{flex:1},value:e.name,onChange:t=>{e.setName(t.currentTarget.value)}}),n(Tx,{value:{type:e.type,key:e.key},onChange:({type:t,key:r})=>{e.setKey(r),e.setType(t)}}),n(a.Divider,{mt:10,mb:-10,variant:"dashed",label:"Conditions",labelPosition:"center"}),n(a.MultiSelect,{label:"Run query when these are truthy",data:e.conditionOptions,value:[...e.run_by],onChange:e.setRunBy}),n(a.Divider,{mt:20,mb:10,variant:"dashed"}),n(kx,{queryModel:e})]})}));function Mx(){const[e,{open:t,close:r}]=ve.useDisclosure(!1);return p(O,{children:[n(a.Modal,{opened:e,onClose:r,title:"About FunctionUtils",zIndex:320,children:n(Nt,{value:ov,styles:{root:{border:"none"},content:{padding:0}}})}),n(a.Button,{variant:"light",color:"violet",size:"xs",onClick:t,leftIcon:n(V.IconInfoCircle,{size:16}),children:"About parameter 'utils'"})]})}const Ax=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{sx:{position:"relative",flexGrow:1},children:n(_e,{className:"function-editor",height:"100%",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1}}})})},on=m.forwardRef(({value:e,onChange:t,label:r,defaultValue:i},s)=>{const[o,u]=m.useState(e),l=()=>{t(o)},d=()=>{u(e)},c=()=>{u(i)};m.useEffect(()=>{u(e)},[e]);const f=o!==e;return p(a.Stack,{spacing:4,sx:{height:"100%"},children:[p(a.Group,{mb:6,position:"apart",sx:{flexShrink:0,flexGrow:0},children:[n(a.Group,{position:"left",children:n(Mx,{})}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,size:"xs",variant:"default",leftIcon:n(V.IconPlayerSkipBack,{size:16}),children:"Reset to default"}),n(a.Button,{onClick:d,color:"red",size:"xs",disabled:!f,leftIcon:n(V.IconRecycle,{size:16}),children:"Revert Changes"}),n(a.Button,{size:"xs",onClick:l,disabled:!f,leftIcon:n(V.IconDeviceFloppy,{size:16}),children:"Confirm Changes"})]})]}),n(a.Text,{size:14,children:r}),n(Ax,{value:o,onChange:u})]})}),zx=`
454
+ `,dx=()=>{const[e,t]=b.useState(!1);return p(P,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(r=>!r),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(st.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:ux})})]})},cx=T.observer(function({config:t}){return p(P,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:r=>t.setMinWidth(r.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Fetch options from database",labelPosition:"center"}),n(a.NumberInput,{value:t.default_selection_count,onChange:t.setDefaultSelectionCount,label:"Select first N options by default"}),n(mr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(dx,{})]})}),px=T.observer(function({filter:t}){const[r,i]=b.useState(t.plainDefaultValue);return b.useEffect(()=>{i(t.plainDefaultValue)},[t]),p(a.Box,{sx:{maxWidth:"480px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Preview"}),n(Ei,{filter:t,value:r,onChange:i}),n(a.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),n(st.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(t,null,4)})]})}),hx={select:ox,"multi-select":sx,"tree-select":cx,"text-input":lx,checkbox:nx,"date-range":ix},fx=[{label:"Select",value:"select"},{label:"Multi Select",value:"multi-select"},{label:"Tree Select",value:"tree-select"},{label:"Text Input",value:"text-input"},{label:"Checkbox",value:"checkbox"},{label:"Date Range",value:"date-range"}],gx=T.observer(function({filter:t}){const r=N(),i=b.useMemo(()=>hx[t.type],[t.type]);return p(a.Group,{grow:!0,spacing:20,align:"top",children:[p(a.Box,{sx:{maxWidth:"600px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Edit"}),p(a.Stack,{children:[p(a.Group,{noWrap:!0,children:[n(a.NumberInput,{label:"Placement Order",required:!0,value:t.order,onChange:t.setOrder,hideControls:!0,sx:{flexGrow:"1 !important"}}),t.auto_submit_supported&&n(a.Checkbox,{label:"Submit automatically",checked:t.auto_submit,onChange:s=>t.setAutoSubmit(s.currentTarget.checked),mt:22})]}),n(a.MultiSelect,{label:"Visible in...",data:r.views.options,value:[...t.visibleInViewsIDs],onChange:t.setVisibleInViewsIDs}),n(a.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,value:t.key,onChange:s=>{t.setKey(s.currentTarget.value)}}),n(a.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:t.label,onChange:s=>{t.setLabel(s.currentTarget.value)}}),n(a.Select,{label:"Widget",data:fx,required:!0,value:t.type,onChange:t.setType}),n(i,{config:t.config})]})]}),n(px,{filter:t})]})}),mx=T.observer(({id:e})=>{const t=Oe.useModals(),r=N();if(e==="")return null;const i=r.filters.findByID(e);if(!i)return p(a.Text,{size:14,children:["Filter by ID[",e,"] is not found"]});const s=()=>{r.editor.setPath(["_FILTERS_",""])},o=()=>{t.openConfirmModal({title:"Delete this filter?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.filters.removeByID(e),s()},zIndex:320})};return p(a.Stack,{sx:{maxWidth:"1100px",height:"100vh"},spacing:"sm",pb:30,children:[n(a.Group,{position:"right",pt:10,children:n(a.Button,{size:"xs",color:"red",leftIcon:n(k.Trash,{size:16}),onClick:o,children:"Delete this filter"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(gx,{filter:i})})]})}),bx=T.observer(()=>{const e=N(),[t,r]=b.useState(()=>JSON.stringify(e.mock_context.current,null,4)),i=()=>{try{e.mock_context.replace(JSON.parse(t))}catch(o){Ot.showNotification({title:"Failed",message:o.message,color:"red"})}},s=b.useMemo(()=>{try{return JSON.stringify(JSON.parse(t))!==JSON.stringify(e.mock_context.current)}catch{return!1}},[t,e.mock_context.current]);return p(a.Stack,{sx:{border:"1px solid #eee",borderLeft:"none",borderRight:"none",flexGrow:1,maxWidth:"unset"},children:[n(a.Group,{position:"left",pl:"md",py:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef",flexGrow:0},children:n(a.Text,{weight:500,children:"Mock Context"})}),p(a.Group,{grow:!0,px:"md",pb:"md",pt:0,sx:{flexGrow:1,position:"relative",alignItems:"flex-start"},children:[p(a.Stack,{spacing:10,sx:{maxWidth:"unset !important"},children:[n(a.Text,{children:"A valid json string is required"}),n(a.JsonInput,{validationError:"Invalid json",formatOnBlur:!0,autosize:!0,minRows:30,value:t,onChange:r,sx:{flexGrow:1}})]}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",sx:{position:"absolute",right:12,top:0},disabled:!s,onClick:i,children:n(k.DeviceFloppy,{size:20})})]})]})}),yx=T.observer(()=>{const{panel:e}=xe();return n(Nn,{label:"Description",value:e.description,onChange:e.setDescription,styles:{root:{flexGrow:1}}})}),vx=T.observer(()=>{const{panel:e}=xe(),{style:t}=e;return n(P,{children:n(a.Switch,{label:"Border",checked:t.border.enabled,onChange:r=>t.border.setEnabled(r.currentTarget.checked)})})}),xx=T.observer(()=>{const{panel:e}=xe(),{title:t,setTitle:r}=e,[i,s]=ye.useInputState(t),o=t!==i,u=b.useCallback(()=>{o&&r(i)},[o,i]);return b.useEffect(()=>{s(t)},[t]),n(a.TextInput,{value:i,onChange:s,label:p(a.Group,{children:[n(a.Text,{children:"Panel Title"}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!o,onClick:u,children:n(k.DeviceFloppy,{size:20})})]}),styles:{label:{display:"block",paddingBottom:"4px"}}})});function Cx(){return p(a.Stack,{sx:{height:"100%"},children:[n(a.Divider,{label:"Style",labelPosition:"center",variant:"dashed"}),n(vx,{}),n(a.Divider,{label:"Info",labelPosition:"center",variant:"dashed"}),n(xx,{}),n(yx,{})]})}const wx=({queryID:e})=>{const t=N(),{state:r,error:i}=t.getDataStuffByID(e),s=b.useMemo(()=>t.queries.findByID(e),[t,e]);return r==="loading"?null:i?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:i}):s!=null&&s.stateMessage?n(a.Text,{color:"gray",align:"center",children:s.stateMessage}):null},_x={width:"fit-content",minWidth:"100%",tableLayout:"fixed",tr:{width:"fit-content"},th:{position:"relative"},".resizer":{position:"absolute",right:0,top:"50%",transform:"translateY(-50%)",cursor:"col-resize",userSelect:"none",touchAction:"none"},".resizer.isResizing":{color:"#228be6",opacity:"1"},"@media (hover: hover)":{".resizer":{opacity:"0"},"*:hover > .resizer":{color:"#228be6",opacity:"1"}}};function Ds({data:e}){const t=b.useMemo(()=>{if(!Array.isArray(e)||e.length===0)return[];const i=Ee.createColumnHelper();return Object.keys(e[0]).map(s=>i.accessor(s,{cell:o=>o.getValue()}))},[e]),r=Ee.useReactTable({data:e,columns:t,columnResizeMode:"onChange",getCoreRowModel:Ee.getCoreRowModel()});return e.length===0?n(a.Box,{sx:{height:"5em"}}):n(Ae,{children:p(a.Table,{sx:_x,children:[n("thead",{children:r.getHeaderGroups().map(i=>n("tr",{children:i.headers.map(s=>p("th",{style:{width:s.getSize()},children:[s.isPlaceholder?null:Ee.flexRender(s.column.columnDef.header,s.getContext()),n(a.ActionIcon,{onMouseDown:s.getResizeHandler(),onTouchStart:s.getResizeHandler(),className:`resizer ${s.column.getIsResizing()?"isResizing":""}`,children:n(k.ArrowBarToRight,{})})]},s.id))},i.id))}),n("tbody",{children:r.getRowModel().rows.map(i=>n("tr",{children:i.getVisibleCells().map(s=>n("td",{children:n(Ae,{children:Ee.flexRender(s.column.columnDef.cell,s.getContext())})},s.id))},i.id))})]})})}const Is=T.observer(function({id:t}){const r=N(),{data:i,state:s}=r.getDataStuffByID(t),o=s==="loading",u=()=>{r.queries.refetchDataByQueryID(t)},l=()=>{r.queries.downloadDataByQueryID(t)},d=b.useMemo(()=>Array.isArray(i)?i.slice(0,10):[],[i]),c=!Array.isArray(i)||i.length===0;return p(a.Stack,{sx:{border:"1px solid #eee"},children:[p(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[p(a.Group,{position:"left",children:[n(a.Text,{weight:500,children:"Preview Data"}),i.length>10&&p(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",i.length]})]}),p(a.Group,{pr:15,children:[n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:o,onClick:u,children:n(k.Refresh,{size:15})}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:o||c,onClick:l,children:n(k.Download,{size:15})})]})]}),p(a.Box,{sx:{position:"relative",overflow:"auto"},children:[n(a.LoadingOverlay,{visible:o}),n(wx,{queryID:t}),n(Ds,{data:d})]})]})}),Sx=T.observer(function(){const t=N(),{panel:{queryID:r,setQueryID:i}}=xe(),s=()=>{t.editor.setPath(["_QUERIES_",r])};return p(a.Stack,{children:[p(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[n(a.Text,{children:"Use query"}),n(a.Select,{data:t.queries.options,value:r,onChange:i,allowDeselect:!1,clearable:!1,sx:{flexGrow:"1 !important"},maxDropdownHeight:300,rightSection:r&&n(a.Tooltip,{label:"Open this query",children:n(a.ActionIcon,{variant:"subtle",color:"blue",onClick:s,children:n(V.IconArrowCurveRight,{size:16})})})})]}),n(Is,{id:r})]})}),Tx=T.observer(({height:e})=>{const t=N(),{data:r,loading:i,error:s,panel:{viz:o,queryID:u}}=xe(),l=t.queries.findByID(u);return n(Ga,{viz:o,data:r,loading:i,error:s,query:l,height:e})}),kx=T.observer(()=>{const{panel:{title:e,style:{border:t}}}=xe();return n(Ae,{children:n(a.Box,{sx:{height:"100%",flexGrow:0,flexShrink:0,width:"600px"},children:p(a.Stack,{mt:24,spacing:5,sx:{width:"600px",height:"450px",background:"transparent",borderRadius:"5px",border:"1px solid #e9ecef",borderWidth:t.enabled?"1px":"0px"},children:[p(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[n(a.Group,{children:n(Oi,{})}),n(a.Group,{grow:!0,position:"center",children:n(a.Text,{lineClamp:1,weight:"bold",children:e})}),n(a.Group,{position:"right",spacing:0,sx:{height:"28px"}})]}),n(a.Group,{px:5,pb:5,sx:{flexGrow:1},children:n(Tx,{height:"410px"})})]})})})}),br={name:"new_var",size:"1rem",weight:"initial",color:{type:"static",staticColor:"Red"},data_field:"",aggregation:{type:"sum",config:{}},formatter:{output:"number",mantissa:0,trimMantissa:!1,average:!1}};class Dx{constructor(t){O(this,"panel");O(this,"selected");this.panel=t,ae.makeAutoObservable(this,{},{deep:!1,autoBind:!0})}get variables(){return this.panel.variables}addNew(){const t=this.panel.variables.filter(r=>r.name.startsWith(br.name)).length;this.panel.addVariable(v.cloneDeep({...br,name:`${br.name}${t||""}`})),this.selected=v.last(this.panel.variables)}select(t){this.selected=t}remove(t){this.selected===t&&(this.selected=void 0);const r=this.panel.variables.indexOf(t);if(this.panel.removeVariable(t),!this.selected&&!v.isEmpty(this.panel.variables)){const i=Math.min(this.panel.variables.length-1,r);this.selected=this.panel.variables[i]}}}function Ix(){const{panel:e}=xe();return Z.useCreation(()=>new Dx(e),[e])}const Mx=b.forwardRef(function({value:t,onChange:r,data:i,withStyle:s=!0},o){const u=(l,d)=>{const c=v.cloneDeep(t);v.set(c,l,d),r(c)};return p(a.Box,{px:"sm",py:"md",ref:o,children:[p(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:l=>u("name",l.currentTarget.value)}),n(Y,{label:"Data Field",required:!0,data:i,value:t.data_field,onChange:l=>u("data_field",l)})]}),n(Ft,{label:"Aggregation",value:t.aggregation,onChange:l=>u("aggregation",l)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(Ve,{value:t.formatter,onChange:l=>u("formatter",l)}),s&&n(Hi,{value:t,onChange:r})]})}),Ms=a.createStyles(e=>({root:{height:"100%",overflow:"hidden",".var-list-container":{"& > *":{height:"100%"},width:250,height:"100%"},".var-list-actions":{height:"fit-content",flexShrink:0,width:"100%"},".var-list":{flex:"1 1 auto",overflow:"auto",minHeight:0,"& > *":{flex:"0 0 auto"}}},config:{height:"100%",overflow:"auto",paddingRight:10}})),Ax=e=>{const{uiModel:t}=e;return n(a.Stack,{className:"var-list",children:t.variables.map(r=>n(a.Button,{variant:t.selected===r?"filled":"subtle",color:"gray",onClick:()=>t.select(r),children:r.name},r.name))})},$x=T.observer(Ax),zx=({variable:e,data:t})=>n(a.Group,{style:{minHeight:0,height:"calc(100% - 68px)"},children:n(a.Paper,{withBorder:!0,p:"md",children:ea(e,t)})}),Ex=T.observer(zx),Lx=e=>{const t=Z.useCreation(()=>Cv(e.variable),[e.variable]),{classes:r}=Ms(),{data:i}=xe();return p(a.Group,{style:{height:"100%"},align:"start",children:[p(a.Stack,{"data-testid":"variable-editor",align:"stretch",className:r.config,children:[p(a.Group,{position:"right",children:[n(a.ActionIcon,{variant:"filled",disabled:!t.changed,color:"primary",onClick:t.commit,children:n(V.IconDeviceFloppy,{size:18})}),n(a.ActionIcon,{color:"red",onClick:()=>e.uiModel.remove(e.variable),children:n(V.IconTrash,{size:18})})]}),n(Mx,{value:y.getSnapshot(t.copy),onChange:t.update,data:i})]}),n(Ex,{variable:y.getSnapshot(t.copy),data:i})]})},Ox=T.observer(Lx),Px=()=>{const e=Ix(),{classes:t}=Ms();return p(a.Group,{className:t.root,noWrap:!0,align:"start",children:[n(a.Paper,{withBorder:!0,p:"md",className:"var-list-container",children:p(a.Stack,{justify:"space-between",children:[n(a.Box,{className:"var-list-actions",children:n(a.Button,{variant:"light",size:"sm",onClick:e.addNew,fullWidth:!0,children:"Add Variable"})}),n($x,{uiModel:e})]})}),e.selected?n(P,{children:n(Ox,{uiModel:e,variable:e.selected})}):n("span",{children:"Select or create a new variable on right side"})]})},Vx=T.observer(Px);function Bx(){const{vizManager:e}=b.useContext(Ne);return b.useMemo(()=>{const t=e.availableVizList.map(r=>({value:r.name,label:r.displayName??r.name,group:r.displayGroup??""}));return v.orderBy(t,[r=>r.group,r=>r.label],["asc","asc"])},[e])}const Nx=T.observer(({value:e,submit:t})=>{const[r,i]=ye.useInputState(e);b.useEffect(()=>{i(e)},[e]);const s=Bx(),o=e!==r;return n(a.Select,{label:"Visualization",value:r,searchable:!0,onChange:i,data:s,rightSection:n(a.ActionIcon,{disabled:!o,onClick:()=>t(r),children:n(k.DeviceFloppy,{size:20})}),maxDropdownHeight:600})}),As=[];function Gx(e,t){try{return e.resolveComponent(t).createConfig()}catch{return null}}function qx(){const{data:e,panel:{variables:t,viz:r,title:i,queryID:s,description:o,setDescription:u,setTitle:l,setQueryID:d,id:c}}=xe(),{vizManager:f}=b.useContext(Ne),g={title:i,description:o,viz:r,queryID:s,id:c},h={setDescription:u,setQueryID:d,setTitle:l},m=Va(g);try{return f.resolveComponent(g.viz.type),n(Bt,{configure:m,children:n(ry,{variables:t,setVizConf:r.setConf,panel:g,panelInfoEditor:h,vizManager:f,data:e})})}catch(w){return console.info(v.get(w,"message")),null}}const Fx=T.observer(()=>{const{data:e,panel:{viz:t}}=xe(),{vizManager:r}=b.useContext(Ne),i=b.useCallback(c=>{if(c===t.type)return;const f=Gx(r,c);t.setType(c),t.setConf(f||{})},[t.type]),s=c=>{try{t.setConf(JSON.parse(c))}catch(f){console.error(f)}},o=b.useMemo(()=>{var c;return(c=As.find(f=>f.value===t.type))==null?void 0:c.Panel},[t.type,As]),u=qx(),l=o?b.createElement(o,{data:e,conf:t.conf,setConf:t.setConf}):null,d=u||l;return p(a.Stack,{align:"stretch",sx:{height:"100%",overflow:"hidden"},children:[n(Nx,{submit:i,value:t.type}),n(a.Stack,{pb:50,sx:{flexGrow:1,maxHeight:"calc(100% - 80px)",overflow:"auto"},children:d}),!d&&n(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(t.conf,null,2),onChange:s})]})}),Wx=T.observer(({panel:e,sourceViewID:t})=>{const r=N(),[i,s]=b.useState(t);b.useEffect(()=>{s(t)},[t]);const[o,{open:u,close:l}]=ye.useDisclosure(!1),d=()=>{e.moveToView(t,i),l()};return p(P,{children:[n(a.Button,{size:"xs",variant:"subtle",color:"blue",onClick:u,leftIcon:n(V.IconBoxMultiple,{size:14}),children:"Move into Another View"}),n(a.Modal,{opened:o,onClose:l,title:"Move panel into another view",zIndex:320,overflow:"inside",children:p(a.Stack,{sx:{maxHeight:"calc(100vh - 185px)",overflow:"hidden"},children:[n(a.Radio.Group,{value:i,onChange:s,pb:10,sx:{flexGrow:1,maxHeight:"calc(100vh - 185px - 30px)",overflow:"auto"},children:n(a.Stack,{spacing:"xs",children:r.views.options.map(c=>n(a.Radio,{value:c.value,label:c.label},c.value))})}),p(a.Group,{noWrap:!0,position:"apart",sx:{flexGrow:0,flexShrink:0},children:[n(a.Button,{size:"xs",color:"red",leftIcon:n(V.IconX,{size:14}),onClick:l,children:"Cancel"}),n(a.Button,{size:"xs",color:"blue",leftIcon:n(V.IconDeviceFloppy,{size:14}),onClick:d,disabled:i===t,children:"Confirm"})]})]})})]})}),jx={root:{flexGrow:1,width:"100%",height:"100%"},panel:{width:"100%",height:"100%",padding:10}},$s=({children:e})=>p(a.Group,{noWrap:!0,grow:!0,position:"left",spacing:20,sx:{width:"100%",height:"calc(100% - 36px)"},children:[n(a.Box,{sx:{maxWidth:"calc(100% - 610px - 10px)",height:"100%",overflow:"auto"},children:e}),n(kx,{})]});function Yx(e){return!["richText","button"].includes(e)}const Rx=T.observer(({panel:e})=>{const t=Oe.useModals(),r=N(),[i,s]=b.useState("Data"),{data:o,state:u,error:l}=r.getDataStuffByID(e.queryID),d=r.queries.findByID(e.queryID),f=Yx(e.viz.type)&&u==="loading",g=f||l||!d||!!d.stateMessage,h=r.editor.path[1];b.useEffect(()=>{s(C=>g&&C==="Visualization"?"Data":C)},[e.id,g]);const m=()=>{r.editor.setPath(["_VIEWS_",h])},w=()=>t.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.removePanelByID(e.id,h),m()},confirmProps:{color:"red"},zIndex:320});return p(yn,{value:{panel:e,data:o,loading:f,error:l},children:[p(a.Group,{px:16,position:"apart",sx:{borderBottom:"1px solid #eee"},children:[p(a.Text,{pt:9,pb:8,children:[e.title?e.title:e.viz.type," "]}),p(a.Group,{position:"right",noWrap:!0,children:[n(Wx,{panel:e,sourceViewID:h}),n(a.Button,{size:"xs",variant:"subtle",color:"red",onClick:w,leftIcon:n(V.IconTrash,{size:14}),children:"Delete This Panel"})]})]}),p(a.Tabs,{value:i,onTabChange:s,keepMounted:!1,styles:jx,children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Data",disabled:f,children:"Data"}),n(a.Tabs.Tab,{value:"Panel",children:"Panel"}),n(a.Tabs.Tab,{value:"Variables",disabled:g,children:n(a.Tooltip,{label:"Requires data",disabled:!g,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Variables"})})}),n(a.Tabs.Tab,{value:"Visualization",disabled:g,children:n(a.Tooltip,{label:"Requires data",disabled:!g,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Visualization"})})}),n(a.Tabs.Tab,{value:"Interactions",children:"Interactions"})]}),p(a.Tabs.Panel,{value:"Data",children:[n(a.LoadingOverlay,{visible:f,exitTransitionDuration:0}),n(Sx,{})]}),n(a.Tabs.Panel,{value:"Panel",children:n($s,{children:n(Cx,{})})}),n(a.Tabs.Panel,{value:"Variables",children:n(Vx,{})}),n(a.Tabs.Panel,{value:"Visualization",children:n(Ae,{children:n($s,{children:n(Fx,{})})})}),n(a.Tabs.Panel,{value:"Interactions",children:n(Ae,{children:n(ty,{})})})]})]})}),Qx=T.observer(({viewID:e,panelID:t})=>{const r=N();if(!r.views.findByID(e))return p(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const s=r.panels.findByID(t);return s?n(Rx,{panel:s}):p(a.Text,{size:14,children:["Panel by ID[",t,"] is not found"]})}),zs=({width:e="calc(100% - 32px)",lastWidth:t="50%",height:r,count:i,spacing:s=16,pl:o=0})=>p(a.Stack,{spacing:s,mt:6,pl:o,children:[Array.from(new Array(i-1),(u,l)=>n(a.Skeleton,{width:e,height:r,radius:"xs"},l)),n(a.Skeleton,{width:t,height:r,radius:"xs"})]}),It=({value:e})=>e===null||e===""?null:n(a.Tooltip,{label:e,disabled:!e,multiline:!0,children:n(a.ActionIcon,{children:n(V.IconInfoCircle,{size:14})})}),Ux=({column:e})=>{const{column_key:t,column_key_text:r}=e;return t?n(a.Tooltip,{label:r,disabled:!r,children:n(a.Badge,{children:t})}):null},Xx=T.observer(({dataSource:e})=>{const{columns:t}=e;return t.loading?n(zs,{height:"24px",width:"100%",lastWidth:"100%",count:20,pl:6}):t.empty?null:p(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"1000px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[p("colgroup",{children:[n("col",{style:{width:50}}),n("col",{style:{minWidth:300}}),n("col",{style:{width:30}}),n("col",{style:{width:70}}),n("col",{style:{minWidth:300}}),n("col",{style:{minWidth:80,width:80}}),n("col",{style:{minWidth:120,width:120}})]}),n("thead",{children:p("tr",{children:[n("th",{children:"#"}),n("th",{children:"Column Name"}),n("th",{}),n("th",{}),n("th",{children:"Type"}),n("th",{children:"Nullable"}),n("th",{children:"Default Value"})]})}),n("tbody",{children:t.data.map(r=>p("tr",{children:[n("td",{children:r.ordinal_position}),n("td",{children:r.column_name}),n("td",{children:n(It,{value:r.column_comment})}),n("td",{children:n(Ux,{column:r})}),n("td",{children:r.column_type}),n("td",{children:r.is_nullable}),n("td",{children:n(It,{value:r.column_default})})]},r.column_name))})]})}),Zx=T.observer(({dataSource:e})=>{const{indexes:t}=e,r=t.data;return p(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"950px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[p("colgroup",{children:[n("col",{style:{width:100}}),n("col",{style:{minWidth:300}}),n("col",{style:{width:150}}),n("col",{style:{width:150}}),n("col",{style:{width:250}})]}),n("thead",{children:p("tr",{children:[n("th",{children:"Index Length"}),n("th",{children:"Index Name"}),n("th",{children:"Index Algorithm"}),n("th",{children:"Unique"}),n("th",{children:"Column Name"})]})}),n("tbody",{children:r.map(i=>p("tr",{children:[n("td",{children:i.index_length}),n("td",{children:i.index_name}),n("td",{children:i.index_algorithm}),n("td",{children:i.is_unique?"YES":"NO"}),n("td",{children:i.column_name})]},i.index_name))})]})}),Kx=T.observer(({dataSource:e})=>{const{indexes:t}=e,r=t.data;return p(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"850px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[p("colgroup",{children:[n("col",{style:{minWidth:300}}),n("col",{style:{width:150}}),n("col",{style:{width:100}}),n("col",{style:{width:100}}),n("col",{style:{width:100}}),n("col",{style:{width:100}})]}),n("thead",{children:p("tr",{children:[n("th",{children:"Index Name"}),n("th",{children:"Index Algorithm"}),n("th",{children:"Unique"}),n("th",{children:"Definition"}),n("th",{children:"Condition"}),n("th",{children:"Comment"})]})}),n("tbody",{children:r.map(i=>p("tr",{children:[n("td",{children:i.index_name}),n("td",{children:i.index_algorithm}),n("td",{children:i.is_unique?"YES":"NO"}),n("td",{children:n(It,{value:i.index_definition})}),n("td",{children:n(It,{value:i.condition})}),n("td",{children:n(It,{value:i.comment})})]},i.index_name))})]})}),Jx=T.observer(({dataSource:e})=>{const{indexes:t}=e;return t.loading||t.empty?null:e.type===ce.MySQL?n(Zx,{dataSource:e}):e.type===ce.Postgresql?n(Kx,{dataSource:e}):null}),Hx=T.observer(({dataSource:e})=>p(a.Stack,{spacing:40,pt:10,sx:{flexGrow:1,overflow:"auto",position:"relative"},children:[n(Ae,{children:n(Xx,{dataSource:e})}),n(Ae,{children:n(Jx,{dataSource:e})})]}));function e0({table_type:e}){return e==="VIEW"?n(V.IconEye,{size:14}):e==="BASE TABLE"?n(V.IconTable,{size:14}):null}const t0=T.observer(({dataSource:e})=>{const{tables:t}=e;return t.loading?n(zs,{height:"24px",lastWidth:"50%",count:15}):n(a.Box,{h:"100%",sx:{overflow:"auto",".mantine-NavLink-label":{fontFamily:"monospace"}},children:Object.entries(t.data).map(([r,i])=>n(a.NavLink,{label:r,icon:n(V.IconDatabase,{size:14}),defaultOpened:e.table_schema===r,pl:0,childrenOffset:14,children:i.map(s=>n(a.NavLink,{label:s.table_name,icon:n(e0,{table_type:s.table_type}),onClick:()=>{e.setKeywords(r,s.table_name)},active:e.table_name===s.table_name},s.table_name))},r))})}),n0=({visible:e})=>n(a.Box,{py:10,sx:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:n(a.LoadingOverlay,{visible:e})}),r0=[{label:"10",value:"10"},{label:"20",value:"20"},{label:"50",value:"50"},{label:"100",value:"100"}],i0={icon:{width:"50px",textAlign:"center"},input:{"&.mantine-Input-withIcon":{paddingLeft:"50px"}}},a0=T.observer(({dataSource:e})=>{const{tableData:t}=e;return p(a.Group,{pt:10,px:10,position:"apart",children:[p(a.Group,{position:"left",children:[t.maxPage>1&&n(a.Pagination,{size:"sm",page:t.page,onChange:t.setPage,total:t.maxPage,withEdges:t.maxPage>7,styles:{item:{height:"30px"}}}),n(a.Select,{icon:n(a.Text,{ta:"center",color:"dimmed",size:14,children:"Limit"}),size:"xs",styles:i0,data:r0,value:String(t.limit),onChange:r=>t.setLimit(Number(r))})]}),n(a.Group,{position:"right",children:p(a.Text,{color:"dimmed",my:0,size:14,children:["Total ",t.total," rows"]})})]})}),s0=T.observer(({dataSource:e})=>{const t=e.tableData;return t.maxPage===0?n(a.Text,{mt:20,color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:"This table is empty"}):t.error?n(a.Text,{mt:20,color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:t.error}):t.page===1&&t.loading?n(n0,{visible:!0}):p(Ae,{children:[n(a0,{dataSource:e}),p(a.Box,{py:10,sx:{width:"100%",height:"calc(100% - 42px)",overflow:"auto",position:"relative"},children:[n(a.LoadingOverlay,{visible:t.loading,overlayBlur:2}),n(Ds,{data:t.data})]})]})}),o0={root:{flexGrow:1,overflow:"auto",borderLeft:"1px solid #efefef"},tabsList:{borderBottom:"1px solid #efefef"},tab:{minWidth:120}},l0=T.observer(({dataSource:e})=>(b.useEffect(()=>{e.loadTablesIfEmpty()},[e]),e.tables.error?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:e.tables.error}):p(a.Flex,{sx:{height:"100%"},children:[n(a.Box,{w:300,sx:{flexGrow:0,flexShrink:0,position:"relative"},children:n(Ae,{children:n(t0,{dataSource:e})})}),p(a.Tabs,{defaultValue:"structure",styles:o0,children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"structure",icon:n(V.IconColumns,{size:14}),children:"Structure"}),n(a.Tabs.Tab,{value:"data",icon:n(V.IconDatabase,{size:14}),children:"Data"})]}),n(a.Tabs.Panel,{value:"structure",children:n(Hx,{dataSource:e})}),n(a.Tabs.Panel,{value:"data",sx:{width:"100%",height:"calc(100% - 36px)",overflow:"hidden"},children:n(s0,{dataSource:e})})]})]}))),u0={modal:{paddingLeft:"0px !important",paddingRight:"0px !important"},header:{marginBottom:0,padding:"0 20px 10px",borderBottom:"1px solid #efefef"},title:{flexGrow:1},body:{padding:"0 0 0 20px"}},Es=T.observer(({dataSource:e,triggerButtonProps:t={}})=>{const[r,i]=b.useState(!1);return p(P,{children:[n(a.Modal,{opened:r,onClose:()=>i(!1),title:p(a.Group,{position:"apart",sx:{flexGrow:1},children:[n(a.Text,{fw:500,children:"Explorer Data Source"}),p(a.Group,{spacing:7,children:[n(a.Badge,{variant:"gradient",gradient:{from:"indigo",to:"cyan"},children:e.key}),n(a.Badge,{variant:"gradient",gradient:{from:"orange",to:"red"},children:e.type})]})]}),zIndex:320,size:"96vw",overflow:"inside",styles:u0,children:n(a.Box,{sx:{height:"calc(100vh - 220px)"},children:n(l0,{dataSource:e})})}),n(a.Button,{variant:"subtle",onClick:()=>i(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},...t,children:"See Table Structure"})]})}),d0=b.forwardRef(({label:e,type:t,...r},i)=>p(a.Group,{position:"apart",ref:i,...r,children:[n(a.Text,{children:e}),n(a.Text,{children:t})]})),c0=T.observer(({value:e,onChange:t})=>{const r=N(),{data:i=[],loading:s}=Z.useRequest(lr,{refreshDeps:[]},[]),o=b.useMemo(()=>i.map(c=>({label:c.key,value:c.key,type:c.type})),[i]),u=b.useMemo(()=>o.reduce((c,f)=>(c[f.value]=f.type,c),{}),[o]),l=c=>{c!==null&&t({key:c,type:u[c]})},d=b.useMemo(()=>r.datasources.find(e),[r,e]);return n(a.Select,{data:o,label:p(a.Group,{position:"apart",children:[n(a.Box,{children:"Data Source"}),d&&n(Es,{dataSource:d,triggerButtonProps:{compact:!0,size:"xs",px:10}})]}),itemComponent:d0,rightSection:d?n(a.Text,{size:"xs",color:"dimmed",children:d.type}):void 0,rightSectionWidth:85,maxDropdownHeight:280,styles:{root:{flex:1},label:{display:"block"},rightSection:{pointerEvents:"none",".mantine-Text-root":{userSelect:"none"}}},disabled:s,value:e.key,onChange:l})}),p0=e=>{const{queryModel:t}=e,r=N(),s=r.findQueryUsage(t.id).length>0,o=Oe.useModals(),u=()=>{o.openConfirmModal({title:"Delete this query?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.queries.removeQuery(t.id),r.editor.setPath(["_QUERIES_",""])},zIndex:320})};return s?n(a.Tooltip,{label:"Can't delete this query for it's being used, check out Usage tab for details",withArrow:!0,events:{hover:!0,focus:!1,touch:!1},withinPortal:!0,children:n(a.Button,{color:"gray",size:"xs",leftIcon:n(V.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})}):n(a.Button,{color:"red",size:"xs",onClick:u,leftIcon:n(V.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})},h0=T.observer(p0),f0=T.observer(({queryModel:e})=>n(a.Center,{ml:20,mt:20,sx:{maxWidth:"600px"},children:p(a.Stack,{spacing:10,sx:{width:"100%"},children:[n(a.Divider,{mb:-10,variant:"dashed",label:"Basics",labelPosition:"center"}),n(a.TextInput,{placeholder:"A unique name",label:"Name",required:!0,sx:{flex:1},value:e.name,onChange:t=>{e.setName(t.currentTarget.value)}}),n(c0,{value:{type:e.type,key:e.key},onChange:({type:t,key:r})=>{e.setKey(r),e.setType(t)}}),n(a.Divider,{mt:10,mb:-10,variant:"dashed",label:"Conditions",labelPosition:"center"}),n(a.MultiSelect,{label:"Run query when these are truthy",data:e.conditionOptions,value:[...e.run_by],onChange:e.setRunBy}),n(a.Divider,{mt:20,mb:10,variant:"dashed"}),n(h0,{queryModel:e})]})}));function g0(){const[e,{open:t,close:r}]=ye.useDisclosure(!1);return p(P,{children:[n(a.Modal,{opened:e,onClose:r,title:"About FunctionUtils",zIndex:320,children:n(Nt,{value:Qy,styles:{root:{border:"none"},content:{padding:0}}})}),n(a.Button,{variant:"light",color:"violet",size:"xs",onClick:t,leftIcon:n(V.IconInfoCircle,{size:16}),children:"About parameter 'utils'"})]})}const m0=({value:e,onChange:t})=>{const r=i=>{i&&t(i)};return n(a.Box,{sx:{position:"relative",flexGrow:1},children:n(we,{className:"function-editor",height:"100%",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1}}})})},on=b.forwardRef(({value:e,onChange:t,label:r,defaultValue:i},s)=>{const[o,u]=b.useState(e),l=()=>{t(o)},d=()=>{u(e)},c=()=>{u(i)};b.useEffect(()=>{u(e)},[e]);const f=o!==e;return p(a.Stack,{spacing:4,sx:{height:"100%"},children:[p(a.Group,{mb:6,position:"apart",sx:{flexShrink:0,flexGrow:0},children:[n(a.Group,{position:"left",children:n(g0,{})}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,size:"xs",variant:"default",leftIcon:n(V.IconPlayerSkipBack,{size:16}),children:"Reset to default"}),n(a.Button,{onClick:d,color:"red",size:"xs",disabled:!f,leftIcon:n(V.IconRecycle,{size:16}),children:"Revert Changes"}),n(a.Button,{size:"xs",onClick:l,disabled:!f,leftIcon:n(V.IconDeviceFloppy,{size:16}),children:"Confirm Changes"})]})]}),n(a.Text,{size:14,children:r}),n(m0,{value:o,onChange:u})]})}),b0=`
375
455
  -- You may reference global variables in SQL or VizConfig.
376
456
  SELECT *
377
457
  FROM commit
@@ -383,8 +463,8 @@ WHERE
383
463
  -- SQL snippets
384
464
  AND \${sql_snippets.author_email_condition}
385
465
  \${sql_snippets.order_by_clause}
386
- `,Is=T.observer(function({showSQLSnippets:t=!0,sx:r={}}){const i=B(),s=i.context.current,o=(()=>{const u={context:{...i.mock_context.current,...s},filters:i.filters.previewValues};return t&&(u.sql_snippets=i.sqlSnippets.record),JSON.stringify(u,null,2)})();return n(a.Stack,{sx:{overflow:"hidden",...r},children:p(a.Stack,{sx:{width:"100%"},children:[n(a.Text,{weight:500,sx:{flexGrow:0},children:"Guide"}),n(at.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:zx}),n(a.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),n(at.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:o})]})})}),mr=T.observer(()=>{const[e,t]=m.useState(!1);return p(O,{children:[n(a.Modal,{opened:e,onClose:()=>t(!1),title:"Global Variables",zIndex:320,size:"800px",children:n(Is,{})}),n(a.Button,{variant:"subtle",onClick:()=>t(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},children:"See Global Variables"})]})}),Ms={pre:["function build_request({ context, filters }, utils) {"," // build the quest"," return { method, url, params, headers, data }","}"].join(`
466
+ `,Ls=T.observer(function({showSQLSnippets:t=!0,sx:r={}}){const i=N(),s=i.context.current,o=(()=>{const u={context:{...i.mock_context.current,...s},filters:i.filters.previewValues};return t&&(u.sql_snippets=i.sqlSnippets.record),JSON.stringify(u,null,2)})();return n(a.Stack,{sx:{overflow:"hidden",...r},children:p(a.Stack,{sx:{width:"100%"},children:[n(a.Text,{weight:500,sx:{flexGrow:0},children:"Guide"}),n(st.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:b0}),n(a.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),n(st.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:o})]})})}),yr=T.observer(()=>{const[e,t]=b.useState(!1);return p(P,{children:[n(a.Modal,{opened:e,onClose:()=>t(!1),title:"Global Variables",zIndex:320,size:"800px",children:n(Ls,{})}),n(a.Button,{variant:"subtle",onClick:()=>t(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},children:"See Global Variables"})]})}),Os={pre:["function build_request({ context, filters }, utils) {"," // build the quest"," return { method, url, params, headers, data }","}"].join(`
387
467
  `),post:["function process_result(res, utils) {"," // your code goes here"," return data","}"].join(`
388
- `)},$x=T.observer(({queryModel:e})=>e.typedAsHTTP?p(a.Tabs,{defaultValue:"pre_process",orientation:"vertical",sx:{flexGrow:1},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"pre_process",children:"Build Request"}),n(a.Tabs.Tab,{value:"post_process",children:"Process Result"}),n(mr,{})]}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(on,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Ms.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(on,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Ms.post})})]}):null),br=({value:e,onChange:t,height:r="200px",defaultLanguage:i="sql"})=>{const s=u=>{console.log("changing"),t==null||t(u??"")},o=!t;return n(_e,{className:"minimal-monaco-editor",height:r,defaultLanguage:i,value:e,onChange:o?void 0:s,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1},readOnly:o||!t}})},Ex=({value:e,height:t="200px",defaultLanguage:r="sql"})=>n(_e,{className:"preview-sql-in-monaco-editor",height:t,defaultLanguage:r,value:e,onChange:void 0,theme:"vs-light",options:{lineNumbers:"on",folding:!0,lineDecorationsWidth:20,wordWrap:"on",minimap:{enabled:!1},readOnly:!0}}),Lx=T.observer(({value:e})=>{const t=B(),r=t.context.current,i=m.useMemo(()=>es(e,r,t.mock_context.current,t.sqlSnippets.current,t.filters.values),[e,r,t.mock_context.current,t.sqlSnippets.current,t.filters.values]);return n(Ex,{height:"100%",value:i})}),As={pre:["function process_request({ context, filters, sql }, utils) {"," // modify and return sql"," return sql","}"].join(`
468
+ `)},y0=T.observer(({queryModel:e})=>e.typedAsHTTP?p(a.Tabs,{defaultValue:"pre_process",orientation:"vertical",sx:{flexGrow:1},children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"pre_process",children:"Build Request"}),n(a.Tabs.Tab,{value:"post_process",children:"Process Result"}),n(yr,{})]}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(on,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Os.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(on,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Os.post})})]}):null),vr=({value:e,onChange:t,height:r="200px",defaultLanguage:i="sql"})=>{const s=u=>{console.log("changing"),t==null||t(u??"")},o=!t;return n(we,{className:"minimal-monaco-editor",height:r,defaultLanguage:i,value:e,onChange:o?void 0:s,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1},readOnly:o||!t}})},v0=({value:e,height:t="200px",defaultLanguage:r="sql"})=>n(we,{className:"preview-sql-in-monaco-editor",height:t,defaultLanguage:r,value:e,onChange:void 0,theme:"vs-light",options:{lineNumbers:"on",folding:!0,lineDecorationsWidth:20,wordWrap:"on",minimap:{enabled:!1},readOnly:!0}}),x0=T.observer(({value:e})=>{const t=N(),r=t.context.current,i=b.useMemo(()=>ss(e,r,t.mock_context.current,t.sqlSnippets.current,t.filters.values),[e,r,t.mock_context.current,t.sqlSnippets.current,t.filters.values]);return n(v0,{height:"100%",value:i})}),Ps={pre:["function process_request({ context, filters, sql }, utils) {"," // modify and return sql"," return sql","}"].join(`
389
469
  `),post:["function process_result(data, utils) {"," // process data and return the result"," return data","}"].join(`
390
- `)},Px=T.observer(({queryModel:e})=>{const[t,r]=m.useState(e.sql);m.useEffect(()=>{r(o=>o!==e.sql?e.sql:o)},[e.sql]);const i=t!==e.sql,s=()=>{e.setSQL(t)};return e.typedAsSQL?p(a.Tabs,{defaultValue:"Edit",orientation:"vertical",sx:{flexGrow:1},styles:{tabLabel:{width:"100%",height:"28px",lineHeight:"28px"}},keepMounted:!1,children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Edit",children:p(a.Group,{spacing:14,position:"apart",children:["Edit SQL",n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!i,onClick:s,children:n(D.DeviceFloppy,{size:20})})]})}),n(a.Tabs.Tab,{value:"Preview",children:"Preview SQL"}),n(a.Tabs.Tab,{value:"pre_process",children:"Process Request"}),n(a.Tabs.Tab,{value:"post_process",children:"Process Result"}),n(mr,{}),e.datasource&&n(ks,{dataSource:e.datasource})]}),n(a.Tabs.Panel,{value:"Edit",sx:{position:"relative"},p:"sm",children:n(br,{height:"100%",value:t,onChange:r})}),n(a.Tabs.Panel,{value:"Preview",p:0,pl:4,children:n(Lx,{value:e.sql})}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(on,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:As.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(on,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:As.post})})]}):null}),Ox=T.observer(({queryID:e,usage:t})=>{const r=B().editor,i=o=>{if(o.type==="filter"){r.setPath(["_FILTERS_",o.id]);return}if(o.type==="panel"){const u=o.views[0].id;r.setPath(["_VIEWS_",u,"_PANELS_",o.id]);return}},s=o=>{r.setPath(["_VIEWS_",o])};return n(a.Stack,{py:"sm",px:"md",children:p(a.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[n("thead",{children:p("tr",{children:[n("th",{style:{width:100},children:"Type"}),n("th",{style:{width:"calc(50% - 50px)"},children:"Name"}),n("th",{children:"In View(s)"})]})}),n("tbody",{children:t.map(o=>p("tr",{children:[n("td",{children:y.capitalize(o.type)}),n("td",{children:n(a.Anchor,{component:"button",type:"button",onClick:()=>i(o),children:o.label})}),n("td",{children:p(a.Stack,{align:"flex-start",justify:"flex-start",spacing:2,children:[o.views.map(u=>n(a.Anchor,{component:"button",type:"button",onClick:()=>s(u.id),children:n(a.Box,{children:u.label})})),o.views.length===0&&n(a.Box,{children:"--"})]})})]},o.id))})]})})}),ln={height:"calc(100% - 44px)",padding:0},Vx=T.observer(({queryModel:e})=>{const t=B(),r=m.useMemo(()=>e.datasource?e.typedAsHTTP?"HTTP":"SQL":"Configurations",[e.datasource,e.typedAsHTTP]),i=t.findQueryUsage(e.id),s=i.length===0;return n(a.Stack,{sx:{flexGrow:1},my:0,p:0,children:p(a.Tabs,{defaultValue:r,orientation:"horizontal",keepMounted:!1,sx:{flexGrow:1},children:[p(a.Tabs.List,{grow:!0,children:[n(a.Tabs.Tab,{value:"Configurations",children:"Configurations"}),e.typedAsSQL&&n(a.Tabs.Tab,{value:"SQL",children:"Request"}),e.typedAsHTTP&&n(a.Tabs.Tab,{value:"HTTP",children:"Request"}),n(a.Tabs.Tab,{value:"Data",disabled:!e.datasource,children:n(a.Tooltip,{label:"Need to pick a Data Source first",disabled:e.datasource,withinPortal:!0,children:n(a.Text,{children:"Data"})})}),n(a.Tabs.Tab,{value:"Usage",disabled:s,children:n(a.Tooltip,{label:"This query is not used for any filter or panel",disabled:!s,withinPortal:!0,children:n(a.Text,{children:"Usage"})})})]}),n(a.Tabs.Panel,{value:"Configurations",pt:0,p:0,children:n(Ix,{queryModel:e})}),e.typedAsSQL&&n(a.Tabs.Panel,{value:"SQL",sx:ln,children:n(a.Stack,{sx:{height:"100%"},children:n(Px,{queryModel:e})})}),e.typedAsHTTP&&n(a.Tabs.Panel,{value:"HTTP",sx:ln,children:n(a.Stack,{sx:{height:"100%"},children:n($x,{queryModel:e})})}),n(a.Tabs.Panel,{value:"Data",sx:{...ln,overflow:"hidden"},children:n(ws,{id:e.id})}),n(a.Tabs.Panel,{value:"Usage",sx:{...ln,overflow:"hidden"},children:n(Ox,{queryID:e.id,usage:i})})]})})}),Bx=T.observer(({id:e})=>{const r=B().queries.findByID(e);return e===""?null:r?n(a.Stack,{sx:{height:"100%"},spacing:"sm",children:n(Vx,{queryModel:r})}):n(a.Text,{size:14,color:"red",children:"Invalid Query ID"})}),Nx=T.observer(({value:e})=>{const t=B(),r=t.context.current,i=fv(e,r,t.mock_context.current,t.filters.values);return n(br,{height:"100%",value:i})}),Gx=T.observer(({item:e,remove:t,onKeyChanged:r})=>{const[i,s]=m.useState("SQL"),[o,u]=m.useState(e.key),l=()=>{e.setKey(o),r(o)},d=o!==e.key,c=e.isADuplicatedKey(o),[f,g]=m.useState(e.value),h=()=>{e.setValue(f)};m.useEffect(()=>{u(e.key),g(e.value)},[e]);const b=f!==e.value,w=Pe.useModals(),C=()=>{w.openConfirmModal({title:"Delete this SQL snippet?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:t,zIndex:320})};return p(a.Stack,{p:20,sx:{maxWidth:"1100px",height:"100vh"},spacing:"sm",children:[p(a.Group,{sx:{alignItems:"end"},spacing:40,children:[n(a.TextInput,{label:c?"This key is occupied by another snippet":"Key",value:o,onChange:S=>{u(S.currentTarget.value)},sx:{flexGrow:"1 !important"},rightSection:n(a.ActionIcon,{color:"blue",variant:"subtle",onClick:l,disabled:!d||c,children:n(D.DeviceFloppy,{size:16})}),error:c}),n(a.Button,{leftIcon:n(D.Trash,{size:16}),color:"red",variant:"light",onClick:C,children:"Delete this SQL Snippet"})]}),p(a.Tabs,{value:i,onTabChange:s,sx:{flexGrow:1},styles:{panel:{height:"calc(100% - 50px)"}},children:[p(a.Tabs.List,{sx:{position:"relative"},children:[n(a.Tabs.Tab,{value:"SQL",children:"SQL"}),n(a.Tabs.Tab,{value:"Preview",children:"Preview"}),n(mr,{}),n(a.ActionIcon,{color:"blue",variant:"filled",onClick:h,disabled:!b,sx:{position:"absolute",top:0,right:10},children:n(D.DeviceFloppy,{size:18})})]}),n(a.Tabs.Panel,{value:"SQL",pt:"sm",children:n(br,{height:"100%",value:f,onChange:g})}),n(a.Tabs.Panel,{value:"Preview",pt:"sm",children:n(Nx,{value:f})})]})]})}),qx=T.observer(({id:e})=>{const t=B(),r=m.useMemo(()=>t.sqlSnippets.findByKey(e),[e]);if(!e)return null;if(!r)return p(a.Text,{size:14,children:["SQL Snippet by key[",e,"] is not found"]});const i=()=>{t.editor.setPath(["_SQL_SNIPPETS_",""])};return n(Gx,{item:r,remove:()=>{t.sqlSnippets.removeByKey(e),i()},onKeyChanged:u=>{t.editor.setPath(["_SQL_SNIPPETS_",u])}})}),Fx=T.observer(({view:e})=>!e||e.type!==K.Division?null:p(a.Stack,{children:[n(a.Divider,{mt:8,mb:0,label:"Division settings",labelPosition:"center"}),n(a.Text,{align:"center",size:"xs",color:"dimmed",children:"Under construction"})]})),Wx=[{value:"default",label:"Default"},{value:"outline",label:"Outline"},{value:"pills",label:"Pills"}],jx=[{value:"horizontal",label:"Horizontal"},{value:"vertical",label:"Vertical"}],Rx=T.observer(({view:e})=>{if(!e||e.type!==K.Tabs)return null;const t=e.config;return p(a.Stack,{children:[n(a.Divider,{mt:8,mb:0,label:"Tabs settings",labelPosition:"center"}),n(a.Select,{label:"Variant",value:t.variant,onChange:t.setVariant,data:Wx}),n(a.Select,{label:"Orientation",value:t.orientation,onChange:t.setOrientation,data:jx}),n(a.Switch,{label:"Grow Tabs",checked:t.grow,onChange:r=>t.setGrow(r.currentTarget.checked)})]})}),Yx=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(_e,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Qx=({value:e,onChange:t})=>{const[r,{setTrue:i,setFalse:s}]=Z.useBoolean(),[o,u]=m.useState(e??or),l=h=>{u({...o,enabled:h})},d=()=>{s();const{enabled:h,func_content:b}=o,w={enabled:h,func_content:b};u(w),t(w)},c=()=>{s(),u(e)},f=h=>{u(b=>({...b,func_content:h}))},g=()=>{f(or.func_content)};return p(O,{children:[n(a.ActionIcon,{size:"lg",color:"blue",variant:"filled",mt:26,onClick:i,sx:{flexGrow:0},children:n(D.Settings,{size:14})}),n(a.Modal,{size:800,title:"Customize modal title",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:o.enabled,onChange:h=>l(h.currentTarget.checked)}),n(Yx,{value:o.func_content,onChange:f,disabled:!o.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(D.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},Ux=T.observer(({view:e})=>{if(!e||e.type!==K.Modal)return null;const t=e.config,r=t.custom_modal_title.value;return p(a.Stack,{children:[n(a.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),p(a.Flex,{gap:10,children:[n(a.TextInput,{label:"Modal Title",value:r,onChange:y.noop,disabled:!0,sx:{flexGrow:1}}),n(Qx,{value:t.custom_modal_title,onChange:t.custom_modal_title.replace})]}),p(a.Group,{grow:!0,children:[n(a.TextInput,{label:"Width",value:t.width,onChange:i=>t.setWidth(i.currentTarget.value),placeholder:"600px / 50vw"}),n(a.TextInput,{label:"Height",value:t.height,onChange:i=>t.setHeight(i.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),Xx=T.observer(({view:e})=>p(O,{children:[n(Fx,{view:e}),n(Ux,{view:e}),n(Rx,{view:e})]})),Zx=[{label:"Division",value:K.Division},{label:"Modal",value:K.Modal},{label:"Tabs",value:K.Tabs}],Kx=T.observer(({view:e})=>e?p(a.Stack,{sx:{position:"relative"},children:[n(a.TextInput,{label:"Name",value:e.name,onChange:t=>{e.setName(t.currentTarget.value)}}),n(a.Select,{label:"Type",withinPortal:!0,value:e.type,onChange:e.setType,data:Zx}),n(Xx,{view:e})]}):null),Jx=T.observer(({id:e})=>{const t=Pe.useModals(),r=B();if(e==="")return null;const i=r.views.findByID(e);if(!i)return p(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const s=()=>{r.editor.setPath(["_VIEWS_",""])},o=()=>{t.openConfirmModal({title:"Delete this view?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.views.removeByID(e),s()},zIndex:320})};return p(a.Stack,{sx:{maxWidth:"600px",height:"100%"},spacing:"sm",children:[n(a.Group,{position:"right",pt:10,children:n(a.Button,{size:"xs",color:"red",leftIcon:n(D.Trash,{size:16}),onClick:o,children:"Delete this view"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(Kx,{view:i})})]})});function Hx(e){return e.length===1&&e[0]==="_GLOBAL_VARS_"}function eC(e){return e.length===1&&e[0]==="_MOCK_CONTEXT_"}function tC(e){return e.length===2&&e[0]==="_FILTERS_"}function nC(e){return e.length===2&&e[0]==="_SQL_SNIPPETS_"}function rC(e){return e.length===2&&e[0]==="_QUERIES_"}function iC(e){return e.length===2&&e[0]==="_VIEWS_"}function aC(e){return e.length===4&&e[0]==="_VIEWS_"&&e[2]==="_PANELS_"}const sC=T.observer(()=>n(a.Stack,{sx:{height:"100%"},p:"sm",children:n(Is,{})})),oC=T.observer(()=>{const e=B().editor,t=e.path;return Hx(t)?n(sC,{}):eC(t)?n(zy,{}):tC(t)?n(a.Box,{p:"xs",pl:20,children:n(Ay,{id:t[1]})}):nC(t)?n(qx,{id:t[1]}):rC(t)?n(Bx,{id:t[1]}):iC(t)?n(a.Box,{p:"xs",pl:20,children:n(Jx,{id:t[1]})}):aC(t)?n(ox,{viewID:t[1],panelID:t[3]}):n(a.Box,{children:e.path})}),lC=T.observer(()=>(B().editor,n(oC,{}))),uC=T.observer(()=>{const e=B(),t=()=>{const r=new Date().getTime().toString(),i={id:r,key:r,label:r,order:e.filters.current.length+1,type:tr.TextInput,config:Qa(),visibleInViewsIDs:["Main"],auto_submit:!1};e.filters.append(i)};return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:t,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Filter"})}),dC=T.observer(({parentID:e})=>{const t=B();if(!e)return null;const r=t.views.findByID(e);return r?n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:()=>t.addANewPanel(r.id),sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Panel"}):null}),cC=T.observer(()=>{const e=B(),t=()=>{const r=new Date().getTime().toString(),i={id:r,name:r,type:ce.Postgresql,key:"",sql:""};e.queries.append(i)};return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:t,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Query"})}),pC=T.observer(()=>{const e=B(),t=()=>{const i={key:new Date().getTime().toString(),value:""};e.sqlSnippets.append(i)};return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:t,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a SQL Snippet"})}),hC=T.observer(()=>{const e=B();return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:e.views.addARandomNewView,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a View"})}),fC=T.observer(({action_type:e,parentID:t})=>(B(),e==="_Add_A_Filter_"?n(uC,{}):e==="_Add_A_SQL_SNIPPET_"?n(pC,{}):e==="_Add_A_QUERY_"?n(cC,{}):e==="_Add_A_VIEW_"?n(hC,{}):e==="_Add_A_PANEL_"?n(dC,{parentID:t}):null)),zs=T.observer(({option:e})=>{var c;const t=B().editor,r=t.isOptionActive,i=r(t.path,e),s=t.isOptionOpened,o=t.navigate,u=s(e),[l,d]=m.useState(u);return m.useEffect(()=>{d(u)},[u]),n(a.NavLink,{active:i,defaultOpened:u,opened:l,onChange:d,label:e.label,onClick:()=>o(e),icon:e.Icon?n(e.Icon,{size:18}):null,children:(c=e.children)==null?void 0:c.map(f=>f._type==="ACTION"?n(fC,{action_type:f._action_type,parentID:f.parentID},`_ADD_${f.value}_`):n(zs,{option:f},f.value))},e.label)}),gC=T.observer(()=>{const e=B();return n(a.Box,{sx:{position:"relative"},children:e.editor.navOptions.map(t=>n(zs,{option:t},t.value))})}),mC=T.observer(()=>{const e=B();return p(a.Navbar,{p:0,width:{base:200,xs:200,sm:220,md:240,lg:280,xl:300},sx:{height:"100vh - 60px - 60px"},children:[n(a.Navbar.Section,{pt:9,pb:8,sx:{borderBottom:"1px solid #eee"},children:n(a.Text,{align:"center",sx:{userSelect:"none",cursor:"default"},children:"Settings"})}),n(a.Navbar.Section,{grow:!0,sx:{overflow:"auto"},children:n(gC,{})}),n(a.Navbar.Section,{children:n(a.Group,{grow:!0,p:"md",pt:"sm",sx:{borderTop:"1px solid #eee"},children:n(a.Button,{size:"xs",color:"red",leftIcon:n(V.IconX,{size:18}),onClick:()=>e.editor.close(),children:"Close"})})})]})}),bC={root:{height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"},body:{flexGrow:1,nav:{top:0,height:"100vh"}},main:{flexGrow:1,display:"flex",flexDirection:"column",paddingTop:0,height:"100vh"}},vC=T.observer(()=>{const e=B().editor;return n(a.Modal,{onClose:()=>e.setSettingsOpen(!1),closeOnEscape:!1,closeOnClickOutside:!1,opened:e.settings_open,fullScreen:!0,title:null,transitionDuration:0,withCloseButton:!1,withinPortal:!0,zIndex:300,styles:{modal:{padding:"0 !important"}},children:n(a.AppShell,{padding:0,navbar:n(mC,{}),styles:bC,children:n(lC,{})})})}),yC=e=>e.replace(/([^:])(\/\/+)/g,"$1/");function xC(e){m.useEffect(()=>{if(_e.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/dashboard");const r=yC(e);_e.loader.config({paths:{vs:r}}),_e.loader.init().then(i=>console.log("monaco instance:",i))},[])}const $s={grid:{axis:"#97999D",scope:"rgba(47,140,192,0.1)",boundary:"#789AB4",reference:"#CFCFD8"},graphics:{compared:{blueDark:"#3E7CAB",blue:"#6398C7",blueLight:"#7CB0DF",blue10:"#6398C71a",redDark:"#AF5F6B",red:"#CD7C88",redLight:"#E794A0",red10:"#CD7C881a"},gradient:{distributed:"linear-gradient(90deg, #1babe6 0%, #2fc8c8 28.63%, #98d44b 48.86%, #ffd057 67.53%, #f5ae53 80.6%, #e76441 91.18%, #b90000 100%)",protrude:"linear-gradient(180deg, #ec73734d 0%, #ec737300 100%)"},level:{lv0:"#6398C7",lv1:"#61B5BF",lv2:"#54D4BB",lv3:"#F5D277",lv4:"#E8BB7F",lv5:"#DB9E84",lv6:"#CB8089"},depth:{dp0:"#FFF7F8",dp1:"#FFE1E1",dp2:"#FDBCBC",dp3:"#F39494",dp4:"#FA4242",dp5:"#E21212"},multiple:{c1:"#66B4DB",c2:"#E46464",c3:"#EEBA00",c4:"#33A678",c5:"#9D88CB",c6:"#939943",c7:"#E49792",c8:"#09A2B8",c9:"#AF5F6B",c10:"#6CA157",c11:"#3E7CAB",c12:"#6398C7",c13:"#E692BA",c14:"#97B566",c15:"#8CACE2",c16:"#CA79AC",c17:"#6DBC80",c18:"#B08F4B",c19:"#39BFA2",c20:"#826BAF"}}};function CC(){oe.registerTheme("merico-light",{color:Object.values($s.graphics.multiple),visualMap:{color:Object.values($s.graphics.depth).reverse()}})}function Es(){CC()}Es();const wC={root:{height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"},body:{flexGrow:1},main:{flexGrow:1,display:"flex",flexDirection:"column",paddingTop:60,height:"100vh"}},_C=T.observer(m.forwardRef(function({context:t,dashboard:r,update:i,className:s="dashboard",config:o,onChange:u,headerSlot:l},d){xC(o.monacoPath),Na(o);const{data:c=[]}=Z.useRequest(sr),[f,g]=m.useState(!1),h=m.useMemo(()=>ur(r,c,t),[r]);m.useImperativeHandle(d,()=>h,[h]),Si(h,!0),m.useEffect(()=>{h.context.replace(t)},[t]),m.useEffect(()=>{h.datasources.replace(c)},[c]),m.useEffect(()=>ae.reaction(()=>ae.toJS(h.json),S=>{u==null||u(S)}),[h]);const b=async()=>{await i(h.json)},w=Z.useCreation(Hn,[]),C=dr(w);return n(Pe.ModalsProvider,{children:n(mn,{value:h,children:n(Xe.Provider,{value:{layoutFrozen:f,freezeLayout:g,inEditMode:!0},children:n(Ne.Provider,{value:w,children:p(Bt,{configure:C,children:[n(a.AppShell,{padding:0,header:n(Wv,{saveDashboardChanges:b,headerSlot:l}),navbar:n(gy,{}),styles:wC,children:n(a.Box,{className:`${s} dashboard-root`,sx:{position:"relative"},children:h.views.visibleViews.map(S=>n(Ba,{view:S},S.id))})}),n(vC,{})]})})})})})})),yw="";Es();const SC=T.observer(({context:e,dashboard:t,className:r="dashboard",config:i,fullScreenPanelID:s,setFullScreenPanelID:o})=>{Na(i);const{data:u=[]}=Z.useRequest(sr),l=m.useMemo(()=>ur(t,u,e),[t]);Si(l,!1),m.useEffect(()=>{l.context.replace(e)},[e]),m.useEffect(()=>{l.datasources.replace(u)},[u]);const d=Z.useCreation(Hn,[]),c=dr(d);return n(Pe.ModalsProvider,{children:n(mn,{value:l,children:n(yn.Provider,{value:{fullScreenPanelID:s,setFullScreenPanelID:o},children:n(Xe.Provider,{value:{layoutFrozen:!0,freezeLayout:y.noop,inEditMode:!1},children:n(a.Box,{className:`${r} dashboard-root`,children:n(Ne.Provider,{value:d,children:n(Bt,{configure:c,children:l.views.visibleViews.map(f=>n(en,{view:f},f.id))})})})})})})})});var vr={},TC={get exports(){return vr},set exports(e){vr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=o.format;s.en.ordinal=function(l){var d=["th","st","nd","rd"],c=l%100;return"["+l+(d[(c-20)%10]||d[c]||d[0])+"]"},o.format=function(l){var d=this,c=this.$locale();if(!this.isValid())return u.bind(this)(l);var f=this.$utils(),g=(l||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(h){switch(h){case"Q":return Math.ceil((d.$M+1)/3);case"Do":return c.ordinal(d.$D);case"gggg":return d.weekYear();case"GGGG":return d.isoWeekYear();case"wo":return c.ordinal(d.week(),"W");case"w":case"ww":return f.s(d.week(),h==="w"?1:2,"0");case"W":case"WW":return f.s(d.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return f.s(String(d.$H===0?24:d.$H),h==="k"?1:2,"0");case"X":return Math.floor(d.$d.getTime()/1e3);case"x":return d.$d.getTime();case"z":return"["+d.offsetName()+"]";case"zzz":return"["+d.offsetName("long")+"]";default:return h}});return u.bind(this)(g)}}})})(TC);const DC=vr;var yr={},kC={get exports(){return yr},set exports(e){yr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=function(d){var c=d.date,f=d.utc;return Array.isArray(c)?f?c.length?new Date(Date.UTC.apply(null,c)):new Date:c.length===1?s(String(c[0])).toDate():new(Function.prototype.bind.apply(Date,[null].concat(c))):c},l=o.parse;o.parse=function(d){d.date=u.bind(this)(d),l.bind(this)(d)}}})})(kC);const IC=yr;var xr={},MC={get exports(){return xr},set exports(e){xr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype;s.$g=function(h,b,w){return this.$utils().u(h)?this[b]:this.$set(w,h)},s.set=function(h,b){return this.$set(h,b)};var o=s.startOf;s.startOf=function(h,b){return this.$d=o.bind(this)(h,b).toDate(),this.init(),this};var u=s.add;s.add=function(h,b){return this.$d=u.bind(this)(h,b).toDate(),this.init(),this};var l=s.locale;s.locale=function(h,b){return h?(this.$L=l.bind(this)(h,b).$L,this):this.$L};var d=s.daysInMonth;s.daysInMonth=function(){return d.bind(this.clone())()};var c=s.isSame;s.isSame=function(h,b){return c.bind(this.clone())(h,b)};var f=s.isBefore;s.isBefore=function(h,b){return f.bind(this.clone())(h,b)};var g=s.isAfter;s.isAfter=function(h,b){return g.bind(this.clone())(h,b)}}})})(MC);const AC=xr;var Cr={},zC={get exports(){return Cr},set exports(e){Cr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype,o=s.format;s.format=function(u){var l=this,d=(u||"YYYY-MM-DDTHH:mm:ssZ").replace(/(\[[^\]]+])|BBBB|BB/g,function(c,f){var g,h=String(l.$y+543),b=c==="BB"?[h.slice(-2),2]:[h,4];return f||(g=l.$utils()).s.apply(g,b.concat(["0"]))});return o.bind(this)(d)}}})})(zC);const $C=Cr;var wr={},EC={get exports(){return wr},set exports(e){wr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o="h:mm A",u={lastDay:"[Yesterday at] "+o,sameDay:"[Today at] "+o,nextDay:"[Tomorrow at] "+o,nextWeek:"dddd [at] "+o,lastWeek:"[Last] dddd [at] "+o,sameElse:"MM/DD/YYYY"};i.prototype.calendar=function(l,d){var c=d||this.$locale().calendar||u,f=s(l||void 0).startOf("d"),g=this.diff(f,"d",!0),h="sameElse",b=g<-6?h:g<-1?"lastWeek":g<0?"lastDay":g<1?"sameDay":g<2?"nextDay":g<7?"nextWeek":h,w=c[b]||u[b];return typeof w=="function"?w.call(this,s()):this.format(w)}}})})(EC);const LC=wr;var _r={},PC={get exports(){return _r},set exports(e){_r=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\d\d/,o=/\d\d?/,u=/\d*[^-_:/,()\s\d]+/,l={},d=function(C){return(C=+C)+(C>68?1900:2e3)},c=function(C){return function(S){this[C]=+S}},f=[/[+-]\d\d:?(\d\d)?|Z/,function(C){(this.zone||(this.zone={})).offset=function(S){if(!S||S==="Z")return 0;var A=S.match(/([+-]|\d\d)/g),z=60*A[1]+(+A[2]||0);return z===0?0:A[0]==="+"?-z:z}(C)}],g=function(C){var S=l[C];return S&&(S.indexOf?S:S.s.concat(S.f))},h=function(C,S){var A,z=l.meridiem;if(z){for(var G=1;G<=24;G+=1)if(C.indexOf(z(G,0,S))>-1){A=G>12;break}}else A=C===(S?"pm":"PM");return A},b={A:[u,function(C){this.afternoon=h(C,!1)}],a:[u,function(C){this.afternoon=h(C,!0)}],S:[/\d/,function(C){this.milliseconds=100*+C}],SS:[s,function(C){this.milliseconds=10*+C}],SSS:[/\d{3}/,function(C){this.milliseconds=+C}],s:[o,c("seconds")],ss:[o,c("seconds")],m:[o,c("minutes")],mm:[o,c("minutes")],H:[o,c("hours")],h:[o,c("hours")],HH:[o,c("hours")],hh:[o,c("hours")],D:[o,c("day")],DD:[s,c("day")],Do:[u,function(C){var S=l.ordinal,A=C.match(/\d+/);if(this.day=A[0],S)for(var z=1;z<=31;z+=1)S(z).replace(/\[|\]/g,"")===C&&(this.day=z)}],M:[o,c("month")],MM:[s,c("month")],MMM:[u,function(C){var S=g("months"),A=(g("monthsShort")||S.map(function(z){return z.slice(0,3)})).indexOf(C)+1;if(A<1)throw new Error;this.month=A%12||A}],MMMM:[u,function(C){var S=g("months").indexOf(C)+1;if(S<1)throw new Error;this.month=S%12||S}],Y:[/[+-]?\d+/,c("year")],YY:[s,function(C){this.year=d(C)}],YYYY:[/\d{4}/,c("year")],Z:f,ZZ:f};function w(C){var S,A;S=C,A=l&&l.formats;for(var z=(C=S.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Q,Y,te){var re=te&&te.toUpperCase();return Y||A[te]||r[te]||A[re].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(se,ne,pe){return ne||pe.slice(1)})})).match(i),G=z.length,F=0;F<G;F+=1){var L=z[F],$=b[L],M=$&&$[0],N=$&&$[1];z[F]=N?{regex:M,parser:N}:L.replace(/^\[|\]$/g,"")}return function(Q){for(var Y={},te=0,re=0;te<G;te+=1){var se=z[te];if(typeof se=="string")re+=se.length;else{var ne=se.regex,pe=se.parser,he=Q.slice(re),we=ne.exec(he)[0];pe.call(Y,we),Q=Q.replace(we,"")}}return function(qe){var ke=qe.afternoon;if(ke!==void 0){var Re=qe.hours;ke?Re<12&&(qe.hours+=12):Re===12&&(qe.hours=0),delete qe.afternoon}}(Y),Y}}return function(C,S,A){A.p.customParseFormat=!0,C&&C.parseTwoDigitYear&&(d=C.parseTwoDigitYear);var z=S.prototype,G=z.parse;z.parse=function(F){var L=F.date,$=F.utc,M=F.args;this.$u=$;var N=M[1];if(typeof N=="string"){var Q=M[2]===!0,Y=M[3]===!0,te=Q||Y,re=M[2];Y&&(re=M[2]),l=this.$locale(),!Q&&re&&(l=A.Ls[re]),this.$d=function(he,we,qe){try{if(["x","X"].indexOf(we)>-1)return new Date((we==="X"?1e3:1)*he);var ke=w(we)(he),Re=ke.year,rt=ke.month,un=ke.day,dn=ke.hours,Jr=ke.minutes,Hr=ke.seconds,It=ke.milliseconds,pt=ke.zone,He=new Date,it=un||(Re||rt?1:He.getDate()),et=Re||He.getFullYear(),ht=0;Re&&!rt||(ht=rt>0?rt-1:He.getMonth());var ft=dn||0,Mt=Jr||0,At=Hr||0,tt=It||0;return pt?new Date(Date.UTC(et,ht,it,ft,Mt,At,tt+60*pt.offset*1e3)):qe?new Date(Date.UTC(et,ht,it,ft,Mt,At,tt)):new Date(et,ht,it,ft,Mt,At,tt)}catch{return new Date("")}}(L,N,$),this.init(),re&&re!==!0&&(this.$L=this.locale(re).$L),te&&L!=this.format(N)&&(this.$d=new Date("")),l={}}else if(N instanceof Array)for(var se=N.length,ne=1;ne<=se;ne+=1){M[1]=N[ne-1];var pe=A.apply(this,M);if(pe.isValid()){this.$d=pe.$d,this.$L=pe.$L,this.init();break}ne===se&&(this.$d=new Date(""))}else G.call(this,F)}}})})(PC);const OC=_r;var Sr={},VC={get exports(){return Sr},set exports(e){Sr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.dayOfYear=function(o){var u=Math.round((s(this).startOf("day")-s(this).startOf("year"))/864e5)+1;return o==null?u:this.add(o-u,"day")}}})})(VC);const BC=Sr;var Tr={},NC={get exports(){return Tr},set exports(e){Tr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r,i,s=1e3,o=6e4,u=36e5,l=864e5,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=31536e6,f=2592e6,g=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:c,months:f,days:l,hours:u,minutes:o,seconds:s,milliseconds:1,weeks:6048e5},b=function(L){return L instanceof F},w=function(L,$,M){return new F(L,M,$.$l)},C=function(L){return i.p(L)+"s"},S=function(L){return L<0},A=function(L){return S(L)?Math.ceil(L):Math.floor(L)},z=function(L){return Math.abs(L)},G=function(L,$){return L?S(L)?{negative:!0,format:""+z(L)+$}:{negative:!1,format:""+L+$}:{negative:!1,format:""}},F=function(){function L(M,N,Q){var Y=this;if(this.$d={},this.$l=Q,M===void 0&&(this.$ms=0,this.parseFromMilliseconds()),N)return w(M*h[C(N)],this);if(typeof M=="number")return this.$ms=M,this.parseFromMilliseconds(),this;if(typeof M=="object")return Object.keys(M).forEach(function(se){Y.$d[C(se)]=M[se]}),this.calMilliseconds(),this;if(typeof M=="string"){var te=M.match(g);if(te){var re=te.slice(2).map(function(se){return se!=null?Number(se):0});return this.$d.years=re[0],this.$d.months=re[1],this.$d.weeks=re[2],this.$d.days=re[3],this.$d.hours=re[4],this.$d.minutes=re[5],this.$d.seconds=re[6],this.calMilliseconds(),this}}return this}var $=L.prototype;return $.calMilliseconds=function(){var M=this;this.$ms=Object.keys(this.$d).reduce(function(N,Q){return N+(M.$d[Q]||0)*h[Q]},0)},$.parseFromMilliseconds=function(){var M=this.$ms;this.$d.years=A(M/c),M%=c,this.$d.months=A(M/f),M%=f,this.$d.days=A(M/l),M%=l,this.$d.hours=A(M/u),M%=u,this.$d.minutes=A(M/o),M%=o,this.$d.seconds=A(M/s),M%=s,this.$d.milliseconds=M},$.toISOString=function(){var M=G(this.$d.years,"Y"),N=G(this.$d.months,"M"),Q=+this.$d.days||0;this.$d.weeks&&(Q+=7*this.$d.weeks);var Y=G(Q,"D"),te=G(this.$d.hours,"H"),re=G(this.$d.minutes,"M"),se=this.$d.seconds||0;this.$d.milliseconds&&(se+=this.$d.milliseconds/1e3);var ne=G(se,"S"),pe=M.negative||N.negative||Y.negative||te.negative||re.negative||ne.negative,he=te.format||re.format||ne.format?"T":"",we=(pe?"-":"")+"P"+M.format+N.format+Y.format+he+te.format+re.format+ne.format;return we==="P"||we==="-P"?"P0D":we},$.toJSON=function(){return this.toISOString()},$.format=function(M){var N=M||"YYYY-MM-DDTHH:mm:ss",Q={Y:this.$d.years,YY:i.s(this.$d.years,2,"0"),YYYY:i.s(this.$d.years,4,"0"),M:this.$d.months,MM:i.s(this.$d.months,2,"0"),D:this.$d.days,DD:i.s(this.$d.days,2,"0"),H:this.$d.hours,HH:i.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:i.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:i.s(this.$d.seconds,2,"0"),SSS:i.s(this.$d.milliseconds,3,"0")};return N.replace(d,function(Y,te){return te||String(Q[Y])})},$.as=function(M){return this.$ms/h[C(M)]},$.get=function(M){var N=this.$ms,Q=C(M);return Q==="milliseconds"?N%=1e3:N=Q==="weeks"?A(N/h[Q]):this.$d[Q],N===0?0:N},$.add=function(M,N,Q){var Y;return Y=N?M*h[C(N)]:b(M)?M.$ms:w(M,this).$ms,w(this.$ms+Y*(Q?-1:1),this)},$.subtract=function(M,N){return this.add(M,N,!0)},$.locale=function(M){var N=this.clone();return N.$l=M,N},$.clone=function(){return w(this.$ms,this)},$.humanize=function(M){return r().add(this.$ms,"ms").locale(this.$l).fromNow(!M)},$.milliseconds=function(){return this.get("milliseconds")},$.asMilliseconds=function(){return this.as("milliseconds")},$.seconds=function(){return this.get("seconds")},$.asSeconds=function(){return this.as("seconds")},$.minutes=function(){return this.get("minutes")},$.asMinutes=function(){return this.as("minutes")},$.hours=function(){return this.get("hours")},$.asHours=function(){return this.as("hours")},$.days=function(){return this.get("days")},$.asDays=function(){return this.as("days")},$.weeks=function(){return this.get("weeks")},$.asWeeks=function(){return this.as("weeks")},$.months=function(){return this.get("months")},$.asMonths=function(){return this.as("months")},$.years=function(){return this.get("years")},$.asYears=function(){return this.as("years")},L}();return function(L,$,M){r=M,i=M().$utils(),M.duration=function(Y,te){var re=M.locale();return w(Y,{$l:re},te)},M.isDuration=b;var N=$.prototype.add,Q=$.prototype.subtract;$.prototype.add=function(Y,te){return b(Y)&&(Y=Y.asMilliseconds()),N.bind(this)(Y,te)},$.prototype.subtract=function(Y,te){return b(Y)&&(Y=Y.asMilliseconds()),Q.bind(this)(Y,te)}}})})(NC);const GC=Tr;var Dr={},qC={get exports(){return Dr},set exports(e){Dr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isBetween=function(o,u,l,d){var c=s(o),f=s(u),g=(d=d||"()")[0]==="(",h=d[1]===")";return(g?this.isAfter(c,l):!this.isBefore(c,l))&&(h?this.isBefore(f,l):!this.isAfter(f,l))||(g?this.isBefore(c,l):!this.isAfter(c,l))&&(h?this.isAfter(f,l):!this.isBefore(f,l))}}})})(qC);const FC=Dr;var kr={},WC={get exports(){return kr},set exports(e){kr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isLeapYear=function(){return this.$y%4==0&&this.$y%100!=0||this.$y%400==0}}})})(WC);const jC=kr;var Ir={},RC={get exports(){return Ir},set exports(e){Ir=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){s.isMoment=function(o){return s.isDayjs(o)}}})})(RC);const YC=Ir;var Mr={},QC={get exports(){return Mr},set exports(e){Mr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="day";return function(i,s,o){var u=function(c){return c.add(4-c.isoWeekday(),r)},l=s.prototype;l.isoWeekYear=function(){return u(this).year()},l.isoWeek=function(c){if(!this.$utils().u(c))return this.add(7*(c-this.isoWeek()),r);var f,g,h,b,w=u(this),C=(f=this.isoWeekYear(),g=this.$u,h=(g?o.utc:o)().year(f).startOf("year"),b=4-h.isoWeekday(),h.isoWeekday()>4&&(b+=7),h.add(b,r));return w.diff(C,"week")+1},l.isoWeekday=function(c){return this.$utils().u(c)?this.day()||7:this.day(this.day()%7?c:c-7)};var d=l.startOf;l.startOf=function(c,f){var g=this.$utils(),h=!!g.u(f)||f;return g.p(c)==="isoweek"?h?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):d.bind(this)(c,f)}}})})(QC);const UC=Mr;var Ar={},XC={get exports(){return Ar},set exports(e){Ar=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isoWeeksInYear=function(){var s=this.isLeapYear(),o=this.endOf("y").day();return o===4||s&&o===5?53:52}}})})(XC);const ZC=Ar;var zr={},KC={get exports(){return zr},set exports(e){zr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isSameOrAfter=function(s,o){return this.isSame(s,o)||this.isAfter(s,o)}}})})(KC);const JC=zr;var $r={},HC={get exports(){return $r},set exports(e){$r=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isSameOrBefore=function(s,o){return this.isSame(s,o)||this.isBefore(s,o)}}})})(HC);const e0=$r;var Er={},t0={get exports(){return Er},set exports(e){Er=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isToday=function(){var o="YYYY-MM-DD",u=s();return this.format(o)===u.format(o)}}})})(t0);const n0=Er;var Lr={},r0={get exports(){return Lr},set exports(e){Lr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isTomorrow=function(){var o="YYYY-MM-DD",u=s().add(1,"day");return this.format(o)===u.format(o)}}})})(r0);const i0=Lr;var Pr={},a0={get exports(){return Pr},set exports(e){Pr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isYesterday=function(){var o="YYYY-MM-DD",u=s().subtract(1,"day");return this.format(o)===u.format(o)}}})})(a0);const s0=Pr;var Or={},o0={get exports(){return Or},set exports(e){Or=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=function(g){return g&&(g.indexOf?g:g.s)},l=function(g,h,b,w,C){var S=g.name?g:g.$locale(),A=u(S[h]),z=u(S[b]),G=A||z.map(function(L){return L.slice(0,w)});if(!C)return G;var F=S.weekStart;return G.map(function(L,$){return G[($+(F||0))%7]})},d=function(){return s.Ls[s.locale()]},c=function(g,h){return g.formats[h]||function(b){return b.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(w,C,S){return C||S.slice(1)})}(g.formats[h.toUpperCase()])},f=function(){var g=this;return{months:function(h){return h?h.format("MMMM"):l(g,"months")},monthsShort:function(h){return h?h.format("MMM"):l(g,"monthsShort","months",3)},firstDayOfWeek:function(){return g.$locale().weekStart||0},weekdays:function(h){return h?h.format("dddd"):l(g,"weekdays")},weekdaysMin:function(h){return h?h.format("dd"):l(g,"weekdaysMin","weekdays",2)},weekdaysShort:function(h){return h?h.format("ddd"):l(g,"weekdaysShort","weekdays",3)},longDateFormat:function(h){return c(g.$locale(),h)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return f.bind(this)()},s.localeData=function(){var g=d();return{firstDayOfWeek:function(){return g.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(h){return c(g,h)},meridiem:g.meridiem,ordinal:g.ordinal}},s.months=function(){return l(d(),"months")},s.monthsShort=function(){return l(d(),"monthsShort","months",3)},s.weekdays=function(g){return l(d(),"weekdays",null,null,g)},s.weekdaysShort=function(g){return l(d(),"weekdaysShort","weekdays",3,g)},s.weekdaysMin=function(g){return l(d(),"weekdaysMin","weekdays",2,g)}}})})(o0);const l0=Or;var Vr={},u0={get exports(){return Vr},set exports(e){Vr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(i,s,o){var u=s.prototype,l=u.format;o.en.formats=r,u.format=function(d){d===void 0&&(d="YYYY-MM-DDTHH:mm:ssZ");var c=this.$locale().formats,f=function(g,h){return g.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,w,C){var S=C&&C.toUpperCase();return w||h[C]||r[C]||h[S].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(A,z,G){return z||G.slice(1)})})}(d,c===void 0?{}:c);return l.call(this,f)}}})})(u0);const d0=Vr;var Br={},c0={get exports(){return Br},set exports(e){Br=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=function(u,l){if(!l||!l.length||!l[0]||l.length===1&&!l[0].length)return null;var d;l.length===1&&l[0].length>0&&(l=l[0]),d=l[0];for(var c=1;c<l.length;c+=1)l[c].isValid()&&!l[c][u](d)||(d=l[c]);return d};s.max=function(){var u=[].slice.call(arguments,0);return o("isAfter",u)},s.min=function(){var u=[].slice.call(arguments,0);return o("isBefore",u)}}})})(c0);const p0=Br;var Nr={},h0={get exports(){return Nr},set exports(e){Nr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=function(g){var h,b=g.date,w=g.utc,C={};if(!((h=b)instanceof Date)&&!(h instanceof Array)&&h instanceof Object){if(!Object.keys(b).length)return new Date;var S=w?s.utc():s();Object.keys(b).forEach(function(N){var Q,Y;C[Q=N,Y=o.$utils().p(Q),Y==="date"?"day":Y]=b[N]});var A=C.day||(C.year||C.month>=0?1:S.date()),z=C.year||S.year(),G=C.month>=0?C.month:C.year||C.day?0:S.month(),F=C.hour||0,L=C.minute||0,$=C.second||0,M=C.millisecond||0;return w?new Date(Date.UTC(z,G,A,F,L,$,M)):new Date(z,G,A,F,L,$,M)}return b},l=o.parse;o.parse=function(g){g.date=u.bind(this)(g),l.bind(this)(g)};var d=o.set,c=o.add,f=function(g,h,b,w){if(w===void 0&&(w=1),h instanceof Object){var C=Object.keys(h),S=this;return C.forEach(function(A){S=g.bind(S)(h[A]*w,A)}),S}return g.bind(this)(h*w,b)};o.set=function(g,h){return h=h===void 0?g:h,f.bind(this)(function(b,w){return d.bind(this)(w,b)},h,g)},o.add=function(g,h){return f.bind(this)(c,g,h)},o.subtract=function(g,h){return f.bind(this)(c,g,h,-1)}}})})(h0);const f0=Nr;var Gr={},g0={get exports(){return Gr},set exports(e){Gr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype;["milliseconds","seconds","minutes","hours","days","weeks","isoWeeks","months","quarters","years","dates"].forEach(function(o){s[o]=s[o.replace(/s$/,"")]})}})})(g0);const m0=Gr;var qr={},b0={get exports(){return qr},set exports(e){qr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype.parse;i.prototype.parse=function(l){if(typeof l.date=="string"){var d=this.$locale();l.date=d&&d.preparse?d.preparse(l.date):l.date}return s.bind(this)(l)};var o=i.prototype.format;i.prototype.format=function(){for(var l=arguments.length,d=new Array(l),c=0;c<l;c++)d[c]=arguments[c];var f=o.call.apply(o,[this].concat(d)),g=this.$locale();return g&&g.postformat?g.postformat(f):f};var u=i.prototype.fromToBase;u&&(i.prototype.fromToBase=function(l,d,c,f){var g=this.$locale()||c.$locale();return u.call(this,l,d,c,f,g&&g.postformat)})}})})(b0);const v0=qr;var Fr={},y0={get exports(){return Fr},set exports(e){Fr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="month",i="quarter";return function(s,o){var u=o.prototype;u.quarter=function(c){return this.$utils().u(c)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(c-1))};var l=u.add;u.add=function(c,f){return c=Number(c),this.$utils().p(f)===i?this.add(3*c,r):l.bind(this)(c,f)};var d=u.startOf;u.startOf=function(c,f){var g=this.$utils(),h=!!g.u(f)||f;if(g.p(c)===i){var b=this.quarter()-1;return h?this.month(3*b).startOf(r).startOf("day"):this.month(3*b+2).endOf(r).endOf("day")}return d.bind(this)(c,f)}}})})(y0);const x0=Fr;var Wr={},C0={get exports(){return Wr},set exports(e){Wr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){r=r||{};var o=i.prototype,u={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function l(c,f,g,h){return o.fromToBase(c,f,g,h)}s.en.relativeTime=u,o.fromToBase=function(c,f,g,h,b){for(var w,C,S,A=g.$locale().relativeTime||u,z=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],G=z.length,F=0;F<G;F+=1){var L=z[F];L.d&&(w=h?s(c).diff(g,L.d,!0):g.diff(c,L.d,!0));var $=(r.rounding||Math.round)(Math.abs(w));if(S=w>0,$<=L.r||!L.r){$<=1&&F>0&&(L=z[F-1]);var M=A[L.l];b&&($=b(""+$)),C=typeof M=="string"?M.replace("%d",$):M($,f,L.l,S);break}}if(f)return C;var N=S?A.future:A.past;return typeof N=="function"?N(C):N.replace("%s",C)},o.to=function(c,f){return l(c,f,this,!0)},o.from=function(c,f){return l(c,f,this)};var d=function(c){return c.$u?s.utc():s()};o.toNow=function(c){return this.to(d(this),c)},o.fromNow=function(c){return this.from(d(this),c)}}})})(C0);const w0=Wr;var jr={},_0={get exports(){return jr},set exports(e){jr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r={year:0,month:1,day:2,hour:3,minute:4,second:5},i={};return function(s,o,u){var l,d=function(h,b,w){w===void 0&&(w={});var C=new Date(h),S=function(A,z){z===void 0&&(z={});var G=z.timeZoneName||"short",F=A+"|"+G,L=i[F];return L||(L=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:A,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:G}),i[F]=L),L}(b,w);return S.formatToParts(C)},c=function(h,b){for(var w=d(h,b),C=[],S=0;S<w.length;S+=1){var A=w[S],z=A.type,G=A.value,F=r[z];F>=0&&(C[F]=parseInt(G,10))}var L=C[3],$=L===24?0:L,M=C[0]+"-"+C[1]+"-"+C[2]+" "+$+":"+C[4]+":"+C[5]+":000",N=+h;return(u.utc(M).valueOf()-(N-=N%1e3))/6e4},f=o.prototype;f.tz=function(h,b){h===void 0&&(h=l);var w=this.utcOffset(),C=this.toDate(),S=C.toLocaleString("en-US",{timeZone:h}),A=Math.round((C-new Date(S))/1e3/60),z=u(S).$set("millisecond",this.$ms).utcOffset(15*-Math.round(C.getTimezoneOffset()/15)-A,!0);if(b){var G=z.utcOffset();z=z.add(w-G,"minute")}return z.$x.$timezone=h,z},f.offsetName=function(h){var b=this.$x.$timezone||u.tz.guess(),w=d(this.valueOf(),b,{timeZoneName:h}).find(function(C){return C.type.toLowerCase()==="timezonename"});return w&&w.value};var g=f.startOf;f.startOf=function(h,b){if(!this.$x||!this.$x.$timezone)return g.call(this,h,b);var w=u(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return g.call(w,h,b).tz(this.$x.$timezone,!0)},u.tz=function(h,b,w){var C=w&&b,S=w||b||l,A=c(+u(),S);if(typeof h!="string")return u(h).tz(S);var z=function($,M,N){var Q=$-60*M*1e3,Y=c(Q,N);if(M===Y)return[Q,M];var te=c(Q-=60*(Y-M)*1e3,N);return Y===te?[Q,Y]:[$-60*Math.min(Y,te)*1e3,Math.max(Y,te)]}(u.utc(h,C).valueOf(),A,S),G=z[0],F=z[1],L=u(G).utcOffset(F);return L.$x.$timezone=S,L},u.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},u.tz.setDefault=function(h){l=h}}})})(_0);const S0=jr;var Rr={},T0={get exports(){return Rr},set exports(e){Rr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.toArray=function(){return[this.$y,this.$M,this.$D,this.$H,this.$m,this.$s,this.$ms]}}})})(T0);const D0=Rr;var Yr={},k0={get exports(){return Yr},set exports(e){Yr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.toObject=function(){return{years:this.$y,months:this.$M,date:this.$D,hours:this.$H,minutes:this.$m,seconds:this.$s,milliseconds:this.$ms}}}})})(k0);const I0=Yr;var Qr={},M0={get exports(){return Qr},set exports(e){Qr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){s.updateLocale=function(o,u){var l=s.Ls[o];if(l)return(u?Object.keys(u):[]).forEach(function(d){l[d]=u[d]}),l}}})})(M0);const A0=Qr;var Ur={},z0={get exports(){return Ur},set exports(e){Ur=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="minute",i=/[+-]\d\d(?::?\d\d)?/g,s=/([+-]|\d\d)/g;return function(o,u,l){var d=u.prototype;l.utc=function(C){var S={date:C,utc:!0,args:arguments};return new u(S)},d.utc=function(C){var S=l(this.toDate(),{locale:this.$L,utc:!0});return C?S.add(this.utcOffset(),r):S},d.local=function(){return l(this.toDate(),{locale:this.$L,utc:!1})};var c=d.parse;d.parse=function(C){C.utc&&(this.$u=!0),this.$utils().u(C.$offset)||(this.$offset=C.$offset),c.call(this,C)};var f=d.init;d.init=function(){if(this.$u){var C=this.$d;this.$y=C.getUTCFullYear(),this.$M=C.getUTCMonth(),this.$D=C.getUTCDate(),this.$W=C.getUTCDay(),this.$H=C.getUTCHours(),this.$m=C.getUTCMinutes(),this.$s=C.getUTCSeconds(),this.$ms=C.getUTCMilliseconds()}else f.call(this)};var g=d.utcOffset;d.utcOffset=function(C,S){var A=this.$utils().u;if(A(C))return this.$u?0:A(this.$offset)?g.call(this):this.$offset;if(typeof C=="string"&&(C=function(L){L===void 0&&(L="");var $=L.match(i);if(!$)return null;var M=(""+$[0]).match(s)||["-",0,0],N=M[0],Q=60*+M[1]+ +M[2];return Q===0?0:N==="+"?Q:-Q}(C),C===null))return this;var z=Math.abs(C)<=16?60*C:C,G=this;if(S)return G.$offset=z,G.$u=C===0,G;if(C!==0){var F=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(G=this.local().add(z+F,r)).$offset=z,G.$x.$localOffset=F}else G=this.utc();return G};var h=d.format;d.format=function(C){var S=C||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,S)},d.valueOf=function(){var C=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*C},d.isUTC=function(){return!!this.$u},d.toISOString=function(){return this.toDate().toISOString()},d.toString=function(){return this.toDate().toUTCString()};var b=d.toDate;d.toDate=function(C){return C==="s"&&this.$offset?l(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():b.call(this)};var w=d.diff;d.diff=function(C,S,A){if(C&&this.$u===C.$u)return w.call(this,C,S,A);var z=this.local(),G=l(C).local();return w.call(z,G,S,A)}}})})(z0);const $0=Ur;var Xr={},E0={get exports(){return Xr},set exports(e){Xr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.weekday=function(s){var o=this.$locale().weekStart||0,u=this.$W,l=(u<o?u+7:u)-o;return this.$utils().u(s)?l:this.subtract(l,"day").add(s,"day")}}})})(E0);const L0=Xr;var Zr={},P0={get exports(){return Zr},set exports(e){Zr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="week",i="year";return function(s,o,u){var l=o.prototype;l.week=function(d){if(d===void 0&&(d=null),d!==null)return this.add(7*(d-this.week()),"day");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var f=u(this).startOf(i).add(1,i).date(c),g=u(this).endOf(r);if(f.isBefore(g))return 1}var h=u(this).startOf(i).date(c).startOf(r).subtract(1,"millisecond"),b=this.diff(h,r,!0);return b<0?u(this).startOf("week").week():Math.ceil(b)},l.weeks=function(d){return d===void 0&&(d=null),this.week(d)}}})})(P0);const O0=Zr;var Kr={},V0={get exports(){return Kr},set exports(e){Kr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.weekYear=function(){var s=this.month(),o=this.week(),u=this.year();return o===1&&s===11?u+1:s===0&&o>=52?u-1:u}}})})(V0);const B0=Kr;W.extend(DC),W.extend(IC),W.extend(AC),W.extend($C),W.extend(LC),W.extend(OC),W.extend(BC),W.extend(GC),W.extend(FC),W.extend(jC),W.extend(YC),W.extend(JC),W.extend(e0),W.extend(n0),W.extend(i0),W.extend(s0),W.extend(UC),W.extend(ZC),W.extend(l0),W.extend(d0),W.extend(p0),W.extend(f0),W.extend(m0),W.extend(v0),W.extend(x0),W.extend(w0),W.extend(S0),W.extend(D0),W.extend(I0),W.extend(A0),W.extend($0),W.extend(O0),W.extend(B0),W.extend(L0),W.tz.setDefault("UTC");const N0=()=>Promise.resolve().then(()=>No).then(({version:e})=>(console.log(`[@devtable/dashboard] version: ${e}`),e));k.ContextModel=as,k.Dashboard=_C,k.DashboardFilterType=tr,k.DashboardMode=Oa,k.DashboardModel=rn,k.DashboardViewEditor=Ba,k.DashboardViewRender=en,k.EViewComponentType=K,k.FilterModel=rr,k.FiltersModel=Za,k.FullScreenPanelContext=yn,k.LayoutStateContext=Xe,k.ModelContextProvider=mn,k.Panel=Ht,k.PanelContextProvider=vn,k.PanelModel=ss,k.PanelsModel=ls,k.QueriesModel=ns,k.QueryModel=ts,k.ReadOnlyDashboard=SC,k.SQLSnippetModel=rs,k.SQLSnippetsModel=is,k.ViewComponentTypeBackground=Va,k.ViewComponentTypeColor=zb,k.ViewComponentTypeName=Ab,k.ViewModel=ps,k.ViewsModel=hs,k.applyPartialDashboard=Fv,k.createDashboardModel=ur,k.createDashboardViewsModel=lr,k.getInitialFiltersPayload=Ka,k.getNewPanel=os,k.getVersion=N0,k.useFullScreenPanelContext=Mi,k.useModelContext=B,k.usePanelContext=xe,k.useTopLevelServices=dr,Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})});
470
+ `)},C0=T.observer(({queryModel:e})=>{const[t,r]=b.useState(e.sql);b.useEffect(()=>{r(o=>o!==e.sql?e.sql:o)},[e.sql]);const i=t!==e.sql,s=()=>{e.setSQL(t)};return e.typedAsSQL?p(a.Tabs,{defaultValue:"Edit",orientation:"vertical",sx:{flexGrow:1},styles:{tabLabel:{width:"100%",height:"28px",lineHeight:"28px"}},keepMounted:!1,children:[p(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Edit",children:p(a.Group,{spacing:14,position:"apart",children:["Edit SQL",n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!i,onClick:s,children:n(k.DeviceFloppy,{size:20})})]})}),n(a.Tabs.Tab,{value:"Preview",children:"Preview SQL"}),n(a.Tabs.Tab,{value:"pre_process",children:"Process Request"}),n(a.Tabs.Tab,{value:"post_process",children:"Process Result"}),n(yr,{}),e.datasource&&n(Es,{dataSource:e.datasource})]}),n(a.Tabs.Panel,{value:"Edit",sx:{position:"relative"},p:"sm",children:n(vr,{height:"100%",value:t,onChange:r})}),n(a.Tabs.Panel,{value:"Preview",p:0,pl:4,children:n(x0,{value:e.sql})}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(on,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Ps.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(on,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Ps.post})})]}):null}),w0=T.observer(({queryID:e,usage:t})=>{const r=N().editor,i=o=>{if(o.type==="filter"){r.setPath(["_FILTERS_",o.id]);return}if(o.type==="panel"){const u=o.views[0].id;r.setPath(["_VIEWS_",u,"_PANELS_",o.id]);return}},s=o=>{r.setPath(["_VIEWS_",o])};return n(a.Stack,{py:"sm",px:"md",children:p(a.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[n("thead",{children:p("tr",{children:[n("th",{style:{width:100},children:"Type"}),n("th",{style:{width:"calc(50% - 50px)"},children:"Name"}),n("th",{children:"In View(s)"})]})}),n("tbody",{children:t.map(o=>p("tr",{children:[n("td",{children:v.capitalize(o.type)}),n("td",{children:n(a.Anchor,{component:"button",type:"button",onClick:()=>i(o),children:o.label})}),n("td",{children:p(a.Stack,{align:"flex-start",justify:"flex-start",spacing:2,children:[o.views.map(u=>n(a.Anchor,{component:"button",type:"button",onClick:()=>s(u.id),children:n(a.Box,{children:u.label})})),o.views.length===0&&n(a.Box,{children:"--"})]})})]},o.id))})]})})}),ln={height:"calc(100% - 44px)",padding:0},_0=T.observer(({queryModel:e})=>{const t=N(),r=b.useMemo(()=>e.datasource?e.typedAsHTTP?"HTTP":"SQL":"Configurations",[e.datasource,e.typedAsHTTP]),i=t.findQueryUsage(e.id),s=i.length===0;return n(a.Stack,{sx:{flexGrow:1},my:0,p:0,children:p(a.Tabs,{defaultValue:r,orientation:"horizontal",keepMounted:!1,sx:{flexGrow:1},children:[p(a.Tabs.List,{grow:!0,children:[n(a.Tabs.Tab,{value:"Configurations",children:"Configurations"}),e.typedAsSQL&&n(a.Tabs.Tab,{value:"SQL",children:"Request"}),e.typedAsHTTP&&n(a.Tabs.Tab,{value:"HTTP",children:"Request"}),n(a.Tabs.Tab,{value:"Data",disabled:!e.datasource,children:n(a.Tooltip,{label:"Need to pick a Data Source first",disabled:e.datasource,withinPortal:!0,children:n(a.Text,{children:"Data"})})}),n(a.Tabs.Tab,{value:"Usage",disabled:s,children:n(a.Tooltip,{label:"This query is not used for any filter or panel",disabled:!s,withinPortal:!0,children:n(a.Text,{children:"Usage"})})})]}),n(a.Tabs.Panel,{value:"Configurations",pt:0,p:0,children:n(f0,{queryModel:e})}),e.typedAsSQL&&n(a.Tabs.Panel,{value:"SQL",sx:ln,children:n(a.Stack,{sx:{height:"100%"},children:n(C0,{queryModel:e})})}),e.typedAsHTTP&&n(a.Tabs.Panel,{value:"HTTP",sx:ln,children:n(a.Stack,{sx:{height:"100%"},children:n(y0,{queryModel:e})})}),n(a.Tabs.Panel,{value:"Data",sx:{...ln,overflow:"hidden"},children:n(Is,{id:e.id})}),n(a.Tabs.Panel,{value:"Usage",sx:{...ln,overflow:"hidden"},children:n(w0,{queryID:e.id,usage:i})})]})})}),S0=T.observer(({id:e})=>{const r=N().queries.findByID(e);return e===""?null:r?n(a.Stack,{sx:{height:"100%"},spacing:"sm",children:n(_0,{queryModel:r})}):n(a.Text,{size:14,color:"red",children:"Invalid Query ID"})}),T0=T.observer(({value:e})=>{const t=N(),r=t.context.current,i=ev(e,r,t.mock_context.current,t.filters.values);return n(vr,{height:"100%",value:i})}),k0=T.observer(({item:e,remove:t,onKeyChanged:r})=>{const[i,s]=b.useState("SQL"),[o,u]=b.useState(e.key),l=()=>{e.setKey(o),r(o)},d=o!==e.key,c=e.isADuplicatedKey(o),[f,g]=b.useState(e.value),h=()=>{e.setValue(f)};b.useEffect(()=>{u(e.key),g(e.value)},[e]);const m=f!==e.value,w=Oe.useModals(),C=()=>{w.openConfirmModal({title:"Delete this SQL snippet?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:t,zIndex:320})};return p(a.Stack,{p:20,sx:{maxWidth:"1100px",height:"100vh"},spacing:"sm",children:[p(a.Group,{sx:{alignItems:"end"},spacing:40,children:[n(a.TextInput,{label:c?"This key is occupied by another snippet":"Key",value:o,onChange:S=>{u(S.currentTarget.value)},sx:{flexGrow:"1 !important"},rightSection:n(a.ActionIcon,{color:"blue",variant:"subtle",onClick:l,disabled:!d||c,children:n(k.DeviceFloppy,{size:16})}),error:c}),n(a.Button,{leftIcon:n(k.Trash,{size:16}),color:"red",variant:"light",onClick:C,children:"Delete this SQL Snippet"})]}),p(a.Tabs,{value:i,onTabChange:s,sx:{flexGrow:1},styles:{panel:{height:"calc(100% - 50px)"}},children:[p(a.Tabs.List,{sx:{position:"relative"},children:[n(a.Tabs.Tab,{value:"SQL",children:"SQL"}),n(a.Tabs.Tab,{value:"Preview",children:"Preview"}),n(yr,{}),n(a.ActionIcon,{color:"blue",variant:"filled",onClick:h,disabled:!m,sx:{position:"absolute",top:0,right:10},children:n(k.DeviceFloppy,{size:18})})]}),n(a.Tabs.Panel,{value:"SQL",pt:"sm",children:n(vr,{height:"100%",value:f,onChange:g})}),n(a.Tabs.Panel,{value:"Preview",pt:"sm",children:n(T0,{value:f})})]})]})}),D0=T.observer(({id:e})=>{const t=N(),r=b.useMemo(()=>t.sqlSnippets.findByKey(e),[e]);if(!e)return null;if(!r)return p(a.Text,{size:14,children:["SQL Snippet by key[",e,"] is not found"]});const i=()=>{t.editor.setPath(["_SQL_SNIPPETS_",""])};return n(k0,{item:r,remove:()=>{t.sqlSnippets.removeByKey(e),i()},onKeyChanged:u=>{t.editor.setPath(["_SQL_SNIPPETS_",u])}})}),I0=T.observer(({view:e})=>!e||e.type!==K.Division?null:p(a.Stack,{children:[n(a.Divider,{mt:8,mb:0,label:"Division settings",labelPosition:"center"}),n(a.Text,{align:"center",size:"xs",color:"dimmed",children:"Under construction"})]})),M0=[{value:"default",label:"Default"},{value:"outline",label:"Outline"},{value:"pills",label:"Pills"}],A0=[{value:"horizontal",label:"Horizontal"},{value:"vertical",label:"Vertical"}],$0=T.observer(({view:e})=>{if(!e||e.type!==K.Tabs)return null;const t=e.config;return p(a.Stack,{children:[n(a.Divider,{mt:8,mb:0,label:"Tabs settings",labelPosition:"center"}),n(a.Select,{label:"Variant",value:t.variant,onChange:t.setVariant,data:M0}),n(a.Select,{label:"Orientation",value:t.orientation,onChange:t.setOrientation,data:A0}),n(a.Switch,{label:"Grow Tabs",checked:t.grow,onChange:r=>t.setGrow(r.currentTarget.checked)})]})}),z0=({disabled:e,value:t,onChange:r})=>{const i=s=>{s&&r(s)};return p(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(we,{height:"500px",defaultLanguage:"javascript",value:t,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},E0=({value:e,onChange:t})=>{const[r,{setTrue:i,setFalse:s}]=Z.useBoolean(),[o,u]=b.useState(e??ur),l=h=>{u({...o,enabled:h})},d=()=>{s();const{enabled:h,func_content:m}=o,w={enabled:h,func_content:m};u(w),t(w)},c=()=>{s(),u(e)},f=h=>{u(m=>({...m,func_content:h}))},g=()=>{f(ur.func_content)};return p(P,{children:[n(a.ActionIcon,{size:"lg",color:"blue",variant:"filled",mt:26,onClick:i,sx:{flexGrow:0},children:n(k.Settings,{size:14})}),n(a.Modal,{size:800,title:"Customize modal title",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&p(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:o.enabled,onChange:h=>l(h.currentTarget.checked)}),n(z0,{value:o.func_content,onChange:f,disabled:!o.enabled}),p(a.Group,{position:"apart",children:[n(a.Button,{onClick:g,color:"red",leftIcon:n(k.Recycle,{size:20}),children:"Rest"}),p(a.Group,{position:"right",children:[n(a.Button,{onClick:c,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:d,children:"OK"})]})]})]})})]})},L0=T.observer(({view:e})=>{if(!e||e.type!==K.Modal)return null;const t=e.config,r=t.custom_modal_title.value;return p(a.Stack,{children:[n(a.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),p(a.Flex,{gap:10,children:[n(a.TextInput,{label:"Modal Title",value:r,onChange:v.noop,disabled:!0,sx:{flexGrow:1}}),n(E0,{value:t.custom_modal_title,onChange:t.custom_modal_title.replace})]}),p(a.Group,{grow:!0,children:[n(a.TextInput,{label:"Width",value:t.width,onChange:i=>t.setWidth(i.currentTarget.value),placeholder:"600px / 50vw"}),n(a.TextInput,{label:"Height",value:t.height,onChange:i=>t.setHeight(i.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),O0=T.observer(({view:e})=>p(P,{children:[n(I0,{view:e}),n(L0,{view:e}),n($0,{view:e})]})),P0=[{label:"Division",value:K.Division},{label:"Modal",value:K.Modal},{label:"Tabs",value:K.Tabs}],V0=T.observer(({view:e})=>e?p(a.Stack,{sx:{position:"relative"},children:[n(a.TextInput,{label:"Name",value:e.name,onChange:t=>{e.setName(t.currentTarget.value)}}),n(a.Select,{label:"Type",withinPortal:!0,value:e.type,onChange:e.setType,data:P0}),n(O0,{view:e})]}):null),B0=T.observer(({id:e})=>{const t=Oe.useModals(),r=N();if(e==="")return null;const i=r.views.findByID(e);if(!i)return p(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const s=()=>{r.editor.setPath(["_VIEWS_",""])},o=()=>{t.openConfirmModal({title:"Delete this view?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{r.views.removeByID(e),s()},zIndex:320})};return p(a.Stack,{sx:{maxWidth:"600px",height:"100%"},spacing:"sm",children:[n(a.Group,{position:"right",pt:10,children:n(a.Button,{size:"xs",color:"red",leftIcon:n(k.Trash,{size:16}),onClick:o,children:"Delete this view"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(V0,{view:i})})]})});function N0(e){return e.length===1&&e[0]==="_GLOBAL_VARS_"}function G0(e){return e.length===1&&e[0]==="_MOCK_CONTEXT_"}function q0(e){return e.length===2&&e[0]==="_FILTERS_"}function F0(e){return e.length===2&&e[0]==="_SQL_SNIPPETS_"}function W0(e){return e.length===2&&e[0]==="_QUERIES_"}function j0(e){return e.length===2&&e[0]==="_VIEWS_"}function Y0(e){return e.length===4&&e[0]==="_VIEWS_"&&e[2]==="_PANELS_"}const R0=T.observer(()=>n(a.Stack,{sx:{height:"100%"},p:"sm",children:n(Ls,{})})),Q0=T.observer(()=>{const e=N().editor,t=e.path;return N0(t)?n(R0,{}):G0(t)?n(bx,{}):q0(t)?n(a.Box,{p:"xs",pl:20,children:n(mx,{id:t[1]})}):F0(t)?n(D0,{id:t[1]}):W0(t)?n(S0,{id:t[1]}):j0(t)?n(a.Box,{p:"xs",pl:20,children:n(B0,{id:t[1]})}):Y0(t)?n(Qx,{viewID:t[1],panelID:t[3]}):n(a.Box,{children:e.path})}),U0=T.observer(()=>(N().editor,n(Q0,{}))),X0=T.observer(()=>{const e=N(),t=()=>{const r=new Date().getTime().toString(),i={id:r,key:r,label:r,order:e.filters.current.length+1,type:rr.TextInput,config:Ha(),visibleInViewsIDs:["Main"],auto_submit:!1};e.filters.append(i)};return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:t,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Filter"})}),Z0=T.observer(({parentID:e})=>{const t=N();if(!e)return null;const r=t.views.findByID(e);return r?n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:()=>t.addANewPanel(r.id),sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Panel"}):null}),K0=T.observer(()=>{const e=N(),t=()=>{const r=new Date().getTime().toString(),i={id:r,name:r,type:ce.Postgresql,key:"",sql:""};e.queries.append(i)};return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:t,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Query"})}),J0=T.observer(()=>{const e=N(),t=()=>{const i={key:new Date().getTime().toString(),value:""};e.sqlSnippets.append(i)};return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:t,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a SQL Snippet"})}),H0=T.observer(()=>{const e=N();return n(a.Button,{variant:"subtle",leftIcon:n(V.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:e.views.addARandomNewView,sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a View"})}),eC=T.observer(({action_type:e,parentID:t})=>(N(),e==="_Add_A_Filter_"?n(X0,{}):e==="_Add_A_SQL_SNIPPET_"?n(J0,{}):e==="_Add_A_QUERY_"?n(K0,{}):e==="_Add_A_VIEW_"?n(H0,{}):e==="_Add_A_PANEL_"?n(Z0,{parentID:t}):null)),Vs=T.observer(({option:e})=>{var c;const t=N().editor,r=t.isOptionActive,i=r(t.path,e),s=t.isOptionOpened,o=t.navigate,u=s(e),[l,d]=b.useState(u);return b.useEffect(()=>{d(u)},[u]),n(a.NavLink,{active:i,defaultOpened:u,opened:l,onChange:d,label:e.label,onClick:()=>o(e),icon:e.Icon?n(e.Icon,{size:18}):null,children:(c=e.children)==null?void 0:c.map(f=>f._type==="ACTION"?n(eC,{action_type:f._action_type,parentID:f.parentID},`_ADD_${f.value}_`):n(Vs,{option:f},f.value))},e.label)}),tC=T.observer(()=>{const e=N();return n(a.Box,{sx:{position:"relative"},children:e.editor.navOptions.map(t=>n(Vs,{option:t},t.value))})}),nC=T.observer(()=>{const e=N();return p(a.Navbar,{p:0,width:{base:200,xs:200,sm:220,md:240,lg:280,xl:300},sx:{height:"100vh - 60px - 60px"},children:[n(a.Navbar.Section,{pt:9,pb:8,sx:{borderBottom:"1px solid #eee"},children:n(a.Text,{align:"center",sx:{userSelect:"none",cursor:"default"},children:"Settings"})}),n(a.Navbar.Section,{grow:!0,sx:{overflow:"auto"},children:n(tC,{})}),n(a.Navbar.Section,{children:n(a.Group,{grow:!0,p:"md",pt:"sm",sx:{borderTop:"1px solid #eee"},children:n(a.Button,{size:"xs",color:"red",leftIcon:n(V.IconX,{size:18}),onClick:()=>e.editor.close(),children:"Close"})})})]})}),rC={root:{height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"},body:{flexGrow:1,nav:{top:0,height:"100vh"}},main:{flexGrow:1,display:"flex",flexDirection:"column",paddingTop:0,height:"100vh"}},iC=T.observer(()=>{const e=N().editor;return n(a.Modal,{onClose:()=>e.setSettingsOpen(!1),closeOnEscape:!1,closeOnClickOutside:!1,opened:e.settings_open,fullScreen:!0,title:null,transitionDuration:0,withCloseButton:!1,withinPortal:!0,zIndex:300,styles:{modal:{padding:"0 !important"}},children:n(a.AppShell,{padding:0,navbar:n(nC,{}),styles:rC,children:n(U0,{})})})}),aC=e=>e.replace(/([^:])(\/\/+)/g,"$1/");function sC(e){b.useEffect(()=>{if(we.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/dashboard");const r=aC(e);we.loader.config({paths:{vs:r}}),we.loader.init().then(i=>console.log("monaco instance:",i))},[])}const Bs={grid:{axis:"#97999D",scope:"rgba(47,140,192,0.1)",boundary:"#789AB4",reference:"#CFCFD8"},graphics:{compared:{blueDark:"#3E7CAB",blue:"#6398C7",blueLight:"#7CB0DF",blue10:"#6398C71a",redDark:"#AF5F6B",red:"#CD7C88",redLight:"#E794A0",red10:"#CD7C881a"},gradient:{distributed:"linear-gradient(90deg, #1babe6 0%, #2fc8c8 28.63%, #98d44b 48.86%, #ffd057 67.53%, #f5ae53 80.6%, #e76441 91.18%, #b90000 100%)",protrude:"linear-gradient(180deg, #ec73734d 0%, #ec737300 100%)"},level:{lv0:"#6398C7",lv1:"#61B5BF",lv2:"#54D4BB",lv3:"#F5D277",lv4:"#E8BB7F",lv5:"#DB9E84",lv6:"#CB8089"},depth:{dp0:"#FFF7F8",dp1:"#FFE1E1",dp2:"#FDBCBC",dp3:"#F39494",dp4:"#FA4242",dp5:"#E21212"},multiple:{c1:"#66B4DB",c2:"#E46464",c3:"#EEBA00",c4:"#33A678",c5:"#9D88CB",c6:"#939943",c7:"#E49792",c8:"#09A2B8",c9:"#AF5F6B",c10:"#6CA157",c11:"#3E7CAB",c12:"#6398C7",c13:"#E692BA",c14:"#97B566",c15:"#8CACE2",c16:"#CA79AC",c17:"#6DBC80",c18:"#B08F4B",c19:"#39BFA2",c20:"#826BAF"}}};function oC(){le.registerTheme("merico-light",{color:Object.values(Bs.graphics.multiple),visualMap:{color:Object.values(Bs.graphics.depth).reverse()}})}function Ns(){oC()}Ns();const lC={root:{height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"},body:{flexGrow:1},main:{flexGrow:1,display:"flex",flexDirection:"column",paddingTop:60,height:"100vh"}},uC=T.observer(b.forwardRef(function({context:t,dashboard:r,update:i,className:s="dashboard",config:o,onChange:u,headerSlot:l},d){sC(o.monacoPath),Ya(o);const{data:c=[]}=Z.useRequest(lr),[f,g]=b.useState(!1),h=b.useMemo(()=>cr(r,c,t),[r]);b.useImperativeHandle(d,()=>h,[h]),ki(h,!0),b.useEffect(()=>{h.context.replace(t)},[t]),b.useEffect(()=>{h.datasources.replace(c)},[c]),b.useEffect(()=>ae.reaction(()=>ae.toJS(h.json),S=>{u==null||u(S)}),[h]);const m=async()=>{await i(h.json)},w=Z.useCreation(tr,[]),C=pr(w);return n(Oe.ModalsProvider,{children:n(mn,{value:h,children:n(Xe.Provider,{value:{layoutFrozen:f,freezeLayout:g,inEditMode:!0},children:n(Ne.Provider,{value:w,children:p(Bt,{configure:C,children:[n(a.AppShell,{padding:0,header:n(Mv,{saveDashboardChanges:m,headerSlot:l}),navbar:n(tx,{}),styles:lC,children:n(a.Box,{className:`${s} dashboard-root`,sx:{position:"relative"},children:h.views.visibleViews.map(S=>n(ja,{view:S},S.id))})}),n(iC,{})]})})})})})})),a1="";Ns();const dC=T.observer(({context:e,dashboard:t,className:r="dashboard",config:i,fullScreenPanelID:s,setFullScreenPanelID:o})=>{Ya(i);const{data:u=[]}=Z.useRequest(lr),l=b.useMemo(()=>cr(t,u,e),[t]);ki(l,!1),b.useEffect(()=>{l.context.replace(e)},[e]),b.useEffect(()=>{l.datasources.replace(u)},[u]);const d=Z.useCreation(tr,[]),c=pr(d);return n(Oe.ModalsProvider,{children:n(mn,{value:l,children:n(vn.Provider,{value:{fullScreenPanelID:s,setFullScreenPanelID:o},children:n(Xe.Provider,{value:{layoutFrozen:!0,freezeLayout:v.noop,inEditMode:!1},children:n(a.Box,{className:`${r} dashboard-root`,children:n(Ne.Provider,{value:d,children:n(Bt,{configure:c,children:l.views.visibleViews.map(f=>n(en,{view:f},f.id))})})})})})})})});var xr={},cC={get exports(){return xr},set exports(e){xr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=o.format;s.en.ordinal=function(l){var d=["th","st","nd","rd"],c=l%100;return"["+l+(d[(c-20)%10]||d[c]||d[0])+"]"},o.format=function(l){var d=this,c=this.$locale();if(!this.isValid())return u.bind(this)(l);var f=this.$utils(),g=(l||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(h){switch(h){case"Q":return Math.ceil((d.$M+1)/3);case"Do":return c.ordinal(d.$D);case"gggg":return d.weekYear();case"GGGG":return d.isoWeekYear();case"wo":return c.ordinal(d.week(),"W");case"w":case"ww":return f.s(d.week(),h==="w"?1:2,"0");case"W":case"WW":return f.s(d.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return f.s(String(d.$H===0?24:d.$H),h==="k"?1:2,"0");case"X":return Math.floor(d.$d.getTime()/1e3);case"x":return d.$d.getTime();case"z":return"["+d.offsetName()+"]";case"zzz":return"["+d.offsetName("long")+"]";default:return h}});return u.bind(this)(g)}}})})(cC);const pC=xr;var Cr={},hC={get exports(){return Cr},set exports(e){Cr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=function(d){var c=d.date,f=d.utc;return Array.isArray(c)?f?c.length?new Date(Date.UTC.apply(null,c)):new Date:c.length===1?s(String(c[0])).toDate():new(Function.prototype.bind.apply(Date,[null].concat(c))):c},l=o.parse;o.parse=function(d){d.date=u.bind(this)(d),l.bind(this)(d)}}})})(hC);const fC=Cr;var wr={},gC={get exports(){return wr},set exports(e){wr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype;s.$g=function(h,m,w){return this.$utils().u(h)?this[m]:this.$set(w,h)},s.set=function(h,m){return this.$set(h,m)};var o=s.startOf;s.startOf=function(h,m){return this.$d=o.bind(this)(h,m).toDate(),this.init(),this};var u=s.add;s.add=function(h,m){return this.$d=u.bind(this)(h,m).toDate(),this.init(),this};var l=s.locale;s.locale=function(h,m){return h?(this.$L=l.bind(this)(h,m).$L,this):this.$L};var d=s.daysInMonth;s.daysInMonth=function(){return d.bind(this.clone())()};var c=s.isSame;s.isSame=function(h,m){return c.bind(this.clone())(h,m)};var f=s.isBefore;s.isBefore=function(h,m){return f.bind(this.clone())(h,m)};var g=s.isAfter;s.isAfter=function(h,m){return g.bind(this.clone())(h,m)}}})})(gC);const mC=wr;var _r={},bC={get exports(){return _r},set exports(e){_r=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype,o=s.format;s.format=function(u){var l=this,d=(u||"YYYY-MM-DDTHH:mm:ssZ").replace(/(\[[^\]]+])|BBBB|BB/g,function(c,f){var g,h=String(l.$y+543),m=c==="BB"?[h.slice(-2),2]:[h,4];return f||(g=l.$utils()).s.apply(g,m.concat(["0"]))});return o.bind(this)(d)}}})})(bC);const yC=_r;var Sr={},vC={get exports(){return Sr},set exports(e){Sr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o="h:mm A",u={lastDay:"[Yesterday at] "+o,sameDay:"[Today at] "+o,nextDay:"[Tomorrow at] "+o,nextWeek:"dddd [at] "+o,lastWeek:"[Last] dddd [at] "+o,sameElse:"MM/DD/YYYY"};i.prototype.calendar=function(l,d){var c=d||this.$locale().calendar||u,f=s(l||void 0).startOf("d"),g=this.diff(f,"d",!0),h="sameElse",m=g<-6?h:g<-1?"lastWeek":g<0?"lastDay":g<1?"sameDay":g<2?"nextDay":g<7?"nextWeek":h,w=c[m]||u[m];return typeof w=="function"?w.call(this,s()):this.format(w)}}})})(vC);const xC=Sr;var Tr={},CC={get exports(){return Tr},set exports(e){Tr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\d\d/,o=/\d\d?/,u=/\d*[^-_:/,()\s\d]+/,l={},d=function(C){return(C=+C)+(C>68?1900:2e3)},c=function(C){return function(S){this[C]=+S}},f=[/[+-]\d\d:?(\d\d)?|Z/,function(C){(this.zone||(this.zone={})).offset=function(S){if(!S||S==="Z")return 0;var A=S.match(/([+-]|\d\d)/g),$=60*A[1]+(+A[2]||0);return $===0?0:A[0]==="+"?-$:$}(C)}],g=function(C){var S=l[C];return S&&(S.indexOf?S:S.s.concat(S.f))},h=function(C,S){var A,$=l.meridiem;if($){for(var q=1;q<=24;q+=1)if(C.indexOf($(q,0,S))>-1){A=q>12;break}}else A=C===(S?"pm":"PM");return A},m={A:[u,function(C){this.afternoon=h(C,!1)}],a:[u,function(C){this.afternoon=h(C,!0)}],S:[/\d/,function(C){this.milliseconds=100*+C}],SS:[s,function(C){this.milliseconds=10*+C}],SSS:[/\d{3}/,function(C){this.milliseconds=+C}],s:[o,c("seconds")],ss:[o,c("seconds")],m:[o,c("minutes")],mm:[o,c("minutes")],H:[o,c("hours")],h:[o,c("hours")],HH:[o,c("hours")],hh:[o,c("hours")],D:[o,c("day")],DD:[s,c("day")],Do:[u,function(C){var S=l.ordinal,A=C.match(/\d+/);if(this.day=A[0],S)for(var $=1;$<=31;$+=1)S($).replace(/\[|\]/g,"")===C&&(this.day=$)}],M:[o,c("month")],MM:[s,c("month")],MMM:[u,function(C){var S=g("months"),A=(g("monthsShort")||S.map(function($){return $.slice(0,3)})).indexOf(C)+1;if(A<1)throw new Error;this.month=A%12||A}],MMMM:[u,function(C){var S=g("months").indexOf(C)+1;if(S<1)throw new Error;this.month=S%12||S}],Y:[/[+-]?\d+/,c("year")],YY:[s,function(C){this.year=d(C)}],YYYY:[/\d{4}/,c("year")],Z:f,ZZ:f};function w(C){var S,A;S=C,A=l&&l.formats;for(var $=(C=S.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(U,Q,te){var re=te&&te.toUpperCase();return Q||A[te]||r[te]||A[re].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(oe,ne,pe){return ne||pe.slice(1)})})).match(i),q=$.length,F=0;F<q;F+=1){var L=$[F],z=m[L],M=z&&z[0],G=z&&z[1];$[F]=G?{regex:M,parser:G}:L.replace(/^\[|\]$/g,"")}return function(U){for(var Q={},te=0,re=0;te<q;te+=1){var oe=$[te];if(typeof oe=="string")re+=oe.length;else{var ne=oe.regex,pe=oe.parser,fe=U.slice(re),_e=ne.exec(fe)[0];pe.call(Q,_e),U=U.replace(_e,"")}}return function(qe){var Me=qe.afternoon;if(Me!==void 0){var Ye=qe.hours;Me?Ye<12&&(qe.hours+=12):Ye===12&&(qe.hours=0),delete qe.afternoon}}(Q),Q}}return function(C,S,A){A.p.customParseFormat=!0,C&&C.parseTwoDigitYear&&(d=C.parseTwoDigitYear);var $=S.prototype,q=$.parse;$.parse=function(F){var L=F.date,z=F.utc,M=F.args;this.$u=z;var G=M[1];if(typeof G=="string"){var U=M[2]===!0,Q=M[3]===!0,te=U||Q,re=M[2];Q&&(re=M[2]),l=this.$locale(),!U&&re&&(l=A.Ls[re]),this.$d=function(fe,_e,qe){try{if(["x","X"].indexOf(_e)>-1)return new Date((_e==="X"?1e3:1)*fe);var Me=w(_e)(fe),Ye=Me.year,rt=Me.month,un=Me.day,dn=Me.hours,ei=Me.minutes,ti=Me.seconds,Mt=Me.milliseconds,ht=Me.zone,He=new Date,it=un||(Ye||rt?1:He.getDate()),et=Ye||He.getFullYear(),ft=0;Ye&&!rt||(ft=rt>0?rt-1:He.getMonth());var gt=dn||0,At=ei||0,$t=ti||0,tt=Mt||0;return ht?new Date(Date.UTC(et,ft,it,gt,At,$t,tt+60*ht.offset*1e3)):qe?new Date(Date.UTC(et,ft,it,gt,At,$t,tt)):new Date(et,ft,it,gt,At,$t,tt)}catch{return new Date("")}}(L,G,z),this.init(),re&&re!==!0&&(this.$L=this.locale(re).$L),te&&L!=this.format(G)&&(this.$d=new Date("")),l={}}else if(G instanceof Array)for(var oe=G.length,ne=1;ne<=oe;ne+=1){M[1]=G[ne-1];var pe=A.apply(this,M);if(pe.isValid()){this.$d=pe.$d,this.$L=pe.$L,this.init();break}ne===oe&&(this.$d=new Date(""))}else q.call(this,F)}}})})(CC);const wC=Tr;var kr={},_C={get exports(){return kr},set exports(e){kr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.dayOfYear=function(o){var u=Math.round((s(this).startOf("day")-s(this).startOf("year"))/864e5)+1;return o==null?u:this.add(o-u,"day")}}})})(_C);const SC=kr;var Dr={},TC={get exports(){return Dr},set exports(e){Dr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r,i,s=1e3,o=6e4,u=36e5,l=864e5,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=31536e6,f=2592e6,g=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:c,months:f,days:l,hours:u,minutes:o,seconds:s,milliseconds:1,weeks:6048e5},m=function(L){return L instanceof F},w=function(L,z,M){return new F(L,M,z.$l)},C=function(L){return i.p(L)+"s"},S=function(L){return L<0},A=function(L){return S(L)?Math.ceil(L):Math.floor(L)},$=function(L){return Math.abs(L)},q=function(L,z){return L?S(L)?{negative:!0,format:""+$(L)+z}:{negative:!1,format:""+L+z}:{negative:!1,format:""}},F=function(){function L(M,G,U){var Q=this;if(this.$d={},this.$l=U,M===void 0&&(this.$ms=0,this.parseFromMilliseconds()),G)return w(M*h[C(G)],this);if(typeof M=="number")return this.$ms=M,this.parseFromMilliseconds(),this;if(typeof M=="object")return Object.keys(M).forEach(function(oe){Q.$d[C(oe)]=M[oe]}),this.calMilliseconds(),this;if(typeof M=="string"){var te=M.match(g);if(te){var re=te.slice(2).map(function(oe){return oe!=null?Number(oe):0});return this.$d.years=re[0],this.$d.months=re[1],this.$d.weeks=re[2],this.$d.days=re[3],this.$d.hours=re[4],this.$d.minutes=re[5],this.$d.seconds=re[6],this.calMilliseconds(),this}}return this}var z=L.prototype;return z.calMilliseconds=function(){var M=this;this.$ms=Object.keys(this.$d).reduce(function(G,U){return G+(M.$d[U]||0)*h[U]},0)},z.parseFromMilliseconds=function(){var M=this.$ms;this.$d.years=A(M/c),M%=c,this.$d.months=A(M/f),M%=f,this.$d.days=A(M/l),M%=l,this.$d.hours=A(M/u),M%=u,this.$d.minutes=A(M/o),M%=o,this.$d.seconds=A(M/s),M%=s,this.$d.milliseconds=M},z.toISOString=function(){var M=q(this.$d.years,"Y"),G=q(this.$d.months,"M"),U=+this.$d.days||0;this.$d.weeks&&(U+=7*this.$d.weeks);var Q=q(U,"D"),te=q(this.$d.hours,"H"),re=q(this.$d.minutes,"M"),oe=this.$d.seconds||0;this.$d.milliseconds&&(oe+=this.$d.milliseconds/1e3);var ne=q(oe,"S"),pe=M.negative||G.negative||Q.negative||te.negative||re.negative||ne.negative,fe=te.format||re.format||ne.format?"T":"",_e=(pe?"-":"")+"P"+M.format+G.format+Q.format+fe+te.format+re.format+ne.format;return _e==="P"||_e==="-P"?"P0D":_e},z.toJSON=function(){return this.toISOString()},z.format=function(M){var G=M||"YYYY-MM-DDTHH:mm:ss",U={Y:this.$d.years,YY:i.s(this.$d.years,2,"0"),YYYY:i.s(this.$d.years,4,"0"),M:this.$d.months,MM:i.s(this.$d.months,2,"0"),D:this.$d.days,DD:i.s(this.$d.days,2,"0"),H:this.$d.hours,HH:i.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:i.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:i.s(this.$d.seconds,2,"0"),SSS:i.s(this.$d.milliseconds,3,"0")};return G.replace(d,function(Q,te){return te||String(U[Q])})},z.as=function(M){return this.$ms/h[C(M)]},z.get=function(M){var G=this.$ms,U=C(M);return U==="milliseconds"?G%=1e3:G=U==="weeks"?A(G/h[U]):this.$d[U],G===0?0:G},z.add=function(M,G,U){var Q;return Q=G?M*h[C(G)]:m(M)?M.$ms:w(M,this).$ms,w(this.$ms+Q*(U?-1:1),this)},z.subtract=function(M,G){return this.add(M,G,!0)},z.locale=function(M){var G=this.clone();return G.$l=M,G},z.clone=function(){return w(this.$ms,this)},z.humanize=function(M){return r().add(this.$ms,"ms").locale(this.$l).fromNow(!M)},z.milliseconds=function(){return this.get("milliseconds")},z.asMilliseconds=function(){return this.as("milliseconds")},z.seconds=function(){return this.get("seconds")},z.asSeconds=function(){return this.as("seconds")},z.minutes=function(){return this.get("minutes")},z.asMinutes=function(){return this.as("minutes")},z.hours=function(){return this.get("hours")},z.asHours=function(){return this.as("hours")},z.days=function(){return this.get("days")},z.asDays=function(){return this.as("days")},z.weeks=function(){return this.get("weeks")},z.asWeeks=function(){return this.as("weeks")},z.months=function(){return this.get("months")},z.asMonths=function(){return this.as("months")},z.years=function(){return this.get("years")},z.asYears=function(){return this.as("years")},L}();return function(L,z,M){r=M,i=M().$utils(),M.duration=function(Q,te){var re=M.locale();return w(Q,{$l:re},te)},M.isDuration=m;var G=z.prototype.add,U=z.prototype.subtract;z.prototype.add=function(Q,te){return m(Q)&&(Q=Q.asMilliseconds()),G.bind(this)(Q,te)},z.prototype.subtract=function(Q,te){return m(Q)&&(Q=Q.asMilliseconds()),U.bind(this)(Q,te)}}})})(TC);const kC=Dr;var Ir={},DC={get exports(){return Ir},set exports(e){Ir=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isBetween=function(o,u,l,d){var c=s(o),f=s(u),g=(d=d||"()")[0]==="(",h=d[1]===")";return(g?this.isAfter(c,l):!this.isBefore(c,l))&&(h?this.isBefore(f,l):!this.isAfter(f,l))||(g?this.isBefore(c,l):!this.isAfter(c,l))&&(h?this.isAfter(f,l):!this.isBefore(f,l))}}})})(DC);const IC=Ir;var Mr={},MC={get exports(){return Mr},set exports(e){Mr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isLeapYear=function(){return this.$y%4==0&&this.$y%100!=0||this.$y%400==0}}})})(MC);const AC=Mr;var Ar={},$C={get exports(){return Ar},set exports(e){Ar=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){s.isMoment=function(o){return s.isDayjs(o)}}})})($C);const zC=Ar;var $r={},EC={get exports(){return $r},set exports(e){$r=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="day";return function(i,s,o){var u=function(c){return c.add(4-c.isoWeekday(),r)},l=s.prototype;l.isoWeekYear=function(){return u(this).year()},l.isoWeek=function(c){if(!this.$utils().u(c))return this.add(7*(c-this.isoWeek()),r);var f,g,h,m,w=u(this),C=(f=this.isoWeekYear(),g=this.$u,h=(g?o.utc:o)().year(f).startOf("year"),m=4-h.isoWeekday(),h.isoWeekday()>4&&(m+=7),h.add(m,r));return w.diff(C,"week")+1},l.isoWeekday=function(c){return this.$utils().u(c)?this.day()||7:this.day(this.day()%7?c:c-7)};var d=l.startOf;l.startOf=function(c,f){var g=this.$utils(),h=!!g.u(f)||f;return g.p(c)==="isoweek"?h?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):d.bind(this)(c,f)}}})})(EC);const LC=$r;var zr={},OC={get exports(){return zr},set exports(e){zr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isoWeeksInYear=function(){var s=this.isLeapYear(),o=this.endOf("y").day();return o===4||s&&o===5?53:52}}})})(OC);const PC=zr;var Er={},VC={get exports(){return Er},set exports(e){Er=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isSameOrAfter=function(s,o){return this.isSame(s,o)||this.isAfter(s,o)}}})})(VC);const BC=Er;var Lr={},NC={get exports(){return Lr},set exports(e){Lr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.isSameOrBefore=function(s,o){return this.isSame(s,o)||this.isBefore(s,o)}}})})(NC);const GC=Lr;var Or={},qC={get exports(){return Or},set exports(e){Or=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isToday=function(){var o="YYYY-MM-DD",u=s();return this.format(o)===u.format(o)}}})})(qC);const FC=Or;var Pr={},WC={get exports(){return Pr},set exports(e){Pr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isTomorrow=function(){var o="YYYY-MM-DD",u=s().add(1,"day");return this.format(o)===u.format(o)}}})})(WC);const jC=Pr;var Vr={},YC={get exports(){return Vr},set exports(e){Vr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){i.prototype.isYesterday=function(){var o="YYYY-MM-DD",u=s().subtract(1,"day");return this.format(o)===u.format(o)}}})})(YC);const RC=Vr;var Br={},QC={get exports(){return Br},set exports(e){Br=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=function(g){return g&&(g.indexOf?g:g.s)},l=function(g,h,m,w,C){var S=g.name?g:g.$locale(),A=u(S[h]),$=u(S[m]),q=A||$.map(function(L){return L.slice(0,w)});if(!C)return q;var F=S.weekStart;return q.map(function(L,z){return q[(z+(F||0))%7]})},d=function(){return s.Ls[s.locale()]},c=function(g,h){return g.formats[h]||function(m){return m.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(w,C,S){return C||S.slice(1)})}(g.formats[h.toUpperCase()])},f=function(){var g=this;return{months:function(h){return h?h.format("MMMM"):l(g,"months")},monthsShort:function(h){return h?h.format("MMM"):l(g,"monthsShort","months",3)},firstDayOfWeek:function(){return g.$locale().weekStart||0},weekdays:function(h){return h?h.format("dddd"):l(g,"weekdays")},weekdaysMin:function(h){return h?h.format("dd"):l(g,"weekdaysMin","weekdays",2)},weekdaysShort:function(h){return h?h.format("ddd"):l(g,"weekdaysShort","weekdays",3)},longDateFormat:function(h){return c(g.$locale(),h)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return f.bind(this)()},s.localeData=function(){var g=d();return{firstDayOfWeek:function(){return g.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(h){return c(g,h)},meridiem:g.meridiem,ordinal:g.ordinal}},s.months=function(){return l(d(),"months")},s.monthsShort=function(){return l(d(),"monthsShort","months",3)},s.weekdays=function(g){return l(d(),"weekdays",null,null,g)},s.weekdaysShort=function(g){return l(d(),"weekdaysShort","weekdays",3,g)},s.weekdaysMin=function(g){return l(d(),"weekdaysMin","weekdays",2,g)}}})})(QC);const UC=Br;var Nr={},XC={get exports(){return Nr},set exports(e){Nr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(i,s,o){var u=s.prototype,l=u.format;o.en.formats=r,u.format=function(d){d===void 0&&(d="YYYY-MM-DDTHH:mm:ssZ");var c=this.$locale().formats,f=function(g,h){return g.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(m,w,C){var S=C&&C.toUpperCase();return w||h[C]||r[C]||h[S].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(A,$,q){return $||q.slice(1)})})}(d,c===void 0?{}:c);return l.call(this,f)}}})})(XC);const ZC=Nr;var Gr={},KC={get exports(){return Gr},set exports(e){Gr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=function(u,l){if(!l||!l.length||!l[0]||l.length===1&&!l[0].length)return null;var d;l.length===1&&l[0].length>0&&(l=l[0]),d=l[0];for(var c=1;c<l.length;c+=1)l[c].isValid()&&!l[c][u](d)||(d=l[c]);return d};s.max=function(){var u=[].slice.call(arguments,0);return o("isAfter",u)},s.min=function(){var u=[].slice.call(arguments,0);return o("isBefore",u)}}})})(KC);const JC=Gr;var qr={},HC={get exports(){return qr},set exports(e){qr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){var o=i.prototype,u=function(g){var h,m=g.date,w=g.utc,C={};if(!((h=m)instanceof Date)&&!(h instanceof Array)&&h instanceof Object){if(!Object.keys(m).length)return new Date;var S=w?s.utc():s();Object.keys(m).forEach(function(G){var U,Q;C[U=G,Q=o.$utils().p(U),Q==="date"?"day":Q]=m[G]});var A=C.day||(C.year||C.month>=0?1:S.date()),$=C.year||S.year(),q=C.month>=0?C.month:C.year||C.day?0:S.month(),F=C.hour||0,L=C.minute||0,z=C.second||0,M=C.millisecond||0;return w?new Date(Date.UTC($,q,A,F,L,z,M)):new Date($,q,A,F,L,z,M)}return m},l=o.parse;o.parse=function(g){g.date=u.bind(this)(g),l.bind(this)(g)};var d=o.set,c=o.add,f=function(g,h,m,w){if(w===void 0&&(w=1),h instanceof Object){var C=Object.keys(h),S=this;return C.forEach(function(A){S=g.bind(S)(h[A]*w,A)}),S}return g.bind(this)(h*w,m)};o.set=function(g,h){return h=h===void 0?g:h,f.bind(this)(function(m,w){return d.bind(this)(w,m)},h,g)},o.add=function(g,h){return f.bind(this)(c,g,h)},o.subtract=function(g,h){return f.bind(this)(c,g,h,-1)}}})})(HC);const ew=qr;var Fr={},tw={get exports(){return Fr},set exports(e){Fr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype;["milliseconds","seconds","minutes","hours","days","weeks","isoWeeks","months","quarters","years","dates"].forEach(function(o){s[o]=s[o.replace(/s$/,"")]})}})})(tw);const nw=Fr;var Wr={},rw={get exports(){return Wr},set exports(e){Wr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){var s=i.prototype.parse;i.prototype.parse=function(l){if(typeof l.date=="string"){var d=this.$locale();l.date=d&&d.preparse?d.preparse(l.date):l.date}return s.bind(this)(l)};var o=i.prototype.format;i.prototype.format=function(){for(var l=arguments.length,d=new Array(l),c=0;c<l;c++)d[c]=arguments[c];var f=o.call.apply(o,[this].concat(d)),g=this.$locale();return g&&g.postformat?g.postformat(f):f};var u=i.prototype.fromToBase;u&&(i.prototype.fromToBase=function(l,d,c,f){var g=this.$locale()||c.$locale();return u.call(this,l,d,c,f,g&&g.postformat)})}})})(rw);const iw=Wr;var jr={},aw={get exports(){return jr},set exports(e){jr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="month",i="quarter";return function(s,o){var u=o.prototype;u.quarter=function(c){return this.$utils().u(c)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(c-1))};var l=u.add;u.add=function(c,f){return c=Number(c),this.$utils().p(f)===i?this.add(3*c,r):l.bind(this)(c,f)};var d=u.startOf;u.startOf=function(c,f){var g=this.$utils(),h=!!g.u(f)||f;if(g.p(c)===i){var m=this.quarter()-1;return h?this.month(3*m).startOf(r).startOf("day"):this.month(3*m+2).endOf(r).endOf("day")}return d.bind(this)(c,f)}}})})(aw);const sw=jr;var Yr={},ow={get exports(){return Yr},set exports(e){Yr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){r=r||{};var o=i.prototype,u={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function l(c,f,g,h){return o.fromToBase(c,f,g,h)}s.en.relativeTime=u,o.fromToBase=function(c,f,g,h,m){for(var w,C,S,A=g.$locale().relativeTime||u,$=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],q=$.length,F=0;F<q;F+=1){var L=$[F];L.d&&(w=h?s(c).diff(g,L.d,!0):g.diff(c,L.d,!0));var z=(r.rounding||Math.round)(Math.abs(w));if(S=w>0,z<=L.r||!L.r){z<=1&&F>0&&(L=$[F-1]);var M=A[L.l];m&&(z=m(""+z)),C=typeof M=="string"?M.replace("%d",z):M(z,f,L.l,S);break}}if(f)return C;var G=S?A.future:A.past;return typeof G=="function"?G(C):G.replace("%s",C)},o.to=function(c,f){return l(c,f,this,!0)},o.from=function(c,f){return l(c,f,this)};var d=function(c){return c.$u?s.utc():s()};o.toNow=function(c){return this.to(d(this),c)},o.fromNow=function(c){return this.from(d(this),c)}}})})(ow);const lw=Yr;var Rr={},uw={get exports(){return Rr},set exports(e){Rr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r={year:0,month:1,day:2,hour:3,minute:4,second:5},i={};return function(s,o,u){var l,d=function(h,m,w){w===void 0&&(w={});var C=new Date(h),S=function(A,$){$===void 0&&($={});var q=$.timeZoneName||"short",F=A+"|"+q,L=i[F];return L||(L=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:A,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:q}),i[F]=L),L}(m,w);return S.formatToParts(C)},c=function(h,m){for(var w=d(h,m),C=[],S=0;S<w.length;S+=1){var A=w[S],$=A.type,q=A.value,F=r[$];F>=0&&(C[F]=parseInt(q,10))}var L=C[3],z=L===24?0:L,M=C[0]+"-"+C[1]+"-"+C[2]+" "+z+":"+C[4]+":"+C[5]+":000",G=+h;return(u.utc(M).valueOf()-(G-=G%1e3))/6e4},f=o.prototype;f.tz=function(h,m){h===void 0&&(h=l);var w=this.utcOffset(),C=this.toDate(),S=C.toLocaleString("en-US",{timeZone:h}),A=Math.round((C-new Date(S))/1e3/60),$=u(S).$set("millisecond",this.$ms).utcOffset(15*-Math.round(C.getTimezoneOffset()/15)-A,!0);if(m){var q=$.utcOffset();$=$.add(w-q,"minute")}return $.$x.$timezone=h,$},f.offsetName=function(h){var m=this.$x.$timezone||u.tz.guess(),w=d(this.valueOf(),m,{timeZoneName:h}).find(function(C){return C.type.toLowerCase()==="timezonename"});return w&&w.value};var g=f.startOf;f.startOf=function(h,m){if(!this.$x||!this.$x.$timezone)return g.call(this,h,m);var w=u(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return g.call(w,h,m).tz(this.$x.$timezone,!0)},u.tz=function(h,m,w){var C=w&&m,S=w||m||l,A=c(+u(),S);if(typeof h!="string")return u(h).tz(S);var $=function(z,M,G){var U=z-60*M*1e3,Q=c(U,G);if(M===Q)return[U,M];var te=c(U-=60*(Q-M)*1e3,G);return Q===te?[U,Q]:[z-60*Math.min(Q,te)*1e3,Math.max(Q,te)]}(u.utc(h,C).valueOf(),A,S),q=$[0],F=$[1],L=u(q).utcOffset(F);return L.$x.$timezone=S,L},u.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},u.tz.setDefault=function(h){l=h}}})})(uw);const dw=Rr;var Qr={},cw={get exports(){return Qr},set exports(e){Qr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.toArray=function(){return[this.$y,this.$M,this.$D,this.$H,this.$m,this.$s,this.$ms]}}})})(cw);const pw=Qr;var Ur={},hw={get exports(){return Ur},set exports(e){Ur=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.toObject=function(){return{years:this.$y,months:this.$M,date:this.$D,hours:this.$H,minutes:this.$m,seconds:this.$s,milliseconds:this.$ms}}}})})(hw);const fw=Ur;var Xr={},gw={get exports(){return Xr},set exports(e){Xr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i,s){s.updateLocale=function(o,u){var l=s.Ls[o];if(l)return(u?Object.keys(u):[]).forEach(function(d){l[d]=u[d]}),l}}})})(gw);const mw=Xr;var Zr={},bw={get exports(){return Zr},set exports(e){Zr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="minute",i=/[+-]\d\d(?::?\d\d)?/g,s=/([+-]|\d\d)/g;return function(o,u,l){var d=u.prototype;l.utc=function(C){var S={date:C,utc:!0,args:arguments};return new u(S)},d.utc=function(C){var S=l(this.toDate(),{locale:this.$L,utc:!0});return C?S.add(this.utcOffset(),r):S},d.local=function(){return l(this.toDate(),{locale:this.$L,utc:!1})};var c=d.parse;d.parse=function(C){C.utc&&(this.$u=!0),this.$utils().u(C.$offset)||(this.$offset=C.$offset),c.call(this,C)};var f=d.init;d.init=function(){if(this.$u){var C=this.$d;this.$y=C.getUTCFullYear(),this.$M=C.getUTCMonth(),this.$D=C.getUTCDate(),this.$W=C.getUTCDay(),this.$H=C.getUTCHours(),this.$m=C.getUTCMinutes(),this.$s=C.getUTCSeconds(),this.$ms=C.getUTCMilliseconds()}else f.call(this)};var g=d.utcOffset;d.utcOffset=function(C,S){var A=this.$utils().u;if(A(C))return this.$u?0:A(this.$offset)?g.call(this):this.$offset;if(typeof C=="string"&&(C=function(L){L===void 0&&(L="");var z=L.match(i);if(!z)return null;var M=(""+z[0]).match(s)||["-",0,0],G=M[0],U=60*+M[1]+ +M[2];return U===0?0:G==="+"?U:-U}(C),C===null))return this;var $=Math.abs(C)<=16?60*C:C,q=this;if(S)return q.$offset=$,q.$u=C===0,q;if(C!==0){var F=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(q=this.local().add($+F,r)).$offset=$,q.$x.$localOffset=F}else q=this.utc();return q};var h=d.format;d.format=function(C){var S=C||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,S)},d.valueOf=function(){var C=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*C},d.isUTC=function(){return!!this.$u},d.toISOString=function(){return this.toDate().toISOString()},d.toString=function(){return this.toDate().toUTCString()};var m=d.toDate;d.toDate=function(C){return C==="s"&&this.$offset?l(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():m.call(this)};var w=d.diff;d.diff=function(C,S,A){if(C&&this.$u===C.$u)return w.call(this,C,S,A);var $=this.local(),q=l(C).local();return w.call($,q,S,A)}}})})(bw);const yw=Zr;var Kr={},vw={get exports(){return Kr},set exports(e){Kr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.weekday=function(s){var o=this.$locale().weekStart||0,u=this.$W,l=(u<o?u+7:u)-o;return this.$utils().u(s)?l:this.subtract(l,"day").add(s,"day")}}})})(vw);const xw=Kr;var Jr={},Cw={get exports(){return Jr},set exports(e){Jr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){var r="week",i="year";return function(s,o,u){var l=o.prototype;l.week=function(d){if(d===void 0&&(d=null),d!==null)return this.add(7*(d-this.week()),"day");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var f=u(this).startOf(i).add(1,i).date(c),g=u(this).endOf(r);if(f.isBefore(g))return 1}var h=u(this).startOf(i).date(c).startOf(r).subtract(1,"millisecond"),m=this.diff(h,r,!0);return m<0?u(this).startOf("week").week():Math.ceil(m)},l.weeks=function(d){return d===void 0&&(d=null),this.week(d)}}})})(Cw);const ww=Jr;var Hr={},_w={get exports(){return Hr},set exports(e){Hr=e}};(function(e,t){(function(r,i){e.exports=i()})(H,function(){return function(r,i){i.prototype.weekYear=function(){var s=this.month(),o=this.week(),u=this.year();return o===1&&s===11?u+1:s===0&&o>=52?u-1:u}}})})(_w);const Sw=Hr;j.extend(pC),j.extend(fC),j.extend(mC),j.extend(yC),j.extend(xC),j.extend(wC),j.extend(SC),j.extend(kC),j.extend(IC),j.extend(AC),j.extend(zC),j.extend(BC),j.extend(GC),j.extend(FC),j.extend(jC),j.extend(RC),j.extend(LC),j.extend(PC),j.extend(UC),j.extend(ZC),j.extend(JC),j.extend(ew),j.extend(nw),j.extend(iw),j.extend(sw),j.extend(lw),j.extend(dw),j.extend(pw),j.extend(fw),j.extend(mw),j.extend(yw),j.extend(ww),j.extend(Sw),j.extend(xw),j.tz.setDefault("UTC");const Tw=()=>Promise.resolve().then(()=>Yo).then(({version:e})=>(console.log(`[@devtable/dashboard] version: ${e}`),e));D.ContextModel=cs,D.Dashboard=uC,D.DashboardFilterType=rr,D.DashboardMode=Fa,D.DashboardModel=rn,D.DashboardViewEditor=ja,D.DashboardViewRender=en,D.EViewComponentType=K,D.FilterModel=ar,D.FiltersModel=ns,D.FullScreenPanelContext=vn,D.LayoutStateContext=Xe,D.ModelContextProvider=mn,D.Panel=Ht,D.PanelContextProvider=yn,D.PanelModel=ps,D.PanelsModel=fs,D.QueriesModel=ls,D.QueryModel=os,D.ReadOnlyDashboard=dC,D.SQLSnippetModel=us,D.SQLSnippetsModel=ds,D.ViewComponentTypeBackground=Wa,D.ViewComponentTypeColor=by,D.ViewComponentTypeName=my,D.ViewModel=ys,D.ViewsModel=vs,D.applyPartialDashboard=Iv,D.createDashboardModel=cr,D.createDashboardViewsModel=dr,D.getInitialFiltersPayload=rs,D.getNewPanel=hs,D.getVersion=Tw,D.useFullScreenPanelContext=$i,D.useModelContext=N,D.usePanelContext=xe,D.useTopLevelServices=pr,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})});