@devtable/dashboard 8.56.0 → 8.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
- (function(w,ee){typeof exports=="object"&&typeof module<"u"?ee(exports,require("/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime.js"),require("@mantine/core"),require("@mantine/modals"),require("ahooks"),require("mobx-react-lite"),require("react"),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("/Users/leto/Merico/merico-dev/table/node_modules/echarts/core.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts/components.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts/renderers.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts-for-react/lib/core.js"),require("numbro"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts/charts.js"),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("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/advancedFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/arraySupport.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/badMutable.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/buddhistEra.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/calendar.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/customParseFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/dayOfYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/duration.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isBetween.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isLeapYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isMoment.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeek.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeeksInYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrAfter.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrBefore.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isToday.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isTomorrow.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isYesterday.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localeData.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localizedFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/minMax.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/objectSupport.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/pluralGetSet.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/preParsePostFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/quarterOfYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/relativeTime.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/timezone.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toArray.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toObject.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/updateLocale.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/utc.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekday.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekOfYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/react-router-dom/index.js"),require("reactflow"),require("/Users/leto/Merico/merico-dev/table/node_modules/reactflow/dist/style.css")):typeof define=="function"&&define.amd?define(["exports","/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime.js","@mantine/core","@mantine/modals","ahooks","mobx-react-lite","react","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","/Users/leto/Merico/merico-dev/table/node_modules/echarts/core.js","/Users/leto/Merico/merico-dev/table/node_modules/echarts/components.js","/Users/leto/Merico/merico-dev/table/node_modules/echarts/renderers.js","/Users/leto/Merico/merico-dev/table/node_modules/echarts-for-react/lib/core.js","numbro","/Users/leto/Merico/merico-dev/table/node_modules/echarts/charts.js","@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","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/advancedFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/arraySupport.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/badMutable.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/buddhistEra.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/calendar.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/customParseFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/dayOfYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/duration.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isBetween.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isLeapYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isMoment.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeek.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeeksInYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrAfter.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrBefore.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isToday.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isTomorrow.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isYesterday.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localeData.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localizedFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/minMax.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/objectSupport.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/pluralGetSet.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/preParsePostFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/quarterOfYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/relativeTime.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/timezone.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toArray.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toObject.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/updateLocale.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/utc.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekday.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekOfYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekYear.js","/Users/leto/Merico/merico-dev/table/node_modules/react-router-dom/index.js","reactflow","/Users/leto/Merico/merico-dev/table/node_modules/reactflow/dist/style.css"],ee):(w=typeof globalThis<"u"?globalThis:w||self,ee(w.dashboard={},w["/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime"].js,w["@mantine/core"],w["@mantine/modals"],w.ahooks,w["mobx-react-lite"],w.react,w._,w["react-hook-form"],w["@tabler/icons"],w["@mantine/tiptap"],w["@tiptap/extension-color"],w["@tiptap/extension-highlight"],w["@tiptap/extension-placeholder"],w["@tiptap/extension-subscript"],w["@tiptap/extension-superscript"],w["@tiptap/extension-text-align"],w["@tiptap/extension-text-style"],w["@tiptap/extension-table"],w["@tiptap/extension-table-cell"],w["@tiptap/extension-table-header"],w["@tiptap/extension-table-row"],w["@tiptap/extension-underline"],w["@tiptap/react"],w["@tiptap/starter-kit"],w["@mantine/dates"],w.dayjs,w["tabler-icons-react"],w["performant-array-to-tree"],w["rc-tree-select"],w["react-grid-layout"],w.mobx,w.eventemitter2,w["chroma-js"],w["echarts-gl"],w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/core"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/components"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/renderers"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts-for-react/lib/core"].js,w.numbro,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/charts"].js,w["@mantine/hooks"],w["@mantine/notifications"],w["d3-array"],w.mathjs,w.popmotion,w["@monaco-editor/react"],w["d3-regression"],w["@mantine/prism"],w["@tanstack/react-table"],w["react-virtual"],w.axios,w["mobx-state-tree"],w.jszip,w["file-saver"],w.CryptoJS,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/advancedFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/arraySupport"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/badMutable"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/buddhistEra"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/calendar"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/customParseFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/dayOfYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/duration"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isBetween"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isLeapYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isMoment"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeek"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeeksInYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrAfter"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrBefore"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isToday"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isTomorrow"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isYesterday"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localeData"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localizedFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/minMax"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/objectSupport"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/pluralGetSet"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/preParsePostFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/quarterOfYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/relativeTime"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/timezone"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toArray"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toObject"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/updateLocale"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/utc"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekday"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekOfYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/react-router-dom/index"].js,w.reactflow))})(this,function(w,ee,a,ce,B,_,g,b,v,I,P,Mn,An,zn,Vn,Ln,En,Pn,Bn,On,$n,Nn,Gn,qn,Fn,sa,z,S,oa,jn,Re,$,Wn,be,xx,da,A,te,ne,G,q,U,Qe,Pe,ua,Ye,Z,ca,Ie,se,pa,xe,m,ha,xt,Un,ga,ma,fa,ba,ya,va,xa,Ca,wa,_a,Sa,Ta,Da,ka,Ia,Ma,Aa,za,Va,La,Ea,Pa,Ba,Oa,$a,Na,Ga,qa,Fa,ja,Wa,Ua,Ra,Qa,Ya,R){"use strict";var yx=Object.defineProperty;var vx=(w,ee,a)=>ee in w?yx(w,ee,{enumerable:!0,configurable:!0,writable:!0,value:a}):w[ee]=a;var D=(w,ee,a)=>(vx(w,typeof ee!="symbol"?ee+"":ee,a),a);function Be(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const i in e)if(i!=="default"){const r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:()=>e[i]})}}return t.default=e,Object.freeze(t)}const Ct=Be(ee),N=Be(da),Xa=Be(Pe),Xe=Be(ua),Ce=Be(ca),k=Ct.Fragment,n=Ct.jsx,u=Ct.jsxs;function Rn(e,t){g.useEffect(()=>{const i=r=>{console.log(r);const{viewID:l}=r.detail;if(!l){console.error(new Error("[Open View] Needs to pick a view first"));return}e.views.appendToVisibles(l),t&&e.views.setIDOfVIE(l)};return window.addEventListener("open-view",i),()=>{window.removeEventListener("open-view",i)}},[e,t]),g.useEffect(()=>{const i=r=>{console.log(r);const{dictionary:l,payload:s}=r.detail;if(!s||Object.keys(s).length===0){console.error(new Error("[Set Filter Values] payload is empty"));return}Object.entries(l).forEach(([o,d])=>{e.filters.setValueByKey(o,b.get(s,d))})};return window.addEventListener("set-filter-values",i),()=>{window.removeEventListener("set-filter-values",i)}},[e]),g.useEffect(()=>{function i(l){return Array.isArray(l)?[]:typeof l=="object"?{}:typeof l=="boolean"?!1:typeof l=="string"?"":typeof l=="number"?0:l}const r=l=>{console.log(l);const{filter_keys:s}=l.detail;s.forEach(o=>{const d=b.get(e.filters.values,o),c=i(d);console.log(`${o}: ${c}`),e.filters.setValueByKey(o,c)})};return window.addEventListener("clear-filter-values",r),()=>{window.removeEventListener("clear-filter-values",r)}},[e]),g.useEffect(()=>{const i=r=>{console.log(r);const{urlTemplate:l,openInNewTab:s,enableEncoding:o=!1,payload:d}=r.detail;if(!l){console.error(new Error("[Open Link] URL is empty"));return}function c(y){return b.cloneDeepWith(y,x=>{if(o&&typeof x=="string")return encodeURIComponent(x)})}const f=b.template(l||"")(c({...d,filters:e.filters.values,context:e.context.current}));window.open(f,s?"_blank":"_self","noopener")};return window.addEventListener("open-link",i),()=>{window.removeEventListener("open-link",i)}},[e])}class Za{constructor(t){D(this,"symbol");this.symbol=Symbol(t)}}function ye(e){return new Za(e)}class wt{constructor(){D(this,"parent");D(this,"factoryRegistry",new Map);D(this,"instanceRegistry",new Map)}createScoped(){const t=new wt;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 i=this.factoryRegistry.get(t.symbol);if(i){const r=i(this);return this.instanceRegistry.set(t.symbol,r),r}if(this.parent)return this.parent.get(t)}provideFactory(t,i){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,i),this}provideValue(t,i){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>i),this}dispose(){this.instanceRegistry.forEach(t=>{const i=b.get(t,"dispose");b.isFunction(i)&&i.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const _t=g.createContext(null);function Ze(e){const t=g.useContext(_t),i=B.useCreation(()=>e.configure(t||new wt),[e.configure]),r=B.usePrevious(i);return r&&r!==i&&r.dispose(),n(_t.Provider,{value:i,children:e.children})}function Qn(){return g.useContext(_t)}const Ka={viewPanelInFullScreen:b.noop,inFullScreen:!1},St=g.createContext(Ka),Yn=g.createContext(null),Tt=Yn.Provider;function M(){const e=g.useContext(Yn);if(!e)throw new Error("Please use ModelContextProvider");return e}class ie extends g.Component{constructor(t){super(t),this.state={error:null}}componentDidCatch(t){this.setState({error:t})}render(){var t;if(this.state.error){const i=()=>{this.setState({error:null})};return u(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:i,children:"Retry"})]})}return this.props.children}}const Dt={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"}},Ke=({value:e,styles:t={}})=>{const i=qn.useEditor({extensions:[Fn,Gn,P.Link,Ln,Vn,An,Bn.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),Nn,$n,On,En.configure({types:["heading","paragraph"]}),zn.configure({placeholder:"This is placeholder"}),Pn,Mn.Color],content:e,editable:!1});g.useEffect(()=>{i==null||i.commands.setContent(e)},[e,i]);const r=g.useMemo(()=>b.defaultsDeep({},{content:Dt},t),[t]);return n(P.RichTextEditor,{editor:i,styles:r,children:n(P.RichTextEditor.Content,{})})},Ja=({description:e,isDescriptionEmpty:t})=>t?null:n(a.Tooltip,{color:"white",label:n(Ke,{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(I.IconInfoCircle,{size:16,color:"gray"})})}),Ha=_.observer(({label:e,config:{default_value:t,description:i,isDescriptionEmpty:r,...l},value:s,onChange:o})=>u(a.Box,{children:[n(a.Text,{children:" "}),n(a.Checkbox,{label:u(a.Group,{noWrap:!0,position:"apart",align:"middle",spacing:6,children:[n(a.Box,{sx:{flexGrow:1},children:e}),n(Ja,{description:i,isDescriptionEmpty:r})]}),checked:s||!1,onChange:d=>o(d.currentTarget.checked),...l,pt:".4em",styles:{input:{borderColor:"#e9ecef"}}})]})),Xn=_.observer(({label:e,config:t,value:i=[null,null],onChange:r})=>{const l=Array.isArray(i)?i.map(c=>c?z(c).toDate():null):[null,null],s=c=>{r(c.map(p=>p&&z(p).format(t.inputFormat)))},o=t.getMinDate(l[0]),d=t.getMaxDate(l[0]);return n(sa.DateRangePicker,{label:e,value:l,onChange:s,icon:n(S.Calendar,{size:16}),sx:{minWidth:"16em"},minDate:o,maxDate:d,styles:{input:{borderColor:"#e9ecef"}},...t})}),el={layoutFrozen:!1,freezeLayout:b.noop,inEditMode:!1},we=g.createContext(el),Zn=g.createContext({panel:null,data:[],loading:!1}),kt=Zn.Provider;function Q(){const e=g.useContext(Zn);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const tl={fullScreenPanelID:"",setFullScreenPanelID:b.noop},It=g.createContext(tl);function Kn(){const e=g.useContext(It);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const Jn=g.forwardRef(({label:e,description:t,...i},r)=>n("div",{ref:r,...i,children:n(a.Group,{noWrap:!0,children:u("div",{children:[n(a.Text,{size:"sm","data-role":"label",children:e}),n(a.Text,{size:"xs",color:"dimmed","data-role":"description",children:t})]})})})),nl=_.observer(({label:e,config:t,value:i,onChange:r})=>{const l=M(),s=!!t.options_query_id,{state:o}=l.getDataStuffByID(t.options_query_id),d=o==="loading",c=t.min_width?t.min_width:"200px",p=s?d:!1;return n(a.MultiSelect,{label:e,data:t.options,disabled:p,value:i,onChange:r,styles:{root:{minWidth:c,maxWidth:p?c:"unset"},input:{borderColor:"#e9ecef"}},itemComponent:Jn})}),il=_.observer(({label:e,config:t,value:i,onChange:r})=>{const l=M(),s=!!t.options_query_id,{state:o}=l.getDataStuffByID(t.options_query_id),d=o==="loading";return g.useEffect(()=>{var f;const{default_selection_count:c}=t;if(!c)return;const p=((f=t.options[0])==null?void 0:f.value)??"";console.log("Selecting the first option by default. New value: ",p),r(p,!0)},[t.default_selection_count,t.options]),n(a.Select,{label:e,data:t.options,disabled:s?d:!1,value:i,onChange:r,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:Jn})});function rl({label:e,config:t,value:i,onChange:r}){return n(a.TextInput,{label:e,value:i||"",onChange:l=>r(l.currentTarget.value),...t,styles:{input:{borderColor:"#e9ecef"}}})}function al(e){return oa.arrayToTree(e,{id:"value",parentId:"parent_value",childrenField:"children",dataField:null})}const ll=({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"})}),sl=({expanded:e,isLeaf:t,value:i,onClick:r,...l})=>(i==="0-0-value"&&console.log(l),t?n("span",{style:{width:"14px",display:"inline-block"}}):n(ll,{rotate:e?"0":"-90",onClick:r,...l})),ol=({onClick:e})=>u("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"})]}),dl=({onClick:e,...t})=>n(ol,{onClick:e,...t}),ul=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"}}}})),cl=({disabled:e,classNames:t,styles:i,unstyled:r,radius:l,style:s,label:o,value:d,onChange:c,treeData:p})=>{const{classes:f,cx:y}=ul({radius:l},{name:"FilterTreeSelectWidget",classNames:t,styles:i,unstyled:r}),[h,x]=g.useState((d==null?void 0:d.length)>0),C=L=>{x(L)},T=h&&(d==null?void 0:d.length)>0;return u(a.Stack,{spacing:3,children:[u(a.Group,{position:"apart",children:[n(a.Text,{className:f.label,children:o}),T&&n(a.Tooltip,{label:`${d.length} selected`,children:n(a.Badge,{children:d.length})})]}),n(jn,{disabled:e,allowClear:!0,className:y(f.root,"check-select"),dropdownClassName:y(f.dropdown,""),onDropdownVisibleChange:C,transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:s,treeLine:!0,clearIcon:()=>n(a.CloseButton,{}),switcherIcon:sl,treeIcon:dl,maxTagTextLength:10,value:d,treeData:p,treeNodeFilterProp:"filterBasis",treeCheckable:!0,showCheckedStrategy:jn.SHOW_PARENT,onChange:c,onSelect:console.log,maxTagCount:0,maxTagPlaceholder:L=>`${L.length} selected`})]})};function pl(e){return e.map(t=>{const{label:i,description:r,...l}=t,s={...l,filterBasis:`${i}___${r??""}`,description:r,label:i};return r&&(s.label=u("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})]})),s})}const hl=_.observer(({label:e,config:t,value:i,onChange:r})=>{const l=M(),{state:s,dataProxy:o,len:d}=l.getDataStuffByID(t.options_query_id),c=s==="loading",p=g.useMemo(()=>{if(!o)return[];const x=[...o],C=pl(x);return al(C)},[o,d]);g.useEffect(()=>{const{default_selection_count:x}=t;if(!x)return;if(p.length===0){console.log("[filter.tree-select] Resetting to empty"),r([],!0);return}const C=p.slice(0,x).map(T=>T.value);console.log(`[filter.tree-select] Selecting first ${x} option(s)`),r(C,!0)},[t.default_selection_count,p]);const f=t.min_width?t.min_width:"200px",h=!!t.options_query_id?c:!1;return n(cl,{disabled:h,style:{minWidth:f,maxWidth:h?f:"unset",borderColor:"#e9ecef"},value:i,onChange:x=>r(x,!1),treeData:p,label:e})}),gl=_.observer(({filter:{type:e,config:t,key:i,...r},formFieldProps:l})=>{switch(e){case"select":return n(il,{...r,...l,config:t});case"multi-select":return n(nl,{...r,...l,config:t});case"tree-select":return n(hl,{...r,...l,config:t});case"text-input":return n(rl,{...r,...l,config:t});case"date-range":return n(Xn,{...r,...l,config:t});case"checkbox":return n(Ha,{...r,...l,config:t});default:return null}}),Hn=_.observer(g.forwardRef(({filter:e,...t},i)=>n("div",{className:"filter-root",ref:i,children:n(ie,{children:n(gl,{filter:e,formFieldProps:t})})}))),ei=_.observer(function({view:t}){const i=M(),{control:r,handleSubmit:l,reset:s}=v.useForm({defaultValues:i.filters.values,reValidateMode:"onBlur"}),o=v.useWatch({control:r});g.useEffect(()=>{s(i.filters.values)},[i.filters.values,s]),g.useEffect(()=>{i.filters.updatePreviewValues(o)},[o]);const d=i.filters.visibleInView(t.id),c=g.useMemo(()=>d.every(h=>h.should_auto_submit),[d]),p=g.useMemo(()=>d.filter(h=>b.get(h,"config.required",!1)),[d]),f=g.useMemo(()=>p.length===0?!1:p.some(h=>!h.requiredAndPass(o[h.key])),[o,p]);if(d.length===0)return null;const y=(h,x)=>(C,T)=>{x(C),(h.should_auto_submit||T)&&i.filters.setValueByKey(h.key,C)};return n("form",{onSubmit:l(i.filters.setValues),children:u(a.Group,{className:"dashboard-filters",position:"apart",noWrap:!0,sx:c?{}:{border:"1px solid #e9ecef",borderRadius:"4px",padding:"16px"},children:[n(a.Group,{align:"flex-start",children:d.map(h=>n(v.Controller,{name:h.key,control:r,render:({field:x})=>n(Hn,{filter:h,value:x.value,onChange:y(h,x.onChange)})},h.id))}),!c&&n(a.Group,{sx:{alignSelf:"flex-end"},children:n(a.Button,{color:"blue",size:"sm",type:"submit",disabled:f,children:"Search"})})]})})}),Cx="";function ml(e){return e?["<p><br></p>","<p></p>"].includes(e):!0}const ti=_.observer(()=>{const{freezeLayout:e}=g.useContext(we),[t,i]=g.useState(!1),{panel:r}=Q();return g.useEffect(()=>{e(t)},[t]),ml(r.description)?null:u(k,{children:[n(a.Modal,{opened:t,onClose:()=>i(!1),title:r.title,withCloseButton:!1,withinPortal:!0,zIndex:310,children:n(Ke,{value:r.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:()=>i(l=>!l),sx:{verticalAlign:"baseline",cursor:"pointer"},children:n(S.InfoCircle,{size:20})})})]})}),fl=_.observer(({view:e})=>{const t=M(),i=ce.useModals(),{panel:r}=Q(),{id:l,query:s}=r,{inEditMode:o}=g.useContext(we),d=()=>s==null?void 0:s.fetchData(),{viewPanelInFullScreen:c,inFullScreen:p}=g.useContext(St),f=()=>{t.duplicatePanelByID(l,e.id)},y=()=>{t.editor.open(["_VIEWS_",e.id,"_PANELS_",l])},h=()=>i.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>t.removePanelByID(l,e.id),confirmProps:{color:"red"},zIndex:320}),x=g.useCallback(()=>{c(l)},[l,c]),C=!p&&e.type!==O.Modal;return n(k,{children:n(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:u(a.Menu,{withinPortal:!0,children:[n(a.Menu.Target,{children:n(a.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),u(a.Menu.Dropdown,{children:[n(a.Menu.Item,{onClick:d,icon:n(S.Refresh,{size:14}),children:"Refresh"}),n(a.Menu.Item,{onClick:()=>t.queries.downloadDataByQueryID((s==null?void 0:s.id)??""),icon:n(S.Download,{size:14}),children:"Download Data"}),C&&n(a.Menu.Item,{onClick:x,icon:n(S.ArrowsMaximize,{size:14}),disabled:o,children:"Full Screen"}),o&&u(k,{children:[n(a.Divider,{label:"Edit",labelPosition:"center"}),n(a.Menu.Item,{onClick:y,icon:n(S.Settings,{size:14}),children:"Settings"}),n(a.Menu.Item,{onClick:f,icon:n(S.Copy,{size:14}),children:"Duplicate"}),n(a.Menu.Item,{color:"red",onClick:h,icon:n(S.Trash,{size:14}),children:"Delete"})]})]})]})})})}),wx="",bl=_.observer(function(){const{panel:t}=Q(),{title:i}=t;return i?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:i})}):null}),pe=(e,t)=>{const[i,r]=g.useState([]);return g.useEffect(()=>e.watchTriggerSnapshotList(l=>r(l.filter(s=>s.schemaRef===t))),[]),i};class Me{constructor(t,i){this.root=t,this.path=i}async deleteItem(t){t===null&&await this.root.deleteItem(this.path);const i=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,b.omit(i,t))}async getItem(t){const i=await this.root.getItem(this.path);return t===null?i:b.get(i,t)}async setItem(t,i){if(t===null)await this.root.setItem(this.path,i);else{const r=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...r,[t]:i})}return await this.getItem(t)}watchItem(t,i,r){return t===null?this.root.watchItem(this.path,(l,s)=>{i(l,s)},r):this.root.watchItem(this.path,(l,s)=>{const o=b.get(l,t),d=b.get(s,t);o!==d&&i(o,d)},r)}}class Mt{constructor(t,i,r){D(this,"attachmentStorage");this.instance=t,this.attachmentKey=i,this.constructInstance=r,this.attachmentStorage=new Me(t.instanceData,i)}async getInstance(t){if(await this.attachmentStorage.getItem(t))return this.constructInstance(new Me(this.attachmentStorage,t))}async create(t,i){return await this.attachmentStorage.setItem(t,i),this.constructInstance(new Me(this.attachmentStorage,t))}async remove(t){await this.attachmentStorage.deleteItem(t)}async list(){const t=await this.attachmentStorage.getItem(null);return Promise.all(b.values(t).map(i=>this.constructInstance(new Me(this.attachmentStorage,i.id))))}}class ni{constructor(t){D(this,"rootRef");this.rootRef=$.observable({current:t})}async deleteItem(t){$.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const i=this.getValueFromRoot(t);return Promise.resolve(i)}getValueFromRoot(t){return t===null?$.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,i){if(t===null)if(b.isObject(i))$.runInAction(()=>{this.rootRef.current=i});else throw new Error("Cannot set root value to non-object");else $.runInAction(()=>{b.set(this.rootRef.current,[t],i)});return Promise.resolve(this.getItem(t))}watchItem(t,i,r){return $.reaction(()=>this.getValueFromRoot(t),(l,s)=>{i(l,s)},{requiresObservable:!0,fireImmediately:b.get(r,"fireImmediately",!1)})}}class yl{constructor(){D(this,"channels",new Map);D(this,"globalChannel",new Wn)}getChannel(t){const i=this.channels.get(t);if(i)return i;const r=new Wn;return this.channels.set(t,r),r}}class vl{constructor(t){D(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 i=this.instances.get(t.id);if(i)return i;const r={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new yl,instanceData:new ni(t.viz.conf)};return this.instances.set(t.id,r),r}}function ii(e,t,i,r){return{vizManager:i,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new ni({}),colorPalette:{getColor(){return()=>""}},data:t,variables:r}}const xl=e=>{const{panel:t,vizManager:i,data:r,variables:l}=e,s=i.resolveComponent(t.viz.type),o=i.getOrCreateInstance(t),d={...ii(o,r,i,l),viewport:{width:t.layout.w,height:t.layout.h}},c=s.viewRender;return n(c,{context:d,instance:o,...b.omit(e,["panel","vizManager","data"])})},Cl=e=>{const{vizManager:t,panel:i,panelInfoEditor:r,data:l,variables:s}=e,o=t.resolveComponent(i.viz.type),d=t.getOrCreateInstance(i),c={...ii(d,l,t,s),panelInfoEditor:r},p=o.configRender;return n(p,{context:c,instance:d,...b.omit(e,["panel","vizManager","data","panelInfoEditor"])})},ri=(e,t)=>{const i=be.bezier(e),r=be.bezier(t);return function(l){return l<50?i(l*2/100).hex():r((l-50)*2/100).hex()}},Je=e=>{const t=be.bezier(e);return function(i){return t(i/100).hex()}},wl={type:"interpolation",displayName:"Red / Green",getColor:ri(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},_l={type:"interpolation",displayName:"Yellow / Blue",getColor:ri(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Sl={type:"interpolation",displayName:"Red",getColor:Je(["#fff7f1","darkred"]),name:"red",category:"sequential"},Tl={type:"interpolation",displayName:"Green",getColor:Je(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Dl={type:"interpolation",displayName:"Blue",getColor:Je(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},kl={type:"interpolation",displayName:"Orange",getColor:Je(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},ai="@devtable/dashboard",At="8.56.0",li="Apache-2.0",si={access:"public",registry:"https://registry.npmjs.org/"},oi=["dist"],di="./dist/dashboard.umd.js",ui="./dist/dashboard.es.js",ci="./dist/index.d.ts",pi={".":{import:"./dist/dashboard.es.js",require:"./dist/dashboard.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},hi={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview",test:"vitest","test:ui":"vitest --ui",coverage:"vitest --coverage"},gi={"@monaco-editor/react":"4.4.6","@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"},mi={"@emotion/babel-plugin":"11.7.2","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/form":"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.1","@tiptap/extension-color":"2.0.1","@tiptap/extension-highlight":"2.0.1","@tiptap/extension-link":"2.0.1","@tiptap/extension-placeholder":"2.0.1","@tiptap/extension-subscript":"2.0.1","@tiptap/extension-superscript":"2.0.1","@tiptap/extension-table":"2.0.1","@tiptap/extension-table-cell":"2.0.1","@tiptap/extension-table-header":"2.0.1","@tiptap/extension-table-row":"2.0.1","@tiptap/extension-text-align":"2.0.1","@tiptap/extension-text-style":"2.0.1","@tiptap/extension-underline":"2.0.1","@tiptap/pm":"2.0.1","@tiptap/react":"2.0.1","@tiptap/starter-kit":"2.0.1","@types/crypto-js":"v4.1.1","@types/d3-array":"3.0.3","@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.11.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"},fi={"@emotion/react":"11.10.0","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/form":"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.1","@tiptap/extension-color":"2.0.1","@tiptap/extension-highlight":"2.0.1","@tiptap/extension-link":"2.0.1","@tiptap/extension-placeholder":"2.0.1","@tiptap/extension-subscript":"2.0.1","@tiptap/extension-superscript":"2.0.1","@tiptap/extension-table":"2.0.1","@tiptap/extension-table-cell":"2.0.1","@tiptap/extension-table-header":"2.0.1","@tiptap/extension-table-row":"2.0.1","@tiptap/extension-text-align":"2.0.1","@tiptap/extension-text-style":"2.0.1","@tiptap/extension-underline":"2.0.1","@tiptap/pm":"2.0.1","@tiptap/react":"2.0.1","@tiptap/starter-kit":"2.0.1",ahooks:"^3.3.11",axios:"^0.27.2","chroma-js":"^2.4.2","crypto-js":"^4.1.1","d3-array":"3.2.0","d3-regression":"1.2.8",dayjs:"1.11.6",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-virtual":"^2.10.4","tabler-icons-react":"^1.48.0"},Il=Object.freeze(Object.defineProperty({__proto__:null,default:{name:ai,version:At,license:li,publishConfig:si,files:oi,main:di,module:ui,types:ci,exports:pi,scripts:hi,dependencies:gi,devDependencies:mi,peerDependencies:fi},dependencies:gi,devDependencies:mi,exports:pi,files:oi,license:li,main:di,module:ui,name:ai,peerDependencies:fi,publishConfig:si,scripts:hi,types:ci,version:At},Symbol.toStringTag,{value:"Module"}));class Ml{constructor(t){D(this,"staticColors",new Map);D(this,"interpolations",new Map);t.installedPlugins.forEach(i=>{i.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const i=this.encodeColor(t);t.type==="single"?(this.staticColors.has(i)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(i,t)):t.type==="interpolation"&&(this.interpolations.has(i)&&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(i,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 Al{constructor(){D(this,"plugins",new Map);D(this,"vizComponents",new Map);D(this,"factory",{viz:t=>{const i=this.vizComponents.get(t);if(i)return i;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 i of t.manifest.viz){if(this.vizComponents.has(i.name))throw new Error(`Viz Component (${i.name}) has been installed before`);this.vizComponents.set(i.name,i)}}get installedPlugins(){return Array.from(this.plugins.values())}}class zl{constructor(){D(this,"migrations",[])}version(t,i){return this.migrations.push({version:t,handler:i}),this}run(t,i,r){var o;if(t.from===t.to)return i;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const l=this.migrations.filter(d=>d.version>t.from&&d.version<=t.to),s=b.orderBy(l,"version","asc");if(((o=b.last(s))==null?void 0:o.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return s.reduce((d,c)=>c.handler(d,r),i)}}class j extends zl{constructor(){super(),this.configVersions()}version(t,i){return super.version(t,(r,l)=>({version:t,...i(r,l)}))}async migrate({configData:t,panelModel:i}){const r=await t.getItem(null),l=b.get(r,"version",0),s=this.run({from:l,to:this.VERSION},r,{panelModel:i});await t.setItem(null,s)}async needMigration({configData:t}){const i=await t.getItem(null);return b.get(i,"version",0)<this.VERSION}}const V=(e,t)=>{const[i,{setFalse:r}]=B.useBoolean(!0),[l,s]=g.useState();g.useEffect(()=>(e.getItem(t).then(d=>{s(d),r()}),e.watchItem(t,d=>{s(d)})));const o=g.useCallback(async d=>{await e.setItem(t,d),s(d)},[e,t]);return{loading:i,value:l,set:o}},zt={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"}};N.use([A.GridComponent,A.VisualMapComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function Vl({context:e}){const{value:t}=V(e.instanceData,"config"),i=e.data,{width:r,height:l}=e.viewport,{x_axis_data_key:s,y_axis_data_key:o,z_axis_data_key:d,xAxis3D:c,yAxis3D:p,zAxis3D:f}=b.defaults({},t,zt),y=g.useMemo(()=>{const C=b.minBy(i,T=>T[d]);return b.get(C,d)},[i,d]),h=g.useMemo(()=>{const C=b.maxBy(i,T=>T[d]);return b.get(C,d)},[i,d]),x={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:y,max:h,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:p,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:i.map(C=>[C[s],C[o],C[d]])}]};return t?n(ne,{echarts:N,option:x,style:{width:r,height:l},notMerge:!0,theme:"merico-light"}):null}function Ll({label:e,required:t,value:i,onChange:r,data:l,clearable:s=!1,sx:o,...d},c){const p=g.useMemo(()=>{if(!Array.isArray(l)||l.length===0)return[];const y=Object.keys(l[0]).map(h=>({label:h,value:h}));return s?y.concat([{label:"unset",value:""}]):y},[l]);return n(a.Select,{ref:c,label:e,data:p,value:i,onChange:r,required:t,sx:o,...d})}const E=g.forwardRef(Ll);function El({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=b.defaults({},t,zt),{control:s,handleSubmit:o,reset:d}=v.useForm({defaultValues:l});return g.useEffect(()=>{d(l)},[t]),t?n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[n(a.Text,{children:"X Axis"}),u(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(v.Controller,{name:"x_axis_data_key",control:s,render:({field:c})=>n(E,{label:"Data Field",required:!0,data:r,...c})}),n(v.Controller,{name:"xAxis3D.name",control:s,render:({field:c})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n(a.Text,{mt:"lg",children:"Y Axis"}),u(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(v.Controller,{name:"y_axis_data_key",control:s,render:({field:c})=>n(E,{label:"Data Field",required:!0,data:r,...c})}),n(v.Controller,{name:"yAxis3D.name",control:s,render:({field:c})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n(a.Text,{mt:"lg",children:"Z Axis"}),u(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(v.Controller,{name:"z_axis_data_key",control:s,render:({field:c})=>n(E,{label:"Data Field",required:!0,data:r,...c})}),n(v.Controller,{name:"zAxis3D.name",control:s,render:({field:c})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:u(a.Button,{color:"blue",type:"submit",children:[n(S.DeviceFloppy,{size:20}),n(a.Text,{ml:"md",children:"Save"})]})})]})}):null}class Pl extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Bl={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Pl,name:"bar-3d",viewRender:Vl,configRender:El,createConfig(){return{version:1,config:b.cloneDeep(zt)}}},J={mantissa:0,output:"number",trimMantissa:!1,average:!1};function Ol({value:e,onChange:t},i){const r=d=>{t({...e,output:d})},l=d=>{const c=d===0?!1:e.trimMantissa;t({...e,mantissa:d,trimMantissa:c})},s=d=>{t({...e,trimMantissa:d.currentTarget.checked})},o=d=>{t({...e,average:d.currentTarget.checked})};return u(a.Stack,{ref:i,children:[u(a.Group,{grow:!0,children:[n(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:r,sx:{flexGrow:1}}),n(a.Switch,{label:u(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:o,disabled:e.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),u(a.Group,{grow:!0,children:[n(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:l}),n(a.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:s,disabled:e.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),u(a.Stack,{spacing:0,children:[n(a.Text,{weight:"bold",children:"Preview"}),n(ie,{children:u(a.Group,{position:"apart",children:[u(a.Text,{size:12,color:"gray",children:["123456789 ",n(S.ArrowRight,{size:9})," ",G(123456789).format(e)]}),u(a.Text,{size:12,color:"gray",children:["1234 ",n(S.ArrowRight,{size:9})," ",G(1234).format(e)]}),u(a.Text,{size:12,color:"gray",children:["0.1234 ",n(S.ArrowRight,{size:9})," ",G(.1234).format(e)]})]})})]})]})}const he=g.forwardRef(Ol),ge={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
2
- `)},bi={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Nl,configRender:$l,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 $l(e){return n(k,{})}function Nl(e){return n(a.Text,{children:"Click chart's series"})}const Gl=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],He=g.forwardRef(({sectionTitle:e,value:t,onChange:i},r)=>{const l=s=>o=>{const d=b.cloneDeep(t);b.set(d,s,o),i(d)};return u(a.Stack,{spacing:0,children:[e&&n(a.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",labelProps:{color:"dimmed"}}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.NumberInput,{label:"Max Width",hideControls:!0,value:t.width,onChange:l("width")}),n(a.Select,{label:"Overflow",data:Gl,value:t.overflow,onChange:l("overflow")}),n(a.TextInput,{label:"Ellipsis",value:t.ellipsis,disabled:!0})]})]})}),De=g.forwardRef(({value:e,onChange:t},i)=>{const r=s=>{t({...e,on_axis:s})},l=s=>{t({...e,in_tooltip:s})};return u(a.Stack,{ref:i,spacing:0,children:[n(He,{sectionTitle:"Overflow on Axis",value:e.on_axis,onChange:r}),n(He,{sectionTitle:"Overflow in Tooltip",value:e.in_tooltip,onChange:l})]})}),ve={on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}};function _e({overflow:e,width:t}){const i={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],r=e==="truncate"?"nowrap":"initial",l={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
1
+ (function(w,ee){typeof exports=="object"&&typeof module<"u"?ee(exports,require("/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime.js"),require("@mantine/core"),require("@mantine/modals"),require("ahooks"),require("mobx-react-lite"),require("react"),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("/Users/leto/Merico/merico-dev/table/node_modules/echarts/core.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts/components.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts/renderers.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts-for-react/lib/core.js"),require("numbro"),require("/Users/leto/Merico/merico-dev/table/node_modules/echarts/charts.js"),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("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/advancedFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/arraySupport.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/badMutable.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/buddhistEra.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/calendar.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/customParseFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/dayOfYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/duration.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isBetween.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isLeapYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isMoment.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeek.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeeksInYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrAfter.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrBefore.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isToday.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isTomorrow.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isYesterday.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localeData.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localizedFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/minMax.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/objectSupport.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/pluralGetSet.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/preParsePostFormat.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/quarterOfYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/relativeTime.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/timezone.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toArray.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toObject.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/updateLocale.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/utc.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekday.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekOfYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekYear.js"),require("/Users/leto/Merico/merico-dev/table/node_modules/react-router-dom/index.js"),require("reactflow"),require("/Users/leto/Merico/merico-dev/table/node_modules/reactflow/dist/style.css")):typeof define=="function"&&define.amd?define(["exports","/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime.js","@mantine/core","@mantine/modals","ahooks","mobx-react-lite","react","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","/Users/leto/Merico/merico-dev/table/node_modules/echarts/core.js","/Users/leto/Merico/merico-dev/table/node_modules/echarts/components.js","/Users/leto/Merico/merico-dev/table/node_modules/echarts/renderers.js","/Users/leto/Merico/merico-dev/table/node_modules/echarts-for-react/lib/core.js","numbro","/Users/leto/Merico/merico-dev/table/node_modules/echarts/charts.js","@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","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/advancedFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/arraySupport.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/badMutable.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/buddhistEra.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/calendar.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/customParseFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/dayOfYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/duration.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isBetween.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isLeapYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isMoment.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeek.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeeksInYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrAfter.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrBefore.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isToday.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isTomorrow.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isYesterday.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localeData.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localizedFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/minMax.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/objectSupport.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/pluralGetSet.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/preParsePostFormat.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/quarterOfYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/relativeTime.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/timezone.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toArray.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toObject.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/updateLocale.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/utc.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekday.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekOfYear.js","/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekYear.js","/Users/leto/Merico/merico-dev/table/node_modules/react-router-dom/index.js","reactflow","/Users/leto/Merico/merico-dev/table/node_modules/reactflow/dist/style.css"],ee):(w=typeof globalThis<"u"?globalThis:w||self,ee(w.dashboard={},w["/Users/leto/Merico/merico-dev/table/node_modules/react/jsx-runtime"].js,w["@mantine/core"],w["@mantine/modals"],w.ahooks,w["mobx-react-lite"],w.react,w._,w["react-hook-form"],w["@tabler/icons"],w["@mantine/tiptap"],w["@tiptap/extension-color"],w["@tiptap/extension-highlight"],w["@tiptap/extension-placeholder"],w["@tiptap/extension-subscript"],w["@tiptap/extension-superscript"],w["@tiptap/extension-text-align"],w["@tiptap/extension-text-style"],w["@tiptap/extension-table"],w["@tiptap/extension-table-cell"],w["@tiptap/extension-table-header"],w["@tiptap/extension-table-row"],w["@tiptap/extension-underline"],w["@tiptap/react"],w["@tiptap/starter-kit"],w["@mantine/dates"],w.dayjs,w["tabler-icons-react"],w["performant-array-to-tree"],w["rc-tree-select"],w["react-grid-layout"],w.mobx,w.eventemitter2,w["chroma-js"],w["echarts-gl"],w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/core"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/components"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/renderers"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts-for-react/lib/core"].js,w.numbro,w["/Users/leto/Merico/merico-dev/table/node_modules/echarts/charts"].js,w["@mantine/hooks"],w["@mantine/notifications"],w["d3-array"],w.mathjs,w.popmotion,w["@monaco-editor/react"],w["d3-regression"],w["@mantine/prism"],w["@tanstack/react-table"],w["react-virtual"],w.axios,w["mobx-state-tree"],w.jszip,w["file-saver"],w.CryptoJS,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/advancedFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/arraySupport"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/badMutable"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/buddhistEra"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/calendar"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/customParseFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/dayOfYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/duration"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isBetween"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isLeapYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isMoment"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeek"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isoWeeksInYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrAfter"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isSameOrBefore"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isToday"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isTomorrow"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/isYesterday"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localeData"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/localizedFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/minMax"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/objectSupport"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/pluralGetSet"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/preParsePostFormat"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/quarterOfYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/relativeTime"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/timezone"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toArray"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/toObject"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/updateLocale"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/utc"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekday"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekOfYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/dayjs/plugin/weekYear"].js,w["/Users/leto/Merico/merico-dev/table/node_modules/react-router-dom/index"].js,w.reactflow))})(this,function(w,ee,a,ce,B,_,g,b,v,I,P,Mn,An,zn,Vn,Ln,En,Pn,Bn,On,$n,Nn,Gn,qn,Fn,sa,z,S,oa,jn,Re,$,Wn,be,xx,da,A,te,ne,G,q,U,Qe,Pe,ua,Ye,Z,ca,Ie,se,pa,xe,m,ha,xt,Un,ga,ma,fa,ba,ya,va,xa,Ca,wa,_a,Sa,Ta,Da,ka,Ia,Ma,Aa,za,Va,La,Ea,Pa,Ba,Oa,$a,Na,Ga,qa,Fa,ja,Wa,Ua,Ra,Qa,Ya,R){"use strict";var yx=Object.defineProperty;var vx=(w,ee,a)=>ee in w?yx(w,ee,{enumerable:!0,configurable:!0,writable:!0,value:a}):w[ee]=a;var D=(w,ee,a)=>(vx(w,typeof ee!="symbol"?ee+"":ee,a),a);function Be(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const i in e)if(i!=="default"){const r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:()=>e[i]})}}return t.default=e,Object.freeze(t)}const Ct=Be(ee),N=Be(da),Xa=Be(Pe),Xe=Be(ua),Ce=Be(ca),k=Ct.Fragment,n=Ct.jsx,u=Ct.jsxs;function Rn(e,t){g.useEffect(()=>{const i=r=>{console.log(r);const{viewID:l}=r.detail;if(!l){console.error(new Error("[Open View] Needs to pick a view first"));return}e.views.appendToVisibles(l),t&&e.views.setIDOfVIE(l)};return window.addEventListener("open-view",i),()=>{window.removeEventListener("open-view",i)}},[e,t]),g.useEffect(()=>{const i=r=>{console.log(r);const{dictionary:l,payload:s}=r.detail;if(!s||Object.keys(s).length===0){console.error(new Error("[Set Filter Values] payload is empty"));return}Object.entries(l).forEach(([d,o])=>{e.filters.setValueByKey(d,b.get(s,o))})};return window.addEventListener("set-filter-values",i),()=>{window.removeEventListener("set-filter-values",i)}},[e]),g.useEffect(()=>{function i(l){return Array.isArray(l)?[]:typeof l=="object"?{}:typeof l=="boolean"?!1:typeof l=="string"?"":typeof l=="number"?0:l}const r=l=>{console.log(l);const{filter_keys:s}=l.detail;s.forEach(d=>{const o=b.get(e.filters.values,d),c=i(o);console.log(`${d}: ${c}`),e.filters.setValueByKey(d,c)})};return window.addEventListener("clear-filter-values",r),()=>{window.removeEventListener("clear-filter-values",r)}},[e]),g.useEffect(()=>{const i=r=>{console.log(r);const{urlTemplate:l,openInNewTab:s,enableEncoding:d=!1,payload:o}=r.detail;if(!l){console.error(new Error("[Open Link] URL is empty"));return}function c(y){return b.cloneDeepWith(y,x=>{if(d&&typeof x=="string")return encodeURIComponent(x)})}const f=b.template(l||"")(c({...o,filters:e.filters.values,context:e.context.current}));window.open(f,s?"_blank":"_self","noopener")};return window.addEventListener("open-link",i),()=>{window.removeEventListener("open-link",i)}},[e])}class Za{constructor(t){D(this,"symbol");this.symbol=Symbol(t)}}function ye(e){return new Za(e)}class wt{constructor(){D(this,"parent");D(this,"factoryRegistry",new Map);D(this,"instanceRegistry",new Map)}createScoped(){const t=new wt;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 i=this.factoryRegistry.get(t.symbol);if(i){const r=i(this);return this.instanceRegistry.set(t.symbol,r),r}if(this.parent)return this.parent.get(t)}provideFactory(t,i){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,i),this}provideValue(t,i){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>i),this}dispose(){this.instanceRegistry.forEach(t=>{const i=b.get(t,"dispose");b.isFunction(i)&&i.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const _t=g.createContext(null);function Ze(e){const t=g.useContext(_t),i=B.useCreation(()=>e.configure(t||new wt),[e.configure]),r=B.usePrevious(i);return r&&r!==i&&r.dispose(),n(_t.Provider,{value:i,children:e.children})}function Qn(){return g.useContext(_t)}const Ka={viewPanelInFullScreen:b.noop,inFullScreen:!1},St=g.createContext(Ka),Yn=g.createContext(null),Tt=Yn.Provider;function M(){const e=g.useContext(Yn);if(!e)throw new Error("Please use ModelContextProvider");return e}class ie extends g.Component{constructor(t){super(t),this.state={error:null}}componentDidCatch(t){this.setState({error:t})}render(){var t;if(this.state.error){const i=()=>{this.setState({error:null})};return u(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:i,children:"Retry"})]})}return this.props.children}}const Dt={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"}},Ke=({value:e,styles:t={}})=>{const i=qn.useEditor({extensions:[Fn,Gn,P.Link,Ln,Vn,An,Bn.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),Nn,$n,On,En.configure({types:["heading","paragraph"]}),zn.configure({placeholder:"This is placeholder"}),Pn,Mn.Color],content:e,editable:!1});g.useEffect(()=>{i==null||i.commands.setContent(e)},[e,i]);const r=g.useMemo(()=>b.defaultsDeep({},{content:Dt},t),[t]);return n(P.RichTextEditor,{editor:i,styles:r,children:n(P.RichTextEditor.Content,{})})},Ja=({description:e,isDescriptionEmpty:t})=>t?null:n(a.Tooltip,{color:"white",label:n(Ke,{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(I.IconInfoCircle,{size:16,color:"gray"})})}),Ha=_.observer(({label:e,config:{default_value:t,description:i,isDescriptionEmpty:r,...l},value:s,onChange:d})=>u(a.Box,{children:[n(a.Text,{children:" "}),n(a.Checkbox,{label:u(a.Group,{noWrap:!0,position:"apart",align:"middle",spacing:6,children:[n(a.Box,{sx:{flexGrow:1},children:e}),n(Ja,{description:i,isDescriptionEmpty:r})]}),checked:s||!1,onChange:o=>d(o.currentTarget.checked),...l,pt:".4em",styles:{input:{borderColor:"#e9ecef"}}})]})),Xn=_.observer(({label:e,config:t,value:i=[null,null],onChange:r})=>{const l=Array.isArray(i)?i.map(c=>c?z(c).toDate():null):[null,null],s=c=>{r(c.map(p=>p&&z(p).format(t.inputFormat)))},d=t.getMinDate(l[0]),o=t.getMaxDate(l[0]);return n(sa.DateRangePicker,{label:e,value:l,onChange:s,icon:n(S.Calendar,{size:16}),sx:{minWidth:"16em"},minDate:d,maxDate:o,styles:{input:{borderColor:"#e9ecef"}},...t})}),el={layoutFrozen:!1,freezeLayout:b.noop,inEditMode:!1},we=g.createContext(el),Zn=g.createContext({panel:null,data:[],loading:!1}),kt=Zn.Provider;function Q(){const e=g.useContext(Zn);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const tl={fullScreenPanelID:"",setFullScreenPanelID:b.noop},It=g.createContext(tl);function Kn(){const e=g.useContext(It);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const Jn=g.forwardRef(({label:e,description:t,...i},r)=>n("div",{ref:r,...i,children:n(a.Group,{noWrap:!0,children:u("div",{children:[n(a.Text,{size:"sm","data-role":"label",children:e}),n(a.Text,{size:"xs",color:"dimmed","data-role":"description",children:t})]})})})),nl=_.observer(({label:e,config:t,value:i,onChange:r})=>{const l=M(),s=!!t.options_query_id,{state:d}=l.getDataStuffByID(t.options_query_id),o=d==="loading",c=t.min_width?t.min_width:"200px",p=s?o:!1;return n(a.MultiSelect,{label:e,data:t.options,disabled:p,value:i,onChange:r,styles:{root:{minWidth:c,maxWidth:p?c:"unset"},input:{borderColor:"#e9ecef"}},itemComponent:Jn})}),il=_.observer(({label:e,config:t,value:i,onChange:r})=>{const l=M(),s=!!t.options_query_id,{state:d}=l.getDataStuffByID(t.options_query_id),o=d==="loading";return g.useEffect(()=>{var f;const{default_selection_count:c}=t;if(!c)return;const p=((f=t.options[0])==null?void 0:f.value)??"";console.log("Selecting the first option by default. New value: ",p),r(p,!0)},[t.default_selection_count,t.options]),n(a.Select,{label:e,data:t.options,disabled:s?o:!1,value:i,onChange:r,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:Jn})});function rl({label:e,config:t,value:i,onChange:r}){return n(a.TextInput,{label:e,value:i||"",onChange:l=>r(l.currentTarget.value),...t,styles:{input:{borderColor:"#e9ecef"}}})}function al(e){return oa.arrayToTree(e,{id:"value",parentId:"parent_value",childrenField:"children",dataField:null})}const ll=({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"})}),sl=({expanded:e,isLeaf:t,value:i,onClick:r,...l})=>(i==="0-0-value"&&console.log(l),t?n("span",{style:{width:"14px",display:"inline-block"}}):n(ll,{rotate:e?"0":"-90",onClick:r,...l})),ol=({onClick:e})=>u("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"})]}),dl=({onClick:e,...t})=>n(ol,{onClick:e,...t}),ul=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"}}}})),cl=({disabled:e,classNames:t,styles:i,unstyled:r,radius:l,style:s,label:d,value:o,onChange:c,treeData:p})=>{const{classes:f,cx:y}=ul({radius:l},{name:"FilterTreeSelectWidget",classNames:t,styles:i,unstyled:r}),[h,x]=g.useState((o==null?void 0:o.length)>0),C=L=>{x(L)},T=h&&(o==null?void 0:o.length)>0;return u(a.Stack,{spacing:3,children:[u(a.Group,{position:"apart",children:[n(a.Text,{className:f.label,children:d}),T&&n(a.Tooltip,{label:`${o.length} selected`,children:n(a.Badge,{children:o.length})})]}),n(jn,{disabled:e,allowClear:!0,className:y(f.root,"check-select"),dropdownClassName:y(f.dropdown,""),onDropdownVisibleChange:C,transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:s,treeLine:!0,clearIcon:()=>n(a.CloseButton,{}),switcherIcon:sl,treeIcon:dl,maxTagTextLength:10,value:o,treeData:p,treeNodeFilterProp:"filterBasis",treeCheckable:!0,showCheckedStrategy:jn.SHOW_PARENT,onChange:c,onSelect:console.log,maxTagCount:0,maxTagPlaceholder:L=>`${L.length} selected`})]})};function pl(e){return e.map(t=>{const{label:i,description:r,...l}=t,s={...l,filterBasis:`${i}___${r??""}`,description:r,label:i};return r&&(s.label=u("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})]})),s})}const hl=_.observer(({label:e,config:t,value:i,onChange:r})=>{const l=M(),{state:s,dataProxy:d,len:o}=l.getDataStuffByID(t.options_query_id),c=s==="loading",p=g.useMemo(()=>{if(!d)return[];const x=[...d],C=pl(x);return al(C)},[d,o]);g.useEffect(()=>{const{default_selection_count:x}=t;if(!x)return;if(p.length===0){console.log("[filter.tree-select] Resetting to empty"),r([],!0);return}const C=p.slice(0,x).map(T=>T.value);console.log(`[filter.tree-select] Selecting first ${x} option(s)`),r(C,!0)},[t.default_selection_count,p]);const f=t.min_width?t.min_width:"200px",h=!!t.options_query_id?c:!1;return n(cl,{disabled:h,style:{minWidth:f,maxWidth:h?f:"unset",borderColor:"#e9ecef"},value:i,onChange:x=>r(x,!1),treeData:p,label:e})}),gl=_.observer(({filter:{type:e,config:t,key:i,...r},formFieldProps:l})=>{switch(e){case"select":return n(il,{...r,...l,config:t});case"multi-select":return n(nl,{...r,...l,config:t});case"tree-select":return n(hl,{...r,...l,config:t});case"text-input":return n(rl,{...r,...l,config:t});case"date-range":return n(Xn,{...r,...l,config:t});case"checkbox":return n(Ha,{...r,...l,config:t});default:return null}}),Hn=_.observer(g.forwardRef(({filter:e,...t},i)=>n("div",{className:"filter-root",ref:i,children:n(ie,{children:n(gl,{filter:e,formFieldProps:t})})}))),ei=_.observer(function({view:t}){const i=M(),{control:r,handleSubmit:l,reset:s}=v.useForm({defaultValues:i.filters.values,reValidateMode:"onBlur"}),d=v.useWatch({control:r});g.useEffect(()=>{s(i.filters.values)},[i.filters.values,s]),g.useEffect(()=>{i.filters.updatePreviewValues(d)},[d]);const o=i.filters.visibleInView(t.id),c=g.useMemo(()=>o.every(h=>h.should_auto_submit),[o]),p=g.useMemo(()=>o.filter(h=>b.get(h,"config.required",!1)),[o]),f=g.useMemo(()=>p.length===0?!1:p.some(h=>!h.requiredAndPass(d[h.key])),[d,p]);if(o.length===0)return null;const y=(h,x)=>(C,T)=>{x(C),(h.should_auto_submit||T)&&i.filters.setValueByKey(h.key,C)};return n("form",{onSubmit:l(i.filters.setValues),children:u(a.Group,{className:"dashboard-filters",position:"apart",noWrap:!0,sx:c?{}:{border:"1px solid #e9ecef",borderRadius:"4px",padding:"16px"},children:[n(a.Group,{align:"flex-start",children:o.map(h=>n(v.Controller,{name:h.key,control:r,render:({field:x})=>n(Hn,{filter:h,value:x.value,onChange:y(h,x.onChange)})},h.id))}),!c&&n(a.Group,{sx:{alignSelf:"flex-end"},children:n(a.Button,{color:"blue",size:"sm",type:"submit",disabled:f,children:"Search"})})]})})}),Cx="";function ml(e){return e?["<p><br></p>","<p></p>"].includes(e):!0}const ti=_.observer(()=>{const{freezeLayout:e}=g.useContext(we),[t,i]=g.useState(!1),{panel:r}=Q();return g.useEffect(()=>{e(t)},[t]),ml(r.description)?null:u(k,{children:[n(a.Modal,{opened:t,onClose:()=>i(!1),title:r.title,withCloseButton:!1,withinPortal:!0,zIndex:310,children:n(Ke,{value:r.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:()=>i(l=>!l),sx:{verticalAlign:"baseline",cursor:"pointer"},children:n(S.InfoCircle,{size:20})})})]})}),fl=_.observer(({view:e})=>{const t=M(),i=ce.useModals(),{panel:r}=Q(),{id:l,query:s}=r,{inEditMode:d}=g.useContext(we),o=()=>s==null?void 0:s.fetchData(),{viewPanelInFullScreen:c,inFullScreen:p}=g.useContext(St),f=()=>{t.duplicatePanelByID(l,e.id)},y=()=>{t.editor.open(["_VIEWS_",e.id,"_PANELS_",l])},h=()=>i.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>t.removePanelByID(l,e.id),confirmProps:{color:"red"},zIndex:320}),x=g.useCallback(()=>{c(l)},[l,c]),C=!p&&e.type!==O.Modal;return n(k,{children:n(a.Box,{sx:{position:"absolute",top:0,left:0,right:0,zIndex:300},children:u(a.Menu,{withinPortal:!0,children:[n(a.Menu.Target,{children:n(a.Box,{className:"panel-dropdown-target",sx:{width:"100%",height:"25px"}})}),u(a.Menu.Dropdown,{children:[n(a.Menu.Item,{onClick:o,icon:n(S.Refresh,{size:14}),children:"Refresh"}),n(a.Menu.Item,{onClick:()=>t.queries.downloadDataByQueryID((s==null?void 0:s.id)??""),icon:n(S.Download,{size:14}),children:"Download Data"}),C&&n(a.Menu.Item,{onClick:x,icon:n(S.ArrowsMaximize,{size:14}),disabled:d,children:"Full Screen"}),d&&u(k,{children:[n(a.Divider,{label:"Edit",labelPosition:"center"}),n(a.Menu.Item,{onClick:y,icon:n(S.Settings,{size:14}),children:"Settings"}),n(a.Menu.Item,{onClick:f,icon:n(S.Copy,{size:14}),children:"Duplicate"}),n(a.Menu.Item,{color:"red",onClick:h,icon:n(S.Trash,{size:14}),children:"Delete"})]})]})]})})})}),wx="",bl=_.observer(function(){const{panel:t}=Q(),{title:i}=t;return i?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:i})}):null}),pe=(e,t)=>{const[i,r]=g.useState([]);return g.useEffect(()=>e.watchTriggerSnapshotList(l=>r(l.filter(s=>s.schemaRef===t))),[]),i};class Me{constructor(t,i){this.root=t,this.path=i}async deleteItem(t){t===null&&await this.root.deleteItem(this.path);const i=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,b.omit(i,t))}async getItem(t){const i=await this.root.getItem(this.path);return t===null?i:b.get(i,t)}async setItem(t,i){if(t===null)await this.root.setItem(this.path,i);else{const r=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...r,[t]:i})}return await this.getItem(t)}watchItem(t,i,r){return t===null?this.root.watchItem(this.path,(l,s)=>{i(l,s)},r):this.root.watchItem(this.path,(l,s)=>{const d=b.get(l,t),o=b.get(s,t);d!==o&&i(d,o)},r)}}class Mt{constructor(t,i,r){D(this,"attachmentStorage");this.instance=t,this.attachmentKey=i,this.constructInstance=r,this.attachmentStorage=new Me(t.instanceData,i)}async getInstance(t){if(await this.attachmentStorage.getItem(t))return this.constructInstance(new Me(this.attachmentStorage,t))}async create(t,i){return await this.attachmentStorage.setItem(t,i),this.constructInstance(new Me(this.attachmentStorage,t))}async remove(t){await this.attachmentStorage.deleteItem(t)}async list(){const t=await this.attachmentStorage.getItem(null);return Promise.all(b.values(t).map(i=>this.constructInstance(new Me(this.attachmentStorage,i.id))))}}class ni{constructor(t){D(this,"rootRef");this.rootRef=$.observable({current:t})}async deleteItem(t){$.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const i=this.getValueFromRoot(t);return Promise.resolve(i)}getValueFromRoot(t){return t===null?$.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,i){if(t===null)if(b.isObject(i))$.runInAction(()=>{this.rootRef.current=i});else throw new Error("Cannot set root value to non-object");else $.runInAction(()=>{b.set(this.rootRef.current,[t],i)});return Promise.resolve(this.getItem(t))}watchItem(t,i,r){return $.reaction(()=>this.getValueFromRoot(t),(l,s)=>{i(l,s)},{requiresObservable:!0,fireImmediately:b.get(r,"fireImmediately",!1)})}}class yl{constructor(){D(this,"channels",new Map);D(this,"globalChannel",new Wn)}getChannel(t){const i=this.channels.get(t);if(i)return i;const r=new Wn;return this.channels.set(t,r),r}}class vl{constructor(t){D(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 i=this.instances.get(t.id);if(i)return i;const r={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new yl,instanceData:new ni(t.viz.conf)};return this.instances.set(t.id,r),r}}function ii(e,t,i,r){return{vizManager:i,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new ni({}),colorPalette:{getColor(){return()=>""}},data:t,variables:r}}const xl=e=>{const{panel:t,vizManager:i,data:r,variables:l}=e,s=i.resolveComponent(t.viz.type),d=i.getOrCreateInstance(t),o={...ii(d,r,i,l),viewport:{width:t.layout.w,height:t.layout.h}},c=s.viewRender;return n(c,{context:o,instance:d,...b.omit(e,["panel","vizManager","data"])})},Cl=e=>{const{vizManager:t,panel:i,panelInfoEditor:r,data:l,variables:s}=e,d=t.resolveComponent(i.viz.type),o=t.getOrCreateInstance(i),c={...ii(o,l,t,s),panelInfoEditor:r},p=d.configRender;return n(p,{context:c,instance:o,...b.omit(e,["panel","vizManager","data","panelInfoEditor"])})},ri=(e,t)=>{const i=be.bezier(e),r=be.bezier(t);return function(l){return l<50?i(l*2/100).hex():r((l-50)*2/100).hex()}},Je=e=>{const t=be.bezier(e);return function(i){return t(i/100).hex()}},wl={type:"interpolation",displayName:"Red / Green",getColor:ri(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},_l={type:"interpolation",displayName:"Yellow / Blue",getColor:ri(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Sl={type:"interpolation",displayName:"Red",getColor:Je(["#fff7f1","darkred"]),name:"red",category:"sequential"},Tl={type:"interpolation",displayName:"Green",getColor:Je(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Dl={type:"interpolation",displayName:"Blue",getColor:Je(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},kl={type:"interpolation",displayName:"Orange",getColor:Je(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},ai="@devtable/dashboard",At="8.57.0",li="Apache-2.0",si={access:"public",registry:"https://registry.npmjs.org/"},oi=["dist"],di="./dist/dashboard.umd.js",ui="./dist/dashboard.es.js",ci="./dist/index.d.ts",pi={".":{import:"./dist/dashboard.es.js",require:"./dist/dashboard.umd.js"},"./dist/style.css":{import:"./dist/style.css",require:"./dist/style.css"}},hi={"dev-build":"tsc && vite build --watch",build:"tsc && vite build",preview:"vite preview",test:"vitest","test:ui":"vitest --ui",coverage:"vitest --coverage"},gi={"@monaco-editor/react":"4.4.6","@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"},mi={"@emotion/babel-plugin":"11.7.2","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/form":"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.1","@tiptap/extension-color":"2.0.1","@tiptap/extension-highlight":"2.0.1","@tiptap/extension-link":"2.0.1","@tiptap/extension-placeholder":"2.0.1","@tiptap/extension-subscript":"2.0.1","@tiptap/extension-superscript":"2.0.1","@tiptap/extension-table":"2.0.1","@tiptap/extension-table-cell":"2.0.1","@tiptap/extension-table-header":"2.0.1","@tiptap/extension-table-row":"2.0.1","@tiptap/extension-text-align":"2.0.1","@tiptap/extension-text-style":"2.0.1","@tiptap/extension-underline":"2.0.1","@tiptap/pm":"2.0.1","@tiptap/react":"2.0.1","@tiptap/starter-kit":"2.0.1","@types/crypto-js":"v4.1.1","@types/d3-array":"3.0.3","@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.11.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"},fi={"@emotion/react":"11.10.0","@mantine/core":"5.9.5","@mantine/dates":"5.9.5","@mantine/form":"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.1","@tiptap/extension-color":"2.0.1","@tiptap/extension-highlight":"2.0.1","@tiptap/extension-link":"2.0.1","@tiptap/extension-placeholder":"2.0.1","@tiptap/extension-subscript":"2.0.1","@tiptap/extension-superscript":"2.0.1","@tiptap/extension-table":"2.0.1","@tiptap/extension-table-cell":"2.0.1","@tiptap/extension-table-header":"2.0.1","@tiptap/extension-table-row":"2.0.1","@tiptap/extension-text-align":"2.0.1","@tiptap/extension-text-style":"2.0.1","@tiptap/extension-underline":"2.0.1","@tiptap/pm":"2.0.1","@tiptap/react":"2.0.1","@tiptap/starter-kit":"2.0.1",ahooks:"^3.3.11",axios:"^0.27.2","chroma-js":"^2.4.2","crypto-js":"^4.1.1","d3-array":"3.2.0","d3-regression":"1.2.8",dayjs:"1.11.6",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-virtual":"^2.10.4","tabler-icons-react":"^1.48.0"},Il=Object.freeze(Object.defineProperty({__proto__:null,default:{name:ai,version:At,license:li,publishConfig:si,files:oi,main:di,module:ui,types:ci,exports:pi,scripts:hi,dependencies:gi,devDependencies:mi,peerDependencies:fi},dependencies:gi,devDependencies:mi,exports:pi,files:oi,license:li,main:di,module:ui,name:ai,peerDependencies:fi,publishConfig:si,scripts:hi,types:ci,version:At},Symbol.toStringTag,{value:"Module"}));class Ml{constructor(t){D(this,"staticColors",new Map);D(this,"interpolations",new Map);t.installedPlugins.forEach(i=>{i.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const i=this.encodeColor(t);t.type==="single"?(this.staticColors.has(i)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(i,t)):t.type==="interpolation"&&(this.interpolations.has(i)&&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(i,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 Al{constructor(){D(this,"plugins",new Map);D(this,"vizComponents",new Map);D(this,"factory",{viz:t=>{const i=this.vizComponents.get(t);if(i)return i;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 i of t.manifest.viz){if(this.vizComponents.has(i.name))throw new Error(`Viz Component (${i.name}) has been installed before`);this.vizComponents.set(i.name,i)}}get installedPlugins(){return Array.from(this.plugins.values())}}class zl{constructor(){D(this,"migrations",[])}version(t,i){return this.migrations.push({version:t,handler:i}),this}run(t,i,r){var d;if(t.from===t.to)return i;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const l=this.migrations.filter(o=>o.version>t.from&&o.version<=t.to),s=b.orderBy(l,"version","asc");if(((d=b.last(s))==null?void 0:d.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return s.reduce((o,c)=>c.handler(o,r),i)}}class j extends zl{constructor(){super(),this.configVersions()}version(t,i){return super.version(t,(r,l)=>({version:t,...i(r,l)}))}async migrate({configData:t,panelModel:i}){const r=await t.getItem(null),l=b.get(r,"version",0),s=this.run({from:l,to:this.VERSION},r,{panelModel:i});await t.setItem(null,s)}async needMigration({configData:t}){const i=await t.getItem(null);return b.get(i,"version",0)<this.VERSION}}const V=(e,t)=>{const[i,{setFalse:r}]=B.useBoolean(!0),[l,s]=g.useState();g.useEffect(()=>(e.getItem(t).then(o=>{s(o),r()}),e.watchItem(t,o=>{s(o)})));const d=g.useCallback(async o=>{await e.setItem(t,o),s(o)},[e,t]);return{loading:i,value:l,set:d}},zt={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"}};N.use([A.GridComponent,A.VisualMapComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function Vl({context:e}){const{value:t}=V(e.instanceData,"config"),i=e.data,{width:r,height:l}=e.viewport,{x_axis_data_key:s,y_axis_data_key:d,z_axis_data_key:o,xAxis3D:c,yAxis3D:p,zAxis3D:f}=b.defaults({},t,zt),y=g.useMemo(()=>{const C=b.minBy(i,T=>T[o]);return b.get(C,o)},[i,o]),h=g.useMemo(()=>{const C=b.maxBy(i,T=>T[o]);return b.get(C,o)},[i,o]),x={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:y,max:h,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:p,zAxis3D:f,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:i.map(C=>[C[s],C[d],C[o]])}]};return t?n(ne,{echarts:N,option:x,style:{width:r,height:l},notMerge:!0,theme:"merico-light"}):null}function Ll({label:e,required:t,value:i,onChange:r,data:l,clearable:s=!1,sx:d,...o},c){const p=g.useMemo(()=>{if(!Array.isArray(l)||l.length===0)return[];const y=Object.keys(l[0]).map(h=>({label:h,value:h}));return s?y.concat([{label:"unset",value:""}]):y},[l]);return n(a.Select,{ref:c,label:e,data:p,value:i,onChange:r,required:t,sx:d,...o})}const E=g.forwardRef(Ll);function El({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=b.defaults({},t,zt),{control:s,handleSubmit:d,reset:o}=v.useForm({defaultValues:l});return g.useEffect(()=>{o(l)},[t]),t?n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[n(a.Text,{children:"X Axis"}),u(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(v.Controller,{name:"x_axis_data_key",control:s,render:({field:c})=>n(E,{label:"Data Field",required:!0,data:r,...c})}),n(v.Controller,{name:"xAxis3D.name",control:s,render:({field:c})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n(a.Text,{mt:"lg",children:"Y Axis"}),u(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(v.Controller,{name:"y_axis_data_key",control:s,render:({field:c})=>n(E,{label:"Data Field",required:!0,data:r,...c})}),n(v.Controller,{name:"yAxis3D.name",control:s,render:({field:c})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n(a.Text,{mt:"lg",children:"Z Axis"}),u(a.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n(v.Controller,{name:"z_axis_data_key",control:s,render:({field:c})=>n(E,{label:"Data Field",required:!0,data:r,...c})}),n(v.Controller,{name:"zAxis3D.name",control:s,render:({field:c})=>n(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n(a.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:u(a.Button,{color:"blue",type:"submit",children:[n(S.DeviceFloppy,{size:20}),n(a.Text,{ml:"md",children:"Save"})]})})]})}):null}class Pl extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Bl={displayName:"Bar Chart (3D)",displayGroup:"ECharts-based charts",migrator:new Pl,name:"bar-3d",viewRender:Vl,configRender:El,createConfig(){return{version:1,config:b.cloneDeep(zt)}}},J={mantissa:0,output:"number",trimMantissa:!1,average:!1};function Ol({value:e,onChange:t},i){const r=o=>{t({...e,output:o})},l=o=>{const c=o===0?!1:e.trimMantissa;t({...e,mantissa:o,trimMantissa:c})},s=o=>{t({...e,trimMantissa:o.currentTarget.checked})},d=o=>{t({...e,average:o.currentTarget.checked})};return u(a.Stack,{ref:i,children:[u(a.Group,{grow:!0,children:[n(a.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:r,sx:{flexGrow:1}}),n(a.Switch,{label:u(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:d,disabled:e.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),u(a.Group,{grow:!0,children:[n(a.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:l}),n(a.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:s,disabled:e.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),u(a.Stack,{spacing:0,children:[n(a.Text,{weight:"bold",children:"Preview"}),n(ie,{children:u(a.Group,{position:"apart",children:[u(a.Text,{size:12,color:"gray",children:["123456789 ",n(S.ArrowRight,{size:9})," ",G(123456789).format(e)]}),u(a.Text,{size:12,color:"gray",children:["1234 ",n(S.ArrowRight,{size:9})," ",G(1234).format(e)]}),u(a.Text,{size:12,color:"gray",children:["0.1234 ",n(S.ArrowRight,{size:9})," ",G(.1234).format(e)]})]})})]})]})}const he=g.forwardRef(Ol),ge={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
2
+ `)},bi={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Nl,configRender:$l,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 $l(e){return n(k,{})}function Nl(e){return n(a.Text,{children:"Click chart's series"})}const Gl=[{label:"Truncate",value:"truncate"},{label:"Break Line",value:"break"},{label:"Break Word",value:"breakAll"}],He=g.forwardRef(({sectionTitle:e,value:t,onChange:i},r)=>{const l=s=>d=>{const o=b.cloneDeep(t);b.set(o,s,d),i(o)};return u(a.Stack,{spacing:0,children:[e&&n(a.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",labelProps:{color:"dimmed"}}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.NumberInput,{label:"Max Width",hideControls:!0,value:t.width,onChange:l("width")}),n(a.Select,{label:"Overflow",data:Gl,value:t.overflow,onChange:l("overflow")}),n(a.TextInput,{label:"Ellipsis",value:t.ellipsis,disabled:!0})]})]})}),De=g.forwardRef(({value:e,onChange:t},i)=>{const r=s=>{t({...e,on_axis:s})},l=s=>{t({...e,in_tooltip:s})};return u(a.Stack,{ref:i,spacing:0,children:[n(He,{sectionTitle:"Overflow on Axis",value:e.on_axis,onChange:r}),n(He,{sectionTitle:"Overflow in Tooltip",value:e.in_tooltip,onChange:l})]})}),ve={on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}};function _e({overflow:e,width:t}){const i={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],r=e==="truncate"?"nowrap":"initial",l={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
3
3
  max-width: ${t}px;
4
4
  word-break: ${i};
5
5
  white-space: ${r};
6
6
  overflow: hidden;
7
7
  text-overflow: ${l};
8
- `}function Se(e){return{width:e.width,overflow:e.overflow,ellipsis:e.ellipsis}}const Vt={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...ge},overflow:ve}},y_axis:{name:"Y Axis",data_key:"value",label_formatter:J},color:"#228be6",reference_lines:[]},Oe=g.forwardRef(function({value:t,onChange:i,...r},l){return n(a.TextInput,{ref:l,value:t,onChange:i,...r})}),ql=[{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 Fl({label:e,value:t,onChange:i,pt:r="sm"},l){g.useEffect(()=>{typeof t=="string"&&(console.log(t),i({type:t,config:{}}))},[t,i]);const s=d=>{i(d==="quantile"?{type:"quantile",config:{p:.99}}:{type:d,config:{}})},o=d=>{i({type:"quantile",config:{p:d}})};return u(a.Group,{grow:!0,noWrap:!0,pt:r,children:[n(a.Select,{ref:l,label:e,data:ql,value:t.type,onChange:s}),t.type==="quantile"&&n(a.NumberInput,{label:"p",value:t.config.p,onChange:o,precision:2,min:.05,step:.05,max:1})]})}const et=g.forwardRef(Fl);function jl({label:e,value:t,onChange:i},r){const[l,s]=g.useState(Array.isArray(t)?[...t]:[]),o=g.useCallback(()=>{s(h=>[...h,""])},[s]),d=g.useCallback(h=>{s(x=>(x.splice(h,1),[...x]))},[s]),c=g.useMemo(()=>!b.isEqual(l,t),[l,t]),p=()=>{i(l.map(h=>h.toString()))},f=a.useMantineTheme(),y=g.useMemo(()=>Object.entries(f.colors).map(([h,x])=>x[6]),[f]);return u(k,{children:[u(a.Group,{position:"left",ref:r,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:p,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Group,{children:[l.map((h,x)=>n(a.ColorInput,{value:h,onChange:C=>{s(T=>(T.splice(x,1,C),[...T]))},swatches:y,rightSection:n(a.ActionIcon,{onClick:()=>d(x),color:"red",children:n(S.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:o,color:"blue",variant:"outline",children:n(S.PlaylistAdd,{size:20})})]})]})}const Wl=g.forwardRef(jl);function Ul({value:e,onChange:t},i){const{colorManager:r}=g.useContext(me),l=g.useMemo(()=>r.getStaticColors().map(d=>({label:d.name,group:d.category,value:d.value})),[r]),s=g.useMemo(()=>l.some(o=>o.value===e),[e,l]);return u(a.Group,{position:"apart",spacing:4,ref:i,children:[n(a.TextInput,{placeholder:"Set any color",value:s?"":e,onChange:o=>t(o.currentTarget.value),rightSection:n(a.ColorSwatch,{color:s?"transparent":e,radius:4}),variant:s?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),n(a.Text,{sx:{flexGrow:0},children:"or"}),n(a.Select,{data:l,value:e,onChange:t,variant:s?"default":"filled",placeholder:"Pick a theme color",icon:n(a.ColorSwatch,{color:s?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const K=g.forwardRef(Ul),tt=[{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:i},r){var o;const[l,s]=g.useState(((o=tt.find(d=>d.label===t))==null?void 0:o.value)??tt[0].value);return g.useEffect(()=>{const d=tt.find(c=>c.value===l);d&&i(d.label)},[l]),u(a.Stack,{spacing:0,mt:"sm",mb:"lg",children:[n(a.Text,{size:"sm",children:e}),n(a.Slider,{label:null,marks:tt,value:l,onChange:s,step:25,placeholder:"Pick a font size",px:"1em",ref:r})]})}const yi=g.forwardRef(Rl);function Ql({label:e,value:t,onChange:i,type:r},l){const[s,o]=g.useState(Array.isArray(t)?[...t]:[]),d=g.useCallback(()=>{o(y=>[...y,""])},[o]),c=g.useCallback(y=>{o(h=>(h.splice(y,1),[...h]))},[o]),p=g.useMemo(()=>!b.isEqual(s.map(String),t.map(String)),[s,t]),f=()=>{i(s.map(y=>r==="number"?Number(y):y.toString()))};return u(k,{children:[u(a.Group,{position:"left",ref:l,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!p,onClick:f,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Group,{children:[s.map((y,h)=>n(a.TextInput,{type:r,value:y,onChange:x=>{const C=x.currentTarget.value;o(T=>(T.splice(h,1,C),[...T]))},rightSection:n(a.ActionIcon,{onClick:()=>c(h),color:"red",children:n(S.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:d,color:"blue",variant:"outline",children:n(S.PlaylistAdd,{size:20})})]})]})}const Yl=g.forwardRef(Ql),vi=g.forwardRef(function({value:t,onChange:i},r){const l=t.color.type,s=(o,d)=>{const c=b.cloneDeep(t);b.set(c,o,d),i(c)};return u(k,{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:o=>s("size",o.currentTarget.value)})}),n(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:n(yi,{label:"Font Weight",value:t.weight,onChange:o=>s("weight",o)})}),n(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),u(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:o=>s("color.type",o)}),l==="static"&&n(K,{value:t.color.staticColor,onChange:o=>s("color.staticColor",o)}),l==="continuous"&&u(k,{children:[n(Yl,{label:"Value Range",value:t.color.valueRange,type:"number",onChange:o=>s("color.valueRange",o)}),n(Wl,{label:"Color Range",value:t.color.colorRange,onChange:o=>s("color.colorRange",o)})]})]})]})});g.forwardRef(function({value:t,onChange:i,data:r,withStyle:l=!0},s){const o=(d,c)=>{const p=b.cloneDeep(t);b.set(p,d,c),i(p)};return u(a.Box,{px:"sm",py:"md",ref:s,children:[n(a.Text,{weight:"bold",pb:0,children:t.name}),n(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:d=>o("name",d.currentTarget.value)}),n(E,{label:"Data Field",required:!0,data:r,value:t.data_field,onChange:d=>o("data_field",d)})]}),n(et,{label:"Aggregation",value:t.aggregation,onChange:d=>o("aggregation",d)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(he,{value:t.formatter,onChange:d=>o("formatter",d)}),l&&n(vi,{value:t,onChange:i})]})});const $e={type:"none",config:{}};function Xl(e){const t=Array.from(e).sort((r,l)=>r-l),i=Math.floor(t.length/2);return t.length%2===0?(t[i-1]+t[i])/2:t[i]}function Zl(e,t){const i=e[t],r=Number(i);return isFinite(r)?r:0}function Ne(e,t,i){try{const r=e.map(l=>Zl(l,t));switch(i.type){case"sum":return b.sum(r);case"mean":return b.mean(r);case"median":return Xl(r);case"max":return b.max(r)??0;case"min":return b.min(r)??0;case"quantile":return Pe.quantile(r,i.config.p)??0;case"CV":const l=Xe.std(...r),s=Xe.mean(...r);return s?l/s:"N/A";case"std":return Xe.std(...r);default:return r}}catch(r){return console.error(r),null}}class Kl{constructor({valueRange:t,colorRange:i}){D(this,"mapper");this.mapper=Ye.interpolate(t,i)}getColor(t){return this.mapper(t)}}function Jl(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function Ae({data_field:e,aggregation:t},i){return Ne(i,e,t)}function Te({formatter:e},t){return["string","number"].includes(typeof t)?G(t).format(e):Jl(t)}function Hl(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 Kl(e).getColor(t)}catch(i){return console.error(i),"black"}return"black"}function xi(e,t){const{color:i,data_field:r,aggregation:l,size:s,weight:o}=e,d=Ne(t,r,l),c=Te(e,d);return n(a.Text,{sx:{fontSize:s,display:"inline"},color:Hl(i,d),weight:o,children:c})}function es(e,t){const i={};return e.forEach(r=>{const l=r.name;i[l]=xi(r,t)}),i}function ts(e){return e.split(" ").map((t,i)=>u(g.Fragment,{children:[t," "]},i))}function ns(e){const i=e.replaceAll("<br />","<br/>").replaceAll(`
9
- `,"<br/>").split("<br/>");return i.map((l,s)=>{const o=[ts(l)];return s!==i.length-1&&o.push(n("br",{})),o}).flat().filter(l=>l!==void 0)}function Lt(e){return ns(e)}function Ge(e,t,i){const r=es(t,i),l=/^\{(.+)\}(.*)$/;return e.split("$").map(s=>{const o=l.exec(s);if(!o)return Lt(s);const d=r[o[1]];if(!d)return Lt(s);const c=o[2]??"";return u(k,{children:[d,Lt(c)]})})}function is(e,t){const i={};return e.forEach(r=>{const{name:l,data_field:s,aggregation:o}=r,d=Ne(t,s,o);i[l]=Te(r,d)}),i}function nt(e,t,i){const r=is(t,i),l=/^\{(.+)\}(.*)$/;return e.split("$").map(s=>{const o=l.exec(s);if(!o)return s;const d=r[o[1]];if(!d)return s;const c=o[2]??"";return`${d}${c}`}).join("")}function ze({enabled:e,func_content:t}){return(i,r)=>{if(!e)return i;try{return new Function(`return ${t}`)()(i,r)}catch(l){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${l.message}`),i}}}const Et=["max","q3","median","q1","min"];function rs({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 as(e,t){return`
8
+ `}function Se(e){return{width:e.width,overflow:e.overflow,ellipsis:e.ellipsis}}const Vt={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...ge},overflow:ve}},y_axis:{name:"Y Axis",data_key:"value",label_formatter:J},color:"#228be6",reference_lines:[]},Oe=g.forwardRef(function({value:t,onChange:i,...r},l){return n(a.TextInput,{ref:l,value:t,onChange:i,...r})}),ql=[{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 Fl({label:e,value:t,onChange:i,pt:r="sm"},l){g.useEffect(()=>{typeof t=="string"&&(console.log(t),i({type:t,config:{}}))},[t,i]);const s=o=>{i(o==="quantile"?{type:"quantile",config:{p:.99}}:{type:o,config:{}})},d=o=>{i({type:"quantile",config:{p:o}})};return u(a.Group,{grow:!0,noWrap:!0,pt:r,children:[n(a.Select,{ref:l,label:e,data:ql,value:t.type,onChange:s}),t.type==="quantile"&&n(a.NumberInput,{label:"p",value:t.config.p,onChange:d,precision:2,min:.05,step:.05,max:1})]})}const et=g.forwardRef(Fl);function jl({label:e,value:t,onChange:i},r){const[l,s]=g.useState(Array.isArray(t)?[...t]:[]),d=g.useCallback(()=>{s(h=>[...h,""])},[s]),o=g.useCallback(h=>{s(x=>(x.splice(h,1),[...x]))},[s]),c=g.useMemo(()=>!b.isEqual(l,t),[l,t]),p=()=>{i(l.map(h=>h.toString()))},f=a.useMantineTheme(),y=g.useMemo(()=>Object.entries(f.colors).map(([h,x])=>x[6]),[f]);return u(k,{children:[u(a.Group,{position:"left",ref:r,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:p,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Group,{children:[l.map((h,x)=>n(a.ColorInput,{value:h,onChange:C=>{s(T=>(T.splice(x,1,C),[...T]))},swatches:y,rightSection:n(a.ActionIcon,{onClick:()=>o(x),color:"red",children:n(S.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:d,color:"blue",variant:"outline",children:n(S.PlaylistAdd,{size:20})})]})]})}const Wl=g.forwardRef(jl);function Ul({value:e,onChange:t},i){const{colorManager:r}=g.useContext(me),l=g.useMemo(()=>r.getStaticColors().map(o=>({label:o.name,group:o.category,value:o.value})),[r]),s=g.useMemo(()=>l.some(d=>d.value===e),[e,l]);return u(a.Group,{position:"apart",spacing:4,ref:i,children:[n(a.TextInput,{placeholder:"Set any color",value:s?"":e,onChange:d=>t(d.currentTarget.value),rightSection:n(a.ColorSwatch,{color:s?"transparent":e,radius:4}),variant:s?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),n(a.Text,{sx:{flexGrow:0},children:"or"}),n(a.Select,{data:l,value:e,onChange:t,variant:s?"default":"filled",placeholder:"Pick a theme color",icon:n(a.ColorSwatch,{color:s?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const K=g.forwardRef(Ul),tt=[{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:i},r){var d;const[l,s]=g.useState(((d=tt.find(o=>o.label===t))==null?void 0:d.value)??tt[0].value);return g.useEffect(()=>{const o=tt.find(c=>c.value===l);o&&i(o.label)},[l]),u(a.Stack,{spacing:0,mt:"sm",mb:"lg",children:[n(a.Text,{size:"sm",children:e}),n(a.Slider,{label:null,marks:tt,value:l,onChange:s,step:25,placeholder:"Pick a font size",px:"1em",ref:r})]})}const yi=g.forwardRef(Rl);function Ql({label:e,value:t,onChange:i,type:r},l){const[s,d]=g.useState(Array.isArray(t)?[...t]:[]),o=g.useCallback(()=>{d(y=>[...y,""])},[d]),c=g.useCallback(y=>{d(h=>(h.splice(y,1),[...h]))},[d]),p=g.useMemo(()=>!b.isEqual(s.map(String),t.map(String)),[s,t]),f=()=>{i(s.map(y=>r==="number"?Number(y):y.toString()))};return u(k,{children:[u(a.Group,{position:"left",ref:l,children:[n(a.Text,{children:e}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!p,onClick:f,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Group,{children:[s.map((y,h)=>n(a.TextInput,{type:r,value:y,onChange:x=>{const C=x.currentTarget.value;d(T=>(T.splice(h,1,C),[...T]))},rightSection:n(a.ActionIcon,{onClick:()=>c(h),color:"red",children:n(S.Trash,{size:14})}),sx:{width:"45%"}})),n(a.ActionIcon,{onClick:o,color:"blue",variant:"outline",children:n(S.PlaylistAdd,{size:20})})]})]})}const Yl=g.forwardRef(Ql),vi=g.forwardRef(function({value:t,onChange:i},r){const l=t.color.type,s=(d,o)=>{const c=b.cloneDeep(t);b.set(c,d,o),i(c)};return u(k,{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:d=>s("size",d.currentTarget.value)})}),n(a.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:n(yi,{label:"Font Weight",value:t.weight,onChange:d=>s("weight",d)})}),n(a.Divider,{my:"xs",label:"Style",labelPosition:"center"}),u(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:d=>s("color.type",d)}),l==="static"&&n(K,{value:t.color.staticColor,onChange:d=>s("color.staticColor",d)}),l==="continuous"&&u(k,{children:[n(Yl,{label:"Value Range",value:t.color.valueRange,type:"number",onChange:d=>s("color.valueRange",d)}),n(Wl,{label:"Color Range",value:t.color.colorRange,onChange:d=>s("color.colorRange",d)})]})]})]})});g.forwardRef(function({value:t,onChange:i,data:r,withStyle:l=!0},s){const d=(o,c)=>{const p=b.cloneDeep(t);b.set(p,o,c),i(p)};return u(a.Box,{px:"sm",py:"md",ref:s,children:[n(a.Text,{weight:"bold",pb:0,children:t.name}),n(a.Divider,{my:"xs",label:"Data",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:o=>d("name",o.currentTarget.value)}),n(E,{label:"Data Field",required:!0,data:r,value:t.data_field,onChange:o=>d("data_field",o)})]}),n(et,{label:"Aggregation",value:t.aggregation,onChange:o=>d("aggregation",o)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(he,{value:t.formatter,onChange:o=>d("formatter",o)}),l&&n(vi,{value:t,onChange:i})]})});const $e={type:"none",config:{}};function Xl(e){const t=Array.from(e).sort((r,l)=>r-l),i=Math.floor(t.length/2);return t.length%2===0?(t[i-1]+t[i])/2:t[i]}function Zl(e,t){const i=e[t],r=Number(i);return isFinite(r)?r:0}function Ne(e,t,i){try{const r=e.map(l=>Zl(l,t));switch(i.type){case"sum":return b.sum(r);case"mean":return b.mean(r);case"median":return Xl(r);case"max":return b.max(r)??0;case"min":return b.min(r)??0;case"quantile":return Pe.quantile(r,i.config.p)??0;case"CV":const l=Xe.std(...r),s=Xe.mean(...r);return s?l/s:"N/A";case"std":return Xe.std(...r);default:return r}}catch(r){return console.error(r),null}}class Kl{constructor({valueRange:t,colorRange:i}){D(this,"mapper");this.mapper=Ye.interpolate(t,i)}getColor(t){return this.mapper(t)}}function Jl(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function Ae({data_field:e,aggregation:t},i){return Ne(i,e,t)}function Te({formatter:e},t){return["string","number"].includes(typeof t)?G(t).format(e):Jl(t)}function Hl(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 Kl(e).getColor(t)}catch(i){return console.error(i),"black"}return"black"}function xi(e,t){const{color:i,data_field:r,aggregation:l,size:s,weight:d}=e,o=Ne(t,r,l),c=Te(e,o);return n(a.Text,{sx:{fontSize:s,display:"inline"},color:Hl(i,o),weight:d,children:c})}function es(e,t){const i={};return e.forEach(r=>{const l=r.name;i[l]=xi(r,t)}),i}function ts(e){return e.split(" ").map((t,i)=>u(g.Fragment,{children:[t," "]},i))}function ns(e){const i=e.replaceAll("<br />","<br/>").replaceAll(`
9
+ `,"<br/>").split("<br/>");return i.map((l,s)=>{const d=[ts(l)];return s!==i.length-1&&d.push(n("br",{})),d}).flat().filter(l=>l!==void 0)}function Lt(e){return ns(e)}function Ge(e,t,i){const r=es(t,i),l=/^\{(.+)\}(.*)$/;return e.split("$").map(s=>{const d=l.exec(s);if(!d)return Lt(s);const o=r[d[1]];if(!o)return Lt(s);const c=d[2]??"";return u(k,{children:[o,Lt(c)]})})}function is(e,t){const i={};return e.forEach(r=>{const{name:l,data_field:s,aggregation:d}=r,o=Ne(t,s,d);i[l]=Te(r,o)}),i}function nt(e,t,i){const r=is(t,i),l=/^\{(.+)\}(.*)$/;return e.split("$").map(s=>{const d=l.exec(s);if(!d)return s;const o=r[d[1]];if(!o)return s;const c=d[2]??"";return`${o}${c}`}).join("")}function ze({enabled:e,func_content:t}){return(i,r)=>{if(!e)return i;try{return new Function(`return ${t}`)()(i,r)}catch(l){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${l.message}`),i}}}const Et=["max","q3","median","q1","min"];function rs({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 as(e,t){return`
10
10
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
11
11
  <div style="${_e(e.x_axis.axisLabel.overflow.in_tooltip)}">${t[0]}</div>
12
12
  </div>
@@ -18,11 +18,11 @@
18
18
  </tr>
19
19
  </tbody>
20
20
  </table>
21
- `}const ls=e=>t=>{const{componentSubType:i,value:r}=t;if(i==="scatter")return as(e,r);const l=Et.map(d=>`
21
+ `}const ls=e=>t=>{const{componentSubType:i,value:r}=t;if(i==="scatter")return as(e,r);const l=Et.map(o=>`
22
22
  <tr>
23
- <th style="text-align: right; padding: 0 1em;">${b.capitalize(d)}</th>
23
+ <th style="text-align: right; padding: 0 1em;">${b.capitalize(o)}</th>
24
24
  <td style="text-align: left; padding: 0 1em;">
25
- ${G(r[d]).format(e.y_axis.label_formatter)}
25
+ ${G(r[o]).format(e.y_axis.label_formatter)}
26
26
  </td>
27
27
  </tr>`);return`
28
28
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
@@ -33,23 +33,23 @@
33
33
  ${l.join("")}
34
34
  </tbody>
35
35
  </table>
36
- `};function ss({config:e}){return{trigger:"item",confine:!0,formatter:ls(e)}}function os(e,t){return Object.entries(e).map(([r,l])=>{const s=l.map(T=>T[t]).sort((T,L)=>T-L),o=Pe.quantile(s,.25)??0,d=Pe.quantile(s,.5)??0,c=Pe.quantile(s,.75)??0,p=c-o,f=o-1.5*p,y=c+1.5*p,h=Math.max(s[0],f),x=Math.min(b.last(s)??0,y),C=s.filter(T=>T<h||T>x).map(T=>[r,T]);return{name:r,min:h,q1:o,median:d,q3:c,max:x,outliers:C}})}function ds(e,t,i){const r=t.reduce((l,s)=>{const o=Ae(s,i);return l[s.name]=Te(s,o),l},{});return e.map(l=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:l.name,yAxis:Number(r[l.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return nt(l.template,t,i)},position:"insideEndTop"}}}))}function us({config:e,data:t,variables:i}){const{x_axis:r,y_axis:l,color:s,reference_lines:o}=e,d=b.groupBy(t,r.data_key),c=os(d,l.data_key),p=c.map(y=>y.outliers).flat(),f=Se(r.axisLabel.overflow.on_axis);return{dataset:[{source:c},{source:p}],legend:rs({config:e}),tooltip:ss({config:e}),xAxis:[{type:"category",name:r.name,axisTick:{show:!0,alignWithLabel:!0},axisLabel:{...r.axisLabel,...f,formatter:ze(r.axisLabel.formatter)}}],yAxis:[{name:l.name,axisLine:{show:!0},axisLabel:{formatter:function(y){return G(y).format(l.label_formatter)}}}],series:[{name:"Box",type:"boxplot",itemStyle:{color:s,borderColor:"#2F8CC0",borderWidth:2},emphasis:{disabled:!0},boxWidth:[10,40],datasetIndex:0,encode:{y:Et,x:"name",itemName:["name"],tooltip:Et}},{name:"Outlier",type:"scatter",symbolSize:5,itemStyle:{color:"#2F8CC0"},emphasis:{scale:2},datasetIndex:1},...ds(o,i,t)]}}N.use([A.DataZoomComponent,q.BoxplotChart,A.MarkLineComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function cs({context:e,instance:t}){const{value:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,{width:s,height:o}=e.viewport,d=b.defaults({},i,Vt),c=fe({vizManager:e.vizManager,instance:t}),p=pe(c.triggerManager,bi.id),f=g.useMemo(()=>b.keyBy(l,d.x_axis.data_key),[l,d.x_axis.data_key]),y=g.useCallback(C=>{const T=b.get(f,C.name,{error:"rowData is not found"});p.forEach(L=>{c.runInteraction(L.id,{...C,rowData:T})})},[f,p,c]),h=g.useMemo(()=>({click:y}),[y]),x=g.useMemo(()=>us({config:d,data:l,variables:r}),[d,l,r]);return!i||!s||!o?null:n(ne,{echarts:N,option:x,style:{width:s,height:o},onEvents:h,notMerge:!0,theme:"merico-light"})}function ps({control:e,index:t,remove:i,variableOptions:r}){return u(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.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(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:r,sx:{flex:1},...l})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...l})}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(t),sx:{position:"absolute",top:15,right:5},children:n(S.Trash,{size:16})})]},t)}function hs({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),o=t("reference_lines"),d=r.map((f,y)=>({...f,...o[y]})),c=()=>l({name:"",template:"",variable_key:""}),p=g.useMemo(()=>i.map(f=>({label:f.name,value:f.name})),[i]);return u(a.Stack,{children:[d.map((f,y)=>n(ps,{control:e,index:y,remove:s,variableOptions:p})),n(a.Group,{position:"center",mt:"xs",children:n(a.Button,{onClick:c,children:"Add a Reference Line"})})]})}const gs=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},it=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e);g.useEffect(()=>{d(e)},[e]);const c=x=>{d({...o,enabled:x})},p=()=>{s();const{enabled:x,func_content:C}=o,T={enabled:x,func_content:C};d(T),t(T)},f=()=>{s(),d(e)},y=x=>{d(C=>({...C,func_content:x}))},h=()=>{y(ge.func_content)};return u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:o.enabled,onChange:x=>c(x.currentTarget.checked)}),n(gs,{value:o.func_content,onChange:y,disabled:!o.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:p,children:"OK"})]})]})]})})]})}),ms=({control:e,data:t,watch:i})=>(i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.name",control:e,render:({field:r})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.data_key",control:e,render:({field:r})=>n(E,{label:"X Axis Data Field",required:!0,data:t,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:r})=>n(it,{data:t,...r})})]}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:r})=>n(De,{...r})})]})),fs=({control:e,data:t,watch:i})=>(i(["y_axis"]),u(k,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.name",control:e,render:({field:r})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...r})}),n(v.Controller,{name:"y_axis.data_key",control:e,render:({field:r})=>n(E,{label:"Y Axis Data Field",required:!0,data:t,sx:{flex:1},...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:"y_axis.label_formatter",control:e,render:({field:r})=>n(he,{...r})})]})]}));function bs({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,{variables:l}=e,s=g.useMemo(()=>b.defaults({},t,Vt),[t]),{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]),c(["x_axis","y_axis","reference_lines","color"]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,t),[y,t]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(ms,{control:o,data:r,watch:c})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(fs,{control:o,data:r,watch:c})}),n(a.Tabs.Panel,{value:"Style",children:u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"color",control:o,render:({field:x})=>n(K,{...x})})]})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(hs,{variables:l,control:o,watch:c})})]})]})})}function ys(e){return b.omit(e,"variables")}function vs(e){const{label_formatter:t=J,...i}=e.y_axis;return{...e,y_axis:{...i,label_formatter:t}}}function xs(e){const t={rotate:0,formatter:{...ge}},{axisLabel:i=t,...r}=e.x_axis;return{...e,x_axis:{...r,axisLabel:i}}}function Cs(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function ws(e){delete e.config;const{x_axis:t,tooltip:i}=e.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:i}}}};return b.defaultsDeep(r,e)}class _s extends j{constructor(){super(...arguments);D(this,"VERSION",6)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,(i,{panelModel:r})=>{const{config:l}=i;return(l.variables||[]).forEach(o=>{r.variables.find(d=>d.name===o.name)||r.addVariable(o)}),{...i,version:2,config:ys(l)}}),this.version(3,i=>{const{config:r}=i;return{...i,version:3,config:vs(r)}}),this.version(4,i=>{const{config:r}=i;return{...i,version:4,config:xs(r)}}),this.version(5,i=>{const{config:r}=i;return{...i,version:5,config:Cs(r)}}),this.version(6,i=>{const{config:r}=i;return{...i,version:6,config:ws(r)}})}}const Ss={displayName:"Boxplot Chart",displayGroup:"ECharts-based charts",migrator:new _s,name:"boxplot",viewRender:cs,configRender:bs,createConfig(){return{version:6,config:b.cloneDeep(Vt)}},triggers:[bi]},Ci={id:"builtin:button:click-button",displayName:"Click Button",nameRender:Ds,configRender:Ts,payload:[]};function Ts(e){return n(k,{})}function Ds(e){return n(a.Text,{children:"Click this button"})}const Pt={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},ks={left:"flex-start",center:"center",right:"flex-end"},Is={top:"flex-start",center:"center",bottom:"flex-end"},Ms=_.observer(({context:e,instance:t})=>{const i=fe({vizManager:e.vizManager,instance:t}),r=pe(i.triggerManager,Ci.id),l=M(),{value:s}=V(e.instanceData,"config"),o=g.useMemo(()=>b.defaultsDeep({},s,Pt),[s]),{content:d,horizontal_align:c,vertical_align:p,...f}=o,{width:y,height:h}=e.viewport,x={filters:l.filters.values,context:l.context.current},C=()=>{r.forEach(T=>{i.runInteraction(T.id,{})})};return n(a.Center,{sx:{width:y,height:h,justifyContent:ks[c],alignItems:Is[p]},children:n(a.Button,{...f,onClick:C,children:b.template(d)(x)})})}),As=({value:e,onChange:t,label:i})=>{const r=a.useMantineTheme(),l=g.useCallback(o=>()=>t(o),[t]),s=o=>e===o;return u(a.Stack,{spacing:2,children:[n(a.Text,{size:14,sx:{fontWeight:500},children:i}),n(a.Group,{position:"left",spacing:"xs",children:Object.keys(r.colors).map(o=>{const d=r.colors[o][6];return n(a.ColorSwatch,{color:d,onClick:l(o),radius:4,size:26,sx:{cursor:"pointer"},children:s(o)&&n(a.CheckIcon,{width:10,color:"white"})},o)})})]})},zs=a.MANTINE_SIZES.map(e=>({label:e.toUpperCase(),value:e})),Vs=({label:e,value:t,onChange:i})=>n(a.Select,{data:zs,label:e,value:t,onChange:i}),Ls=[{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}],Es=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Ps=[{label:"Top",value:"top"},{label:"Center",value:"center"},{label:"Bottom",value:"bottom"}];function Bs({context:e}){const{value:t,set:i}=V(e.instanceData,"config");e.data;const r=g.useMemo(()=>b.defaultsDeep({},t,Pt),[t]),l=r;g.useEffect(()=>{!b.isEqual(r,l)&&(console.log("config malformed, resetting to defaults",r,l),i(l))},[r,l]);const{control:s,handleSubmit:o,watch:d,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,r),[f,r]);return d(["content","variant","color","size","compact","horizontal_align","vertical_align"]),u("form",{onSubmit:o(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Stack,{children:[n(v.Controller,{control:s,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"}),u(a.SimpleGrid,{cols:2,children:[n(v.Controller,{control:s,name:"variant",render:({field:h})=>n(a.Select,{label:"Variant",data:Ls,...h})}),n(v.Controller,{control:s,name:"color",render:({field:h})=>n(As,{label:"Theme",...h})})]}),u(a.SimpleGrid,{cols:2,children:[n(v.Controller,{control:s,name:"size",render:({field:h})=>n(Vs,{label:"Size",...h})}),n(v.Controller,{control:s,name:"compact",render:({field:h})=>n(a.Checkbox,{label:"Compact",checked:h.value,onChange:x=>h.onChange(x.currentTarget.checked),mt:26})})]}),u(a.SimpleGrid,{cols:2,children:[n(v.Controller,{control:s,name:"horizontal_align",render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:Es,...h})}),n(v.Controller,{control:s,name:"vertical_align",render:({field:h})=>n(a.Select,{label:"Vertical Alignment",data:Ps,...h})})]})]})]})}class Os extends j{constructor(){super(...arguments);D(this,"VERSION",2)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{horizontal_align:r="left",vertical_align:l="center",...s}=i.config;return{...i,version:2,config:{...s,horizontal_align:r,vertical_align:l}}})}}const $s={displayName:"Button",displayGroup:"Others",migrator:new Os,name:"button",viewRender:Ms,configRender:Bs,createConfig(){return{version:2,config:b.cloneDeep(Pt)}},triggers:[Ci]},Bt={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Gs,configRender:Ns,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 Ns(e){return n(k,{})}function Gs(e){return n(a.Text,{children:"Click chart's series"})}const Ve={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1},Ot={regressions:[],series:[],stats:{templates:{bottom:"",top:""}},x_axis:{axisLabel:{rotate:0,formatter:{...ge},overflow:ve}},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:J}],reference_lines:[],reference_areas:[],dataZoom:Ve};function $t(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 qs(e){const t=e.y_axes.some(l=>!!l.name);let i=10;t&&(i+=20),e.dataZoom.x_axis_slider&&(i+=20);let r=5;return e.x_axis_name&&(r+=15),e.series.some(l=>!l.hide_in_legend)&&(r+=20),{top:i,bottom:r}}function Fs(e){return e!=="line"?{}:{itemStyle:{opacity:0}}}function js(e){switch(e){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function Ws(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(i=>!i.hide_in_legend).map(({name:i,type:r})=>({name:i,icon:js(r),...Fs(r)})),t}function wi(e,t){switch(e.config.method){case"linear":return[...Ce.regressionLinear()(t)];case"exponential":return[...Ce.regressionExp()(t)];case"logarithmic":return[...Ce.regressionLog()(t)];case"polynomial":return[...Ce.regressionPoly().order(e.config.order)(t)];default:return[]}}function Us(e,t,i,r){const{transform:l,plot:s}=e,o={...s,name:t,data:wi(l,r),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return i&&(o.custom={type:"regression-line",targetSeries:i}),{series:[o],xaxes:[]}}function Rs({regressions:e=[],x_axis_data_key:t},i){const r=[];if(i.length===0)return{regressionSeries:r};function l(s,o,d,c){const{series:p}=Us(s,o,d,c);r.push(...p)}return e.forEach(s=>{const{name:o,group_by_key:d}=s;if(!d||d===t){const p=i.map((f,y)=>[y,Number(f[s.y_axis_data_key])]);l(s,o,"",p);return}const c=b.groupBy(i,d);Object.entries(c).forEach(([p,f])=>{const y=f.map((x,C)=>[C,Number(x[s.y_axis_data_key])]),h=`${o} (${p})`;l(s,h,p,y)})}),{regressionSeries:r}}function Qs(e,t){return e.map(i=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:i.color},data:[[{yAxis:t[i.y_keys.upper]},{yAxis:t[i.y_keys.lower]}]],silent:!0}}))}function Ys(e,t,i,r){return e.map(l=>{const s=l.orientation==="horizontal",o=s?"yAxis":"xAxis",d=s?"insideEndTop":"end";return{name:l.name,type:"line",hide_in_legend:!l.show_in_legend,yAxisIndex:l.yAxisIndex,data:[],lineStyle:l.lineStyle,markLine:{data:[{name:l.name,[o]:Number(i[l.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?nt(l.template,t,r):""},position:d}}}})}function Xs({type:e,...t},i,r,l){if(!e)return 10;if(e==="static"){const{size:d}=t;return d}const{func_content:s}=t,o=b.keyBy(i,r);return(d,c)=>{let p;c.name?p=o[c.name]:p=i[c.dataIndex];try{return new Function(`return ${s}`)()({rowData:p,params:c,variables:l},{lodash:b,interpolate:Ye.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function Nt(e,t,i){return e.map(r=>[r[t],r[i]])}function Zs(e,t,i,r){const l=Nt(t,i,r);return b.unionBy(l,e,0)}function Ks({dataTemplate:e,data:t,x_axis_data_key:i,y_axis_data_key:r,valueTypedXAxis:l}){return l?Zs(e,t,i,r):t.map(s=>s[r])}function Js({dataTemplate:e,data:t,aggregation_on_value:i,x_axis_data_key:r,y_axis_data_key:l,valueTypedXAxis:s}){if(!i||i.type==="none")return Ks({dataTemplate:e,data:t,x_axis_data_key:r,y_axis_data_key:l,valueTypedXAxis:s});const o=Nt(t,r,l),d=b.groupBy(o,"0");return Object.entries(d).map(([p,f])=>{const y=Ne(f,"1",i);return[p,y]})}function Hs({group_by_key:e,data:t,x_axis_data_key:i,y_axis_data_key:r}){const l=b.groupBy(t,e);return Object.entries(l).forEach(([s,o])=>{l[s]=Nt(o,i,r)}),l}function eo({x_axis_data_key:e},{y_axis_data_key:t,yAxisIndex:i,label_position:r,name:l,group_by_key:s,aggregation_on_value:o,stack:d,color:c,display_name_on_line:p,symbolSize:f,hide_in_legend:y,...h},x,C,T,L,X){const de={label:{show:!!r,position:r,formatter:X[i??"default"]},name:l,xAxisId:"main-x-axis",yAxisIndex:i,stack:d,color:c,symbolSize:Xs(f,T,e,L),hide_in_legend:y,labelLayout:{hideOverlap:!0},...h};if(p&&(de.endLabel={show:!0,formatter:l,offset:[-12,12],align:"right"}),!s||s===e)return de.data=Js({dataTemplate:x,data:T,aggregation_on_value:o,x_axis_data_key:e,y_axis_data_key:t,valueTypedXAxis:C}),de;const We=Hs({group_by_key:s,data:T,x_axis_data_key:e,y_axis_data_key:t});return Object.entries(We).map(([H,Ue])=>{const ae=b.cloneDeep(de);return ae.name=H,ae.color=void 0,ae.data=Ue,ae})}function to(e,t,i,r,l,s,o){const d=t.map(p=>[p,0]);return e.series.map(p=>eo(e,p,d,i,r,o,l)).flat().concat(Ys(e.reference_lines,s,o,r)).concat(Qs(e.reference_areas,o))}function no(e,t){const i=e.find(s=>s.axisDim==="x"&&s.axisId==="main-x-axis");if(!i)return"";const{axisValue:r,axisIndex:l}=i;return ze(t.x_axis.axisLabel.formatter)(r,l)}function io(e,t,i){const r=t.reduce((l,{yAxisIndex:s,name:o})=>(l[o]=s,l),{});return{formatter:function(l){const s=Array.isArray(l)?l:[l];if(s.length===0)return"";const o=s.map(({seriesName:p,marker:f,value:y})=>{if(Array.isArray(y)&&y.length===2&&(y=y[1]),!p)return y;const h=r[p],x=i[h]??i.default;return`
36
+ `};function ss({config:e}){return{trigger:"item",confine:!0,formatter:ls(e)}}function os(e,t){return Object.entries(e).map(([r,l])=>{const s=l.map(T=>T[t]).sort((T,L)=>T-L),d=Pe.quantile(s,.25)??0,o=Pe.quantile(s,.5)??0,c=Pe.quantile(s,.75)??0,p=c-d,f=d-1.5*p,y=c+1.5*p,h=Math.max(s[0],f),x=Math.min(b.last(s)??0,y),C=s.filter(T=>T<h||T>x).map(T=>[r,T]);return{name:r,min:h,q1:d,median:o,q3:c,max:x,outliers:C}})}function ds(e,t,i){const r=t.reduce((l,s)=>{const d=Ae(s,i);return l[s.name]=Te(s,d),l},{});return e.map(l=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:l.name,yAxis:Number(r[l.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return nt(l.template,t,i)},position:"insideEndTop"}}}))}function us({config:e,data:t,variables:i}){const{x_axis:r,y_axis:l,color:s,reference_lines:d}=e,o=b.groupBy(t,r.data_key),c=os(o,l.data_key),p=c.map(y=>y.outliers).flat(),f=Se(r.axisLabel.overflow.on_axis);return{dataset:[{source:c},{source:p}],legend:rs({config:e}),tooltip:ss({config:e}),xAxis:[{type:"category",name:r.name,axisTick:{show:!0,alignWithLabel:!0},axisLabel:{...r.axisLabel,...f,formatter:ze(r.axisLabel.formatter)}}],yAxis:[{name:l.name,axisLine:{show:!0},axisLabel:{formatter:function(y){return G(y).format(l.label_formatter)}}}],series:[{name:"Box",type:"boxplot",itemStyle:{color:s,borderColor:"#2F8CC0",borderWidth:2},emphasis:{disabled:!0},boxWidth:[10,40],datasetIndex:0,encode:{y:Et,x:"name",itemName:["name"],tooltip:Et}},{name:"Outlier",type:"scatter",symbolSize:5,itemStyle:{color:"#2F8CC0"},emphasis:{scale:2},datasetIndex:1},...ds(d,i,t)]}}N.use([A.DataZoomComponent,q.BoxplotChart,A.MarkLineComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function cs({context:e,instance:t}){const{value:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,{width:s,height:d}=e.viewport,o=b.defaults({},i,Vt),c=fe({vizManager:e.vizManager,instance:t}),p=pe(c.triggerManager,bi.id),f=g.useMemo(()=>b.keyBy(l,o.x_axis.data_key),[l,o.x_axis.data_key]),y=g.useCallback(C=>{const T=b.get(f,C.name,{error:"rowData is not found"});p.forEach(L=>{c.runInteraction(L.id,{...C,rowData:T})})},[f,p,c]),h=g.useMemo(()=>({click:y}),[y]),x=g.useMemo(()=>us({config:o,data:l,variables:r}),[o,l,r]);return!i||!s||!d?null:n(ne,{echarts:N,option:x,style:{width:s,height:d},onEvents:h,notMerge:!0,theme:"merico-light"})}function ps({control:e,index:t,remove:i,variableOptions:r}){return u(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.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(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n(a.Select,{label:"Value",required:!0,data:r,sx:{flex:1},...l})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...l})}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(t),sx:{position:"absolute",top:15,right:5},children:n(S.Trash,{size:16})})]},t)}function hs({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),d=t("reference_lines"),o=r.map((f,y)=>({...f,...d[y]})),c=()=>l({name:"",template:"",variable_key:""}),p=g.useMemo(()=>i.map(f=>({label:f.name,value:f.name})),[i]);return u(a.Stack,{children:[o.map((f,y)=>n(ps,{control:e,index:y,remove:s,variableOptions:p})),n(a.Group,{position:"center",mt:"xs",children:n(a.Button,{onClick:c,children:"Add a Reference Line"})})]})}const gs=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},it=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e);g.useEffect(()=>{o(e)},[e]);const c=x=>{o({...d,enabled:x})},p=()=>{s();const{enabled:x,func_content:C}=d,T={enabled:x,func_content:C};o(T),t(T)},f=()=>{s(),o(e)},y=x=>{o(C=>({...C,func_content:x}))},h=()=>{y(ge.func_content)};return u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:d.enabled,onChange:x=>c(x.currentTarget.checked)}),n(gs,{value:d.func_content,onChange:y,disabled:!d.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:p,children:"OK"})]})]})]})})]})}),ms=({control:e,data:t,watch:i})=>(i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.name",control:e,render:({field:r})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.data_key",control:e,render:({field:r})=>n(E,{label:"X Axis Data Field",required:!0,data:t,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:r})=>n(it,{data:t,...r})})]}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:r})=>n(De,{...r})})]})),fs=({control:e,data:t,watch:i})=>(i(["y_axis"]),u(k,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.name",control:e,render:({field:r})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...r})}),n(v.Controller,{name:"y_axis.data_key",control:e,render:({field:r})=>n(E,{label:"Y Axis Data Field",required:!0,data:t,sx:{flex:1},...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:"y_axis.label_formatter",control:e,render:({field:r})=>n(he,{...r})})]})]}));function bs({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,{variables:l}=e,s=g.useMemo(()=>b.defaults({},t,Vt),[t]),{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]),c(["x_axis","y_axis","reference_lines","color"]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,t),[y,t]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(ms,{control:d,data:r,watch:c})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(fs,{control:d,data:r,watch:c})}),n(a.Tabs.Panel,{value:"Style",children:u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"color",control:d,render:({field:x})=>n(K,{...x})})]})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(hs,{variables:l,control:d,watch:c})})]})]})})}function ys(e){return b.omit(e,"variables")}function vs(e){const{label_formatter:t=J,...i}=e.y_axis;return{...e,y_axis:{...i,label_formatter:t}}}function xs(e){const t={rotate:0,formatter:{...ge}},{axisLabel:i=t,...r}=e.x_axis;return{...e,x_axis:{...r,axisLabel:i}}}function Cs(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function ws(e){delete e.config;const{x_axis:t,tooltip:i}=e.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:i}}}};return b.defaultsDeep(r,e)}class _s extends j{constructor(){super(...arguments);D(this,"VERSION",6)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,(i,{panelModel:r})=>{const{config:l}=i;return(l.variables||[]).forEach(d=>{r.variables.find(o=>o.name===d.name)||r.addVariable(d)}),{...i,version:2,config:ys(l)}}),this.version(3,i=>{const{config:r}=i;return{...i,version:3,config:vs(r)}}),this.version(4,i=>{const{config:r}=i;return{...i,version:4,config:xs(r)}}),this.version(5,i=>{const{config:r}=i;return{...i,version:5,config:Cs(r)}}),this.version(6,i=>{const{config:r}=i;return{...i,version:6,config:ws(r)}})}}const Ss={displayName:"Boxplot Chart",displayGroup:"ECharts-based charts",migrator:new _s,name:"boxplot",viewRender:cs,configRender:bs,createConfig(){return{version:6,config:b.cloneDeep(Vt)}},triggers:[bi]},Ci={id:"builtin:button:click-button",displayName:"Click Button",nameRender:Ds,configRender:Ts,payload:[]};function Ts(e){return n(k,{})}function Ds(e){return n(a.Text,{children:"Click this button"})}const Pt={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},ks={left:"flex-start",center:"center",right:"flex-end"},Is={top:"flex-start",center:"center",bottom:"flex-end"},Ms=_.observer(({context:e,instance:t})=>{const i=fe({vizManager:e.vizManager,instance:t}),r=pe(i.triggerManager,Ci.id),l=M(),{value:s}=V(e.instanceData,"config"),d=g.useMemo(()=>b.defaultsDeep({},s,Pt),[s]),{content:o,horizontal_align:c,vertical_align:p,...f}=d,{width:y,height:h}=e.viewport,x={filters:l.filters.values,context:l.context.current},C=()=>{r.forEach(T=>{i.runInteraction(T.id,{})})};return n(a.Center,{sx:{width:y,height:h,justifyContent:ks[c],alignItems:Is[p]},children:n(a.Button,{...f,onClick:C,children:b.template(o)(x)})})}),As=({value:e,onChange:t,label:i})=>{const r=a.useMantineTheme(),l=g.useCallback(d=>()=>t(d),[t]),s=d=>e===d;return u(a.Stack,{spacing:2,children:[n(a.Text,{size:14,sx:{fontWeight:500},children:i}),n(a.Group,{position:"left",spacing:"xs",children:Object.keys(r.colors).map(d=>{const o=r.colors[d][6];return n(a.ColorSwatch,{color:o,onClick:l(d),radius:4,size:26,sx:{cursor:"pointer"},children:s(d)&&n(a.CheckIcon,{width:10,color:"white"})},d)})})]})},zs=a.MANTINE_SIZES.map(e=>({label:e.toUpperCase(),value:e})),Vs=({label:e,value:t,onChange:i})=>n(a.Select,{data:zs,label:e,value:t,onChange:i}),Ls=[{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}],Es=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Ps=[{label:"Top",value:"top"},{label:"Center",value:"center"},{label:"Bottom",value:"bottom"}];function Bs({context:e}){const{value:t,set:i}=V(e.instanceData,"config");e.data;const r=g.useMemo(()=>b.defaultsDeep({},t,Pt),[t]),l=r;g.useEffect(()=>{!b.isEqual(r,l)&&(console.log("config malformed, resetting to defaults",r,l),i(l))},[r,l]);const{control:s,handleSubmit:d,watch:o,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,r),[f,r]);return o(["content","variant","color","size","compact","horizontal_align","vertical_align"]),u("form",{onSubmit:d(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Stack,{children:[n(v.Controller,{control:s,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"}),u(a.SimpleGrid,{cols:2,children:[n(v.Controller,{control:s,name:"variant",render:({field:h})=>n(a.Select,{label:"Variant",data:Ls,...h})}),n(v.Controller,{control:s,name:"color",render:({field:h})=>n(As,{label:"Theme",...h})})]}),u(a.SimpleGrid,{cols:2,children:[n(v.Controller,{control:s,name:"size",render:({field:h})=>n(Vs,{label:"Size",...h})}),n(v.Controller,{control:s,name:"compact",render:({field:h})=>n(a.Checkbox,{label:"Compact",checked:h.value,onChange:x=>h.onChange(x.currentTarget.checked),mt:26})})]}),u(a.SimpleGrid,{cols:2,children:[n(v.Controller,{control:s,name:"horizontal_align",render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:Es,...h})}),n(v.Controller,{control:s,name:"vertical_align",render:({field:h})=>n(a.Select,{label:"Vertical Alignment",data:Ps,...h})})]})]})]})}class Os extends j{constructor(){super(...arguments);D(this,"VERSION",2)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{horizontal_align:r="left",vertical_align:l="center",...s}=i.config;return{...i,version:2,config:{...s,horizontal_align:r,vertical_align:l}}})}}const $s={displayName:"Button",displayGroup:"Others",migrator:new Os,name:"button",viewRender:Ms,configRender:Bs,createConfig(){return{version:2,config:b.cloneDeep(Pt)}},triggers:[Ci]},Bt={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:Gs,configRender:Ns,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 Ns(e){return n(k,{})}function Gs(e){return n(a.Text,{children:"Click chart's series"})}const Ve={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1},Ot={regressions:[],series:[],stats:{templates:{bottom:"",top:""}},x_axis:{axisLabel:{rotate:0,formatter:{...ge},overflow:ve}},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:J}],reference_lines:[],reference_areas:[],dataZoom:Ve};function $t(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 qs(e){const t=e.y_axes.some(l=>!!l.name);let i=10;t&&(i+=20),e.dataZoom.x_axis_slider&&(i+=20);let r=5;return e.x_axis_name&&(r+=15),e.series.some(l=>!l.hide_in_legend)&&(r+=20),{top:i,bottom:r}}function Fs(e){return e!=="line"?{}:{itemStyle:{opacity:0}}}function js(e){switch(e){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function Ws(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(i=>!i.hide_in_legend).map(({name:i,type:r})=>({name:i,icon:js(r),...Fs(r)})),t}function wi(e,t){switch(e.config.method){case"linear":return[...Ce.regressionLinear()(t)];case"exponential":return[...Ce.regressionExp()(t)];case"logarithmic":return[...Ce.regressionLog()(t)];case"polynomial":return[...Ce.regressionPoly().order(e.config.order)(t)];default:return[]}}function Us(e,t,i,r){const{transform:l,plot:s}=e,d={...s,name:t,data:wi(l,r),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return i&&(d.custom={type:"regression-line",targetSeries:i}),{series:[d],xaxes:[]}}function Rs({regressions:e=[],x_axis_data_key:t},i){const r=[];if(i.length===0)return{regressionSeries:r};function l(s,d,o,c){const{series:p}=Us(s,d,o,c);r.push(...p)}return e.forEach(s=>{const{name:d,group_by_key:o}=s;if(!o||o===t){const p=i.map((f,y)=>[y,Number(f[s.y_axis_data_key])]);l(s,d,"",p);return}const c=b.groupBy(i,o);Object.entries(c).forEach(([p,f])=>{const y=f.map((x,C)=>[C,Number(x[s.y_axis_data_key])]),h=`${d} (${p})`;l(s,h,p,y)})}),{regressionSeries:r}}function Qs(e,t){return e.map(i=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:i.color},data:[[{yAxis:t[i.y_keys.upper]},{yAxis:t[i.y_keys.lower]}]],silent:!0}}))}function Ys(e,t,i,r){return e.map(l=>{const s=l.orientation==="horizontal",d=s?"yAxis":"xAxis",o=s?"insideEndTop":"end";return{name:l.name,type:"line",hide_in_legend:!l.show_in_legend,yAxisIndex:l.yAxisIndex,data:[],lineStyle:l.lineStyle,markLine:{data:[{name:l.name,[d]:Number(i[l.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?nt(l.template,t,r):""},position:o}}}})}function Xs({type:e,...t},i,r,l){if(!e)return 10;if(e==="static"){const{size:o}=t;return o}const{func_content:s}=t,d=b.keyBy(i,r);return(o,c)=>{let p;c.name?p=d[c.name]:p=i[c.dataIndex];try{return new Function(`return ${s}`)()({rowData:p,params:c,variables:l},{lodash:b,interpolate:Ye.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function Nt(e,t,i){return e.map(r=>[r[t],r[i]])}function Zs(e,t,i,r){const l=Nt(t,i,r);return b.unionBy(l,e,0)}function Ks({dataTemplate:e,data:t,x_axis_data_key:i,y_axis_data_key:r,valueTypedXAxis:l}){return l?Zs(e,t,i,r):t.map(s=>s[r])}function Js({dataTemplate:e,data:t,aggregation_on_value:i,x_axis_data_key:r,y_axis_data_key:l,valueTypedXAxis:s}){if(!i||i.type==="none")return Ks({dataTemplate:e,data:t,x_axis_data_key:r,y_axis_data_key:l,valueTypedXAxis:s});const d=Nt(t,r,l),o=b.groupBy(d,"0");return Object.entries(o).map(([p,f])=>{const y=Ne(f,"1",i);return[p,y]})}function Hs({group_by_key:e,data:t,x_axis_data_key:i,y_axis_data_key:r}){const l=b.groupBy(t,e);return Object.entries(l).forEach(([s,d])=>{l[s]=Nt(d,i,r)}),l}function eo({x_axis_data_key:e},{y_axis_data_key:t,yAxisIndex:i,label_position:r,name:l,group_by_key:s,aggregation_on_value:d,stack:o,color:c,display_name_on_line:p,symbolSize:f,hide_in_legend:y,...h},x,C,T,L,X){const de={label:{show:!!r,position:r,formatter:X[i??"default"]},name:l,xAxisId:"main-x-axis",yAxisIndex:i,stack:o,color:c,symbolSize:Xs(f,T,e,L),hide_in_legend:y,labelLayout:{hideOverlap:!0},...h};if(p&&(de.endLabel={show:!0,formatter:l,offset:[-12,12],align:"right"}),!s||s===e)return de.data=Js({dataTemplate:x,data:T,aggregation_on_value:d,x_axis_data_key:e,y_axis_data_key:t,valueTypedXAxis:C}),de;const We=Hs({group_by_key:s,data:T,x_axis_data_key:e,y_axis_data_key:t});return Object.entries(We).map(([H,Ue])=>{const ae=b.cloneDeep(de);return ae.name=H,ae.color=void 0,ae.data=Ue,ae})}function to(e,t,i,r,l,s,d){const o=t.map(p=>[p,0]);return e.series.map(p=>eo(e,p,o,i,r,d,l)).flat().concat(Ys(e.reference_lines,s,d,r)).concat(Qs(e.reference_areas,d))}function no(e,t){const i=e.find(s=>s.axisDim==="x"&&s.axisId==="main-x-axis");if(!i)return"";const{axisValue:r,axisIndex:l}=i;return ze(t.x_axis.axisLabel.formatter)(r,l)}function io(e,t,i){const r=t.reduce((l,{yAxisIndex:s,name:d})=>(l[d]=s,l),{});return{formatter:function(l){const s=Array.isArray(l)?l:[l];if(s.length===0)return"";const d=s.map(({seriesName:p,marker:f,value:y})=>{if(Array.isArray(y)&&y.length===2&&(y=y[1]),!p)return y;const h=r[p],x=i[h]??i.default;return`
37
37
  <tr>
38
38
  <td>${f}</td>
39
39
  <th style="text-align: right; padding: 0 1em;">${p}</th>
40
40
  <td style="text-align: left; padding: 0 1em;">${x({value:y})}</td>
41
41
  </tr>
42
- `}),d=_e(e.x_axis.axisLabel.overflow.in_tooltip),c=no(s,e);return`
42
+ `}),o=_e(e.x_axis.axisLabel.overflow.in_tooltip),c=no(s,e);return`
43
43
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
44
- <div style="${d}">${c}</div>
44
+ <div style="${o}">${c}</div>
45
45
  </div>
46
46
  <table style="width: auto">
47
47
  <tbody>
48
- ${o.join("")}
48
+ ${d.join("")}
49
49
  </tbody>
50
50
  </table>
51
- `}}}function ro(e){return e.y_axes.reduce((i,{label_formatter:r},l)=>(i[l]=function(o){let d=o;if(typeof o=="object"&&(Array.isArray(o.value)&&o.value.length===2?d=o.value[1]:d=o.value),!r)return d;try{return G(d).format(r)}catch(c){return console.error(c),d}},i),{default:({value:i})=>i})}function ao(e,t){const i={};return t.map(r=>{const l=Ae(r,e);i[r.name]=Te(r,l)}),i}function lo(e,t){const i=t.every(o=>!Number.isNaN(Number(o))),{overflow:r,...l}=e.x_axis.axisLabel,s=Se(r.on_axis);return[{data:t,name:e.x_axis_name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:i?"value":"category",axisLabel:{...l,...s,formatter:ze(l.formatter)}}]}function so(e,t){return e.y_axes.map(({nameAlignment:i,min:r,max:l,...s},o)=>{let d=s.position;return d||(d=o>0?"right":"left"),{...s,min:r||void 0,max:l||void 0,position:d,axisLabel:{show:!0,formatter:t[o]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:i},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}const oo={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 uo(e,t,i){const r=ao(t,i),l=ro(e),s=b.uniq(t.map(f=>f[e.x_axis_data_key])),o=s.every(f=>!Number.isNaN(Number(f))),d=to(e,s,o,t,l,i,r),{regressionSeries:c}=Rs(e,t),p={xAxis:lo(e,s),yAxis:so(e,l),series:[...d,...c],tooltip:io(e,d,l),grid:qs(e),legend:Ws(d),dataZoom:$t(e.dataZoom)};return b.defaultsDeep({},p,oo)}function _i(e){const t=e.getModel(),i=t.getSeries().map(r=>{if(!r.option.custom)return r.option;const l=t.getColorFromPalette(r.option.custom.targetSeries,null);return r.option.color=l,r.option});e.setOption({...e.getOption(),series:i})}N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer,A.MarkLineComponent,A.MarkAreaComponent]);function Si(e){return e.trim().length>0}function co({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const o=g.useMemo(()=>b.keyBy(t,e.x_axis_data_key),[t,e.x_axis_data_key]),d=pe(l.triggerManager,Bt.id),c=g.useCallback(x=>{const C=b.get(o,x.name,{error:"rowData is not found"});d.forEach(T=>{l.runInteraction(T.id,{...x,rowData:C})})},[o,d,l]),p=g.useMemo(()=>uo(e,t,s),[e,t]),f=g.useRef(),y=g.useMemo(()=>({click:c}),[c]),h=x=>{f.current=x,_i(x)};return g.useEffect(()=>{f.current&&_i(f.current)},[p]),!i||!r?null:n(ne,{echarts:N,option:p,style:{width:i,height:r},onEvents:y,onChartReady:h,notMerge:!0,theme:"merico-light"})}function po({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,Ot),[r]),o=e.data,{width:d,height:c}=e.viewport,{ref:p,height:f}=U.useElementSize(),{ref:y,height:h}=U.useElementSize(),x=g.useMemo(()=>{const{stats:{templates:T}}=s;return{top:Ge(T.top,l,o),bottom:Ge(T.bottom,l,o)}},[s,o]),C=Math.max(0,c-f-h);return u(a.Box,{children:[n(a.Text,{ref:p,align:"left",size:"xs",pl:"sm",sx:{display:Si(s.stats.templates.top)?"block":"none"},children:Object.values(x.top).map((T,L)=>n(g.Fragment,{children:T},L))}),n(co,{variables:l,width:d,height:C,data:o,conf:s,interactionManager:i}),n(a.Text,{ref:y,align:"left",size:"xs",pl:"sm",sx:{display:Si(s.stats.templates.bottom)?"block":"none"},children:Object.values(x.bottom).map((T,L)=>n(g.Fragment,{children:T},L))})]})}const Gt=g.forwardRef(({value:e,onChange:t},i)=>{const r=l=>s=>{t({...e,[l]:s})};return u(a.Stack,{children:[n(a.Divider,{variant:"dashed",label:"Scroll to Zoom",labelPosition:"center"}),u(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on X Axis",checked:e.x_axis_scroll,onChange:l=>r("x_axis_scroll")(l.currentTarget.checked)})}),n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on Y Axis",checked:e.y_axis_scroll,onChange:l=>r("y_axis_scroll")(l.currentTarget.checked)})})]}),n(a.Divider,{variant:"dashed",label:"Slider for Zooming",labelPosition:"center"}),u(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Slider for X Axis",checked:e.x_axis_slider,onChange:l=>r("x_axis_slider")(l.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:l=>r("y_axis_slider")(l.currentTarget.checked)})})})]})]})}),ho=[{label:"Rectangle",value:"rectangle"}],go=[{label:"Horizontal",value:"horizontal"}];function mo({control:e,index:t,remove:i,variableOptions:r}){return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:l})=>n(a.TextInput,{label:"Color",required:!0,sx:{flex:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:l})=>n(a.Select,{label:"Type",required:!0,data:ho,sx:{flex:1},...l})}),n(v.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:l})=>n(a.Select,{label:"Direction",required:!0,data:go,sx:{flex:1},...l})})]}),n(a.Divider,{variant:"dashed",label:"Data",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:l})=>n(a.Select,{label:"Upper Boundary",required:!0,data:r,sx:{flex:1},...l})}),n(v.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:l})=>n(a.Select,{label:"Lower Boundary",required:!0,data:r,sx:{flex:1},...l})})]}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Area"})]},t)}function fo({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_areas"}),o=t("reference_areas"),d=r.map((f,y)=>({...f,...o[y]})),c=()=>l({name:"",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),p=g.useMemo(()=>i.map(f=>({label:f.name,value:f.name})),[i]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"6px 0px 0px"}},children:[u(a.Tabs.List,{children:[d.map((f,y)=>n(a.Tabs.Tab,{value:y.toString(),children:y+1},y)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((f,y)=>n(a.Tabs.Panel,{value:y.toString(),children:n(mo,{control:e,index:y,remove:s,variableOptions:p})},y))]})}const bo=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],yo=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function vo({control:e,index:t,remove:i,watch:r,variableOptions:l,yAxisOptions:s}){const o=r(`reference_lines.${t}.orientation`);return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:d})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...d})}),n(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:d})=>n(a.Select,{label:"Value",required:!0,data:l,sx:{flex:1},...d})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:d})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...d})}),u(a.Group,{grow:!0,children:[u(a.Stack,{children:[n(v.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:d})=>n(a.Select,{label:"Orientation",data:yo,required:!0,sx:{flex:1},...d})}),o==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),o==="horizontal"&&n(v.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:d,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...p,value:(d==null?void 0:d.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:d})=>n(a.Select,{label:"Line Type",data:bo,sx:{flexGrow:1},...d})}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:d})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...d})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:d})=>n(K,{...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:d})=>n(a.Checkbox,{label:"Show in legend",checked:d.value,onChange:c=>d.onChange(c.currentTarget.checked)})}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function xo({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),o=t("reference_lines"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>{l({name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,yAxisIndex:0})},p=g.useMemo(()=>i.map(h=>({label:h.name,value:h.name})),[i]),f=t("y_axes"),y=g.useMemo(()=>f.map(({name:h},x)=>({label:h,value:x.toString()})),[f]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:x.toString(),children:x+1},x)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:x.toString(),children:n(vo,{control:e,index:x,remove:s,watch:t,variableOptions:p,yAxisOptions:y})},x))]})}const Co=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}],wo=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function _o({control:e,regressionItem:t,index:i,remove:r,yAxisOptions:l,data:s}){const o=t.transform.config.method;return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:`regressions.${i}.name`,control:e,render:({field:d})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...d})}),n(v.Controller,{name:`regressions.${i}.group_by_key`,control:e,render:({field:d})=>n(E,{label:"Split into multiple regression lines by this key...",data:s,clearable:!0,sx:{flex:1},...d})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`regressions.${i}.y_axis_data_key`,control:e,render:({field:d})=>n(E,{label:"Value Field",required:!0,data:s,sx:{flex:1},...d})}),n(v.Controller,{name:`regressions.${i}.plot.yAxisIndex`,control:e,render:({field:{value:d,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:l,disabled:l.length===0,...p,value:(d==null?void 0:d.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`regressions.${i}.transform.config.method`,control:e,render:({field:d})=>n(a.Select,{label:"Method",data:Co,sx:{flex:1},...d})}),o==="polynomial"&&n(v.Controller,{name:`regressions.${i}.transform.config.order`,control:e,render:({field:d})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...d})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Line Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`regressions.${i}.plot.lineStyle.type`,control:e,render:({field:d})=>n(a.Select,{label:"Line Type",data:wo,sx:{flexGrow:1},...d})}),n(v.Controller,{name:`regressions.${i}.plot.lineStyle.width`,control:e,render:({field:d})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...d})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`regressions.${i}.plot.color`,control:e,render:({field:d})=>n(K,{...d})})]}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Regression Line"})]},i)}function So({control:e,watch:t,data:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"regressions"}),o=t("regressions"),d=r.map((y,h)=>({...y,...o[h]})),c=t("y_axes"),p=g.useMemo(()=>c.map(({name:y},h)=>({label:y,value:h.toString()})),[c]),f=()=>l({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666",lineStyle:{type:"solid",width:1}}});return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((y,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},h)),n(a.Tabs.Tab,{onClick:f,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((y,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(_o,{regressionItem:y,control:e,index:h,remove:s,yAxisOptions:p,data:i},h)},h))]})}const qt={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
52
- `)}},To=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function Do({control:e,index:t,seriesItem:i}){const r=!!i.barWidth.trim();return u(k,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.stack`,control:e,render:({field:l})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barGap`,control:e,render:({field:l})=>n(a.Select,{label:"Bar Gap",data:To,sx:{flexGrow:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:r,sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:r,sx:{flexGrow:1},...l})})]})]})}const ko=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Io=({value:e,onChange:t,data:i})=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e),c=()=>{s();const{type:h,func_content:x}=o,C={type:h,func_content:x};d(C),t(C)},p=()=>{s(),d(e)},f=h=>{d(x=>({...x,func_content:h}))},y=()=>{f(qt.dynamic.func_content)};return u(k,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(ko,{value:o.func_content,onChange:f}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Mo=({value:e,onChange:t,data:i})=>e.type!=="dynamic"?null:n(Io,{value:e,onChange:t,data:i}),Ao=({value:e,onChange:t})=>{if(e.type!=="static")return null;const i=r=>{t({...e,size:r})};return n(k,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:i})})},zo=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],Ti=g.forwardRef(({label:e="Size",value:t,onChange:i,data:r},l)=>{const s=o=>{i({...qt[o]})};return u(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:l,label:e,data:zo,value:t.type,onChange:s,sx:{flexGrow:1}}),n(Ao,{value:t,onChange:i}),n(Mo,{value:t,onChange:i,data:r})]})}),Vo=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}],Lo=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Eo({control:e,index:t,seriesItem:i,data:r}){const l=i.showSymbol;return u(k,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Line Settings",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:s})=>n(a.Select,{label:"Line Type",data:Lo,sx:{flexGrow:1},...s})}),n(v.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...s})})]}),u(a.Group,{grow:!0,align:"center",children:[n(v.Controller,{name:`series.${t}.step`,control:e,render:({field:s})=>n(a.Select,{label:"Step",data:Vo,sx:{flexGrow:1,maxWidth:"48%"},...s,value:String(s.value),onChange:o=>{const d=o==="false"?!1:o;s.onChange(d)}})}),u(a.Stack,{children:[n(v.Controller,{name:`series.${t}.smooth`,control:e,render:({field:s})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Smooth Line",checked:s.value,onChange:o=>s.onChange(o.currentTarget.checked)})})}),n(v.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:s})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Display Name on Line",checked:s.value??!1,onChange:o=>s.onChange(o.currentTarget.checked)})})})]})]}),u(a.Stack,{children:[n(v.Controller,{name:`series.${t}.showSymbol`,control:e,render:({field:s})=>n(a.Box,{mt:10,mb:-10,sx:{flexGrow:1},children:n(a.Switch,{label:"Show Symbol on Line",checked:s.value,onChange:o=>s.onChange(o.currentTarget.checked)})})}),l&&n(v.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:s})=>n(Ti,{label:"Symbol Size",data:r,...s})})]})]})}function Po({control:e,index:t,data:i}){return n(v.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:r})=>n(Ti,{label:"Size",data:i,...r})})}const Bo=[{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 Oo({control:e,index:t,remove:i,seriesItem:r,yAxisOptions:l,data:s}){const o=r.type;return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[n(a.Stack,{children:n(v.Controller,{name:`series.${t}.type`,control:e,render:({field:d})=>n(a.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"}],...d})})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.name`,control:e,render:({field:d})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...d})}),n(v.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:d,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:l,disabled:l.length===0,...p,value:(d==null?void 0:d.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:d})=>n(E,{label:"Value Field",required:!0,data:s,sx:{flex:1},...d})}),n(v.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:d})=>n(et,{label:"Aggregation on Value",value:d.value??$e,onChange:d.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(v.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:d})=>n(E,{label:"Split into multiple series by this key...",data:s,clearable:!0,sx:{flex:1},...d})})}),o==="line"&&n(Eo,{index:t,control:e,seriesItem:r,data:s}),o==="bar"&&n(Do,{index:t,control:e,seriesItem:r}),o==="scatter"&&n(Po,{index:t,control:e,data:s}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.label_position`,control:e,render:({field:d})=>n(a.Select,{label:"Label Position",data:Bo,...d})}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`series.${t}.color`,control:e,render:({field:d})=>n(K,{...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:d})=>n(a.Checkbox,{label:"Hide in legend",checked:d.value,onChange:c=>d.onChange(c.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function $o({control:e,watch:t,data:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"series"}),o=t("series"),d=r.map((y,h)=>({...y,...o[h]})),c=()=>{const y={type:"bar",name:U.randomId(),showSymbol:!1,symbolSize:qt.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:""};l(y)},p=t("y_axes"),f=g.useMemo(()=>p.map(({name:y},h)=>({label:y,value:h.toString()})),[p]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((y,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},y.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((y,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(Oo,{control:e,index:h,remove:s,seriesItem:y,yAxisOptions:f,data:i},y.id)},y.id))]})}function No({control:e,watch:t}){return t("stats"),n(a.Stack,{children:u(a.Stack,{spacing:0,children:[n(v.Controller,{name:"stats.templates.top",control:e,render:({field:i})=>n(Oe,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...i})}),n(v.Controller,{name:"stats.templates.bottom",control:e,render:({field:i})=>n(Oe,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...i})})]})})}function Go({data:e,control:t,watch:i}){return i(["x_axis_data_key","x_axis_name","x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis_data_key",control:t,render:({field:r})=>n(E,{label:"X Axis Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis_name",control:t,render:({field:r})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(it,{data:e,...r})})]}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})})]})}const qo=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],Fo=[{label:"left",value:"left"},{label:"right",value:"right"}];function jo({control:e,index:t,remove:i}){return u(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),n(v.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:qo,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:r})=>n(a.Select,{label:"Position",required:!0,data:Fo,sx:{flex:1},...r})})}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:r})=>n(he,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:r})=>n(a.TextInput,{label:"Min",...r})}),n(v.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:r})=>n(a.TextInput,{label:"Max",...r})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`y_axes.${t}.show`,control:e,render:({field:r})=>n(a.Checkbox,{label:"Visible",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),disabled:t===0,children:"Delete this YAxis"})]})}function Wo({control:e,watch:t}){const{fields:i,append:r,remove:l}=v.useFieldArray({control:e,name:"y_axes"}),s=t("y_axes"),o=i.map((c,p)=>({...c,...s[p]})),d=()=>r({name:"",label_formatter:J});return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((c,p)=>n(a.Tabs.Tab,{value:p.toString(),children:p+1},p)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((c,p)=>n(a.Tabs.Panel,{value:p.toString(),children:n(jo,{control:e,index:p,remove:l})},p))]})}function Uo({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,s=g.useMemo(()=>b.defaultsDeep({},t,Ot),[t]),{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,s),[y,s]);return c(["dataZoom"]),n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Go,{control:o,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(Wo,{control:o,watch:c})}),n(a.Tabs.Panel,{value:"Series",children:n($o,{control:o,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Regression Lines",children:n(So,{control:o,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Stats",children:n(No,{control:o,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(xo,{variables:r,control:o,watch:c})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(fo,{variables:r,control:o,watch:c})}),n(a.Tabs.Panel,{value:"Zooming",children:n(v.Controller,{name:"dataZoom",control:o,render:({field:x})=>n(Gt,{...x})})})]})]})})}function Ro(e){const t=b.cloneDeep(b.omit(e,"variables"));return t.stats=b.omit(t.stats,"variables"),t}function Qo(e){const{rotate:t,formatter:i=ge}=e.x_axis.axisLabel;return{...e,x_axis:{...e.x_axis,axisLabel:{rotate:t,formatter:i}}}}function Yo(e){const{dataZoom:t=Ve,...i}=e;return{...i,dataZoom:t}}function Xo(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function Zo(e){const t=e.reference_lines.map(i=>{const{lineStyle:r={type:"dashed",width:1,color:be.random().css()},show_in_legend:l=!1}=i;return{...i,lineStyle:r,show_in_legend:l}});return{...e,reference_lines:t}}function Ko(e){const t=e.reference_lines.map(i=>{const{yAxisIndex:r=0}=i;return{...i,yAxisIndex:r}});return{...e,reference_lines:t}}function Jo(e){const t=e.series.map(i=>{const{aggregation_on_group:r=$e}=i;return{...i,aggregation_on_group:r}});return{...e,series:t}}function Ho(e){const t=e.series.map(i=>{const{aggregation_on_value:r=$e}=i;return{...i,aggregation_on_value:r}});return{...e,series:t}}function ed(e){delete e.config;const{x_axis:t,tooltip:i}=e.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:i}}}};return b.defaultsDeep(r,e)}function td(e){const{series:t,...i}=e;return{...i,series:t.map(r=>{const{barMinWidth:l,barWidth:s,barMaxWidth:o}=r;return l?{...r,barMinWidth:l,barWidth:"",barMaxWidth:o??s}:{...r,barMinWidth:"",barWidth:s,barMaxWidth:""}})}}function nd(e){const{y_axes:t,...i}=e;return{...i,y_axes:t.map(r=>{const{min:l="",max:s=""}=r;return{...r,min:l,max:s}})}}function id(e){const{y_axes:t,...i}=e;return{...i,y_axes:t.map(r=>{const{nameAlignment:l="left"}=r;return{...r,nameAlignment:l}})}}function rd(e){const{y_axes:t,...i}=e;return{...i,y_axes:t.map(r=>{const{show:l=!0}=r;return{...r,show:l}})}}function ad(e){const{regressions:t,...i}=e;return{...i,regressions:t.map(r=>{const{group_by_key:l=""}=r;return{...r,group_by_key:l}})}}class ld extends j{constructor(){super(...arguments);D(this,"VERSION",15)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,(i,{panelModel:r})=>{const{config:l}=i;return(l.variables||[]).forEach(d=>{r.variables.find(c=>c.name===d.name)||r.addVariable(d)}),(b.get(l,"stats.variables")||[]).forEach(d=>{r.variables.find(c=>c.name===d.name)||r.addVariable(d)}),{...i,version:2,config:Ro(l)}}),this.version(3,i=>({...i,version:3,config:Qo(i.config)})),this.version(4,i=>({...i,version:4,config:Yo(i.config)})),this.version(5,i=>({...i,version:5,config:Xo(i.config)})),this.version(6,i=>({...i,version:6,config:Zo(i.config)})),this.version(7,i=>({...i,version:7,config:Ko(i.config)})),this.version(8,i=>({...i,version:8,config:Jo(i.config)})),this.version(9,i=>({...i,version:9,config:Ho(i.config)})),this.version(10,i=>({...i,version:10,config:ed(i.config)})),this.version(11,i=>({...i,version:11,config:td(i.config)})),this.version(12,i=>({...i,version:12,config:nd(i.config)})),this.version(13,i=>({...i,version:13,config:id(i.config)})),this.version(14,i=>({...i,version:14,config:rd(i.config)})),this.version(15,i=>({...i,version:15,config:ad(i.config)}))}}const sd={displayName:"Cartesian Chart",displayGroup:"ECharts-based charts",migrator:new ld,name:"cartesian",viewRender:po,configRender:Uo,createConfig(){return{version:15,config:b.cloneDeep(Ot)}},triggers:[Bt]};function od(e){if(e.enable_value)return e.value}function dd(e){if(e.enable_value)return e.value}function ud(e){const t=e.axisLabel.overflow.on_axis.width,i=e.axisLabel.position,r={top:5,left:5,right:5,bottom:5};return e.orient==="vertical"&&b.get(r,i)&&i===e.funnelAlign&&b.set(r,i,t),r}function cd(e,t){return e.series.map(i=>{const{level_name_data_key:r,level_value_data_key:l,axisLabel:s,min:o,max:d,funnelAlign:c,orient:p,...f}=i,y=t.map(x=>({name:x[r],value:x[l]})),h=Se(s.overflow.on_axis);return{type:"funnel",...ud(i),min:od(o),max:dd(d),minSize:o.size,maxSize:d.size,...f,label:{show:!0,position:s.position,...h},orient:p,funnelAlign:p==="horizontal"?"center":c,data:y}})}function pd({conf:e,params:t,max:i}){const{name:r,value:l}=t.data,s=G(l/i).format({output:"percent",mantissa:2,trimMantissa:!0});return[{label:`${t.marker} ${r}`,value:`${l} (${s})`,style:{label:"",value:""}}]}function hd(e,t){var l;const i=e.series[0].level_value_data_key,r=(l=b.maxBy(t,i))==null?void 0:l[i];return s=>{const d=pd({conf:e,params:s,max:r}).map(p=>`
51
+ `}}}function ro(e){return e.y_axes.reduce((i,{label_formatter:r},l)=>(i[l]=function(d){let o=d;if(typeof d=="object"&&(Array.isArray(d.value)&&d.value.length===2?o=d.value[1]:o=d.value),!r)return o;try{return G(o).format(r)}catch(c){return console.error(c),o}},i),{default:({value:i})=>i})}function ao(e,t){const i={};return t.map(r=>{const l=Ae(r,e);i[r.name]=Te(r,l)}),i}function lo(e,t){const i=t.every(d=>!Number.isNaN(Number(d))),{overflow:r,...l}=e.x_axis.axisLabel,s=Se(r.on_axis);return[{data:t,name:e.x_axis_name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:i?"value":"category",axisLabel:{...l,...s,formatter:ze(l.formatter)}}]}function so(e,t){return e.y_axes.map(({nameAlignment:i,min:r,max:l,...s},d)=>{let o=s.position;return o||(o=d>0?"right":"left"),{...s,min:r||void 0,max:l||void 0,position:o,axisLabel:{show:!0,formatter:t[d]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:i},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}const oo={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 uo(e,t,i){const r=ao(t,i),l=ro(e),s=b.uniq(t.map(f=>f[e.x_axis_data_key])),d=s.every(f=>!Number.isNaN(Number(f))),o=to(e,s,d,t,l,i,r),{regressionSeries:c}=Rs(e,t),p={xAxis:lo(e,s),yAxis:so(e,l),series:[...o,...c],tooltip:io(e,o,l),grid:qs(e),legend:Ws(o),dataZoom:$t(e.dataZoom)};return b.defaultsDeep({},p,oo)}function _i(e){const t=e.getModel(),i=t.getSeries().map(r=>{if(!r.option.custom)return r.option;const l=t.getColorFromPalette(r.option.custom.targetSeries,null);return r.option.color=l,r.option});e.setOption({...e.getOption(),series:i})}N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer,A.MarkLineComponent,A.MarkAreaComponent]);function Si(e){return e.trim().length>0}function co({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const d=g.useMemo(()=>b.keyBy(t,e.x_axis_data_key),[t,e.x_axis_data_key]),o=pe(l.triggerManager,Bt.id),c=g.useCallback(x=>{const C=b.get(d,x.name,{error:"rowData is not found"});o.forEach(T=>{l.runInteraction(T.id,{...x,rowData:C})})},[d,o,l]),p=g.useMemo(()=>uo(e,t,s),[e,t]),f=g.useRef(),y=g.useMemo(()=>({click:c}),[c]),h=x=>{f.current=x,_i(x)};return g.useEffect(()=>{f.current&&_i(f.current)},[p]),!i||!r?null:n(ne,{echarts:N,option:p,style:{width:i,height:r},onEvents:y,onChartReady:h,notMerge:!0,theme:"merico-light"})}function po({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,Ot),[r]),d=e.data,{width:o,height:c}=e.viewport,{ref:p,height:f}=U.useElementSize(),{ref:y,height:h}=U.useElementSize(),x=g.useMemo(()=>{const{stats:{templates:T}}=s;return{top:Ge(T.top,l,d),bottom:Ge(T.bottom,l,d)}},[s,d]),C=Math.max(0,c-f-h);return u(a.Box,{children:[n(a.Text,{ref:p,align:"left",size:"xs",pl:"sm",sx:{display:Si(s.stats.templates.top)?"block":"none"},children:Object.values(x.top).map((T,L)=>n(g.Fragment,{children:T},L))}),n(co,{variables:l,width:o,height:C,data:d,conf:s,interactionManager:i}),n(a.Text,{ref:y,align:"left",size:"xs",pl:"sm",sx:{display:Si(s.stats.templates.bottom)?"block":"none"},children:Object.values(x.bottom).map((T,L)=>n(g.Fragment,{children:T},L))})]})}const Gt=g.forwardRef(({value:e,onChange:t},i)=>{const r=l=>s=>{t({...e,[l]:s})};return u(a.Stack,{children:[n(a.Divider,{variant:"dashed",label:"Scroll to Zoom",labelPosition:"center"}),u(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on X Axis",checked:e.x_axis_scroll,onChange:l=>r("x_axis_scroll")(l.currentTarget.checked)})}),n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Enable on Y Axis",checked:e.y_axis_scroll,onChange:l=>r("y_axis_scroll")(l.currentTarget.checked)})})]}),n(a.Divider,{variant:"dashed",label:"Slider for Zooming",labelPosition:"center"}),u(a.Group,{children:[n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Slider for X Axis",checked:e.x_axis_slider,onChange:l=>r("x_axis_slider")(l.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:l=>r("y_axis_slider")(l.currentTarget.checked)})})})]})]})}),ho=[{label:"Rectangle",value:"rectangle"}],go=[{label:"Horizontal",value:"horizontal"}];function mo({control:e,index:t,remove:i,variableOptions:r}){return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:l})=>n(a.TextInput,{label:"Color",required:!0,sx:{flex:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:l})=>n(a.Select,{label:"Type",required:!0,data:ho,sx:{flex:1},...l})}),n(v.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:l})=>n(a.Select,{label:"Direction",required:!0,data:go,sx:{flex:1},...l})})]}),n(a.Divider,{variant:"dashed",label:"Data",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:l})=>n(a.Select,{label:"Upper Boundary",required:!0,data:r,sx:{flex:1},...l})}),n(v.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:l})=>n(a.Select,{label:"Lower Boundary",required:!0,data:r,sx:{flex:1},...l})})]}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Area"})]},t)}function fo({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_areas"}),d=t("reference_areas"),o=r.map((f,y)=>({...f,...d[y]})),c=()=>l({name:"",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),p=g.useMemo(()=>i.map(f=>({label:f.name,value:f.name})),[i]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"6px 0px 0px"}},children:[u(a.Tabs.List,{children:[o.map((f,y)=>n(a.Tabs.Tab,{value:y.toString(),children:y+1},y)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((f,y)=>n(a.Tabs.Panel,{value:y.toString(),children:n(mo,{control:e,index:y,remove:s,variableOptions:p})},y))]})}const bo=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],yo=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function vo({control:e,index:t,remove:i,watch:r,variableOptions:l,yAxisOptions:s}){const d=r(`reference_lines.${t}.orientation`);return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:o})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...o})}),n(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:o})=>n(a.Select,{label:"Value",required:!0,data:l,sx:{flex:1},...o})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:o})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...o})}),u(a.Group,{grow:!0,children:[u(a.Stack,{children:[n(v.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:o})=>n(a.Select,{label:"Orientation",data:yo,required:!0,sx:{flex:1},...o})}),d==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),d==="horizontal"&&n(v.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:o,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...p,value:(o==null?void 0:o.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:o})=>n(a.Select,{label:"Line Type",data:bo,sx:{flexGrow:1},...o})}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...o})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:o})=>n(K,{...o})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:o})=>n(a.Checkbox,{label:"Show in legend",checked:o.value,onChange:c=>o.onChange(c.currentTarget.checked)})}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function xo({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),d=t("reference_lines"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>{l({name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,yAxisIndex:0})},p=g.useMemo(()=>i.map(h=>({label:h.name,value:h.name})),[i]),f=t("y_axes"),y=g.useMemo(()=>f.map(({name:h},x)=>({label:h,value:x.toString()})),[f]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:x.toString(),children:x+1},x)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:x.toString(),children:n(vo,{control:e,index:x,remove:s,watch:t,variableOptions:p,yAxisOptions:y})},x))]})}const Co=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}],wo=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function _o({control:e,regressionItem:t,index:i,remove:r,yAxisOptions:l,data:s}){const d=t.transform.config.method;return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:`regressions.${i}.name`,control:e,render:({field:o})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...o})}),n(v.Controller,{name:`regressions.${i}.group_by_key`,control:e,render:({field:o})=>n(E,{label:"Split into multiple regression lines by this key...",data:s,clearable:!0,sx:{flex:1},...o})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`regressions.${i}.y_axis_data_key`,control:e,render:({field:o})=>n(E,{label:"Value Field",required:!0,data:s,sx:{flex:1},...o})}),n(v.Controller,{name:`regressions.${i}.plot.yAxisIndex`,control:e,render:({field:{value:o,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:l,disabled:l.length===0,...p,value:(o==null?void 0:o.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`regressions.${i}.transform.config.method`,control:e,render:({field:o})=>n(a.Select,{label:"Method",data:Co,sx:{flex:1},...o})}),d==="polynomial"&&n(v.Controller,{name:`regressions.${i}.transform.config.order`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...o})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Line Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`regressions.${i}.plot.lineStyle.type`,control:e,render:({field:o})=>n(a.Select,{label:"Line Type",data:wo,sx:{flexGrow:1},...o})}),n(v.Controller,{name:`regressions.${i}.plot.lineStyle.width`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...o})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`regressions.${i}.plot.color`,control:e,render:({field:o})=>n(K,{...o})})]}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Regression Line"})]},i)}function So({control:e,watch:t,data:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"regressions"}),d=t("regressions"),o=r.map((y,h)=>({...y,...d[h]})),c=t("y_axes"),p=g.useMemo(()=>c.map(({name:y},h)=>({label:y,value:h.toString()})),[c]),f=()=>l({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666",lineStyle:{type:"solid",width:1}}});return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((y,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},h)),n(a.Tabs.Tab,{onClick:f,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((y,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(_o,{regressionItem:y,control:e,index:h,remove:s,yAxisOptions:p,data:i},h)},h))]})}const qt={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
52
+ `)}},To=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function Do({control:e,index:t,seriesItem:i}){const r=!!i.barWidth.trim();return u(k,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.stack`,control:e,render:({field:l})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barGap`,control:e,render:({field:l})=>n(a.Select,{label:"Bar Gap",data:To,sx:{flexGrow:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:r,sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:r,sx:{flexGrow:1},...l})})]})]})}const ko=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Io=({value:e,onChange:t,data:i})=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e),c=()=>{s();const{type:h,func_content:x}=d,C={type:h,func_content:x};o(C),t(C)},p=()=>{s(),o(e)},f=h=>{o(x=>({...x,func_content:h}))},y=()=>{f(qt.dynamic.func_content)};return u(k,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(ko,{value:d.func_content,onChange:f}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Mo=({value:e,onChange:t,data:i})=>e.type!=="dynamic"?null:n(Io,{value:e,onChange:t,data:i}),Ao=({value:e,onChange:t})=>{if(e.type!=="static")return null;const i=r=>{t({...e,size:r})};return n(k,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:i})})},zo=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],Ti=g.forwardRef(({label:e="Size",value:t,onChange:i,data:r},l)=>{const s=d=>{i({...qt[d]})};return u(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:l,label:e,data:zo,value:t.type,onChange:s,sx:{flexGrow:1}}),n(Ao,{value:t,onChange:i}),n(Mo,{value:t,onChange:i,data:r})]})}),Vo=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}],Lo=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Eo({control:e,index:t,seriesItem:i,data:r}){const l=i.showSymbol;return u(k,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Line Settings",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:s})=>n(a.Select,{label:"Line Type",data:Lo,sx:{flexGrow:1},...s})}),n(v.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:s})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...s})})]}),u(a.Group,{grow:!0,align:"center",children:[n(v.Controller,{name:`series.${t}.step`,control:e,render:({field:s})=>n(a.Select,{label:"Step",data:Vo,sx:{flexGrow:1,maxWidth:"48%"},...s,value:String(s.value),onChange:d=>{const o=d==="false"?!1:d;s.onChange(o)}})}),u(a.Stack,{children:[n(v.Controller,{name:`series.${t}.smooth`,control:e,render:({field:s})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Smooth Line",checked:s.value,onChange:d=>s.onChange(d.currentTarget.checked)})})}),n(v.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:s})=>n(a.Box,{sx:{flexGrow:1},children:n(a.Switch,{label:"Display Name on Line",checked:s.value??!1,onChange:d=>s.onChange(d.currentTarget.checked)})})})]})]}),u(a.Stack,{children:[n(v.Controller,{name:`series.${t}.showSymbol`,control:e,render:({field:s})=>n(a.Box,{mt:10,mb:-10,sx:{flexGrow:1},children:n(a.Switch,{label:"Show Symbol on Line",checked:s.value,onChange:d=>s.onChange(d.currentTarget.checked)})})}),l&&n(v.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:s})=>n(Ti,{label:"Symbol Size",data:r,...s})})]})]})}function Po({control:e,index:t,data:i}){return n(v.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:r})=>n(Ti,{label:"Size",data:i,...r})})}const Bo=[{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 Oo({control:e,index:t,remove:i,seriesItem:r,yAxisOptions:l,data:s}){const d=r.type;return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[n(a.Stack,{children:n(v.Controller,{name:`series.${t}.type`,control:e,render:({field:o})=>n(a.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"}],...o})})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.name`,control:e,render:({field:o})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...o})}),n(v.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:o,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:l,disabled:l.length===0,...p,value:(o==null?void 0:o.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:o})=>n(E,{label:"Value Field",required:!0,data:s,sx:{flex:1},...o})}),n(v.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:o})=>n(et,{label:"Aggregation on Value",value:o.value??$e,onChange:o.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(v.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:o})=>n(E,{label:"Split into multiple series by this key...",data:s,clearable:!0,sx:{flex:1},...o})})}),d==="line"&&n(Eo,{index:t,control:e,seriesItem:r,data:s}),d==="bar"&&n(Do,{index:t,control:e,seriesItem:r}),d==="scatter"&&n(Po,{index:t,control:e,data:s}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.label_position`,control:e,render:({field:o})=>n(a.Select,{label:"Label Position",data:Bo,...o})}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`series.${t}.color`,control:e,render:({field:o})=>n(K,{...o})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:o})=>n(a.Checkbox,{label:"Hide in legend",checked:o.value,onChange:c=>o.onChange(c.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function $o({control:e,watch:t,data:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"series"}),d=t("series"),o=r.map((y,h)=>({...y,...d[h]})),c=()=>{const y={type:"bar",name:U.randomId(),showSymbol:!1,symbolSize:qt.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:""};l(y)},p=t("y_axes"),f=g.useMemo(()=>p.map(({name:y},h)=>({label:y,value:h.toString()})),[p]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((y,h)=>n(a.Tabs.Tab,{value:h.toString(),children:h+1},y.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((y,h)=>n(a.Tabs.Panel,{value:h.toString(),children:n(Oo,{control:e,index:h,remove:s,seriesItem:y,yAxisOptions:f,data:i},y.id)},y.id))]})}function No({control:e,watch:t}){return t("stats"),n(a.Stack,{children:u(a.Stack,{spacing:0,children:[n(v.Controller,{name:"stats.templates.top",control:e,render:({field:i})=>n(Oe,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...i})}),n(v.Controller,{name:"stats.templates.bottom",control:e,render:({field:i})=>n(Oe,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...i})})]})})}function Go({data:e,control:t,watch:i}){return i(["x_axis_data_key","x_axis_name","x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis_data_key",control:t,render:({field:r})=>n(E,{label:"X Axis Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis_name",control:t,render:({field:r})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(it,{data:e,...r})})]}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})})]})}const qo=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],Fo=[{label:"left",value:"left"},{label:"right",value:"right"}];function jo({control:e,index:t,remove:i}){return u(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),n(v.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:qo,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:r})=>n(a.Select,{label:"Position",required:!0,data:Fo,sx:{flex:1},...r})})}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:r})=>n(he,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:r})=>n(a.TextInput,{label:"Min",...r})}),n(v.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:r})=>n(a.TextInput,{label:"Max",...r})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`y_axes.${t}.show`,control:e,render:({field:r})=>n(a.Checkbox,{label:"Visible",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),disabled:t===0,children:"Delete this YAxis"})]})}function Wo({control:e,watch:t}){const{fields:i,append:r,remove:l}=v.useFieldArray({control:e,name:"y_axes"}),s=t("y_axes"),d=i.map((c,p)=>({...c,...s[p]})),o=()=>r({name:"",label_formatter:J});return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((c,p)=>n(a.Tabs.Tab,{value:p.toString(),children:p+1},p)),n(a.Tabs.Tab,{onClick:o,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((c,p)=>n(a.Tabs.Panel,{value:p.toString(),children:n(jo,{control:e,index:p,remove:l})},p))]})}function Uo({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,s=g.useMemo(()=>b.defaultsDeep({},t,Ot),[t]),{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,s),[y,s]);return c(["dataZoom"]),n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Go,{control:d,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(Wo,{control:d,watch:c})}),n(a.Tabs.Panel,{value:"Series",children:n($o,{control:d,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Regression Lines",children:n(So,{control:d,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Stats",children:n(No,{control:d,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(xo,{variables:r,control:d,watch:c})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(fo,{variables:r,control:d,watch:c})}),n(a.Tabs.Panel,{value:"Zooming",children:n(v.Controller,{name:"dataZoom",control:d,render:({field:x})=>n(Gt,{...x})})})]})]})})}function Ro(e){const t=b.cloneDeep(b.omit(e,"variables"));return t.stats=b.omit(t.stats,"variables"),t}function Qo(e){const{rotate:t,formatter:i=ge}=e.x_axis.axisLabel;return{...e,x_axis:{...e.x_axis,axisLabel:{rotate:t,formatter:i}}}}function Yo(e){const{dataZoom:t=Ve,...i}=e;return{...i,dataZoom:t}}function Xo(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function Zo(e){const t=e.reference_lines.map(i=>{const{lineStyle:r={type:"dashed",width:1,color:be.random().css()},show_in_legend:l=!1}=i;return{...i,lineStyle:r,show_in_legend:l}});return{...e,reference_lines:t}}function Ko(e){const t=e.reference_lines.map(i=>{const{yAxisIndex:r=0}=i;return{...i,yAxisIndex:r}});return{...e,reference_lines:t}}function Jo(e){const t=e.series.map(i=>{const{aggregation_on_group:r=$e}=i;return{...i,aggregation_on_group:r}});return{...e,series:t}}function Ho(e){const t=e.series.map(i=>{const{aggregation_on_value:r=$e}=i;return{...i,aggregation_on_value:r}});return{...e,series:t}}function ed(e){delete e.config;const{x_axis:t,tooltip:i}=e.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:i}}}};return b.defaultsDeep(r,e)}function td(e){const{series:t,...i}=e;return{...i,series:t.map(r=>{const{barMinWidth:l,barWidth:s,barMaxWidth:d}=r;return l?{...r,barMinWidth:l,barWidth:"",barMaxWidth:d??s}:{...r,barMinWidth:"",barWidth:s,barMaxWidth:""}})}}function nd(e){const{y_axes:t,...i}=e;return{...i,y_axes:t.map(r=>{const{min:l="",max:s=""}=r;return{...r,min:l,max:s}})}}function id(e){const{y_axes:t,...i}=e;return{...i,y_axes:t.map(r=>{const{nameAlignment:l="left"}=r;return{...r,nameAlignment:l}})}}function rd(e){const{y_axes:t,...i}=e;return{...i,y_axes:t.map(r=>{const{show:l=!0}=r;return{...r,show:l}})}}function ad(e){const{regressions:t,...i}=e;return{...i,regressions:t.map(r=>{const{group_by_key:l=""}=r;return{...r,group_by_key:l}})}}class ld extends j{constructor(){super(...arguments);D(this,"VERSION",15)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,(i,{panelModel:r})=>{const{config:l}=i;return(l.variables||[]).forEach(o=>{r.variables.find(c=>c.name===o.name)||r.addVariable(o)}),(b.get(l,"stats.variables")||[]).forEach(o=>{r.variables.find(c=>c.name===o.name)||r.addVariable(o)}),{...i,version:2,config:Ro(l)}}),this.version(3,i=>({...i,version:3,config:Qo(i.config)})),this.version(4,i=>({...i,version:4,config:Yo(i.config)})),this.version(5,i=>({...i,version:5,config:Xo(i.config)})),this.version(6,i=>({...i,version:6,config:Zo(i.config)})),this.version(7,i=>({...i,version:7,config:Ko(i.config)})),this.version(8,i=>({...i,version:8,config:Jo(i.config)})),this.version(9,i=>({...i,version:9,config:Ho(i.config)})),this.version(10,i=>({...i,version:10,config:ed(i.config)})),this.version(11,i=>({...i,version:11,config:td(i.config)})),this.version(12,i=>({...i,version:12,config:nd(i.config)})),this.version(13,i=>({...i,version:13,config:id(i.config)})),this.version(14,i=>({...i,version:14,config:rd(i.config)})),this.version(15,i=>({...i,version:15,config:ad(i.config)}))}}const sd={displayName:"Cartesian Chart",displayGroup:"ECharts-based charts",migrator:new ld,name:"cartesian",viewRender:po,configRender:Uo,createConfig(){return{version:15,config:b.cloneDeep(Ot)}},triggers:[Bt]};function od(e){if(e.enable_value)return e.value}function dd(e){if(e.enable_value)return e.value}function ud(e){const t=e.axisLabel.overflow.on_axis.width,i=e.axisLabel.position,r={top:5,left:5,right:5,bottom:5};return e.orient==="vertical"&&b.get(r,i)&&i===e.funnelAlign&&b.set(r,i,t),r}function cd(e,t){return e.series.map(i=>{const{level_name_data_key:r,level_value_data_key:l,axisLabel:s,min:d,max:o,funnelAlign:c,orient:p,...f}=i,y=t.map(x=>({name:x[r],value:x[l]})),h=Se(s.overflow.on_axis);return{type:"funnel",...ud(i),min:od(d),max:dd(o),minSize:d.size,maxSize:o.size,...f,label:{show:!0,position:s.position,...h},orient:p,funnelAlign:p==="horizontal"?"center":c,data:y}})}function pd({conf:e,params:t,max:i}){const{name:r,value:l}=t.data,s=G(l/i).format({output:"percent",mantissa:2,trimMantissa:!0});return[{label:`${t.marker} ${r}`,value:`${l} (${s})`,style:{label:"",value:""}}]}function hd(e,t){var l;const i=e.series[0].level_value_data_key,r=(l=b.maxBy(t,i))==null?void 0:l[i];return s=>{const o=pd({conf:e,params:s,max:r}).map(p=>`
53
53
  <tr>
54
54
  <th style="text-align: right;">
55
55
  <div style="${p.style.label}">${p.label}</div>
@@ -63,9 +63,9 @@
63
63
  ${s.seriesName}
64
64
  </div>
65
65
  <table style="width: auto">
66
- <tbody>${d.join("")}</tbody>
66
+ <tbody>${o.join("")}</tbody>
67
67
  </table>
68
- `}}function gd(e,t){return{trigger:"item",formatter:hd(e,t)}}function md(e,t){return{grid:{top:0,left:0,right:0,bottom:0},tooltip:gd(e,t),series:cd(e,t)}}function fd(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:ve},sort:"descending",orient:"vertical",funnelAlign:"center"}}const Ft={series:[fd("Funnel")]};N.use([q.FunnelChart,A.DataZoomComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function bd({conf:e,data:t,width:i,height:r}){const l=g.useMemo(()=>md(e,t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:l,style:{width:i,height:r},notMerge:!0,theme:"merico-light"})}function yd({context:e}){const{value:t}=V(e.instanceData,"config"),i=g.useMemo(()=>b.defaults({},t,Ft),[t]),r=e.data,{width:l,height:s}=e.viewport;return n(a.Box,{children:n(bd,{width:l,height:s,data:r,conf:i})})}const vd=[{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"}],jt=g.forwardRef(({label:e,value:t,onChange:i,options:r=vd},l)=>n(a.Select,{ref:l,label:e,data:r,value:t,onChange:i})),xd=[{label:"Ascending",value:"ascending"},{label:"Descending",value:"descending"},{label:"Use original data order",value:"0"}],Cd=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],wd=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}],_d={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"}]},Sd=({item:e,control:t,data:i,index:r,remove:l})=>{const s=e.min.enable_value,o=e.max.enable_value,{orient:d}=e;return u(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`series.${r}.name`,control:t,render:({field:c})=>n(a.TextInput,{label:"Series Name",...c})})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.level_name_data_key`,control:t,render:({field:c})=>n(E,{label:"Level Name Field",data:i,...c})}),n(v.Controller,{name:`series.${r}.level_value_data_key`,control:t,render:({field:c})=>n(E,{label:"Level Value Field",data:i,...c})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Funnel Style",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.min.value`,control:t,render:({field:c})=>n(a.NumberInput,{disabled:!s,labelProps:{display:"block"},label:u(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(v.Controller,{name:`series.${r}.min.enable_value`,control:t,render:({field:p})=>n(a.Checkbox,{size:"xs",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked)})})})})]}),...c})}),n(v.Controller,{name:`series.${r}.min.size`,control:t,render:({field:c})=>n(a.TextInput,{placeholder:"0%",label:"Min Size",...c})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.max.value`,control:t,render:({field:c})=>n(a.NumberInput,{disabled:!o,labelProps:{display:"block"},label:u(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(v.Controller,{name:`series.${r}.max.enable_value`,control:t,render:({field:p})=>n(a.Checkbox,{size:"xs",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked)})})})})]}),...c})}),n(v.Controller,{name:`series.${r}.max.size`,control:t,render:({field:c})=>n(a.TextInput,{placeholder:"100%",label:"Max Size",...c})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.orient`,control:t,render:({field:c})=>n(a.Select,{label:"Orientation",data:wd,...c})}),n(v.Controller,{name:`series.${r}.sort`,control:t,render:({field:c})=>n(a.Select,{label:"Sort",data:xd,...c})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.funnelAlign`,control:t,render:({field:c})=>n(a.Select,{label:"Align",disabled:d==="horizontal",data:Cd,...c})}),n(v.Controller,{name:`series.${r}.gap`,control:t,render:({field:c})=>n(a.NumberInput,{placeholder:"0, 5, 10...",label:"Gap",...c})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.axisLabel.position`,control:t,render:({field:c})=>n(jt,{label:"Position",options:_d[d],...c})}),n(a.Box,{})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`series.${r}.axisLabel.overflow`,control:t,render:({field:c})=>n(De,{...c})})})]})},Td=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"series"}),o=t("series"),d=r.map((y,h)=>({...y,...o[h]})),c=b.get(d,"0.id"),[p,f]=g.useState(c??null);return g.useEffect(()=>{c&&f(y=>y!==null?y:c)},[c]),u(a.Tabs,{value:p,onTabChange:y=>f(y),styles:{panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((y,h)=>n(a.Tabs.Tab,{value:y.id,children:y.name},y.id)),n(a.Tabs.Tab,{value:"add",disabled:!0,children:n(a.Tooltip,{label:"TODO",children:n(a.Center,{children:n(I.IconPlus,{size:18,color:"#228be6"})})})})]}),d.map((y,h)=>n(a.Tabs.Panel,{value:y.id,children:n(Sd,{item:y,control:e,index:h,remove:s,data:i})},y.id))]})};function Dd({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Ft),[t]),{control:s,handleSubmit:o,watch:d,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),d([]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,l),[f,l]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),n(Td,{control:s,watch:d,data:r})]})})}function kd(e){return{series:e.series.map(t=>{const{min:i,minSize:r,max:l,maxSize:s,...o}=t;return{...o,min:{value:i,use_data_min:!1,size:r},max:{value:l,use_data_max:!1,size:s}}})}}class Id extends j{constructor(){super(...arguments);D(this,"VERSION",2)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{config:r}=i;return{...i,version:2,config:kd(r)}})}}const Md={displayName:"Funnel Chart",displayGroup:"ECharts-based charts",migrator:new Id,name:"funnel",viewRender:yd,configRender:Dd,createConfig:()=>({version:2,config:Ft})};function Di({enabled:e,func_content:t}){return(i,r)=>{if(!e)return i;try{return new Function(`return ${t}`)()(i,r)}catch(l){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${l.message}`),i}}}function Ad(e){const t=Di(e.x_axis.axisLabel.formatter),i=Di(e.y_axis.axisLabel.formatter);return{x_axis:t,y_axis:i}}function zd(e){return{heat_block:function(r){if(!e.heat_block.value_formatter)return r;try{return G(r).format(e.heat_block.value_formatter)}catch(l){return console.error(l),r}}}}function Vd(e){let t=0;return e.x_axis.name&&(t+=20),{top:45,left:5,right:5,bottom:t}}function Ld(e,t){const{x_axis:i,y_axis:r,heat_block:l}=e;return{type:"heatmap",name:l.name,xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{borderColor:"white",borderWidth:2},data:t.map(s=>[b.get(s,i.data_key),b.get(s,r.data_key),b.get(s,l.data_key)])}}const Ed=e=>{try{return G(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Pd({conf:e,labelFormatters:t,valueFormatters:i,dataDict:r,params:l}){const{value:s,dataIndex:o}=l,[d,c,p]=s,f={label:e.x_axis.name?e.x_axis.name:"X Axis",value:t.x_axis(d,o),style:{label:"",value:_e(e.x_axis.axisLabel.overflow.in_tooltip)}},y={label:e.y_axis.name?e.y_axis.name:"Y Axis",value:t.y_axis(c,o),style:{label:"",value:_e(e.y_axis.axisLabel.overflow.in_tooltip)}},h={label:e.heat_block.name,value:i.heat_block(p),style:{label:"",value:""}},x=[f,y,h],C=r[`${d}---${c}`];return C&&e.tooltip.metrics.forEach(T=>{x.push({label:T.name,value:Ed(b.get(C,T.data_key,"")),style:{label:"",value:""}})}),x}function Bd(e,t,i,r){const l=b.keyBy(t,s=>`${s[e.x_axis.data_key]}---${s[e.y_axis.data_key]}`);return{confine:!0,formatter:function(s){const d=Pd({conf:e,labelFormatters:i,valueFormatters:r,dataDict:l,params:s}).map(p=>`
68
+ `}}function gd(e,t){return{trigger:"item",formatter:hd(e,t)}}function md(e,t){return{grid:{top:0,left:0,right:0,bottom:0},tooltip:gd(e,t),series:cd(e,t)}}function fd(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:ve},sort:"descending",orient:"vertical",funnelAlign:"center"}}const Ft={series:[fd("Funnel")]};N.use([q.FunnelChart,A.DataZoomComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function bd({conf:e,data:t,width:i,height:r}){const l=g.useMemo(()=>md(e,t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:l,style:{width:i,height:r},notMerge:!0,theme:"merico-light"})}function yd({context:e}){const{value:t}=V(e.instanceData,"config"),i=g.useMemo(()=>b.defaults({},t,Ft),[t]),r=e.data,{width:l,height:s}=e.viewport;return n(a.Box,{children:n(bd,{width:l,height:s,data:r,conf:i})})}const vd=[{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"}],jt=g.forwardRef(({label:e,value:t,onChange:i,options:r=vd},l)=>n(a.Select,{ref:l,label:e,data:r,value:t,onChange:i})),xd=[{label:"Ascending",value:"ascending"},{label:"Descending",value:"descending"},{label:"Use original data order",value:"0"}],Cd=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],wd=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}],_d={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"}]},Sd=({item:e,control:t,data:i,index:r,remove:l})=>{const s=e.min.enable_value,d=e.max.enable_value,{orient:o}=e;return u(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`series.${r}.name`,control:t,render:({field:c})=>n(a.TextInput,{label:"Series Name",...c})})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.level_name_data_key`,control:t,render:({field:c})=>n(E,{label:"Level Name Field",data:i,...c})}),n(v.Controller,{name:`series.${r}.level_value_data_key`,control:t,render:({field:c})=>n(E,{label:"Level Value Field",data:i,...c})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Funnel Style",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.min.value`,control:t,render:({field:c})=>n(a.NumberInput,{disabled:!s,labelProps:{display:"block"},label:u(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(v.Controller,{name:`series.${r}.min.enable_value`,control:t,render:({field:p})=>n(a.Checkbox,{size:"xs",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked)})})})})]}),...c})}),n(v.Controller,{name:`series.${r}.min.size`,control:t,render:({field:c})=>n(a.TextInput,{placeholder:"0%",label:"Min Size",...c})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.max.value`,control:t,render:({field:c})=>n(a.NumberInput,{disabled:!d,labelProps:{display:"block"},label:u(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(v.Controller,{name:`series.${r}.max.enable_value`,control:t,render:({field:p})=>n(a.Checkbox,{size:"xs",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked)})})})})]}),...c})}),n(v.Controller,{name:`series.${r}.max.size`,control:t,render:({field:c})=>n(a.TextInput,{placeholder:"100%",label:"Max Size",...c})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.orient`,control:t,render:({field:c})=>n(a.Select,{label:"Orientation",data:wd,...c})}),n(v.Controller,{name:`series.${r}.sort`,control:t,render:({field:c})=>n(a.Select,{label:"Sort",data:xd,...c})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.funnelAlign`,control:t,render:({field:c})=>n(a.Select,{label:"Align",disabled:o==="horizontal",data:Cd,...c})}),n(v.Controller,{name:`series.${r}.gap`,control:t,render:({field:c})=>n(a.NumberInput,{placeholder:"0, 5, 10...",label:"Gap",...c})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${r}.axisLabel.position`,control:t,render:({field:c})=>n(jt,{label:"Position",options:_d[o],...c})}),n(a.Box,{})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`series.${r}.axisLabel.overflow`,control:t,render:({field:c})=>n(De,{...c})})})]})},Td=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"series"}),d=t("series"),o=r.map((y,h)=>({...y,...d[h]})),c=b.get(o,"0.id"),[p,f]=g.useState(c??null);return g.useEffect(()=>{c&&f(y=>y!==null?y:c)},[c]),u(a.Tabs,{value:p,onTabChange:y=>f(y),styles:{panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((y,h)=>n(a.Tabs.Tab,{value:y.id,children:y.name},y.id)),n(a.Tabs.Tab,{value:"add",disabled:!0,children:n(a.Tooltip,{label:"TODO",children:n(a.Center,{children:n(I.IconPlus,{size:18,color:"#228be6"})})})})]}),o.map((y,h)=>n(a.Tabs.Panel,{value:y.id,children:n(Sd,{item:y,control:e,index:h,remove:s,data:i})},y.id))]})};function Dd({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Ft),[t]),{control:s,handleSubmit:d,watch:o,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),o([]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,l),[f,l]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),n(Td,{control:s,watch:o,data:r})]})})}function kd(e){return{series:e.series.map(t=>{const{min:i,minSize:r,max:l,maxSize:s,...d}=t;return{...d,min:{value:i,use_data_min:!1,size:r},max:{value:l,use_data_max:!1,size:s}}})}}class Id extends j{constructor(){super(...arguments);D(this,"VERSION",2)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{config:r}=i;return{...i,version:2,config:kd(r)}})}}const Md={displayName:"Funnel Chart",displayGroup:"ECharts-based charts",migrator:new Id,name:"funnel",viewRender:yd,configRender:Dd,createConfig:()=>({version:2,config:Ft})};function Di({enabled:e,func_content:t}){return(i,r)=>{if(!e)return i;try{return new Function(`return ${t}`)()(i,r)}catch(l){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${l.message}`),i}}}function Ad(e){const t=Di(e.x_axis.axisLabel.formatter),i=Di(e.y_axis.axisLabel.formatter);return{x_axis:t,y_axis:i}}function zd(e){return{heat_block:function(r){if(!e.heat_block.value_formatter)return r;try{return G(r).format(e.heat_block.value_formatter)}catch(l){return console.error(l),r}}}}function Vd(e){let t=0;return e.x_axis.name&&(t+=20),{top:45,left:5,right:5,bottom:t}}function Ld(e,t){const{x_axis:i,y_axis:r,heat_block:l}=e;return{type:"heatmap",name:l.name,xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{borderColor:"white",borderWidth:2},data:t.map(s=>[b.get(s,i.data_key),b.get(s,r.data_key),b.get(s,l.data_key)])}}const Ed=e=>{try{return G(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Pd({conf:e,labelFormatters:t,valueFormatters:i,dataDict:r,params:l}){const{value:s,dataIndex:d}=l,[o,c,p]=s,f={label:e.x_axis.name?e.x_axis.name:"X Axis",value:t.x_axis(o,d),style:{label:"",value:_e(e.x_axis.axisLabel.overflow.in_tooltip)}},y={label:e.y_axis.name?e.y_axis.name:"Y Axis",value:t.y_axis(c,d),style:{label:"",value:_e(e.y_axis.axisLabel.overflow.in_tooltip)}},h={label:e.heat_block.name,value:i.heat_block(p),style:{label:"",value:""}},x=[f,y,h],C=r[`${o}---${c}`];return C&&e.tooltip.metrics.forEach(T=>{x.push({label:T.name,value:Ed(b.get(C,T.data_key,"")),style:{label:"",value:""}})}),x}function Bd(e,t,i,r){const l=b.keyBy(t,s=>`${s[e.x_axis.data_key]}---${s[e.y_axis.data_key]}`);return{confine:!0,formatter:function(s){const o=Pd({conf:e,labelFormatters:i,valueFormatters:r,dataDict:l,params:s}).map(p=>`
69
69
  <tr>
70
70
  <th style="text-align: right;">
71
71
  <div style="${p.style.label}">${p.label}</div>
@@ -84,24 +84,24 @@
84
84
  />
85
85
  </tr>
86
86
  </thead>
87
- <tbody>${d.join("")}</tbody>
87
+ <tbody>${o.join("")}</tbody>
88
88
  </table>
89
- `}}}function Od(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 $d(e,t,i){const{overflow:r,rotate:l}=e.x_axis.axisLabel,s=Se(r.on_axis);return{id:"main-x-axis",type:"category",data:b.uniq(t.map(o=>o[e.x_axis.data_key])),name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:l,...s,formatter:i},splitArea:{show:!0},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:1}}function Nd(e,t,i){const{nameAlignment:r,data_key:l,...s}=e.y_axis,{overflow:o,rotate:d}=e.y_axis.axisLabel,c=Se(o.on_axis);return{...s,type:"category",data:b.uniq(t.map(p=>p[l])),axisLabel:{rotate:d,...c,formatter:i},axisLine:{show:!0,color:"blue"},axisTick:{show:!0,alignWithLabel:!0},splitArea:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,z:1}}const Gd={tooltip:{confine:!0},grid:{containLabel:!0}};function qd(e,t,i){const r=Ad(e),l=zd(e),s={xAxis:$d(e,t,r.x_axis),yAxis:Nd(e,t,r.y_axis),series:Ld(e,t),dataset:[{source:t}],tooltip:Bd(e,t,r,l),grid:Vd(e),visualMap:Od(e)};return b.defaultsDeep({},s,Gd)}function Fd(e){return n(k,{})}function jd(e){return n(a.Text,{children:"Click heat block"})}const ki={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:jd,configRender:Fd,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"}]},Wt={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:ve,formatter:{...ge}}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:ve,formatter:{...ge}}},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:J},tooltip:{metrics:[]}};N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.HeatmapChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,A.VisualMapComponent,te.CanvasRenderer]);function Wd({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const o=g.useMemo(()=>{const y=e.x_axis.data_key,h=e.y_axis.data_key;return b.keyBy(t,x=>`${x[y]}---${x[h]}`)},[t,e.x_axis.data_key]),d=pe(l.triggerManager,ki.id),c=g.useCallback(y=>{const[h,x]=y.value,C=b.get(o,`${h}---${x}`,{error:"rowData is not found"});d.forEach(T=>{l.runInteraction(T.id,{...y,rowData:C})})},[o,d,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>qd(e,t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function Ud({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,Wt),[r]),o=e.data,{width:d,height:c}=e.viewport;return n(a.Box,{children:n(Wd,{variables:l,width:d,height:c,data:o,conf:s,interactionManager:i})})}function Rd({data:e,control:t,watch:i}){return i(["heat_block"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"heat_block.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.min",control:t,render:({field:r})=>n(a.NumberInput,{label:"Min Value",...r})}),n(v.Controller,{name:"heat_block.max",control:t,render:({field:r})=>n(a.NumberInput,{label:"Max Value",...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(v.Controller,{name:"heat_block.value_formatter",control:t,render:({field:r})=>n(he,{...r})})]})}const Qd=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`tooltip.metrics.${i}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`tooltip.metrics.${i}.data_key`,control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:t,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Metric"})]}),Yd=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"tooltip.metrics"}),o=t("tooltip.metrics"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>l({id:Date.now().toString(),data_key:"",name:""}),p=t("tooltip.metrics.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(Qd,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function Xd({data:e,control:t,watch:i}){return n(Yd,{control:t,watch:i,data:e})}const Zd=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Kd={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
90
- `)},Ii=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e);g.useEffect(()=>{d(e)},[e]);const c=x=>{d({...o,enabled:x})},p=()=>{s();const{enabled:x,func_content:C}=o,T={enabled:x,func_content:C};d(T),t(T)},f=()=>{s(),d(e)},y=x=>{d(C=>({...C,func_content:x}))},h=()=>{y(Kd.func_content)};return u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:o.enabled,onChange:x=>c(x.currentTarget.checked)}),n(Zd,{value:o.func_content,onChange:y,disabled:!o.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:p,children:"OK"})]})]})]})})]})});function Jd({data:e,control:t,watch:i}){return i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(Ii,{data:e,...r})})]})]})}const Hd=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function eu({control:e,watch:t,data:i}){return t(["y_axis"]),u(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.data_key",control:e,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:i,sx:{flex:1},...r})}),n(v.Controller,{name:"y_axis.name",control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:r})=>n(a.Select,{label:"Name Alignment",required:!0,data:Hd,sx:{flex:1},...r})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(v.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:r})=>n(De,{...r})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:r})=>n(Ii,{data:i,...r})})]})]})}function tu({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Wt),[t]),s=g.useMemo(()=>b.cloneDeep(l),[l]);g.useEffect(()=>{!b.isEqual(l,s)&&(console.log("config malformed, resetting to defaults",l,s),i(s))},[l,s]);const{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Jd,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(eu,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(Rd,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(Xd,{control:o,watch:c,data:r})})]})]})})}class nu extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>(console.log("🟥 unexpected calling"),{version:1,config:i}))}}const iu={displayName:"Heatmap",displayGroup:"ECharts-based charts",migrator:new nu,name:"heatmap",viewRender:Ud,configRender:tu,createConfig:()=>({version:1,config:Wt}),triggers:[ki]},Mi={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:au,configRender:ru,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 ru(e){return n(k,{})}function au(e){return n(a.Text,{children:"Click chart's series"})}const Ai={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"rgba(0,0,0,0.3)"},Ut={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...ge},overflow:ve}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:J},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:Ve,markLine:Ai};function rt(e){return G(e).format({output:"percent",mantissa:0})}function lu(e){const t=e.value[1];try{return rt(t)}catch(i){return console.error(i),t}}function su(e){function t(i){let r=i;if(typeof i=="object"&&(Array.isArray(i.value)&&i.value.length===2?r=i.value[1]:r=i.value),!e.bar.label_formatter)return r;try{return G(r).format(e.bar.label_formatter)}catch(l){return console.error(l),r}}return{bar:t,line:lu,lineValue:rt}}function ou(e,t,i){const{label_template:r}=e.markLine;if(!r)return"";const l={...e,percentage:t,count:i},s=Object.keys(l),o=Object.values(l);return new Function(...s,`return \`${r}\`;`)(...o)}function du(e,t){if(t.length===0)return{};const i=t.findIndex(d=>d[1]>=.8);if(i===-1)return{};const r=t[i],l={x:rt((i+1)/t.length),y:rt(r[1])},s={left:i+1,right:t.length-i-1},o=r[0];return o?{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:o,lineStyle:{color:e.markLine.color},label:{formatter:ou(e,l,s)}}]}:{}}function uu(e,t,i){const r=t.map(d=>[d[e.x_axis.data_key],Number(d[e.data_key])]).sort((d,c)=>c[1]-d[1]),l=r.reduce((d,c)=>d+c[1],0),s=r.reduce((d,c,p)=>{const f=p===0?0:d[p-1][1];return d.push([c[0],f+c[1]]),d},[]).map(d=>[d[0],d[1]/l]),o=du(e,s);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:i.bar},yAxisIndex:0,data:r},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1},label:{show:!1,position:"top",formatter:i.line},yAxisIndex:1,data:s,markLine:o}]}const cu=(e,t)=>i=>{const r=Array.isArray(i)?i:[i];if(r.length===0)return"";const l=r.map((d,c)=>{const p=d.seriesName,[f,y]=d.value;if(!p)return y;const h=c===0?t.bar:t.lineValue;return`
89
+ `}}}function Od(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 $d(e,t,i){const{overflow:r,rotate:l}=e.x_axis.axisLabel,s=Se(r.on_axis);return{id:"main-x-axis",type:"category",data:b.uniq(t.map(d=>d[e.x_axis.data_key])),name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:l,...s,formatter:i},splitArea:{show:!0},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:1}}function Nd(e,t,i){const{nameAlignment:r,data_key:l,...s}=e.y_axis,{overflow:d,rotate:o}=e.y_axis.axisLabel,c=Se(d.on_axis);return{...s,type:"category",data:b.uniq(t.map(p=>p[l])),axisLabel:{rotate:o,...c,formatter:i},axisLine:{show:!0,color:"blue"},axisTick:{show:!0,alignWithLabel:!0},splitArea:{show:!0},nameTextStyle:{fontWeight:"bold",align:r},nameLocation:"end",nameGap:15,z:1}}const Gd={tooltip:{confine:!0},grid:{containLabel:!0}};function qd(e,t,i){const r=Ad(e),l=zd(e),s={xAxis:$d(e,t,r.x_axis),yAxis:Nd(e,t,r.y_axis),series:Ld(e,t),dataset:[{source:t}],tooltip:Bd(e,t,r,l),grid:Vd(e),visualMap:Od(e)};return b.defaultsDeep({},s,Gd)}function Fd(e){return n(k,{})}function jd(e){return n(a.Text,{children:"Click heat block"})}const ki={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:jd,configRender:Fd,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"}]},Wt={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:ve,formatter:{...ge}}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:ve,formatter:{...ge}}},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:J},tooltip:{metrics:[]}};N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.HeatmapChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,A.VisualMapComponent,te.CanvasRenderer]);function Wd({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const d=g.useMemo(()=>{const y=e.x_axis.data_key,h=e.y_axis.data_key;return b.keyBy(t,x=>`${x[y]}---${x[h]}`)},[t,e.x_axis.data_key]),o=pe(l.triggerManager,ki.id),c=g.useCallback(y=>{const[h,x]=y.value,C=b.get(d,`${h}---${x}`,{error:"rowData is not found"});o.forEach(T=>{l.runInteraction(T.id,{...y,rowData:C})})},[d,o,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>qd(e,t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function Ud({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,Wt),[r]),d=e.data,{width:o,height:c}=e.viewport;return n(a.Box,{children:n(Wd,{variables:l,width:o,height:c,data:d,conf:s,interactionManager:i})})}function Rd({data:e,control:t,watch:i}){return i(["heat_block"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"heat_block.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.min",control:t,render:({field:r})=>n(a.NumberInput,{label:"Min Value",...r})}),n(v.Controller,{name:"heat_block.max",control:t,render:({field:r})=>n(a.NumberInput,{label:"Max Value",...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(v.Controller,{name:"heat_block.value_formatter",control:t,render:({field:r})=>n(he,{...r})})]})}const Qd=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`tooltip.metrics.${i}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`tooltip.metrics.${i}.data_key`,control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:t,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Metric"})]}),Yd=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"tooltip.metrics"}),d=t("tooltip.metrics"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>l({id:Date.now().toString(),data_key:"",name:""}),p=t("tooltip.metrics.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(Qd,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function Xd({data:e,control:t,watch:i}){return n(Yd,{control:t,watch:i,data:e})}const Zd=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Kd={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
90
+ `)},Ii=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e);g.useEffect(()=>{o(e)},[e]);const c=x=>{o({...d,enabled:x})},p=()=>{s();const{enabled:x,func_content:C}=d,T={enabled:x,func_content:C};o(T),t(T)},f=()=>{s(),o(e)},y=x=>{o(C=>({...C,func_content:x}))},h=()=>{y(Kd.func_content)};return u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:d.enabled,onChange:x=>c(x.currentTarget.checked)}),n(Zd,{value:d.func_content,onChange:y,disabled:!d.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:p,children:"OK"})]})]})]})})]})});function Jd({data:e,control:t,watch:i}){return i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(Ii,{data:e,...r})})]})]})}const Hd=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function eu({control:e,watch:t,data:i}){return t(["y_axis"]),u(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.data_key",control:e,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:i,sx:{flex:1},...r})}),n(v.Controller,{name:"y_axis.name",control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:r})=>n(a.Select,{label:"Name Alignment",required:!0,data:Hd,sx:{flex:1},...r})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Tick Label",labelPosition:"center"}),n(v.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:r})=>n(De,{...r})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:r})=>n(Ii,{data:i,...r})})]})]})}function tu({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Wt),[t]),s=g.useMemo(()=>b.cloneDeep(l),[l]);g.useEffect(()=>{!b.isEqual(l,s)&&(console.log("config malformed, resetting to defaults",l,s),i(s))},[l,s]);const{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Jd,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(eu,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(Rd,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(Xd,{control:d,watch:c,data:r})})]})]})})}class nu extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>(console.log("🟥 unexpected calling"),{version:1,config:i}))}}const iu={displayName:"Heatmap",displayGroup:"ECharts-based charts",migrator:new nu,name:"heatmap",viewRender:Ud,configRender:tu,createConfig:()=>({version:1,config:Wt}),triggers:[ki]},Mi={id:"builtin:echarts:click-echart:series",displayName:"Click Chart Series",nameRender:au,configRender:ru,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 ru(e){return n(k,{})}function au(e){return n(a.Text,{children:"Click chart's series"})}const Ai={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"rgba(0,0,0,0.3)"},Ut={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:{...ge},overflow:ve}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:J},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:Ve,markLine:Ai};function rt(e){return G(e).format({output:"percent",mantissa:0})}function lu(e){const t=e.value[1];try{return rt(t)}catch(i){return console.error(i),t}}function su(e){function t(i){let r=i;if(typeof i=="object"&&(Array.isArray(i.value)&&i.value.length===2?r=i.value[1]:r=i.value),!e.bar.label_formatter)return r;try{return G(r).format(e.bar.label_formatter)}catch(l){return console.error(l),r}}return{bar:t,line:lu,lineValue:rt}}function ou(e,t,i){const{label_template:r}=e.markLine;if(!r)return"";const l={...e,percentage:t,count:i},s=Object.keys(l),d=Object.values(l);return new Function(...s,`return \`${r}\`;`)(...d)}function du(e,t){if(t.length===0)return{};const i=t.findIndex(o=>o[1]>=.8);if(i===-1)return{};const r=t[i],l={x:rt((i+1)/t.length),y:rt(r[1])},s={left:i+1,right:t.length-i-1},d=r[0];return d?{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:d,lineStyle:{color:e.markLine.color},label:{formatter:ou(e,l,s)}}]}:{}}function uu(e,t,i){const r=t.map(o=>[o[e.x_axis.data_key],Number(o[e.data_key])]).sort((o,c)=>c[1]-o[1]),l=r.reduce((o,c)=>o+c[1],0),s=r.reduce((o,c,p)=>{const f=p===0?0:o[p-1][1];return o.push([c[0],f+c[1]]),o},[]).map(o=>[o[0],o[1]/l]),d=du(e,s);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:i.bar},yAxisIndex:0,data:r},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1},label:{show:!1,position:"top",formatter:i.line},yAxisIndex:1,data:s,markLine:d}]}const cu=(e,t)=>i=>{const r=Array.isArray(i)?i:[i];if(r.length===0)return"";const l=r.map((o,c)=>{const p=o.seriesName,[f,y]=o.value;if(!p)return y;const h=c===0?t.bar:t.lineValue;return`
91
91
  <tr>
92
92
  <th style="text-align: right; padding: 0 1em;">${p}</th>
93
93
  <td style="text-align: left; padding: 0 1em;">${h(y)}</td>
94
94
  </tr>
95
- `}),s=_e(e.x_axis.axisLabel.overflow.in_tooltip),o=r[0].name;return`
95
+ `}),s=_e(e.x_axis.axisLabel.overflow.in_tooltip),d=r[0].name;return`
96
96
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
97
- <div style="${s}">${o}</div>
97
+ <div style="${s}">${d}</div>
98
98
  </div>
99
99
  <table style="width: auto">
100
100
  <tbody>
101
101
  ${l.join("")}
102
102
  </tbody>
103
103
  </table>
104
- `};function pu(e,t){return{trigger:"axis",formatter:cu(e,t)}}function hu(e){const{name:t,axisLabel:i}=e.x_axis,r=Se(i.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:{...i,...r,formatter:ze(i.formatter)}}]}function gu(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 mu(e,t,i){const r=su(e);return{dataZoom:$t(e.dataZoom),tooltip:pu(e,r),xAxis:hu(e),yAxis:gu(e,r),series:uu(e,t,r),grid:{top:50,left:30,right:15,bottom:5,containLabel:!0}}}N.use([q.BarChart,q.LineChart,A.DataZoomComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function fu({context:e,instance:t}){const{value:i}=V(e.instanceData,"config"),r=e.data,{width:l,height:s}=e.viewport,o=b.defaults({},i,Ut),d=mu(o,r),c=fe({vizManager:e.vizManager,instance:t}),p=pe(c.triggerManager,Mi.id),f=g.useMemo(()=>b.keyBy(r,o.x_axis.data_key),[r,o.x_axis.data_key]),y=g.useCallback(x=>{const C=b.get(f,x.name,{error:"rowData is not found"});p.forEach(T=>{c.runInteraction(T.id,{...x,rowData:C})})},[f,p,c]),h=g.useMemo(()=>({click:y}),[y]);return!o||!l||!s?null:n(ne,{echarts:N,option:d,style:{width:l,height:s},onEvents:h,notMerge:!0,theme:"merico-light"})}const bu=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function yu({data:e,control:t,watch:i}){return i(["bar"]),u(a.Stack,{children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:"bar.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Bar Name",sx:{flex:1},...r})}),n(v.Controller,{name:"bar.nameAlignment",control:t,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:bu,sx:{flex:1},...r})})]}),u(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"bar.color",control:t,render:({field:r})=>n(K,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:"bar.label_formatter",control:t,render:({field:r})=>n(he,{...r})})]})]})}const vu=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function xu({data:e,control:t,watch:i}){return i(["line"]),u(a.Stack,{children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:"line.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Line Name",sx:{flex:1},...r})}),n(v.Controller,{name:"line.nameAlignment",control:t,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:vu,sx:{flex:1},...r})})]}),u(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"line.color",control:t,render:({field:r})=>n(K,{...r})})]})]})}const Cu=`
104
+ `};function pu(e,t){return{trigger:"axis",formatter:cu(e,t)}}function hu(e){const{name:t,axisLabel:i}=e.x_axis,r=Se(i.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:{...i,...r,formatter:ze(i.formatter)}}]}function gu(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 mu(e,t,i){const r=su(e);return{dataZoom:$t(e.dataZoom),tooltip:pu(e,r),xAxis:hu(e),yAxis:gu(e,r),series:uu(e,t,r),grid:{top:50,left:30,right:15,bottom:5,containLabel:!0}}}N.use([q.BarChart,q.LineChart,A.DataZoomComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function fu({context:e,instance:t}){const{value:i}=V(e.instanceData,"config"),r=e.data,{width:l,height:s}=e.viewport,d=b.defaults({},i,Ut),o=mu(d,r),c=fe({vizManager:e.vizManager,instance:t}),p=pe(c.triggerManager,Mi.id),f=g.useMemo(()=>b.keyBy(r,d.x_axis.data_key),[r,d.x_axis.data_key]),y=g.useCallback(x=>{const C=b.get(f,x.name,{error:"rowData is not found"});p.forEach(T=>{c.runInteraction(T.id,{...x,rowData:C})})},[f,p,c]),h=g.useMemo(()=>({click:y}),[y]);return!d||!l||!s?null:n(ne,{echarts:N,option:o,style:{width:l,height:s},onEvents:h,notMerge:!0,theme:"merico-light"})}const bu=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function yu({data:e,control:t,watch:i}){return i(["bar"]),u(a.Stack,{children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:"bar.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Bar Name",sx:{flex:1},...r})}),n(v.Controller,{name:"bar.nameAlignment",control:t,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:bu,sx:{flex:1},...r})})]}),u(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"bar.color",control:t,render:({field:r})=>n(K,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:"bar.label_formatter",control:t,render:({field:r})=>n(he,{...r})})]})]})}const vu=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}];function xu({data:e,control:t,watch:i}){return i(["line"]),u(a.Stack,{children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:"line.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Line Name",sx:{flex:1},...r})}),n(v.Controller,{name:"line.nameAlignment",control:t,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:vu,sx:{flex:1},...r})})]}),u(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"line.color",control:t,render:({field:r})=>n(K,{...r})})]})]})}const Cu=`
105
105
  {
106
106
  // 80-20 line stuff
107
107
  percentage: {
@@ -124,10 +124,10 @@
124
124
  name: string;
125
125
  };
126
126
  }
127
- `,wu=()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(i=>!i),children:e?"Close":"Click to see params for Label Template"}),n(a.Collapse,{in:e,children:n(Ie.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:Cu})})]})};function _u({data:e,control:t,watch:i}){return i(["markLine"]),u(a.Stack,{children:[u(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"markLine.color",control:t,render:({field:r})=>n(K,{...r})})]}),u(a.Stack,{spacing:4,children:[n(v.Controller,{name:"markLine.label_template",control:t,render:({field:r})=>n(a.Textarea,{autosize:!0,minRows:2,maxRows:4,label:"Label Template",sx:{flex:1},...r})}),n(wu,{})]})]})}function Su({data:e,control:t,watch:i}){return i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(it,{data:e,...r})})]}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})})]})}function Tu({data:e,control:t,watch:i}){return i(["data_key"]),n(a.Stack,{children:n(v.Controller,{name:"data_key",control:t,render:({field:r})=>n(E,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...r})})})}function Du({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaults({},t,Ut),[t]),{control:s,handleSubmit:o,watch:d,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),d(["x_axis","data_key","bar","line","dataZoom"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,t),[f,t]);return u("form",{onSubmit:o(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Su,{control:s,watch:d,data:r})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(Tu,{control:s,watch:d,data:r})}),n(a.Tabs.Panel,{value:"Bar",children:n(yu,{control:s,watch:d,data:r})}),n(a.Tabs.Panel,{value:"Line",children:n(xu,{control:s,watch:d,data:r})}),n(a.Tabs.Panel,{value:"80-20 Line",children:n(_u,{control:s,watch:d,data:r})}),n(a.Tabs.Panel,{value:"Zooming",children:n(v.Controller,{name:"dataZoom",control:s,render:({field:h})=>n(Gt,{...h})})})]})]})}function ku(e){const{dataZoom:t=Ve,...i}=e;return{...i,dataZoom:t}}function Iu(e){const{markLine:t=Ai,...i}=e;return{...i,markLine:t}}function Mu(e){const t=b.defaultsDeep({},e.x_axis.axisLabel,{rotate:0,formatter:{...ge}});return{...e,x_axis:{...e.x_axis,axisLabel:t}}}function Au(e){const{label_formatter:t=J}=e.bar;return{...e,bar:{...e.bar,label_formatter:t}}}function zu(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function Vu(e){const t={bar:{nameAlignment:"left"},line:{nameAlignment:"right"}};return b.defaultsDeep(t,e)}function Lu(e){console.log(e);const{x_axis:t,tooltip:i}=e.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:i}}}};return b.defaultsDeep(r,e)}class Eu extends j{constructor(){super(...arguments);D(this,"VERSION",8)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>({...i,version:2,config:ku(i.config)})),this.version(3,i=>({...i,version:3,config:Iu(i.config)})),this.version(4,i=>({...i,version:4,config:Mu(i.config)})),this.version(5,i=>({...i,version:5,config:Au(i.config)})),this.version(6,i=>({...i,version:6,config:zu(i.config)})),this.version(7,i=>({...i,version:7,config:Vu(i.config)})),this.version(8,i=>({...i,version:8,config:Lu(i.config)}))}}const Pu={displayName:"Pareto Chart",displayGroup:"ECharts-based charts",migrator:new Eu,name:"paretoChart",viewRender:fu,configRender:Du,createConfig(){return{version:8,config:b.cloneDeep(Ut)}},triggers:[Mi]},Rt={label_field:"",value_field:""};N.use([q.PieChart,te.CanvasRenderer]);const Bu={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
128
- {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 Ou({context:e}){const{value:t}=V(e.instanceData,"config"),i=e.data,{width:r,height:l}=e.viewport,{label_field:s,value_field:o}=b.defaults({},t,Rt),d=g.useMemo(()=>i.map(f=>({name:f[s],value:Number(f[o])})),[i,s,o]),c=g.useMemo(()=>({series:{labelLayout:function(f){const y=f.labelRect.x<r/2,h=f.labelLinePoints;return b.set(h,[2,0],y?f.labelRect.x:f.labelRect.x+f.labelRect.width),{labelLinePoints:h}}}}),[r]),p=b.merge({},Bu,c,{series:{data:d}});return!r||!l?null:n(ne,{echarts:N,option:p,style:{width:r,height:l},notMerge:!0,theme:"merico-light"})}function $u({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Rt),[t]),s=g.useMemo(()=>b.clone(l),[l]),{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return c(["label_field","value_field"]),n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[n(v.Controller,{control:o,name:"label_field",render:({field:x})=>n(E,{label:"Label Key",required:!0,data:r,...x})}),n(v.Controller,{control:o,name:"value_field",render:({field:x})=>n(E,{label:"Value Key",required:!0,data:r,...x})})]})]})})}class Nu extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Gu={displayName:"Pie Chart",displayGroup:"ECharts-based charts",migrator:new Nu,name:"pie",viewRender:Ou,configRender:$u,createConfig(){return{version:1,config:b.cloneDeep(Rt)}}};function qu(e){return n(k,{})}function Fu(e){return n(a.Text,{children:"Click heat block"})}const zi={id:"builtin:echarts:click-radar-chart:series",displayName:"Click radar chart series",nameRender:Fu,configRender:qu,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"}]},at={series_name_key:"name",background:{enabled:!0},label:{enabled:!0},dimensions:[]};function Vi(e){return e?t=>{try{return G(t).format(e)}catch(i){return console.error(i),t}}:t=>t}function ju(e){return{show:e.label.enabled,formatter:({dimensionIndex:t,value:i})=>Vi(e.dimensions[t].formatter)(i)}}function Wu(e){return({name:t,marker:i,value:r})=>{if(r.length===0)return"";const l=r.map((s,o)=>{const d=e.dimensions[o],c=Vi(d.formatter);return`
127
+ `,wu=()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(i=>!i),children:e?"Close":"Click to see params for Label Template"}),n(a.Collapse,{in:e,children:n(Ie.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:Cu})})]})};function _u({data:e,control:t,watch:i}){return i(["markLine"]),u(a.Stack,{children:[u(a.Stack,{spacing:2,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"markLine.color",control:t,render:({field:r})=>n(K,{...r})})]}),u(a.Stack,{spacing:4,children:[n(v.Controller,{name:"markLine.label_template",control:t,render:({field:r})=>n(a.Textarea,{autosize:!0,minRows:2,maxRows:4,label:"Label Template",sx:{flex:1},...r})}),n(wu,{})]})]})}function Su({data:e,control:t,watch:i}){return i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(it,{data:e,...r})})]}),n(v.Controller,{name:"x_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})})]})}function Tu({data:e,control:t,watch:i}){return i(["data_key"]),n(a.Stack,{children:n(v.Controller,{name:"data_key",control:t,render:({field:r})=>n(E,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...r})})})}function Du({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaults({},t,Ut),[t]),{control:s,handleSubmit:d,watch:o,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),o(["x_axis","data_key","bar","line","dataZoom"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,t),[f,t]);return u("form",{onSubmit:d(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Su,{control:s,watch:o,data:r})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(Tu,{control:s,watch:o,data:r})}),n(a.Tabs.Panel,{value:"Bar",children:n(yu,{control:s,watch:o,data:r})}),n(a.Tabs.Panel,{value:"Line",children:n(xu,{control:s,watch:o,data:r})}),n(a.Tabs.Panel,{value:"80-20 Line",children:n(_u,{control:s,watch:o,data:r})}),n(a.Tabs.Panel,{value:"Zooming",children:n(v.Controller,{name:"dataZoom",control:s,render:({field:h})=>n(Gt,{...h})})})]})]})}function ku(e){const{dataZoom:t=Ve,...i}=e;return{...i,dataZoom:t}}function Iu(e){const{markLine:t=Ai,...i}=e;return{...i,markLine:t}}function Mu(e){const t=b.defaultsDeep({},e.x_axis.axisLabel,{rotate:0,formatter:{...ge}});return{...e,x_axis:{...e.x_axis,axisLabel:t}}}function Au(e){const{label_formatter:t=J}=e.bar;return{...e,bar:{...e.bar,label_formatter:t}}}function zu(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function Vu(e){const t={bar:{nameAlignment:"left"},line:{nameAlignment:"right"}};return b.defaultsDeep(t,e)}function Lu(e){console.log(e);const{x_axis:t,tooltip:i}=e.x_axis.axisLabel.overflow,r={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:i}}}};return b.defaultsDeep(r,e)}class Eu extends j{constructor(){super(...arguments);D(this,"VERSION",8)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>({...i,version:2,config:ku(i.config)})),this.version(3,i=>({...i,version:3,config:Iu(i.config)})),this.version(4,i=>({...i,version:4,config:Mu(i.config)})),this.version(5,i=>({...i,version:5,config:Au(i.config)})),this.version(6,i=>({...i,version:6,config:zu(i.config)})),this.version(7,i=>({...i,version:7,config:Vu(i.config)})),this.version(8,i=>({...i,version:8,config:Lu(i.config)}))}}const Pu={displayName:"Pareto Chart",displayGroup:"ECharts-based charts",migrator:new Eu,name:"paretoChart",viewRender:fu,configRender:Du,createConfig(){return{version:8,config:b.cloneDeep(Ut)}},triggers:[Mi]},Rt={label_field:"",value_field:""};N.use([q.PieChart,te.CanvasRenderer]);const Bu={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
128
+ {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 Ou({context:e}){const{value:t}=V(e.instanceData,"config"),i=e.data,{width:r,height:l}=e.viewport,{label_field:s,value_field:d}=b.defaults({},t,Rt),o=g.useMemo(()=>i.map(f=>({name:f[s],value:Number(f[d])})),[i,s,d]),c=g.useMemo(()=>({series:{labelLayout:function(f){const y=f.labelRect.x<r/2,h=f.labelLinePoints;return b.set(h,[2,0],y?f.labelRect.x:f.labelRect.x+f.labelRect.width),{labelLinePoints:h}}}}),[r]),p=b.merge({},Bu,c,{series:{data:o}});return!r||!l?null:n(ne,{echarts:N,option:p,style:{width:r,height:l},notMerge:!0,theme:"merico-light"})}function $u({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Rt),[t]),s=g.useMemo(()=>b.clone(l),[l]),{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return c(["label_field","value_field"]),n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[n(v.Controller,{control:d,name:"label_field",render:({field:x})=>n(E,{label:"Label Key",required:!0,data:r,...x})}),n(v.Controller,{control:d,name:"value_field",render:({field:x})=>n(E,{label:"Value Key",required:!0,data:r,...x})})]})]})})}class Nu extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Gu={displayName:"Pie Chart",displayGroup:"ECharts-based charts",migrator:new Nu,name:"pie",viewRender:Ou,configRender:$u,createConfig(){return{version:1,config:b.cloneDeep(Rt)}}};function qu(e){return n(k,{})}function Fu(e){return n(a.Text,{children:"Click heat block"})}const zi={id:"builtin:echarts:click-radar-chart:series",displayName:"Click radar chart series",nameRender:Fu,configRender:qu,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"}]},at={series_name_key:"name",background:{enabled:!0},label:{enabled:!0},dimensions:[]};function Vi(e){return e?t=>{try{return G(t).format(e)}catch(i){return console.error(i),t}}:t=>t}function ju(e){return{show:e.label.enabled,formatter:({dimensionIndex:t,value:i})=>Vi(e.dimensions[t].formatter)(i)}}function Wu(e){return({name:t,marker:i,value:r})=>{if(r.length===0)return"";const l=r.map((s,d)=>{const o=e.dimensions[d],c=Vi(o.formatter);return`
129
129
  <tr>
130
- <td style="padding-left: 18px;">${d.name}</td>
130
+ <td style="padding-left: 18px;">${o.name}</td>
131
131
  <td style="text-align: right; "><strong>${c(s)}</strong></td>
132
132
  </tr>
133
133
  `});return`
@@ -153,15 +153,15 @@
153
153
  ${l.join("")}
154
154
  </tbody>
155
155
  </table>
156
- `}}const Uu={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function Ru(e,t){const i=["#66B4DB","#39BFA2","#E46464","#33A678","#EEBA00","#9D88CB","#939943","#E49792","#09A2B8","#AF5F6B","#6CA157","#09A2B8","#6398C7","#E692BA","#97B566","#8CACE2","#CA79AC","#6DBC80","#B08F4B","#826BAF"],r=e.dimensions.map(({name:o,max:d})=>({name:o,max:d})),l=t.map(o=>({value:e.dimensions.map(({data_key:d})=>o[d]),name:o[e.series_name_key]})),s={radar:{indicator:r,splitArea:{show:!1}},tooltip:{confine:!0,backgroundColor:"rgba(255,255,255,0.6)",formatter:Wu(e)},legend:{show:!0,bottom:0,left:"center",type:"scroll"},series:{type:"radar",data:l,symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:e.background.enabled?{opacity:.4}:void 0,label:ju(e)},color:i};return b.merge({},Uu,s)}N.use([q.RadarChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function Qu({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const o=g.useMemo(()=>b.keyBy(t,e.series_name_key),[t,e.series_name_key]),d=pe(l.triggerManager,zi.id),c=g.useCallback(y=>{const h=b.get(o,y.name,{error:"rowData is not found"});d.forEach(x=>{l.runInteraction(x.id,{...y,rowData:h})})},[o,d,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>Ru(b.defaultsDeep({},e,at),t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function Yu({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,at),[r]),o=e.data,{width:d,height:c}=e.viewport;return!d||!c||!s||b.isEmpty(s==null?void 0:s.dimensions)?null:n(a.Box,{children:n(Qu,{variables:l,width:d,height:c,data:o,conf:s,interactionManager:i})})}function Xu({control:e,index:t,remove:i,data:r}){return u(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`dimensions.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`dimensions.${t}.data_key`,control:e,render:({field:l})=>n(E,{label:"Data Key",required:!0,data:r,sx:{flex:1},...l})}),n(v.Controller,{name:`dimensions.${t}.max`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...l})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Formatter",labelPosition:"center"}),n(v.Controller,{name:`dimensions.${t}.formatter`,control:e,render:({field:l})=>n(he,{...l})})]}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:n(S.Trash,{size:16})})]},t)}function Zu({control:e,watch:t,data:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"dimensions"}),o=t("dimensions"),d=r.map((x,C)=>({...x,...o[C]})),c=()=>{const x=new Date().getTime().toString();l({id:x,name:x,data_key:"",max:100,formatter:J})},p=b.get(d,"0.id",null),[f,y]=g.useState(p);g.useEffect(()=>{y(x=>x||p)},[p]);const h=x=>{s(x);const C=b.get(d,"0.id",null);y(C)};return u(k,{children:[n(a.Divider,{mt:15,variant:"dashed",label:"Metrics",labelPosition:"center"}),u(a.Tabs,{value:f,onTabChange:y,styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((x,C)=>n(a.Tabs.Tab,{value:x.id,children:x.name?x.name:C+1},C)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(I.IconPlus,{size:18,color:"#228be6"})})]}),d.map((x,C)=>n(a.Tabs.Panel,{value:x.id,children:n(Xu,{data:i,control:e,index:C,remove:h})},C))]})]})}function Ku({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,at),[t]),{control:s,handleSubmit:o,watch:d,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),d(["series_name_key","background","label"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,l),[f,l]);return n("form",{onSubmit:o(i),children:u(a.Stack,{spacing:"xs",children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),n(a.Divider,{mt:15,variant:"dashed",label:"Basics",labelPosition:"center"}),n(v.Controller,{name:"series_name_key",control:s,render:({field:h})=>n(E,{label:"Series Name Field",required:!0,data:r,sx:{flex:1},...h})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"background.enabled",control:s,render:({field:h})=>n(a.Checkbox,{label:"Show background",checked:h.value,onChange:x=>h.onChange(x.currentTarget.checked)})}),n(v.Controller,{name:"label.enabled",control:s,render:({field:h})=>n(a.Checkbox,{label:"Show value label",checked:h.value,onChange:x=>h.onChange(x.currentTarget.checked)})})]}),n(Zu,{control:s,watch:d,data:r})]})})}function Ju(e){const{dimensions:t=[],...i}=e;function r({name:l="",data_key:s="",max:o=10,formatter:d=J}){return{name:l,data_key:s,max:o,formatter:d}}return{...i,dimensions:t.map(r)}}function Hu(e){const{dimensions:t=[],...i}=e;return{...i,dimensions:t.map(r=>({...r,id:r.id??r.name}))}}function ec(e){const t={background:{enabled:!0},label:{enabled:!0}};return b.defaultsDeep(t,e)}class tc extends j{constructor(){super(...arguments);D(this,"VERSION",4)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{config:r}=i;return{...i,version:2,config:Ju(r)}}),this.version(3,i=>{const{config:r}=i;return{...i,version:3,config:Hu(r)}}),this.version(4,i=>{const{config:r}=i;return{...i,version:4,config:ec(r)}})}}const nc={displayName:"Radar Chart",displayGroup:"ECharts-based charts",migrator:new tc,name:"radar",viewRender:Yu,configRender:Ku,createConfig:()=>({version:4,config:at}),triggers:[zi]};function ic({regression:e},t){const i=[],r=[];if(t.length===0)return{regressionSeries:i,regressionXAxes:r};const{transform:l,plot:s,name:o}=e,d=wi(l,t);return i.push({...s,name:o,data:d,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:i,regressionXAxes:r}}const rc={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function ac(e,t){const i=b.uniqBy(t.map(s=>[s[e.x_axis.data_key],s[e.regression.y_axis_data_key]]),0),{regressionSeries:r}=ic(e,i),l={xAxis:{type:"category",name:e.x_axis.name??"",axisTick:{show:!0,alignWithLabel:!0}},yAxis:{name:e.y_axis.name??"",axisLine:{show:!0}},series:[{data:i,name:e.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...r]};return b.defaultsDeep({},l,rc)}function lt(e,t,i){return 1-(1-e)*(t-1)/(t-i-1)}function lc(e,t){if(!t)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:i,x_axis:r,y_axis:l}=t,s=e.map(o=>[o[r.data_key],o[i.y_axis_data_key]]);if(i.transform.config.method==="linear"){const o=Ce.regressionLinear()(s),{a:d,b:c,rSquared:p}=o;return{expression:u(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:l.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:c}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:d}),n(a.Text,{children:"×"}),n(a.Text,{children:r.name})]}),rSquared:p,adjustedRSquared:lt(p,e.length,1)}}if(i.transform.config.method==="exponential"){const{a:o,b:d,rSquared:c}=Ce.regressionExp()(s);return{expression:u(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:l.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:o}),n(a.Text,{children:"×"}),u(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.exp("}),n(a.Text,{weight:"bold",color:"gray",children:d}),n(a.Text,{children:"×"}),n(a.Text,{children:r.name}),n(a.Text,{children:")"})]})]}),rSquared:c,adjustedRSquared:lt(c,e.length,1)}}if(i.transform.config.method==="logarithmic"){const{a:o,b:d,rSquared:c}=Ce.regressionLog()(s);return{expression:u(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:l.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:o}),n(a.Text,{children:"×"}),u(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.log("}),n(a.Text,{children:r.name}),n(a.Text,{children:")"}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:d})]})]}),rSquared:c,adjustedRSquared:lt(c,e.length,1)}}if(i.transform.config.method==="polynomial"){const o=Ce.regressionPoly().order(i.transform.config.order)(s),{rSquared:d}=o;return console.log(o),{expression:"",rSquared:d,adjustedRSquared:lt(d,e.length,1)}}return{expression:"",rSquared:0}}const Qt={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"}};N.use([A.DataZoomComponent,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function sc({context:e}){const{value:t}=V(e.instanceData,"config"),{width:i,height:r}=e.viewport,l=g.useMemo(()=>{var h;const f=e.data,y=(h=t==null?void 0:t.regression)==null?void 0:h.y_axis_data_key;return y?f.map(x=>typeof x[y]=="number"?x:{...x,[y]:Number(x[y])}):f},[e.data,t==null?void 0:t.regression.y_axis_data_key]),s=g.useMemo(()=>ac(b.defaultsDeep({},t,Qt),l),[t,l]),{expression:o,rSquared:d,adjustedRSquared:c}=g.useMemo(()=>lc(l,t),[t,l]);if(!i||!r||!t)return null;let p=r;return o&&(p-=20),u(a.Box,{children:[o&&n(a.Text,{align:"center",size:12,children:o}),u(a.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[n(ne,{echarts:N,option:s,style:{width:i-190,height:p},notMerge:!0,theme:"merico-light"}),d&&n(a.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:u("tbody",{children:[u("tr",{children:[n("td",{children:"R-Sq"}),n("td",{style:{textAlign:"right"},children:G(d).format({output:"percent",mantissa:1})})]}),u("tr",{children:[n("td",{children:"R-Sq(Adjusted)"}),n("td",{style:{textAlign:"right"},children:G(c).format({output:"percent",mantissa:1})})]})]})})]})]})}const oc=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function dc({control:e,watch:t,data:i}){const r=t("regression.transform.config.method");return u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"regression.name",control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:"regression.y_axis_data_key",control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:i,sx:{flex:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"regression.transform.config.method",control:e,render:({field:l})=>n(a.Select,{label:"Method",data:oc,sx:{flex:1},...l})}),r==="polynomial"&&n(v.Controller,{name:"regression.transform.config.order",control:e,render:({field:l})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...l})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"regression.plot.color",control:e,render:({field:l})=>n(K,{...l})})]})]})}function uc({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaults({},t,Qt),[t]),{control:s,handleSubmit:o,watch:d,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),d(["x_axis","y_axis","regression"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,t),[f,t]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[u(a.Accordion.Item,{value:"Axis",children:[n(a.Accordion.Control,{children:"Axis"}),u(a.Accordion.Panel,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.name",control:s,render:({field:h})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),n(v.Controller,{name:"x_axis.data_key",control:s,render:({field:h})=>n(E,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"y_axis.name",control:s,render:({field:h})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})})})]})]}),u(a.Accordion.Item,{value:"Regression",children:[n(a.Accordion.Control,{children:"Regression Line"}),n(a.Accordion.Panel,{children:n(dc,{control:s,watch:d,data:r})})]})]})]})})}class cc extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const pc={displayName:"Regression Chart",displayGroup:"Merico suite",migrator:new cc,name:"regressionChart",viewRender:sc,configRender:uc,createConfig(){return{version:1,config:b.cloneDeep(Qt)}}},st={content:""};function hc({context:e}){const{value:t}=V(e.instanceData,"config"),i=g.useMemo(()=>b.defaults({},t,st),[t]);return i!=null&&i.content?n(Ke,{value:i.content,styles:{root:{border:"none",height:"100%"},content:{padding:0}}}):null}function gc(){const{editor:e}=P.useRichTextEditorContext();return n(P.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(I.IconBorderAll,{stroke:1.5,size:16})})}const Yt=g.forwardRef(({value:e,onChange:t,styles:i={},label:r,onSubmit:l},s)=>{const[o,d]=g.useState(e),c=qn.useEditor({extensions:[Fn,Gn,P.Link,Ln,Vn,An,Bn.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),Nn,$n,On,En.configure({types:["heading","paragraph"]}),zn.configure({placeholder:"This is placeholder"}),Pn,Mn.Color],content:o,onUpdate:({editor:h})=>{d(h.getHTML())}});g.useEffect(()=>{d(e),c==null||c.commands.setContent(e)},[e]);const p=()=>{t(o),l==null||l()},f=e!==o,y=g.useMemo(()=>b.defaultsDeep({},{content:Dt},i),[i]);return u(a.Stack,{spacing:4,sx:{flexGrow:1,position:"relative"},children:[u(a.Group,{align:"center",children:[n(a.Text,{size:14,fw:500,children:r}),n(a.ActionIcon,{color:"blue",disabled:!f,onClick:p,children:n(I.IconDeviceFloppy,{size:18})})]}),u(P.RichTextEditor,{editor:c,styles:y,children:[u(P.RichTextEditor.Toolbar,{sticky:!0,stickyOffset:0,children:[n(P.RichTextEditor.ControlsGroup,{children:n(P.RichTextEditor.ColorPicker,{colors:["#25262b","#868e96","#fa5252","#e64980","#be4bdb","#7950f2","#4c6ef5","#228be6","#15aabf","#12b886","#40c057","#82c91e","#fab005","#fd7e14"]})}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.Bold,{}),n(P.RichTextEditor.Italic,{}),n(P.RichTextEditor.Underline,{}),n(P.RichTextEditor.Strikethrough,{}),n(P.RichTextEditor.ClearFormatting,{}),n(P.RichTextEditor.Highlight,{}),n(P.RichTextEditor.Code,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.H1,{}),n(P.RichTextEditor.H2,{}),n(P.RichTextEditor.H3,{}),n(P.RichTextEditor.H4,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.Blockquote,{}),n(P.RichTextEditor.Hr,{}),n(P.RichTextEditor.BulletList,{}),n(P.RichTextEditor.OrderedList,{}),n(P.RichTextEditor.Subscript,{}),n(P.RichTextEditor.Superscript,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.Link,{}),n(P.RichTextEditor.Unlink,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.AlignLeft,{}),n(P.RichTextEditor.AlignCenter,{}),n(P.RichTextEditor.AlignJustify,{}),n(P.RichTextEditor.AlignRight,{})]}),n(P.RichTextEditor.ControlsGroup,{children:n(gc,{})})]}),n(P.RichTextEditor.Content,{})]})]})});function mc({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaults({},t,st),[t]),{control:l,handleSubmit:s,watch:o,reset:d}=v.useForm({defaultValues:r});o("content"),g.useEffect(()=>{d(r)},[r]);const c=g.useRef(null),p=()=>{var f;return(f=c.current)==null?void 0:f.click()};return n("form",{onSubmit:s(i),style:{flexGrow:1,display:"flex",flexDirection:"column"},children:u(a.Stack,{spacing:"xs",sx:{flexGrow:1},children:[u(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:c,type:"submit",mr:5,variant:"filled",color:"blue",children:n(S.DeviceFloppy,{size:20})})]}),n(v.Controller,{name:"content",control:l,render:({field:f})=>n(Yt,{...f,styles:{root:{flexGrow:1}},label:"Content",onSubmit:p})})]})})}class fc extends j{constructor(){super(...arguments);D(this,"VERSION",1)}fixMalformedConfig(i){return b.defaults({},i,st)}configVersions(){this.version(1,i=>({version:1,config:this.fixMalformedConfig(i)}))}}const bc={displayName:"Rich Text",displayGroup:"Others",migrator:new fc,name:"richText",viewRender:hc,configRender:mc,createConfig(){return{version:1,config:b.cloneDeep(st)}}},qe={static:{type:"static",color:be.random().css()},dynamic:{type:"dynamic",func_content:["function getColor({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here",' // return "blue"',"}"].join(`
156
+ `}}const Uu={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function Ru(e,t){const i=["#66B4DB","#39BFA2","#E46464","#33A678","#EEBA00","#9D88CB","#939943","#E49792","#09A2B8","#AF5F6B","#6CA157","#09A2B8","#6398C7","#E692BA","#97B566","#8CACE2","#CA79AC","#6DBC80","#B08F4B","#826BAF"],r=e.dimensions.map(({name:d,max:o})=>({name:d,max:o})),l=t.map(d=>({value:e.dimensions.map(({data_key:o})=>d[o]),name:d[e.series_name_key]})),s={radar:{indicator:r,splitArea:{show:!1}},tooltip:{confine:!0,backgroundColor:"rgba(255,255,255,0.6)",formatter:Wu(e)},legend:{show:!0,bottom:0,left:"center",type:"scroll"},series:{type:"radar",data:l,symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:e.background.enabled?{opacity:.4}:void 0,label:ju(e)},color:i};return b.merge({},Uu,s)}N.use([q.RadarChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function Qu({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const d=g.useMemo(()=>b.keyBy(t,e.series_name_key),[t,e.series_name_key]),o=pe(l.triggerManager,zi.id),c=g.useCallback(y=>{const h=b.get(d,y.name,{error:"rowData is not found"});o.forEach(x=>{l.runInteraction(x.id,{...y,rowData:h})})},[d,o,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>Ru(b.defaultsDeep({},e,at),t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function Yu({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,at),[r]),d=e.data,{width:o,height:c}=e.viewport;return!o||!c||!s||b.isEmpty(s==null?void 0:s.dimensions)?null:n(a.Box,{children:n(Qu,{variables:l,width:o,height:c,data:d,conf:s,interactionManager:i})})}function Xu({control:e,index:t,remove:i,data:r}){return u(a.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`dimensions.${t}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`dimensions.${t}.data_key`,control:e,render:({field:l})=>n(E,{label:"Data Key",required:!0,data:r,sx:{flex:1},...l})}),n(v.Controller,{name:`dimensions.${t}.max`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...l})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Formatter",labelPosition:"center"}),n(v.Controller,{name:`dimensions.${t}.formatter`,control:e,render:({field:l})=>n(he,{...l})})]}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>i(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:n(S.Trash,{size:16})})]},t)}function Zu({control:e,watch:t,data:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"dimensions"}),d=t("dimensions"),o=r.map((x,C)=>({...x,...d[C]})),c=()=>{const x=new Date().getTime().toString();l({id:x,name:x,data_key:"",max:100,formatter:J})},p=b.get(o,"0.id",null),[f,y]=g.useState(p);g.useEffect(()=>{y(x=>x||p)},[p]);const h=x=>{s(x);const C=b.get(o,"0.id",null);y(C)};return u(k,{children:[n(a.Divider,{mt:15,variant:"dashed",label:"Metrics",labelPosition:"center"}),u(a.Tabs,{value:f,onTabChange:y,styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((x,C)=>n(a.Tabs.Tab,{value:x.id,children:x.name?x.name:C+1},C)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(I.IconPlus,{size:18,color:"#228be6"})})]}),o.map((x,C)=>n(a.Tabs.Panel,{value:x.id,children:n(Xu,{data:i,control:e,index:C,remove:h})},C))]})]})}function Ku({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,at),[t]),{control:s,handleSubmit:d,watch:o,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),o(["series_name_key","background","label"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,l),[f,l]);return n("form",{onSubmit:d(i),children:u(a.Stack,{spacing:"xs",children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),n(a.Divider,{mt:15,variant:"dashed",label:"Basics",labelPosition:"center"}),n(v.Controller,{name:"series_name_key",control:s,render:({field:h})=>n(E,{label:"Series Name Field",required:!0,data:r,sx:{flex:1},...h})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"background.enabled",control:s,render:({field:h})=>n(a.Checkbox,{label:"Show background",checked:h.value,onChange:x=>h.onChange(x.currentTarget.checked)})}),n(v.Controller,{name:"label.enabled",control:s,render:({field:h})=>n(a.Checkbox,{label:"Show value label",checked:h.value,onChange:x=>h.onChange(x.currentTarget.checked)})})]}),n(Zu,{control:s,watch:o,data:r})]})})}function Ju(e){const{dimensions:t=[],...i}=e;function r({name:l="",data_key:s="",max:d=10,formatter:o=J}){return{name:l,data_key:s,max:d,formatter:o}}return{...i,dimensions:t.map(r)}}function Hu(e){const{dimensions:t=[],...i}=e;return{...i,dimensions:t.map(r=>({...r,id:r.id??r.name}))}}function ec(e){const t={background:{enabled:!0},label:{enabled:!0}};return b.defaultsDeep(t,e)}class tc extends j{constructor(){super(...arguments);D(this,"VERSION",4)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{config:r}=i;return{...i,version:2,config:Ju(r)}}),this.version(3,i=>{const{config:r}=i;return{...i,version:3,config:Hu(r)}}),this.version(4,i=>{const{config:r}=i;return{...i,version:4,config:ec(r)}})}}const nc={displayName:"Radar Chart",displayGroup:"ECharts-based charts",migrator:new tc,name:"radar",viewRender:Yu,configRender:Ku,createConfig:()=>({version:4,config:at}),triggers:[zi]};function ic({regression:e},t){const i=[],r=[];if(t.length===0)return{regressionSeries:i,regressionXAxes:r};const{transform:l,plot:s,name:d}=e,o=wi(l,t);return i.push({...s,name:d,data:o,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:i,regressionXAxes:r}}const rc={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function ac(e,t){const i=b.uniqBy(t.map(s=>[s[e.x_axis.data_key],s[e.regression.y_axis_data_key]]),0),{regressionSeries:r}=ic(e,i),l={xAxis:{type:"category",name:e.x_axis.name??"",axisTick:{show:!0,alignWithLabel:!0}},yAxis:{name:e.y_axis.name??"",axisLine:{show:!0}},series:[{data:i,name:e.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...r]};return b.defaultsDeep({},l,rc)}function lt(e,t,i){return 1-(1-e)*(t-1)/(t-i-1)}function lc(e,t){if(!t)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:i,x_axis:r,y_axis:l}=t,s=e.map(d=>[d[r.data_key],d[i.y_axis_data_key]]);if(i.transform.config.method==="linear"){const d=Ce.regressionLinear()(s),{a:o,b:c,rSquared:p}=d;return{expression:u(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:l.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:c}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:o}),n(a.Text,{children:"×"}),n(a.Text,{children:r.name})]}),rSquared:p,adjustedRSquared:lt(p,e.length,1)}}if(i.transform.config.method==="exponential"){const{a:d,b:o,rSquared:c}=Ce.regressionExp()(s);return{expression:u(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:l.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:d}),n(a.Text,{children:"×"}),u(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.exp("}),n(a.Text,{weight:"bold",color:"gray",children:o}),n(a.Text,{children:"×"}),n(a.Text,{children:r.name}),n(a.Text,{children:")"})]})]}),rSquared:c,adjustedRSquared:lt(c,e.length,1)}}if(i.transform.config.method==="logarithmic"){const{a:d,b:o,rSquared:c}=Ce.regressionLog()(s);return{expression:u(a.Group,{position:"center",noWrap:!0,spacing:10,children:[n(a.Text,{children:l.name}),n(a.Text,{children:"="}),n(a.Text,{weight:"bold",color:"gray",children:d}),n(a.Text,{children:"×"}),u(a.Group,{position:"left",noWrap:!0,spacing:2,children:[n(a.Text,{children:"Math.log("}),n(a.Text,{children:r.name}),n(a.Text,{children:")"}),n(a.Text,{children:"+"}),n(a.Text,{weight:"bold",color:"gray",children:o})]})]}),rSquared:c,adjustedRSquared:lt(c,e.length,1)}}if(i.transform.config.method==="polynomial"){const d=Ce.regressionPoly().order(i.transform.config.order)(s),{rSquared:o}=d;return console.log(d),{expression:"",rSquared:o,adjustedRSquared:lt(o,e.length,1)}}return{expression:"",rSquared:0}}const Qt={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"}};N.use([A.DataZoomComponent,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer]);function sc({context:e}){const{value:t}=V(e.instanceData,"config"),{width:i,height:r}=e.viewport,l=g.useMemo(()=>{var h;const f=e.data,y=(h=t==null?void 0:t.regression)==null?void 0:h.y_axis_data_key;return y?f.map(x=>typeof x[y]=="number"?x:{...x,[y]:Number(x[y])}):f},[e.data,t==null?void 0:t.regression.y_axis_data_key]),s=g.useMemo(()=>ac(b.defaultsDeep({},t,Qt),l),[t,l]),{expression:d,rSquared:o,adjustedRSquared:c}=g.useMemo(()=>lc(l,t),[t,l]);if(!i||!r||!t)return null;let p=r;return d&&(p-=20),u(a.Box,{children:[d&&n(a.Text,{align:"center",size:12,children:d}),u(a.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[n(ne,{echarts:N,option:s,style:{width:i-190,height:p},notMerge:!0,theme:"merico-light"}),o&&n(a.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:u("tbody",{children:[u("tr",{children:[n("td",{children:"R-Sq"}),n("td",{style:{textAlign:"right"},children:G(o).format({output:"percent",mantissa:1})})]}),u("tr",{children:[n("td",{children:"R-Sq(Adjusted)"}),n("td",{style:{textAlign:"right"},children:G(c).format({output:"percent",mantissa:1})})]})]})})]})]})}const oc=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function dc({control:e,watch:t,data:i}){const r=t("regression.transform.config.method");return u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"regression.name",control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:"regression.y_axis_data_key",control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:i,sx:{flex:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"regression.transform.config.method",control:e,render:({field:l})=>n(a.Select,{label:"Method",data:oc,sx:{flex:1},...l})}),r==="polynomial"&&n(v.Controller,{name:"regression.transform.config.order",control:e,render:({field:l})=>n(a.NumberInput,{label:"Order",sx:{flex:1},...l})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:"regression.plot.color",control:e,render:({field:l})=>n(K,{...l})})]})]})}function uc({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaults({},t,Qt),[t]),{control:s,handleSubmit:d,watch:o,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),o(["x_axis","y_axis","regression"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,t),[f,t]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[u(a.Accordion.Item,{value:"Axis",children:[n(a.Accordion.Control,{children:"Axis"}),u(a.Accordion.Panel,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.name",control:s,render:({field:h})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),n(v.Controller,{name:"x_axis.data_key",control:s,render:({field:h})=>n(E,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"y_axis.name",control:s,render:({field:h})=>n(a.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})})})]})]}),u(a.Accordion.Item,{value:"Regression",children:[n(a.Accordion.Control,{children:"Regression Line"}),n(a.Accordion.Panel,{children:n(dc,{control:s,watch:o,data:r})})]})]})]})})}class cc extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const pc={displayName:"Regression Chart",displayGroup:"Merico suite",migrator:new cc,name:"regressionChart",viewRender:sc,configRender:uc,createConfig(){return{version:1,config:b.cloneDeep(Qt)}}},st={content:""};function hc({context:e}){const{value:t}=V(e.instanceData,"config"),i=g.useMemo(()=>b.defaults({},t,st),[t]);return i!=null&&i.content?n(Ke,{value:i.content,styles:{root:{border:"none",height:"100%"},content:{padding:0}}}):null}function gc(){const{editor:e}=P.useRichTextEditorContext();return n(P.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(I.IconBorderAll,{stroke:1.5,size:16})})}const Yt=g.forwardRef(({value:e,onChange:t,styles:i={},label:r,onSubmit:l},s)=>{const[d,o]=g.useState(e),c=qn.useEditor({extensions:[Fn,Gn,P.Link,Ln,Vn,An,Bn.configure({resizable:!1,HTMLAttributes:{class:"rich-text-table-render"}}),Nn,$n,On,En.configure({types:["heading","paragraph"]}),zn.configure({placeholder:"This is placeholder"}),Pn,Mn.Color],content:d,onUpdate:({editor:h})=>{o(h.getHTML())}});g.useEffect(()=>{o(e),c==null||c.commands.setContent(e)},[e]);const p=()=>{t(d),l==null||l()},f=e!==d,y=g.useMemo(()=>b.defaultsDeep({},{content:Dt},i),[i]);return u(a.Stack,{spacing:4,sx:{flexGrow:1,position:"relative"},children:[u(a.Group,{align:"center",children:[n(a.Text,{size:14,fw:500,children:r}),n(a.ActionIcon,{color:"blue",disabled:!f,onClick:p,children:n(I.IconDeviceFloppy,{size:18})})]}),u(P.RichTextEditor,{editor:c,styles:y,children:[u(P.RichTextEditor.Toolbar,{sticky:!0,stickyOffset:0,children:[n(P.RichTextEditor.ControlsGroup,{children:n(P.RichTextEditor.ColorPicker,{colors:["#25262b","#868e96","#fa5252","#e64980","#be4bdb","#7950f2","#4c6ef5","#228be6","#15aabf","#12b886","#40c057","#82c91e","#fab005","#fd7e14"]})}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.Bold,{}),n(P.RichTextEditor.Italic,{}),n(P.RichTextEditor.Underline,{}),n(P.RichTextEditor.Strikethrough,{}),n(P.RichTextEditor.ClearFormatting,{}),n(P.RichTextEditor.Highlight,{}),n(P.RichTextEditor.Code,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.H1,{}),n(P.RichTextEditor.H2,{}),n(P.RichTextEditor.H3,{}),n(P.RichTextEditor.H4,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.Blockquote,{}),n(P.RichTextEditor.Hr,{}),n(P.RichTextEditor.BulletList,{}),n(P.RichTextEditor.OrderedList,{}),n(P.RichTextEditor.Subscript,{}),n(P.RichTextEditor.Superscript,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.Link,{}),n(P.RichTextEditor.Unlink,{})]}),u(P.RichTextEditor.ControlsGroup,{children:[n(P.RichTextEditor.AlignLeft,{}),n(P.RichTextEditor.AlignCenter,{}),n(P.RichTextEditor.AlignJustify,{}),n(P.RichTextEditor.AlignRight,{})]}),n(P.RichTextEditor.ControlsGroup,{children:n(gc,{})})]}),n(P.RichTextEditor.Content,{})]})]})});function mc({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaults({},t,st),[t]),{control:l,handleSubmit:s,watch:d,reset:o}=v.useForm({defaultValues:r});d("content"),g.useEffect(()=>{o(r)},[r]);const c=g.useRef(null),p=()=>{var f;return(f=c.current)==null?void 0:f.click()};return n("form",{onSubmit:s(i),style:{flexGrow:1,display:"flex",flexDirection:"column"},children:u(a.Stack,{spacing:"xs",sx:{flexGrow:1},children:[u(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:c,type:"submit",mr:5,variant:"filled",color:"blue",children:n(S.DeviceFloppy,{size:20})})]}),n(v.Controller,{name:"content",control:l,render:({field:f})=>n(Yt,{...f,styles:{root:{flexGrow:1}},label:"Content",onSubmit:p})})]})})}class fc extends j{constructor(){super(...arguments);D(this,"VERSION",1)}fixMalformedConfig(i){return b.defaults({},i,st)}configVersions(){this.version(1,i=>({version:1,config:this.fixMalformedConfig(i)}))}}const bc={displayName:"Rich Text",displayGroup:"Others",migrator:new fc,name:"richText",viewRender:hc,configRender:mc,createConfig(){return{version:1,config:b.cloneDeep(st)}}},qe={static:{type:"static",color:be.random().css()},dynamic:{type:"dynamic",func_content:["function getColor({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here",' // return "blue"',"}"].join(`
157
157
  `)}},Li={id:"builtin:echarts:click-scatter-chart:series",displayName:"Click Scatter",nameRender:vc,configRender:yc,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 yc(e){return n(k,{})}function vc(e){return n(a.Text,{children:"Click scatter"})}const Ei={enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
158
- `)},Pi={label:ve.on_axis,tooltip:ve.in_tooltip},Xt={scatter:{y_data_key:"",name_data_key:"",symbolSize:{type:"static",size:10},color:qe.static,label_position:"right",label_overflow:Pi},stats:{templates:{top:"",bottom:""}},x_axis:{name:"",data_key:"",axisLabel:{rotate:0,formatter:{...Ei}}},y_axes:[{name:"Y Axis",position:"left",nameAlignment:"center",label_formatter:J,min:"",max:"",show:!0}],tooltip:{metrics:[]},reference_lines:[],reference_areas:[],dataZoom:Ve};function xc(e){const t=e.y_axes.some(l=>!!l.name);let i=10;t&&(i+=20),e.dataZoom.x_axis_slider&&(i+=20);let r=5;return e.x_axis.name&&(r+=15),{top:i,bottom:r}}function ot(e,t){if(e)return t[e]??void 0}function Cc({reference_areas:e,variableValueMap:t}){const i=e.map(r=>[{name:r.content.text,value:r.content.text,itemStyle:r.itemStyle,label:r.label,xAxis:ot(r.leftBottomPoint.x_data_key,t),yAxis:ot(r.leftBottomPoint.y_data_key,t)},{xAxis:ot(r.rightTopPoint.x_data_key,t),yAxis:ot(r.rightTopPoint.y_data_key,t)}]);return{type:"scatter",name:"ref_areas",silent:!0,data:[],markArea:{data:i}}}function wc({type:e,...t},i,r,l){if(!e)return 10;if(e==="static"){const{size:d}=t;return d}const{func_content:s}=t,o=b.keyBy(i,r);return(d,c)=>{let p;c.name?p=o[c.name]:p=i[c.dataIndex];try{return new Function(`return ${s}`)()({rowData:p,params:c,variables:l},{lodash:b,interpolate:Ye.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function _c({type:e,...t},i){if(!e)return qe.static.color;if(e==="static"){const{color:l}=t;return l}const{func_content:r}=t;return({value:l})=>{try{return new Function(`return ${r}`)()({rowData:l,variables:i},{lodash:b,interpolate:Ye.interpolate})}catch(s){return console.error(`[getSeriesColor] failed parsing custom function, error: ${s.message}`),10}}}function Sc(e,t,i,r){return e.map(l=>{const s=l.orientation==="horizontal",o=s?"yAxis":"xAxis",d=s?"insideEndTop":"end";return{name:l.name,type:"line",hide_in_legend:!l.show_in_legend,yAxisIndex:l.yAxisIndex,data:[],lineStyle:l.lineStyle,markLine:{data:[{name:l.name,[o]:Number(i[l.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?nt(l.template,t,r):""},position:d}}}})}function Tc({x_axis:e,scatter:t},i,r,l){return{label:{show:!!t.label_position,position:t.label_position,...Se(t.label_overflow.label),formatter:({value:s})=>s[t.name_data_key]},type:"scatter",name:"",xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{color:_c(t.color,r)},symbolSize:wc(t.symbolSize,i,e.data_key,r),encode:{x:e.data_key,y:t.y_data_key}}}function Dc(e,t,i,r,l,s,o){return[Tc(e,r,o)].concat(Sc(e.reference_lines,s,o,r)).concat(Cc({reference_areas:e.reference_areas,variableValueMap:o}))}function Bi({enabled:e,func_content:t}){return(i,r)=>{if(!e)return i;try{return new Function(`return ${t}`)()(i,r)}catch(l){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${l.message}`),i}}}function kc(e,t){const i=e.find(o=>o.axisDim==="x"&&o.axisId==="main-x-axis");if(!i)return"";const{name:r,axisValue:l,axisIndex:s}=i;return t.x_axis.axisLabel.formatter.enabled?Bi(t.x_axis.axisLabel.formatter)(l,s):l}const Ic=e=>{try{return G(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Mc(e,t){const{scatter:i}=e;return{confine:!0,formatter:function(r){const l=t[0]??t.default,s=Array.isArray(r)?r:[r];if(s.length===0)return"";const o=kc(s,e),d=_e(e.scatter.label_overflow.tooltip),c=s.map(({value:h})=>`
158
+ `)},Pi={label:ve.on_axis,tooltip:ve.in_tooltip},Xt={scatter:{y_data_key:"",name_data_key:"",symbolSize:{type:"static",size:10},color:qe.static,label_position:"right",label_overflow:Pi},stats:{templates:{top:"",bottom:""}},x_axis:{name:"",data_key:"",axisLabel:{rotate:0,formatter:{...Ei}}},y_axes:[{name:"Y Axis",position:"left",nameAlignment:"center",label_formatter:J,min:"",max:"",show:!0}],tooltip:{metrics:[]},reference_lines:[],reference_areas:[],dataZoom:Ve};function xc(e){const t=e.y_axes.some(l=>!!l.name);let i=10;t&&(i+=20),e.dataZoom.x_axis_slider&&(i+=20);let r=5;return e.x_axis.name&&(r+=15),{top:i,bottom:r}}function ot(e,t){if(e)return t[e]??void 0}function Cc({reference_areas:e,variableValueMap:t}){const i=e.map(r=>[{name:r.content.text,value:r.content.text,itemStyle:r.itemStyle,label:r.label,xAxis:ot(r.leftBottomPoint.x_data_key,t),yAxis:ot(r.leftBottomPoint.y_data_key,t)},{xAxis:ot(r.rightTopPoint.x_data_key,t),yAxis:ot(r.rightTopPoint.y_data_key,t)}]);return{type:"scatter",name:"ref_areas",silent:!0,data:[],markArea:{data:i}}}function wc({type:e,...t},i,r,l){if(!e)return 10;if(e==="static"){const{size:o}=t;return o}const{func_content:s}=t,d=b.keyBy(i,r);return(o,c)=>{let p;c.name?p=d[c.name]:p=i[c.dataIndex];try{return new Function(`return ${s}`)()({rowData:p,params:c,variables:l},{lodash:b,interpolate:Ye.interpolate})}catch(f){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${f.message}`),10}}}function _c({type:e,...t},i){if(!e)return qe.static.color;if(e==="static"){const{color:l}=t;return l}const{func_content:r}=t;return({value:l})=>{try{return new Function(`return ${r}`)()({rowData:l,variables:i},{lodash:b,interpolate:Ye.interpolate})}catch(s){return console.error(`[getSeriesColor] failed parsing custom function, error: ${s.message}`),10}}}function Sc(e,t,i,r){return e.map(l=>{const s=l.orientation==="horizontal",d=s?"yAxis":"xAxis",o=s?"insideEndTop":"end";return{name:l.name,type:"line",hide_in_legend:!l.show_in_legend,yAxisIndex:l.yAxisIndex,data:[],lineStyle:l.lineStyle,markLine:{data:[{name:l.name,[d]:Number(i[l.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?nt(l.template,t,r):""},position:o}}}})}function Tc({x_axis:e,scatter:t},i,r,l){return{label:{show:!!t.label_position,position:t.label_position,...Se(t.label_overflow.label),formatter:({value:s})=>s[t.name_data_key]},type:"scatter",name:"",xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{color:_c(t.color,r)},symbolSize:wc(t.symbolSize,i,e.data_key,r),encode:{x:e.data_key,y:t.y_data_key}}}function Dc(e,t,i,r,l,s,d){return[Tc(e,r,d)].concat(Sc(e.reference_lines,s,d,r)).concat(Cc({reference_areas:e.reference_areas,variableValueMap:d}))}function Bi({enabled:e,func_content:t}){return(i,r)=>{if(!e)return i;try{return new Function(`return ${t}`)()(i,r)}catch(l){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${l.message}`),i}}}function kc(e,t){const i=e.find(d=>d.axisDim==="x"&&d.axisId==="main-x-axis");if(!i)return"";const{name:r,axisValue:l,axisIndex:s}=i;return t.x_axis.axisLabel.formatter.enabled?Bi(t.x_axis.axisLabel.formatter)(l,s):l}const Ic=e=>{try{return G(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function Mc(e,t){const{scatter:i}=e;return{confine:!0,formatter:function(r){const l=t[0]??t.default,s=Array.isArray(r)?r:[r];if(s.length===0)return"";const d=kc(s,e),o=_e(e.scatter.label_overflow.tooltip),c=s.map(({value:h})=>`
159
159
  <th style="text-align: right; padding-right: 1em">
160
- <div style="${d}">${h[i.name_data_key]}</div>
160
+ <div style="${o}">${h[i.name_data_key]}</div>
161
161
  </th>
162
162
  `);c.unshift("<th></th>");const p=[`<tr>
163
163
  <th style="text-align: right;">${e.x_axis.name}</th>
164
- ${s.map(h=>`<td style="text-align: right; padding: 0 1em;">${o}</td>`).join("")}
164
+ ${s.map(h=>`<td style="text-align: right; padding: 0 1em;">${d}</td>`).join("")}
165
165
  </tr>`,`<tr>
166
166
  <th style="text-align: right;">${e.y_axes[0].name}</th>
167
167
  ${s.map(({value:h})=>`
@@ -176,12 +176,12 @@
176
176
  <thead><tr>${c.join("")}</tr></thead>
177
177
  <tbody>${p.join("")}</tbody>
178
178
  </table>
179
- `}}}function Ac(e,t){const i=t.every(l=>!Number.isNaN(Number(l))),{axisLabel:r}=e.x_axis;return[{data:t,name:e.x_axis.name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:i?"value":"category",axisLabel:{...r,formatter:Bi(r.formatter)}}]}function zc(e,t){return e.y_axes.map(({nameAlignment:i,min:r,max:l,...s},o)=>{let d=s.position;return d||(d=o>0?"right":"left"),{...s,min:r||void 0,max:l||void 0,position:d,axisLabel:{show:!0,formatter:t[o]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:i},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}function Vc(){return{show:!1,bottom:0,left:"center",type:"scroll"}}const Lc={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 Ec(e,t,i){const r=i.reduce((p,f)=>{const y=Ae(f,t);return p[f.name]=Te(f,y),p},{}),l=e.y_axes.reduce((p,{label_formatter:f},y)=>(p[y]=function(x){let C=x;if(typeof x=="object"&&(Array.isArray(x.value)&&x.value.length===2?C=x.value[1]:C=x.value),!f)return C;try{return G(C).format(f)}catch(T){return console.error(T),C}},p),{default:({value:p})=>p}),s=b.uniq(t.map(p=>p[e.x_axis.data_key])),o=s.every(p=>!Number.isNaN(Number(p))),d=Dc(e,s,o,t,l,i,r),c={xAxis:Ac(e,s),yAxis:zc(e,l),series:d,dataset:[{source:t}],tooltip:Mc(e,l),grid:xc(e),legend:Vc(),dataZoom:$t(e.dataZoom)};return b.defaultsDeep({},c,Lc)}N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer,A.MarkLineComponent,A.MarkAreaComponent]);function Oi(e){return e.trim().length>0}function Pc({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const o=g.useMemo(()=>b.keyBy(t,e.x_axis.data_key),[t,e.x_axis.data_key]),d=pe(l.triggerManager,Li.id),c=g.useCallback(y=>{const h=y.value[0],x=b.get(o,h,{error:"rowData is not found"});d.forEach(C=>{l.runInteraction(C.id,{...y,rowData:x})})},[o,d,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>Ec(e,t,s),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function Bc({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,Xt),[r]),o=e.data,{width:d,height:c}=e.viewport,{ref:p,height:f}=U.useElementSize(),{ref:y,height:h}=U.useElementSize(),x=g.useMemo(()=>{const{stats:{templates:T}}=s;return{top:Ge(T.top,l,o),bottom:Ge(T.bottom,l,o)}},[s,o]),C=Math.max(0,c-f-h);return u(a.Box,{children:[n(a.Text,{ref:p,align:"left",size:"xs",pl:"sm",sx:{display:Oi(s.stats.templates.top)?"block":"none"},children:Object.values(x.top).map(T=>T)}),n(Pc,{variables:l,width:d,height:C,data:o,conf:s,interactionManager:i}),n(a.Text,{ref:y,align:"left",size:"xs",pl:"sm",sx:{display:Oi(s.stats.templates.bottom)?"block":"none"},children:Object.values(x.bottom).map(T=>T)})]})}const Oc=g.forwardRef(({value:e,onChange:t,xAxisOptions:i,yAxisOptions:r,variableOptions:l},s)=>{const o=(d,c)=>{const p=b.cloneDeep(e);b.set(p,d,c),t(p)};return u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Content",labelPosition:"right"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Content Text",value:e.content.text,onChange:d=>o("content.text",d.currentTarget.value)}),n(jt,{label:"Text Position",value:e.label.position,onChange:d=>o("label.position",d)})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Endpoints",labelPosition:"right"}),u(a.Group,{grow:!0,noWrap:!0,children:[i&&n(a.Select,{label:"X Axis",data:i,value:e.xAxisIndex,onChange:d=>o("xAxisIndex",d)}),r&&n(a.Select,{label:"Y Axis",data:r,value:e.yAxisIndex,onChange:d=>o("xAxisIndex",d)})]}),u(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Left-Bottom Point"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:l,value:e.leftBottomPoint.x_data_key,onChange:d=>o("leftBottomPoint.x_data_key",d??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:l,value:e.leftBottomPoint.y_data_key,onChange:d=>o("leftBottomPoint.y_data_key",d??""),clearable:!0})]})]}),u(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Right-Top Point"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:l,value:e.rightTopPoint.x_data_key,onChange:d=>o("rightTopPoint.x_data_key",d??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:l,value:e.rightTopPoint.y_data_key,onChange:d=>o("rightTopPoint.y_data_key",d??""),clearable:!0})]})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Style",labelPosition:"right"}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Background Color"}),n(K,{value:e.itemStyle.color,onChange:d=>o("itemStyle.color",d)})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Text Color"}),n(K,{value:e.label.color,onChange:d=>o("label.color",d)})]})]})});function $c(){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 Nc({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_areas"}),o=t("reference_areas"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>{const h=$c();l(h)},p=g.useMemo(()=>i.map(h=>({label:h.name,value:h.name})),[i]),f=t("y_axes"),y=g.useMemo(()=>f.map(({name:h},x)=>({label:h,value:x.toString()})),[f]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:x.toString(),children:x+1},x)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:x.toString(),children:n(v.Controller,{name:`reference_areas.${x}`,control:e,render:({field:C})=>u(a.Stack,{children:[n(Oc,{variableOptions:p,yAxisOptions:y,...C}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(I.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>s(x),children:"Delete this Reference Area"})]})})},x))]})}const Gc=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],qc=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function Fc({control:e,index:t,remove:i,watch:r,variableOptions:l,yAxisOptions:s}){const o=r(`reference_lines.${t}.orientation`);return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:d})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...d})}),n(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:d})=>n(a.Select,{label:"Value",required:!0,data:l,sx:{flex:1},...d})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:d})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...d})}),u(a.Group,{grow:!0,children:[u(a.Stack,{children:[n(v.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:d})=>n(a.Select,{label:"Orientation",data:qc,required:!0,sx:{flex:1},...d})}),o==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),o==="horizontal"&&n(v.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:d,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...p,value:(d==null?void 0:d.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:d})=>n(a.Select,{label:"Line Type",data:Gc,sx:{flexGrow:1},...d})}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:d})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...d})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:d})=>n(K,{...d})})]}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function jc({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),o=t("reference_lines"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>{const h={name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:be.random().css()},show_in_legend:!1,yAxisIndex:0};l(h)},p=g.useMemo(()=>i.map(h=>({label:h.name,value:h.name})),[i]),f=t("y_axes"),y=g.useMemo(()=>f.map(({name:h},x)=>({label:h,value:x.toString()})),[f]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:x.toString(),children:x+1},x)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:x.toString(),children:n(Fc,{control:e,index:x,remove:s,watch:t,variableOptions:p,yAxisOptions:y})},x))]})}const Wc=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Uc=({value:e,onChange:t,data:i})=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e),c=()=>{s();const{type:h,func_content:x}=o,C={type:h,func_content:x};d(C),t(C)},p=()=>{s(),d(e)},f=h=>{d(x=>({...x,func_content:h}))},y=()=>{f(qe.dynamic.func_content)};return u(k,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic color",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(Wc,{value:o.func_content,onChange:f}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Rc=({value:e,onChange:t,data:i})=>e.type!=="dynamic"?null:n(Uc,{value:e,onChange:t,data:i}),Qc=({value:e,onChange:t})=>{if(e.type!=="static")return null;const i=r=>{t({...e,color:r})};return n(a.ColorInput,{label:" ",format:"rgb",value:e.color,onChange:i})},Yc=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],Xc=g.forwardRef(({label:e="Color",value:t,onChange:i,data:r},l)=>{const s=o=>{i({...qe[o]})};return u(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:l,label:e,data:Yc,value:t.type,onChange:s,sx:{flexGrow:1}}),n(Qc,{value:t,onChange:i}),n(Rc,{value:t,onChange:i,data:r})]})}),Zc=g.forwardRef(({value:e,onChange:t},i)=>{const r=s=>{t({...e,label:s})},l=s=>{t({...e,tooltip:s})};return u(a.Stack,{ref:i,spacing:0,children:[n(He,{sectionTitle:"Overflow on Chart",value:e.label,onChange:r}),n(He,{sectionTitle:"Overflow in Tooltip",value:e.tooltip,onChange:l})]})}),Kc=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},$i={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
180
- `)}},Jc=({value:e,onChange:t,data:i})=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e),c=()=>{s();const{type:h,func_content:x}=o,C={type:h,func_content:x};d(C),t(C)},p=()=>{s(),d(e)},f=h=>{d(x=>({...x,func_content:h}))},y=()=>{f($i.dynamic.func_content)};return u(k,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(Kc,{value:o.func_content,onChange:f}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Hc=({value:e,onChange:t,data:i})=>e.type!=="dynamic"?null:n(Jc,{value:e,onChange:t,data:i}),ep=({value:e,onChange:t})=>{if(e.type!=="static")return null;const i=r=>{t({...e,size:r})};return n(k,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:i})})},tp=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],np=g.forwardRef(({label:e="Size",value:t,onChange:i,data:r},l)=>{const s=o=>{i({...$i[o]})};return u(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:l,label:e,data:tp,value:t.type,onChange:s,sx:{flexGrow:1}}),n(ep,{value:t,onChange:i}),n(Hc,{value:t,onChange:i,data:r})]})}),ip=[{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 rp({data:e,control:t,watch:i}){return i(["scatter"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"scatter.name_data_key",control:t,render:({field:r})=>n(E,{label:"Name Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"scatter.y_data_key",control:t,render:({field:r})=>n(E,{label:"Value Data Field",required:!0,data:e,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Style",labelPosition:"center"}),n(v.Controller,{name:"scatter.symbolSize",control:t,render:({field:r})=>n(np,{label:"Size",data:e,...r})}),n(v.Controller,{name:"scatter.color",control:t,render:({field:r})=>n(Xc,{data:e,...r})}),n(a.Divider,{mb:-15,label:"Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"scatter.label_position",control:t,render:({field:r})=>n(a.Select,{label:"Label Position",data:ip,...r})})}),n(v.Controller,{name:"scatter.label_overflow",control:t,render:({field:r})=>n(Zc,{...r})})]})}function ap({control:e,watch:t}){return t("stats"),n(a.Stack,{children:u(a.Stack,{spacing:0,children:[n(v.Controller,{name:"stats.templates.top",control:e,render:({field:i})=>n(Oe,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...i})}),n(v.Controller,{name:"stats.templates.bottom",control:e,render:({field:i})=>n(Oe,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...i})})]})})}const lp=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`tooltip.metrics.${i}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`tooltip.metrics.${i}.data_key`,control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:t,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Metric"})]}),sp=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"tooltip.metrics"}),o=t("tooltip.metrics"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>l({id:Date.now().toString(),data_key:"",name:""}),p=t("tooltip.metrics.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(lp,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function op({data:e,control:t,watch:i}){return n(sp,{control:t,watch:i,data:e})}const dp=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},up=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e);g.useEffect(()=>{d(e)},[e]);const c=x=>{d({...o,enabled:x})},p=()=>{s();const{enabled:x,func_content:C}=o,T={enabled:x,func_content:C};d(T),t(T)},f=()=>{s(),d(e)},y=x=>{d(C=>({...C,func_content:x}))},h=()=>{y(Ei.func_content)};return u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:o.enabled,onChange:x=>c(x.currentTarget.checked)}),n(dp,{value:o.func_content,onChange:y,disabled:!o.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:p,children:"OK"})]})]})]})})]})});function cp({data:e,control:t,watch:i}){return i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(up,{data:e,...r})})]})]})}const pp=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],hp=[{label:"left",value:"left"},{label:"right",value:"right"}];function gp({control:e,index:t,remove:i}){return u(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),n(v.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:pp,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:r})=>n(a.Select,{label:"Position",required:!0,data:hp,sx:{flex:1},...r})})}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:r})=>n(he,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:r})=>n(a.TextInput,{label:"Min",...r})}),n(v.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:r})=>n(a.TextInput,{label:"Max",...r})})]})]}),n(a.Button,{mt:20,leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),disabled:t===0,children:"Delete this YAxis"})]})}function mp({control:e,watch:t}){const{fields:i,append:r,remove:l}=v.useFieldArray({control:e,name:"y_axes"}),s=t("y_axes"),o=i.map((c,p)=>({...c,...s[p]})),d=()=>r({name:"",label_formatter:J});return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((c,p)=>n(a.Tabs.Tab,{value:p.toString(),children:p+1},p)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((c,p)=>n(a.Tabs.Panel,{value:p.toString(),children:n(gp,{control:e,index:p,remove:l})},p))]})}function fp(e){return e||{templates:{top:"",bottom:""}}}function bp({reference_lines:e=[],stats:t,...i}){return{reference_lines:e,stats:fp(t),...i}}function yp({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,s=g.useMemo(()=>b.defaultsDeep({},t,Xt),[t]),o=g.useMemo(()=>bp(s),[s]);g.useEffect(()=>{!b.isEqual(s,o)&&(console.log("config malformed, resetting to defaults",s,o),i(o))},[s,o]);const{control:d,handleSubmit:c,watch:p,getValues:f,reset:y}=v.useForm({defaultValues:o});g.useEffect(()=>{y(o)},[o]);const h=f(),x=g.useMemo(()=>!b.isEqual(h,s),[h,s]);return p(["dataZoom"]),n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:c(i),children:[u(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:!x,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(cp,{control:d,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(mp,{control:d,watch:p})}),n(a.Tabs.Panel,{value:"Scatter",children:n(rp,{control:d,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(op,{control:d,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Stats",children:n(ap,{control:d,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(jc,{variables:r,control:d,watch:p})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(Nc,{variables:r,control:d,watch:p})}),n(a.Tabs.Panel,{value:"Zooming",children:n(v.Controller,{name:"dataZoom",control:d,render:({field:C})=>n(Gt,{...C})})})]})]})})}function vp(e){const{dataZoom:t=Ve,...i}=e;return{...i,dataZoom:t}}function xp(e){const t={scatter:{label_overflow:Pi}};return b.defaultsDeep(t,e)}function Cp(e){const{color:t}=e.scatter;return typeof t=="string"?{...e,scatter:{...e.scatter,color:{...qe.static,color:t}}}:e}function wp(e){const t=e.reference_lines.map(i=>{const{lineStyle:r={type:"dashed",width:1,color:be.random().css()},show_in_legend:l=!1,yAxisIndex:s=0}=i;return{...i,lineStyle:r,show_in_legend:l,yAxisIndex:s}});return{...e,reference_lines:t}}class _p extends j{constructor(){super(...arguments);D(this,"VERSION",7)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{tooltip:r={metrics:[]},...l}=i.config;return{...i,version:2,config:{...l,tooltip:r}}}),this.version(3,i=>({...i,version:3,config:vp(i.config)})),this.version(4,i=>{const{config:r}=i;return{...i,version:5,config:xp(r)}}),this.version(6,i=>{const{config:r}=i;return{...i,version:6,config:Cp(r)}}),this.version(7,i=>{const{config:r}=i;return{...i,version:7,config:wp(r)}})}}const Sp={displayName:"Scatter Chart",displayGroup:"ECharts-based charts",migrator:new _p,name:"scatterChart",viewRender:Bc,configRender:yp,createConfig(){return{version:7,config:b.cloneDeep(Xt)}},triggers:[Li]},Zt={align:"center",template:"The variable ${value} is defined in Variables section"};function Tp(e){if("variables"in e)return e;const{align:t,size:i,weight:r,color:l,content:{prefix:s="",data_field:o="value",formatter:d={output:"number",mantissa:0},postfix:c=""}={}}=e;return{align:t,template:`${s} \${value} ${c}`,variables:[{name:"value",data_field:o,aggregation:{type:"none",config:{}},formatter:d,color:l,weight:r,size:i}]}}function Dp(e){return b.omit(e,["variables"])}function kp(e){const t=b.cloneDeep(e),i=b.get(t,"color.valueRange");return i!==void 0&&b.set(t,"color.valueRange",i.map(r=>Number(r))),t}class Ip extends j{constructor(){super(...arguments);D(this,"VERSION",2)}configVersions(){this.version(1,i=>({version:1,config:Tp(i)})),this.version(2,(i,{panelModel:r})=>{const{config:l}=i;return(l.variables||[]).forEach(o=>{r.variables.find(d=>d.name===o.name)||r.addVariable(kp(o))}),{...i,version:2,config:Dp(l)}})}}const Mp=_.observer(({context:e})=>{const t=M(),{value:i=Zt}=V(e.instanceData,"config"),{variables:r}=e,{template:l,align:s}=i,o=g.useMemo(()=>{try{const c={filters:t.filters.values,context:t.context.current};return b.template(l)(c)}catch{return l}},[t.filters.values,t.context.current,l]),d=g.useMemo(()=>Ge(o,r,e.data),[o,r,e.data,e]);return n(a.Text,{align:s,children:Object.values(d).map((c,p)=>n(g.Fragment,{children:c},p))})}),Ap=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function zp({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>{const{align:y,template:h=""}=b.defaultsDeep({},t,Zt);return{template:h,align:y}},[t]),{control:l,handleSubmit:s,watch:o,getValues:d,reset:c}=v.useForm({defaultValues:r});g.useEffect(()=>{c(r)},[r]),o(["template","align"]);const p=d(),f=g.useMemo(()=>!b.isEqual(p,t),[p,t]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:s(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),n(v.Controller,{name:"template",control:l,render:({field:y})=>n(Oe,{label:"Template",py:"md",sx:{flexGrow:1},...y})}),n(v.Controller,{name:"align",control:l,render:({field:y})=>n(a.Select,{label:"Horizontal Alignment",data:Ap,...y})})]})})}const Vp={createConfig(){return{version:2,config:Zt}},displayName:"Stats",displayGroup:"Others",migrator:new Ip,name:"stats",viewRender:Mp,configRender:zp},Kt={label_key:"",value_key:"",group_key:"",levels:[]};function Lp(e){const t=new Set(e.map(r=>r.parent_id)),i=new Set(e.map(r=>r.id));return t.forEach(r=>{r===null||i.has(r)||e.push({id:r,name:r,parent_id:null})}),e}function Ep(e){const t=Lp(e).map(l=>({...l,children:[]})),i=b.keyBy(t,l=>l.id),r=[];return t.forEach(l=>{if(!l.parent_id||!i[l.parent_id]){r.push(l);return}i[l.parent_id].children.push(l)}),r}function Pp(e,t){const{label_key:i,value_key:r,group_key:l}=e,s=i,o=t.map(d=>({...d,id:d[s],parent_id:d[l],name:d[i],value:d[r]?Number(d[r]):d[r]}));return l?Ep(o):o}const Bp=e=>({treePathInfo:t,name:i,value:r})=>{if(t.length===1||!e)return i;try{const l=t[t.length-2].value;if(r/l<e)return" "}catch{return i}};function Op(e){const{levels:t}=e;return t.map(i=>{const{show_label_tolerance:r,...l}=i.label;return{...i,label:{...l,formatter:Bp(r)}}})}function $p(){return({treePathInfo:e,name:t,value:i,color:r,marker:l,...s})=>{const o=e.slice(0,e.length-1),d=[`<tr>
179
+ `}}}function Ac(e,t){const i=t.every(l=>!Number.isNaN(Number(l))),{axisLabel:r}=e.x_axis;return[{data:t,name:e.x_axis.name??"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},type:i?"value":"category",axisLabel:{...r,formatter:Bi(r.formatter)}}]}function zc(e,t){return e.y_axes.map(({nameAlignment:i,min:r,max:l,...s},d)=>{let o=s.position;return o||(o=d>0?"right":"left"),{...s,min:r||void 0,max:l||void 0,position:o,axisLabel:{show:!0,formatter:t[d]??t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:i},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}function Vc(){return{show:!1,bottom:0,left:"center",type:"scroll"}}const Lc={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 Ec(e,t,i){const r=i.reduce((p,f)=>{const y=Ae(f,t);return p[f.name]=Te(f,y),p},{}),l=e.y_axes.reduce((p,{label_formatter:f},y)=>(p[y]=function(x){let C=x;if(typeof x=="object"&&(Array.isArray(x.value)&&x.value.length===2?C=x.value[1]:C=x.value),!f)return C;try{return G(C).format(f)}catch(T){return console.error(T),C}},p),{default:({value:p})=>p}),s=b.uniq(t.map(p=>p[e.x_axis.data_key])),d=s.every(p=>!Number.isNaN(Number(p))),o=Dc(e,s,d,t,l,i,r),c={xAxis:Ac(e,s),yAxis:zc(e,l),series:o,dataset:[{source:t}],tooltip:Mc(e,l),grid:xc(e),legend:Vc(),dataZoom:$t(e.dataZoom)};return b.defaultsDeep({},c,Lc)}N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer,A.MarkLineComponent,A.MarkAreaComponent]);function Oi(e){return e.trim().length>0}function Pc({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const d=g.useMemo(()=>b.keyBy(t,e.x_axis.data_key),[t,e.x_axis.data_key]),o=pe(l.triggerManager,Li.id),c=g.useCallback(y=>{const h=y.value[0],x=b.get(d,h,{error:"rowData is not found"});o.forEach(C=>{l.runInteraction(C.id,{...y,rowData:x})})},[d,o,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>Ec(e,t,s),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function Bc({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,Xt),[r]),d=e.data,{width:o,height:c}=e.viewport,{ref:p,height:f}=U.useElementSize(),{ref:y,height:h}=U.useElementSize(),x=g.useMemo(()=>{const{stats:{templates:T}}=s;return{top:Ge(T.top,l,d),bottom:Ge(T.bottom,l,d)}},[s,d]),C=Math.max(0,c-f-h);return u(a.Box,{children:[n(a.Text,{ref:p,align:"left",size:"xs",pl:"sm",sx:{display:Oi(s.stats.templates.top)?"block":"none"},children:Object.values(x.top).map(T=>T)}),n(Pc,{variables:l,width:o,height:C,data:d,conf:s,interactionManager:i}),n(a.Text,{ref:y,align:"left",size:"xs",pl:"sm",sx:{display:Oi(s.stats.templates.bottom)?"block":"none"},children:Object.values(x.bottom).map(T=>T)})]})}const Oc=g.forwardRef(({value:e,onChange:t,xAxisOptions:i,yAxisOptions:r,variableOptions:l},s)=>{const d=(o,c)=>{const p=b.cloneDeep(e);b.set(p,o,c),t(p)};return u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Content",labelPosition:"right"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Content Text",value:e.content.text,onChange:o=>d("content.text",o.currentTarget.value)}),n(jt,{label:"Text Position",value:e.label.position,onChange:o=>d("label.position",o)})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Endpoints",labelPosition:"right"}),u(a.Group,{grow:!0,noWrap:!0,children:[i&&n(a.Select,{label:"X Axis",data:i,value:e.xAxisIndex,onChange:o=>d("xAxisIndex",o)}),r&&n(a.Select,{label:"Y Axis",data:r,value:e.yAxisIndex,onChange:o=>d("xAxisIndex",o)})]}),u(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Left-Bottom Point"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:l,value:e.leftBottomPoint.x_data_key,onChange:o=>d("leftBottomPoint.x_data_key",o??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:l,value:e.leftBottomPoint.y_data_key,onChange:o=>d("leftBottomPoint.y_data_key",o??""),clearable:!0})]})]}),u(a.Stack,{spacing:0,children:[n(a.Text,{size:14,color:"#212529",fw:500,children:"Right-Top Point"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(a.Select,{icon:n(a.Text,{children:"x"}),data:l,value:e.rightTopPoint.x_data_key,onChange:o=>d("rightTopPoint.x_data_key",o??""),clearable:!0}),n(a.Select,{icon:n(a.Text,{children:"y"}),data:l,value:e.rightTopPoint.y_data_key,onChange:o=>d("rightTopPoint.y_data_key",o??""),clearable:!0})]})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Style",labelPosition:"right"}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Background Color"}),n(K,{value:e.itemStyle.color,onChange:o=>d("itemStyle.color",o)})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:14,children:"Text Color"}),n(K,{value:e.label.color,onChange:o=>d("label.color",o)})]})]})});function $c(){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 Nc({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_areas"}),d=t("reference_areas"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>{const h=$c();l(h)},p=g.useMemo(()=>i.map(h=>({label:h.name,value:h.name})),[i]),f=t("y_axes"),y=g.useMemo(()=>f.map(({name:h},x)=>({label:h,value:x.toString()})),[f]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:x.toString(),children:x+1},x)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:x.toString(),children:n(v.Controller,{name:`reference_areas.${x}`,control:e,render:({field:C})=>u(a.Stack,{children:[n(Oc,{variableOptions:p,yAxisOptions:y,...C}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(I.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>s(x),children:"Delete this Reference Area"})]})})},x))]})}const Gc=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],qc=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function Fc({control:e,index:t,remove:i,watch:r,variableOptions:l,yAxisOptions:s}){const d=r(`reference_lines.${t}.orientation`);return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:o})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...o})}),n(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:o})=>n(a.Select,{label:"Value",required:!0,data:l,sx:{flex:1},...o})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:o})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...o})}),u(a.Group,{grow:!0,children:[u(a.Stack,{children:[n(v.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:o})=>n(a.Select,{label:"Orientation",data:qc,required:!0,sx:{flex:1},...o})}),d==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),d==="horizontal"&&n(v.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:o,onChange:c,...p}})=>n(a.Select,{label:"Y Axis",data:s,disabled:s.length===0,...p,value:(o==null?void 0:o.toString())??"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:o})=>n(a.Select,{label:"Line Type",data:Gc,sx:{flexGrow:1},...o})}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...o})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:o})=>n(K,{...o})})]}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function jc({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),d=t("reference_lines"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>{const h={name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:be.random().css()},show_in_legend:!1,yAxisIndex:0};l(h)},p=g.useMemo(()=>i.map(h=>({label:h.name,value:h.name})),[i]),f=t("y_axes"),y=g.useMemo(()=>f.map(({name:h},x)=>({label:h,value:x.toString()})),[f]);return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:x.toString(),children:x+1},x)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:x.toString(),children:n(Fc,{control:e,index:x,remove:s,watch:t,variableOptions:p,yAxisOptions:y})},x))]})}const Wc=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Uc=({value:e,onChange:t,data:i})=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e),c=()=>{s();const{type:h,func_content:x}=d,C={type:h,func_content:x};o(C),t(C)},p=()=>{s(),o(e)},f=h=>{o(x=>({...x,func_content:h}))},y=()=>{f(qe.dynamic.func_content)};return u(k,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic color",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(Wc,{value:d.func_content,onChange:f}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Rc=({value:e,onChange:t,data:i})=>e.type!=="dynamic"?null:n(Uc,{value:e,onChange:t,data:i}),Qc=({value:e,onChange:t})=>{if(e.type!=="static")return null;const i=r=>{t({...e,color:r})};return n(a.ColorInput,{label:" ",format:"rgb",value:e.color,onChange:i})},Yc=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],Xc=g.forwardRef(({label:e="Color",value:t,onChange:i,data:r},l)=>{const s=d=>{i({...qe[d]})};return u(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:l,label:e,data:Yc,value:t.type,onChange:s,sx:{flexGrow:1}}),n(Qc,{value:t,onChange:i}),n(Rc,{value:t,onChange:i,data:r})]})}),Zc=g.forwardRef(({value:e,onChange:t},i)=>{const r=s=>{t({...e,label:s})},l=s=>{t({...e,tooltip:s})};return u(a.Stack,{ref:i,spacing:0,children:[n(He,{sectionTitle:"Overflow on Chart",value:e.label,onChange:r}),n(He,{sectionTitle:"Overflow in Tooltip",value:e.tooltip,onChange:l})]})}),Kc=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},$i={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
180
+ `)}},Jc=({value:e,onChange:t,data:i})=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e),c=()=>{s();const{type:h,func_content:x}=d,C={type:h,func_content:x};o(C),t(C)},p=()=>{s(),o(e)},f=h=>{o(x=>({...x,func_content:h}))},y=()=>{f($i.dynamic.func_content)};return u(k,{children:[n(a.Box,{sx:{width:"50%"},children:n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Setup"})}),n(a.Modal,{size:800,title:"Setup dynamic size",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Divider,{mt:10,mb:-10,label:"Dynamic by a custom function",labelPosition:"center",variant:"dashed"}),n(Kc,{value:d.func_content,onChange:f}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},Hc=({value:e,onChange:t,data:i})=>e.type!=="dynamic"?null:n(Jc,{value:e,onChange:t,data:i}),ep=({value:e,onChange:t})=>{if(e.type!=="static")return null;const i=r=>{t({...e,size:r})};return n(k,{children:n(a.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:i})})},tp=[{label:"Static",value:"static"},{label:"Dynamic",value:"dynamic"}],np=g.forwardRef(({label:e="Size",value:t,onChange:i,data:r},l)=>{const s=d=>{i({...$i[d]})};return u(a.SimpleGrid,{cols:2,children:[n(a.Select,{ref:l,label:e,data:tp,value:t.type,onChange:s,sx:{flexGrow:1}}),n(ep,{value:t,onChange:i}),n(Hc,{value:t,onChange:i,data:r})]})}),ip=[{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 rp({data:e,control:t,watch:i}){return i(["scatter"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"scatter.name_data_key",control:t,render:({field:r})=>n(E,{label:"Name Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"scatter.y_data_key",control:t,render:({field:r})=>n(E,{label:"Value Data Field",required:!0,data:e,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Style",labelPosition:"center"}),n(v.Controller,{name:"scatter.symbolSize",control:t,render:({field:r})=>n(np,{label:"Size",data:e,...r})}),n(v.Controller,{name:"scatter.color",control:t,render:({field:r})=>n(Xc,{data:e,...r})}),n(a.Divider,{mb:-15,label:"Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"scatter.label_position",control:t,render:({field:r})=>n(a.Select,{label:"Label Position",data:ip,...r})})}),n(v.Controller,{name:"scatter.label_overflow",control:t,render:({field:r})=>n(Zc,{...r})})]})}function ap({control:e,watch:t}){return t("stats"),n(a.Stack,{children:u(a.Stack,{spacing:0,children:[n(v.Controller,{name:"stats.templates.top",control:e,render:({field:i})=>n(Oe,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...i})}),n(v.Controller,{name:"stats.templates.bottom",control:e,render:({field:i})=>n(Oe,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...i})})]})})}const lp=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`tooltip.metrics.${i}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`tooltip.metrics.${i}.data_key`,control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:t,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Metric"})]}),sp=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"tooltip.metrics"}),d=t("tooltip.metrics"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>l({id:Date.now().toString(),data_key:"",name:""}),p=t("tooltip.metrics.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(lp,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function op({data:e,control:t,watch:i}){return n(sp,{control:t,watch:i,data:e})}const dp=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},up=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e);g.useEffect(()=>{o(e)},[e]);const c=x=>{o({...d,enabled:x})},p=()=>{s();const{enabled:x,func_content:C}=d,T={enabled:x,func_content:C};o(T),t(T)},f=()=>{s(),o(e)},y=x=>{o(C=>({...C,func_content:x}))},h=()=>{y(Ei.func_content)};return u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Customize Label"}),n(a.Modal,{size:800,title:"Customize label content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:d.enabled,onChange:x=>c(x.currentTarget.checked)}),n(dp,{value:d.func_content,onChange:y,disabled:!d.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:h,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:f,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:p,children:"OK"})]})]})]})})]})});function cp({data:e,control:t,watch:i}){return i(["x_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"x_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>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"}},...r})}),n(v.Controller,{name:"x_axis.axisLabel.formatter",control:t,render:({field:r})=>n(up,{data:e,...r})})]})]})}const pp=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],hp=[{label:"left",value:"left"},{label:"right",value:"right"}];function gp({control:e,index:t,remove:i}){return u(a.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n(a.Divider,{mb:-15,mt:15,variant:"dashed",label:"Name",labelPosition:"center"}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),n(v.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:r})=>n(a.Select,{label:"Align",required:!0,data:pp,sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:r})=>n(a.Select,{label:"Position",required:!0,data:hp,sx:{flex:1},...r})})}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:r})=>n(he,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:r})=>n(a.TextInput,{label:"Min",...r})}),n(v.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:r})=>n(a.TextInput,{label:"Max",...r})})]})]}),n(a.Button,{mt:20,leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),disabled:t===0,children:"Delete this YAxis"})]})}function mp({control:e,watch:t}){const{fields:i,append:r,remove:l}=v.useFieldArray({control:e,name:"y_axes"}),s=t("y_axes"),d=i.map((c,p)=>({...c,...s[p]})),o=()=>r({name:"",label_formatter:J});return u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((c,p)=>n(a.Tabs.Tab,{value:p.toString(),children:p+1},p)),n(a.Tabs.Tab,{onClick:o,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((c,p)=>n(a.Tabs.Panel,{value:p.toString(),children:n(gp,{control:e,index:p,remove:l})},p))]})}function fp(e){return e||{templates:{top:"",bottom:""}}}function bp({reference_lines:e=[],stats:t,...i}){return{reference_lines:e,stats:fp(t),...i}}function yp({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,s=g.useMemo(()=>b.defaultsDeep({},t,Xt),[t]),d=g.useMemo(()=>bp(s),[s]);g.useEffect(()=>{!b.isEqual(s,d)&&(console.log("config malformed, resetting to defaults",s,d),i(d))},[s,d]);const{control:o,handleSubmit:c,watch:p,getValues:f,reset:y}=v.useForm({defaultValues:d});g.useEffect(()=>{y(d)},[d]);const h=f(),x=g.useMemo(()=>!b.isEqual(h,s),[h,s]);return p(["dataZoom"]),n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:c(i),children:[u(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:!x,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(cp,{control:o,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Y Axes",children:n(mp,{control:o,watch:p})}),n(a.Tabs.Panel,{value:"Scatter",children:n(rp,{control:o,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(op,{control:o,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Stats",children:n(ap,{control:o,watch:p,data:l})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(jc,{variables:r,control:o,watch:p})}),n(a.Tabs.Panel,{value:"Reference Areas",children:n(Nc,{variables:r,control:o,watch:p})}),n(a.Tabs.Panel,{value:"Zooming",children:n(v.Controller,{name:"dataZoom",control:o,render:({field:C})=>n(Gt,{...C})})})]})]})})}function vp(e){const{dataZoom:t=Ve,...i}=e;return{...i,dataZoom:t}}function xp(e){const t={scatter:{label_overflow:Pi}};return b.defaultsDeep(t,e)}function Cp(e){const{color:t}=e.scatter;return typeof t=="string"?{...e,scatter:{...e.scatter,color:{...qe.static,color:t}}}:e}function wp(e){const t=e.reference_lines.map(i=>{const{lineStyle:r={type:"dashed",width:1,color:be.random().css()},show_in_legend:l=!1,yAxisIndex:s=0}=i;return{...i,lineStyle:r,show_in_legend:l,yAxisIndex:s}});return{...e,reference_lines:t}}class _p extends j{constructor(){super(...arguments);D(this,"VERSION",7)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{tooltip:r={metrics:[]},...l}=i.config;return{...i,version:2,config:{...l,tooltip:r}}}),this.version(3,i=>({...i,version:3,config:vp(i.config)})),this.version(4,i=>{const{config:r}=i;return{...i,version:5,config:xp(r)}}),this.version(6,i=>{const{config:r}=i;return{...i,version:6,config:Cp(r)}}),this.version(7,i=>{const{config:r}=i;return{...i,version:7,config:wp(r)}})}}const Sp={displayName:"Scatter Chart",displayGroup:"ECharts-based charts",migrator:new _p,name:"scatterChart",viewRender:Bc,configRender:yp,createConfig(){return{version:7,config:b.cloneDeep(Xt)}},triggers:[Li]},Zt={align:"center",template:"The variable ${value} is defined in Variables section"};function Tp(e){if("variables"in e)return e;const{align:t,size:i,weight:r,color:l,content:{prefix:s="",data_field:d="value",formatter:o={output:"number",mantissa:0},postfix:c=""}={}}=e;return{align:t,template:`${s} \${value} ${c}`,variables:[{name:"value",data_field:d,aggregation:{type:"none",config:{}},formatter:o,color:l,weight:r,size:i}]}}function Dp(e){return b.omit(e,["variables"])}function kp(e){const t=b.cloneDeep(e),i=b.get(t,"color.valueRange");return i!==void 0&&b.set(t,"color.valueRange",i.map(r=>Number(r))),t}class Ip extends j{constructor(){super(...arguments);D(this,"VERSION",2)}configVersions(){this.version(1,i=>({version:1,config:Tp(i)})),this.version(2,(i,{panelModel:r})=>{const{config:l}=i;return(l.variables||[]).forEach(d=>{r.variables.find(o=>o.name===d.name)||r.addVariable(kp(d))}),{...i,version:2,config:Dp(l)}})}}const Mp=_.observer(({context:e})=>{const t=M(),{value:i=Zt}=V(e.instanceData,"config"),{variables:r}=e,{template:l,align:s}=i,d=g.useMemo(()=>{try{const c={filters:t.filters.values,context:t.context.current};return b.template(l)(c)}catch{return l}},[t.filters.values,t.context.current,l]),o=g.useMemo(()=>Ge(d,r,e.data),[d,r,e.data,e]);return n(a.Text,{align:s,children:Object.values(o).map((c,p)=>n(g.Fragment,{children:c},p))})}),Ap=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function zp({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>{const{align:y,template:h=""}=b.defaultsDeep({},t,Zt);return{template:h,align:y}},[t]),{control:l,handleSubmit:s,watch:d,getValues:o,reset:c}=v.useForm({defaultValues:r});g.useEffect(()=>{c(r)},[r]),d(["template","align"]);const p=o(),f=g.useMemo(()=>!b.isEqual(p,t),[p,t]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:s(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),n(v.Controller,{name:"template",control:l,render:({field:y})=>n(Oe,{label:"Template",py:"md",sx:{flexGrow:1},...y})}),n(v.Controller,{name:"align",control:l,render:({field:y})=>n(a.Select,{label:"Horizontal Alignment",data:Ap,...y})})]})})}const Vp={createConfig(){return{version:2,config:Zt}},displayName:"Stats",displayGroup:"Others",migrator:new Ip,name:"stats",viewRender:Mp,configRender:zp},Kt={label_key:"",value_key:"",group_key:"",levels:[]};function Lp(e){const t=new Set(e.map(r=>r.parent_id)),i=new Set(e.map(r=>r.id));return t.forEach(r=>{r===null||i.has(r)||e.push({id:r,name:r,parent_id:null})}),e}function Ep(e){const t=Lp(e).map(l=>({...l,children:[]})),i=b.keyBy(t,l=>l.id),r=[];return t.forEach(l=>{if(!l.parent_id||!i[l.parent_id]){r.push(l);return}i[l.parent_id].children.push(l)}),r}function Pp(e,t){const{label_key:i,value_key:r,group_key:l}=e,s=i,d=t.map(o=>({...o,id:o[s],parent_id:o[l],name:o[i],value:o[r]?Number(o[r]):o[r]}));return l?Ep(d):d}const Bp=e=>({treePathInfo:t,name:i,value:r})=>{if(t.length===1||!e)return i;try{const l=t[t.length-2].value;if(r/l<e)return" "}catch{return i}};function Op(e){const{levels:t}=e;return t.map(i=>{const{show_label_tolerance:r,...l}=i.label;return{...i,label:{...l,formatter:Bp(r)}}})}function $p(){return({treePathInfo:e,name:t,value:i,color:r,marker:l,...s})=>{const d=e.slice(0,e.length-1),o=[`<tr>
181
181
  <th style="text-align: right; padding: 0 1em;">Value</th>
182
182
  <td style="text-align: left; padding: 0 1em;">${i}</td>
183
183
  </tr>
184
- `];return o.reverse().forEach(({value:p,name:f})=>{d.push(`
184
+ `];return d.reverse().forEach(({value:p,name:f})=>{o.push(`
185
185
  <tr>
186
186
  <th style="text-align: right; padding: 0 1em;">${f||"Total"}</th>
187
187
  <td style="text-align: left; padding: 0 1em;">
@@ -193,11 +193,11 @@
193
193
  <div>${l} ${t}</div>
194
194
  </div>
195
195
  <table style="width: auto">
196
- <tbody>${d.join("")}</tbody>
196
+ <tbody>${o.join("")}</tbody>
197
197
  </table>
198
- `}}function Np(){return{show:!0,trigger:"item",confine:!0,formatter:$p()}}const Gp={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function qp(e,t,i){i.reduce((s,o)=>{const d=Ae(o,t);return s[o.name]=Te(o,d),s},{});const l={series:{data:Pp(e,t),levels:Op(e)},tooltip:Np()};return b.defaultsDeep({},l,Gp)}N.use([q.SunburstChart,te.CanvasRenderer]);function Fp({context:e}){const{variables:t}=e,{value:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaults({},i,Kt),[i]),l=e.data,{width:s,height:o}=e.viewport,d=g.useMemo(()=>qp(r,l,t),[r,l,t]);return!s||!o?null:n(ne,{echarts:N,option:d,style:{width:s,height:o},notMerge:!0,theme:"merico-light"})}function jp({data:e,control:t,watch:i}){return i(["label_key","value_key","group_key"]),u(a.Stack,{children:[n(v.Controller,{name:"label_key",control:t,render:({field:r})=>n(E,{label:"Label Key",required:!0,data:e,...r})}),n(v.Controller,{name:"value_key",control:t,render:({field:r})=>n(E,{label:"Value Key",required:!0,data:e,...r})}),n(v.Controller,{name:"group_key",control:t,render:({field:r})=>n(E,{label:"Group Key",data:e,clearable:!0,...r})})]})}const Wp=[{label:"Radial",value:"radial"},{label:"Tangential",value:"tangential"},{label:"None",value:"0"}],Up=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Rp=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`levels.${i}.r0`,control:e,render:({field:l})=>n(a.TextInput,{label:"Inside Radius",placeholder:"0%",...l})}),n(v.Controller,{name:`levels.${i}.r`,control:e,render:({field:l})=>n(a.TextInput,{label:"Outside Radius",placeholder:"50%",...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),n(v.Controller,{name:`levels.${i}.label.show_label_tolerance`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Hide label when its percentage is less than...",precision:4,step:5e-4,min:0,max:1,...l})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`levels.${i}.label.rotate`,control:e,render:({field:l})=>n(a.Select,{label:"Rotate",data:Wp,...l})}),n(v.Controller,{name:`levels.${i}.label.align`,control:e,render:({field:l})=>n(a.Select,{label:"Align",data:Up,...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`levels.${i}.label.position`,control:e,render:({field:l})=>n(jt,{label:"Position",...l})}),n(v.Controller,{name:`levels.${i}.label.padding`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Padding",min:0,hideControls:!0,...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Level"})]}),Qp=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"levels"}),o=t("levels"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>l({id:Date.now().toString(),r0:"",r:"",label:{show_label_tolerance:.001,rotate:"0",align:"center",position:"inside",padding:0}}),p=t("levels.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(Rp,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function Yp({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Kt),[t]),s=g.useMemo(()=>b.clone(l),[l]),{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);c(["label_key","value_key","group_key","levels"]);const[x,C]=g.useState("Data");return n("form",{onSubmit:d(i),children:u(a.Stack,{spacing:"xs",children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{value:x,onTabChange:C,orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(jp,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Levels",children:n(Qp,{control:o,watch:c,data:r})})]})]})})}function Xp(e){const{label_field:t,value_field:i,...r}=e;return{...r,label_key:t,value_key:i}}function Zp(e){const{group_key:t="",...i}=e;return{...i,group_key:t}}function Kp(e){const{levels:t=[],...i}=e;return{...i,levels:t}}class Jp extends j{constructor(){super(...arguments);D(this,"VERSION",4)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>({...i,version:2,config:Xp(i.config)})),this.version(3,i=>({...i,version:3,config:Zp(i.config)})),this.version(4,i=>({...i,version:4,config:Kp(i.config)}))}}const Hp={displayName:"Sunburst Chart",displayGroup:"ECharts-based charts",migrator:new Jp,name:"sunburst",viewRender:Fp,configRender:Yp,createConfig(){return{version:4,config:b.cloneDeep(Kt)}}};var oe=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e.custom="custom",e))(oe||{});const Ni=["function text({ value }) {"," // your code goes here"," return value","}"].join(`
199
- `),Jt={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!0,verticalSpacing:"1em"},Gi={left:"flex-start",center:"center",right:"flex-end"},eh=({header:e,cx:t})=>{const i=b.get(e.column.columnDef.meta,"align","left");return u(a.Text,{className:t("table-head-cell",{"table-head-cell--sortable":e.column.getCanSort()}),onClick:e.column.getToggleSortingHandler(),align:i,sx:{justifyContent:Gi[i]},children:[e.isPlaceholder?null:se.flexRender(e.column.columnDef.header,e.getContext()),n(th,{direction:e.column.getIsSorted()})]})},th=({direction:e})=>{switch(e){case"asc":return n(I.IconArrowUp,{size:16});case"desc":return n(I.IconArrowDown,{size:"1em"});default:return null}},Ht={id:"builtin:table:click-cell-content",displayName:"Click Cell Content",nameRender:lh,configRender:rh,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"}]},nh={column:""};function qi(e){const{value:t}=V(e.instanceData,"config");return t?t.columns.map((i,r)=>({label:i.label,value:r.toString()})):[]}function ih(e){return b.isEmpty(e)?[]:Object.keys(e[0]).map(t=>({label:t,value:t}))}function rh(e){const t=qi(e.instance),i=ih(e.sampleData),r=t.length>0?t:i,{value:l,set:s}=V(e.trigger.triggerData,"config"),{column:o}=b.defaults({},l,nh),d=c=>{isNaN(+c)?s({column:c}):s({column:+c})};return n(a.Select,{clearable:!1,data:r,label:"Choose a column",value:o.toString(),onChange:d})}function ah(e,t){return e?b.isNumber(e.column)?`Click cell of ${t[e.column].label}`:`Click cell of ${e.column}`:"Click cell content (click to config)"}function lh(e){const t=qi(e.instance),{value:i}=V(e.trigger.triggerData,"config");return n(a.Text,{children:ah(i,t)})}const sh=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"}})),oh={tableLayout:"fixed","th, td":{padding:"2px 10px",div:{overflow:"hidden",textOverflow:"ellipsis"},"&:first-of-type":{paddingLeft:2,paddingRight:2}}};function Fi(e,t,i){return Math.min(Math.max(e,t),i)}class dh{constructor(t){this.steps=t;const i=[],r=new Set;for(const l of t)r.has(l.to)||(i.push(l),r.add(l.to));if(i.sort((l,s)=>l.from-s.from),i.length<2)throw new Error("MultiStepValueMapper requires at least 2 steps");this.steps=i}getLinearFunction(t,i){const r=(i.to-t.to)/(i.from-t.from),l=t.to-r*t.from;return s=>r*s+l}getStepFunctionForValue(t){let i=b.findLastIndex(this.steps,r=>r.from<=t);return i=Fi(i,0,this.steps.length-2),this.getLinearFunction(this.steps[i],this.steps[i+1])}mapValue(t){return Fi(this.getStepFunctionForValue(t)(t),0,100)}}class uh{constructor(t,i,r,l,s){this.getColIndex=t,this.cell=i,this.triggers=r,this.interactionManager=l,this.colorManager=s}getClickHandler(){const t=this.getRelatedTrigger();if(t.length!==0)return()=>{const i={row_data:this.cell.row.original,row_index:this.cell.row.index,col_index:this.getColIndex(this.cell)};for(const r of t)this.interactionManager.runInteraction(r.id,i)}}getRelatedTrigger(){return this.triggers.filter(i=>i.schemaRef===Ht.id).filter(i=>{const r=this.getColIndex(this.cell),l=b.get(this.cell.column.columnDef.meta,"value_field"),s=b.get(i.config,"column");return s==r||s==l})}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(b.isString(t))return t;const i=+this.cell.getValue();if(isFinite(i)){const r=this.colorManager.decodeInterpolation(t.interpolation),s=new dh(t.steps).mapValue(i);return r==null?void 0:r.getColor(s)}}}const ch=a.createStyles((e,t)=>({content:{display:"flex",alignItems:"center",justifyContent:Gi[t.align],".table-cell-text":{whiteSpace:"nowrap",cursor:t.clickable?"pointer":"default",textDecoration:t.clickable?"underline":"none"}}}));function ph(e){return e?be(e).oklch()[0]>.7?"black":"white":"inherit"}function hh(e){const t=e.tableCellContext.bgColor;return{backgroundColor:t,color:ph(t)}}function Le(e){const t=e.tableCellContext.isClickable(),i=ch({clickable:t,align:e.align});return n("div",{className:i.classes.content,style:{...hh(e)},children:n(a.Text,{className:"table-cell-text",onClick:e.tableCellContext.getClickHandler(),children:n("span",{title:e.children,children:e.children})})})}function gh(e){return n(Le,{...e,children:e.value})}function mh(e){const t=G(e.value).format({average:!0,mantissa:2,trimMantissa:!0});return n(Le,{...e,children:t})}function fh(e){const t=G(e.value).format({thousandSeparated:!0});return n(Le,{...e,children:t})}function bh(e){const t=G(e.value).format({output:"percent",mantissa:3});return n(Le,{...e,children:t})}function yh(e){const t=e.value,i=e.func_content;if(!i)return n(Le,{...e,children:t});const r=new Function(`return ${i}`)()({value:t});return n(Le,{...e,children:r})}function vh(e){switch(e.type){case oe.string:return n(gh,{...e});case oe.eloc:return n(mh,{...e});case oe.number:return n(fh,{...e});case oe.percentage:return n(bh,{...e});case oe.custom:return n(yh,{...e})}}const xh=e=>{const t=fe(e),i=pe(t.triggerManager,Ht.id),{colorManager:r}=g.useContext(me);return g.useCallback(l=>new uh(e.getColIndex,l,i,t,r),[i,t,e.getColIndex])};function Ch({context:e,instance:t}){var ra,aa;const i=e.data??[],{height:r,width:l}=e.viewport,{value:s=Jt}=V(e.instanceData,"config"),{use_raw_columns:o,columns:d,...c}=s,{classes:p,cx:f}=sh(),y=g.useMemo(()=>o?!Array.isArray(i)||i.length===0?[]:Object.keys(i[0]).map(le=>({id:le,label:le,value_field:le,value_type:oe.string,align:"left"})):d,[o,d,i]),h=xh({getColIndex:g.useCallback(le=>y.indexOf(le.column.columnDef.meta),[y]),vizManager:e.vizManager,instance:t}),x=g.useMemo(()=>{const le=se.createColumnHelper();return y.map(ue=>le.accessor(ue.value_field,{cell:la=>n(vh,{tableCellContext:h(la.cell),value:la.getValue(),type:ue.value_type,...ue}),header:ue.label,enableSorting:!0,meta:ue,size:ue.width,minSize:ue.width}))},[y,h]),[C,T]=g.useState([]),L=se.useReactTable({data:i,state:{sorting:C},onSortingChange:T,columns:x,getCoreRowModel:se.getCoreRowModel(),getSortedRowModel:se.getSortedRowModel()}),{rows:X}=L.getRowModel(),de=g.useRef(null),We=pa.useVirtual({parentRef:de,size:X.length,estimateSize:g.useCallback(()=>28,[]),overscan:20}),{virtualItems:H,totalSize:Ue}=We,ae=H.length>0&&((ra=H==null?void 0:H[0])==null?void 0:ra.start)||0,na=H.length>0?Ue-(((aa=H==null?void 0:H[H.length-1])==null?void 0:aa.end)||0):0,In=X.length,ia=In>0,fx=ia?r-22:r,bx=ia?22:0;return!Array.isArray(i)||i.length===0?n(a.Text,{color:"gray",align:"center",children:"Empty Data"}):u("div",{ref:de,style:{height:r,width:l},"data-enable-scrollbar":!0,className:f(p.root,{"table-highlight-on-hover":s.highlightOnHover}),children:[In>0&&n(a.Box,{className:p.info_bar,sx:{height:22},children:u(a.Text,{align:"right",pr:6,size:14,color:"dimmed",fw:"normal",children:["Total: ",In]})}),u(a.Table,{sx:{...oh,maxHeight:fx},...c,striped:s.striped,children:[n("thead",{className:p.thead,style:{top:bx},children:L.getHeaderGroups().map(le=>n("tr",{children:le.headers.map(ke=>n("th",{style:{width:ke.getSize()},children:n(eh,{header:ke,cx:f})},ke.id))},le.id))}),u("tbody",{children:[ae>0&&n("tr",{children:n("td",{style:{height:`${ae}px`}})}),H.map(le=>{const ke=X[le.index];return n("tr",{children:ke.getVisibleCells().map(ue=>n("td",{children:se.flexRender(ue.column.columnDef.cell,ue.getContext())},ue.id))},ke.id)}),na>0&&n("tr",{children:n("td",{style:{height:`${na}px`}})})]})]})]})}const ji=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)"}}}})),wh=[{from:0,to:0},{from:100,to:100}];class _h{constructor(){D(this,"steps",new Map);D(this,"interpolation");D(this,"onChange");$.makeAutoObservable(this,{steps:$.observable},{deep:!1}),$.reaction(()=>$.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(t){for(const i of t)this.steps.set(i.to,i.from)}notifyStepChange(){var t;(t=this.onChange)==null||t.call(this,Array.from(this.steps.entries()).map(([i,r])=>({to:i,from:r})).sort((i,r)=>i.to-r.to||i.from-r.from))}fromProps(t){t.steps.length<2?this.setSteps(wh):this.setSteps(t.steps),this.interpolation=t.interpolation,this.onChange=t.onChange}changeStep(t,i){t==null?this.steps.delete(i):this.steps.set(i,t)}getStepFromValue(t){return this.steps.get(t)}}function Sh(e){const{onChange:t,color:i,index:r,value:l}=e,{classes:s}=ji(),[o,d]=g.useState(l),[c,{setTrue:p,setFalse:f}]=B.useBoolean(!1),y=r%2===1,h=y&&l!=null,x=!y&&l!=null,C=`map ${l} to color ${r}`,T=()=>{d(l),f()},L=()=>{f(),t==null||t(o)},X=G(l).format({average:!0});return u("div",{"data-testid":`palette-item-${r}`,className:s.paletteItem,children:[n(a.Text,{title:C,style:{opacity:h?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:X}),u(a.Popover,{width:200,trapFocus:!0,opened:c,onClose:f,children:[n(a.Popover.Target,{children:n("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:p,style:{"--shadow-color":be(i).alpha(.5).hex(),backgroundColor:i}})}),n(a.Popover.Dropdown,{children:u(a.Stack,{children:[n(a.NumberInput,{size:"xs",label:"Map a value to this color",value:o,onChange:d}),u(a.Group,{position:"right",children:[n(a.Button,{variant:"subtle",size:"xs",onClick:T,children:"Cancel"}),n(a.Button,{"data-testid":"palette-item-ok",size:"xs",onClick:L,children:"OK"})]})]})})]}),n(a.Text,{title:C,style:{opacity:x?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:X})]})}const Th=_.observer(({model:e})=>{const{classes:t}=ji(),i=b.range(0,13,1).map(r=>100/12*r).map(r=>[e.interpolation.getColor(r),r]);return n("div",{className:t.palette,children:i.map(([r,l],s)=>n(Sh,{index:s,color:r,value:e.getStepFromValue(l),onChange:o=>e.changeStep(o,l)},r))})}),Dh=_.observer(function(t){const i=B.useCreation(()=>new _h,[]);return g.useEffect(()=>{i.fromProps(t)}),i.interpolation==null?null:n(Th,{model:i})}),kh=e=>{const{value:t,onChange:i,colorManager:r}=e,l=r.getColorInterpolations(),[s,o]=g.useState(t),d=r.decodeInterpolation(s.interpolation)||l[0],[c,{setTrue:p,setFalse:f}]=B.useBoolean(),y=l.map(L=>({label:L.displayName,value:r.encodeColor(L),group:L.category}));function h(L){L&&o(X=>({...X,interpolation:L}))}const x=()=>{f(),i==null||i($.toJS(s))};function C(L){o(X=>({...X,steps:L}))}const T=()=>{f(),o(t)};return u(k,{children:[n(a.Button,{variant:"outline",onClick:p,children:d==null?void 0:d.displayName}),n(a.Modal,{size:508,title:"Setup color interpolation",opened:c,onClose:f,zIndex:320,children:c&&u(a.Stack,{"data-testid":"color-interpolation-modal",children:[n(a.Select,{label:"Color style",value:s.interpolation,data:y,onChange:h}),n(Dh,{steps:s.steps,interpolation:d,onChange:C}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:T,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:x,children:"OK"})]})]})})]})},Ih=["static","interpolation","none"].map(e=>({label:b.capitalize(e),value:e})),Mh=[{from:0,to:0},{from:100,to:100}];function Wi(e){return e?b.isString(e)?e==="none"?"none":"static":"interpolation":"none"}function Ah(e,t){var i;return Wi(t)==="static"?t:(i=e.getStaticColors()[0])==null?void 0:i.value}function zh(e,t){return b.isObject(t)?t:{steps:Mh,interpolation:e.encodeColor(e.getColorInterpolations()[0])}}const Vh=g.forwardRef((e,t)=>{const{colorManager:i}=g.useContext(me),[r,l]=g.useState(Wi(e.value)),[s,o]=g.useState(Ah(i,e.value)),d=B.useLatest(s),[c,p]=g.useState(zh(i,e.value)),f=B.useLatest(c),y=C=>{var T,L,X;l(C||"none"),C==="static"?(T=e.onChange)==null||T.call(e,d.current):C==="none"||!C?(L=e.onChange)==null||L.call(e,"none"):(X=e.onChange)==null||X.call(e,f.current)},h=C=>{var T;o(C),(T=e.onChange)==null||T.call(e,C)},x=C=>{var T;p(C),(T=e.onChange)==null||T.call(e,C)};return u(a.Stack,{align:"stretch",children:[n(a.Select,{label:"Cell background",value:r||"none",onChange:y,data:Ih}),r==="static"&&n(K,{value:s,onChange:h}),r==="interpolation"&&n(kh,{colorManager:i,value:c,onChange:x})]})}),Lh={[oe.eloc]:"ELOC"},Eh=Object.values(oe).map(e=>({label:b.get(Lh,e,b.capitalize(e)),value:e})),Ph=g.forwardRef(({label:e,value:t,onChange:i,sx:r},l)=>n(a.Select,{ref:l,label:e,data:Eh,value:t,onChange:i,sx:r})),Bh=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e),c=()=>{s(),t(o)},p=()=>{s(),d(e)},f=()=>{d(Ni)};return g.useEffect(()=>{d(e)},[e]),u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Custom Cell Content"}),n(a.Modal,{size:800,title:"Custom cell content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Box,{sx:{position:"relative"},children:n(Z,{height:"500px",defaultLanguage:"javascript",value:o,onChange:y=>d(y??""),theme:"vs-dark",options:{minimap:{enabled:!1}}})}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})}),Oh=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],en=()=>n(a.Text,{color:"dimmed",size:12,children:"px"}),$h=({control:e,index:t,watch:i,remove:r,column:l,data:s})=>{const o=i(`columns.${t}.value_type`);return u(a.Stack,{my:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:`columns.${t}.label`,control:e,render:({field:d})=>n(a.TextInput,{label:"Label",required:!0,id:`col-label-${t}`,sx:{flex:1},...d})}),n(v.Controller,{name:`columns.${t}.value_field`,control:e,render:({field:d})=>n(E,{label:"Value Field",required:!0,data:s,...d})})]}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`columns.${t}.value_type`,control:e,render:({field:d})=>n(Ph,{label:"Value Type",sx:{flex:1},...d})}),o===oe.custom&&n(v.Controller,{name:`columns.${t}.func_content`,control:e,render:({field:d})=>n(Bh,{value:d.value??Ni,onChange:c=>d.onChange(c??"")})})]}),n(a.Divider,{mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(a.NumberInput,{hideControls:!0,label:"Min Width",rightSection:n(en,{}),disabled:!0}),n(v.Controller,{name:`columns.${t}.width`,control:e,render:({field:d})=>n(a.NumberInput,{hideControls:!0,label:"Width",rightSection:n(en,{}),...d})}),n(a.NumberInput,{hideControls:!0,label:"Max Width",rightSection:n(en,{}),disabled:!0})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`columns.${t}.align`,control:e,render:({field:d})=>n(a.Select,{label:"Alignment",data:Oh,...d})})}),n(v.Controller,{name:`columns.${t}.cellBackgroundColor`,control:e,render:({field:d})=>n(Vh,{...d})}),n(a.Divider,{mb:4,mt:12,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),children:"Delete this column"})]})},Nh=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s,update:o}=v.useFieldArray({control:e,name:"columns"}),d=()=>{const p=U.randomId();l({id:p,label:p,value_field:"value",value_type:oe.string})};t("columns");const c=t("use_raw_columns");return u(k,{children:[n(v.Controller,{name:"use_raw_columns",control:e,render:({field:p})=>n(a.Switch,{mt:20,label:"Use Original Data Columns",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked)})}),n(a.Divider,{mt:20,mb:10,variant:"dashed"}),!c&&u(a.Stack,{children:[n(a.Text,{my:0,children:"Custom Columns"}),u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[r.map((p,f)=>n(a.Tabs.Tab,{value:f.toString(),children:f+1},p.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),r.map((p,f)=>n(a.Tabs.Panel,{value:f.toString(),children:n($h,{control:e,watch:t,index:f,column:p,data:i,remove:s},f)},p.id))]})]})]})};function Gh({control:e,watch:t,data:i}){return t(["horizontalSpacing","verticalSpacing","fontSize","striped","highlightOnHover"]),u(a.Stack,{spacing:"xs",children:[u(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[n(v.Controller,{name:"horizontalSpacing",control:e,render:({field:r})=>n(a.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...r})}),n(v.Controller,{name:"verticalSpacing",control:e,render:({field:r})=>n(a.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...r})})]}),n(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:n(v.Controller,{name:"fontSize",control:e,render:({field:r})=>n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...r})})}),u(a.Group,{position:"apart",grow:!0,children:[n(v.Controller,{name:"striped",control:e,render:({field:r})=>n(a.Switch,{label:"Striped",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})}),n(v.Controller,{name:"highlightOnHover",control:e,render:({field:r})=>n(a.Switch,{label:"Highlight on hover",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})})]})]})}function qh({columns:e,...t}){return{...t,columns:e.map(({id:i,...r})=>({id:i??U.randomId(),...r}))}}function Fh({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Jt),[t]),s=g.useMemo(()=>qh(l),[l]);g.useEffect(()=>{!b.isEqual(l,s)&&(console.log("config malformed, resetting to defaults",l,s),i(s))},[l,s]);const{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return c(["id_field"]),u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Columns",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(v.Controller,{name:"id_field",control:o,render:({field:x})=>n(E,{label:"ID Field",required:!0,data:r,...x})})}),n(a.Tabs.Panel,{value:"Style",children:n(Gh,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Columns",children:n(Nh,{control:o,watch:c,data:r})})]})]})}function jh(e){const{columns:t,...i}=e;return{...e,columns:t.map(r=>({...r,align:r.align??"left"}))}}class Wh extends j{constructor(){super(...arguments);D(this,"VERSION",3)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{columns:r,...l}=i.config;return{...i,version:2,config:{...l,columns:r.map(({id:s,...o})=>({id:s??U.randomId(),...o}))}}}),this.version(3,i=>({...i,version:3,config:jh(i.config)}))}}const tn={createConfig(){return{version:3,config:b.cloneDeep(Jt)}},displayName:"Table",displayGroup:"Others",migrator:new Wh,name:"table",viewRender:Ch,configRender:Fh,triggers:[Ht]},Ui=["function text({ data, variables, filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
200
- `),nn={func_content:Ui,horizontal_align:"left",font_size:"14px",font_weight:"normal"},Uh=_.observer(({context:e})=>{const t=M(),{value:i=nn}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,{func_content:s,horizontal_align:o,font_size:d,font_weight:c}=i,p=g.useMemo(()=>r.reduce((y,h)=>{const x=Ae(h,l);return y[h.name]=Te(h,x),y},{}),[r,l]),f=g.useMemo(()=>new Function(`return ${s}`)()({data:l,variables:p,filters:t.filters.values,context:t.context.current}),[s,l,p,t.filters.values,t.context.current]);return n(a.Text,{align:o,weight:c,sx:{fontSize:d},children:f})}),Rh=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{sx:{position:"relative"},children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Qh=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[o,d]=g.useState(e),c=()=>{s(),t(o)},p=()=>{s(),d(e)},f=()=>{d(Ui)};return g.useEffect(()=>{d(e)},[e]),u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Edit Content"}),n(a.Modal,{size:800,title:"Text content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(Rh,{value:o,onChange:d}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})}),Yh=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function Xh({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaultsDeep({},t,nn),[t]),l=g.useMemo(()=>{const{func_content:h,horizontal_align:x,font_size:C,font_weight:T}=r;return{func_content:h,horizontal_align:x,font_size:C,font_weight:T}},[r]);g.useEffect(()=>{!b.isEqual(r,l)&&(console.log("config malformed, resetting to defaults",r,l),i(l))},[r,l]);const{control:s,handleSubmit:o,watch:d,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),d(["func_content","horizontal_align","font_size","font_weight"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,r),[f,r]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Stack,{spacing:10,children:[n(v.Controller,{name:"func_content",control:s,render:({field:h})=>n(Qh,{...h})}),n(a.Divider,{mt:10,mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),n(v.Controller,{name:"horizontal_align",control:s,render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:Yh,...h})}),n(v.Controller,{name:"font_size",control:s,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(v.Controller,{name:"font_weight",control:s,render:({field:h})=>n(yi,{label:"Font Weight",...h})})})]})]})})}class Zh extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Kh={displayName:"Text",displayGroup:"Others",migrator:new Zh,name:"text",viewRender:Uh,configRender:Xh,createConfig(){return{version:1,config:b.cloneDeep(nn)}}},Jh=()=>u("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 Ri(e,t){const i=b.get(e,t,"");if(i)throw new Error(i)}async function Hh(e,t,i,r={}){const l={"X-Requested-With":"XMLHttpRequest","Content-Type":r.string?"application/x-www-form-urlencoded":"application/json",...r.headers},s={baseURL:e,method:"POST",url:t,params:r.params,headers:l};return s.data=r.string?JSON.stringify(i):i,xe(s).then(o=>o.data).catch(o=>Promise.reject(o))}const eg=({conf:e,data:t})=>async()=>{const{expertSystemURL:i,path:r,goal:l,question:s}=e;if(!r||!l||!s)return;const o={dashboard:l,panel:s,data:t};try{const d=i.startsWith("http")?i:window.location.origin;return await Hh(d,`/expert/v3/devtable/${r}`,o,{})}catch(d){throw Ri(d,"response.data.detail"),Ri(d,"response.data.error"),console.error(d),d}},rn={expertSystemURL:"",path:"",goal:"",question:""},an={height:"100%",overflowY:"auto",...Dt},Qi=({message:e})=>n(a.Box,{sx:an,children:n("div",{dangerouslySetInnerHTML:{__html:e},style:{fontSize:"14px",lineHeight:"32px",color:"#3D3E45"}})}),tg=({error:e,width:t,height:i})=>{const r=e.message;if(r.startsWith("<"))return n(Qi,{message:r});const s=i-25-20-30;return n(a.Center,{sx:{width:"100%",height:s},children:u(a.Stack,{align:"center",spacing:20,children:[n(Jh,{}),n(Qi,{message:r})]})})};function ng({context:e}){const{value:t}=V(e.instanceData,"config"),i=g.useMemo(()=>b.defaultsDeep({},t,rn),[t]),{width:r,height:l}=e.viewport,s=e.data??[],{data:o,error:d,loading:c}=B.useRequest(eg({conf:i,data:s}),{refreshDeps:[s,i]});return!r||!l||!i?null:c?n(a.Box,{sx:{position:"relative",height:l},children:n(a.LoadingOverlay,{visible:!0})}):d?n(a.Box,{sx:an,"data-enable-scrollbar":!0,children:n(tg,{error:d,width:r,height:l})}):!o||!Array.isArray(o.replies)||o.replies.length===0?null:n(a.Box,{sx:an,"data-enable-scrollbar":!0,children:o.replies.map((p,f)=>n("div",{dangerouslySetInnerHTML:{__html:p.interpretation.html}},f))})}function ig({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaultsDeep({},t,rn),[t]),{control:l,handleSubmit:s,watch:o,getValues:d,reset:c}=v.useForm({defaultValues:r});g.useEffect(()=>{c(r)},[r]),o(["expertSystemURL","goal","path","question"]);const p=d(),f=g.useMemo(()=>!b.isEqual(p,r),[p,r]);return n("form",{onSubmit:s(i),children:u(a.Stack,{children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:"expertSystemURL",control:l,render:({field:y})=>n(a.TextInput,{label:"Expert System URL",...y})}),n(v.Controller,{name:"path",control:l,render:({field:y})=>n(a.TextInput,{label:"Path",required:!0,...y})})]}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:"goal",control:l,render:({field:y})=>n(a.TextInput,{label:"Goal",required:!0,...y})}),n(v.Controller,{name:"question",control:l,render:({field:y})=>n(a.TextInput,{label:"Question",required:!0,...y})})]}),n(a.Divider,{variant:"dashed",mt:16,mb:8}),n(a.Button,{type:"submit",variant:"filled",color:"blue",leftIcon:n(S.DeviceFloppy,{size:20}),disabled:!f,sx:{alignSelf:"flex-end"},children:"Submit Changes"})]})})}class rg extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const ag={displayName:"Merico GQM",displayGroup:"Merico suite",migrator:new rg,name:"mericoGQM",viewRender:ng,configRender:ig,createConfig(){return{version:1,config:b.cloneDeep(rn)}}};function lg(e,t,i){if(!e)return i[0];try{return[t,z(t).add(1,"year").subtract(1,"day").valueOf()]}catch(r){return console.error(r),i[0]}}function sg(e,t,i){const r=lg(e,t,i);return{top:50,left:25,right:5,cellSize:["auto",13],range:r,itemStyle:{borderColor:"#eee"},splitLine:{show:!0},dayLabel:{firstDay:1},monthLabel:{position:"end"},yearLabel:{show:!0}}}function og(e){return{heat_block:function(r){if(!e.heat_block.value_formatter)return r;try{return G(r).format(e.heat_block.value_formatter)}catch(l){return console.error(l),r}}}}function dg(e,t){return{show:!e,selectedMode:"single",top:5,right:5,data:t.map(i=>({name:i,icon:"circle"}))}}function ug(e,t,i,r){const{calendar:l,heat_block:s}=e;return t?{type:"heatmap",name:"heatmap",coordinateSystem:"calendar",calendarIndex:0,data:r.map(o=>[b.get(o,l.data_key),b.get(o,s.data_key)])}:Object.entries(i).map(([o,d])=>({type:"heatmap",name:o,coordinateSystem:"calendar",calendarIndex:0,data:d.map(c=>[b.get(c,l.data_key),b.get(c,s.data_key)])}))}const cg=e=>{try{return G(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function pg({conf:e,valueFormatters:t,dataDict:i,params:r}){const{value:l}=r,[s,o]=l,c=[{label:e.heat_block.name,value:t.heat_block(o),style:{label:"",value:""}}],p=i[s];return p&&e.tooltip.metrics.forEach(f=>{c.push({label:f.name,value:cg(b.get(p,f.data_key,"")),style:{label:"",value:""}})}),c}function hg(e,t,i){const r=b.keyBy(t,e.calendar.data_key);return{confine:!0,formatter:function(l){const o=pg({conf:e,valueFormatters:i,dataDict:r,params:l}).map(p=>`
198
+ `}}function Np(){return{show:!0,trigger:"item",confine:!0,formatter:$p()}}const Gp={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function qp(e,t,i){i.reduce((s,d)=>{const o=Ae(d,t);return s[d.name]=Te(d,o),s},{});const l={series:{data:Pp(e,t),levels:Op(e)},tooltip:Np()};return b.defaultsDeep({},l,Gp)}N.use([q.SunburstChart,te.CanvasRenderer]);function Fp({context:e}){const{variables:t}=e,{value:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaults({},i,Kt),[i]),l=e.data,{width:s,height:d}=e.viewport,o=g.useMemo(()=>qp(r,l,t),[r,l,t]);return!s||!d?null:n(ne,{echarts:N,option:o,style:{width:s,height:d},notMerge:!0,theme:"merico-light"})}function jp({data:e,control:t,watch:i}){return i(["label_key","value_key","group_key"]),u(a.Stack,{children:[n(v.Controller,{name:"label_key",control:t,render:({field:r})=>n(E,{label:"Label Key",required:!0,data:e,...r})}),n(v.Controller,{name:"value_key",control:t,render:({field:r})=>n(E,{label:"Value Key",required:!0,data:e,...r})}),n(v.Controller,{name:"group_key",control:t,render:({field:r})=>n(E,{label:"Group Key",data:e,clearable:!0,...r})})]})}const Wp=[{label:"Radial",value:"radial"},{label:"Tangential",value:"tangential"},{label:"None",value:"0"}],Up=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],Rp=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`levels.${i}.r0`,control:e,render:({field:l})=>n(a.TextInput,{label:"Inside Radius",placeholder:"0%",...l})}),n(v.Controller,{name:`levels.${i}.r`,control:e,render:({field:l})=>n(a.TextInput,{label:"Outside Radius",placeholder:"50%",...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Label Style",labelPosition:"center"}),n(v.Controller,{name:`levels.${i}.label.show_label_tolerance`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Hide label when its percentage is less than...",precision:4,step:5e-4,min:0,max:1,...l})}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`levels.${i}.label.rotate`,control:e,render:({field:l})=>n(a.Select,{label:"Rotate",data:Wp,...l})}),n(v.Controller,{name:`levels.${i}.label.align`,control:e,render:({field:l})=>n(a.Select,{label:"Align",data:Up,...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`levels.${i}.label.position`,control:e,render:({field:l})=>n(jt,{label:"Position",...l})}),n(v.Controller,{name:`levels.${i}.label.padding`,control:e,render:({field:l})=>n(a.NumberInput,{label:"Padding",min:0,hideControls:!0,...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Level"})]}),Qp=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"levels"}),d=t("levels"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>l({id:Date.now().toString(),r0:"",r:"",label:{show_label_tolerance:.001,rotate:"0",align:"center",position:"inside",padding:0}}),p=t("levels.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(Rp,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function Yp({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Kt),[t]),s=g.useMemo(()=>b.clone(l),[l]),{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);c(["label_key","value_key","group_key","levels"]);const[x,C]=g.useState("Data");return n("form",{onSubmit:o(i),children:u(a.Stack,{spacing:"xs",children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{value:x,onTabChange:C,orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(jp,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Levels",children:n(Qp,{control:d,watch:c,data:r})})]})]})})}function Xp(e){const{label_field:t,value_field:i,...r}=e;return{...r,label_key:t,value_key:i}}function Zp(e){const{group_key:t="",...i}=e;return{...i,group_key:t}}function Kp(e){const{levels:t=[],...i}=e;return{...i,levels:t}}class Jp extends j{constructor(){super(...arguments);D(this,"VERSION",4)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>({...i,version:2,config:Xp(i.config)})),this.version(3,i=>({...i,version:3,config:Zp(i.config)})),this.version(4,i=>({...i,version:4,config:Kp(i.config)}))}}const Hp={displayName:"Sunburst Chart",displayGroup:"ECharts-based charts",migrator:new Jp,name:"sunburst",viewRender:Fp,configRender:Yp,createConfig(){return{version:4,config:b.cloneDeep(Kt)}}};var oe=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e.custom="custom",e))(oe||{});const Ni=["function text({ value }) {"," // your code goes here"," return value","}"].join(`
199
+ `),Jt={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!0,verticalSpacing:"1em"},Gi={left:"flex-start",center:"center",right:"flex-end"},eh=({header:e,cx:t})=>{const i=b.get(e.column.columnDef.meta,"align","left");return u(a.Text,{className:t("table-head-cell",{"table-head-cell--sortable":e.column.getCanSort()}),onClick:e.column.getToggleSortingHandler(),align:i,sx:{justifyContent:Gi[i]},children:[e.isPlaceholder?null:se.flexRender(e.column.columnDef.header,e.getContext()),n(th,{direction:e.column.getIsSorted()})]})},th=({direction:e})=>{switch(e){case"asc":return n(I.IconArrowUp,{size:16});case"desc":return n(I.IconArrowDown,{size:"1em"});default:return null}},Ht={id:"builtin:table:click-cell-content",displayName:"Click Cell Content",nameRender:lh,configRender:rh,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"}]},nh={column:""};function qi(e){const{value:t}=V(e.instanceData,"config");return t?t.columns.map((i,r)=>({label:i.label,value:r.toString()})):[]}function ih(e){return b.isEmpty(e)?[]:Object.keys(e[0]).map(t=>({label:t,value:t}))}function rh(e){const t=qi(e.instance),i=ih(e.sampleData),r=t.length>0?t:i,{value:l,set:s}=V(e.trigger.triggerData,"config"),{column:d}=b.defaults({},l,nh),o=c=>{isNaN(+c)?s({column:c}):s({column:+c})};return n(a.Select,{clearable:!1,data:r,label:"Choose a column",value:d.toString(),onChange:o})}function ah(e,t){return e?b.isNumber(e.column)?`Click cell of ${t[e.column].label}`:`Click cell of ${e.column}`:"Click cell content (click to config)"}function lh(e){const t=qi(e.instance),{value:i}=V(e.trigger.triggerData,"config");return n(a.Text,{children:ah(i,t)})}const sh=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"}})),oh={tableLayout:"fixed","th, td":{padding:"2px 10px",div:{overflow:"hidden",textOverflow:"ellipsis"},"&:first-of-type":{paddingLeft:2,paddingRight:2}}};function Fi(e,t,i){return Math.min(Math.max(e,t),i)}class dh{constructor(t){this.steps=t;const i=[],r=new Set;for(const l of t)r.has(l.to)||(i.push(l),r.add(l.to));if(i.sort((l,s)=>l.from-s.from),i.length<2)throw new Error("MultiStepValueMapper requires at least 2 steps");this.steps=i}getLinearFunction(t,i){const r=(i.to-t.to)/(i.from-t.from),l=t.to-r*t.from;return s=>r*s+l}getStepFunctionForValue(t){let i=b.findLastIndex(this.steps,r=>r.from<=t);return i=Fi(i,0,this.steps.length-2),this.getLinearFunction(this.steps[i],this.steps[i+1])}mapValue(t){return Fi(this.getStepFunctionForValue(t)(t),0,100)}}class uh{constructor(t,i,r,l,s){this.getColIndex=t,this.cell=i,this.triggers=r,this.interactionManager=l,this.colorManager=s}getClickHandler(){const t=this.getRelatedTrigger();if(t.length!==0)return()=>{const i={row_data:this.cell.row.original,row_index:this.cell.row.index,col_index:this.getColIndex(this.cell)};for(const r of t)this.interactionManager.runInteraction(r.id,i)}}getRelatedTrigger(){return this.triggers.filter(i=>i.schemaRef===Ht.id).filter(i=>{const r=this.getColIndex(this.cell),l=b.get(this.cell.column.columnDef.meta,"value_field"),s=b.get(i.config,"column");return s==r||s==l})}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(b.isString(t))return t;const i=+this.cell.getValue();if(isFinite(i)){const r=this.colorManager.decodeInterpolation(t.interpolation),s=new dh(t.steps).mapValue(i);return r==null?void 0:r.getColor(s)}}}const ch=a.createStyles((e,t)=>({content:{display:"flex",alignItems:"center",justifyContent:Gi[t.align],".table-cell-text":{whiteSpace:"nowrap",cursor:t.clickable?"pointer":"default",textDecoration:t.clickable?"underline":"none"}}}));function ph(e){return e?be(e).oklch()[0]>.7?"black":"white":"inherit"}function hh(e){const t=e.tableCellContext.bgColor;return{backgroundColor:t,color:ph(t)}}function Le(e){const t=e.tableCellContext.isClickable(),i=ch({clickable:t,align:e.align});return n("div",{className:i.classes.content,style:{...hh(e)},children:n(a.Text,{className:"table-cell-text",onClick:e.tableCellContext.getClickHandler(),children:n("span",{title:e.children,children:e.children})})})}function gh(e){return n(Le,{...e,children:e.value})}function mh(e){const t=G(e.value).format({average:!0,mantissa:2,trimMantissa:!0});return n(Le,{...e,children:t})}function fh(e){const t=G(e.value).format({thousandSeparated:!0});return n(Le,{...e,children:t})}function bh(e){const t=G(e.value).format({output:"percent",mantissa:3});return n(Le,{...e,children:t})}function yh(e){const t=e.value,i=e.func_content;if(!i)return n(Le,{...e,children:t});const r=new Function(`return ${i}`)()({value:t});return n(Le,{...e,children:r})}function vh(e){switch(e.type){case oe.string:return n(gh,{...e});case oe.eloc:return n(mh,{...e});case oe.number:return n(fh,{...e});case oe.percentage:return n(bh,{...e});case oe.custom:return n(yh,{...e})}}const xh=e=>{const t=fe(e),i=pe(t.triggerManager,Ht.id),{colorManager:r}=g.useContext(me);return g.useCallback(l=>new uh(e.getColIndex,l,i,t,r),[i,t,e.getColIndex])};function Ch({context:e,instance:t}){var ra,aa;const i=e.data??[],{height:r,width:l}=e.viewport,{value:s=Jt}=V(e.instanceData,"config"),{use_raw_columns:d,columns:o,...c}=s,{classes:p,cx:f}=sh(),y=g.useMemo(()=>d?!Array.isArray(i)||i.length===0?[]:Object.keys(i[0]).map(le=>({id:le,label:le,value_field:le,value_type:oe.string,align:"left"})):o,[d,o,i]),h=xh({getColIndex:g.useCallback(le=>y.indexOf(le.column.columnDef.meta),[y]),vizManager:e.vizManager,instance:t}),x=g.useMemo(()=>{const le=se.createColumnHelper();return y.map(ue=>le.accessor(ue.value_field,{cell:la=>n(vh,{tableCellContext:h(la.cell),value:la.getValue(),type:ue.value_type,...ue}),header:ue.label,enableSorting:!0,meta:ue,size:ue.width,minSize:ue.width}))},[y,h]),[C,T]=g.useState([]),L=se.useReactTable({data:i,state:{sorting:C},onSortingChange:T,columns:x,getCoreRowModel:se.getCoreRowModel(),getSortedRowModel:se.getSortedRowModel()}),{rows:X}=L.getRowModel(),de=g.useRef(null),We=pa.useVirtual({parentRef:de,size:X.length,estimateSize:g.useCallback(()=>28,[]),overscan:20}),{virtualItems:H,totalSize:Ue}=We,ae=H.length>0&&((ra=H==null?void 0:H[0])==null?void 0:ra.start)||0,na=H.length>0?Ue-(((aa=H==null?void 0:H[H.length-1])==null?void 0:aa.end)||0):0,In=X.length,ia=In>0,fx=ia?r-22:r,bx=ia?22:0;return!Array.isArray(i)||i.length===0?n(a.Text,{color:"gray",align:"center",children:"Empty Data"}):u("div",{ref:de,style:{height:r,width:l},"data-enable-scrollbar":!0,className:f(p.root,{"table-highlight-on-hover":s.highlightOnHover}),children:[In>0&&n(a.Box,{className:p.info_bar,sx:{height:22},children:u(a.Text,{align:"right",pr:6,size:14,color:"dimmed",fw:"normal",children:["Total: ",In]})}),u(a.Table,{sx:{...oh,maxHeight:fx},...c,striped:s.striped,children:[n("thead",{className:p.thead,style:{top:bx},children:L.getHeaderGroups().map(le=>n("tr",{children:le.headers.map(ke=>n("th",{style:{width:ke.getSize()},children:n(eh,{header:ke,cx:f})},ke.id))},le.id))}),u("tbody",{children:[ae>0&&n("tr",{children:n("td",{style:{height:`${ae}px`}})}),H.map(le=>{const ke=X[le.index];return n("tr",{children:ke.getVisibleCells().map(ue=>n("td",{children:se.flexRender(ue.column.columnDef.cell,ue.getContext())},ue.id))},ke.id)}),na>0&&n("tr",{children:n("td",{style:{height:`${na}px`}})})]})]})]})}const ji=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)"}}}})),wh=[{from:0,to:0},{from:100,to:100}];class _h{constructor(){D(this,"steps",new Map);D(this,"interpolation");D(this,"onChange");$.makeAutoObservable(this,{steps:$.observable},{deep:!1}),$.reaction(()=>$.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(t){for(const i of t)this.steps.set(i.to,i.from)}notifyStepChange(){var t;(t=this.onChange)==null||t.call(this,Array.from(this.steps.entries()).map(([i,r])=>({to:i,from:r})).sort((i,r)=>i.to-r.to||i.from-r.from))}fromProps(t){t.steps.length<2?this.setSteps(wh):this.setSteps(t.steps),this.interpolation=t.interpolation,this.onChange=t.onChange}changeStep(t,i){t==null?this.steps.delete(i):this.steps.set(i,t)}getStepFromValue(t){return this.steps.get(t)}}function Sh(e){const{onChange:t,color:i,index:r,value:l}=e,{classes:s}=ji(),[d,o]=g.useState(l),[c,{setTrue:p,setFalse:f}]=B.useBoolean(!1),y=r%2===1,h=y&&l!=null,x=!y&&l!=null,C=`map ${l} to color ${r}`,T=()=>{o(l),f()},L=()=>{f(),t==null||t(d)},X=G(l).format({average:!0});return u("div",{"data-testid":`palette-item-${r}`,className:s.paletteItem,children:[n(a.Text,{title:C,style:{opacity:h?1:0},color:"dimmed",size:"sm",className:"palette-value--up palette-value",children:X}),u(a.Popover,{width:200,trapFocus:!0,opened:c,onClose:f,children:[n(a.Popover.Target,{children:n("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:p,style:{"--shadow-color":be(i).alpha(.5).hex(),backgroundColor:i}})}),n(a.Popover.Dropdown,{children:u(a.Stack,{children:[n(a.NumberInput,{size:"xs",label:"Map a value to this color",value:d,onChange:o}),u(a.Group,{position:"right",children:[n(a.Button,{variant:"subtle",size:"xs",onClick:T,children:"Cancel"}),n(a.Button,{"data-testid":"palette-item-ok",size:"xs",onClick:L,children:"OK"})]})]})})]}),n(a.Text,{title:C,style:{opacity:x?1:0},color:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:X})]})}const Th=_.observer(({model:e})=>{const{classes:t}=ji(),i=b.range(0,13,1).map(r=>100/12*r).map(r=>[e.interpolation.getColor(r),r]);return n("div",{className:t.palette,children:i.map(([r,l],s)=>n(Sh,{index:s,color:r,value:e.getStepFromValue(l),onChange:d=>e.changeStep(d,l)},r))})}),Dh=_.observer(function(t){const i=B.useCreation(()=>new _h,[]);return g.useEffect(()=>{i.fromProps(t)}),i.interpolation==null?null:n(Th,{model:i})}),kh=e=>{const{value:t,onChange:i,colorManager:r}=e,l=r.getColorInterpolations(),[s,d]=g.useState(t),o=r.decodeInterpolation(s.interpolation)||l[0],[c,{setTrue:p,setFalse:f}]=B.useBoolean(),y=l.map(L=>({label:L.displayName,value:r.encodeColor(L),group:L.category}));function h(L){L&&d(X=>({...X,interpolation:L}))}const x=()=>{f(),i==null||i($.toJS(s))};function C(L){d(X=>({...X,steps:L}))}const T=()=>{f(),d(t)};return u(k,{children:[n(a.Button,{variant:"outline",onClick:p,children:o==null?void 0:o.displayName}),n(a.Modal,{size:508,title:"Setup color interpolation",opened:c,onClose:f,zIndex:320,children:c&&u(a.Stack,{"data-testid":"color-interpolation-modal",children:[n(a.Select,{label:"Color style",value:s.interpolation,data:y,onChange:h}),n(Dh,{steps:s.steps,interpolation:o,onChange:C}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:T,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:x,children:"OK"})]})]})})]})},Ih=["static","interpolation","none"].map(e=>({label:b.capitalize(e),value:e})),Mh=[{from:0,to:0},{from:100,to:100}];function Wi(e){return e?b.isString(e)?e==="none"?"none":"static":"interpolation":"none"}function Ah(e,t){var i;return Wi(t)==="static"?t:(i=e.getStaticColors()[0])==null?void 0:i.value}function zh(e,t){return b.isObject(t)?t:{steps:Mh,interpolation:e.encodeColor(e.getColorInterpolations()[0])}}const Vh=g.forwardRef((e,t)=>{const{colorManager:i}=g.useContext(me),[r,l]=g.useState(Wi(e.value)),[s,d]=g.useState(Ah(i,e.value)),o=B.useLatest(s),[c,p]=g.useState(zh(i,e.value)),f=B.useLatest(c),y=C=>{var T,L,X;l(C||"none"),C==="static"?(T=e.onChange)==null||T.call(e,o.current):C==="none"||!C?(L=e.onChange)==null||L.call(e,"none"):(X=e.onChange)==null||X.call(e,f.current)},h=C=>{var T;d(C),(T=e.onChange)==null||T.call(e,C)},x=C=>{var T;p(C),(T=e.onChange)==null||T.call(e,C)};return u(a.Stack,{align:"stretch",children:[n(a.Select,{label:"Cell background",value:r||"none",onChange:y,data:Ih}),r==="static"&&n(K,{value:s,onChange:h}),r==="interpolation"&&n(kh,{colorManager:i,value:c,onChange:x})]})}),Lh={[oe.eloc]:"ELOC"},Eh=Object.values(oe).map(e=>({label:b.get(Lh,e,b.capitalize(e)),value:e})),Ph=g.forwardRef(({label:e,value:t,onChange:i,sx:r},l)=>n(a.Select,{ref:l,label:e,data:Eh,value:t,onChange:i,sx:r})),Bh=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e),c=()=>{s(),t(d)},p=()=>{s(),o(e)},f=()=>{o(Ni)};return g.useEffect(()=>{o(e)},[e]),u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Custom Cell Content"}),n(a.Modal,{size:800,title:"Custom cell content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(a.Box,{sx:{position:"relative"},children:n(Z,{height:"500px",defaultLanguage:"javascript",value:d,onChange:y=>o(y??""),theme:"vs-dark",options:{minimap:{enabled:!1}}})}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})}),Oh=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],en=()=>n(a.Text,{color:"dimmed",size:12,children:"px"}),$h=({control:e,index:t,watch:i,remove:r,column:l,data:s})=>{const d=i(`columns.${t}.value_type`);return u(a.Stack,{my:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:`columns.${t}.label`,control:e,render:({field:o})=>n(a.TextInput,{label:"Label",required:!0,id:`col-label-${t}`,sx:{flex:1},...o})}),n(v.Controller,{name:`columns.${t}.value_field`,control:e,render:({field:o})=>n(E,{label:"Value Field",required:!0,data:s,...o})})]}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`columns.${t}.value_type`,control:e,render:({field:o})=>n(Ph,{label:"Value Type",sx:{flex:1},...o})}),d===oe.custom&&n(v.Controller,{name:`columns.${t}.func_content`,control:e,render:({field:o})=>n(Bh,{value:o.value??Ni,onChange:c=>o.onChange(c??"")})})]}),n(a.Divider,{mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(a.NumberInput,{hideControls:!0,label:"Min Width",rightSection:n(en,{}),disabled:!0}),n(v.Controller,{name:`columns.${t}.width`,control:e,render:({field:o})=>n(a.NumberInput,{hideControls:!0,label:"Width",rightSection:n(en,{}),...o})}),n(a.NumberInput,{hideControls:!0,label:"Max Width",rightSection:n(en,{}),disabled:!0})]}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`columns.${t}.align`,control:e,render:({field:o})=>n(a.Select,{label:"Alignment",data:Oh,...o})})}),n(v.Controller,{name:`columns.${t}.cellBackgroundColor`,control:e,render:({field:o})=>n(Vh,{...o})}),n(a.Divider,{mb:4,mt:12,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(t),children:"Delete this column"})]})},Nh=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s,update:d}=v.useFieldArray({control:e,name:"columns"}),o=()=>{const p=U.randomId();l({id:p,label:p,value_field:"value",value_type:oe.string})};t("columns");const c=t("use_raw_columns");return u(k,{children:[n(v.Controller,{name:"use_raw_columns",control:e,render:({field:p})=>n(a.Switch,{mt:20,label:"Use Original Data Columns",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked)})}),n(a.Divider,{mt:20,mb:10,variant:"dashed"}),!c&&u(a.Stack,{children:[n(a.Text,{my:0,children:"Custom Columns"}),u(a.Tabs,{defaultValue:"0",styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[r.map((p,f)=>n(a.Tabs.Tab,{value:f.toString(),children:f+1},p.id)),n(a.Tabs.Tab,{onClick:o,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),r.map((p,f)=>n(a.Tabs.Panel,{value:f.toString(),children:n($h,{control:e,watch:t,index:f,column:p,data:i,remove:s},f)},p.id))]})]})]})};function Gh({control:e,watch:t,data:i}){return t(["horizontalSpacing","verticalSpacing","fontSize","striped","highlightOnHover"]),u(a.Stack,{spacing:"xs",children:[u(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:[n(v.Controller,{name:"horizontalSpacing",control:e,render:({field:r})=>n(a.TextInput,{label:"Horizontal Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...r})}),n(v.Controller,{name:"verticalSpacing",control:e,render:({field:r})=>n(a.TextInput,{label:"Vertical Spacing",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...r})})]}),n(a.Group,{position:"apart",mb:"lg",grow:!0,sx:{"> *":{flexGrow:1}},children:n(v.Controller,{name:"fontSize",control:e,render:({field:r})=>n(a.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",required:!0,sx:{flex:1},...r})})}),u(a.Group,{position:"apart",grow:!0,children:[n(v.Controller,{name:"striped",control:e,render:({field:r})=>n(a.Switch,{label:"Striped",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})}),n(v.Controller,{name:"highlightOnHover",control:e,render:({field:r})=>n(a.Switch,{label:"Highlight on hover",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})})]})]})}function qh({columns:e,...t}){return{...t,columns:e.map(({id:i,...r})=>({id:i??U.randomId(),...r}))}}function Fh({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,Jt),[t]),s=g.useMemo(()=>qh(l),[l]);g.useEffect(()=>{!b.isEqual(l,s)&&(console.log("config malformed, resetting to defaults",l,s),i(s))},[l,s]);const{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return c(["id_field"]),u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Columns",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(v.Controller,{name:"id_field",control:d,render:({field:x})=>n(E,{label:"ID Field",required:!0,data:r,...x})})}),n(a.Tabs.Panel,{value:"Style",children:n(Gh,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Columns",children:n(Nh,{control:d,watch:c,data:r})})]})]})}function jh(e){const{columns:t,...i}=e;return{...e,columns:t.map(r=>({...r,align:r.align??"left"}))}}class Wh extends j{constructor(){super(...arguments);D(this,"VERSION",3)}configVersions(){this.version(1,i=>({version:1,config:i})),this.version(2,i=>{const{columns:r,...l}=i.config;return{...i,version:2,config:{...l,columns:r.map(({id:s,...d})=>({id:s??U.randomId(),...d}))}}}),this.version(3,i=>({...i,version:3,config:jh(i.config)}))}}const tn={createConfig(){return{version:3,config:b.cloneDeep(Jt)}},displayName:"Table",displayGroup:"Others",migrator:new Wh,name:"table",viewRender:Ch,configRender:Fh,triggers:[Ht]},Ui=["function text({ data, variables, filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
200
+ `),nn={func_content:Ui,horizontal_align:"left",font_size:"14px",font_weight:"normal"},Uh=_.observer(({context:e})=>{const t=M(),{value:i=nn}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,{func_content:s,horizontal_align:d,font_size:o,font_weight:c}=i,p=g.useMemo(()=>r.reduce((y,h)=>{const x=Ae(h,l);return y[h.name]=Te(h,x),y},{}),[r,l]),f=g.useMemo(()=>new Function(`return ${s}`)()({data:l,variables:p,filters:t.filters.values,context:t.context.current}),[s,l,p,t.filters.values,t.context.current]);return n(a.Text,{align:d,weight:c,sx:{fontSize:o},children:f})}),Rh=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{sx:{position:"relative"},children:n(Z,{height:"500px",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},Qh=g.forwardRef(({value:e,onChange:t},i)=>{const[r,{setTrue:l,setFalse:s}]=B.useBoolean(),[d,o]=g.useState(e),c=()=>{s(),t(d)},p=()=>{s(),o(e)},f=()=>{o(Ui)};return g.useEffect(()=>{o(e)},[e]),u(k,{children:[n(a.Button,{variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},children:"Edit Content"}),n(a.Modal,{size:800,title:"Text content",opened:r,onClose:s,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:r&&u(a.Stack,{children:[n(Rh,{value:d,onChange:o}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:f,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})}),Yh=[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}];function Xh({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaultsDeep({},t,nn),[t]),l=g.useMemo(()=>{const{func_content:h,horizontal_align:x,font_size:C,font_weight:T}=r;return{func_content:h,horizontal_align:x,font_size:C,font_weight:T}},[r]);g.useEffect(()=>{!b.isEqual(r,l)&&(console.log("config malformed, resetting to defaults",r,l),i(l))},[r,l]);const{control:s,handleSubmit:d,watch:o,getValues:c,reset:p}=v.useForm({defaultValues:l});g.useEffect(()=>{p(l)},[l]),o(["func_content","horizontal_align","font_size","font_weight"]);const f=c(),y=g.useMemo(()=>!b.isEqual(f,r),[f,r]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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:!y,children:n(S.DeviceFloppy,{size:20})})]}),u(a.Stack,{spacing:10,children:[n(v.Controller,{name:"func_content",control:s,render:({field:h})=>n(Qh,{...h})}),n(a.Divider,{mt:10,mb:-10,variant:"dashed",label:"Style",labelPosition:"center"}),n(v.Controller,{name:"horizontal_align",control:s,render:({field:h})=>n(a.Select,{label:"Horizontal Alignment",data:Yh,...h})}),n(v.Controller,{name:"font_size",control:s,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(v.Controller,{name:"font_weight",control:s,render:({field:h})=>n(yi,{label:"Font Weight",...h})})})]})]})})}class Zh extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Kh={displayName:"Text",displayGroup:"Others",migrator:new Zh,name:"text",viewRender:Uh,configRender:Xh,createConfig(){return{version:1,config:b.cloneDeep(nn)}}},Jh=()=>u("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 Ri(e,t){const i=b.get(e,t,"");if(i)throw new Error(i)}async function Hh(e,t,i,r={}){const l={"X-Requested-With":"XMLHttpRequest","Content-Type":r.string?"application/x-www-form-urlencoded":"application/json",...r.headers},s={baseURL:e,method:"POST",url:t,params:r.params,headers:l};return s.data=r.string?JSON.stringify(i):i,xe(s).then(d=>d.data).catch(d=>Promise.reject(d))}const eg=({conf:e,data:t})=>async()=>{const{expertSystemURL:i,path:r,goal:l,question:s}=e;if(!r||!l||!s)return;const d={dashboard:l,panel:s,data:t};try{const o=i.startsWith("http")?i:window.location.origin;return await Hh(o,`/expert/v3/devtable/${r}`,d,{})}catch(o){throw Ri(o,"response.data.detail"),Ri(o,"response.data.error"),console.error(o),o}},rn={expertSystemURL:"",path:"",goal:"",question:""},an={height:"100%",overflowY:"auto",...Dt},Qi=({message:e})=>n(a.Box,{sx:an,children:n("div",{dangerouslySetInnerHTML:{__html:e},style:{fontSize:"14px",lineHeight:"32px",color:"#3D3E45"}})}),tg=({error:e,width:t,height:i})=>{const r=e.message;if(r.startsWith("<"))return n(Qi,{message:r});const s=i-25-20-30;return n(a.Center,{sx:{width:"100%",height:s},children:u(a.Stack,{align:"center",spacing:20,children:[n(Jh,{}),n(Qi,{message:r})]})})};function ng({context:e}){const{value:t}=V(e.instanceData,"config"),i=g.useMemo(()=>b.defaultsDeep({},t,rn),[t]),{width:r,height:l}=e.viewport,s=e.data??[],{data:d,error:o,loading:c}=B.useRequest(eg({conf:i,data:s}),{refreshDeps:[s,i]});return!r||!l||!i?null:c?n(a.Box,{sx:{position:"relative",height:l},children:n(a.LoadingOverlay,{visible:!0})}):o?n(a.Box,{sx:an,"data-enable-scrollbar":!0,children:n(tg,{error:o,width:r,height:l})}):!d||!Array.isArray(d.replies)||d.replies.length===0?null:n(a.Box,{sx:an,"data-enable-scrollbar":!0,children:d.replies.map((p,f)=>n("div",{dangerouslySetInnerHTML:{__html:p.interpretation.html}},f))})}function ig({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=g.useMemo(()=>b.defaultsDeep({},t,rn),[t]),{control:l,handleSubmit:s,watch:d,getValues:o,reset:c}=v.useForm({defaultValues:r});g.useEffect(()=>{c(r)},[r]),d(["expertSystemURL","goal","path","question"]);const p=o(),f=g.useMemo(()=>!b.isEqual(p,r),[p,r]);return n("form",{onSubmit:s(i),children:u(a.Stack,{children:[u(a.Group,{grow:!0,children:[n(v.Controller,{name:"expertSystemURL",control:l,render:({field:y})=>n(a.TextInput,{label:"Expert System URL",...y})}),n(v.Controller,{name:"path",control:l,render:({field:y})=>n(a.TextInput,{label:"Path",required:!0,...y})})]}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:"goal",control:l,render:({field:y})=>n(a.TextInput,{label:"Goal",required:!0,...y})}),n(v.Controller,{name:"question",control:l,render:({field:y})=>n(a.TextInput,{label:"Question",required:!0,...y})})]}),n(a.Divider,{variant:"dashed",mt:16,mb:8}),n(a.Button,{type:"submit",variant:"filled",color:"blue",leftIcon:n(S.DeviceFloppy,{size:20}),disabled:!f,sx:{alignSelf:"flex-end"},children:"Submit Changes"})]})})}class rg extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const ag={displayName:"Merico GQM",displayGroup:"Merico suite",migrator:new rg,name:"mericoGQM",viewRender:ng,configRender:ig,createConfig(){return{version:1,config:b.cloneDeep(rn)}}};function lg(e,t,i){if(!e)return i[0];try{return[t,z(t).add(1,"year").subtract(1,"day").valueOf()]}catch(r){return console.error(r),i[0]}}function sg(e,t,i){const r=lg(e,t,i);return{top:50,left:25,right:5,cellSize:["auto",13],range:r,itemStyle:{borderColor:"#eee"},splitLine:{show:!0},dayLabel:{firstDay:1},monthLabel:{position:"end"},yearLabel:{show:!0}}}function og(e){return{heat_block:function(r){if(!e.heat_block.value_formatter)return r;try{return G(r).format(e.heat_block.value_formatter)}catch(l){return console.error(l),r}}}}function dg(e,t){return{show:!e,selectedMode:"single",top:5,right:5,data:t.map(i=>({name:i,icon:"circle"}))}}function ug(e,t,i,r){const{calendar:l,heat_block:s}=e;return t?{type:"heatmap",name:"heatmap",coordinateSystem:"calendar",calendarIndex:0,data:r.map(d=>[b.get(d,l.data_key),b.get(d,s.data_key)])}:Object.entries(i).map(([d,o])=>({type:"heatmap",name:d,coordinateSystem:"calendar",calendarIndex:0,data:o.map(c=>[b.get(c,l.data_key),b.get(c,s.data_key)])}))}const cg=e=>{try{return G(e).format({trimMantissa:!0,mantissa:2})}catch{return e}};function pg({conf:e,valueFormatters:t,dataDict:i,params:r}){const{value:l}=r,[s,d]=l,c=[{label:e.heat_block.name,value:t.heat_block(d),style:{label:"",value:""}}],p=i[s];return p&&e.tooltip.metrics.forEach(f=>{c.push({label:f.name,value:cg(b.get(p,f.data_key,"")),style:{label:"",value:""}})}),c}function hg(e,t,i){const r=b.keyBy(t,e.calendar.data_key);return{confine:!0,formatter:function(l){const d=pg({conf:e,valueFormatters:i,dataDict:r,params:l}).map(p=>`
201
201
  <tr>
202
202
  <th style="text-align: right;">
203
203
  <div style="${p.style.label}">${p.label}</div>
@@ -206,7 +206,7 @@
206
206
  <div style="${p.style.value}">${p.value}
207
207
  </td>
208
208
  </tr>
209
- `),d=b.get(l.value,0);return`
209
+ `),o=b.get(l.value,0);return`
210
210
  <table style="width: auto">
211
211
  <thead>
212
212
  <tr colspan="2">
@@ -217,28 +217,28 @@
217
217
  </tr>
218
218
  <tr>
219
219
  <th colspan="2" style="text-align: center;">
220
- <div>${d}</div>
220
+ <div>${o}</div>
221
221
  </th>
222
222
  </tr>
223
223
  </thead>
224
- <tbody>${o.join("")}</tbody>
224
+ <tbody>${d.join("")}</tbody>
225
225
  </table>
226
- `}}}function gg(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 mg={tooltip:{confine:!0},grid:{containLabel:!0}},fg=e=>z(e).get("year");function bg(e,t){const i=e.calendar.data_key,r=b.groupBy(t,c=>fg(c[i])),l=Object.keys(r),s=t.map(c=>z(c[i]).valueOf()),o=b.min(s),d=b.max(s);return{minDate:o??0,maxDate:d??0,dateSpan:z(d).diff(o,"day"),dataByYear:r,years:l}}function yg(e,t,i){const r=og(e),{dateSpan:l,minDate:s,dataByYear:o,years:d}=bg(e,t),c=l<=366,p={calendar:sg(c,s,d),series:ug(e,c,o,t),tooltip:hg(e,t,r),visualMap:gg(e,c),legend:dg(c,d)};return b.defaultsDeep({},p,mg)}function vg(e){return n(k,{})}function xg(e){return n(a.Text,{children:"Click heat block"})}const Yi={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:xg,configRender:vg,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"}]},ln={calendar:{data_key:"",locale:"EN"},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:J},tooltip:{metrics:[]}};N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.HeatmapChart,A.CalendarComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,A.VisualMapComponent,te.CanvasRenderer]);function Cg({name:e},t){const i=t.getOption();i.calendar.forEach(r=>{r.range=e}),t.setOption(i)}function wg({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const o=g.useMemo(()=>{const y=e.calendar.data_key;return b.keyBy(t,y)},[t,e.calendar.data_key]),d=pe(l.triggerManager,Yi.id),c=g.useCallback(y=>{const[h,x]=y.value,C=b.get(o,h,{error:"rowData is not found"});d.forEach(T=>{l.runInteraction(T.id,{...y,rowData:C})})},[o,d,l]),p=g.useMemo(()=>({click:c,legendselectchanged:Cg}),[c]),f=g.useMemo(()=>yg(e,t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,opts:{locale:e.calendar.locale},theme:"merico-light"})}function _g({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,ln),[r]),o=e.data,{width:d,height:c}=e.viewport;return!s.calendar.data_key||!s.heat_block.data_key?null:n(a.Box,{children:n(wg,{variables:l,width:d,height:c,data:o,conf:s,interactionManager:i})})}function Sg({data:e,control:t,watch:i}){return i(["heat_block"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"heat_block.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.min",control:t,render:({field:r})=>n(a.NumberInput,{label:"Min Value",...r})}),n(v.Controller,{name:"heat_block.max",control:t,render:({field:r})=>n(a.NumberInput,{label:"Max Value",...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(v.Controller,{name:"heat_block.value_formatter",control:t,render:({field:r})=>n(he,{...r})})]})}const Tg=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`tooltip.metrics.${i}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`tooltip.metrics.${i}.data_key`,control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:t,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Metric"})]}),Dg=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"tooltip.metrics"}),o=t("tooltip.metrics"),d=r.map((h,x)=>({...h,...o[x]})),c=()=>l({id:Date.now().toString(),data_key:"",name:""}),p=t("tooltip.metrics.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(Tg,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function kg({data:e,control:t,watch:i}){return n(Dg,{control:t,watch:i,data:e})}const Ig=[{label:"Chinese",value:"ZH"},{label:"English",value:"EN"}];function Mg({data:e,control:t,watch:i}){return i(["calendar"]),u(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"calendar.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})})}),n(v.Controller,{name:"calendar.locale",control:t,render:({field:r})=>n(a.Select,{label:"Language",required:!0,data:Ig,sx:{flex:1},...r})})]})}function Ag({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,ln),[t]),s=g.useMemo(()=>b.cloneDeep(l),[l]);g.useEffect(()=>{!b.isEqual(l,s)&&(console.log("config malformed, resetting to defaults",l,s),i(s))},[l,s]);const{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Calendar",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Mg,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(Sg,{control:o,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(kg,{control:o,watch:c,data:r})})]})]})})}class zg extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Vg={displayName:"Heatmap(Calendar)",displayGroup:"ECharts-based charts",migrator:new zg,name:"calendarHeatmap",viewRender:_g,configRender:Ag,createConfig:()=>({version:1,config:ln}),triggers:[Yi]};function Lg(e){const t=e.x_axes.some(s=>s.position==="top"&&!!s.name&&s.show);let i=0;t&&(i+=15);const r=e.x_axes.some(s=>s.position==="bottom"&&!!s.name&&s.show);let l=0;return r&&(l+=15),e.series.some(s=>!s.hide_in_legend)&&(l+=20),{top:i,right:5,bottom:l,left:5,containLabel:!0}}function Eg(e){switch(e){case"bar":return"roundRect";case"scatter":return"circle"}}function Pg(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(i=>!i.hide_in_legend).map(({name:i,type:r})=>({name:i,icon:Eg(r)})),t}function Bg(e,t,i,r){return e.map(l=>{const s=l.orientation==="horizontal",o=s?"yAxis":"xAxis",d=s?"insideEndTop":"end";return{name:l.name,type:"line",hide_in_legend:!l.show_in_legend,xAxisIndex:l.xAxisIndex,data:[],lineStyle:l.lineStyle,markLine:{data:[{name:l.name,[o]:Number(i[l.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?nt(l.template,t,r):""},position:d}}}})}function sn(e,t,i){return e.map(r=>[r[i],r[t]])}function Og(e,t,i,r){const l=sn(t,i,r);return b.unionBy(l,e,0)}function $g({dataTemplate:e,data:t,name_data_key:i,value_data_key:r,valueTypedXAxis:l}){return l?Og(e,t,i,r):t.map(s=>[s[r],s[i]])}function Ng({dataTemplate:e,data:t,aggregation_on_value:i,name_data_key:r,value_data_key:l,valueTypedXAxis:s}){if(!i||i.type==="none")return $g({dataTemplate:e,data:t,name_data_key:r,value_data_key:l,valueTypedXAxis:s});const o=sn(t,r,l),d=b.groupBy(o,"0");return Object.entries(d).map(([p,f])=>{const y=Ne(f,"1",i);return[p,y]})}function Gg({group_by_key:e,data:t,value_data_key:i,name_data_key:r}){const l=b.groupBy(t,e);return Object.entries(l).forEach(([s,o])=>{l[s]=sn(o,r,i)}),l}function qg({y_axis:e},{data_key:t,xAxisIndex:i,label_position:r,name:l,group_by_key:s,aggregation_on_value:o,stack:d,color:c,hide_in_legend:p,invisible:f,id:y,...h},x,C,T,L,X){const de={label:{show:!!r,position:r,formatter:X[i??"default"]},name:l,yAxisId:"main-y-axis",xAxisIndex:i,stack:d,color:f?"transparent":c,hide_in_legend:p,labelLayout:{hideOverlap:!0},emphasis:{disabled:!0},...h};if(!s||s===e.data_key)return de.data=Ng({dataTemplate:x,data:T,aggregation_on_value:o,name_data_key:e.data_key,value_data_key:t,valueTypedXAxis:C}),de;const We=Gg({group_by_key:s,data:T,name_data_key:e.data_key,value_data_key:t});return Object.entries(We).map(([H,Ue])=>{const ae=b.cloneDeep(de);return ae.name=H,ae.color=void 0,ae.data=Ue,ae})}function Fg(e,t,i,r,l,s,o){const d=t.map(p=>[p,0]);return e.series.map(p=>qg(e,p,d,i,r,o,l)).flat().concat(Bg(e.reference_lines,s,o,r))}function jg(e,t){const i=e.find(d=>d.axisDim==="y"&&d.axisId==="main-y-axis");if(!i)return"";const{name:r,axisType:l,axisValue:s,axisIndex:o}=i;return l==="yAxis.category"?r:ze(t.y_axis.axisLabel.formatter)(s,o)}function Wg(e,t,i){const r=t.reduce((l,{xAxisIndex:s,name:o})=>(l[o]=s,l),{});return{trigger:"axis",axisPointer:{type:"shadow"},formatter:function(l){const s=Array.isArray(l)?l:[l];if(s.length===0)return"";const o=s.map(({seriesName:p,marker:f,value:y})=>{if(Array.isArray(y)&&y.length===2&&(y=y[0]),!p)return y;const h=r[p],x=i[h]??i.default;return`
226
+ `}}}function gg(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 mg={tooltip:{confine:!0},grid:{containLabel:!0}},fg=e=>z(e).get("year");function bg(e,t){const i=e.calendar.data_key,r=b.groupBy(t,c=>fg(c[i])),l=Object.keys(r),s=t.map(c=>z(c[i]).valueOf()),d=b.min(s),o=b.max(s);return{minDate:d??0,maxDate:o??0,dateSpan:z(o).diff(d,"day"),dataByYear:r,years:l}}function yg(e,t,i){const r=og(e),{dateSpan:l,minDate:s,dataByYear:d,years:o}=bg(e,t),c=l<=366,p={calendar:sg(c,s,o),series:ug(e,c,d,t),tooltip:hg(e,t,r),visualMap:gg(e,c),legend:dg(c,o)};return b.defaultsDeep({},p,mg)}function vg(e){return n(k,{})}function xg(e){return n(a.Text,{children:"Click heat block"})}const Yi={id:"builtin:echarts:click-heatmap:heat-block",displayName:"Click Heat Block",nameRender:xg,configRender:vg,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"}]},ln={calendar:{data_key:"",locale:"EN"},heat_block:{min:0,max:1e3,name:"Value",data_key:"",value_formatter:J},tooltip:{metrics:[]}};N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.HeatmapChart,A.CalendarComponent,A.GridComponent,A.LegendComponent,A.TooltipComponent,A.VisualMapComponent,te.CanvasRenderer]);function Cg({name:e},t){const i=t.getOption();i.calendar.forEach(r=>{r.range=e}),t.setOption(i)}function wg({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const d=g.useMemo(()=>{const y=e.calendar.data_key;return b.keyBy(t,y)},[t,e.calendar.data_key]),o=pe(l.triggerManager,Yi.id),c=g.useCallback(y=>{const[h,x]=y.value,C=b.get(d,h,{error:"rowData is not found"});o.forEach(T=>{l.runInteraction(T.id,{...y,rowData:C})})},[d,o,l]),p=g.useMemo(()=>({click:c,legendselectchanged:Cg}),[c]),f=g.useMemo(()=>yg(e,t),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,opts:{locale:e.calendar.locale},theme:"merico-light"})}function _g({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,ln),[r]),d=e.data,{width:o,height:c}=e.viewport;return!s.calendar.data_key||!s.heat_block.data_key?null:n(a.Box,{children:n(wg,{variables:l,width:o,height:c,data:d,conf:s,interactionManager:i})})}function Sg({data:e,control:t,watch:i}){return i(["heat_block"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"heat_block.name",control:t,render:({field:r})=>n(a.TextInput,{label:"Name",sx:{flex:1},...r})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"heat_block.min",control:t,render:({field:r})=>n(a.NumberInput,{label:"Min Value",...r})}),n(v.Controller,{name:"heat_block.max",control:t,render:({field:r})=>n(a.NumberInput,{label:"Max Value",...r})})]}),n(a.Divider,{mb:-15,variant:"dashed",label:"Value Format",labelPosition:"center"}),n(v.Controller,{name:"heat_block.value_formatter",control:t,render:({field:r})=>n(he,{...r})})]})}const Tg=({control:e,data:t,index:i,remove:r})=>u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`tooltip.metrics.${i}.name`,control:e,render:({field:l})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...l})}),n(v.Controller,{name:`tooltip.metrics.${i}.data_key`,control:e,render:({field:l})=>n(E,{label:"Value Field",required:!0,data:t,sx:{flex:1},...l})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>r(i),sx:{top:15,right:5},children:"Delete this Metric"})]}),Dg=({control:e,watch:t,data:i})=>{const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"tooltip.metrics"}),d=t("tooltip.metrics"),o=r.map((h,x)=>({...h,...d[x]})),c=()=>l({id:Date.now().toString(),data_key:"",name:""}),p=t("tooltip.metrics.0.id"),[f,y]=g.useState(()=>p??null);return g.useEffect(()=>{p&&y(h=>h!==null?h:p)},[p]),u(k,{children:[u(a.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[n(S.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}),u(a.Tabs,{value:f,onTabChange:h=>y(h),styles:{tab:{paddingTop:"0px",paddingBottom:"0px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map((h,x)=>n(a.Tabs.Tab,{value:h.id,children:h.name?h.name:x},h.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((h,x)=>n(a.Tabs.Panel,{value:h.id,children:n(Tg,{control:e,index:x,remove:s,data:i},h.id)},h.id))]})]})};function kg({data:e,control:t,watch:i}){return n(Dg,{control:t,watch:i,data:e})}const Ig=[{label:"Chinese",value:"ZH"},{label:"English",value:"EN"}];function Mg({data:e,control:t,watch:i}){return i(["calendar"]),u(a.Stack,{children:[n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"calendar.data_key",control:t,render:({field:r})=>n(E,{label:"Data Field",required:!0,data:e,sx:{flex:1},...r})})}),n(v.Controller,{name:"calendar.locale",control:t,render:({field:r})=>n(a.Select,{label:"Language",required:!0,data:Ig,sx:{flex:1},...r})})]})}function Ag({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),r=e.data,l=g.useMemo(()=>b.defaultsDeep({},t,ln),[t]),s=g.useMemo(()=>b.cloneDeep(l),[l]);g.useEffect(()=>{!b.isEqual(l,s)&&(console.log("config malformed, resetting to defaults",l,s),i(s))},[l,s]);const{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,l),[y,l]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Calendar",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(Mg,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Heat Block",children:n(Sg,{control:d,watch:c,data:r})}),n(a.Tabs.Panel,{value:"Tooltip",children:n(kg,{control:d,watch:c,data:r})})]})]})})}class zg extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const Vg={displayName:"Heatmap(Calendar)",displayGroup:"ECharts-based charts",migrator:new zg,name:"calendarHeatmap",viewRender:_g,configRender:Ag,createConfig:()=>({version:1,config:ln}),triggers:[Yi]};function Lg(e){const t=e.x_axes.some(s=>s.position==="top"&&!!s.name&&s.show);let i=0;t&&(i+=15);const r=e.x_axes.some(s=>s.position==="bottom"&&!!s.name&&s.show);let l=0;return r&&(l+=15),e.series.some(s=>!s.hide_in_legend)&&(l+=20),{top:i,right:5,bottom:l,left:5,containLabel:!0}}function Eg(e){switch(e){case"bar":return"roundRect";case"scatter":return"circle"}}function Pg(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(i=>!i.hide_in_legend).map(({name:i,type:r})=>({name:i,icon:Eg(r)})),t}function Bg(e,t,i,r){return e.map(l=>{const s=l.orientation==="horizontal",d=s?"yAxis":"xAxis",o=s?"insideEndTop":"end";return{name:l.name,type:"line",hide_in_legend:!l.show_in_legend,xAxisIndex:l.xAxisIndex,data:[],lineStyle:l.lineStyle,markLine:{data:[{name:l.name,[d]:Number(i[l.variable_key])}],silent:!0,symbol:["none","none"],lineStyle:l.lineStyle,label:{formatter:function(){return l.template?nt(l.template,t,r):""},position:o}}}})}function sn(e,t,i){return e.map(r=>[r[i],r[t]])}function Og(e,t,i,r){const l=sn(t,i,r);return b.unionBy(l,e,0)}function $g({dataTemplate:e,data:t,name_data_key:i,value_data_key:r,valueTypedXAxis:l}){return l?Og(e,t,i,r):t.map(s=>[s[r],s[i]])}function Ng({dataTemplate:e,data:t,aggregation_on_value:i,name_data_key:r,value_data_key:l,valueTypedXAxis:s}){if(!i||i.type==="none")return $g({dataTemplate:e,data:t,name_data_key:r,value_data_key:l,valueTypedXAxis:s});const d=sn(t,r,l),o=b.groupBy(d,"0");return Object.entries(o).map(([p,f])=>{const y=Ne(f,"1",i);return[p,y]})}function Gg({group_by_key:e,data:t,value_data_key:i,name_data_key:r}){const l=b.groupBy(t,e);return Object.entries(l).forEach(([s,d])=>{l[s]=sn(d,r,i)}),l}function qg({y_axis:e},{data_key:t,xAxisIndex:i,label_position:r,name:l,group_by_key:s,aggregation_on_value:d,stack:o,color:c,hide_in_legend:p,invisible:f,id:y,...h},x,C,T,L,X){const de={label:{show:!!r,position:r,formatter:X[i??"default"]},name:l,yAxisId:"main-y-axis",xAxisIndex:i,stack:o,color:f?"transparent":c,hide_in_legend:p,labelLayout:{hideOverlap:!0},emphasis:{disabled:!0},...h};if(!s||s===e.data_key)return de.data=Ng({dataTemplate:x,data:T,aggregation_on_value:d,name_data_key:e.data_key,value_data_key:t,valueTypedXAxis:C}),de;const We=Gg({group_by_key:s,data:T,name_data_key:e.data_key,value_data_key:t});return Object.entries(We).map(([H,Ue])=>{const ae=b.cloneDeep(de);return ae.name=H,ae.color=void 0,ae.data=Ue,ae})}function Fg(e,t,i,r,l,s,d){const o=t.map(p=>[p,0]);return e.series.map(p=>qg(e,p,o,i,r,d,l)).flat().concat(Bg(e.reference_lines,s,d,r))}function jg(e,t){const i=e.find(o=>o.axisDim==="y"&&o.axisId==="main-y-axis");if(!i)return"";const{name:r,axisType:l,axisValue:s,axisIndex:d}=i;return l==="yAxis.category"?r:ze(t.y_axis.axisLabel.formatter)(s,d)}function Wg(e,t,i){const r=t.reduce((l,{xAxisIndex:s,name:d})=>(l[d]=s,l),{});return{trigger:"axis",axisPointer:{type:"shadow"},formatter:function(l){const s=Array.isArray(l)?l:[l];if(s.length===0)return"";const d=s.map(({seriesName:p,marker:f,value:y})=>{if(Array.isArray(y)&&y.length===2&&(y=y[0]),!p)return y;const h=r[p],x=i[h]??i.default;return`
227
227
  <tr>
228
228
  <td>${f}</td>
229
229
  <th style="text-align: right; padding: 0 1em;">${p}</th>
230
230
  <td style="text-align: left; padding: 0 1em;">${x({value:y})}</td>
231
231
  </tr>
232
- `}),d=_e(e.y_axis.axisLabel.overflow.in_tooltip),c=jg(s,e);return`
232
+ `}),o=_e(e.y_axis.axisLabel.overflow.in_tooltip),c=jg(s,e);return`
233
233
  <div style="text-align: left; margin-bottom: .5em; padding: 0 1em .5em; font-weight: bold; border-bottom: 1px dashed #ddd;">
234
- <div style="${d}">${c}</div>
234
+ <div style="${o}">${c}</div>
235
235
  </div>
236
236
  <table style="width: auto">
237
237
  <tbody>
238
- ${o.join("")}
238
+ ${d.join("")}
239
239
  </tbody>
240
240
  </table>
241
- `}}}function Ug(e){return e.x_axes.reduce((i,{label_formatter:r},l)=>(i[l]=function(o){let d=o;if(typeof o=="object"&&(Array.isArray(o.value)&&o.value.length===2?d=o.value[0]:d=o.value),!r)return d;try{return G(d).format(r)}catch(c){return console.error(c),d}},i),{default:({value:i})=>i})}function Rg(e,t){const i={};return t.map(r=>{const l=Ae(r,e);i[r.name]=Te(r,l)}),i}function Qg(e,t){return e.x_axes.map(({min:i,max:r,...l},s)=>{let o=l.position;return o||(o=s>0?"bottom":"top"),{...l,type:"value",min:i||void 0,max:r||void 0,position:o,axisLabel:{show:!0,margin:2,formatter:t[s]??t.default},axisLine:{show:!0},axisTick:{show:!1},splitLine:{show:!0},nameTextStyle:{fontWeight:"bold"},nameLocation:"center",nameGap:15}})}function Yg(e,t){const i=t.every(o=>!Number.isNaN(Number(o))),{overflow:r,...l}=e.y_axis.axisLabel,s=Se(r.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:i?"value":"category",axisLabel:{...l,...s,formatter:ze(l.formatter)},z:5}]}function Xg(e,t,i){const r=Rg(t,i),l=Ug(e),s=b.uniq(t.map(p=>p[e.y_axis.data_key])),o=s.every(p=>!Number.isNaN(Number(p))),d=Fg(e,s,o,t,l,i,r);return{xAxis:Qg(e,l),yAxis:Yg(e,s),series:d,tooltip:Wg(e,d,l),grid:Lg(e),legend:Pg(d)}}const on={x_axes:[{id:"initial-x",min:"",max:"",name:"X Axis",data_key:"",position:"bottom",label_formatter:J,show:!0}],y_axis:{name:"Y Axis",data_key:"",axisLabel:{formatter:{...ge},overflow:ve},nameAlignment:"center"},series:[],tooltip:{metrics:[]},reference_lines:[]};function Zg(){const e=new Date().getTime().toString();return{id:e,min:"",max:"",name:e,data_key:"",position:"bottom",label_formatter:J,show:!0}}function Kg(){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:$e,xAxisIndex:"0"}}function Jg(){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"}}N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer,A.MarkLineComponent,A.MarkAreaComponent]);function Hg({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const o=g.useMemo(()=>b.keyBy(t,e.y_axis.data_key),[t,e.y_axis.data_key]),d=pe(l.triggerManager,Bt.id),c=g.useCallback(y=>{const h=b.get(o,y.name,{error:"rowData is not found"});d.forEach(x=>{l.runInteraction(x.id,{...y,rowData:h})})},[o,d,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>Xg(e,t,s),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function em({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,on),[r]),o=e.data,{width:d,height:c}=e.viewport;return n(a.Box,{children:n(Hg,{variables:l,width:d,height:c,data:o,conf:s,interactionManager:i})})}const tm=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],nm=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function im({control:e,index:t,remove:i,watch:r,variableOptions:l,xAxisOptions:s}){const o=r(`reference_lines.${t}.orientation`);return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:d})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...d})}),n(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:d})=>n(a.Select,{label:"Value",required:!0,data:l,sx:{flex:1},...d})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:d})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...d})}),u(a.Group,{grow:!0,children:[u(a.Stack,{children:[n(v.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:d})=>n(a.Select,{label:"Orientation",data:nm,required:!0,sx:{flex:1},...d})}),o==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),o==="horizontal"&&n(v.Controller,{name:`reference_lines.${t}.xAxisIndex`,control:e,render:({field:d})=>n(a.Select,{label:"X Axis",data:s,disabled:s.length===0,sx:{flex:1},...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:d})=>n(a.Select,{label:"Line Type",data:tm,sx:{flexGrow:1},...d})}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:d})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...d})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:d})=>n(K,{...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:d})=>n(a.Checkbox,{label:"Show in legend",checked:d.value,onChange:c=>d.onChange(c.currentTarget.checked)})}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function rm({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),o=t("reference_lines"),d=r.map((x,C)=>({...x,...o[C]})),c=()=>{const x=Jg();l(x)},p=g.useMemo(()=>i.map(x=>({label:x.name,value:x.name})),[i]),f=t("x_axes"),y=g.useMemo(()=>f.map(({name:x},C)=>({label:x,value:C.toString()})),[f]),h=d.length>0?d[0].id:"0";return u(a.Tabs,{defaultValue:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map((x,C)=>n(a.Tabs.Tab,{value:x.id,children:x.name},C)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((x,C)=>n(a.Tabs.Panel,{value:x.id,children:n(im,{control:e,index:C,remove:s,watch:t,variableOptions:p,xAxisOptions:y})},C))]})}function am(e){const[t,i]=g.useState(e);return g.useEffect(()=>{i(e)},[e]),{tab:t,setTab:i}}const lm=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function sm({control:e,index:t,seriesItem:i}){const r=!!i.barWidth.trim();return u(k,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.stack`,control:e,render:({field:l})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barGap`,control:e,render:({field:l})=>n(a.Select,{label:"Bar Gap",data:lm,sx:{flexGrow:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:r,sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:r,sx:{flexGrow:1},...l})})]})]})}const om=[{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 dm({control:e,index:t,remove:i,seriesItem:r,xAxisOptions:l,data:s}){return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.name`,control:e,render:({field:o})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...o})}),n(v.Controller,{name:`series.${t}.xAxisIndex`,control:e,render:({field:o})=>n(a.Select,{label:"X Axis",data:l,disabled:l.length===0,sx:{flex:1},...o})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.data_key`,control:e,render:({field:o})=>n(E,{label:"Value Field",required:!0,data:s,sx:{flex:1},...o})}),n(v.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:o})=>n(et,{label:"Aggregation on Value",value:o.value??$e,onChange:o.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(v.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:o})=>n(E,{label:"Split into multiple series by this key...",data:s,clearable:!0,sx:{flex:1},...o})})}),n(sm,{index:t,control:e,seriesItem:r}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.label_position`,control:e,render:({field:o})=>n(a.Select,{label:"Label Position",data:om,...o})}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`series.${t}.color`,control:e,render:({field:o})=>n(K,{...o})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:o})=>n(a.Checkbox,{label:"Hide in legend",checked:o.value,onChange:d=>o.onChange(d.currentTarget.checked)})}),n(v.Controller,{name:`series.${t}.invisible`,control:e,render:({field:o})=>n(a.Checkbox,{label:"Invisible",checked:o.value,onChange:d=>o.onChange(d.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function um({control:e,watch:t,data:i}){var x;const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"series"}),o=t("series"),d=r.map((C,T)=>({...C,...o[T]})),c=()=>{const C=Kg();l(C)},p=t("x_axes"),f=g.useMemo(()=>p.map(({name:C},T)=>({label:C,value:T.toString()})),[p]),{tab:y,setTab:h}=am((x=d[0])==null?void 0:x.id);return u(a.Tabs,{value:y,onTabChange:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[d.map(C=>n(a.Tabs.Tab,{value:C.id,children:C.name},C.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((C,T)=>n(a.Tabs.Panel,{value:C.id,children:n(dm,{control:e,index:T,remove:s,seriesItem:C,xAxisOptions:f,data:i},C.id)},C.id))]})}const cm=[{label:"Top",value:"top"},{label:"Bottom",value:"bottom"}];function pm({control:e,index:t,remove:i}){return u(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(v.Controller,{name:`x_axes.${t}.name`,control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`x_axes.${t}.position`,control:e,render:({field:r})=>n(a.Select,{label:"Position",required:!0,data:cm,sx:{flex:1},...r})})}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:`x_axes.${t}.label_formatter`,control:e,render:({field:r})=>n(he,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`x_axes.${t}.min`,control:e,render:({field:r})=>n(a.TextInput,{label:"Min",...r})}),n(v.Controller,{name:`x_axes.${t}.max`,control:e,render:({field:r})=>n(a.TextInput,{label:"Max",...r})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`x_axes.${t}.show`,control:e,render:({field:r})=>n(a.Checkbox,{label:"Visible",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),disabled:t===0,children:"Delete this X Axis"})]})}function hm({control:e,watch:t}){const{fields:i,append:r,remove:l}=v.useFieldArray({control:e,name:"x_axes"}),s=t("x_axes"),o=i.map((p,f)=>({...p,...s[f]})),d=()=>{const p=Zg();r(p)},c=o.length>0?o[0].id:"0";return u(a.Tabs,{defaultValue:c,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map(p=>n(a.Tabs.Tab,{value:p.id,children:p.name},p.id)),n(a.Tabs.Tab,{onClick:d,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((p,f)=>n(a.Tabs.Panel,{value:p.id,children:n(pm,{control:e,index:f,remove:l})},p.id))]})}function gm({data:e,control:t,watch:i}){return i(["y_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"y_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"y_axis.axisLabel.formatter",control:t,render:({field:r})=>n(it,{data:e,...r})})}),n(v.Controller,{name:"y_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})})]})}function mm({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,s=g.useMemo(()=>b.defaultsDeep({},t,on),[t]),{control:o,handleSubmit:d,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]),c([]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,s),[y,s]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:d(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(hm,{control:o,watch:c})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(gm,{control:o,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Series",children:n(um,{control:o,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(rm,{variables:r,control:o,watch:c})})]})]})})}class fm extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const bm={displayName:"Horizontal Bar Chart",displayGroup:"ECharts-based charts",migrator:new fm,name:"horizontalBarChart",viewRender:em,configRender:mm,createConfig:()=>({version:1,config:on})},ym=[{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"})),vm=[wl,_l,Dl,Tl,Sl,kl],Xi=()=>({id:"dashboard",version:At,manifest:{viz:[tn,Vp,Kh,bc,Hp,Gu,bm,Bl,Ss,Md,iu,Vg,Pu,sd,Sp,nc,pc,ag,$s],color:[...ym,...vm]}}),Fe=new Al,W={pluginManager:ye("pluginManager"),vizManager:ye("vizManager"),colorManager:ye("colorManager"),instanceScope:{panelModel:ye("panelModel"),vizInstance:ye("vizInstance"),interactionManager:ye("interactionManager"),migrator:ye("migrator"),operationManager:ye("operationManager"),triggerManager:ye("triggerManager")}},dn=()=>{try{Fe.install(Xi())}catch{}const e=new vl(Fe),t=new Ml(Fe);return{pluginManager:Fe,vizManager:e,colorManager:t}},me=g.createContext(dn());try{Fe.install(Xi())}catch{}function xm(e,t){const{value:i,set:r}=V(e.operation.operationData,"config"),[l,s]=g.useState(b.defaults({},i,t)),o=async()=>{await r(l)};return g.useEffect(()=>{s(b.defaults({},i,t))},[i]),{config:l,setConfig:s,commit:o}}function Cm(e){const{config:t,setConfig:i,commit:r}=xm(e,{urlTemplate:"",openInNewTab:!0});async function l(){await r()}async function s(d){i({...t,openInNewTab:d}),await r()}const o=d=>i({...t,urlTemplate:d.currentTarget.value});return u(a.Stack,{children:[n(a.TextInput,{label:"Url",value:t.urlTemplate,onChange:o,onBlur:l}),n(a.Switch,{label:"Open in new Tab",checked:t.openInNewTab,onChange:d=>s(d.currentTarget.checked)})]})}async function wm(e,t){const{urlTemplate:i,openInNewTab:r}=await t.operationData.getItem("config");window.dispatchEvent(new CustomEvent("open-link",{detail:{urlTemplate:i,openInNewTab:r,payload:e}}))}class _m extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>i)}}const Sm={displayName:"Open Link",id:"builtin:op:open-link",configRender:Cm,run:wm,migrator:new _m,createDefaultConfig:()=>({version:1,config:{urlTemplate:"",openInNewTab:!0}})};function Tm(e){const{value:t,set:i}=V(e.operationData,"config"),r=l=>void i({template:l});return[(t==null?void 0:t.template)||"",r]}function Dm(e){const[t,i]=Tm(e.operation);return n(a.TextInput,{defaultValue:t,onBlur:r=>i(r.currentTarget.value),label:"console.log"})}async function km(e,t){const i=await t.operationData.getItem("config"),r=b.template(i.template||"");console.log("run with payload",e),console.log(r(e))}const Im={displayName:"console.log (debug)",id:"builtin:op:debug",configRender:Dm,run:km},Mm=_.observer(e=>{const t=M(),{value:i,set:r}=V(e.operation.operationData,"config");console.log({value:i,viewID:i==null?void 0:i.viewID});const l=(i==null?void 0:i.viewID)||"",s=o=>void r({viewID:o});return n(a.Select,{defaultValue:l,value:l,onChange:s,label:"View",data:t.views.options})});async function Am(e,t){const r=(await t.operationData.getItem("config")).viewID;window.dispatchEvent(new CustomEvent("open-view",{detail:{viewID:r}}))}const zm={displayName:"Open View",id:"builtin:op:open_view",configRender:Mm,run:Am},Vm={dictionary:{}},Lm=_.observer(e=>{const t=M(),{value:i=Vm,set:r}=V(e.operation.operationData,"config"),{dictionary:l={}}=i,s=(c,p)=>{r({dictionary:{...l,[c]:p}})},o=()=>{s(t.filters.firstFilterValueKey,"")},d=c=>{const p={...l};delete p[c],r({dictionary:p})};return u(a.Stack,{spacing:10,children:[n(a.Text,{children:"Mapping Rules"}),Object.entries(l).map(([c,p])=>u(a.Flex,{justify:"space-between",gap:10,children:[n(a.TextInput,{label:"Payload key",value:p,onChange:f=>{s(c,f.currentTarget.value)},sx:{flexGrow:1}}),n(E,{data:[t.filters.values],value:c,onChange:f=>{s(f,p)},label:"Filter key",sx:{flexGrow:1}}),n(a.ActionIcon,{onClick:()=>d(c),sx:{marginTop:"26px",flexGrow:0},children:n(S.Trash,{size:14,color:"red"})})]},c)),n(a.Button,{size:"xs",onClick:o,sx:{alignSelf:"center",width:"300px"},children:"Add one mapping rule"})]})});async function Em(e,t){const r=(await t.operationData.getItem("config")).dictionary;window.dispatchEvent(new CustomEvent("set-filter-values",{detail:{dictionary:r,payload:e}}))}const Pm={displayName:"Set Filter Values",id:"builtin:op:set_filter_values",configRender:Lm,run:Em},Bm={filter_keys:[]},Om=_.observer(e=>{const t=M(),{value:i=Bm,set:r}=V(e.operation.operationData,"config"),{filter_keys:l=[]}=i,s=d=>{r({filter_keys:[...d]})},o=g.useMemo(()=>t.filters.current.map(d=>({label:d.label,value:d.key})),[t.filters.values]);return n(a.Stack,{spacing:10,children:n(a.MultiSelect,{label:"Select Filters to Clear",data:o,value:l,onChange:s})})});async function $m(e,t){const r=(await t.operationData.getItem("config")).filter_keys;window.dispatchEvent(new CustomEvent("clear-filter-values",{detail:{filter_keys:r,payload:e}}))}const dt=[Im,Sm,zm,Pm,{displayName:"Clear Filter Values",id:"builtin:op:clear_filter_values",configRender:Om,run:$m}];class Nm{constructor(t,i=dt){D(this,"attachments");this.operations=i;const r=async l=>{const{id:s,schemaRef:o}=await l.getItem(null);return{id:s,schemaRef:o,operationData:new Me(l,"data")}};this.attachments=new Mt(t,"__OPERATIONS",r)}async runOperation(t,i){const r=await this.attachments.getInstance(t);if(!r){console.warn(`Operation '${t}' is not defined`);return}const l=this.tryGetSchema(r.schemaRef);if(!l){console.warn(`Operation schema '${r.schemaRef}' is not defined`);return}await l.run(i,r)}tryGetSchema(t){return this.operations.find(i=>i.id===t)}async needMigration(){const i=(await this.attachments.list()).map(async r=>{const l={configData:r.operationData},s=this.tryGetSchema(r.schemaRef),o=s==null?void 0:s.migrator;return o&&await o.needMigration(l)});return(await Promise.all(i)).some(r=>r)}async runMigration(){const i=(await this.attachments.list()).map(async r=>{const l={configData:r.operationData},s=this.tryGetSchema(r.schemaRef),o=s==null?void 0:s.migrator;o&&await o.needMigration(l)&&await o.migrate(l)});await Promise.all(i)}async createOrGetOperation(t,i){var o;if(!this.getOperationSchemaList().some(d=>d.id===i.id))throw new Error(`Operation schema '${i.id}' is not defined`);const l=await this.attachments.getInstance(t);return!l||l.schemaRef!==i.id?await this.attachments.create(t,{id:t,schemaRef:i.id,data:((o=i.createDefaultConfig)==null?void 0:o.call(i))??{}}):l}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 Zi="__TRIGGERS";class Gm{constructor(t,i){D(this,"attachments");this.instance=t,this.component=i;const r=async l=>{const{id:s,schemaRef:o}=await l.getItem(null);return{id:s,schemaRef:o,triggerData:new Me(l,"data")}};this.attachments=new Mt(t,Zi,r)}watchTriggerSnapshotList(t){return this.instance.instanceData.watchItem(Zi,i=>{const r=b.values(i).map(l=>({id:b.get(l,"id"),schemaRef:b.get(l,"schemaRef"),config:$.toJS(b.get(l,"data.config"))}));t(r)},{fireImmediately:!0})}async createOrGetTrigger(t,i,r={recreate:!1}){var d;if(!this.getTriggerSchemaList().some(c=>c.id===i.id))throw new Error(`Trigger schema '${i.id}' is not defined in component '${this.component.name}'`);const s=await this.attachments.getInstance(t);return!s||r.recreate||s.schemaRef!==i.id?await this.attachments.create(t,{id:t,schemaRef:i.id,data:((d=i==null?void 0:i.createDefaultConfig)==null?void 0:d.call(i))||{}}):s}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 i=(await this.getTriggerList()).map(async r=>{const l=this.getTriggerSchemaList().find(d=>d.id===r.schemaRef),s=l==null?void 0:l.migrator,o={configData:r.triggerData};return s&&await s.needMigration(o)?()=>s.migrate(o):null});return Promise.all(i).then(r=>r.filter(l=>l))}async needMigration(){return(await this.getMigrationTasks()).length>0}async runMigration(){const t=await this.getMigrationTasks();await Promise.all(t.map(i=>i()))}}class un{constructor(t,i,r){D(this,"operationManager");D(this,"triggerManager");D(this,"attachments");this.operationManager=new Nm(t,r),this.triggerManager=new Gm(t,i);const l=async s=>{const{id:o,triggerRef:d,operationRef:c}=await s.getItem(null);return{id:o,triggerRef:d,operationRef:c}};this.attachments=new Mt(t,"__INTERACTIONS",l)}async addInteraction(t,i){const r=t.id,l=i.id,s=`[${r}]:[${l}]`;await this.attachments.create(s,{id:s,triggerRef:r,operationRef:l})}getInteractionList(){return this.attachments.list()}async removeInteraction(t){const i=await this.attachments.getInstance(t);if(!i)return;const{triggerRef:r,operationRef:l}=i;await this.getTriggerRefCount(r)<=1&&await this.triggerManager.removeTrigger(r),await this.getOperationRefCount(l)<=1&&await this.operationManager.removeOperation(l),await this.attachments.remove(t)}async getOperationRefCount(t){return(await this.getInteractionList()).filter(r=>r.operationRef===t).length}async getTriggerRefCount(t){return(await this.getInteractionList()).filter(r=>r.triggerRef===t).length}async runInteraction(t,i){const l=(await this.getInteractionList()).filter(s=>s.triggerRef===t);await Promise.all(l.map(async s=>{try{return await this.operationManager.runOperation(s.operationRef,i)}catch(o){console.warn(`Failed to run operation '${s.operationRef}'`,o)}}))}}const fe=({vizManager:e,instance:t})=>B.useCreation(()=>new un(t,e.resolveComponent(t.type),dt),[t,e]),Ki=e=>{const{title:t="Variables",variables:i}=e,r=U.useClipboard(),l=s=>{r.copy(s),Qe.showNotification({color:"green",message:"Copied to clipboard"})};return u(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:i.map(s=>u(a.Text,{size:"sm",children:[u(a.Code,{color:"teal",children:["// ",s.description]}),n("br",{}),u(a.Code,{onClick:()=>l(s.name),style:{cursor:"pointer"},children:[s.name," : ",s.valueType]})]},s.name))})]})};class qm{constructor(t,i){D(this,"operationId");D(this,"operation");D(this,"operationSchema");D(this,"variables",[]);this.operationManager=t,this.instance=i,$.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(t,i){const r=await this.operationManager.retrieveTrigger(t),l=this.operationManager.getOperationSchemaList().find(s=>s.id===(r==null?void 0:r.schemaRef));$.runInAction(()=>{this.operationId=t,this.operation=r,this.operationSchema=l,this.variables=i})}async changeSchema(t){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,t),await this.configOperation(this.operationId,this.variables))}}function Fm(e){return!!e.operationId}const jm=_.observer(({model:e,onClick:t})=>{var r;const i=(r=e.operationSchema)==null?void 0:r.displayName;return n(a.Button,{variant:"outline",onClick:t,children:i})}),Wm=_.observer(({model:e})=>{const t={operation:e.operation,instance:e.instance,variables:[]};return g.createElement(e.operationSchema.configRender,t)});function Um({model:e}){const t=e.schemaList,i=t.map(l=>({label:l.displayName,value:l.id}));async function r(l){await e.changeSchema(t.find(s=>s.id===l))}return n(a.Select,{label:"Operation",data:i,onChange:r,value:e.operationSchema.id})}const Rm=_.observer(e=>{const[t,{setTrue:i,setFalse:r}]=B.useBoolean(!1),{operationManager:l,operationId:s,instance:o,variables:d}=e,c=B.useCreation(()=>new qm(l,o),[l,o]);return B.useAsyncEffect(async()=>{await c.configOperation(s,d)},[s,c]),Fm(c)?u(k,{children:[n(jm,{model:c,onClick:i}),n(a.Modal,{size:600,opened:t,onClose:r,title:"Operation Settings",closeButtonLabel:"close",zIndex:320,children:u(a.Stack,{children:[n(Um,{model:c}),n(Wm,{model:c}),n(Ki,{title:"Variables",variables:c.variables})]})})]}):null});class Qm{constructor(t,i){D(this,"triggerId");D(this,"trigger");D(this,"triggerSchema");D(this,"sampleData");this.triggerManager=t,this.instance=i,$.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(t,i){const r=await this.triggerManager.retrieveTrigger(t),l=this.triggerManager.getTriggerSchemaList().find(s=>s.id===(r==null?void 0:r.schemaRef));$.runInAction(()=>{this.triggerId=t,this.trigger=r,this.triggerSchema=l,this.sampleData=i})}async changeSchema(t){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,t),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return Ym(this)}}function Ym(e){return!!e.triggerId&&!!e.triggerSchema}function Xm(e,t){return B.useCreation(()=>new Qm(e,t),[e,t])}const Zm=_.observer(({model:e,onClick:t})=>{const i=e.triggerSchema.nameRender,r={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return n(a.Button,{variant:"outline",onClick:t,children:g.createElement(i,r)})}),Km=_.observer(({model:e})=>{const t=e.schemaList,i=t.map(l=>({label:l.displayName,value:l.id}));async function r(l){await e.changeSchema(t.find(s=>s.id===l))}return n(a.Select,{label:"Trigger",data:i,value:e.triggerSchema.id,onChange:r})}),Jm=_.observer(({model:e})=>{const t={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return g.createElement(e.triggerSchema.configRender,t)}),Hm=_.observer(e=>{const[t,{setTrue:i,setFalse:r}]=B.useBoolean(!1),l=e.model;return u(k,{children:[n(a.Modal,{opened:t,onClose:r,title:"Setup Trigger",closeButtonLabel:"close setup",zIndex:320,children:u(a.Stack,{children:[n(Km,{model:l}),n(Jm,{model:l}),n(Ki,{title:"Payload",variables:l.triggerSchema.payload})]})}),n(Zm,{onClick:i,model:l})]})});function ef(e,t){const[i,r]=g.useState([]);return B.useAsyncEffect(async()=>{const l=await e.getInteractionList();r(l)},[t,e]),i}const tf=_.observer(({item:e,manager:t,instance:i,sampleData:r,variables:l,onRemove:s})=>{const{triggerRef:o,operationRef:d}=e,c=Xm(t.triggerManager,i);if(B.useAsyncEffect(async()=>{await c.configTrigger(o,r)},[c,o,r]),c.isReady()){const p=[...c.triggerSchema.payload,...l];return u(a.Group,{children:[n(Hm,{model:c}),n(Rm,{instance:i,operationId:d,variables:p,operationManager:t.operationManager}),n(a.ActionIcon,{"aria-label":"delete-interaction",variant:"filled",color:"red",onClick:()=>s(e),children:n(S.Trash,{size:16})})]})}return null}),nf=e=>{const[t,i]=g.useState(0),{interactionManager:r,instance:l,sampleData:s,variables:o}=e,d=ef(r,t),c=async()=>{const h=await r.triggerManager.createOrGetTrigger(U.randomId(),r.triggerManager.getTriggerSchemaList()[0]),x=await r.operationManager.createOrGetOperation(U.randomId(),r.operationManager.getOperationSchemaList()[0]);await r.addInteraction(h,x),i(C=>C+1)};async function p(h){await r.removeInteraction(h.id),i(x=>x+1)}const{data:f=0,loading:y}=B.useRequest(async()=>{try{return(await r.triggerManager.getTriggerSchemaList()).length}catch{return 0}});return u(a.Stack,{children:[n(a.LoadingOverlay,{visible:y}),f===0&&n(a.Alert,{icon:n(S.AlertCircle,{size:16}),title:"Unavailable",color:"gray",children:"This visualization does not have available interactions to choose from"}),d.map(h=>n(tf,{onRemove:p,instance:l,sampleData:s,variables:o,item:h,manager:e.interactionManager},h.id)),n(a.Button,{style:{width:"fit-content"},onClick:()=>c(),disabled:f===0,children:"Add interaction"})]})},rf=()=>{const{panel:e,data:t}=Q(),i=e.viz,{vizManager:r}=g.useContext(me),l=e.json,s=B.useCreation(()=>r.getOrCreateInstance(l),[r,l]),o=B.useCreation(()=>new un(s,r.resolveComponent(i.type),dt),[s,i.type]);return g.useEffect(()=>s.instanceData.watchItem(null,b.throttle(d=>{e.viz.setConf(d)},100,{leading:!1,trailing:!0})),[s]),{instance:s,vizManager:r,interactionManager:o,sampleData:t,variables:[]}},af=()=>{const e=rf();return n(nf,{...e})};var Ji=(e=>(e.migrated="migrated",e.nothingToMigrate="nothingToMigrate",e.checkFailed="checkFailed",e.migrationFailed="migrationFailed",e))(Ji||{}),ut=(e=>(e.notStarted="notStarted",e.inProgress="inProgress",e.done="done",e))(ut||{});class lf{constructor(t){D(this,"vizInstance");D(this,"operationManager");D(this,"triggerManager");D(this,"vizManager");D(this,"runningMigration");D(this,"panelModel");D(this,"status","notStarted");this.panelModel=t.getRequired(W.instanceScope.panelModel),this.vizInstance=t.getRequired(W.instanceScope.vizInstance),this.operationManager=t.getRequired(W.instanceScope.operationManager),this.triggerManager=t.getRequired(W.instanceScope.triggerManager),this.vizManager=t.getRequired(W.vizManager)}async createMigrationTask(){const t=[];try{await this.instanceNeedMigration()&&t.push(()=>this.runInstanceMigration()),await this.interactionNeedMigration()&&t.push(()=>this.runInteractionMigration())}catch(i){return console.warn("check migration failed",i),"checkFailed"}if(t.length===0)return"nothingToMigrate";try{return await Promise.all(t.map(i=>i())),"migrated"}catch(i){return console.warn("migration failed",i),"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),i={configData:this.vizInstance.instanceData,panelModel:this.panelModel};await t.migrator.migrate(i)}async instanceNeedMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),i={configData:this.vizInstance.instanceData};return t.migrator.needMigration(i)}async interactionNeedMigration(){return await this.operationManager.needMigration()||await this.triggerManager.needMigration()}}function Hi(e){const{panel:t}=Q();return g.useCallback(i=>{const r=i.getRequired(W.vizManager),l=r.resolveComponent(e.viz.type);return i.createScoped().provideFactory(W.instanceScope.vizInstance,()=>r.getOrCreateInstance(e)).provideFactory(W.instanceScope.interactionManager,s=>{const o=s.getRequired(W.instanceScope.vizInstance);return new un(o,l,dt)}).provideFactory(W.instanceScope.operationManager,s=>s.getRequired(W.instanceScope.interactionManager).operationManager).provideFactory(W.instanceScope.triggerManager,s=>s.getRequired(W.instanceScope.interactionManager).triggerManager).provideValue(W.instanceScope.panelModel,t).provideFactory(W.instanceScope.migrator,s=>new lf(s))},[e.viz.type,e.viz.conf])}function er(e){const[t,i]=g.useState(!1),r=Qn().getRequired(W.instanceScope.migrator);return B.useAsyncEffect(async()=>{const l=r.status===ut.notStarted;i(r.status===ut.done),r.status===ut.notStarted&&r.runMigration().then(s=>{s===Ji.migrated&&l&&(e==null||e())}).finally(()=>{i(!0)})},[r]),t}function tr(e,t){const i=Qn().getRequired(W.instanceScope.vizInstance);return g.useEffect(()=>(i.instanceData.setItem(null,t.viz.conf),i.instanceData.watchItem(null,r=>{e(r)})),[e,t.viz.type]),i}function sf({setVizConf:e,...t}){const{panel:i}=t,r=tr(e,i),l=er(()=>{Qe.showNotification({title:`${i.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return B.useAsyncEffect(async()=>{await r.instanceData.setItem(null,i.viz.conf)},[r,i.viz.type]),l?n(Cl,{...t}):n(a.Text,{children:"Checking update..."})}function of(e){const{panel:t,setVizConf:i}=e;tr(i,t);const{inEditMode:r}=g.useContext(we);return er(()=>{r&&Qe.showNotification({title:`${t.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?n(xl,{...e}):n(a.Text,{children:"Checking update"})}const Tx="";function df(e,t){const{vizManager:i}=g.useContext(me),{panel:{viz:r,title:l,id:s,description:o,queryID:d,variables:c}}=Q(),p={title:l,id:s,description:o,queryID:d,viz:r,layout:t},f=Hi(p);try{return i.resolveComponent(r.type),n(Ze,{configure:f,children:n(of,{setVizConf:r.setConf,panel:p,data:e,variables:c,vizManager:i})})}catch(y){return console.info(b.get(y,"message")),null}}const uf=["richText","button"],nr=_.observer(function({height:t,viz:i,data:r,loading:l,error:s,query:o}){const{ref:d,width:c,height:p}=U.useElementSize(),f=df(r,{w:c,h:p});if(uf.includes(i.type))return n("div",{className:"viz-root",style:{height:t},ref:d,children:n(ie,{children:f})});if(l)return n("div",{className:"viz-root",style:{height:t,position:"relative"},ref:d,children:n(a.LoadingOverlay,{visible:l,exitTransitionDuration:0})});const h=!!s,x=!h&&!!(o!=null&&o.stateMessage),C=!h&&!x;return u("div",{className:"viz-root",style:{height:t},ref:d,children:[h&&n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:s}),x&&n(a.Text,{color:"gray",align:"center",children:o.stateMessage}),C&&n(ie,{children:f})]})});function cf(e){return!["richText","button"].includes(e)}const pf={border:"1px solid #e9ecef"},ir={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function hf(e,t,i){return e.style.border.enabled?pf:i||t?ir:{border:"1px dashed transparent"}}const ct=_.observer(function({panel:t,view:i}){const r=M(),{inEditMode:l}=g.useContext(we),{data:s,state:o,error:d}=r.getDataStuffByID(t.queryID),c=r.queries.findByID(t.queryID),p=cf(t.viz.type),f=p&&o==="loading",y=t.title?"calc(100% - 25px - 5px)":"100%",h=hf(t,p,l),x=p||l;return n(kt,{value:{panel:t,data:s,loading:f},children:u(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(ti,{})}),x&&n(fl,{view:i}),n(bl,{}),n(nr,{viz:t.viz,data:s,loading:f,error:d,height:y,query:c})]})})}),Dx="",gf=g.forwardRef(({handleAxis:e},t)=>n(a.ActionIcon,{ref:t,className:"react-grid-customDragHandle",sx:{userSelect:"none",cursor:"grab",position:"absolute",top:5,right:5,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",children:n(S.ArrowsMove,{size:16})})),mf=g.forwardRef(({handleAxis:e,...t},i)=>n(a.ActionIcon,{ref:i,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(S.ChevronDownRight,{size:16})})),ff=Re.WidthProvider(Re),bf=_.observer(function({view:t,className:i="layout",isDraggable:r,isResizable:l}){const s=M(),{panels:o,layouts:d}=s.panels.panelsByIDs(t.panelIDs),c=g.useCallback(p=>{p.forEach(({i:f,...y})=>{const h=s.panels.findByID(f);h&&h.layout.set(y)})},[s]);return n(ff,{onLayoutChange:c,className:`dashboard-layout ${i}`,rowHeight:1,margin:[0,0],layout:d,isDraggable:r,isResizable:l,draggableHandle:".react-grid-customDragHandle",resizeHandle:n(mf,{}),children:o.map((p,f)=>u("div",{"data-grid":{...p.layout},className:"panel-grid-item",children:[r&&n(gf,{}),n(ct,{view:t,panel:p})]},p.id))})}),yf=Re.WidthProvider(Re),vf=_.observer(function({view:t,className:i="layout"}){const{panels:r,layouts:l}=M().panels.panelsByIDs(t.panelIDs);return n(yf,{className:`dashboard-layout ${i}`,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:l,children:r.map(s=>n("div",{"data-grid":{...s.layout},className:"panel-grid-item",children:n(ct,{view:t,panel:s})},s.id))})});var rr=(e=>(e.Use="use",e.Edit="edit",e))(rr||{}),O=(e=>(e.Division="div",e.Modal="modal",e.Tabs="tabs",e))(O||{});const xf={div:"Division",tabs:"Tabs",modal:"Modal"},ar={div:"rgba(255, 0, 0, 0.2)",modal:"rgba(0, 0, 0, 0.2)",tabs:"rgba(255, 200, 100, 0.4)"},Cf={div:"#ff4000",modal:"#000",tabs:"#ffad18"};var cn=(e=>(e.Select="select",e.TreeSelect="tree-select",e.MultiSelect="multi-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(cn||{});const wf=_.observer(({children:e})=>n(a.Box,{pt:10,pb:100,children:e})),_f=_.observer(({children:e,view:t})=>{const i=t.config;return n(a.Modal,{size:i.width,overflow:"inside",opened:!0,onClose:b.noop,withCloseButton:!1,title:i.custom_modal_title.value,trapFocus:!0,onDragStart:r=>{r.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})}),Sf=({variant:e,orientation:t})=>{const i={tab:{},panel:{padding:"16px"}};return e==="pills"&&t==="horizontal"&&(i.tab.paddingTop="6px",i.tab.paddingBottom="6px"),t==="vertical"&&(i.tab["&.add-a-tab"]={paddingTop:"1px",paddingBottom:"1px"},i.tab["&.add-a-tab .mantine-Tabs-tabLabel"]={marginLeft:"auto",marginRight:"auto"}),i},Tf=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},Df=_.observer(({children:e,view:t})=>{const i=ce.useModals(),r=M(),l=g.useMemo(()=>r.views.options.filter(c=>c.type===O.Division),[t.id,r.views.options]),s=t.config,o=c=>i.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{s.removeTab(c)},confirmProps:{color:"red"},zIndex:320}),d=s.tabs.length===0;return u(a.Box,{className:"preview-view-tabs",children:[u(a.Tabs,{variant:s.variant,orientation:s.orientation,defaultValue:s.tabs.length>0?s.tabs[0].id:"0",styles:Sf(s),children:[u(a.Tabs.List,{grow:s.grow,children:[s.tabs.map(c=>n(a.Tabs.Tab,{value:c.id,sx:Tf(c),children:c.name??c.id},c.id)),n(a.Tabs.Tab,{onClick:s.addTab,value:"add",className:"add-a-tab",children:n(S.Plus,{size:18,color:"#228be6"})})]}),s.tabs.map((c,p)=>{const f=r.views.findByID(c.view_id);return u(a.Tabs.Panel,{value:c.id,sx:{position:"relative"},children:[u(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}),u(a.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[n(a.TextInput,{label:"Tab Name",value:c.name,onChange:y=>c.setName(y.currentTarget.value)}),n(a.Select,{label:"View",value:c.view_id,onChange:c.setViewID,data:l}),n(a.ColorInput,{label:"Color",value:c.color,onChange:c.setColor,disabled:s.variant!=="default"}),f&&u(a.Button,{mt:20,variant:"gradient",leftIcon:n(I.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>r.views.setIDOfVIE(f.id),children:["Swith to View: ",f.name]}),n(a.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>o(p),disabled:d,leftIcon:n(I.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),f&&n(pt,{view:f})]},c.id)})]}),e]})}),kf=_.observer(({view:e,children:t})=>{switch(e.type){case O.Modal:return n(_f,{view:e,children:t});case O.Tabs:return n(Df,{view:e,children:t});case O.Division:default:return n(wf,{children:t})}}),lr=_.observer(function({view:t}){return n(St.Provider,{value:{viewPanelInFullScreen:b.noop,inFullScreen:!1},children:n(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:n(kf,{view:t,children:u(a.Box,{sx:{position:"relative"},children:[n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n(ei,{view:t})}),n(bf,{view:t,isDraggable:!0,isResizable:!0})]})})})})}),If={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},Mf=_.observer(function({view:t,panel:i,exitFullScreen:r}){return n(a.Modal,{opened:!0,fullScreen:!0,onClose:r,title:n(a.Button,{color:"blue",size:"xs",onClick:r,leftIcon:n(S.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:If,children:n(a.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:n(ct,{view:t,panel:i})})})});function Af(e,t,i){const{panels:r}=M(),l=e.id==="Main",[s,o]=g.useState(()=>l&&r.findByID(t)?t:null),d=g.useCallback(y=>{o(y),l&&i(y)},[l,i]),c=g.useCallback(()=>{o(null),l&&i("")},[l,i]),p=s?r.findByID(s):null;return{viewPanelInFullScreen:d,exitFullScreen:c,inFullScreen:!!p,fullScreenPanel:p}}const zf=_.observer(({children:e})=>n(a.Box,{children:e})),Vf=_.observer(({children:e,view:t})=>{const i=M(),r=t.config,l=i.views.visibleViewIDs.includes(t.id),s=()=>i.views.rmVisibleViewID(t.id);return n(a.Modal,{size:r.width,centered:!0,overflow:"inside",opened:l,onClose:s,withCloseButton:!1,title:r.custom_modal_title.value,trapFocus:!0,onDragStart:o=>{o.stopPropagation()},styles:{modal:{border:"1px solid #efefef"},body:{maxHeight:r.height,overflow:"auto"}},transitionDuration:0,children:e})}),Lf=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},Ef=_.observer(({children:e,view:t})=>{const i=M(),r=t.config;return u(a.Box,{className:"render-view-tabs",children:[u(a.Tabs,{variant:r.variant,orientation:r.orientation,defaultValue:r.tabs.length>0?r.tabs[0].id:"0",styles:{panel:{padding:r.orientation==="horizontal"?"16px 0px":"0"}},keepMounted:!1,children:[n(a.Tabs.List,{grow:r.grow,children:r.tabs.map(l=>n(a.Tabs.Tab,{value:l.id,sx:Lf(l),disabled:!l.view_id,children:l.name??l.id},l.id))}),r.tabs.map(l=>{const s=i.views.findByID(l.view_id);return s?n(a.Tabs.Panel,{value:l.id,children:n(pt,{view:s})},l.id):null})]}),e]})}),Pf=_.observer(({view:e,children:t})=>{switch(e.type){case O.Modal:return n(Vf,{view:e,children:t});case O.Tabs:return n(Ef,{view:e,children:t});case O.Division:default:return n(zf,{children:t})}}),pt=_.observer(function({view:t}){const{fullScreenPanelID:i,setFullScreenPanelID:r}=Kn(),{viewPanelInFullScreen:l,exitFullScreen:s,inFullScreen:o,fullScreenPanel:d}=Af(t,i,r);return n(St.Provider,{value:{viewPanelInFullScreen:l,inFullScreen:o},children:u(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:[o&&n(Mf,{view:t,panel:d,exitFullScreen:s}),n(Pf,{view:t,children:u(a.Box,{sx:{position:"relative"},children:[!o&&n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n(ei,{view:t})}),!o&&n(vf,{view:t})]})})]})})});function Bf(e){e=e||{};const t=Object.keys(e).sort(),i=[];for(let r=0;r<t.length;r++){const l=t[r];if(l!="authentication"&&e[l])i.push(t[r]+"="+(typeof e[l]=="object"?JSON.stringify(e[l]):e[l]));else{const s=Object.keys(e[l]).sort();for(let o=0;o<s.length;o++){const d=s[o];d!="sign"&&e[l][d]&&i.push(s[o]+"="+(typeof e[l][d]=="object"?JSON.stringify(e[l][d]):e[l][d]))}}}return i.sort().join("&")}function Of(e,t){let i=Bf(e);return i+="&key="+t,Un.MD5(i).toString().toUpperCase()}const re={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:Of({app_id:this.app_id,nonce_str:t,...e},this.app_secret)}},getRequest(e,t){return(i,r,l={})=>{const s=window.localStorage.getItem("token"),o={"X-Requested-With":"XMLHttpRequest","Content-Type":l.string?"application/x-www-form-urlencoded":"application/json",authorization:s?`bearer ${s}`:"",...l.headers},d={baseURL:this.baseURL,method:e,url:i,params:e==="GET"?r:l.params,headers:o,signal:t};return["POST","PUT"].includes(e)&&(d.data=l.string?JSON.stringify(r):r,d.data.authentication=this.getAuthentication(d.data)),xe(d).then(c=>c.data).catch(c=>Promise.reject(c))}}};function sr(e){re.baseURL!==e.apiBaseURL&&(re.baseURL=e.apiBaseURL),e.app_id&&(re.app_id=e.app_id),e.app_secret&&(re.app_secret=e.app_secret)}const or=m.types.model("FilterConfigModel_Checkbox",{_name:m.types.literal("checkbox"),description:m.types.optional(m.types.string,""),default_value:m.types.boolean}).views(e=>({get json(){const{_name:t,description:i,default_value:r}=e;return{_name:t,description:i,default_value:r}},get isDescriptionEmpty(){const{description:t}=e;return t===""||t==="<p></p>"}})).actions(e=>({setDefaultValue(t){e.default_value=t},setDescription(t){e.description=t}})),$f=()=>or.create({_name:"checkbox",description:"",default_value:!1});var F=(e=>(e.Postgresql="postgresql",e.MySQL="mysql",e.HTTP="http",e))(F||{}),Y=(e=>(e.Select="select",e.MultiSelect="multi-select",e.TreeSelect="tree-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(Y||{});m.types.model({type:m.types.enumeration("DataSourceType",[F.Postgresql,F.MySQL,F.HTTP]),key:m.types.string,sql:m.types.string});function dr(e,t){return e.map(i=>{try{return i?z.tz(i,"UTC").format(t):null}catch{return console.log(`[date-range] failed parsing ${i}`),null}})}const Nf=m.types.model("FilterConfigModel_DateRange",{_name:m.types.literal("date-range"),required:m.types.boolean,inputFormat:m.types.enumeration("DateRangeInputFormat",["YYYY","YYYYMM","YYYYMMDD","YYYY-MM","YYYY-MM-DD"]),default_value:m.types.optional(m.types.array(m.types.union(m.types.string,m.types.null)),[null,null]),clearable:m.types.boolean,max_days:m.types.optional(m.types.number,0),allowSingleDateInRange:m.types.optional(m.types.boolean,!1)}).views(e=>({get json(){const{_name:t,max_days:i,required:r,clearable:l,inputFormat:s,default_value:o,allowSingleDateInRange:d}=e;return{_name:t,max_days:i,required:r,clearable:l,inputFormat:s,default_value:dr(o,s),allowSingleDateInRange:d}},truthy(t){return Array.isArray(t)&&t.length===2&&t.every(i=>!!i)}})).views(e=>({getMaxDate(t){const{max_days:i}=e;if(!(!i||!t))return z(t).startOf("day").add(i,"days").toDate()},getMinDate(t){const{max_days:i}=e;if(!(!i||!t))return z(t).startOf("day").subtract(i,"days").toDate()}})).actions(e=>({setFilterValue(t){try{const i=m.getParent(e);m.getRoot(e).filters.setValueByKey(i.key,t)}catch(i){console.error(i)}}})).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}})),ur=m.types.snapshotProcessor(Nf,{preProcessor({default_value:e,...t}){return{...t,default_value:e.map(i=>i===null?null:z.tz(i,"UTC").toISOString())}},postProcessor(e){const{default_value:t,...i}=e;return{...i,default_value:dr(t,i.inputFormat)}}}),Gf=()=>ur.create({_name:"date-range",required:!1,inputFormat:"YYYY-MM-DD",clearable:!1,default_value:[null,null]}),qf=m.types.model({label:m.types.string,value:m.types.string}).actions(e=>({setLabel(t){e.label=t},setValue(t){e.value=t}})),pn=m.types.model("FilterConfigModel_BaseSelect",{static_options:m.types.optional(m.types.array(qf),[]),options_query_id:m.types.optional(m.types.string,""),default_selection_count:m.types.optional(m.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:i,error:r}=m.getRoot(e).getDataStuffByID(e.options_query_id);return i==="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??""}})),ht=e=>b.cloneDeepWith(e,(t,i)=>{if(i!==void 0&&t)return $.toJS(t)}),cr=m.types.compose("FilterConfigModel_MultiSelect",m.types.model({_name:m.types.literal("multi-select"),min_width:m.types.optional(m.types.string,""),default_value:m.types.optional(m.types.array(m.types.string),[])}),pn).views(e=>({get json(){const{_name:t,default_value:i,min_width:r,static_options:l,options_query_id:s,default_selection_count:o}=e;return ht({_name:t,min_width:r,default_value:i,static_options:l,options_query_id:s,default_selection_count:o})},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=m.cast(t)},setMinWidth(t){e.min_width=t},setDefaultSelection(){const t=m.getRoot(e).filters,i=m.getParent(e).key;t.setValueByKey(i,e.default_selection)}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>$.toJS(e.default_selection),e.setDefaultSelection,{fireImmediately:!0,delay:0}))}})),Ff=()=>cr.create({_name:"multi-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),pr=m.types.compose("FilterConfigModel_TreeSelect",m.types.model({_name:m.types.literal("tree-select"),min_width:m.types.optional(m.types.string,""),default_value:m.types.optional(m.types.array(m.types.string),[])}),pn).views(e=>({get json(){const{_name:t,default_value:i,min_width:r,static_options:l,options_query_id:s,default_selection_count:o}=e;return{_name:t,min_width:r,default_value:i,static_options:l,options_query_id:s,default_selection_count:o}}})).actions(e=>({setDefaultValue(t){e.default_value=m.cast(t)},setMinWidth(t){e.min_width=t}})),jf=()=>pr.create({_name:"tree-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),hr=m.types.compose("FilterConfigModel_Select",m.types.model({_name:m.types.literal("select"),default_value:m.types.string,required:m.types.boolean,width:m.types.optional(m.types.string,"")}),pn).views(e=>({get json(){const{_name:t,default_value:i,required:r,width:l,static_options:s,options_query_id:o,default_selection_count:d}=e;return ht({_name:t,width:l,required:r,default_value:i,static_options:s,options_query_id:o,default_selection_count:d})},truthy(t){return!!t}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t},setWidth(t){e.width=t}})),Wf=()=>hr.create({_name:"select",required:!1,default_value:"",static_options:[],options_query_id:"",default_selection_count:0}),gr=m.types.model("FilterConfigModel_TextInput",{_name:m.types.literal("text-input"),required:m.types.boolean,default_value:m.types.string}).views(e=>({get json(){const{_name:t,required:i,default_value:r}=e;return{_name:t,required:i,default_value:r}},truthy(t){return typeof t!="string"?!1:!!t.trim()}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t}})),mr=()=>gr.create({_name:"text-input",required:!1,default_value:""}),hn=m.types.model("FilterModel",{id:m.types.identifier,key:m.types.string,label:m.types.string,order:m.types.number,visibleInViewsIDs:m.types.array(m.types.string),auto_submit:m.types.optional(m.types.boolean,!1),type:m.types.enumeration("DashboardFilterType",[Y.Select,Y.MultiSelect,Y.TreeSelect,Y.TextInput,Y.Checkbox,Y.DateRange]),config:m.types.union(hr,cr,pr,gr,or,ur)}).views(e=>({get plainDefaultValue(){const t=e.config.default_value;return Array.isArray(t)?[...t]:t},get usingDefaultValue(){return e.type!==Y.TreeSelect},get auto_submit_supported(){return[Y.Select,Y.Checkbox,Y.DateRange].includes(e.type)}})).views(e=>({get json(){const{id:t,key:i,label:r,order:l,visibleInViewsIDs:s,auto_submit:o,type:d,config:c}=e;return{id:t,key:i,type:d,label:r,order:l,config:c.json,auto_submit:o,visibleInViewsIDs:$.toJS(s)}},get should_auto_submit(){return e.auto_submit_supported&&e.auto_submit},requiredAndPass(t){return b.get(e.config,"required",!1)?b.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 Y.Select:e.config=Wf();break;case Y.MultiSelect:e.config=Ff();break;case Y.TreeSelect:e.config=jf();break;case Y.TextInput:e.config=mr();break;case Y.Checkbox:e.config=$f();break;case Y.DateRange:e.config=Gf();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 fr(e,t){if(e===void 0)return e;if(t._name==="date-range")try{const[...i]=e;return i.map(r=>r===null?r:z.tz(r,"UTC").format(t.inputFormat)??r)}catch(i){return console.error(i),e}return e}function br(e){return e.reduce((t,i)=>(t[i.key]=fr(i.config.default_value,i.config),t),{})}function Uf(e,t,i){m.addDisposer(e,m.addMiddleware(e,(r,l)=>{l(r,()=>{m.getType(r.context)===t&&r.type==="action"&&i(r.name,r.context)})}))}const yr=m.types.model("FiltersModel",{current:m.types.optional(m.types.array(hn),[]),values:m.types.optional(m.types.frozen(),{}),previewValues:m.types.optional(m.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(i=>i.id===t)},get inOrder(){return b.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 b.sortBy(e.current.filter(i=>i.visibleInViewsIDs.includes(t)),"order")},get firstFilterValueKey(){return Object.keys(e.values)[0]??""},get keyLabelMap(){return e.current.reduce((t,i)=>(t[i.key]=i.label,t),{})}})).actions(e=>({replace(t){e.current=m.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const i=e.current.findIndex(r=>r.id===t);i>=0&&e.current.splice(i,1)},setValues(t){e.values=t},setValueByKey(t,i){e.values={...e.values,[t]:i}},getValueByKey(t){return e.values[t]},refreshValues(){console.log("refreshing values"),e.values=br(e.current)},updatePreviewValues(t){e.previewValues=t}})).actions(e=>{function t(){Uf(e.current,hn,(i,r)=>{if(i==="setType"){const l=fr(r.config.default_value,r.config);e.setValueByKey(r.key,l),e.updatePreviewValues({...e.previewValues,[r.key]:l})}})}return{afterCreate(){t()}}});function vr(e){return{current:e,values:br(e)}}const xr="\uFEFF";function Rf(e,t){const i=new Blob([xr+t],{type:"text/csv"});xt.saveAs(i,`${e}.csv`)}function Qf(e,t){const i=new Blob([t],{type:"application/json"});xt.saveAs(i,`${e}.json`)}function Yf(e){const t=new ha;e.forEach(({id:i,data:r})=>{t.file(`${i}.csv`,Cr(r))}),t.generateAsync({type:"blob"}).then(i=>{xt.saveAs(i,"dashboard_data.zip")})}function Cr(e){if(!Array.isArray(e)||e.length===0)return"";const t=[],i=Object.keys(e[0]);return t.push(i.join(",")),e.forEach(r=>{const l=Object.values(r).join(",");t.push(l)}),xr+t.join(`
241
+ `}}}function Ug(e){return e.x_axes.reduce((i,{label_formatter:r},l)=>(i[l]=function(d){let o=d;if(typeof d=="object"&&(Array.isArray(d.value)&&d.value.length===2?o=d.value[0]:o=d.value),!r)return o;try{return G(o).format(r)}catch(c){return console.error(c),o}},i),{default:({value:i})=>i})}function Rg(e,t){const i={};return t.map(r=>{const l=Ae(r,e);i[r.name]=Te(r,l)}),i}function Qg(e,t){return e.x_axes.map(({min:i,max:r,...l},s)=>{let d=l.position;return d||(d=s>0?"bottom":"top"),{...l,type:"value",min:i||void 0,max:r||void 0,position:d,axisLabel:{show:!0,margin:2,formatter:t[s]??t.default},axisLine:{show:!0},axisTick:{show:!1},splitLine:{show:!0},nameTextStyle:{fontWeight:"bold"},nameLocation:"center",nameGap:15}})}function Yg(e,t){const i=t.every(d=>!Number.isNaN(Number(d))),{overflow:r,...l}=e.y_axis.axisLabel,s=Se(r.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:i?"value":"category",axisLabel:{...l,...s,formatter:ze(l.formatter)},z:5}]}function Xg(e,t,i){const r=Rg(t,i),l=Ug(e),s=b.uniq(t.map(p=>p[e.y_axis.data_key])),d=s.every(p=>!Number.isNaN(Number(p))),o=Fg(e,s,d,t,l,i,r);return{xAxis:Qg(e,l),yAxis:Yg(e,s),series:o,tooltip:Wg(e,o,l),grid:Lg(e),legend:Pg(o)}}const on={x_axes:[{id:"initial-x",min:"",max:"",name:"X Axis",data_key:"",position:"bottom",label_formatter:J,show:!0}],y_axis:{name:"Y Axis",data_key:"",axisLabel:{formatter:{...ge},overflow:ve},nameAlignment:"center"},series:[],tooltip:{metrics:[]},reference_lines:[]};function Zg(){const e=new Date().getTime().toString();return{id:e,min:"",max:"",name:e,data_key:"",position:"bottom",label_formatter:J,show:!0}}function Kg(){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:$e,xAxisIndex:"0"}}function Jg(){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"}}N.use([A.DataZoomComponent,q.BarChart,q.LineChart,q.ScatterChart,A.GridComponent,A.LegendComponent,A.TooltipComponent,te.CanvasRenderer,A.MarkLineComponent,A.MarkAreaComponent]);function Hg({conf:e,data:t,width:i,height:r,interactionManager:l,variables:s}){const d=g.useMemo(()=>b.keyBy(t,e.y_axis.data_key),[t,e.y_axis.data_key]),o=pe(l.triggerManager,Bt.id),c=g.useCallback(y=>{const h=b.get(d,y.name,{error:"rowData is not found"});o.forEach(x=>{l.runInteraction(x.id,{...y,rowData:h})})},[d,o,l]),p=g.useMemo(()=>({click:c}),[c]),f=g.useMemo(()=>Xg(e,t,s),[e,t]);return!i||!r?null:n(ne,{echarts:N,option:f,style:{width:i,height:r},onEvents:p,notMerge:!0,theme:"merico-light"})}function em({context:e,instance:t}){const i=fe({vizManager:e.vizManager,instance:t}),{value:r}=V(e.instanceData,"config"),{variables:l}=e,s=g.useMemo(()=>b.defaults({},r,on),[r]),d=e.data,{width:o,height:c}=e.viewport;return n(a.Box,{children:n(Hg,{variables:l,width:o,height:c,data:d,conf:s,interactionManager:i})})}const tm=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}],nm=[{label:"Horizontal",value:"horizontal"},{label:"Vertical",value:"vertical"}];function im({control:e,index:t,remove:i,watch:r,variableOptions:l,xAxisOptions:s}){const d=r(`reference_lines.${t}.orientation`);return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:o})=>n(a.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...o})}),n(v.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:o})=>n(a.Select,{label:"Value",required:!0,data:l,sx:{flex:1},...o})})]}),n(v.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:o})=>n(a.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",sx:{flex:1},...o})}),u(a.Group,{grow:!0,children:[u(a.Stack,{children:[n(v.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:o})=>n(a.Select,{label:"Orientation",data:nm,required:!0,sx:{flex:1},...o})}),d==="vertical"&&n(a.Text,{mt:-10,color:"dimmed",size:12,children:"Works only when xAxis values are numbers"})]}),d==="horizontal"&&n(v.Controller,{name:`reference_lines.${t}.xAxisIndex`,control:e,render:({field:o})=>n(a.Select,{label:"X Axis",data:s,disabled:s.length===0,sx:{flex:1},...o})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:o})=>n(a.Select,{label:"Line Type",data:tm,sx:{flexGrow:1},...o})}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:o})=>n(a.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...o})})]}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:o})=>n(K,{...o})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:o})=>n(a.Checkbox,{label:"Show in legend",checked:o.value,onChange:c=>o.onChange(c.currentTarget.checked)})}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Reference Line"})]},t)}function rm({control:e,watch:t,variables:i}){const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"reference_lines"}),d=t("reference_lines"),o=r.map((x,C)=>({...x,...d[C]})),c=()=>{const x=Jg();l(x)},p=g.useMemo(()=>i.map(x=>({label:x.name,value:x.name})),[i]),f=t("x_axes"),y=g.useMemo(()=>f.map(({name:x},C)=>({label:x,value:C.toString()})),[f]),h=o.length>0?o[0].id:"0";return u(a.Tabs,{defaultValue:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[o.map((x,C)=>n(a.Tabs.Tab,{value:x.id,children:x.name},C)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((x,C)=>n(a.Tabs.Panel,{value:x.id,children:n(im,{control:e,index:C,remove:s,watch:t,variableOptions:p,xAxisOptions:y})},C))]})}function am(e){const[t,i]=g.useState(e);return g.useEffect(()=>{i(e)},[e]),{tab:t,setTab:i}}const lm=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function sm({control:e,index:t,seriesItem:i}){const r=!!i.barWidth.trim();return u(k,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.stack`,control:e,render:({field:l})=>n(a.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barGap`,control:e,render:({field:l})=>n(a.Select,{label:"Bar Gap",data:lm,sx:{flexGrow:1},...l})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Min)",disabled:r,sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width",sx:{flexGrow:1},...l})}),n(v.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:l})=>n(a.TextInput,{label:"Bar Width(Max)",disabled:r,sx:{flexGrow:1},...l})})]})]})}const om=[{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 dm({control:e,index:t,remove:i,seriesItem:r,xAxisOptions:l,data:s}){return u(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.name`,control:e,render:({field:d})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...d})}),n(v.Controller,{name:`series.${t}.xAxisIndex`,control:e,render:({field:d})=>n(a.Select,{label:"X Axis",data:l,disabled:l.length===0,sx:{flex:1},...d})})]}),u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:`series.${t}.data_key`,control:e,render:({field:d})=>n(E,{label:"Value Field",required:!0,data:s,sx:{flex:1},...d})}),n(v.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:d})=>n(et,{label:"Aggregation on Value",value:d.value??$e,onChange:d.onChange,pt:0})})]}),n(a.Group,{grow:!0,children:n(v.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:d})=>n(E,{label:"Split into multiple series by this key...",data:s,clearable:!0,sx:{flex:1},...d})})}),n(sm,{index:t,control:e,seriesItem:r}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Style",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.label_position`,control:e,render:({field:d})=>n(a.Select,{label:"Label Position",data:om,...d})}),u(a.Stack,{spacing:4,children:[n(a.Text,{size:"sm",children:"Color"}),n(v.Controller,{name:`series.${t}.color`,control:e,render:({field:d})=>n(K,{...d})})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:d})=>n(a.Checkbox,{label:"Hide in legend",checked:d.value,onChange:o=>d.onChange(o.currentTarget.checked)})}),n(v.Controller,{name:`series.${t}.invisible`,control:e,render:({field:d})=>n(a.Checkbox,{label:"Invisible",checked:d.value,onChange:o=>d.onChange(o.currentTarget.checked)})}),n(a.Divider,{mb:-10,mt:10,variant:"dashed"}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),sx:{top:15,right:5},children:"Delete this Series"})]},t)}function um({control:e,watch:t,data:i}){var x;const{fields:r,append:l,remove:s}=v.useFieldArray({control:e,name:"series"}),d=t("series"),o=r.map((C,T)=>({...C,...d[T]})),c=()=>{const C=Kg();l(C)},p=t("x_axes"),f=g.useMemo(()=>p.map(({name:C},T)=>({label:C,value:T.toString()})),[p]),{tab:y,setTab:h}=am((x=o[0])==null?void 0:x.id);return u(a.Tabs,{value:y,onTabChange:h,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px",paddingTop:"6px"}},children:[u(a.Tabs.List,{children:[o.map(C=>n(a.Tabs.Tab,{value:C.id,children:C.name},C.id)),n(a.Tabs.Tab,{onClick:c,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),o.map((C,T)=>n(a.Tabs.Panel,{value:C.id,children:n(dm,{control:e,index:T,remove:s,seriesItem:C,xAxisOptions:f,data:i},C.id)},C.id))]})}const cm=[{label:"Top",value:"top"},{label:"Bottom",value:"bottom"}];function pm({control:e,index:t,remove:i}){return u(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(v.Controller,{name:`x_axes.${t}.name`,control:e,render:({field:r})=>n(a.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})})}),n(a.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:`x_axes.${t}.position`,control:e,render:({field:r})=>n(a.Select,{label:"Position",required:!0,data:cm,sx:{flex:1},...r})})}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),n(v.Controller,{name:`x_axes.${t}.label_formatter`,control:e,render:({field:r})=>n(he,{...r})})]}),u(a.Stack,{children:[n(a.Divider,{mb:-15,variant:"dashed",label:"Value Range",labelPosition:"center"}),u(a.Group,{grow:!0,children:[n(v.Controller,{name:`x_axes.${t}.min`,control:e,render:({field:r})=>n(a.TextInput,{label:"Min",...r})}),n(v.Controller,{name:`x_axes.${t}.max`,control:e,render:({field:r})=>n(a.TextInput,{label:"Max",...r})})]})]}),n(a.Divider,{mb:-10,mt:10,variant:"dashed",label:"Behavior",labelPosition:"center"}),n(v.Controller,{name:`x_axes.${t}.show`,control:e,render:({field:r})=>n(a.Checkbox,{label:"Visible",checked:r.value,onChange:l=>r.onChange(l.currentTarget.checked)})}),n(a.Button,{mt:20,leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:()=>i(t),disabled:t===0,children:"Delete this X Axis"})]})}function hm({control:e,watch:t}){const{fields:i,append:r,remove:l}=v.useFieldArray({control:e,name:"x_axes"}),s=t("x_axes"),d=i.map((p,f)=>({...p,...s[f]})),o=()=>{const p=Zg();r(p)},c=d.length>0?d[0].id:"0";return u(a.Tabs,{defaultValue:c,styles:{tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},children:[u(a.Tabs.List,{children:[d.map(p=>n(a.Tabs.Tab,{value:p.id,children:p.name},p.id)),n(a.Tabs.Tab,{onClick:o,value:"add",children:n(S.Plus,{size:18,color:"#228be6"})})]}),d.map((p,f)=>n(a.Tabs.Panel,{value:p.id,children:n(pm,{control:e,index:f,remove:l})},p.id))]})}function gm({data:e,control:t,watch:i}){return i(["y_axis"]),u(a.Stack,{children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(v.Controller,{name:"y_axis.data_key",control:t,render:({field:r})=>n(E,{label:"Y Axis Data Field",required:!0,data:e,sx:{flex:1},...r})}),n(v.Controller,{name:"y_axis.name",control:t,render:({field:r})=>n(a.TextInput,{label:"X Axis Name",sx:{flex:1},...r})})]}),n(a.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),n(a.Group,{grow:!0,noWrap:!0,children:n(v.Controller,{name:"y_axis.axisLabel.formatter",control:t,render:({field:r})=>n(it,{data:e,...r})})}),n(v.Controller,{name:"y_axis.axisLabel.overflow",control:t,render:({field:r})=>n(De,{...r})})]})}function mm({context:e}){const{value:t,set:i}=V(e.instanceData,"config"),{variables:r}=e,l=e.data,s=g.useMemo(()=>b.defaultsDeep({},t,on),[t]),{control:d,handleSubmit:o,watch:c,getValues:p,reset:f}=v.useForm({defaultValues:s});g.useEffect(()=>{f(s)},[s]),c([]);const y=p(),h=g.useMemo(()=>!b.isEqual(y,s),[y,s]);return n(a.Stack,{spacing:"xs",children:u("form",{onSubmit:o(i),children:[u(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(S.DeviceFloppy,{size:20})})]}),u(a.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[u(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(hm,{control:d,watch:c})}),n(a.Tabs.Panel,{value:"Y Axis",children:n(gm,{control:d,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Series",children:n(um,{control:d,watch:c,data:l})}),n(a.Tabs.Panel,{value:"Reference Lines",children:n(rm,{variables:r,control:d,watch:c})})]})]})})}class fm extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>({version:1,config:i}))}}const bm={displayName:"Horizontal Bar Chart",displayGroup:"ECharts-based charts",migrator:new fm,name:"horizontalBarChart",viewRender:em,configRender:mm,createConfig:()=>({version:1,config:on})},ym=[{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"})),vm=[wl,_l,Dl,Tl,Sl,kl],Xi=()=>({id:"dashboard",version:At,manifest:{viz:[tn,Vp,Kh,bc,Hp,Gu,bm,Bl,Ss,Md,iu,Vg,Pu,sd,Sp,nc,pc,ag,$s],color:[...ym,...vm]}}),Fe=new Al,W={pluginManager:ye("pluginManager"),vizManager:ye("vizManager"),colorManager:ye("colorManager"),instanceScope:{panelModel:ye("panelModel"),vizInstance:ye("vizInstance"),interactionManager:ye("interactionManager"),migrator:ye("migrator"),operationManager:ye("operationManager"),triggerManager:ye("triggerManager")}},dn=()=>{try{Fe.install(Xi())}catch{}const e=new vl(Fe),t=new Ml(Fe);return{pluginManager:Fe,vizManager:e,colorManager:t}},me=g.createContext(dn());try{Fe.install(Xi())}catch{}function xm(e,t){const{value:i,set:r}=V(e.operation.operationData,"config"),[l,s]=g.useState(b.defaults({},i,t)),d=async()=>{await r(l)};return g.useEffect(()=>{s(b.defaults({},i,t))},[i]),{config:l,setConfig:s,commit:d}}function Cm(e){const{config:t,setConfig:i,commit:r}=xm(e,{urlTemplate:"",openInNewTab:!0});async function l(){await r()}async function s(o){i({...t,openInNewTab:o}),await r()}const d=o=>i({...t,urlTemplate:o.currentTarget.value});return u(a.Stack,{children:[n(a.TextInput,{label:"Url",value:t.urlTemplate,onChange:d,onBlur:l}),n(a.Switch,{label:"Open in new Tab",checked:t.openInNewTab,onChange:o=>s(o.currentTarget.checked)})]})}async function wm(e,t){const{urlTemplate:i,openInNewTab:r}=await t.operationData.getItem("config");window.dispatchEvent(new CustomEvent("open-link",{detail:{urlTemplate:i,openInNewTab:r,payload:e}}))}class _m extends j{constructor(){super(...arguments);D(this,"VERSION",1)}configVersions(){this.version(1,i=>i)}}const Sm={displayName:"Open Link",id:"builtin:op:open-link",configRender:Cm,run:wm,migrator:new _m,createDefaultConfig:()=>({version:1,config:{urlTemplate:"",openInNewTab:!0}})};function Tm(e){const{value:t,set:i}=V(e.operationData,"config"),r=l=>void i({template:l});return[(t==null?void 0:t.template)||"",r]}function Dm(e){const[t,i]=Tm(e.operation);return n(a.TextInput,{defaultValue:t,onBlur:r=>i(r.currentTarget.value),label:"console.log"})}async function km(e,t){const i=await t.operationData.getItem("config"),r=b.template(i.template||"");console.log("run with payload",e),console.log(r(e))}const Im={displayName:"console.log (debug)",id:"builtin:op:debug",configRender:Dm,run:km},Mm=_.observer(e=>{const t=M(),{value:i,set:r}=V(e.operation.operationData,"config");console.log({value:i,viewID:i==null?void 0:i.viewID});const l=(i==null?void 0:i.viewID)||"",s=d=>void r({viewID:d});return n(a.Select,{defaultValue:l,value:l,onChange:s,label:"View",data:t.views.options})});async function Am(e,t){const r=(await t.operationData.getItem("config")).viewID;window.dispatchEvent(new CustomEvent("open-view",{detail:{viewID:r}}))}const zm={displayName:"Open View",id:"builtin:op:open_view",configRender:Mm,run:Am},Vm={dictionary:{}},Lm=_.observer(e=>{const t=M(),{value:i=Vm,set:r}=V(e.operation.operationData,"config"),{dictionary:l={}}=i,s=(c,p)=>{r({dictionary:{...l,[c]:p}})},d=()=>{s(t.filters.firstFilterValueKey,"")},o=c=>{const p={...l};delete p[c],r({dictionary:p})};return u(a.Stack,{spacing:10,children:[n(a.Text,{children:"Mapping Rules"}),Object.entries(l).map(([c,p])=>u(a.Flex,{justify:"space-between",gap:10,children:[n(a.TextInput,{label:"Payload key",value:p,onChange:f=>{s(c,f.currentTarget.value)},sx:{flexGrow:1}}),n(E,{data:[t.filters.values],value:c,onChange:f=>{s(f,p)},label:"Filter key",sx:{flexGrow:1}}),n(a.ActionIcon,{onClick:()=>o(c),sx:{marginTop:"26px",flexGrow:0},children:n(S.Trash,{size:14,color:"red"})})]},c)),n(a.Button,{size:"xs",onClick:d,sx:{alignSelf:"center",width:"300px"},children:"Add one mapping rule"})]})});async function Em(e,t){const r=(await t.operationData.getItem("config")).dictionary;window.dispatchEvent(new CustomEvent("set-filter-values",{detail:{dictionary:r,payload:e}}))}const Pm={displayName:"Set Filter Values",id:"builtin:op:set_filter_values",configRender:Lm,run:Em},Bm={filter_keys:[]},Om=_.observer(e=>{const t=M(),{value:i=Bm,set:r}=V(e.operation.operationData,"config"),{filter_keys:l=[]}=i,s=o=>{r({filter_keys:[...o]})},d=g.useMemo(()=>t.filters.current.map(o=>({label:o.label,value:o.key})),[t.filters.values]);return n(a.Stack,{spacing:10,children:n(a.MultiSelect,{label:"Select Filters to Clear",data:d,value:l,onChange:s})})});async function $m(e,t){const r=(await t.operationData.getItem("config")).filter_keys;window.dispatchEvent(new CustomEvent("clear-filter-values",{detail:{filter_keys:r,payload:e}}))}const dt=[Im,Sm,zm,Pm,{displayName:"Clear Filter Values",id:"builtin:op:clear_filter_values",configRender:Om,run:$m}];class Nm{constructor(t,i=dt){D(this,"attachments");this.operations=i;const r=async l=>{const{id:s,schemaRef:d}=await l.getItem(null);return{id:s,schemaRef:d,operationData:new Me(l,"data")}};this.attachments=new Mt(t,"__OPERATIONS",r)}async runOperation(t,i){const r=await this.attachments.getInstance(t);if(!r){console.warn(`Operation '${t}' is not defined`);return}const l=this.tryGetSchema(r.schemaRef);if(!l){console.warn(`Operation schema '${r.schemaRef}' is not defined`);return}await l.run(i,r)}tryGetSchema(t){return this.operations.find(i=>i.id===t)}async needMigration(){const i=(await this.attachments.list()).map(async r=>{const l={configData:r.operationData},s=this.tryGetSchema(r.schemaRef),d=s==null?void 0:s.migrator;return d&&await d.needMigration(l)});return(await Promise.all(i)).some(r=>r)}async runMigration(){const i=(await this.attachments.list()).map(async r=>{const l={configData:r.operationData},s=this.tryGetSchema(r.schemaRef),d=s==null?void 0:s.migrator;d&&await d.needMigration(l)&&await d.migrate(l)});await Promise.all(i)}async createOrGetOperation(t,i){var d;if(!this.getOperationSchemaList().some(o=>o.id===i.id))throw new Error(`Operation schema '${i.id}' is not defined`);const l=await this.attachments.getInstance(t);return!l||l.schemaRef!==i.id?await this.attachments.create(t,{id:t,schemaRef:i.id,data:((d=i.createDefaultConfig)==null?void 0:d.call(i))??{}}):l}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 Zi="__TRIGGERS";class Gm{constructor(t,i){D(this,"attachments");this.instance=t,this.component=i;const r=async l=>{const{id:s,schemaRef:d}=await l.getItem(null);return{id:s,schemaRef:d,triggerData:new Me(l,"data")}};this.attachments=new Mt(t,Zi,r)}watchTriggerSnapshotList(t){return this.instance.instanceData.watchItem(Zi,i=>{const r=b.values(i).map(l=>({id:b.get(l,"id"),schemaRef:b.get(l,"schemaRef"),config:$.toJS(b.get(l,"data.config"))}));t(r)},{fireImmediately:!0})}async createOrGetTrigger(t,i,r={recreate:!1}){var o;if(!this.getTriggerSchemaList().some(c=>c.id===i.id))throw new Error(`Trigger schema '${i.id}' is not defined in component '${this.component.name}'`);const s=await this.attachments.getInstance(t);return!s||r.recreate||s.schemaRef!==i.id?await this.attachments.create(t,{id:t,schemaRef:i.id,data:((o=i==null?void 0:i.createDefaultConfig)==null?void 0:o.call(i))||{}}):s}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 i=(await this.getTriggerList()).map(async r=>{const l=this.getTriggerSchemaList().find(o=>o.id===r.schemaRef),s=l==null?void 0:l.migrator,d={configData:r.triggerData};return s&&await s.needMigration(d)?()=>s.migrate(d):null});return Promise.all(i).then(r=>r.filter(l=>l))}async needMigration(){return(await this.getMigrationTasks()).length>0}async runMigration(){const t=await this.getMigrationTasks();await Promise.all(t.map(i=>i()))}}class un{constructor(t,i,r){D(this,"operationManager");D(this,"triggerManager");D(this,"attachments");this.operationManager=new Nm(t,r),this.triggerManager=new Gm(t,i);const l=async s=>{const{id:d,triggerRef:o,operationRef:c}=await s.getItem(null);return{id:d,triggerRef:o,operationRef:c}};this.attachments=new Mt(t,"__INTERACTIONS",l)}async addInteraction(t,i){const r=t.id,l=i.id,s=`[${r}]:[${l}]`;await this.attachments.create(s,{id:s,triggerRef:r,operationRef:l})}getInteractionList(){return this.attachments.list()}async removeInteraction(t){const i=await this.attachments.getInstance(t);if(!i)return;const{triggerRef:r,operationRef:l}=i;await this.getTriggerRefCount(r)<=1&&await this.triggerManager.removeTrigger(r),await this.getOperationRefCount(l)<=1&&await this.operationManager.removeOperation(l),await this.attachments.remove(t)}async getOperationRefCount(t){return(await this.getInteractionList()).filter(r=>r.operationRef===t).length}async getTriggerRefCount(t){return(await this.getInteractionList()).filter(r=>r.triggerRef===t).length}async runInteraction(t,i){const l=(await this.getInteractionList()).filter(s=>s.triggerRef===t);await Promise.all(l.map(async s=>{try{return await this.operationManager.runOperation(s.operationRef,i)}catch(d){console.warn(`Failed to run operation '${s.operationRef}'`,d)}}))}}const fe=({vizManager:e,instance:t})=>B.useCreation(()=>new un(t,e.resolveComponent(t.type),dt),[t,e]),Ki=e=>{const{title:t="Variables",variables:i}=e,r=U.useClipboard(),l=s=>{r.copy(s),Qe.showNotification({color:"green",message:"Copied to clipboard"})};return u(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:i.map(s=>u(a.Text,{size:"sm",children:[u(a.Code,{color:"teal",children:["// ",s.description]}),n("br",{}),u(a.Code,{onClick:()=>l(s.name),style:{cursor:"pointer"},children:[s.name," : ",s.valueType]})]},s.name))})]})};class qm{constructor(t,i){D(this,"operationId");D(this,"operation");D(this,"operationSchema");D(this,"variables",[]);this.operationManager=t,this.instance=i,$.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(t,i){const r=await this.operationManager.retrieveTrigger(t),l=this.operationManager.getOperationSchemaList().find(s=>s.id===(r==null?void 0:r.schemaRef));$.runInAction(()=>{this.operationId=t,this.operation=r,this.operationSchema=l,this.variables=i})}async changeSchema(t){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,t),await this.configOperation(this.operationId,this.variables))}}function Fm(e){return!!e.operationId}const jm=_.observer(({model:e,onClick:t})=>{var r;const i=(r=e.operationSchema)==null?void 0:r.displayName;return n(a.Button,{variant:"outline",onClick:t,children:i})}),Wm=_.observer(({model:e})=>{const t={operation:e.operation,instance:e.instance,variables:[]};return g.createElement(e.operationSchema.configRender,t)});function Um({model:e}){const t=e.schemaList,i=t.map(l=>({label:l.displayName,value:l.id}));async function r(l){await e.changeSchema(t.find(s=>s.id===l))}return n(a.Select,{label:"Operation",data:i,onChange:r,value:e.operationSchema.id})}const Rm=_.observer(e=>{const[t,{setTrue:i,setFalse:r}]=B.useBoolean(!1),{operationManager:l,operationId:s,instance:d,variables:o}=e,c=B.useCreation(()=>new qm(l,d),[l,d]);return B.useAsyncEffect(async()=>{await c.configOperation(s,o)},[s,c]),Fm(c)?u(k,{children:[n(jm,{model:c,onClick:i}),n(a.Modal,{size:600,opened:t,onClose:r,title:"Operation Settings",closeButtonLabel:"close",zIndex:320,children:u(a.Stack,{children:[n(Um,{model:c}),n(Wm,{model:c}),n(Ki,{title:"Variables",variables:c.variables})]})})]}):null});class Qm{constructor(t,i){D(this,"triggerId");D(this,"trigger");D(this,"triggerSchema");D(this,"sampleData");this.triggerManager=t,this.instance=i,$.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(t,i){const r=await this.triggerManager.retrieveTrigger(t),l=this.triggerManager.getTriggerSchemaList().find(s=>s.id===(r==null?void 0:r.schemaRef));$.runInAction(()=>{this.triggerId=t,this.trigger=r,this.triggerSchema=l,this.sampleData=i})}async changeSchema(t){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,t),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return Ym(this)}}function Ym(e){return!!e.triggerId&&!!e.triggerSchema}function Xm(e,t){return B.useCreation(()=>new Qm(e,t),[e,t])}const Zm=_.observer(({model:e,onClick:t})=>{const i=e.triggerSchema.nameRender,r={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return n(a.Button,{variant:"outline",onClick:t,children:g.createElement(i,r)})}),Km=_.observer(({model:e})=>{const t=e.schemaList,i=t.map(l=>({label:l.displayName,value:l.id}));async function r(l){await e.changeSchema(t.find(s=>s.id===l))}return n(a.Select,{label:"Trigger",data:i,value:e.triggerSchema.id,onChange:r})}),Jm=_.observer(({model:e})=>{const t={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return g.createElement(e.triggerSchema.configRender,t)}),Hm=_.observer(e=>{const[t,{setTrue:i,setFalse:r}]=B.useBoolean(!1),l=e.model;return u(k,{children:[n(a.Modal,{opened:t,onClose:r,title:"Setup Trigger",closeButtonLabel:"close setup",zIndex:320,children:u(a.Stack,{children:[n(Km,{model:l}),n(Jm,{model:l}),n(Ki,{title:"Payload",variables:l.triggerSchema.payload})]})}),n(Zm,{onClick:i,model:l})]})});function ef(e,t){const[i,r]=g.useState([]);return B.useAsyncEffect(async()=>{const l=await e.getInteractionList();r(l)},[t,e]),i}const tf=_.observer(({item:e,manager:t,instance:i,sampleData:r,variables:l,onRemove:s})=>{const{triggerRef:d,operationRef:o}=e,c=Xm(t.triggerManager,i);if(B.useAsyncEffect(async()=>{await c.configTrigger(d,r)},[c,d,r]),c.isReady()){const p=[...c.triggerSchema.payload,...l];return u(a.Group,{children:[n(Hm,{model:c}),n(Rm,{instance:i,operationId:o,variables:p,operationManager:t.operationManager}),n(a.ActionIcon,{"aria-label":"delete-interaction",variant:"filled",color:"red",onClick:()=>s(e),children:n(S.Trash,{size:16})})]})}return null}),nf=e=>{const[t,i]=g.useState(0),{interactionManager:r,instance:l,sampleData:s,variables:d}=e,o=ef(r,t),c=async()=>{const h=await r.triggerManager.createOrGetTrigger(U.randomId(),r.triggerManager.getTriggerSchemaList()[0]),x=await r.operationManager.createOrGetOperation(U.randomId(),r.operationManager.getOperationSchemaList()[0]);await r.addInteraction(h,x),i(C=>C+1)};async function p(h){await r.removeInteraction(h.id),i(x=>x+1)}const{data:f=0,loading:y}=B.useRequest(async()=>{try{return(await r.triggerManager.getTriggerSchemaList()).length}catch{return 0}});return u(a.Stack,{children:[n(a.LoadingOverlay,{visible:y}),f===0&&n(a.Alert,{icon:n(S.AlertCircle,{size:16}),title:"Unavailable",color:"gray",children:"This visualization does not have available interactions to choose from"}),o.map(h=>n(tf,{onRemove:p,instance:l,sampleData:s,variables:d,item:h,manager:e.interactionManager},h.id)),n(a.Button,{style:{width:"fit-content"},onClick:()=>c(),disabled:f===0,children:"Add interaction"})]})},rf=()=>{const{panel:e,data:t}=Q(),i=e.viz,{vizManager:r}=g.useContext(me),l=e.json,s=B.useCreation(()=>r.getOrCreateInstance(l),[r,l]),d=B.useCreation(()=>new un(s,r.resolveComponent(i.type),dt),[s,i.type]);return g.useEffect(()=>s.instanceData.watchItem(null,b.throttle(o=>{e.viz.setConf(o)},100,{leading:!1,trailing:!0})),[s]),{instance:s,vizManager:r,interactionManager:d,sampleData:t,variables:[]}},af=()=>{const e=rf();return n(nf,{...e})};var Ji=(e=>(e.migrated="migrated",e.nothingToMigrate="nothingToMigrate",e.checkFailed="checkFailed",e.migrationFailed="migrationFailed",e))(Ji||{}),ut=(e=>(e.notStarted="notStarted",e.inProgress="inProgress",e.done="done",e))(ut||{});class lf{constructor(t){D(this,"vizInstance");D(this,"operationManager");D(this,"triggerManager");D(this,"vizManager");D(this,"runningMigration");D(this,"panelModel");D(this,"status","notStarted");this.panelModel=t.getRequired(W.instanceScope.panelModel),this.vizInstance=t.getRequired(W.instanceScope.vizInstance),this.operationManager=t.getRequired(W.instanceScope.operationManager),this.triggerManager=t.getRequired(W.instanceScope.triggerManager),this.vizManager=t.getRequired(W.vizManager)}async createMigrationTask(){const t=[];try{await this.instanceNeedMigration()&&t.push(()=>this.runInstanceMigration()),await this.interactionNeedMigration()&&t.push(()=>this.runInteractionMigration())}catch(i){return console.warn("check migration failed",i),"checkFailed"}if(t.length===0)return"nothingToMigrate";try{return await Promise.all(t.map(i=>i())),"migrated"}catch(i){return console.warn("migration failed",i),"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),i={configData:this.vizInstance.instanceData,panelModel:this.panelModel};await t.migrator.migrate(i)}async instanceNeedMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),i={configData:this.vizInstance.instanceData};return t.migrator.needMigration(i)}async interactionNeedMigration(){return await this.operationManager.needMigration()||await this.triggerManager.needMigration()}}function Hi(e){const{panel:t}=Q();return g.useCallback(i=>{const r=i.getRequired(W.vizManager),l=r.resolveComponent(e.viz.type);return i.createScoped().provideFactory(W.instanceScope.vizInstance,()=>r.getOrCreateInstance(e)).provideFactory(W.instanceScope.interactionManager,s=>{const d=s.getRequired(W.instanceScope.vizInstance);return new un(d,l,dt)}).provideFactory(W.instanceScope.operationManager,s=>s.getRequired(W.instanceScope.interactionManager).operationManager).provideFactory(W.instanceScope.triggerManager,s=>s.getRequired(W.instanceScope.interactionManager).triggerManager).provideValue(W.instanceScope.panelModel,t).provideFactory(W.instanceScope.migrator,s=>new lf(s))},[e.viz.type,e.viz.conf])}function er(e){const[t,i]=g.useState(!1),r=Qn().getRequired(W.instanceScope.migrator);return B.useAsyncEffect(async()=>{const l=r.status===ut.notStarted;i(r.status===ut.done),r.status===ut.notStarted&&r.runMigration().then(s=>{s===Ji.migrated&&l&&(e==null||e())}).finally(()=>{i(!0)})},[r]),t}function tr(e,t){const i=Qn().getRequired(W.instanceScope.vizInstance);return g.useEffect(()=>(i.instanceData.setItem(null,t.viz.conf),i.instanceData.watchItem(null,r=>{e(r)})),[e,t.viz.type]),i}function sf({setVizConf:e,...t}){const{panel:i}=t,r=tr(e,i),l=er(()=>{Qe.showNotification({title:`${i.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return B.useAsyncEffect(async()=>{await r.instanceData.setItem(null,i.viz.conf)},[r,i.viz.type]),l?n(Cl,{...t}):n(a.Text,{children:"Checking update..."})}function of(e){const{panel:t,setVizConf:i}=e;tr(i,t);const{inEditMode:r}=g.useContext(we);return er(()=>{r&&Qe.showNotification({title:`${t.title} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?n(xl,{...e}):n(a.Text,{children:"Checking update"})}const Tx="";function df(e,t){const{vizManager:i}=g.useContext(me),{panel:{viz:r,title:l,id:s,description:d,queryID:o,variables:c}}=Q(),p={title:l,id:s,description:d,queryID:o,viz:r,layout:t},f=Hi(p);try{return i.resolveComponent(r.type),n(Ze,{configure:f,children:n(of,{setVizConf:r.setConf,panel:p,data:e,variables:c,vizManager:i})})}catch(y){return console.info(b.get(y,"message")),null}}const uf=["richText","button"],nr=_.observer(function({height:t,viz:i,data:r,loading:l,error:s,query:d}){const{ref:o,width:c,height:p}=U.useElementSize(),f=df(r,{w:c,h:p});if(uf.includes(i.type))return n("div",{className:"viz-root",style:{height:t},ref:o,children:n(ie,{children:f})});if(l)return n("div",{className:"viz-root",style:{height:t,position:"relative"},ref:o,children:n(a.LoadingOverlay,{visible:l,exitTransitionDuration:0})});const h=!!s,x=!h&&!!(d!=null&&d.stateMessage),C=!h&&!x;return u("div",{className:"viz-root",style:{height:t},ref:o,children:[h&&n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:s}),x&&n(a.Text,{color:"gray",align:"center",children:d.stateMessage}),C&&n(ie,{children:f})]})});function cf(e){return!["richText","button"].includes(e)}const pf={border:"1px solid #e9ecef"},ir={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function hf(e,t,i){return e.style.border.enabled?pf:i||t?ir:{border:"1px dashed transparent"}}const ct=_.observer(function({panel:t,view:i}){const r=M(),{inEditMode:l}=g.useContext(we),{data:s,state:d,error:o}=r.getDataStuffByID(t.queryID),c=r.queries.findByID(t.queryID),p=cf(t.viz.type),f=p&&d==="loading",y=t.title?"calc(100% - 25px - 5px)":"100%",h=hf(t,p,l),x=p||l;return n(kt,{value:{panel:t,data:s,loading:f},children:u(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(ti,{})}),x&&n(fl,{view:i}),n(bl,{}),n(nr,{viz:t.viz,data:s,loading:f,error:o,height:y,query:c})]})})}),Dx="",gf=g.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(S.ArrowsMove,{size:16})})),mf=g.forwardRef(({handleAxis:e,...t},i)=>n(a.ActionIcon,{ref:i,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(S.ChevronDownRight,{size:16})})),ff=Re.WidthProvider(Re),bf=_.observer(({view:e,className:t="layout"})=>{const i=M(),{panels:r,layouts:l}=i.panels.panelsByIDs(e.panelIDs),s=g.useCallback(o=>{o.forEach(({i:c,...p})=>{const f=i.panels.findByID(c);f&&f.layout.set(p)})},[i]),d=(o,c,p,f)=>{p.h<30&&(p.h=30,f.h=30),p.w<4&&(p.w=4,f.w=4)};return n(ff,{onLayoutChange:s,className:`dashboard-layout ${t}`,rowHeight:1,cols:36,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,layout:l,draggableHandle:".react-grid-customDragHandle",resizeHandle:n(mf,{}),onResize:d,children:r.map((o,c)=>u("div",{"data-grid":{...o.layout},className:"panel-grid-item",children:[n(gf,{h:o.layout.h}),n(ct,{view:e,panel:o})]},o.id))})}),yf=Re.WidthProvider(Re),vf=_.observer(function({view:t,className:i="layout"}){const{panels:r,layouts:l}=M().panels.panelsByIDs(t.panelIDs);return n(yf,{className:`dashboard-layout ${i}`,cols:36,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,layout:l,children:r.map(s=>n("div",{"data-grid":{...s.layout},className:"panel-grid-item",children:n(ct,{view:t,panel:s})},s.id))})});var rr=(e=>(e.Use="use",e.Edit="edit",e))(rr||{}),O=(e=>(e.Division="div",e.Modal="modal",e.Tabs="tabs",e))(O||{});const xf={div:"Division",tabs:"Tabs",modal:"Modal"},ar={div:"rgba(255, 0, 0, 0.2)",modal:"rgba(0, 0, 0, 0.2)",tabs:"rgba(255, 200, 100, 0.4)"},Cf={div:"#ff4000",modal:"#000",tabs:"#ffad18"};var cn=(e=>(e.Select="select",e.TreeSelect="tree-select",e.MultiSelect="multi-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(cn||{});const wf=_.observer(({children:e})=>n(a.Box,{pt:10,pb:100,children:e})),_f=_.observer(({children:e,view:t})=>{const i=t.config;return n(a.Modal,{size:i.width,overflow:"inside",opened:!0,onClose:b.noop,withCloseButton:!1,title:i.custom_modal_title.value,trapFocus:!0,onDragStart:r=>{r.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})}),Sf=({variant:e,orientation:t})=>{const i={tab:{},panel:{padding:"16px"}};return e==="pills"&&t==="horizontal"&&(i.tab.paddingTop="6px",i.tab.paddingBottom="6px"),t==="vertical"&&(i.tab["&.add-a-tab"]={paddingTop:"1px",paddingBottom:"1px"},i.tab["&.add-a-tab .mantine-Tabs-tabLabel"]={marginLeft:"auto",marginRight:"auto"}),i},Tf=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},Df=_.observer(({children:e,view:t})=>{const i=ce.useModals(),r=M(),l=g.useMemo(()=>r.views.options.filter(c=>c.type===O.Division),[t.id,r.views.options]),s=t.config,d=c=>i.openConfirmModal({title:"Delete this tab?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{s.removeTab(c)},confirmProps:{color:"red"},zIndex:320}),o=s.tabs.length===0;return u(a.Box,{className:"preview-view-tabs",children:[u(a.Tabs,{variant:s.variant,orientation:s.orientation,defaultValue:s.tabs.length>0?s.tabs[0].id:"0",styles:Sf(s),children:[u(a.Tabs.List,{grow:s.grow,children:[s.tabs.map(c=>n(a.Tabs.Tab,{value:c.id,sx:Tf(c),children:c.name??c.id},c.id)),n(a.Tabs.Tab,{onClick:s.addTab,value:"add",className:"add-a-tab",children:n(S.Plus,{size:18,color:"#228be6"})})]}),s.tabs.map((c,p)=>{const f=r.views.findByID(c.view_id);return u(a.Tabs.Panel,{value:c.id,sx:{position:"relative"},children:[u(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}),u(a.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[n(a.TextInput,{label:"Tab Name",value:c.name,onChange:y=>c.setName(y.currentTarget.value)}),n(a.Select,{label:"View",value:c.view_id,onChange:c.setViewID,data:l}),n(a.ColorInput,{label:"Color",value:c.color,onChange:c.setColor,disabled:s.variant!=="default"}),f&&u(a.Button,{mt:20,variant:"gradient",leftIcon:n(I.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>r.views.setIDOfVIE(f.id),children:["Swith to View: ",f.name]}),n(a.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>d(p),disabled:o,leftIcon:n(I.IconTrash,{size:14}),children:"Delete This Tab"})]})]}),f&&n(pt,{view:f})]},c.id)})]}),e]})}),kf=_.observer(({view:e,children:t})=>{switch(e.type){case O.Modal:return n(_f,{view:e,children:t});case O.Tabs:return n(Df,{view:e,children:t});case O.Division:default:return n(wf,{children:t})}}),lr=_.observer(function({view:t}){return n(St.Provider,{value:{viewPanelInFullScreen:b.noop,inFullScreen:!1},children:n(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:n(kf,{view:t,children:u(a.Box,{sx:{position:"relative"},children:[n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n(ei,{view:t})}),n(bf,{view:t})]})})})})}),If={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},Mf=_.observer(function({view:t,panel:i,exitFullScreen:r}){return n(a.Modal,{opened:!0,fullScreen:!0,onClose:r,title:n(a.Button,{color:"blue",size:"xs",onClick:r,leftIcon:n(S.ArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:If,children:n(a.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:n(ct,{view:t,panel:i})})})});function Af(e,t,i){const{panels:r}=M(),l=e.id==="Main",[s,d]=g.useState(()=>l&&r.findByID(t)?t:null),o=g.useCallback(y=>{d(y),l&&i(y)},[l,i]),c=g.useCallback(()=>{d(null),l&&i("")},[l,i]),p=s?r.findByID(s):null;return{viewPanelInFullScreen:o,exitFullScreen:c,inFullScreen:!!p,fullScreenPanel:p}}const zf=_.observer(({children:e})=>n(a.Box,{children:e})),Vf=_.observer(({children:e,view:t})=>{const i=M(),r=t.config,l=i.views.visibleViewIDs.includes(t.id),s=()=>i.views.rmVisibleViewID(t.id);return n(a.Modal,{size:r.width,centered:!0,overflow:"inside",opened:l,onClose:s,withCloseButton:!1,title:r.custom_modal_title.value,trapFocus:!0,onDragStart:d=>{d.stopPropagation()},styles:{modal:{border:"1px solid #efefef"},body:{maxHeight:r.height,overflow:"auto"}},transitionDuration:0,children:e})}),Lf=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},Ef=_.observer(({children:e,view:t})=>{const i=M(),r=t.config;return u(a.Box,{className:"render-view-tabs",children:[u(a.Tabs,{variant:r.variant,orientation:r.orientation,defaultValue:r.tabs.length>0?r.tabs[0].id:"0",styles:{panel:{padding:r.orientation==="horizontal"?"16px 0px":"0"}},keepMounted:!1,children:[n(a.Tabs.List,{grow:r.grow,children:r.tabs.map(l=>n(a.Tabs.Tab,{value:l.id,sx:Lf(l),disabled:!l.view_id,children:l.name??l.id},l.id))}),r.tabs.map(l=>{const s=i.views.findByID(l.view_id);return s?n(a.Tabs.Panel,{value:l.id,children:n(pt,{view:s})},l.id):null})]}),e]})}),Pf=_.observer(({view:e,children:t})=>{switch(e.type){case O.Modal:return n(Vf,{view:e,children:t});case O.Tabs:return n(Ef,{view:e,children:t});case O.Division:default:return n(zf,{children:t})}}),pt=_.observer(function({view:t}){const{fullScreenPanelID:i,setFullScreenPanelID:r}=Kn(),{viewPanelInFullScreen:l,exitFullScreen:s,inFullScreen:d,fullScreenPanel:o}=Af(t,i,r);return n(St.Provider,{value:{viewPanelInFullScreen:l,inFullScreen:d},children:u(a.Box,{className:"dashboard-view","data-enable-scrollbar":!0,children:[d&&n(Mf,{view:t,panel:o,exitFullScreen:s}),n(Pf,{view:t,children:u(a.Box,{sx:{position:"relative"},children:[!d&&n(a.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n(ei,{view:t})}),!d&&n(vf,{view:t})]})})]})})});function Bf(e){e=e||{};const t=Object.keys(e).sort(),i=[];for(let r=0;r<t.length;r++){const l=t[r];if(l!="authentication"&&e[l])i.push(t[r]+"="+(typeof e[l]=="object"?JSON.stringify(e[l]):e[l]));else{const s=Object.keys(e[l]).sort();for(let d=0;d<s.length;d++){const o=s[d];o!="sign"&&e[l][o]&&i.push(s[d]+"="+(typeof e[l][o]=="object"?JSON.stringify(e[l][o]):e[l][o]))}}}return i.sort().join("&")}function Of(e,t){let i=Bf(e);return i+="&key="+t,Un.MD5(i).toString().toUpperCase()}const re={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:Of({app_id:this.app_id,nonce_str:t,...e},this.app_secret)}},getRequest(e,t){return(i,r,l={})=>{const s=window.localStorage.getItem("token"),d={"X-Requested-With":"XMLHttpRequest","Content-Type":l.string?"application/x-www-form-urlencoded":"application/json",authorization:s?`bearer ${s}`:"",...l.headers},o={baseURL:this.baseURL,method:e,url:i,params:e==="GET"?r:l.params,headers:d,signal:t};return["POST","PUT"].includes(e)&&(o.data=l.string?JSON.stringify(r):r,o.data.authentication=this.getAuthentication(o.data)),xe(o).then(c=>c.data).catch(c=>Promise.reject(c))}}};function sr(e){re.baseURL!==e.apiBaseURL&&(re.baseURL=e.apiBaseURL),e.app_id&&(re.app_id=e.app_id),e.app_secret&&(re.app_secret=e.app_secret)}const or=m.types.model("FilterConfigModel_Checkbox",{_name:m.types.literal("checkbox"),description:m.types.optional(m.types.string,""),default_value:m.types.boolean}).views(e=>({get json(){const{_name:t,description:i,default_value:r}=e;return{_name:t,description:i,default_value:r}},get isDescriptionEmpty(){const{description:t}=e;return t===""||t==="<p></p>"}})).actions(e=>({setDefaultValue(t){e.default_value=t},setDescription(t){e.description=t}})),$f=()=>or.create({_name:"checkbox",description:"",default_value:!1});var F=(e=>(e.Postgresql="postgresql",e.MySQL="mysql",e.HTTP="http",e))(F||{}),Y=(e=>(e.Select="select",e.MultiSelect="multi-select",e.TreeSelect="tree-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(Y||{});m.types.model({type:m.types.enumeration("DataSourceType",[F.Postgresql,F.MySQL,F.HTTP]),key:m.types.string,sql:m.types.string});function dr(e,t){return e.map(i=>{try{return i?z.tz(i,"UTC").format(t):null}catch{return console.log(`[date-range] failed parsing ${i}`),null}})}const Nf=m.types.model("FilterConfigModel_DateRange",{_name:m.types.literal("date-range"),required:m.types.boolean,inputFormat:m.types.enumeration("DateRangeInputFormat",["YYYY","YYYYMM","YYYYMMDD","YYYY-MM","YYYY-MM-DD"]),default_value:m.types.optional(m.types.array(m.types.union(m.types.string,m.types.null)),[null,null]),clearable:m.types.boolean,max_days:m.types.optional(m.types.number,0),allowSingleDateInRange:m.types.optional(m.types.boolean,!1)}).views(e=>({get json(){const{_name:t,max_days:i,required:r,clearable:l,inputFormat:s,default_value:d,allowSingleDateInRange:o}=e;return{_name:t,max_days:i,required:r,clearable:l,inputFormat:s,default_value:dr(d,s),allowSingleDateInRange:o}},truthy(t){return Array.isArray(t)&&t.length===2&&t.every(i=>!!i)}})).views(e=>({getMaxDate(t){const{max_days:i}=e;if(!(!i||!t))return z(t).startOf("day").add(i,"days").toDate()},getMinDate(t){const{max_days:i}=e;if(!(!i||!t))return z(t).startOf("day").subtract(i,"days").toDate()}})).actions(e=>({setFilterValue(t){try{const i=m.getParent(e);m.getRoot(e).filters.setValueByKey(i.key,t)}catch(i){console.error(i)}}})).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}})),ur=m.types.snapshotProcessor(Nf,{preProcessor({default_value:e,...t}){return{...t,default_value:e.map(i=>i===null?null:z.tz(i,"UTC").toISOString())}},postProcessor(e){const{default_value:t,...i}=e;return{...i,default_value:dr(t,i.inputFormat)}}}),Gf=()=>ur.create({_name:"date-range",required:!1,inputFormat:"YYYY-MM-DD",clearable:!1,default_value:[null,null]}),qf=m.types.model({label:m.types.string,value:m.types.string}).actions(e=>({setLabel(t){e.label=t},setValue(t){e.value=t}})),pn=m.types.model("FilterConfigModel_BaseSelect",{static_options:m.types.optional(m.types.array(qf),[]),options_query_id:m.types.optional(m.types.string,""),default_selection_count:m.types.optional(m.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:i,error:r}=m.getRoot(e).getDataStuffByID(e.options_query_id);return i==="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??""}})),ht=e=>b.cloneDeepWith(e,(t,i)=>{if(i!==void 0&&t)return $.toJS(t)}),cr=m.types.compose("FilterConfigModel_MultiSelect",m.types.model({_name:m.types.literal("multi-select"),min_width:m.types.optional(m.types.string,""),default_value:m.types.optional(m.types.array(m.types.string),[])}),pn).views(e=>({get json(){const{_name:t,default_value:i,min_width:r,static_options:l,options_query_id:s,default_selection_count:d}=e;return ht({_name:t,min_width:r,default_value:i,static_options:l,options_query_id:s,default_selection_count:d})},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=m.cast(t)},setMinWidth(t){e.min_width=t},setDefaultSelection(){const t=m.getRoot(e).filters,i=m.getParent(e).key;t.setValueByKey(i,e.default_selection)}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>$.toJS(e.default_selection),e.setDefaultSelection,{fireImmediately:!0,delay:0}))}})),Ff=()=>cr.create({_name:"multi-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),pr=m.types.compose("FilterConfigModel_TreeSelect",m.types.model({_name:m.types.literal("tree-select"),min_width:m.types.optional(m.types.string,""),default_value:m.types.optional(m.types.array(m.types.string),[])}),pn).views(e=>({get json(){const{_name:t,default_value:i,min_width:r,static_options:l,options_query_id:s,default_selection_count:d}=e;return{_name:t,min_width:r,default_value:i,static_options:l,options_query_id:s,default_selection_count:d}}})).actions(e=>({setDefaultValue(t){e.default_value=m.cast(t)},setMinWidth(t){e.min_width=t}})),jf=()=>pr.create({_name:"tree-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),hr=m.types.compose("FilterConfigModel_Select",m.types.model({_name:m.types.literal("select"),default_value:m.types.string,required:m.types.boolean,width:m.types.optional(m.types.string,"")}),pn).views(e=>({get json(){const{_name:t,default_value:i,required:r,width:l,static_options:s,options_query_id:d,default_selection_count:o}=e;return ht({_name:t,width:l,required:r,default_value:i,static_options:s,options_query_id:d,default_selection_count:o})},truthy(t){return!!t}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t},setWidth(t){e.width=t}})),Wf=()=>hr.create({_name:"select",required:!1,default_value:"",static_options:[],options_query_id:"",default_selection_count:0}),gr=m.types.model("FilterConfigModel_TextInput",{_name:m.types.literal("text-input"),required:m.types.boolean,default_value:m.types.string}).views(e=>({get json(){const{_name:t,required:i,default_value:r}=e;return{_name:t,required:i,default_value:r}},truthy(t){return typeof t!="string"?!1:!!t.trim()}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value=t}})),mr=()=>gr.create({_name:"text-input",required:!1,default_value:""}),hn=m.types.model("FilterModel",{id:m.types.identifier,key:m.types.string,label:m.types.string,order:m.types.number,visibleInViewsIDs:m.types.array(m.types.string),auto_submit:m.types.optional(m.types.boolean,!1),type:m.types.enumeration("DashboardFilterType",[Y.Select,Y.MultiSelect,Y.TreeSelect,Y.TextInput,Y.Checkbox,Y.DateRange]),config:m.types.union(hr,cr,pr,gr,or,ur)}).views(e=>({get plainDefaultValue(){const t=e.config.default_value;return Array.isArray(t)?[...t]:t},get usingDefaultValue(){return e.type!==Y.TreeSelect},get auto_submit_supported(){return[Y.Select,Y.Checkbox,Y.DateRange].includes(e.type)}})).views(e=>({get json(){const{id:t,key:i,label:r,order:l,visibleInViewsIDs:s,auto_submit:d,type:o,config:c}=e;return{id:t,key:i,type:o,label:r,order:l,config:c.json,auto_submit:d,visibleInViewsIDs:$.toJS(s)}},get should_auto_submit(){return e.auto_submit_supported&&e.auto_submit},requiredAndPass(t){return b.get(e.config,"required",!1)?b.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 Y.Select:e.config=Wf();break;case Y.MultiSelect:e.config=Ff();break;case Y.TreeSelect:e.config=jf();break;case Y.TextInput:e.config=mr();break;case Y.Checkbox:e.config=$f();break;case Y.DateRange:e.config=Gf();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 fr(e,t){if(e===void 0)return e;if(t._name==="date-range")try{const[...i]=e;return i.map(r=>r===null?r:z.tz(r,"UTC").format(t.inputFormat)??r)}catch(i){return console.error(i),e}return e}function br(e){return e.reduce((t,i)=>(t[i.key]=fr(i.config.default_value,i.config),t),{})}function Uf(e,t,i){m.addDisposer(e,m.addMiddleware(e,(r,l)=>{l(r,()=>{m.getType(r.context)===t&&r.type==="action"&&i(r.name,r.context)})}))}const yr=m.types.model("FiltersModel",{current:m.types.optional(m.types.array(hn),[]),values:m.types.optional(m.types.frozen(),{}),previewValues:m.types.optional(m.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(i=>i.id===t)},get inOrder(){return b.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 b.sortBy(e.current.filter(i=>i.visibleInViewsIDs.includes(t)),"order")},get firstFilterValueKey(){return Object.keys(e.values)[0]??""},get keyLabelMap(){return e.current.reduce((t,i)=>(t[i.key]=i.label,t),{})}})).actions(e=>({replace(t){e.current=m.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const i=e.current.findIndex(r=>r.id===t);i>=0&&e.current.splice(i,1)},setValues(t){e.values=t},setValueByKey(t,i){e.values={...e.values,[t]:i}},getValueByKey(t){return e.values[t]},refreshValues(){console.log("refreshing values"),e.values=br(e.current)},updatePreviewValues(t){e.previewValues=t}})).actions(e=>{function t(){Uf(e.current,hn,(i,r)=>{if(i==="setType"){const l=fr(r.config.default_value,r.config);e.setValueByKey(r.key,l),e.updatePreviewValues({...e.previewValues,[r.key]:l})}})}return{afterCreate(){t()}}});function vr(e){return{current:e,values:br(e)}}const xr="\uFEFF";function Rf(e,t){const i=new Blob([xr+t],{type:"text/csv"});xt.saveAs(i,`${e}.csv`)}function Qf(e,t){const i=new Blob([t],{type:"application/json"});xt.saveAs(i,`${e}.json`)}function Yf(e){const t=new ha;e.forEach(({id:i,data:r})=>{t.file(`${i}.csv`,Cr(r))}),t.generateAsync({type:"blob"}).then(i=>{xt.saveAs(i,"dashboard_data.zip")})}function Cr(e){if(!Array.isArray(e)||e.length===0)return"";const t=[],i=Object.keys(e[0]);return t.push(i.join(",")),e.forEach(r=>{const l=Object.values(r).join(",");t.push(l)}),xr+t.join(`
242
242
  `)}const Ee={CryptoJS:Un,d3Array:Xa,dayjs:z,lodash:b,numbro:G,mathjs:Xe},Xf=[{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:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"mathjs",url:"https://mathjs.org/",version:"11.7.0"}],Zf=e=>`
243
243
  <tr>
244
244
  <td><code>${e.name}</code></td>
@@ -266,7 +266,7 @@
266
266
  ${Xf.map(Zf).join("")}
267
267
  </tbody>
268
268
  </table>
269
- `;function Jf(e,t){return new Function(`return ${e}`)()(t,Ee)}function Hf(e,t,i){return{context:{...t,...e},filters:i}}function eb(e,t,i,r){const l=Hf(t,i,r);return Jf(e,l)}function tb(e,t){try{return new Function(`return ${e.config.processing.pre}`)()(t,Ee)}catch(i){return console.error(i),t}}function nb(e,t){try{return new Function(`return ${e.config.processing.post}`)()(t,Ee)}catch(i){return console.error(i),t}}function ib(e,t){try{return new Function(`return ${e}`)()(t,Ee)}catch(i){return console.error(i),t}}function rb(e,t,i,r){const l=mn(t,i,[],r),s=Object.keys(l),o=Object.values(l);try{return new Function(...s,`return \`${e}\`;`)(...o)}catch(d){return console.info(d),d.message}}function gn(e,t={}){const i=Object.keys(t),r=Object.values(t);try{return new Function(...i,`return \`${e}\`;`)(...r)}catch(l){throw i.length===0&&e.includes("$")?new Error("[formatSQL] insufficient params"):l}}function mn(e,t,i,r){const l={...t,...e},s={context:l,filters:r},o=i.reduce((d,c)=>(d[c.key]=gn(c.value,s),d),{});return b.merge({},{context:l,filters:r,sql_snippets:o})}function wr(e,t,i,r,l){try{const s=mn(t,i,r,l);return gn(e,s)}catch(s){return console.error(s),s.message}}function ab({sql:e,pre_process:t}){if(!t.trim())return e;try{return new Function(`return ${t}`)()({sql:e},Ee)}catch(i){return console.error(i),e}}function lb(e,t){if(!e.trim())return t;try{return new Function(`return ${e}`)()(t,Ee)}catch(i){return console.error(i),t}}async function sb({context:e,mock_context:t,sqlSnippets:i,query:r,filterValues:l},s){if(!r.sql)return[];const{type:o,key:d,sql:c,pre_process:p,post_process:f}=r,y=mn(e,t,i,l),h=gn(c,y),x=ab({sql:h,pre_process:p});let C=await re.getRequest("POST",s)("/query",{type:o,key:d,query:x},{});return C=lb(f,C),C}async function ob({context:e,mock_context:t,query:i,filterValues:r,datasource:l},s){const{type:o,key:d,name:c,pre_process:p,post_process:f}=i;let y=eb(p,e,t,r);console.groupCollapsed(`Request config for: ${c}`),console.log(y),console.groupEnd(),y=tb(l,y);const h=JSON.stringify(y),x=await re.getRequest("POST",s)("/query",{type:o,key:d,query:h},{});let C=nb(l,x);return C=ib(f,C),C}async function fn(){try{return(await re.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}})).data}catch(e){return console.error(e),[]}}const db=m.types.model("QueryModel",{id:m.types.string,name:m.types.string,type:m.types.enumeration("DataSourceType",[F.Postgresql,F.MySQL,F.HTTP]),key:m.types.string,sql:m.types.string,pre_process:m.types.optional(m.types.string,""),post_process:m.types.optional(m.types.string,""),run_by:m.types.optional(m.types.array(m.types.string),[])}).views(e=>({get valid(){return e.id&&e.type&&e.key&&e.name?e.type===F.HTTP?!!e.pre_process:!!e.sql:!1},get json(){const{id:t,name:i,type:r,key:l,sql:s,run_by:o,pre_process:d,post_process:c}=e;return ht({id:t,key:l,sql:s,name:i,type:r,run_by:o,pre_process:d,post_process:c})},get conditionOptions(){if(!m.isAlive(e))return[];const{context:t,mock_context:i,filterValues:r}=m.getRoot(e).payloadForSQL,l=Object.keys({...i,...t}).map(d=>`context.${d}`),s=Object.keys(r).map(d=>`filters.${d}`);return[...l,...s].map(d=>({label:d.split(".")[1],value:d,group:b.capitalize(d.split(".")[0])}))},get unmetRunByConditions(){if(!m.isAlive(e))return[];const{run_by:t}=e;if(t.length===0)return[];const{context:i,mock_context:r,filterValues:l}=m.getRoot(e).payloadForSQL,s={context:{...r,...i},filters:l};return t.filter(o=>{const d=b.get(s,o);return Array.isArray(d)?d.length===0:typeof d=="number"?Number.isNaN(d):!d})}})).views(e=>({get runByConditionsMet(){return e.unmetRunByConditions.length===0},get conditionNames(){if(e.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:t}=m.getRoot(e).filters,i=e.unmetRunByConditions.filter(l=>l.startsWith("context.")).map(l=>l.split("context.")[0]),r=e.unmetRunByConditions.filter(l=>l.startsWith("filters.")).map(l=>b.get({filters:t},l)).filter(l=>!!l);return{context:i,filters:r}}})).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}})),_r=m.types.compose("QueryModel",db,m.types.model({state:m.types.optional(m.types.enumeration(["idle","loading","error"]),"idle"),data:m.types.optional(m.types.array(m.types.frozen()),[]),error:m.types.frozen()})).views(e=>({get formattedSQL(){const{context:t,mock_context:i,sqlSnippets:r,filterValues:l}=m.getRoot(e).payloadForSQL;return wr(e.sql,t,i,r,l)},get typedAsSQL(){return[F.Postgresql,F.MySQL].includes(e.type)},get typedAsHTTP(){return[F.HTTP].includes(e.type)},get datasource(){const{key:t,type:i}=e;return m.getRoot(e).datasources.find({type:i,key:t})}})).views(e=>({get stateMessage(){if(e.state!=="idle")return"";if(!e.runByConditionsMet){const{context:t,filters:i}=e.conditionNames;if(t.length===0&&i.length===0)return"Waiting";const r=[];return t.length>0&&r.push(`context: ${t.join(", ")}`),i.length>0&&r.push(`filter${i.length>1?"s":""}: ${i.join(", ")}`),r.length===2&&r.splice(1,0,"and"),r.unshift("Waiting for"),r.join(" ")}return e.data.length>0?"":"Empty Data"}})).volatile(()=>({controller:new AbortController})).actions(e=>({runSQL:m.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:i,mock_context:r,sqlSnippets:l,filterValues:s}=m.getRoot(e).payloadForSQL;e.data=yield*m.toGenerator(sb({context:i,mock_context:r,sqlSnippets:l,title:e.name,query:e.json,filterValues:s},e.controller.signal)),e.state="idle",e.error=null}catch(i){if(!xe.isCancel(i)){e.data.length=0;const r=b.get(i,"message","unkown error");e.error=b.get(i,"response.data.detail.message",r),e.state="error"}}}}),runHTTP:m.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:i,mock_context:r,filterValues:l}=m.getRoot(e).payloadForSQL;e.data=yield*m.toGenerator(ob({context:i,mock_context:r,query:e.json,filterValues:l,datasource:e.datasource},e.controller.signal)),e.state="idle",e.error=null}catch(i){if(console.error(i),!xe.isCancel(i)){e.data.length=0;const r=b.get(i,"message","unkown error");e.error=b.get(i,"response.data.detail.message",r),e.state="error"}}}})})).actions(e=>({fetchData:e.typedAsHTTP?e.runHTTP:e.runSQL,beforeDestroy(){var t;(t=e.controller)==null||t.abort()}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>{var t,i;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}--${(i=e.datasource)==null?void 0:i.id}`},e.fetchData,{fireImmediately:!0,delay:0}))}})),Sr=m.types.model("QueriesModel",{current:m.types.optional(m.types.array(_r),[])}).views(e=>({get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(i=>i.id===t)},get options(){const t=e.current.map(i=>({value:i.id,label:i.name,_type:"query"}));return b.sortBy(t,i=>i.label.toLowerCase())}})).views(e=>({get json(){return e.current.filter(t=>t.id).map(t=>t.json)}})).actions(e=>({replace(t){e.current=m.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},replaceByIndex(t,i){e.current.splice(t,1,i)},downloadAllData(){const t=e.current.map(({name:i,data:r})=>({id:i,data:r.toJSON()}));Yf(t)},downloadDataByQueryID(t){const i=e.findByID(t);if(!i){console.log("[downloadDataByQueryID] query not found");return}const{name:r,data:l}=i,s=Cr(l);Rf(r,s)},refetchDataByQueryID(t){const i=e.findByID(t);if(!i){console.error(new Error(`[downloadDataByQueryID] query by ID[${t}] not found`));return}return i.fetchData()},removeQuery(t){const i=e.current.find(r=>r.id===t);i&&(m.detach(i),e.current.remove(i))}})),Tr=m.types.model("SQLSnippetModel",{key:m.types.string,value:m.types.string}).views(e=>({get json(){const{key:t,value:i}=e;return{key:t,value:i}},isADuplicatedKey(t){return!t||t===e.key?!1:!!m.getParent(e,2).findByKey(t)}})).actions(e=>({setKey(t){e.key=t},setValue(t){e.value=t}})),Dr=m.types.model("SQLSnippetsModel",{current:m.types.optional(m.types.array(Tr),[])}).views(e=>({get json(){return e.current.map(t=>t.json)},get options(){const t=e.current.map(i=>({label:i.key,value:i.key,_type:"sql_snippet"}));return b.sortBy(t,i=>i.label.toLowerCase())},get record(){return e.current.reduce((t,i)=>(t[i.key]=i.value,t),{})},get firstKey(){if(e.current.length!==0)return e.current[0].key},findByKey(t){return e.current.find(i=>i.key===t)}})).actions(e=>({replace(t){e.current=m.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByKey(t){const i=e.current.findIndex(r=>r.key===t);i>=0&&e.current.splice(i,1)},replaceByIndex(t,i){e.current.splice(t,1,i)}})),kr=m.types.model("ContextModel",{current:m.types.optional(m.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,i){e.current[t]=i}})),ub=m.types.model({data:m.types.optional(m.types.frozen(),[]),state:m.types.optional(m.types.enumeration(["idle","loading","error"]),"idle"),error:m.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get sql(){const t=m.getParent(e,1),{type:i,table_name:r,table_schema:l}=t;if(i===F.MySQL)return`
269
+ `;function Jf(e,t){return new Function(`return ${e}`)()(t,Ee)}function Hf(e,t,i){return{context:{...t,...e},filters:i}}function eb(e,t,i,r){const l=Hf(t,i,r);return Jf(e,l)}function tb(e,t){try{return new Function(`return ${e.config.processing.pre}`)()(t,Ee)}catch(i){return console.error(i),t}}function nb(e,t){try{return new Function(`return ${e.config.processing.post}`)()(t,Ee)}catch(i){return console.error(i),t}}function ib(e,t){try{return new Function(`return ${e}`)()(t,Ee)}catch(i){return console.error(i),t}}function rb(e,t,i,r){const l=mn(t,i,[],r),s=Object.keys(l),d=Object.values(l);try{return new Function(...s,`return \`${e}\`;`)(...d)}catch(o){return console.info(o),o.message}}function gn(e,t={}){const i=Object.keys(t),r=Object.values(t);try{return new Function(...i,`return \`${e}\`;`)(...r)}catch(l){throw i.length===0&&e.includes("$")?new Error("[formatSQL] insufficient params"):l}}function mn(e,t,i,r){const l={...t,...e},s={context:l,filters:r},d=i.reduce((o,c)=>(o[c.key]=gn(c.value,s),o),{});return b.merge({},{context:l,filters:r,sql_snippets:d})}function wr(e,t,i,r,l){try{const s=mn(t,i,r,l);return gn(e,s)}catch(s){return console.error(s),s.message}}function ab({sql:e,pre_process:t}){if(!t.trim())return e;try{return new Function(`return ${t}`)()({sql:e},Ee)}catch(i){return console.error(i),e}}function lb(e,t){if(!e.trim())return t;try{return new Function(`return ${e}`)()(t,Ee)}catch(i){return console.error(i),t}}async function sb({context:e,mock_context:t,sqlSnippets:i,query:r,filterValues:l},s){if(!r.sql)return[];const{type:d,key:o,sql:c,pre_process:p,post_process:f}=r,y=mn(e,t,i,l),h=gn(c,y),x=ab({sql:h,pre_process:p});let C=await re.getRequest("POST",s)("/query",{type:d,key:o,query:x},{});return C=lb(f,C),C}async function ob({context:e,mock_context:t,query:i,filterValues:r,datasource:l},s){const{type:d,key:o,name:c,pre_process:p,post_process:f}=i;let y=eb(p,e,t,r);console.groupCollapsed(`Request config for: ${c}`),console.log(y),console.groupEnd(),y=tb(l,y);const h=JSON.stringify(y),x=await re.getRequest("POST",s)("/query",{type:d,key:o,query:h},{});let C=nb(l,x);return C=ib(f,C),C}async function fn(){try{return(await re.getRequest("POST")("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}})).data}catch(e){return console.error(e),[]}}const db=m.types.model("QueryModel",{id:m.types.string,name:m.types.string,type:m.types.enumeration("DataSourceType",[F.Postgresql,F.MySQL,F.HTTP]),key:m.types.string,sql:m.types.string,pre_process:m.types.optional(m.types.string,""),post_process:m.types.optional(m.types.string,""),run_by:m.types.optional(m.types.array(m.types.string),[])}).views(e=>({get valid(){return e.id&&e.type&&e.key&&e.name?e.type===F.HTTP?!!e.pre_process:!!e.sql:!1},get json(){const{id:t,name:i,type:r,key:l,sql:s,run_by:d,pre_process:o,post_process:c}=e;return ht({id:t,key:l,sql:s,name:i,type:r,run_by:d,pre_process:o,post_process:c})},get conditionOptions(){if(!m.isAlive(e))return[];const{context:t,mock_context:i,filterValues:r}=m.getRoot(e).payloadForSQL,l=Object.keys({...i,...t}).map(o=>`context.${o}`),s=Object.keys(r).map(o=>`filters.${o}`);return[...l,...s].map(o=>({label:o.split(".")[1],value:o,group:b.capitalize(o.split(".")[0])}))},get unmetRunByConditions(){if(!m.isAlive(e))return[];const{run_by:t}=e;if(t.length===0)return[];const{context:i,mock_context:r,filterValues:l}=m.getRoot(e).payloadForSQL,s={context:{...r,...i},filters:l};return t.filter(d=>{const o=b.get(s,d);return Array.isArray(o)?o.length===0:typeof o=="number"?Number.isNaN(o):!o})}})).views(e=>({get runByConditionsMet(){return e.unmetRunByConditions.length===0},get conditionNames(){if(e.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:t}=m.getRoot(e).filters,i=e.unmetRunByConditions.filter(l=>l.startsWith("context.")).map(l=>l.split("context.")[0]),r=e.unmetRunByConditions.filter(l=>l.startsWith("filters.")).map(l=>b.get({filters:t},l)).filter(l=>!!l);return{context:i,filters:r}}})).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}})),_r=m.types.compose("QueryModel",db,m.types.model({state:m.types.optional(m.types.enumeration(["idle","loading","error"]),"idle"),data:m.types.optional(m.types.array(m.types.frozen()),[]),error:m.types.frozen()})).views(e=>({get formattedSQL(){const{context:t,mock_context:i,sqlSnippets:r,filterValues:l}=m.getRoot(e).payloadForSQL;return wr(e.sql,t,i,r,l)},get typedAsSQL(){return[F.Postgresql,F.MySQL].includes(e.type)},get typedAsHTTP(){return[F.HTTP].includes(e.type)},get datasource(){const{key:t,type:i}=e;return m.getRoot(e).datasources.find({type:i,key:t})}})).views(e=>({get stateMessage(){if(e.state!=="idle")return"";if(!e.runByConditionsMet){const{context:t,filters:i}=e.conditionNames;if(t.length===0&&i.length===0)return"Waiting";const r=[];return t.length>0&&r.push(`context: ${t.join(", ")}`),i.length>0&&r.push(`filter${i.length>1?"s":""}: ${i.join(", ")}`),r.length===2&&r.splice(1,0,"and"),r.unshift("Waiting for"),r.join(" ")}return e.data.length>0?"":"Empty Data"}})).volatile(()=>({controller:new AbortController})).actions(e=>({runSQL:m.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:i,mock_context:r,sqlSnippets:l,filterValues:s}=m.getRoot(e).payloadForSQL;e.data=yield*m.toGenerator(sb({context:i,mock_context:r,sqlSnippets:l,title:e.name,query:e.json,filterValues:s},e.controller.signal)),e.state="idle",e.error=null}catch(i){if(!xe.isCancel(i)){e.data.length=0;const r=b.get(i,"message","unkown error");e.error=b.get(i,"response.data.detail.message",r),e.state="error"}}}}),runHTTP:m.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:i,mock_context:r,filterValues:l}=m.getRoot(e).payloadForSQL;e.data=yield*m.toGenerator(ob({context:i,mock_context:r,query:e.json,filterValues:l,datasource:e.datasource},e.controller.signal)),e.state="idle",e.error=null}catch(i){if(console.error(i),!xe.isCancel(i)){e.data.length=0;const r=b.get(i,"message","unkown error");e.error=b.get(i,"response.data.detail.message",r),e.state="error"}}}})})).actions(e=>({fetchData:e.typedAsHTTP?e.runHTTP:e.runSQL,beforeDestroy(){var t;(t=e.controller)==null||t.abort()}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>{var t,i;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}--${(i=e.datasource)==null?void 0:i.id}`},e.fetchData,{fireImmediately:!0,delay:0}))}})),Sr=m.types.model("QueriesModel",{current:m.types.optional(m.types.array(_r),[])}).views(e=>({get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(i=>i.id===t)},get options(){const t=e.current.map(i=>({value:i.id,label:i.name,_type:"query"}));return b.sortBy(t,i=>i.label.toLowerCase())}})).views(e=>({get json(){return e.current.filter(t=>t.id).map(t=>t.json)}})).actions(e=>({replace(t){e.current=m.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},replaceByIndex(t,i){e.current.splice(t,1,i)},downloadAllData(){const t=e.current.map(({name:i,data:r})=>({id:i,data:r.toJSON()}));Yf(t)},downloadDataByQueryID(t){const i=e.findByID(t);if(!i){console.log("[downloadDataByQueryID] query not found");return}const{name:r,data:l}=i,s=Cr(l);Rf(r,s)},refetchDataByQueryID(t){const i=e.findByID(t);if(!i){console.error(new Error(`[downloadDataByQueryID] query by ID[${t}] not found`));return}return i.fetchData()},removeQuery(t){const i=e.current.find(r=>r.id===t);i&&(m.detach(i),e.current.remove(i))}})),Tr=m.types.model("SQLSnippetModel",{key:m.types.string,value:m.types.string}).views(e=>({get json(){const{key:t,value:i}=e;return{key:t,value:i}},isADuplicatedKey(t){return!t||t===e.key?!1:!!m.getParent(e,2).findByKey(t)}})).actions(e=>({setKey(t){e.key=t},setValue(t){e.value=t}})),Dr=m.types.model("SQLSnippetsModel",{current:m.types.optional(m.types.array(Tr),[])}).views(e=>({get json(){return e.current.map(t=>t.json)},get options(){const t=e.current.map(i=>({label:i.key,value:i.key,_type:"sql_snippet"}));return b.sortBy(t,i=>i.label.toLowerCase())},get record(){return e.current.reduce((t,i)=>(t[i.key]=i.value,t),{})},get firstKey(){if(e.current.length!==0)return e.current[0].key},findByKey(t){return e.current.find(i=>i.key===t)}})).actions(e=>({replace(t){e.current=m.cast(t)},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByKey(t){const i=e.current.findIndex(r=>r.key===t);i>=0&&e.current.splice(i,1)},replaceByIndex(t,i){e.current.splice(t,1,i)}})),kr=m.types.model("ContextModel",{current:m.types.optional(m.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,i){e.current[t]=i}})),ub=m.types.model({data:m.types.optional(m.types.frozen(),[]),state:m.types.optional(m.types.enumeration(["idle","loading","error"]),"idle"),error:m.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get sql(){const t=m.getParent(e,1),{type:i,table_name:r,table_schema:l}=t;if(i===F.MySQL)return`
270
270
  SELECT ordinal_position, column_key, column_name, column_type, is_nullable, column_default, column_comment
271
271
  FROM information_schema.columns
272
272
  WHERE table_name = '${r}' AND table_schema = '${l}'
@@ -329,15 +329,15 @@
329
329
  `},get countSql(){const{table_name:t,table_schema:i}=e.keywords;return`
330
330
  SELECT count(*) AS total
331
331
  FROM ${i}.${t}
332
- `}})).actions(e=>({setPage(t){e.page=t},resetPage(){e.page=1},setLimit(t){e.limit=t}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>e.keywordString,e.resetPage,{fireImmediately:!1,delay:0})),m.addDisposer(e,$.reaction(()=>e.limit,e.resetPage,{fireImmediately:!1,delay:0}))}})),gb=m.types.model("DataSourceModel",{id:m.types.string,type:m.types.enumeration("DataSourceType",[F.HTTP,F.MySQL,F.Postgresql]),key:m.types.string,config:m.types.frozen(),tables:m.types.optional(pb,{}),columns:m.types.optional(ub,{}),tableData:m.types.optional(hb,{}),indexes:m.types.optional(cb,{}),table_schema:m.types.optional(m.types.string,""),table_name:m.types.optional(m.types.string,"")}).volatile(()=>({controllers:{tables:new AbortController,columns:new AbortController,indexes:new AbortController,tableData:new AbortController}})).actions(e=>({setKeywords(t,i){e.table_schema=t,e.table_name=i}})).actions(e=>({initKeywords(){if(e.tables.empty)return;const t=Object.keys(e.tables.data)[0],i=e.tables.data[t][0].table_name;e.setKeywords(t,i)}})).actions(e=>{const t=m.flow(function*(){var i;(i=e.controllers.tables)==null||i.abort(),e.controllers.tables=new AbortController,e.tables.state="loading";try{const r=yield*m.toGenerator(re.getRequest("POST",e.controllers.tables.signal)("/query",{type:e.type,key:e.key,query:e.tables.sql},{}));e.tables.data=b.groupBy(r,"table_schema"),e.tables.state="idle",e.tables.error=null,e.initKeywords()}catch(r){if(!xe.isCancel(r)){e.tables.data={};const l=b.get(r,"message","unkown error");e.tables.error=b.get(r,"response.data.detail.message",l),e.tables.state="error"}}});return{loadTables:t,loadTablesIfEmpty(){e.tables.empty&&t()},loadColumns:m.flow(function*(){var i;(i=e.controllers.columns)==null||i.abort(),e.controllers.columns=new AbortController,e.columns.state="loading";try{e.columns.data=yield*m.toGenerator(re.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(r){if(xe.isCancel(r))e.columns.state="idle",e.columns.error=null;else{e.columns.data=[];const l=b.get(r,"message","unkown error");e.columns.error=b.get(r,"response.data.detail.message",l),e.columns.state="error"}}}),loadIndexes:m.flow(function*(){var i;(i=e.controllers.indexes)==null||i.abort(),e.controllers.indexes=new AbortController,e.indexes.state="loading";try{e.indexes.data=yield*m.toGenerator(re.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(r){if(xe.isCancel(r))e.indexes.state="idle",e.indexes.error=null;else{e.indexes.data=[];const l=b.get(r,"message","unkown error");e.indexes.error=b.get(r,"response.data.detail.message",l),e.indexes.state="error"}}}),loadTableData:m.flow(function*(){var r;(r=e.controllers.tableData)==null||r.abort(),e.controllers.tableData=new AbortController;const i=e.tableData;i.state="loading";try{i.data=yield*m.toGenerator(re.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:i.sql},{}));const[{total:l}]=yield*m.toGenerator(re.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:i.countSql},{}));i.total=Number(l),i.state="idle",i.error=null}catch(l){if(xe.isCancel(l))i.state="idle",i.error=null;else{i.data=[];const s=b.get(l,"message","unkown error");i.error=b.get(l,"response.data.detail.message",s),i.state="error"}}})}}).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>e.columns.sql,e.loadColumns,{fireImmediately:!1,delay:500}))}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>e.indexes.sql,e.loadIndexes,{fireImmediately:!1,delay:500})),m.addDisposer(e,$.reaction(()=>e.tableData.sql,e.loadTableData,{fireImmediately:!1,delay:0}))}})),mb=m.types.model("DataSourcesModel",{list:m.types.optional(m.types.array(gb),[])}).views(e=>({find({type:t,key:i}){return e.list.find(r=>r.key===i&&r.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 gt(e){return{label:e,value:e,_type:"ACTION",_action_type:e,Icon:null,children:null}}function fb(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 bb=m.types.model("EditorModel",{path:m.types.optional(m.types.frozen(),[]),settings_open:m.types.optional(m.types.boolean,!1)}).views(e=>({get navOptions(){const{filters:t,views:i,sqlSnippets:r,queries:l}=m.getRoot(e);return[{label:"Global Variables",value:"_GLOBAL_VARS_",_type:"global_variables",Icon:I.IconVariable},{label:"Mock Context",value:"_MOCK_CONTEXT_",Icon:I.IconCodeDots,_type:"mock_context"},{label:"Filters",value:"_FILTERS_",Icon:I.IconFilter,children:[...t.options,gt("_Add_A_Filter_")],_type:"GROUP"},{label:"SQL Snipepts",value:"_SQL_SNIPPETS_",Icon:I.IconCopy,children:[...r.options,gt("_Add_A_SQL_SNIPPET_")],_type:"GROUP"},{label:"Queries",value:"_QUERIES_",Icon:I.IconDatabase,children:[...l.options,gt("_Add_A_QUERY_")],_type:"GROUP"},{label:"Views",value:"_VIEWS_",Icon:I.IconBoxMultiple,children:[...i.editorOptions,gt("_Add_A_VIEW_")],_type:"GROUP"}]},isOptionActive(t,i){return t.length===0?!1:t[t.length-1]===i.value},isOptionOpened(t){const{path:i}=e;return i.length===0||!t.children||t.children.length===0?!1:i.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 i=fb(t);i&&e.setPath(i)}})),yb=m.types.model("MockContextModel",{current:m.types.optional(m.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,i){e.current[t]=i}})),vb=m.types.model("PanelLayoutModel",{x:m.types.number,y:m.types.maybeNull(m.types.number),w:m.types.number,h:m.types.number,moved:m.types.optional(m.types.boolean,!1),static:m.types.optional(m.types.boolean,!1)}).views(e=>({get json(){const{x:t,y:i,w:r,h:l,moved:s}=e;return{h:l,w:r,x:t,y:i===null?0:i,moved:s,static:e.static}}})).actions(e=>({set(t){const{x:i,y:r,w:l,h:s,moved:o}=t;e.x=i,e.y=r,e.w=l,e.h=s,e.moved=!!o,e.static=!!t.static}})),xb=m.types.model("PanelStyleBorderModel",{enabled:m.types.boolean}).views(e=>({get json(){const{enabled:t}=e;return{enabled:t}}})).actions(e=>({setEnabled(t){e.enabled=t}})),Cb=m.types.model("PanelStyleModel",{border:xb}).views(e=>({get json(){const{border:t}=e;return{border:t.json}}})).actions(e=>({})),wb=m.types.model("PanelVizModel",{type:m.types.string,conf:m.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}})),_b=m.types.model("VariableModel",{name:m.types.string,size:m.types.string,weight:m.types.string,color:m.types.union(m.types.model({type:m.types.literal("static"),staticColor:m.types.string}),m.types.model({type:m.types.literal("continuous"),valueRange:m.types.array(m.types.number),colorRange:m.types.array(m.types.string)}),m.types.model({type:m.types.literal("piecewise")})),formatter:m.types.model({output:m.types.enumeration("Output",["number","percent"]),average:m.types.optional(m.types.boolean,!1),mantissa:m.types.number,trimMantissa:m.types.optional(m.types.boolean,!1)}),data_field:m.types.string,aggregation:m.types.union(m.types.model({type:m.types.enumeration(["none","sum","mean","median","min","max","CV","std"]),config:m.types.frozen()}),m.types.model({type:m.types.literal("quantile"),config:m.types.model({p:m.types.number})}))}).views(e=>({get json(){const{name:t,size:i,weight:r,color:l,formatter:s,data_field:o,aggregation:d}=e;return b.cloneDeep({name:t,size:i,color:l,weight:r,formatter:s,data_field:o,aggregation:d})}}));class Sb{constructor(t){D(this,"origin");D(this,"copy");this.origin=t,this.copy=m.clone(t),$.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!b.isEqual(m.getSnapshot(this.origin),m.getSnapshot(this.copy))}commit(){m.applySnapshot(this.origin,m.getSnapshot(this.copy))}update(t){m.applySnapshot(this.copy,t)}}const Tb=e=>new Sb(e),Ir=m.types.model({id:m.types.string,title:m.types.string,description:m.types.string,layout:vb,queryID:m.types.string,viz:wb,style:Cb,variables:m.types.optional(m.types.array(_b),[])}).views(e=>({get query(){return m.getParentOfType(e,mt).queries.findByID(e.queryID)},get json(){const{id:t,title:i,description:r,queryID:l}=e;return{id:t,viz:e.viz.json,style:e.style.json,title:i,layout:e.layout.json,queryID:l,variables:e.variables.map(s=>s.json),description:r}}})).actions(e=>({setID(t){e.id=t},setTitle(t){e.title=t},setDescription(t){e.description=t},setQueryID(t){if(m.getParentOfType(e,mt).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(){m.getParent(e,2).removeByID(e.id)}})).actions(e=>({moveToView(t,i){m.getRoot(e).views.findByID(t).removePanelID(e.id),m.getRoot(e).views.findByID(i).appendPanelID(e.id),m.getRoot(e).editor.setPath(["_VIEWS_",i,"_PANELS_",e.id])}}));function Mr(e){return{id:e,layout:{x:0,y:1/0,w:3,h:15},title:e,description:"<p></p>",queryID:"",viz:{type:tn.name,conf:tn.createConfig()},style:{border:{enabled:!0}}}}const Ar=m.types.model("PanelsModel",{list:m.types.optional(m.types.array(Ir),[])}).views(e=>({get json(){return e.list.map(t=>t.json)},findByID(t){return e.list.find(i=>i.id===t)},get idMap(){const t=new Map;return e.list.forEach(i=>{t.set(i.id,i)}),t}})).views(e=>({panelsByIDs(t){const i=[];t.forEach(l=>{const s=e.idMap.get(l);s?i.push(s):console.warn(`Panel is not found, id:${l}`)});const r=i.map(l=>({...l.layout.json,i:l.id}));return{panels:i,layouts:r}}})).views(e=>({editorOptions(t,i){const{panels:r}=e.panelsByIDs(i);r.length!==i.length&&console.warn(`Unfulfilled panels for View[${t}]`);const l=r.map(o=>({label:o.title?o.title:b.capitalize(o.viz.type),value:o.id,_type:"panel",parentID:t})),s="_Add_A_PANEL_";return l.push({label:s,value:s,_type:"ACTION",_action_type:s,parentID:t,Icon:null,children:null}),l}})).actions(e=>({replace(t){e.list=m.castToSnapshot(t)},append(t){e.list.push(t)},remove(t){e.list.splice(t,1)},removeByID(t){const i=e.list.findIndex(r=>r.id===t);i!==-1&&e.list.splice(i,1)},duplicateByID(t){const i=e.list.find(l=>l.id===t);if(!i){console.error(new Error(`[duplicate panel] Can't find a panel by id[${t}]`));return}const r=new Date().getTime().toString();return e.list.push({...i.json,id:r,layout:{...i.layout,y:1/0,moved:!1}}),r},replaceByIndex(t,i){e.list.splice(t,1,i)}})),zr=m.types.model("ViewModel_Division",{_name:m.types.literal(O.Division)}).views(e=>({get json(){const{_name:t}=e;return{_name:t}}})).actions(e=>({})),Db=()=>zr.create({_name:O.Division}),bn={enabled:!1,func_content:["function text({ filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
333
- `)},kb=m.types.model("CustomModalTitleModel",{enabled:m.types.optional(m.types.boolean,!1),func_content:m.types.optional(m.types.string,"")}).views(e=>({get json(){const{enabled:t,func_content:i}=e;return{enabled:t,func_content:i}},get value(){const{enabled:t,func_content:i}=e,r=m.getParent(e,2),l=m.getRoot(e);if(!t)return r.name;try{const s={filters:l.filters.values,context:l.context.current};return new Function(`return ${i}`)()(s)}catch(s){return console.error(s),r.name}}})).actions(e=>({setEnabled(t){e.enabled=t},setFuncContent(t){e.func_content=t},replace({enabled:t,func_content:i}){e.enabled=t,e.func_content=i}})),Vr=m.types.model("ViewModel_Modal",{_name:m.types.literal(O.Modal),width:m.types.string,height:m.types.string,custom_modal_title:m.types.optional(kb,bn)}).views(e=>({get json(){const{_name:t,width:i,height:r,custom_modal_title:l}=e;return{_name:t,width:i,height:r,custom_modal_title:l.json}}})).actions(e=>({setWidth(t){e.width=t},setHeight(t){e.height=t}})),Ib=()=>Vr.create({_name:O.Modal,width:"90vw",height:"90vh"}),Mb=m.types.model("ViewModel_Tabs_Tab",{id:m.types.identifier,name:m.types.string,view_id:m.types.string,color:m.types.optional(m.types.string,"")}).views(e=>({get json(){const{id:t,name:i,view_id:r,color:l}=e;return{id:t,name:i,color:l,view_id:r}}})).actions(e=>({setName(t){e.name=t},setViewID(t){e.view_id=t},setColor(t){e.color=t}})),Lr=m.types.model("ViewModel_Tabs",{_name:m.types.literal(O.Modal),tabs:m.types.optional(m.types.array(Mb),[]),variant:m.types.optional(m.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:m.types.optional(m.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:m.types.optional(m.types.boolean,!1)}).views(e=>({get json(){const{_name:t,variant:i,orientation:r,tabs:l,grow:s}=e;return{grow:s,tabs:l.map(o=>o.json),_name:t,variant:i,orientation:r}}})).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=m.cast(t)},addTab(){const t=U.randomId(),i={id:t,name:t,view_id:""};e.tabs.push(i)},removeTab(t){e.tabs.splice(t,1)}})),Ab=()=>Lr.create({_name:O.Modal,tabs:[]}),Er=m.types.model({id:m.types.identifier,name:m.types.string,type:m.types.enumeration("EViewComponentType",[O.Division,O.Modal,O.Tabs]),config:m.types.union(zr,Vr,Lr),panelIDs:m.types.optional(m.types.array(m.types.string),[])}).views(e=>({get json(){const{id:t,name:i,type:r,config:l}=e;return{id:t,name:i,type:r,config:l.json,panelIDs:e.panelIDs}}})).actions(e=>({setName(t){e.name=t},setType(t){if(e.type!==t){switch(t){case O.Division:e.config=Db();break;case O.Modal:e.config=Ib();break;case O.Tabs:e.config=Ab();break}e.type=t}},appendPanelID(t){e.panelIDs.push(t)},removePanelID(t){const i=e.panelIDs.filter(r=>r!==t);e.panelIDs.length=0,e.panelIDs.push(...i)}})).actions(e=>({})),Pr=m.types.model("ViewsModel",{current:m.types.optional(m.types.array(Er),[]),visibleViewIDs:m.types.array(m.types.string),idOfVIE:m.types.string}).views(e=>({get json(){return e.current.map(t=>ht(t.json))},get idMap(){const t=new Map;return e.current.forEach(i=>{t.set(i.id,i)}),t},findByID(t){return e.current.find(i=>i.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:i})=>i===t)},get visibleViews(){const t=new Set(e.visibleViewIDs);return e.current.filter(({id:i})=>t.has(i))},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=m.getRoot(e).panels;return e.current.map(i=>({label:i.name,value:i.id,_type:"view",children:t.editorOptions(i.id,i.panelIDs)}))}})).actions(e=>({replace(t){e.current.replace(t)},addANewView(t,i,r,l){e.current.push({id:t,name:i,type:r,config:l,panelIDs:[]})},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const i=e.current.findIndex(r=>r.id===t);i!==-1&&e.current.splice(i,1)},replaceByIndex(t,i){e.current.splice(t,1,i)},setIDOfVIE(t){e.idOfVIE=t,e.visibleViewIDs.length=0,e.visibleViewIDs.push(t)},appendToVisibles(t){new Set(e.visibleViewIDs.map(r=>r)).has(t)||e.visibleViewIDs.push(t)}})).actions(e=>({addARandomNewView(){const t=new Date().getTime().toString();e.addANewView(t,O.Division,O.Division,{_name:O.Division}),e.setIDOfVIE(t)},removeVIE(){e.current.length!==1&&(e.removeByID(e.idOfVIE),e.setIDOfVIE(e.current[0].id))},rmVisibleViewID(t){const i=e.visibleViewIDs.findIndex(r=>r===t);i!==-1&&e.visibleViewIDs.splice(i,1)}}));function yn(e){const t=e.length>0?[e[0].id]:[],i=e.length>0?e[0].id:"";return{current:e.map(l=>{const{_name:s=l.type}=l.config;return{...l,config:{...l.config,_name:s},panelIDs:l.panelIDs}}),visibleViewIDs:t,idOfVIE:i}}const zb=m.types.model({id:m.types.identifier,name:m.types.string,group:m.types.string,version:m.types.string,datasources:mb,filters:yr,queries:Sr,sqlSnippets:Dr,views:Pr,panels:Ar,context:kr,mock_context:yb,editor:bb,origin:m.types.maybe(m.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!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get queriesChanged(){const t="queries.current",i=m.getSnapshot(b.get(e,t)).map(r=>b.pick(r,["id","name","key","type","sql","run_by","pre_process","post_process"]));return!b.isEqual(i,b.get(e.origin,t))},get sqlSnippetsChanged(){const t="sqlSnippets.current";return!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get viewsChanged(){const t="views.current";return!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get panelsChanged(){const t="panels.list";return!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get mockContextChanged(){const t="mock_context.current";return!b.isEqual(b.get(e,t),b.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:i,data:r})=>({id:i,data:r})).reduce((i,r)=>(i[r.id]=r.data,i),{})},getDataStuffByID(t){const i=e.queries.findByID(t);return i?{data:i.data.toJSON(),dataProxy:i.data,len:i.data.length,state:i.state,error:i.error}:{data:[],dataProxy:null,len:0,state:"idle",error:void 0}},getDataStateByID(t){var i;return((i=e.queries.findByID(t))==null?void 0:i.state)??[]},getDataErrorByID(t){var i;return((i=e.queries.findByID(t))==null?void 0:i.error)??[]}})).views(e=>({findQueryUsage(t){const i=e.panels.idMap,r=e.views.current.flatMap(o=>o.panelIDs.map(d=>i.get(d)).filter(d=>(d==null?void 0:d.queryID)===t).map(d=>({type:"panel",id:d.id,label:d.title?d.title:d.viz.type,views:[{id:o.id,label:o.name}]}))),l=e.views.idMap,s=e.filters.current.filter(o=>b.get(o,"config.options_query_id")===t).map(o=>({type:"filter",id:o.id,label:o.label,views:o.visibleInViewsIDs.map(d=>{var c;return{id:d,label:((c=l.get(d))==null?void 0:c.name)??d}})}));return r.concat(s)}})).actions(e=>({duplicatePanelByID(t,i){var l;const r=e.panels.duplicateByID(t);r&&((l=e.views.findByID(i))==null||l.appendPanelID(r))},removePanelByID(t,i){var r;e.panels.removeByID(t),(r=e.views.findByID(i))==null||r.removePanelID(t)},addANewPanel(t){var r;const i=new Date().getTime().toString();e.panels.append(Mr(i)),(r=e.views.findByID(t))==null||r.appendPanelID(i)}})).actions(e=>({reset(){m.applySnapshot(e.filters.current,e.origin.filters.current),m.applySnapshot(e.queries.current,e.origin.queries.current),m.applySnapshot(e.sqlSnippets.current,e.origin.sqlSnippets.current),m.applySnapshot(e.views.current,e.origin.views.current),m.applySnapshot(e.panels.list,e.origin.panels.list),e.mock_context.current=e.origin.mock_context.current},resetFilters(){m.applySnapshot(e.filters.current,e.origin.filters.current)},updateCurrent(t){const{name:i,group:r,version:l,filters:s,views:o,panels:d,definition:{queries:c,sqlSnippets:p,mock_context:f={}}}=t;e.name=i,e.group=r,e.version=l,m.applySnapshot(e.filters.current,s),m.applySnapshot(e.views.current,yn(o).current),m.applySnapshot(e.panels.list,d),m.applySnapshot(e.queries.current,c),m.applySnapshot(e.sqlSnippets.current,p),e.mock_context.current=f}})),mt=m.types.snapshotProcessor(zb,{preProcessor(e){return{...e,origin:e}},postProcessor(e){delete e.origin;const t=m.castToSnapshot(e.queries.current.map(i=>b.pick(i,["id","key","type","sql"])));return b.defaults({},{queries:{current:t}},e)}});function Vb(e,t){t.filters&&m.applySnapshot(e.filters.current,t.filters)}function vn({id:e,name:t,group:i,version:r,filters:l,views:s,panels:o,definition:{queries:d,sqlSnippets:c,mock_context:p={}}},f,y){return mt.create({id:e,name:t,group:i,version:r,datasources:{list:f},filters:vr(l),queries:{current:d},sqlSnippets:{current:c},context:{current:y},mock_context:{current:p},views:yn(s),panels:{list:o},editor:{}})}function xn(e){return g.useCallback(t=>t.provideValue(W.pluginManager,e.pluginManager).provideValue(W.vizManager,e.vizManager).provideValue(W.colorManager,e.colorManager),[])}const kx="",Br={"> 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}}},Lb=_.observer(({saveDashboardChanges:e,headerSlot:t=null})=>{const i=Ya.useNavigate(),r=M(),l=()=>{const f=JSON.stringify(r.json,null,2);Qf(r.name,f)},s=()=>{i(`/dashboard/${r.id}`)},o=ce.useModals(),d=()=>{o.openConfirmModal({title:u(a.Group,{position:"left",children:[n(I.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:s,zIndex:320,withCloseButton:!1})},c=()=>{o.openConfirmModal({title:u(a.Group,{position:"left",children:[n(I.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:()=>r.reset(),zIndex:320,withCloseButton:!1})},p=r.changed;return n(a.Header,{height:60,px:"md",py:0,sx:{zIndex:299},children:u(a.Group,{position:"apart",sx:{height:60,position:"relative"},children:[n(a.Group,{children:n(a.Button,{size:"xs",color:p?"red":"green",leftIcon:n(I.IconArrowLeft,{size:20}),onClick:p?d:s,children:u(a.Group,{spacing:4,children:["End Editing",n(a.Text,{td:"underline",children:r.name})]})})}),t,u(a.Group,{position:"right",children:[n(a.Button,{variant:"filled",size:"xs",disabled:!r.views.VIE,onClick:()=>r.addANewPanel(r.views.idOfVIE),leftIcon:n(I.IconPlaylistAdd,{size:20}),children:"Add a Panel"}),u(a.Group,{spacing:0,sx:Br,children:[n(a.Tooltip,{label:"Download Schema",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:l,children:n(I.IconCode,{size:18})})}),n(a.Tooltip,{label:"Download Data",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:r.queries.downloadAllData,children:n(I.IconDownload,{size:18})})})]}),u(a.Group,{spacing:16,children:[n(a.Tooltip,{label:"Revert Changes",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",disabled:!p,onClick:c,children:n(I.IconRecycle,{size:20,color:"red"})})}),n(a.Button,{color:"green",variant:"filled",size:"xs",leftIcon:n(I.IconDeviceFloppy,{size:18}),onClick:e,disabled:!p,children:"Save Changes"})]})]})]})})});function Eb(e,t,i){const r=[];return e.filter(l=>"__INTERACTIONS"in l.viz.conf).forEach((l,s)=>{const o=t[l.id];o.data.interactions=b.get(o,"data.interactions",[]);const{__INTERACTIONS:d,__OPERATIONS:c,__TRIGGERS:p}=l.viz.conf;Object.entries(c).forEach(([f,y])=>{const{schemaRef:h,data:x}=y,{config:C}=x;switch(h){case"builtin:op:open-link":let T=C.urlTemplate.substring(0,100);C.urlTemplate.length>=20&&(T+="..."),o.type="interaction",o.data.interactions.push({schemaRef:h,urlTemplate:C.urlTemplate,shortURLTemplate:T});return;case"builtin:op:open_view":r.push({id:`OPERATION--${f}`,source:l.id,target:C.viewID,label:"Open View",style:{stroke:"rgba(0,0,0,0.8)"},type:"default"});return;case"builtin:op:set_filter_values":o.type="interaction",o.data.interactions.push({schemaRef:h,filters:Object.keys(C.dictionary).map(L=>({key:L,label:i[L]}))});return;case"builtin:op:clear_filter_values":o.type="interaction",o.data.interactions.push({schemaRef:h,filters:C.filter_keys.map(L=>({key:L,label:i[L]}))});return;default:return}})}),r}function Pb(e,t){const i=e.filters.keyLabelMap;return{edges:Eb(e.panels.list,t,i),edgeNodes:[]}}function Or(e,t,i){return e*t+e*i}function Bb(e,t,i){return e*t+(e-1)*i}const ft=25,Cn=40,$r=25,wn=350,Ob=150,$b=150,Nr=150,Gr=300,bt=40,qr=25,Nb=300;function Gb(e,t){const i=b.keyBy(t,l=>l.id),r=[];return e.current.forEach((l,s)=>{l.panelIDs.forEach((o,d)=>{const c=Or(d,bt,qr)+Cn,p=i[o];if(!p){r.push({id:o,_node_type:"panel",parentNode:l.id,data:{label:`!: ${o}`},position:{x:ft,y:c},sourcePosition:R.Position.Right,targetPosition:R.Position.Left,style:{width:Gr,height:bt}});return}const f=p.title.trim()?`${p.title}`:p.viz.type;r.push({id:p.id,_node_type:"panel",parentNode:l.id,data:{label:f},position:{x:ft,y:c},sourcePosition:R.Position.Right,targetPosition:R.Position.Left,style:{width:Gr,height:bt}})})}),r}const qb={[O.Division]:"Div",[O.Modal]:"Modal",[O.Tabs]:"Tabs"},Fb=ar;function jb(e){return e.current.map((i,r)=>{const l=Bb(i.panelIDs.length,bt,qr)+Cn+$r;let s=[];return i.type===O.Tabs&&(s=i.config.tabs.map(d=>d.view_id)),{id:i.id,_node_type:"view-root",_view_type:i.type,_view_level:0,_sub_view_ids:[],_tab_view_ids:s,data:{label:`${qb[i.type]}:${i.name}`},position:{x:0,y:0},sourcePosition:R.Position.Right,targetPosition:R.Position.Left,className:"light",style:{backgroundColor:Fb[i.type],width:wn,height:l}}})}function Wb(e){const t=b.keyBy(e,i=>i.id);e.forEach(i=>{i._node_type!=="view-root"||i._view_type!==O.Tabs||i._tab_view_ids.forEach(r=>{t[r].parentNode=i.id})})}function Ub(e){const t=jb(e.views);Wb(t);const i=Gb(e.views,e.panels.list);return[...t,...i]}function Rb({nodeMap:e,nodes:t,edges:i}){t.forEach(r=>{r._node_type!=="view-root"||r._view_type!==O.Tabs||(r.sourcePosition=R.Position.Bottom,r.style.width=wn+ft*2,r.style.height=$r+r._tab_view_ids.reduce((l,s)=>{const o=e[s];o.position.y=l,o.position.x=ft;const d=o.style.height;return l+d+20},Cn))})}function Qb({nodeMap:e,nodes:t,edges:i}){i.filter(r=>r.label==="Open View").forEach(r=>{const l=e[r.source],s=e[r.target];if(!l||!s||!l.parentNode)return;const o=e[l.parentNode];o._node_type!=="view-root"||s._node_type!=="view-root"||(s._view_level+=1+o._view_level,o._sub_view_ids.push(s.id))}),t.sort((r,l)=>r._node_type==="view-root"&&l._node_type==="view-root"?r._view_level-l._view_level:r._node_type!=="view-root"&&l._node_type!=="view-root"?0:r._node_type==="view-root"?-1:1)}function Yb({nodeMap:e,nodes:t,edges:i}){const r={};i.forEach(l=>{if(l.label!=="Open View")return;const s=e[l.source],o=e[l.target];if(s&&o&&s.parentNode){const d=e[s.parentNode],c=d.position.x,p=b.get(o,"style.height",0),f=Number(d.style.width);o.position.x=c+f+Nb,d._view_level===0&&o._sub_view_ids.length===0&&(s.sourcePosition=R.Position.Left,o.targetPosition=R.Position.Right,o.position.x*=-1);const h=o.position.x,x=b.get(r,h,0);o.position.y=x,r[h]=x+p+Nr}})}function Xb({nodeMap:e,nodes:t,edges:i}){const r=new Set,l=new Set;i.forEach(o=>{r.add(o.source),l.add(o.target)}),t.filter(o=>o._node_type!=="view-root"||o.id==="Main"||o.parentNode?!1:!r.has(o.id)&&!l.has(o.id)).forEach((o,d)=>{o.position.x=Or(d,wn,$b),o.position.y=0-Ob-Nr})}function Zb({nodeMap:e,nodes:t,edges:i}){const r={nodeMap:e,nodes:t,edges:i};return Xb(r),Qb(r),Rb(r),Yb(r),{nodes:t,edges:i}}function Kb(e){const t=Ub(e),i=b.keyBy(t,c=>c.id),{edges:r,edgeNodes:l}=Pb(e,i),s=[...t,...l],o=b.keyBy(s,c=>c.id),d={edges:b.uniqBy(r,c=>c.id),nodes:s,nodeMap:o};return Zb(d)}const Ix="",_n={"builtin:op:open-link":n(a.ThemeIcon,{color:"blue",size:20,radius:"xl",children:n(I.IconCircleDashed,{size:14})}),"builtin:op:set_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(I.IconCircleDot,{size:14})}),"builtin:op:clear_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(I.IconCircleOff,{size:14})})};function Jb(e){const t=[];return e.forEach(i=>{switch(i.schemaRef){case"builtin:op:open-link":t.push({key:i.urlTemplate,icon:_n[i.schemaRef],text:u(a.Group,{spacing:4,children:[n(a.Text,{children:"Open: "}),n(a.Text,{color:"dimmed",children:i.shortURLTemplate})]})});return;case"builtin:op:set_filter_values":i.filters.forEach(({key:r,label:l})=>{t.push({key:i.schemaRef+r,icon:_n[i.schemaRef],text:n(a.Group,{spacing:4,children:u(a.Text,{children:["Set Filter: ",l]})})})});return;case"builtin:op:clear_filter_values":i.filters.forEach(({key:r,label:l})=>{t.push({key:i.schemaRef+r,icon:_n[i.schemaRef],text:n(a.Group,{spacing:4,children:u(a.Text,{children:["Clear Filter: ",l]})})})});return}}),t}const Hb=g.memo(({data:e,isConnectable:t,sourcePosition:i=R.Position.Right,targetPosition:r=R.Position.Left,...l})=>{const s=g.useMemo(()=>Jb(e.interactions),[e.interactions]);return u(k,{children:[n(R.Handle,{type:"target",position:r,isConnectable:t}),n(a.Box,{sx:{position:"absolute",top:0,right:0},children:n(S.ChevronsUpRight,{size:12})}),u(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:s.map(o=>n(a.List.Item,{icon:o.icon,children:o.text},o.key))})})]}),n(R.Handle,{type:"source",position:i,isConnectable:t})]})}),Mx="",ey={interaction:Hb},ty=_.observer(()=>{const e=M(),{edges:t,nodes:i}=Kb(e);return u(R,{nodes:i,edges:t,onNodesChange:b.noop,onEdgesChange:b.noop,onConnect:b.noop,className:"interactions-viewer",fitView:!0,nodeTypes:ey,children:[n(R.MiniMap,{}),n(R.Controls,{}),n(R.Background,{})]})}),ny=_.observer(({opened:e,close:t})=>{const{freezeLayout:i}=g.useContext(we);return g.useEffect(()=>{i(e)},[e]),n(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:t,title:"Interactions",trapFocus:!0,onDragStart:r=>{r.stopPropagation()},styles:{body:{height:"90vh"},modal:{transform:"none !important"}},zIndex:300,children:n(ty,{})})});function iy({onClick:e,name:t,active:i,openSettings:r}){return u(a.Box,{sx:{position:"relative"},children:[n(a.UnstyledButton,{sx:l=>({display:"block",width:"100%",padding:l.spacing.xs,borderRadius:0,position:"relative",color:l.black,"&:hover":{backgroundColor:l.colors.gray[0]},backgroundColor:i?l.colors.gray[2]:"transparent"}),children:n(a.Group,{sx:{width:"calc(100% - 28px)"},onClick:e,children:n(a.Text,{size:"sm",children:t})})}),i&&n(a.Tooltip,{label:"Edit",position:"right",withinPortal:!0,children:n(a.ActionIcon,{onClick:r,variant:"light",color:"blue",sx:{position:"absolute",top:0,bottom:0,height:"100%",right:0,zIndex:0,borderRadius:0},children:n(I.IconAdjustments,{size:16})})})]})}const ry=_.observer(()=>{const e=M(),t=g.useCallback(r=>()=>e.views.setIDOfVIE(r),[e]),i=r=>{e.editor.open(["_VIEWS_",r])};return u(a.Box,{sx:{position:"relative"},children:[e.views.options.map(r=>n(iy,{active:e.views.idOfVIE===r.value,name:r.label,onClick:t(r.value),openSettings:()=>i(r.value)},r.value)),n(a.Divider,{variant:"dashed"}),n(a.Button,{variant:"subtle",rightIcon:n(I.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"})]})}),ay=_.observer(()=>{const e=M(),t=()=>{if(!e.queries.firstID){e.editor.open(["_QUERIES_",""]);return}e.editor.open(["_QUERIES_",e.queries.firstID])},i=()=>{if(!e.filters.firstID){e.editor.open(["_FILTERS_",""]);return}e.editor.open(["_FILTERS_",e.filters.firstID])},[r,l]=g.useState(!1),s=()=>l(!0),o=()=>l(!1);return u(a.Navbar,{p:0,width:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},children:[u(a.Navbar.Section,{children:[u(a.Group,{grow:!0,spacing:0,sx:{...Br,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:i,children:n(I.IconFilter,{size:20})})}),n(a.Tooltip,{label:"Queries",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:t,children:n(I.IconDatabase,{size:20})})}),n(a.Tooltip,{label:"Interactions Viewer",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:s,children:n(I.IconLink,{size:20})})})]}),n(ny,{opened:r,close:o})]}),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(ry,{})}),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(I.IconSettings,{size:20}),onClick:()=>e.editor.open([]),children:"Settings"})})})]})}),ly=_.observer(function({config:t}){return u(k,{children:[n(a.Checkbox,{checked:t.default_value,onChange:i=>t.setDefaultValue(i.currentTarget.checked),label:"Default Checked"}),n(Yt,{label:"Description",value:t.description,onChange:t.setDescription,styles:{root:{flexGrow:1,minHeight:"400px"}}})]})}),sy=[{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"}],oy=_.observer(function({config:t}){return u(k,{children:[u(a.Group,{children:[n(a.Checkbox,{checked:t.required,onChange:i=>t.setRequired(i.currentTarget.checked),label:"Required"}),n(a.Checkbox,{checked:t.clearable,onChange:i=>t.setClearable(i.currentTarget.checked),disabled:t.max_days>0,label:"Clearable"}),n(a.Checkbox,{checked:t.allowSingleDateInRange,onChange:i=>t.setAllowSingleDateInRange(i.currentTarget.checked),label:"Allow choosing 1 day"})]}),n(a.Select,{data:sy,label:"Display Format",value:t.inputFormat,onChange:t.setInputFormat}),n(Xn,{label:"Default Value",config:t,value:t.default_value,onChange:t.setDefaultValue}),n(a.NumberInput,{label:"Max Days",description:u(a.Group,{position:"apart",children:[n(a.Text,{children:"Set 0 to disable."}),u(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})]})}),Sn=_.observer(({value:e,onChange:t})=>{const i=M(),r=g.useMemo(()=>i.queries.options,[i.queries.current]),l=r.length===0;return n(a.Select,{label:"Pick a query",data:r,value:e,onChange:t,allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:l,error:l?"You need to add a query in Data Settings":void 0})}),dy=`
332
+ `}})).actions(e=>({setPage(t){e.page=t},resetPage(){e.page=1},setLimit(t){e.limit=t}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>e.keywordString,e.resetPage,{fireImmediately:!1,delay:0})),m.addDisposer(e,$.reaction(()=>e.limit,e.resetPage,{fireImmediately:!1,delay:0}))}})),gb=m.types.model("DataSourceModel",{id:m.types.string,type:m.types.enumeration("DataSourceType",[F.HTTP,F.MySQL,F.Postgresql]),key:m.types.string,config:m.types.frozen(),tables:m.types.optional(pb,{}),columns:m.types.optional(ub,{}),tableData:m.types.optional(hb,{}),indexes:m.types.optional(cb,{}),table_schema:m.types.optional(m.types.string,""),table_name:m.types.optional(m.types.string,"")}).volatile(()=>({controllers:{tables:new AbortController,columns:new AbortController,indexes:new AbortController,tableData:new AbortController}})).actions(e=>({setKeywords(t,i){e.table_schema=t,e.table_name=i}})).actions(e=>({initKeywords(){if(e.tables.empty)return;const t=Object.keys(e.tables.data)[0],i=e.tables.data[t][0].table_name;e.setKeywords(t,i)}})).actions(e=>{const t=m.flow(function*(){var i;(i=e.controllers.tables)==null||i.abort(),e.controllers.tables=new AbortController,e.tables.state="loading";try{const r=yield*m.toGenerator(re.getRequest("POST",e.controllers.tables.signal)("/query",{type:e.type,key:e.key,query:e.tables.sql},{}));e.tables.data=b.groupBy(r,"table_schema"),e.tables.state="idle",e.tables.error=null,e.initKeywords()}catch(r){if(!xe.isCancel(r)){e.tables.data={};const l=b.get(r,"message","unkown error");e.tables.error=b.get(r,"response.data.detail.message",l),e.tables.state="error"}}});return{loadTables:t,loadTablesIfEmpty(){e.tables.empty&&t()},loadColumns:m.flow(function*(){var i;(i=e.controllers.columns)==null||i.abort(),e.controllers.columns=new AbortController,e.columns.state="loading";try{e.columns.data=yield*m.toGenerator(re.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(r){if(xe.isCancel(r))e.columns.state="idle",e.columns.error=null;else{e.columns.data=[];const l=b.get(r,"message","unkown error");e.columns.error=b.get(r,"response.data.detail.message",l),e.columns.state="error"}}}),loadIndexes:m.flow(function*(){var i;(i=e.controllers.indexes)==null||i.abort(),e.controllers.indexes=new AbortController,e.indexes.state="loading";try{e.indexes.data=yield*m.toGenerator(re.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(r){if(xe.isCancel(r))e.indexes.state="idle",e.indexes.error=null;else{e.indexes.data=[];const l=b.get(r,"message","unkown error");e.indexes.error=b.get(r,"response.data.detail.message",l),e.indexes.state="error"}}}),loadTableData:m.flow(function*(){var r;(r=e.controllers.tableData)==null||r.abort(),e.controllers.tableData=new AbortController;const i=e.tableData;i.state="loading";try{i.data=yield*m.toGenerator(re.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:i.sql},{}));const[{total:l}]=yield*m.toGenerator(re.getRequest("POST",e.controllers.tableData.signal)("/query",{type:e.type,key:e.key,query:i.countSql},{}));i.total=Number(l),i.state="idle",i.error=null}catch(l){if(xe.isCancel(l))i.state="idle",i.error=null;else{i.data=[];const s=b.get(l,"message","unkown error");i.error=b.get(l,"response.data.detail.message",s),i.state="error"}}})}}).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>e.columns.sql,e.loadColumns,{fireImmediately:!1,delay:500}))}})).actions(e=>({afterCreate(){m.addDisposer(e,$.reaction(()=>e.indexes.sql,e.loadIndexes,{fireImmediately:!1,delay:500})),m.addDisposer(e,$.reaction(()=>e.tableData.sql,e.loadTableData,{fireImmediately:!1,delay:0}))}})),mb=m.types.model("DataSourcesModel",{list:m.types.optional(m.types.array(gb),[])}).views(e=>({find({type:t,key:i}){return e.list.find(r=>r.key===i&&r.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 gt(e){return{label:e,value:e,_type:"ACTION",_action_type:e,Icon:null,children:null}}function fb(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 bb=m.types.model("EditorModel",{path:m.types.optional(m.types.frozen(),[]),settings_open:m.types.optional(m.types.boolean,!1)}).views(e=>({get navOptions(){const{filters:t,views:i,sqlSnippets:r,queries:l}=m.getRoot(e);return[{label:"Global Variables",value:"_GLOBAL_VARS_",_type:"global_variables",Icon:I.IconVariable},{label:"Mock Context",value:"_MOCK_CONTEXT_",Icon:I.IconCodeDots,_type:"mock_context"},{label:"Filters",value:"_FILTERS_",Icon:I.IconFilter,children:[...t.options,gt("_Add_A_Filter_")],_type:"GROUP"},{label:"SQL Snipepts",value:"_SQL_SNIPPETS_",Icon:I.IconCopy,children:[...r.options,gt("_Add_A_SQL_SNIPPET_")],_type:"GROUP"},{label:"Queries",value:"_QUERIES_",Icon:I.IconDatabase,children:[...l.options,gt("_Add_A_QUERY_")],_type:"GROUP"},{label:"Views",value:"_VIEWS_",Icon:I.IconBoxMultiple,children:[...i.editorOptions,gt("_Add_A_VIEW_")],_type:"GROUP"}]},isOptionActive(t,i){return t.length===0?!1:t[t.length-1]===i.value},isOptionOpened(t){const{path:i}=e;return i.length===0||!t.children||t.children.length===0?!1:i.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 i=fb(t);i&&e.setPath(i)}})),yb=m.types.model("MockContextModel",{current:m.types.optional(m.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,i){e.current[t]=i}})),vb=m.types.model("PanelLayoutModel",{x:m.types.number,y:m.types.maybeNull(m.types.number),w:m.types.number,h:m.types.number,moved:m.types.optional(m.types.boolean,!1),static:m.types.optional(m.types.boolean,!1)}).views(e=>({get json(){const{x:t,y:i,w:r,h:l,moved:s}=e;return{h:l,w:r,x:t,y:i===null?0:i,moved:s,static:e.static}}})).actions(e=>({set(t){const{x:i,y:r,w:l,h:s,moved:d}=t;e.x=i,e.y=r,e.w=l,e.h=s,e.moved=!!d,e.static=!!t.static}})),xb=m.types.model("PanelStyleBorderModel",{enabled:m.types.boolean}).views(e=>({get json(){const{enabled:t}=e;return{enabled:t}}})).actions(e=>({setEnabled(t){e.enabled=t}})),Cb=m.types.model("PanelStyleModel",{border:xb}).views(e=>({get json(){const{border:t}=e;return{border:t.json}}})).actions(e=>({})),wb=m.types.model("PanelVizModel",{type:m.types.string,conf:m.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}})),_b=m.types.model("VariableModel",{name:m.types.string,size:m.types.string,weight:m.types.string,color:m.types.union(m.types.model({type:m.types.literal("static"),staticColor:m.types.string}),m.types.model({type:m.types.literal("continuous"),valueRange:m.types.array(m.types.number),colorRange:m.types.array(m.types.string)}),m.types.model({type:m.types.literal("piecewise")})),formatter:m.types.model({output:m.types.enumeration("Output",["number","percent"]),average:m.types.optional(m.types.boolean,!1),mantissa:m.types.number,trimMantissa:m.types.optional(m.types.boolean,!1)}),data_field:m.types.string,aggregation:m.types.union(m.types.model({type:m.types.enumeration(["none","sum","mean","median","min","max","CV","std"]),config:m.types.frozen()}),m.types.model({type:m.types.literal("quantile"),config:m.types.model({p:m.types.number})}))}).views(e=>({get json(){const{name:t,size:i,weight:r,color:l,formatter:s,data_field:d,aggregation:o}=e;return b.cloneDeep({name:t,size:i,color:l,weight:r,formatter:s,data_field:d,aggregation:o})}}));class Sb{constructor(t){D(this,"origin");D(this,"copy");this.origin=t,this.copy=m.clone(t),$.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!b.isEqual(m.getSnapshot(this.origin),m.getSnapshot(this.copy))}commit(){m.applySnapshot(this.origin,m.getSnapshot(this.copy))}update(t){m.applySnapshot(this.copy,t)}}const Tb=e=>new Sb(e),Ir=m.types.model({id:m.types.string,title:m.types.string,description:m.types.string,layout:vb,queryID:m.types.string,viz:wb,style:Cb,variables:m.types.optional(m.types.array(_b),[])}).views(e=>({get query(){return m.getParentOfType(e,mt).queries.findByID(e.queryID)},get json(){const{id:t,title:i,description:r,queryID:l}=e;return{id:t,viz:e.viz.json,style:e.style.json,title:i,layout:e.layout.json,queryID:l,variables:e.variables.map(s=>s.json),description:r}}})).actions(e=>({setID(t){e.id=t},setTitle(t){e.title=t},setDescription(t){e.description=t},setQueryID(t){if(m.getParentOfType(e,mt).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(){m.getParent(e,2).removeByID(e.id)}})).actions(e=>({moveToView(t,i){m.getRoot(e).views.findByID(t).removePanelID(e.id),m.getRoot(e).views.findByID(i).appendPanelID(e.id),m.getRoot(e).editor.setPath(["_VIEWS_",i,"_PANELS_",e.id])}}));function Mr(e){return{id:e,layout:{x:0,y:1/0,w:3,h:15},title:e,description:"<p></p>",queryID:"",viz:{type:tn.name,conf:tn.createConfig()},style:{border:{enabled:!0}}}}const Ar=m.types.model("PanelsModel",{list:m.types.optional(m.types.array(Ir),[])}).views(e=>({get json(){return e.list.map(t=>t.json)},findByID(t){return e.list.find(i=>i.id===t)},get idMap(){const t=new Map;return e.list.forEach(i=>{t.set(i.id,i)}),t}})).views(e=>({panelsByIDs(t){const i=[];t.forEach(l=>{const s=e.idMap.get(l);s?i.push(s):console.warn(`Panel is not found, id:${l}`)});const r=i.map(l=>({...l.layout.json,i:l.id}));return{panels:i,layouts:r}}})).views(e=>({editorOptions(t,i){const{panels:r}=e.panelsByIDs(i);r.length!==i.length&&console.warn(`Unfulfilled panels for View[${t}]`);const l=r.map(d=>({label:d.title?d.title:b.capitalize(d.viz.type),value:d.id,_type:"panel",parentID:t})),s="_Add_A_PANEL_";return l.push({label:s,value:s,_type:"ACTION",_action_type:s,parentID:t,Icon:null,children:null}),l}})).actions(e=>({replace(t){e.list=m.castToSnapshot(t)},append(t){e.list.push(t)},remove(t){e.list.splice(t,1)},removeByID(t){const i=e.list.findIndex(r=>r.id===t);i!==-1&&e.list.splice(i,1)},duplicateByID(t){const i=e.list.find(l=>l.id===t);if(!i){console.error(new Error(`[duplicate panel] Can't find a panel by id[${t}]`));return}const r=new Date().getTime().toString();return e.list.push({...i.json,id:r,layout:{...i.layout,y:1/0,moved:!1}}),r},replaceByIndex(t,i){e.list.splice(t,1,i)}})),zr=m.types.model("ViewModel_Division",{_name:m.types.literal(O.Division)}).views(e=>({get json(){const{_name:t}=e;return{_name:t}}})).actions(e=>({})),Db=()=>zr.create({_name:O.Division}),bn={enabled:!1,func_content:["function text({ filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
333
+ `)},kb=m.types.model("CustomModalTitleModel",{enabled:m.types.optional(m.types.boolean,!1),func_content:m.types.optional(m.types.string,"")}).views(e=>({get json(){const{enabled:t,func_content:i}=e;return{enabled:t,func_content:i}},get value(){const{enabled:t,func_content:i}=e,r=m.getParent(e,2),l=m.getRoot(e);if(!t)return r.name;try{const s={filters:l.filters.values,context:l.context.current};return new Function(`return ${i}`)()(s)}catch(s){return console.error(s),r.name}}})).actions(e=>({setEnabled(t){e.enabled=t},setFuncContent(t){e.func_content=t},replace({enabled:t,func_content:i}){e.enabled=t,e.func_content=i}})),Vr=m.types.model("ViewModel_Modal",{_name:m.types.literal(O.Modal),width:m.types.string,height:m.types.string,custom_modal_title:m.types.optional(kb,bn)}).views(e=>({get json(){const{_name:t,width:i,height:r,custom_modal_title:l}=e;return{_name:t,width:i,height:r,custom_modal_title:l.json}}})).actions(e=>({setWidth(t){e.width=t},setHeight(t){e.height=t}})),Ib=()=>Vr.create({_name:O.Modal,width:"90vw",height:"90vh"}),Mb=m.types.model("ViewModel_Tabs_Tab",{id:m.types.identifier,name:m.types.string,view_id:m.types.string,color:m.types.optional(m.types.string,"")}).views(e=>({get json(){const{id:t,name:i,view_id:r,color:l}=e;return{id:t,name:i,color:l,view_id:r}}})).actions(e=>({setName(t){e.name=t},setViewID(t){e.view_id=t},setColor(t){e.color=t}})),Lr=m.types.model("ViewModel_Tabs",{_name:m.types.literal(O.Modal),tabs:m.types.optional(m.types.array(Mb),[]),variant:m.types.optional(m.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:m.types.optional(m.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:m.types.optional(m.types.boolean,!1)}).views(e=>({get json(){const{_name:t,variant:i,orientation:r,tabs:l,grow:s}=e;return{grow:s,tabs:l.map(d=>d.json),_name:t,variant:i,orientation:r}}})).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=m.cast(t)},addTab(){const t=U.randomId(),i={id:t,name:t,view_id:""};e.tabs.push(i)},removeTab(t){e.tabs.splice(t,1)}})),Ab=()=>Lr.create({_name:O.Modal,tabs:[]}),Er=m.types.model({id:m.types.identifier,name:m.types.string,type:m.types.enumeration("EViewComponentType",[O.Division,O.Modal,O.Tabs]),config:m.types.union(zr,Vr,Lr),panelIDs:m.types.optional(m.types.array(m.types.string),[])}).views(e=>({get json(){const{id:t,name:i,type:r,config:l}=e;return{id:t,name:i,type:r,config:l.json,panelIDs:e.panelIDs}}})).actions(e=>({setName(t){e.name=t},setType(t){if(e.type!==t){switch(t){case O.Division:e.config=Db();break;case O.Modal:e.config=Ib();break;case O.Tabs:e.config=Ab();break}e.type=t}},appendPanelID(t){e.panelIDs.push(t)},removePanelID(t){const i=e.panelIDs.filter(r=>r!==t);e.panelIDs.length=0,e.panelIDs.push(...i)}})).actions(e=>({})),Pr=m.types.model("ViewsModel",{current:m.types.optional(m.types.array(Er),[]),visibleViewIDs:m.types.array(m.types.string),idOfVIE:m.types.string}).views(e=>({get json(){return e.current.map(t=>ht(t.json))},get idMap(){const t=new Map;return e.current.forEach(i=>{t.set(i.id,i)}),t},findByID(t){return e.current.find(i=>i.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:i})=>i===t)},get visibleViews(){const t=new Set(e.visibleViewIDs);return e.current.filter(({id:i})=>t.has(i))},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=m.getRoot(e).panels;return e.current.map(i=>({label:i.name,value:i.id,_type:"view",children:t.editorOptions(i.id,i.panelIDs)}))}})).actions(e=>({replace(t){e.current.replace(t)},addANewView(t,i,r,l){e.current.push({id:t,name:i,type:r,config:l,panelIDs:[]})},append(t){e.current.push(t)},remove(t){e.current.splice(t,1)},removeByID(t){const i=e.current.findIndex(r=>r.id===t);i!==-1&&e.current.splice(i,1)},replaceByIndex(t,i){e.current.splice(t,1,i)},setIDOfVIE(t){e.idOfVIE=t,e.visibleViewIDs.length=0,e.visibleViewIDs.push(t)},appendToVisibles(t){new Set(e.visibleViewIDs.map(r=>r)).has(t)||e.visibleViewIDs.push(t)}})).actions(e=>({addARandomNewView(){const t=new Date().getTime().toString();e.addANewView(t,O.Division,O.Division,{_name:O.Division}),e.setIDOfVIE(t)},removeVIE(){e.current.length!==1&&(e.removeByID(e.idOfVIE),e.setIDOfVIE(e.current[0].id))},rmVisibleViewID(t){const i=e.visibleViewIDs.findIndex(r=>r===t);i!==-1&&e.visibleViewIDs.splice(i,1)}}));function yn(e){const t=e.length>0?[e[0].id]:[],i=e.length>0?e[0].id:"";return{current:e.map(l=>{const{_name:s=l.type}=l.config;return{...l,config:{...l.config,_name:s},panelIDs:l.panelIDs}}),visibleViewIDs:t,idOfVIE:i}}const zb=m.types.model({id:m.types.identifier,name:m.types.string,group:m.types.string,version:m.types.string,datasources:mb,filters:yr,queries:Sr,sqlSnippets:Dr,views:Pr,panels:Ar,context:kr,mock_context:yb,editor:bb,origin:m.types.maybe(m.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!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get queriesChanged(){const t="queries.current",i=m.getSnapshot(b.get(e,t)).map(r=>b.pick(r,["id","name","key","type","sql","run_by","pre_process","post_process"]));return!b.isEqual(i,b.get(e.origin,t))},get sqlSnippetsChanged(){const t="sqlSnippets.current";return!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get viewsChanged(){const t="views.current";return!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get panelsChanged(){const t="panels.list";return!b.isEqual(m.getSnapshot(b.get(e,t)),b.get(e.origin,t))},get mockContextChanged(){const t="mock_context.current";return!b.isEqual(b.get(e,t),b.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:i,data:r})=>({id:i,data:r})).reduce((i,r)=>(i[r.id]=r.data,i),{})},getDataStuffByID(t){const i=e.queries.findByID(t);return i?{data:i.data.toJSON(),dataProxy:i.data,len:i.data.length,state:i.state,error:i.error}:{data:[],dataProxy:null,len:0,state:"idle",error:void 0}},getDataStateByID(t){var i;return((i=e.queries.findByID(t))==null?void 0:i.state)??[]},getDataErrorByID(t){var i;return((i=e.queries.findByID(t))==null?void 0:i.error)??[]}})).views(e=>({findQueryUsage(t){const i=e.panels.idMap,r=e.views.current.flatMap(d=>d.panelIDs.map(o=>i.get(o)).filter(o=>(o==null?void 0:o.queryID)===t).map(o=>({type:"panel",id:o.id,label:o.title?o.title:o.viz.type,views:[{id:d.id,label:d.name}]}))),l=e.views.idMap,s=e.filters.current.filter(d=>b.get(d,"config.options_query_id")===t).map(d=>({type:"filter",id:d.id,label:d.label,views:d.visibleInViewsIDs.map(o=>{var c;return{id:o,label:((c=l.get(o))==null?void 0:c.name)??o}})}));return r.concat(s)}})).actions(e=>({duplicatePanelByID(t,i){var l;const r=e.panels.duplicateByID(t);r&&((l=e.views.findByID(i))==null||l.appendPanelID(r))},removePanelByID(t,i){var r;e.panels.removeByID(t),(r=e.views.findByID(i))==null||r.removePanelID(t)},addANewPanel(t){var r;const i=new Date().getTime().toString();e.panels.append(Mr(i)),(r=e.views.findByID(t))==null||r.appendPanelID(i)}})).actions(e=>({reset(){m.applySnapshot(e.filters.current,e.origin.filters.current),m.applySnapshot(e.queries.current,e.origin.queries.current),m.applySnapshot(e.sqlSnippets.current,e.origin.sqlSnippets.current),m.applySnapshot(e.views.current,e.origin.views.current),m.applySnapshot(e.panels.list,e.origin.panels.list),e.mock_context.current=e.origin.mock_context.current},resetFilters(){m.applySnapshot(e.filters.current,e.origin.filters.current)},updateCurrent(t){const{name:i,group:r,version:l,filters:s,views:d,panels:o,definition:{queries:c,sqlSnippets:p,mock_context:f={}}}=t;e.name=i,e.group=r,e.version=l,m.applySnapshot(e.filters.current,s),m.applySnapshot(e.views.current,yn(d).current),m.applySnapshot(e.panels.list,o),m.applySnapshot(e.queries.current,c),m.applySnapshot(e.sqlSnippets.current,p),e.mock_context.current=f}})),mt=m.types.snapshotProcessor(zb,{preProcessor(e){return{...e,origin:e}},postProcessor(e){delete e.origin;const t=m.castToSnapshot(e.queries.current.map(i=>b.pick(i,["id","key","type","sql"])));return b.defaults({},{queries:{current:t}},e)}});function Vb(e,t){t.filters&&m.applySnapshot(e.filters.current,t.filters)}function vn({id:e,name:t,group:i,version:r,filters:l,views:s,panels:d,definition:{queries:o,sqlSnippets:c,mock_context:p={}}},f,y){return mt.create({id:e,name:t,group:i,version:r,datasources:{list:f},filters:vr(l),queries:{current:o},sqlSnippets:{current:c},context:{current:y},mock_context:{current:p},views:yn(s),panels:{list:d},editor:{}})}function xn(e){return g.useCallback(t=>t.provideValue(W.pluginManager,e.pluginManager).provideValue(W.vizManager,e.vizManager).provideValue(W.colorManager,e.colorManager),[])}const kx="",Br={"> 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}}},Lb=_.observer(({saveDashboardChanges:e,headerSlot:t=null})=>{const i=Ya.useNavigate(),r=M(),l=()=>{const f=JSON.stringify(r.json,null,2);Qf(r.name,f)},s=()=>{i(`/dashboard/${r.id}`)},d=ce.useModals(),o=()=>{d.openConfirmModal({title:u(a.Group,{position:"left",children:[n(I.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:s,zIndex:320,withCloseButton:!1})},c=()=>{d.openConfirmModal({title:u(a.Group,{position:"left",children:[n(I.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:()=>r.reset(),zIndex:320,withCloseButton:!1})},p=r.changed;return n(a.Header,{height:60,px:"md",py:0,sx:{zIndex:299},children:u(a.Group,{position:"apart",sx:{height:60,position:"relative"},children:[n(a.Group,{children:n(a.Button,{size:"xs",color:p?"red":"green",leftIcon:n(I.IconArrowLeft,{size:20}),onClick:p?o:s,children:u(a.Group,{spacing:4,children:["End Editing",n(a.Text,{td:"underline",children:r.name})]})})}),t,u(a.Group,{position:"right",children:[n(a.Button,{variant:"filled",size:"xs",disabled:!r.views.VIE,onClick:()=>r.addANewPanel(r.views.idOfVIE),leftIcon:n(I.IconPlaylistAdd,{size:20}),children:"Add a Panel"}),u(a.Group,{spacing:0,sx:Br,children:[n(a.Tooltip,{label:"Download Schema",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:l,children:n(I.IconCode,{size:18})})}),n(a.Tooltip,{label:"Download Data",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",onClick:r.queries.downloadAllData,children:n(I.IconDownload,{size:18})})})]}),u(a.Group,{spacing:16,children:[n(a.Tooltip,{label:"Revert Changes",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",size:"md",disabled:!p,onClick:c,children:n(I.IconRecycle,{size:20,color:"red"})})}),n(a.Button,{color:"green",variant:"filled",size:"xs",leftIcon:n(I.IconDeviceFloppy,{size:18}),onClick:e,disabled:!p,children:"Save Changes"})]})]})]})})});function Eb(e,t,i){const r=[];return e.filter(l=>"__INTERACTIONS"in l.viz.conf).forEach((l,s)=>{const d=t[l.id];d.data.interactions=b.get(d,"data.interactions",[]);const{__INTERACTIONS:o,__OPERATIONS:c,__TRIGGERS:p}=l.viz.conf;Object.entries(c).forEach(([f,y])=>{const{schemaRef:h,data:x}=y,{config:C}=x;switch(h){case"builtin:op:open-link":let T=C.urlTemplate.substring(0,100);C.urlTemplate.length>=20&&(T+="..."),d.type="interaction",d.data.interactions.push({schemaRef:h,urlTemplate:C.urlTemplate,shortURLTemplate:T});return;case"builtin:op:open_view":r.push({id:`OPERATION--${f}`,source:l.id,target:C.viewID,label:"Open View",style:{stroke:"rgba(0,0,0,0.8)"},type:"default"});return;case"builtin:op:set_filter_values":d.type="interaction",d.data.interactions.push({schemaRef:h,filters:Object.keys(C.dictionary).map(L=>({key:L,label:i[L]}))});return;case"builtin:op:clear_filter_values":d.type="interaction",d.data.interactions.push({schemaRef:h,filters:C.filter_keys.map(L=>({key:L,label:i[L]}))});return;default:return}})}),r}function Pb(e,t){const i=e.filters.keyLabelMap;return{edges:Eb(e.panels.list,t,i),edgeNodes:[]}}function Or(e,t,i){return e*t+e*i}function Bb(e,t,i){return e*t+(e-1)*i}const ft=25,Cn=40,$r=25,wn=350,Ob=150,$b=150,Nr=150,Gr=300,bt=40,qr=25,Nb=300;function Gb(e,t){const i=b.keyBy(t,l=>l.id),r=[];return e.current.forEach((l,s)=>{l.panelIDs.forEach((d,o)=>{const c=Or(o,bt,qr)+Cn,p=i[d];if(!p){r.push({id:d,_node_type:"panel",parentNode:l.id,data:{label:`!: ${d}`},position:{x:ft,y:c},sourcePosition:R.Position.Right,targetPosition:R.Position.Left,style:{width:Gr,height:bt}});return}const f=p.title.trim()?`${p.title}`:p.viz.type;r.push({id:p.id,_node_type:"panel",parentNode:l.id,data:{label:f},position:{x:ft,y:c},sourcePosition:R.Position.Right,targetPosition:R.Position.Left,style:{width:Gr,height:bt}})})}),r}const qb={[O.Division]:"Div",[O.Modal]:"Modal",[O.Tabs]:"Tabs"},Fb=ar;function jb(e){return e.current.map((i,r)=>{const l=Bb(i.panelIDs.length,bt,qr)+Cn+$r;let s=[];return i.type===O.Tabs&&(s=i.config.tabs.map(o=>o.view_id)),{id:i.id,_node_type:"view-root",_view_type:i.type,_view_level:0,_sub_view_ids:[],_tab_view_ids:s,data:{label:`${qb[i.type]}:${i.name}`},position:{x:0,y:0},sourcePosition:R.Position.Right,targetPosition:R.Position.Left,className:"light",style:{backgroundColor:Fb[i.type],width:wn,height:l}}})}function Wb(e){const t=b.keyBy(e,i=>i.id);e.forEach(i=>{i._node_type!=="view-root"||i._view_type!==O.Tabs||i._tab_view_ids.forEach(r=>{t[r].parentNode=i.id})})}function Ub(e){const t=jb(e.views);Wb(t);const i=Gb(e.views,e.panels.list);return[...t,...i]}function Rb({nodeMap:e,nodes:t,edges:i}){t.forEach(r=>{r._node_type!=="view-root"||r._view_type!==O.Tabs||(r.sourcePosition=R.Position.Bottom,r.style.width=wn+ft*2,r.style.height=$r+r._tab_view_ids.reduce((l,s)=>{const d=e[s];d.position.y=l,d.position.x=ft;const o=d.style.height;return l+o+20},Cn))})}function Qb({nodeMap:e,nodes:t,edges:i}){i.filter(r=>r.label==="Open View").forEach(r=>{const l=e[r.source],s=e[r.target];if(!l||!s||!l.parentNode)return;const d=e[l.parentNode];d._node_type!=="view-root"||s._node_type!=="view-root"||(s._view_level+=1+d._view_level,d._sub_view_ids.push(s.id))}),t.sort((r,l)=>r._node_type==="view-root"&&l._node_type==="view-root"?r._view_level-l._view_level:r._node_type!=="view-root"&&l._node_type!=="view-root"?0:r._node_type==="view-root"?-1:1)}function Yb({nodeMap:e,nodes:t,edges:i}){const r={};i.forEach(l=>{if(l.label!=="Open View")return;const s=e[l.source],d=e[l.target];if(s&&d&&s.parentNode){const o=e[s.parentNode],c=o.position.x,p=b.get(d,"style.height",0),f=Number(o.style.width);d.position.x=c+f+Nb,o._view_level===0&&d._sub_view_ids.length===0&&(s.sourcePosition=R.Position.Left,d.targetPosition=R.Position.Right,d.position.x*=-1);const h=d.position.x,x=b.get(r,h,0);d.position.y=x,r[h]=x+p+Nr}})}function Xb({nodeMap:e,nodes:t,edges:i}){const r=new Set,l=new Set;i.forEach(d=>{r.add(d.source),l.add(d.target)}),t.filter(d=>d._node_type!=="view-root"||d.id==="Main"||d.parentNode?!1:!r.has(d.id)&&!l.has(d.id)).forEach((d,o)=>{d.position.x=Or(o,wn,$b),d.position.y=0-Ob-Nr})}function Zb({nodeMap:e,nodes:t,edges:i}){const r={nodeMap:e,nodes:t,edges:i};return Xb(r),Qb(r),Rb(r),Yb(r),{nodes:t,edges:i}}function Kb(e){const t=Ub(e),i=b.keyBy(t,c=>c.id),{edges:r,edgeNodes:l}=Pb(e,i),s=[...t,...l],d=b.keyBy(s,c=>c.id),o={edges:b.uniqBy(r,c=>c.id),nodes:s,nodeMap:d};return Zb(o)}const Ix="",_n={"builtin:op:open-link":n(a.ThemeIcon,{color:"blue",size:20,radius:"xl",children:n(I.IconCircleDashed,{size:14})}),"builtin:op:set_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(I.IconCircleDot,{size:14})}),"builtin:op:clear_filter_values":n(a.ThemeIcon,{color:"orange",size:20,radius:"xl",children:n(I.IconCircleOff,{size:14})})};function Jb(e){const t=[];return e.forEach(i=>{switch(i.schemaRef){case"builtin:op:open-link":t.push({key:i.urlTemplate,icon:_n[i.schemaRef],text:u(a.Group,{spacing:4,children:[n(a.Text,{children:"Open: "}),n(a.Text,{color:"dimmed",children:i.shortURLTemplate})]})});return;case"builtin:op:set_filter_values":i.filters.forEach(({key:r,label:l})=>{t.push({key:i.schemaRef+r,icon:_n[i.schemaRef],text:n(a.Group,{spacing:4,children:u(a.Text,{children:["Set Filter: ",l]})})})});return;case"builtin:op:clear_filter_values":i.filters.forEach(({key:r,label:l})=>{t.push({key:i.schemaRef+r,icon:_n[i.schemaRef],text:n(a.Group,{spacing:4,children:u(a.Text,{children:["Clear Filter: ",l]})})})});return}}),t}const Hb=g.memo(({data:e,isConnectable:t,sourcePosition:i=R.Position.Right,targetPosition:r=R.Position.Left,...l})=>{const s=g.useMemo(()=>Jb(e.interactions),[e.interactions]);return u(k,{children:[n(R.Handle,{type:"target",position:r,isConnectable:t}),n(a.Box,{sx:{position:"absolute",top:0,right:0},children:n(S.ChevronsUpRight,{size:12})}),u(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:s.map(d=>n(a.List.Item,{icon:d.icon,children:d.text},d.key))})})]}),n(R.Handle,{type:"source",position:i,isConnectable:t})]})}),Mx="",ey={interaction:Hb},ty=_.observer(()=>{const e=M(),{edges:t,nodes:i}=Kb(e);return u(R,{nodes:i,edges:t,onNodesChange:b.noop,onEdgesChange:b.noop,onConnect:b.noop,className:"interactions-viewer",fitView:!0,nodeTypes:ey,children:[n(R.MiniMap,{}),n(R.Controls,{}),n(R.Background,{})]})}),ny=_.observer(({opened:e,close:t})=>{const{freezeLayout:i}=g.useContext(we);return g.useEffect(()=>{i(e)},[e]),n(a.Modal,{size:"96vw",overflow:"inside",opened:e,onClose:t,title:"Interactions",trapFocus:!0,onDragStart:r=>{r.stopPropagation()},styles:{body:{height:"90vh"},modal:{transform:"none !important"}},zIndex:300,children:n(ty,{})})});function iy({onClick:e,name:t,active:i,openSettings:r}){return u(a.Box,{sx:{position:"relative"},children:[n(a.UnstyledButton,{sx:l=>({display:"block",width:"100%",padding:l.spacing.xs,borderRadius:0,position:"relative",color:l.black,"&:hover":{backgroundColor:l.colors.gray[0]},backgroundColor:i?l.colors.gray[2]:"transparent"}),children:n(a.Group,{sx:{width:"calc(100% - 28px)"},onClick:e,children:n(a.Text,{size:"sm",children:t})})}),i&&n(a.Tooltip,{label:"Edit",position:"right",withinPortal:!0,children:n(a.ActionIcon,{onClick:r,variant:"light",color:"blue",sx:{position:"absolute",top:0,bottom:0,height:"100%",right:0,zIndex:0,borderRadius:0},children:n(I.IconAdjustments,{size:16})})})]})}const ry=_.observer(()=>{const e=M(),t=g.useCallback(r=>()=>e.views.setIDOfVIE(r),[e]),i=r=>{e.editor.open(["_VIEWS_",r])};return u(a.Box,{sx:{position:"relative"},children:[e.views.options.map(r=>n(iy,{active:e.views.idOfVIE===r.value,name:r.label,onClick:t(r.value),openSettings:()=>i(r.value)},r.value)),n(a.Divider,{variant:"dashed"}),n(a.Button,{variant:"subtle",rightIcon:n(I.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"})]})}),ay=_.observer(()=>{const e=M(),t=()=>{if(!e.queries.firstID){e.editor.open(["_QUERIES_",""]);return}e.editor.open(["_QUERIES_",e.queries.firstID])},i=()=>{if(!e.filters.firstID){e.editor.open(["_FILTERS_",""]);return}e.editor.open(["_FILTERS_",e.filters.firstID])},[r,l]=g.useState(!1),s=()=>l(!0),d=()=>l(!1);return u(a.Navbar,{p:0,width:{base:200,xs:200,sm:200,md:220,lg:240,xl:260},children:[u(a.Navbar.Section,{children:[u(a.Group,{grow:!0,spacing:0,sx:{...Br,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:i,children:n(I.IconFilter,{size:20})})}),n(a.Tooltip,{label:"Queries",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:t,children:n(I.IconDatabase,{size:20})})}),n(a.Tooltip,{label:"Interactions Viewer",withinPortal:!0,children:n(a.ActionIcon,{variant:"default",radius:0,size:"md",onClick:s,children:n(I.IconLink,{size:20})})})]}),n(ny,{opened:r,close:d})]}),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(ry,{})}),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(I.IconSettings,{size:20}),onClick:()=>e.editor.open([]),children:"Settings"})})})]})}),ly=_.observer(function({config:t}){return u(k,{children:[n(a.Checkbox,{checked:t.default_value,onChange:i=>t.setDefaultValue(i.currentTarget.checked),label:"Default Checked"}),n(Yt,{label:"Description",value:t.description,onChange:t.setDescription,styles:{root:{flexGrow:1,minHeight:"400px"}}})]})}),sy=[{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"}],oy=_.observer(function({config:t}){return u(k,{children:[u(a.Group,{children:[n(a.Checkbox,{checked:t.required,onChange:i=>t.setRequired(i.currentTarget.checked),label:"Required"}),n(a.Checkbox,{checked:t.clearable,onChange:i=>t.setClearable(i.currentTarget.checked),disabled:t.max_days>0,label:"Clearable"}),n(a.Checkbox,{checked:t.allowSingleDateInRange,onChange:i=>t.setAllowSingleDateInRange(i.currentTarget.checked),label:"Allow choosing 1 day"})]}),n(a.Select,{data:sy,label:"Display Format",value:t.inputFormat,onChange:t.setInputFormat}),n(Xn,{label:"Default Value",config:t,value:t.default_value,onChange:t.setDefaultValue}),n(a.NumberInput,{label:"Max Days",description:u(a.Group,{position:"apart",children:[n(a.Text,{children:"Set 0 to disable."}),u(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})]})}),Sn=_.observer(({value:e,onChange:t})=>{const i=M(),r=g.useMemo(()=>i.queries.options,[i.queries.current]),l=r.length===0;return n(a.Select,{label:"Pick a query",data:r,value:e,onChange:t,allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:l,error:l?"You need to add a query in Data Settings":void 0})}),dy=`
334
334
  // row
335
335
  {
336
336
  label: string;
337
337
  value: string;
338
338
  description?: string; // optional
339
339
  }
340
- `,Fr=()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(i=>!i),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(Ie.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:dy})})]})},uy=_.observer(function({config:t}){const i=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,l=[...r];return u(k,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:s=>t.setMinWidth(s.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),u(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&u(k,{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"})})]}),r.length>0&&n(a.MultiSelect,{label:"Default Selection",data:l,value:[...t.default_value],onChange:t.setDefaultValue}),r.map((s,o)=>u(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[o].label,onChange:d=>{t.static_options[o].setLabel(d.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[o].value,onChange:d=>{t.static_options[o].setValue(d.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(o),sx:{position:"absolute",top:28,right:5},children:n(S.Trash,{size:16})})]},o)),n(a.Button,{mt:10,size:"xs",color:"blue",leftIcon:n(S.PlaylistAdd,{size:20}),onClick:i,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(Sn,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(Fr,{})]})}),cy=_.observer(function({config:t}){const i=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,l=[{label:"No default selection",value:""},...r];return u(k,{children:[n(a.Checkbox,{checked:t.required,onChange:s=>t.setRequired(s.currentTarget.checked),label:"Required"}),n(a.TextInput,{label:"Width",value:t.width,onChange:s=>t.setWidth(s.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),u(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&u(k,{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"})})]}),r.length>0&&n(a.Select,{label:"Default Selection",data:l,value:t.default_value,onChange:t.setDefaultValue}),r.map((s,o)=>u(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[o].label,onChange:d=>{t.static_options[o].setLabel(d.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[o].value,onChange:d=>{t.static_options[o].setValue(d.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(o),sx:{position:"absolute",top:28,right:5},children:n(S.Trash,{size:16})})]},o)),n(a.Button,{size:"xs",color:"blue",leftIcon:n(S.PlaylistAdd,{size:20}),onClick:i,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:s=>t.setDefaultSelectionCount(s.currentTarget.checked?1:0),label:"Select the first option by default"}),n(Sn,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(Fr,{})]})}),py=_.observer(function({config:t}){return u(k,{children:[n(a.TextInput,{label:"Default Value",value:t.default_value,onChange:i=>{t.setDefaultValue(i.currentTarget.value)}}),n(a.Checkbox,{checked:t.required,onChange:i=>t.setRequired(i.currentTarget.checked),label:"Required"})]})}),hy=`
340
+ `,Fr=()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(i=>!i),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(Ie.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:dy})})]})},uy=_.observer(function({config:t}){const i=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,l=[...r];return u(k,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:s=>t.setMinWidth(s.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),u(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&u(k,{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"})})]}),r.length>0&&n(a.MultiSelect,{label:"Default Selection",data:l,value:[...t.default_value],onChange:t.setDefaultValue}),r.map((s,d)=>u(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[d].label,onChange:o=>{t.static_options[d].setLabel(o.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[d].value,onChange:o=>{t.static_options[d].setValue(o.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(d),sx:{position:"absolute",top:28,right:5},children:n(S.Trash,{size:16})})]},d)),n(a.Button,{mt:10,size:"xs",color:"blue",leftIcon:n(S.PlaylistAdd,{size:20}),onClick:i,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(Sn,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(Fr,{})]})}),cy=_.observer(function({config:t}){const i=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,l=[{label:"No default selection",value:""},...r];return u(k,{children:[n(a.Checkbox,{checked:t.required,onChange:s=>t.setRequired(s.currentTarget.checked),label:"Required"}),n(a.TextInput,{label:"Width",value:t.width,onChange:s=>t.setWidth(s.currentTarget.value),placeholder:"200px"}),n(a.Divider,{label:"Configure options",labelPosition:"center"}),u(a.Stack,{spacing:10,sx:{position:"relative",minHeight:"50px"},children:[t.usingQuery&&u(k,{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"})})]}),r.length>0&&n(a.Select,{label:"Default Selection",data:l,value:t.default_value,onChange:t.setDefaultValue}),r.map((s,d)=>u(a.Flex,{gap:10,sx:{position:"relative"},pr:"40px",children:[n(a.TextInput,{label:"Label",required:!0,value:t.static_options[d].label,onChange:o=>{t.static_options[d].setLabel(o.currentTarget.value)},sx:{flexGrow:1}}),n(a.TextInput,{label:"Value",required:!0,value:t.static_options[d].value,onChange:o=>{t.static_options[d].setValue(o.currentTarget.value)},sx:{flexGrow:1}}),n(a.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(d),sx:{position:"absolute",top:28,right:5},children:n(S.Trash,{size:16})})]},d)),n(a.Button,{size:"xs",color:"blue",leftIcon:n(S.PlaylistAdd,{size:20}),onClick:i,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:s=>t.setDefaultSelectionCount(s.currentTarget.checked?1:0),label:"Select the first option by default"}),n(Sn,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(Fr,{})]})}),py=_.observer(function({config:t}){return u(k,{children:[n(a.TextInput,{label:"Default Value",value:t.default_value,onChange:i=>{t.setDefaultValue(i.currentTarget.value)}}),n(a.Checkbox,{checked:t.required,onChange:i=>t.setRequired(i.currentTarget.checked),label:"Required"})]})}),hy=`
341
341
  // row
342
342
  {
343
343
  label: string;
@@ -345,7 +345,7 @@
345
345
  parent_value: string;
346
346
  description?: string;
347
347
  }
348
- `,gy=()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(i=>!i),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(Ie.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:hy})})]})},my=_.observer(function({config:t}){return u(k,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:i=>t.setMinWidth(i.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(Sn,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(gy,{})]})}),fy=_.observer(function({filter:t}){const[i,r]=g.useState(t.plainDefaultValue);return g.useEffect(()=>{r(t.plainDefaultValue)},[t]),u(a.Box,{sx:{maxWidth:"480px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Preview"}),n(Hn,{filter:t,value:i,onChange:r}),n(a.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),n(Ie.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(t,null,4)})]})}),by={select:cy,"multi-select":uy,"tree-select":my,"text-input":py,checkbox:ly,"date-range":oy},yy=[{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"}],vy=_.observer(function({filter:t}){const i=M(),r=g.useMemo(()=>by[t.type],[t.type]);return u(a.Group,{grow:!0,spacing:20,align:"top",children:[u(a.Box,{sx:{maxWidth:"600px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Edit"}),u(a.Stack,{children:[u(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:l=>t.setAutoSubmit(l.currentTarget.checked),mt:22})]}),n(a.MultiSelect,{label:"Visible in...",data:i.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:l=>{t.setKey(l.currentTarget.value)}}),n(a.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:t.label,onChange:l=>{t.setLabel(l.currentTarget.value)}}),n(a.Select,{label:"Widget",data:yy,required:!0,value:t.type,onChange:t.setType}),n(r,{config:t.config})]})]}),n(fy,{filter:t})]})}),xy=_.observer(({id:e})=>{const t=ce.useModals(),i=M();if(e==="")return null;const r=i.filters.findByID(e);if(!r)return u(a.Text,{size:14,children:["Filter by ID[",e,"] is not found"]});const l=()=>{t.openConfirmModal({title:"Delete this filter?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>i.filters.removeByID(e),zIndex:320})};return u(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(S.Trash,{size:16}),onClick:l,children:"Delete this filter"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(vy,{filter:r})})]})}),Cy=_.observer(()=>{const e=M(),[t,i]=g.useState(()=>JSON.stringify(e.mock_context.current,null,4)),r=()=>{try{e.mock_context.replace(JSON.parse(t))}catch(s){Qe.showNotification({title:"Failed",message:s.message,color:"red"})}},l=g.useMemo(()=>{try{return JSON.stringify(JSON.parse(t))!==JSON.stringify(e.mock_context.current)}catch{return!1}},[t,e.mock_context.current]);return u(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"})}),u(a.Group,{grow:!0,px:"md",pb:"md",pt:0,sx:{flexGrow:1,position:"relative",alignItems:"flex-start"},children:[u(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:i,sx:{flexGrow:1}})]}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",sx:{position:"absolute",right:12,top:0},disabled:!l,onClick:r,children:n(S.DeviceFloppy,{size:20})})]})]})}),wy=_.observer(()=>{const{panel:e}=Q();return n(Yt,{label:"Description",value:e.description,onChange:e.setDescription,styles:{root:{flexGrow:1}}})}),_y=_.observer(()=>{const{panel:e}=Q(),{style:t}=e;return n(k,{children:n(a.Switch,{label:"Border",checked:t.border.enabled,onChange:i=>t.border.setEnabled(i.currentTarget.checked)})})}),Sy=_.observer(()=>{const{panel:e}=Q(),{title:t,setTitle:i}=e,[r,l]=U.useInputState(t),s=t!==r,o=g.useCallback(()=>{s&&i(r)},[s,r]);return g.useEffect(()=>{l(t)},[t]),n(a.TextInput,{value:r,onChange:l,label:u(a.Group,{children:[n(a.Text,{children:"Panel Title"}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!s,onClick:o,children:n(S.DeviceFloppy,{size:20})})]}),styles:{label:{display:"block",paddingBottom:"4px"}}})});function Ty(){return u(a.Stack,{sx:{height:"100%"},children:[n(a.Divider,{label:"Style",labelPosition:"center",variant:"dashed"}),n(_y,{}),n(a.Divider,{label:"Info",labelPosition:"center",variant:"dashed"}),n(Sy,{}),n(wy,{})]})}const Dy=({queryID:e})=>{const t=M(),{state:i,error:r}=t.getDataStuffByID(e),l=g.useMemo(()=>t.queries.findByID(e),[t,e]);return i==="loading"?null:r?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:r}):l!=null&&l.stateMessage?n(a.Text,{color:"gray",align:"center",children:l.stateMessage}):null},ky={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 jr({data:e}){const t=g.useMemo(()=>{if(!Array.isArray(e)||e.length===0)return[];const r=se.createColumnHelper();return Object.keys(e[0]).map(l=>r.accessor(l,{cell:s=>s.getValue()}))},[e]),i=se.useReactTable({data:e,columns:t,columnResizeMode:"onChange",getCoreRowModel:se.getCoreRowModel()});return e.length===0?n(a.Box,{sx:{height:"5em"}}):n(ie,{children:u(a.Table,{sx:ky,children:[n("thead",{children:i.getHeaderGroups().map(r=>n("tr",{children:r.headers.map(l=>u("th",{style:{width:l.getSize()},children:[l.isPlaceholder?null:se.flexRender(l.column.columnDef.header,l.getContext()),n(a.ActionIcon,{onMouseDown:l.getResizeHandler(),onTouchStart:l.getResizeHandler(),className:`resizer ${l.column.getIsResizing()?"isResizing":""}`,children:n(S.ArrowBarToRight,{})})]},l.id))},r.id))}),n("tbody",{children:i.getRowModel().rows.map(r=>n("tr",{children:r.getVisibleCells().map(l=>n("td",{children:n(ie,{children:se.flexRender(l.column.columnDef.cell,l.getContext())})},l.id))},r.id))})]})})}const Wr=_.observer(function({id:t}){const i=M(),{data:r,state:l}=i.getDataStuffByID(t),s=l==="loading",o=()=>{i.queries.refetchDataByQueryID(t)},d=()=>{i.queries.downloadDataByQueryID(t)},c=g.useMemo(()=>Array.isArray(r)?r.slice(0,10):[],[r]),p=!Array.isArray(r)||r.length===0;return u(a.Stack,{sx:{border:"1px solid #eee"},children:[u(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[u(a.Group,{position:"left",children:[n(a.Text,{weight:500,children:"Preview Data"}),r.length>10&&u(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",r.length]})]}),u(a.Group,{pr:15,children:[n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:s,onClick:o,children:n(S.Refresh,{size:15})}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:s||p,onClick:d,children:n(S.Download,{size:15})})]})]}),u(a.Box,{sx:{position:"relative",overflow:"auto"},children:[n(a.LoadingOverlay,{visible:s}),n(Dy,{queryID:t}),n(jr,{data:c})]})]})}),Iy=_.observer(function(){const t=M(),{panel:{queryID:i,setQueryID:r}}=Q(),l=g.useMemo(()=>t.queries.current.map(o=>({value:o.id,label:o.name})),[t.queries.current]),s=()=>{t.editor.setPath(["_QUERIES_",i])};return u(a.Stack,{children:[u(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[n(a.Text,{children:"Use query"}),n(a.Select,{data:l,value:i,onChange:r,allowDeselect:!1,clearable:!1,sx:{flexGrow:"1 !important"},maxDropdownHeight:300,rightSection:i&&n(a.Tooltip,{label:"Open this query",children:n(a.ActionIcon,{variant:"subtle",color:"blue",onClick:s,children:n(I.IconArrowCurveRight,{size:16})})})})]}),n(Wr,{id:i})]})}),My=_.observer(({height:e})=>{const t=M(),{data:i,loading:r,error:l,panel:{viz:s,queryID:o}}=Q(),d=t.queries.findByID(o);return n(nr,{viz:s,data:i,loading:r,error:l,query:d,height:e})}),Ay=_.observer(()=>{const{panel:{title:e,style:{border:t}}}=Q();return n(ie,{children:n(a.Box,{sx:{height:"100%",flexGrow:0,flexShrink:0,width:"600px"},children:u(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:[u(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[n(a.Group,{children:n(ti,{})}),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(My,{height:"410px"})})]})})})}),Tn={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 zy{constructor(t){D(this,"panel");D(this,"selected");this.panel=t,$.makeAutoObservable(this,{},{deep:!1,autoBind:!0})}get variables(){return this.panel.variables}addNew(){const t=this.panel.variables.filter(i=>i.name.startsWith(Tn.name)).length;this.panel.addVariable(b.cloneDeep({...Tn,name:`${Tn.name}${t||""}`})),this.selected=b.last(this.panel.variables)}select(t){this.selected=t}remove(t){this.selected===t&&(this.selected=void 0);const i=this.panel.variables.indexOf(t);if(this.panel.removeVariable(t),!this.selected&&!b.isEmpty(this.panel.variables)){const r=Math.min(this.panel.variables.length-1,i);this.selected=this.panel.variables[r]}}}function Vy(){const{panel:e}=Q();return B.useCreation(()=>new zy(e),[e])}const Ly=g.forwardRef(function({value:t,onChange:i,data:r,withStyle:l=!0},s){const o=(d,c)=>{const p=b.cloneDeep(t);b.set(p,d,c),i(p)};return u(a.Box,{px:"sm",py:"md",ref:s,children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:d=>o("name",d.currentTarget.value)}),n(E,{label:"Data Field",required:!0,data:r,value:t.data_field,onChange:d=>o("data_field",d)})]}),n(et,{label:"Aggregation",value:t.aggregation,onChange:d=>o("aggregation",d)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(he,{value:t.formatter,onChange:d=>o("formatter",d)}),l&&n(vi,{value:t,onChange:i})]})}),Ur=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}})),Ey=e=>{const{uiModel:t}=e;return n(a.Stack,{className:"var-list",children:t.variables.map(i=>n(a.Button,{variant:t.selected===i?"filled":"subtle",color:"gray",onClick:()=>t.select(i),children:i.name},i.name))})},Py=_.observer(Ey),By=({variable:e,data:t})=>n(a.Group,{style:{minHeight:0,height:"calc(100% - 68px)"},children:n(a.Paper,{withBorder:!0,p:"md",children:xi(e,t)})}),Oy=_.observer(By),$y=e=>{const t=B.useCreation(()=>Tb(e.variable),[e.variable]),{classes:i}=Ur(),{data:r}=Q();return u(a.Group,{style:{height:"100%"},align:"start",children:[u(a.Stack,{"data-testid":"variable-editor",align:"stretch",className:i.config,children:[u(a.Group,{position:"right",children:[n(a.ActionIcon,{variant:"filled",disabled:!t.changed,color:"primary",onClick:t.commit,children:n(I.IconDeviceFloppy,{size:18})}),n(a.ActionIcon,{color:"red",onClick:()=>e.uiModel.remove(e.variable),children:n(I.IconTrash,{size:18})})]}),n(Ly,{value:m.getSnapshot(t.copy),onChange:t.update,data:r})]}),n(Oy,{variable:m.getSnapshot(t.copy),data:r})]})},Ny=_.observer($y),Gy=()=>{const e=Vy(),{classes:t}=Ur();return u(a.Group,{className:t.root,noWrap:!0,align:"start",children:[n(a.Paper,{withBorder:!0,p:"md",className:"var-list-container",children:u(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(Py,{uiModel:e})]})}),e.selected?n(k,{children:n(Ny,{uiModel:e,variable:e.selected})}):n("span",{children:"Select or create a new variable on right side"})]})},qy=_.observer(Gy);function Fy(){const{vizManager:e}=g.useContext(me);return g.useMemo(()=>{const t=e.availableVizList.map(i=>({value:i.name,label:i.displayName??i.name,group:i.displayGroup??""}));return b.orderBy(t,[i=>i.group,i=>i.label],["asc","asc"])},[e])}const jy=_.observer(({value:e,submit:t})=>{const[i,r]=U.useInputState(e);g.useEffect(()=>{r(e)},[e]);const l=Fy(),s=e!==i;return n(a.Select,{label:"Visualization",value:i,searchable:!0,onChange:r,data:l,rightSection:n(a.ActionIcon,{disabled:!s,onClick:()=>t(i),children:n(S.DeviceFloppy,{size:20})}),maxDropdownHeight:600})}),Rr=[];function Wy(e,t){try{return e.resolveComponent(t).createConfig()}catch{return null}}function Uy(){const{data:e,panel:{variables:t,viz:i,title:r,queryID:l,description:s,setDescription:o,setTitle:d,setQueryID:c,id:p}}=Q(),{vizManager:f}=g.useContext(me),y={title:r,description:s,viz:i,queryID:l,id:p},h={setDescription:o,setQueryID:c,setTitle:d},x=Hi(y);try{return f.resolveComponent(y.viz.type),n(Ze,{configure:x,children:n(sf,{variables:t,setVizConf:i.setConf,panel:y,panelInfoEditor:h,vizManager:f,data:e})})}catch(C){return console.info(b.get(C,"message")),null}}const Ry=_.observer(()=>{const{data:e,panel:{viz:t}}=Q(),{vizManager:i}=g.useContext(me),r=g.useCallback(p=>{if(p===t.type)return;const f=Wy(i,p);t.setType(p),t.setConf(f||{})},[t.type]),l=p=>{try{t.setConf(JSON.parse(p))}catch(f){console.error(f)}},s=g.useMemo(()=>{var p;return(p=Rr.find(f=>f.value===t.type))==null?void 0:p.Panel},[t.type,Rr]),o=Uy(),d=s?g.createElement(s,{data:e,conf:t.conf,setConf:t.setConf}):null,c=o||d;return u(a.Stack,{align:"stretch",sx:{height:"100%",overflow:"hidden"},children:[n(jy,{submit:r,value:t.type}),n(a.Stack,{pb:50,sx:{flexGrow:1,maxHeight:"calc(100% - 80px)",overflow:"auto"},children:c}),!c&&n(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(t.conf,null,2),onChange:l})]})}),Qy=_.observer(({panel:e,sourceViewID:t})=>{const i=M(),[r,l]=g.useState(t);g.useEffect(()=>{l(t)},[t]);const[s,{open:o,close:d}]=U.useDisclosure(!1),c=()=>{e.moveToView(t,r),d()};return u(k,{children:[n(a.Button,{size:"xs",variant:"subtle",color:"blue",onClick:o,leftIcon:n(I.IconBoxMultiple,{size:14}),children:"Move into Another View"}),n(a.Modal,{opened:s,onClose:d,title:"Move panel into another view",zIndex:320,overflow:"inside",children:u(a.Stack,{sx:{maxHeight:"calc(100vh - 185px)",overflow:"hidden"},children:[n(a.Radio.Group,{value:r,onChange:l,pb:10,sx:{flexGrow:1,maxHeight:"calc(100vh - 185px - 30px)",overflow:"auto"},children:n(a.Stack,{spacing:"xs",children:i.views.options.map(p=>n(a.Radio,{value:p.value,label:p.label},p.value))})}),u(a.Group,{noWrap:!0,position:"apart",sx:{flexGrow:0,flexShrink:0},children:[n(a.Button,{size:"xs",color:"red",leftIcon:n(I.IconX,{size:14}),onClick:d,children:"Cancel"}),n(a.Button,{size:"xs",color:"blue",leftIcon:n(I.IconDeviceFloppy,{size:14}),onClick:c,disabled:r===t,children:"Confirm"})]})]})})]})}),Yy={root:{flexGrow:1,width:"100%",height:"100%"},panel:{width:"100%",height:"100%",padding:10}},Qr=({children:e})=>u(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(Ay,{})]});function Xy(e){return!["richText","button"].includes(e)}const Zy=_.observer(({panel:e})=>{const t=ce.useModals(),i=M(),[r,l]=g.useState("Data"),{data:s,state:o,error:d}=i.getDataStuffByID(e.queryID),c=i.queries.findByID(e.queryID),f=Xy(e.viz.type)&&o==="loading",y=f||d||!c||!!c.stateMessage,h=i.editor.path[1];g.useEffect(()=>{l(T=>y&&T==="Visualization"?"Data":T)},[e.id,y]);const x=()=>{i.editor.setPath(["_VIEWS_",h])},C=()=>t.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{i.removePanelByID(e.id,h),x()},confirmProps:{color:"red"},zIndex:320});return u(kt,{value:{panel:e,data:s,loading:f,error:d},children:[u(a.Group,{px:16,position:"apart",sx:{borderBottom:"1px solid #eee"},children:[u(a.Text,{pt:9,pb:8,children:[e.title?e.title:e.viz.type," "]}),u(a.Group,{position:"right",noWrap:!0,children:[n(Qy,{panel:e,sourceViewID:h}),n(a.Button,{size:"xs",variant:"subtle",color:"red",onClick:C,leftIcon:n(I.IconTrash,{size:14}),children:"Delete This Panel"})]})]}),u(a.Tabs,{value:r,onTabChange:l,keepMounted:!1,styles:Yy,children:[u(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:y,children:n(a.Tooltip,{label:"Requires data",disabled:!y,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Variables"})})}),n(a.Tabs.Tab,{value:"Visualization",disabled:y,children:n(a.Tooltip,{label:"Requires data",disabled:!y,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Visualization"})})}),n(a.Tabs.Tab,{value:"Interactions",children:"Interactions"})]}),u(a.Tabs.Panel,{value:"Data",children:[n(a.LoadingOverlay,{visible:f,exitTransitionDuration:0}),n(Iy,{})]}),n(a.Tabs.Panel,{value:"Panel",children:n(Qr,{children:n(Ty,{})})}),n(a.Tabs.Panel,{value:"Variables",children:n(qy,{})}),n(a.Tabs.Panel,{value:"Visualization",children:n(ie,{children:n(Qr,{children:n(Ry,{})})})}),n(a.Tabs.Panel,{value:"Interactions",children:n(ie,{children:n(af,{})})})]})]})}),Ky=_.observer(({viewID:e,panelID:t})=>{const i=M();if(!i.views.findByID(e))return u(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const l=i.panels.findByID(t);return l?n(Zy,{panel:l}):u(a.Text,{size:14,children:["Panel by ID[",t,"] is not found"]})}),Yr=({width:e="calc(100% - 32px)",lastWidth:t="50%",height:i,count:r,spacing:l=16,pl:s=0})=>u(a.Stack,{spacing:l,mt:6,pl:s,children:[Array.from(new Array(r-1),(o,d)=>n(a.Skeleton,{width:e,height:i,radius:"xs"},d)),n(a.Skeleton,{width:t,height:i,radius:"xs"})]}),je=({value:e})=>e===null||e===""?null:n(a.Tooltip,{label:e,disabled:!e,multiline:!0,children:n(a.ActionIcon,{children:n(I.IconInfoCircle,{size:14})})}),Jy=({column:e})=>{const{column_key:t,column_key_text:i}=e;return t?n(a.Tooltip,{label:i,disabled:!i,children:n(a.Badge,{children:t})}):null},Hy=_.observer(({dataSource:e})=>{const{columns:t}=e;return t.loading?n(Yr,{height:"24px",width:"100%",lastWidth:"100%",count:20,pl:6}):t.empty?null:u(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"1000px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[u("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:u("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(i=>u("tr",{children:[n("td",{children:i.ordinal_position}),n("td",{children:i.column_name}),n("td",{children:n(je,{value:i.column_comment})}),n("td",{children:n(Jy,{column:i})}),n("td",{children:i.column_type}),n("td",{children:i.is_nullable}),n("td",{children:n(je,{value:i.column_default})})]},i.column_name))})]})}),ev=_.observer(({dataSource:e})=>{const{indexes:t}=e,i=t.data;return u(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"950px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[u("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:u("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:i.map(r=>u("tr",{children:[n("td",{children:r.index_length}),n("td",{children:r.index_name}),n("td",{children:r.index_algorithm}),n("td",{children:r.is_unique?"YES":"NO"}),n("td",{children:r.column_name})]},r.index_name))})]})}),tv=_.observer(({dataSource:e})=>{const{indexes:t}=e,i=t.data;return u(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"850px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[u("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:u("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:i.map(r=>u("tr",{children:[n("td",{children:r.index_name}),n("td",{children:r.index_algorithm}),n("td",{children:r.is_unique?"YES":"NO"}),n("td",{children:n(je,{value:r.index_definition})}),n("td",{children:n(je,{value:r.condition})}),n("td",{children:n(je,{value:r.comment})})]},r.index_name))})]})}),nv=_.observer(({dataSource:e})=>{const{indexes:t}=e;return t.loading||t.empty?null:e.type===F.MySQL?n(ev,{dataSource:e}):e.type===F.Postgresql?n(tv,{dataSource:e}):null}),iv=_.observer(({dataSource:e})=>u(a.Stack,{spacing:40,pt:10,sx:{flexGrow:1,overflow:"auto",position:"relative"},children:[n(ie,{children:n(Hy,{dataSource:e})}),n(ie,{children:n(nv,{dataSource:e})})]}));function rv({table_type:e}){return e==="VIEW"?n(I.IconEye,{size:14}):e==="BASE TABLE"?n(I.IconTable,{size:14}):null}const av=_.observer(({dataSource:e})=>{const{tables:t}=e;return t.loading?n(Yr,{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(([i,r])=>n(a.NavLink,{label:i,icon:n(I.IconDatabase,{size:14}),defaultOpened:e.table_schema===i,pl:0,childrenOffset:14,children:r.map(l=>n(a.NavLink,{label:l.table_name,icon:n(rv,{table_type:l.table_type}),onClick:()=>{e.setKeywords(i,l.table_name)},active:e.table_name===l.table_name},l.table_name))},i))})}),lv=({visible:e})=>n(a.Box,{py:10,sx:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:n(a.LoadingOverlay,{visible:e})}),sv=[{label:"10",value:"10"},{label:"20",value:"20"},{label:"50",value:"50"},{label:"100",value:"100"}],ov={icon:{width:"50px",textAlign:"center"},input:{"&.mantine-Input-withIcon":{paddingLeft:"50px"}}},dv=_.observer(({dataSource:e})=>{const{tableData:t}=e;return u(a.Group,{pt:10,px:10,position:"apart",children:[u(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:ov,data:sv,value:String(t.limit),onChange:i=>t.setLimit(Number(i))})]}),n(a.Group,{position:"right",children:u(a.Text,{color:"dimmed",my:0,size:14,children:["Total ",t.total," rows"]})})]})}),uv=_.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&&(a.Text,t.error),t.page===1&&t.loading?n(lv,{visible:!0}):u(ie,{children:[n(dv,{dataSource:e}),u(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(jr,{data:t.data})]})]}))}),cv={root:{flexGrow:1,overflow:"auto",borderLeft:"1px solid #efefef"},tabsList:{borderBottom:"1px solid #efefef"},tab:{minWidth:120}},pv=_.observer(({dataSource:e})=>(g.useEffect(()=>{e.loadTablesIfEmpty()},[e]),e.tables.error?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:e.tables.error}):u(a.Flex,{sx:{height:"100%"},children:[n(a.Box,{w:300,sx:{flexGrow:0,flexShrink:0,position:"relative"},children:n(ie,{children:n(av,{dataSource:e})})}),u(a.Tabs,{defaultValue:"structure",styles:cv,children:[u(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"structure",icon:n(I.IconColumns,{size:14}),children:"Structure"}),n(a.Tabs.Tab,{value:"data",icon:n(I.IconDatabase,{size:14}),children:"Data"})]}),n(a.Tabs.Panel,{value:"structure",children:n(iv,{dataSource:e})}),n(a.Tabs.Panel,{value:"data",sx:{width:"100%",height:"calc(100% - 36px)",overflow:"hidden"},children:n(uv,{dataSource:e})})]})]}))),hv={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"}},Xr=_.observer(({dataSource:e,triggerButtonProps:t={}})=>{const[i,r]=g.useState(!1);return u(k,{children:[n(a.Modal,{opened:i,onClose:()=>r(!1),title:u(a.Group,{position:"apart",sx:{flexGrow:1},children:[n(a.Text,{fw:500,children:"Explorer Data Source"}),u(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:hv,children:n(a.Box,{sx:{height:"calc(100vh - 220px)"},children:n(pv,{dataSource:e})})}),n(a.Button,{variant:"subtle",onClick:()=>r(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},...t,children:"See Table Structure"})]})}),gv=g.forwardRef(({label:e,type:t,...i},r)=>u(a.Group,{position:"apart",ref:r,...i,children:[n(a.Text,{children:e}),n(a.Text,{children:t})]})),mv=_.observer(({value:e,onChange:t})=>{const i=M(),{data:r=[],loading:l}=B.useRequest(fn,{refreshDeps:[]},[]),s=g.useMemo(()=>r.map(p=>({label:p.key,value:p.key,type:p.type})),[r]),o=g.useMemo(()=>s.reduce((p,f)=>(p[f.value]=f.type,p),{}),[s]),d=p=>{p!==null&&t({key:p,type:o[p]})},c=g.useMemo(()=>i.datasources.find(e),[i,e]);return n(a.Select,{data:s,label:u(a.Group,{position:"apart",children:[n(a.Box,{children:"Data Source"}),c&&n(Xr,{dataSource:c,triggerButtonProps:{compact:!0,size:"xs",px:10}})]}),itemComponent:gv,rightSection:c?n(a.Text,{size:"xs",color:"dimmed",children:c.type}):void 0,rightSectionWidth:85,maxDropdownHeight:280,styles:{root:{flex:1},label:{display:"block"},rightSection:{pointerEvents:"none",".mantine-Text-root":{userSelect:"none"}}},disabled:l,value:e.key,onChange:d})}),fv=e=>{const{queryModel:t}=e,i=M(),l=i.findQueryUsage(t.id).length>0,s=ce.useModals(),o=()=>{s.openConfirmModal({title:"Delete this query?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{i.queries.removeQuery(t.id),i.editor.setPath(["_QUERIES_",""])},zIndex:320})};return l?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(I.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})}):n(a.Button,{color:"red",size:"xs",onClick:o,leftIcon:n(I.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})},bv=_.observer(fv),yv=_.observer(({queryModel:e})=>n(a.Center,{ml:20,mt:20,sx:{maxWidth:"600px"},children:u(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(mv,{value:{type:e.type,key:e.key},onChange:({type:t,key:i})=>{e.setKey(i),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(bv,{queryModel:e})]})}));function vv(){const[e,{open:t,close:i}]=U.useDisclosure(!1);return u(k,{children:[n(a.Modal,{opened:e,onClose:i,title:"About FunctionUtils",zIndex:320,children:n(Ke,{value:Kf,styles:{root:{border:"none"},content:{padding:0}}})}),n(a.Button,{variant:"light",color:"violet",size:"xs",onClick:t,leftIcon:n(I.IconInfoCircle,{size:16}),children:"About parameter 'utils'"})]})}const xv=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{sx:{position:"relative",flexGrow:1},children:n(Z,{className:"function-editor",height:"100%",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1}}})})},yt=g.forwardRef(({value:e,onChange:t,label:i,defaultValue:r},l)=>{const[s,o]=g.useState(e),d=()=>{t(s)},c=()=>{o(e)},p=()=>{o(r)};g.useEffect(()=>{o(e)},[e]);const f=s!==e;return u(a.Stack,{spacing:4,sx:{height:"100%"},children:[u(a.Group,{mb:6,position:"apart",sx:{flexShrink:0,flexGrow:0},children:[n(a.Group,{position:"left",children:n(vv,{})}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,size:"xs",variant:"default",leftIcon:n(I.IconPlayerSkipBack,{size:16}),children:"Reset to default"}),n(a.Button,{onClick:c,color:"red",size:"xs",disabled:!f,leftIcon:n(I.IconRecycle,{size:16}),children:"Revert Changes"}),n(a.Button,{size:"xs",onClick:d,disabled:!f,leftIcon:n(I.IconDeviceFloppy,{size:16}),children:"Confirm Changes"})]})]}),n(a.Text,{size:14,children:i}),n(xv,{value:s,onChange:o})]})}),Cv=`
348
+ `,gy=()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Button,{variant:"subtle",compact:!0,onClick:()=>t(i=>!i),children:e?"Close":"Click to see expected data structure"}),n(a.Collapse,{in:e,children:n(Ie.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:hy})})]})},my=_.observer(function({config:t}){return u(k,{children:[n(a.TextInput,{label:"Min-width",value:t.min_width,onChange:i=>t.setMinWidth(i.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(Sn,{value:t.options_query_id,onChange:t.setOptionsQueryID}),n(gy,{})]})}),fy=_.observer(function({filter:t}){const[i,r]=g.useState(t.plainDefaultValue);return g.useEffect(()=>{r(t.plainDefaultValue)},[t]),u(a.Box,{sx:{maxWidth:"480px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Preview"}),n(Hn,{filter:t,value:i,onChange:r}),n(a.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),n(Ie.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(t,null,4)})]})}),by={select:cy,"multi-select":uy,"tree-select":my,"text-input":py,checkbox:ly,"date-range":oy},yy=[{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"}],vy=_.observer(function({filter:t}){const i=M(),r=g.useMemo(()=>by[t.type],[t.type]);return u(a.Group,{grow:!0,spacing:20,align:"top",children:[u(a.Box,{sx:{maxWidth:"600px"},children:[n(a.Text,{pb:"md",color:"gray",children:"Edit"}),u(a.Stack,{children:[u(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:l=>t.setAutoSubmit(l.currentTarget.checked),mt:22})]}),n(a.MultiSelect,{label:"Visible in...",data:i.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:l=>{t.setKey(l.currentTarget.value)}}),n(a.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:t.label,onChange:l=>{t.setLabel(l.currentTarget.value)}}),n(a.Select,{label:"Widget",data:yy,required:!0,value:t.type,onChange:t.setType}),n(r,{config:t.config})]})]}),n(fy,{filter:t})]})}),xy=_.observer(({id:e})=>{const t=ce.useModals(),i=M();if(e==="")return null;const r=i.filters.findByID(e);if(!r)return u(a.Text,{size:14,children:["Filter by ID[",e,"] is not found"]});const l=()=>{t.openConfirmModal({title:"Delete this filter?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>i.filters.removeByID(e),zIndex:320})};return u(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(S.Trash,{size:16}),onClick:l,children:"Delete this filter"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(vy,{filter:r})})]})}),Cy=_.observer(()=>{const e=M(),[t,i]=g.useState(()=>JSON.stringify(e.mock_context.current,null,4)),r=()=>{try{e.mock_context.replace(JSON.parse(t))}catch(s){Qe.showNotification({title:"Failed",message:s.message,color:"red"})}},l=g.useMemo(()=>{try{return JSON.stringify(JSON.parse(t))!==JSON.stringify(e.mock_context.current)}catch{return!1}},[t,e.mock_context.current]);return u(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"})}),u(a.Group,{grow:!0,px:"md",pb:"md",pt:0,sx:{flexGrow:1,position:"relative",alignItems:"flex-start"},children:[u(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:i,sx:{flexGrow:1}})]}),n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",sx:{position:"absolute",right:12,top:0},disabled:!l,onClick:r,children:n(S.DeviceFloppy,{size:20})})]})]})}),wy=_.observer(()=>{const{panel:e}=Q();return n(Yt,{label:"Description",value:e.description,onChange:e.setDescription,styles:{root:{flexGrow:1}}})}),_y=_.observer(()=>{const{panel:e}=Q(),{style:t}=e;return n(k,{children:n(a.Switch,{label:"Border",checked:t.border.enabled,onChange:i=>t.border.setEnabled(i.currentTarget.checked)})})}),Sy=_.observer(()=>{const{panel:e}=Q(),{title:t,setTitle:i}=e,[r,l]=U.useInputState(t),s=t!==r,d=g.useCallback(()=>{s&&i(r)},[s,r]);return g.useEffect(()=>{l(t)},[t]),n(a.TextInput,{value:r,onChange:l,label:u(a.Group,{children:[n(a.Text,{children:"Panel Title"}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:!s,onClick:d,children:n(S.DeviceFloppy,{size:20})})]}),styles:{label:{display:"block",paddingBottom:"4px"}}})});function Ty(){return u(a.Stack,{sx:{height:"100%"},children:[n(a.Divider,{label:"Style",labelPosition:"center",variant:"dashed"}),n(_y,{}),n(a.Divider,{label:"Info",labelPosition:"center",variant:"dashed"}),n(Sy,{}),n(wy,{})]})}const Dy=({queryID:e})=>{const t=M(),{state:i,error:r}=t.getDataStuffByID(e),l=g.useMemo(()=>t.queries.findByID(e),[t,e]);return i==="loading"?null:r?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:r}):l!=null&&l.stateMessage?n(a.Text,{color:"gray",align:"center",children:l.stateMessage}):null},ky={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 jr({data:e}){const t=g.useMemo(()=>{if(!Array.isArray(e)||e.length===0)return[];const r=se.createColumnHelper();return Object.keys(e[0]).map(l=>r.accessor(l,{cell:s=>s.getValue()}))},[e]),i=se.useReactTable({data:e,columns:t,columnResizeMode:"onChange",getCoreRowModel:se.getCoreRowModel()});return e.length===0?n(a.Box,{sx:{height:"5em"}}):n(ie,{children:u(a.Table,{sx:ky,children:[n("thead",{children:i.getHeaderGroups().map(r=>n("tr",{children:r.headers.map(l=>u("th",{style:{width:l.getSize()},children:[l.isPlaceholder?null:se.flexRender(l.column.columnDef.header,l.getContext()),n(a.ActionIcon,{onMouseDown:l.getResizeHandler(),onTouchStart:l.getResizeHandler(),className:`resizer ${l.column.getIsResizing()?"isResizing":""}`,children:n(S.ArrowBarToRight,{})})]},l.id))},r.id))}),n("tbody",{children:i.getRowModel().rows.map(r=>n("tr",{children:r.getVisibleCells().map(l=>n("td",{children:n(ie,{children:se.flexRender(l.column.columnDef.cell,l.getContext())})},l.id))},r.id))})]})})}const Wr=_.observer(function({id:t}){const i=M(),{data:r,state:l}=i.getDataStuffByID(t),s=l==="loading",d=()=>{i.queries.refetchDataByQueryID(t)},o=()=>{i.queries.downloadDataByQueryID(t)},c=g.useMemo(()=>Array.isArray(r)?r.slice(0,10):[],[r]),p=!Array.isArray(r)||r.length===0;return u(a.Stack,{sx:{border:"1px solid #eee"},children:[u(a.Group,{position:"apart",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[u(a.Group,{position:"left",children:[n(a.Text,{weight:500,children:"Preview Data"}),r.length>10&&u(a.Text,{size:"sm",color:"gray",children:["Showing 10 rows of ",r.length]})]}),u(a.Group,{pr:15,children:[n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:s,onClick:d,children:n(S.Refresh,{size:15})}),n(a.ActionIcon,{variant:"subtle",color:"blue",disabled:s||p,onClick:o,children:n(S.Download,{size:15})})]})]}),u(a.Box,{sx:{position:"relative",overflow:"auto"},children:[n(a.LoadingOverlay,{visible:s}),n(Dy,{queryID:t}),n(jr,{data:c})]})]})}),Iy=_.observer(function(){const t=M(),{panel:{queryID:i,setQueryID:r}}=Q(),l=g.useMemo(()=>t.queries.current.map(d=>({value:d.id,label:d.name})),[t.queries.current]),s=()=>{t.editor.setPath(["_QUERIES_",i])};return u(a.Stack,{children:[u(a.Group,{position:"left",sx:{maxWidth:"600px",alignItems:"baseline"},children:[n(a.Text,{children:"Use query"}),n(a.Select,{data:l,value:i,onChange:r,allowDeselect:!1,clearable:!1,sx:{flexGrow:"1 !important"},maxDropdownHeight:300,rightSection:i&&n(a.Tooltip,{label:"Open this query",children:n(a.ActionIcon,{variant:"subtle",color:"blue",onClick:s,children:n(I.IconArrowCurveRight,{size:16})})})})]}),n(Wr,{id:i})]})}),My=_.observer(({height:e})=>{const t=M(),{data:i,loading:r,error:l,panel:{viz:s,queryID:d}}=Q(),o=t.queries.findByID(d);return n(nr,{viz:s,data:i,loading:r,error:l,query:o,height:e})}),Ay=_.observer(()=>{const{panel:{title:e,style:{border:t}}}=Q();return n(ie,{children:n(a.Box,{sx:{height:"100%",flexGrow:0,flexShrink:0,width:"600px"},children:u(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:[u(a.Group,{position:"apart",noWrap:!0,sx:{flexGrow:0,flexShrink:0},children:[n(a.Group,{children:n(ti,{})}),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(My,{height:"410px"})})]})})})}),Tn={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 zy{constructor(t){D(this,"panel");D(this,"selected");this.panel=t,$.makeAutoObservable(this,{},{deep:!1,autoBind:!0})}get variables(){return this.panel.variables}addNew(){const t=this.panel.variables.filter(i=>i.name.startsWith(Tn.name)).length;this.panel.addVariable(b.cloneDeep({...Tn,name:`${Tn.name}${t||""}`})),this.selected=b.last(this.panel.variables)}select(t){this.selected=t}remove(t){this.selected===t&&(this.selected=void 0);const i=this.panel.variables.indexOf(t);if(this.panel.removeVariable(t),!this.selected&&!b.isEmpty(this.panel.variables)){const r=Math.min(this.panel.variables.length-1,i);this.selected=this.panel.variables[r]}}}function Vy(){const{panel:e}=Q();return B.useCreation(()=>new zy(e),[e])}const Ly=g.forwardRef(function({value:t,onChange:i,data:r,withStyle:l=!0},s){const d=(o,c)=>{const p=b.cloneDeep(t);b.set(p,o,c),i(p)};return u(a.Box,{px:"sm",py:"md",ref:s,children:[u(a.Group,{grow:!0,noWrap:!0,children:[n(a.TextInput,{label:"Name",required:!0,value:t.name,onChange:o=>d("name",o.currentTarget.value)}),n(E,{label:"Data Field",required:!0,data:r,value:t.data_field,onChange:o=>d("data_field",o)})]}),n(et,{label:"Aggregation",value:t.aggregation,onChange:o=>d("aggregation",o)}),n(a.Divider,{my:"xs",label:"Format",labelPosition:"center"}),n(he,{value:t.formatter,onChange:o=>d("formatter",o)}),l&&n(vi,{value:t,onChange:i})]})}),Ur=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}})),Ey=e=>{const{uiModel:t}=e;return n(a.Stack,{className:"var-list",children:t.variables.map(i=>n(a.Button,{variant:t.selected===i?"filled":"subtle",color:"gray",onClick:()=>t.select(i),children:i.name},i.name))})},Py=_.observer(Ey),By=({variable:e,data:t})=>n(a.Group,{style:{minHeight:0,height:"calc(100% - 68px)"},children:n(a.Paper,{withBorder:!0,p:"md",children:xi(e,t)})}),Oy=_.observer(By),$y=e=>{const t=B.useCreation(()=>Tb(e.variable),[e.variable]),{classes:i}=Ur(),{data:r}=Q();return u(a.Group,{style:{height:"100%"},align:"start",children:[u(a.Stack,{"data-testid":"variable-editor",align:"stretch",className:i.config,children:[u(a.Group,{position:"right",children:[n(a.ActionIcon,{variant:"filled",disabled:!t.changed,color:"primary",onClick:t.commit,children:n(I.IconDeviceFloppy,{size:18})}),n(a.ActionIcon,{color:"red",onClick:()=>e.uiModel.remove(e.variable),children:n(I.IconTrash,{size:18})})]}),n(Ly,{value:m.getSnapshot(t.copy),onChange:t.update,data:r})]}),n(Oy,{variable:m.getSnapshot(t.copy),data:r})]})},Ny=_.observer($y),Gy=()=>{const e=Vy(),{classes:t}=Ur();return u(a.Group,{className:t.root,noWrap:!0,align:"start",children:[n(a.Paper,{withBorder:!0,p:"md",className:"var-list-container",children:u(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(Py,{uiModel:e})]})}),e.selected?n(k,{children:n(Ny,{uiModel:e,variable:e.selected})}):n("span",{children:"Select or create a new variable on right side"})]})},qy=_.observer(Gy);function Fy(){const{vizManager:e}=g.useContext(me);return g.useMemo(()=>{const t=e.availableVizList.map(i=>({value:i.name,label:i.displayName??i.name,group:i.displayGroup??""}));return b.orderBy(t,[i=>i.group,i=>i.label],["asc","asc"])},[e])}const jy=_.observer(({value:e,submit:t})=>{const[i,r]=U.useInputState(e);g.useEffect(()=>{r(e)},[e]);const l=Fy(),s=e!==i;return n(a.Select,{label:"Visualization",value:i,searchable:!0,onChange:r,data:l,rightSection:n(a.ActionIcon,{disabled:!s,onClick:()=>t(i),children:n(S.DeviceFloppy,{size:20})}),maxDropdownHeight:600})}),Rr=[];function Wy(e,t){try{return e.resolveComponent(t).createConfig()}catch{return null}}function Uy(){const{data:e,panel:{variables:t,viz:i,title:r,queryID:l,description:s,setDescription:d,setTitle:o,setQueryID:c,id:p}}=Q(),{vizManager:f}=g.useContext(me),y={title:r,description:s,viz:i,queryID:l,id:p},h={setDescription:d,setQueryID:c,setTitle:o},x=Hi(y);try{return f.resolveComponent(y.viz.type),n(Ze,{configure:x,children:n(sf,{variables:t,setVizConf:i.setConf,panel:y,panelInfoEditor:h,vizManager:f,data:e})})}catch(C){return console.info(b.get(C,"message")),null}}const Ry=_.observer(()=>{const{data:e,panel:{viz:t}}=Q(),{vizManager:i}=g.useContext(me),r=g.useCallback(p=>{if(p===t.type)return;const f=Wy(i,p);t.setType(p),t.setConf(f||{})},[t.type]),l=p=>{try{t.setConf(JSON.parse(p))}catch(f){console.error(f)}},s=g.useMemo(()=>{var p;return(p=Rr.find(f=>f.value===t.type))==null?void 0:p.Panel},[t.type,Rr]),d=Uy(),o=s?g.createElement(s,{data:e,conf:t.conf,setConf:t.setConf}):null,c=d||o;return u(a.Stack,{align:"stretch",sx:{height:"100%",overflow:"hidden"},children:[n(jy,{submit:r,value:t.type}),n(a.Stack,{pb:50,sx:{flexGrow:1,maxHeight:"calc(100% - 80px)",overflow:"auto"},children:c}),!c&&n(a.JsonInput,{minRows:20,label:"Config",value:JSON.stringify(t.conf,null,2),onChange:l})]})}),Qy=_.observer(({panel:e,sourceViewID:t})=>{const i=M(),[r,l]=g.useState(t);g.useEffect(()=>{l(t)},[t]);const[s,{open:d,close:o}]=U.useDisclosure(!1),c=()=>{e.moveToView(t,r),o()};return u(k,{children:[n(a.Button,{size:"xs",variant:"subtle",color:"blue",onClick:d,leftIcon:n(I.IconBoxMultiple,{size:14}),children:"Move into Another View"}),n(a.Modal,{opened:s,onClose:o,title:"Move panel into another view",zIndex:320,overflow:"inside",children:u(a.Stack,{sx:{maxHeight:"calc(100vh - 185px)",overflow:"hidden"},children:[n(a.Radio.Group,{value:r,onChange:l,pb:10,sx:{flexGrow:1,maxHeight:"calc(100vh - 185px - 30px)",overflow:"auto"},children:n(a.Stack,{spacing:"xs",children:i.views.options.map(p=>n(a.Radio,{value:p.value,label:p.label},p.value))})}),u(a.Group,{noWrap:!0,position:"apart",sx:{flexGrow:0,flexShrink:0},children:[n(a.Button,{size:"xs",color:"red",leftIcon:n(I.IconX,{size:14}),onClick:o,children:"Cancel"}),n(a.Button,{size:"xs",color:"blue",leftIcon:n(I.IconDeviceFloppy,{size:14}),onClick:c,disabled:r===t,children:"Confirm"})]})]})})]})}),Yy={root:{flexGrow:1,width:"100%",height:"100%"},panel:{width:"100%",height:"100%",padding:10}},Qr=({children:e})=>u(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(Ay,{})]});function Xy(e){return!["richText","button"].includes(e)}const Zy=_.observer(({panel:e})=>{const t=ce.useModals(),i=M(),[r,l]=g.useState("Data"),{data:s,state:d,error:o}=i.getDataStuffByID(e.queryID),c=i.queries.findByID(e.queryID),f=Xy(e.viz.type)&&d==="loading",y=f||o||!c||!!c.stateMessage,h=i.editor.path[1];g.useEffect(()=>{l(T=>y&&T==="Visualization"?"Data":T)},[e.id,y]);const x=()=>{i.editor.setPath(["_VIEWS_",h])},C=()=>t.openConfirmModal({title:"Delete this panel?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{i.removePanelByID(e.id,h),x()},confirmProps:{color:"red"},zIndex:320});return u(kt,{value:{panel:e,data:s,loading:f,error:o},children:[u(a.Group,{px:16,position:"apart",sx:{borderBottom:"1px solid #eee"},children:[u(a.Text,{pt:9,pb:8,children:[e.title?e.title:e.viz.type," "]}),u(a.Group,{position:"right",noWrap:!0,children:[n(Qy,{panel:e,sourceViewID:h}),n(a.Button,{size:"xs",variant:"subtle",color:"red",onClick:C,leftIcon:n(I.IconTrash,{size:14}),children:"Delete This Panel"})]})]}),u(a.Tabs,{value:r,onTabChange:l,keepMounted:!1,styles:Yy,children:[u(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:y,children:n(a.Tooltip,{label:"Requires data",disabled:!y,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Variables"})})}),n(a.Tabs.Tab,{value:"Visualization",disabled:y,children:n(a.Tooltip,{label:"Requires data",disabled:!y,withinPortal:!0,zIndex:310,children:n(a.Text,{children:"Visualization"})})}),n(a.Tabs.Tab,{value:"Interactions",children:"Interactions"})]}),u(a.Tabs.Panel,{value:"Data",children:[n(a.LoadingOverlay,{visible:f,exitTransitionDuration:0}),n(Iy,{})]}),n(a.Tabs.Panel,{value:"Panel",children:n(Qr,{children:n(Ty,{})})}),n(a.Tabs.Panel,{value:"Variables",children:n(qy,{})}),n(a.Tabs.Panel,{value:"Visualization",children:n(ie,{children:n(Qr,{children:n(Ry,{})})})}),n(a.Tabs.Panel,{value:"Interactions",children:n(ie,{children:n(af,{})})})]})]})}),Ky=_.observer(({viewID:e,panelID:t})=>{const i=M();if(!i.views.findByID(e))return u(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const l=i.panels.findByID(t);return l?n(Zy,{panel:l}):u(a.Text,{size:14,children:["Panel by ID[",t,"] is not found"]})}),Yr=({width:e="calc(100% - 32px)",lastWidth:t="50%",height:i,count:r,spacing:l=16,pl:s=0})=>u(a.Stack,{spacing:l,mt:6,pl:s,children:[Array.from(new Array(r-1),(d,o)=>n(a.Skeleton,{width:e,height:i,radius:"xs"},o)),n(a.Skeleton,{width:t,height:i,radius:"xs"})]}),je=({value:e})=>e===null||e===""?null:n(a.Tooltip,{label:e,disabled:!e,multiline:!0,children:n(a.ActionIcon,{children:n(I.IconInfoCircle,{size:14})})}),Jy=({column:e})=>{const{column_key:t,column_key_text:i}=e;return t?n(a.Tooltip,{label:i,disabled:!i,children:n(a.Badge,{children:t})}):null},Hy=_.observer(({dataSource:e})=>{const{columns:t}=e;return t.loading?n(Yr,{height:"24px",width:"100%",lastWidth:"100%",count:20,pl:6}):t.empty?null:u(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"1000px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[u("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:u("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(i=>u("tr",{children:[n("td",{children:i.ordinal_position}),n("td",{children:i.column_name}),n("td",{children:n(je,{value:i.column_comment})}),n("td",{children:n(Jy,{column:i})}),n("td",{children:i.column_type}),n("td",{children:i.is_nullable}),n("td",{children:n(je,{value:i.column_default})})]},i.column_name))})]})}),ev=_.observer(({dataSource:e})=>{const{indexes:t}=e,i=t.data;return u(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"950px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[u("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:u("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:i.map(r=>u("tr",{children:[n("td",{children:r.index_length}),n("td",{children:r.index_name}),n("td",{children:r.index_algorithm}),n("td",{children:r.is_unique?"YES":"NO"}),n("td",{children:r.column_name})]},r.index_name))})]})}),tv=_.observer(({dataSource:e})=>{const{indexes:t}=e,i=t.data;return u(a.Table,{highlightOnHover:!0,fontSize:14,sx:{width:"auto",minWidth:"850px",alignSelf:"flex-start",flexGrow:0,tableLayout:"fixed",tbody:{fontFamily:"monospace"}},children:[u("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:u("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:i.map(r=>u("tr",{children:[n("td",{children:r.index_name}),n("td",{children:r.index_algorithm}),n("td",{children:r.is_unique?"YES":"NO"}),n("td",{children:n(je,{value:r.index_definition})}),n("td",{children:n(je,{value:r.condition})}),n("td",{children:n(je,{value:r.comment})})]},r.index_name))})]})}),nv=_.observer(({dataSource:e})=>{const{indexes:t}=e;return t.loading||t.empty?null:e.type===F.MySQL?n(ev,{dataSource:e}):e.type===F.Postgresql?n(tv,{dataSource:e}):null}),iv=_.observer(({dataSource:e})=>u(a.Stack,{spacing:40,pt:10,sx:{flexGrow:1,overflow:"auto",position:"relative"},children:[n(ie,{children:n(Hy,{dataSource:e})}),n(ie,{children:n(nv,{dataSource:e})})]}));function rv({table_type:e}){return e==="VIEW"?n(I.IconEye,{size:14}):e==="BASE TABLE"?n(I.IconTable,{size:14}):null}const av=_.observer(({dataSource:e})=>{const{tables:t}=e;return t.loading?n(Yr,{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(([i,r])=>n(a.NavLink,{label:i,icon:n(I.IconDatabase,{size:14}),defaultOpened:e.table_schema===i,pl:0,childrenOffset:14,children:r.map(l=>n(a.NavLink,{label:l.table_name,icon:n(rv,{table_type:l.table_type}),onClick:()=>{e.setKeywords(i,l.table_name)},active:e.table_name===l.table_name},l.table_name))},i))})}),lv=({visible:e})=>n(a.Box,{py:10,sx:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:n(a.LoadingOverlay,{visible:e})}),sv=[{label:"10",value:"10"},{label:"20",value:"20"},{label:"50",value:"50"},{label:"100",value:"100"}],ov={icon:{width:"50px",textAlign:"center"},input:{"&.mantine-Input-withIcon":{paddingLeft:"50px"}}},dv=_.observer(({dataSource:e})=>{const{tableData:t}=e;return u(a.Group,{pt:10,px:10,position:"apart",children:[u(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:ov,data:sv,value:String(t.limit),onChange:i=>t.setLimit(Number(i))})]}),n(a.Group,{position:"right",children:u(a.Text,{color:"dimmed",my:0,size:14,children:["Total ",t.total," rows"]})})]})}),uv=_.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&&(a.Text,t.error),t.page===1&&t.loading?n(lv,{visible:!0}):u(ie,{children:[n(dv,{dataSource:e}),u(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(jr,{data:t.data})]})]}))}),cv={root:{flexGrow:1,overflow:"auto",borderLeft:"1px solid #efefef"},tabsList:{borderBottom:"1px solid #efefef"},tab:{minWidth:120}},pv=_.observer(({dataSource:e})=>(g.useEffect(()=>{e.loadTablesIfEmpty()},[e]),e.tables.error?n(a.Text,{color:"red",size:"md",align:"center",sx:{fontFamily:"monospace"},children:e.tables.error}):u(a.Flex,{sx:{height:"100%"},children:[n(a.Box,{w:300,sx:{flexGrow:0,flexShrink:0,position:"relative"},children:n(ie,{children:n(av,{dataSource:e})})}),u(a.Tabs,{defaultValue:"structure",styles:cv,children:[u(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"structure",icon:n(I.IconColumns,{size:14}),children:"Structure"}),n(a.Tabs.Tab,{value:"data",icon:n(I.IconDatabase,{size:14}),children:"Data"})]}),n(a.Tabs.Panel,{value:"structure",children:n(iv,{dataSource:e})}),n(a.Tabs.Panel,{value:"data",sx:{width:"100%",height:"calc(100% - 36px)",overflow:"hidden"},children:n(uv,{dataSource:e})})]})]}))),hv={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"}},Xr=_.observer(({dataSource:e,triggerButtonProps:t={}})=>{const[i,r]=g.useState(!1);return u(k,{children:[n(a.Modal,{opened:i,onClose:()=>r(!1),title:u(a.Group,{position:"apart",sx:{flexGrow:1},children:[n(a.Text,{fw:500,children:"Explorer Data Source"}),u(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:hv,children:n(a.Box,{sx:{height:"calc(100vh - 220px)"},children:n(pv,{dataSource:e})})}),n(a.Button,{variant:"subtle",onClick:()=>r(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},...t,children:"See Table Structure"})]})}),gv=g.forwardRef(({label:e,type:t,...i},r)=>u(a.Group,{position:"apart",ref:r,...i,children:[n(a.Text,{children:e}),n(a.Text,{children:t})]})),mv=_.observer(({value:e,onChange:t})=>{const i=M(),{data:r=[],loading:l}=B.useRequest(fn,{refreshDeps:[]},[]),s=g.useMemo(()=>r.map(p=>({label:p.key,value:p.key,type:p.type})),[r]),d=g.useMemo(()=>s.reduce((p,f)=>(p[f.value]=f.type,p),{}),[s]),o=p=>{p!==null&&t({key:p,type:d[p]})},c=g.useMemo(()=>i.datasources.find(e),[i,e]);return n(a.Select,{data:s,label:u(a.Group,{position:"apart",children:[n(a.Box,{children:"Data Source"}),c&&n(Xr,{dataSource:c,triggerButtonProps:{compact:!0,size:"xs",px:10}})]}),itemComponent:gv,rightSection:c?n(a.Text,{size:"xs",color:"dimmed",children:c.type}):void 0,rightSectionWidth:85,maxDropdownHeight:280,styles:{root:{flex:1},label:{display:"block"},rightSection:{pointerEvents:"none",".mantine-Text-root":{userSelect:"none"}}},disabled:l,value:e.key,onChange:o})}),fv=e=>{const{queryModel:t}=e,i=M(),l=i.findQueryUsage(t.id).length>0,s=ce.useModals(),d=()=>{s.openConfirmModal({title:"Delete this query?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>{i.queries.removeQuery(t.id),i.editor.setPath(["_QUERIES_",""])},zIndex:320})};return l?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(I.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})}):n(a.Button,{color:"red",size:"xs",onClick:d,leftIcon:n(I.IconTrash,{size:16}),sx:{alignSelf:"flex-end"},children:"Delete this Query"})},bv=_.observer(fv),yv=_.observer(({queryModel:e})=>n(a.Center,{ml:20,mt:20,sx:{maxWidth:"600px"},children:u(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(mv,{value:{type:e.type,key:e.key},onChange:({type:t,key:i})=>{e.setKey(i),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(bv,{queryModel:e})]})}));function vv(){const[e,{open:t,close:i}]=U.useDisclosure(!1);return u(k,{children:[n(a.Modal,{opened:e,onClose:i,title:"About FunctionUtils",zIndex:320,children:n(Ke,{value:Kf,styles:{root:{border:"none"},content:{padding:0}}})}),n(a.Button,{variant:"light",color:"violet",size:"xs",onClick:t,leftIcon:n(I.IconInfoCircle,{size:16}),children:"About parameter 'utils'"})]})}const xv=({value:e,onChange:t})=>{const i=r=>{r&&t(r)};return n(a.Box,{sx:{position:"relative",flexGrow:1},children:n(Z,{className:"function-editor",height:"100%",defaultLanguage:"javascript",value:e,onChange:i,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1}}})})},yt=g.forwardRef(({value:e,onChange:t,label:i,defaultValue:r},l)=>{const[s,d]=g.useState(e),o=()=>{t(s)},c=()=>{d(e)},p=()=>{d(r)};g.useEffect(()=>{d(e)},[e]);const f=s!==e;return u(a.Stack,{spacing:4,sx:{height:"100%"},children:[u(a.Group,{mb:6,position:"apart",sx:{flexShrink:0,flexGrow:0},children:[n(a.Group,{position:"left",children:n(vv,{})}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,size:"xs",variant:"default",leftIcon:n(I.IconPlayerSkipBack,{size:16}),children:"Reset to default"}),n(a.Button,{onClick:c,color:"red",size:"xs",disabled:!f,leftIcon:n(I.IconRecycle,{size:16}),children:"Revert Changes"}),n(a.Button,{size:"xs",onClick:o,disabled:!f,leftIcon:n(I.IconDeviceFloppy,{size:16}),children:"Confirm Changes"})]})]}),n(a.Text,{size:14,children:i}),n(xv,{value:s,onChange:d})]})}),Cv=`
349
349
  -- You may reference global variables in SQL or VizConfig.
350
350
  SELECT *
351
351
  FROM commit
@@ -357,8 +357,8 @@ WHERE
357
357
  -- SQL snippets
358
358
  AND \${sql_snippets.author_email_condition}
359
359
  \${sql_snippets.order_by_clause}
360
- `,Zr=_.observer(function({showSQLSnippets:t=!0,sx:i={}}){const r=M(),l=r.context.current,s=(()=>{const o={context:{...r.mock_context.current,...l},filters:r.filters.previewValues};return t&&(o.sql_snippets=r.sqlSnippets.record),JSON.stringify(o,null,2)})();return n(a.Stack,{sx:{overflow:"hidden",...i},children:u(a.Stack,{sx:{width:"100%"},children:[n(a.Text,{weight:500,sx:{flexGrow:0},children:"Guide"}),n(Ie.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:Cv}),n(a.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),n(Ie.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:s})]})})}),Dn=_.observer(()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Modal,{opened:e,onClose:()=>t(!1),title:"Global Variables",zIndex:320,size:"800px",children:n(Zr,{})}),n(a.Button,{variant:"subtle",onClick:()=>t(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},children:"See Global Variables"})]})}),Kr={pre:["function build_request({ context, filters }, utils) {"," // build the quest"," return { method, url, params, headers, data }","}"].join(`
360
+ `,Zr=_.observer(function({showSQLSnippets:t=!0,sx:i={}}){const r=M(),l=r.context.current,s=(()=>{const d={context:{...r.mock_context.current,...l},filters:r.filters.previewValues};return t&&(d.sql_snippets=r.sqlSnippets.record),JSON.stringify(d,null,2)})();return n(a.Stack,{sx:{overflow:"hidden",...i},children:u(a.Stack,{sx:{width:"100%"},children:[n(a.Text,{weight:500,sx:{flexGrow:0},children:"Guide"}),n(Ie.Prism,{language:"sql",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:Cv}),n(a.Text,{weight:500,sx:{flexGrow:0},children:"Current Values"}),n(Ie.Prism,{language:"json",sx:{width:"100%"},noCopy:!0,colorScheme:"dark",children:s})]})})}),Dn=_.observer(()=>{const[e,t]=g.useState(!1);return u(k,{children:[n(a.Modal,{opened:e,onClose:()=>t(!1),title:"Global Variables",zIndex:320,size:"800px",children:n(Zr,{})}),n(a.Button,{variant:"subtle",onClick:()=>t(!0),px:16,styles:{inner:{justifyContent:"flex-start"}},children:"See Global Variables"})]})}),Kr={pre:["function build_request({ context, filters }, utils) {"," // build the quest"," return { method, url, params, headers, data }","}"].join(`
361
361
  `),post:["function process_result(res, utils) {"," // your code goes here"," return data","}"].join(`
362
- `)},wv=_.observer(({queryModel:e})=>e.typedAsHTTP?u(a.Tabs,{defaultValue:"pre_process",orientation:"vertical",sx:{flexGrow:1},children:[u(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(Dn,{})]}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(yt,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Kr.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(yt,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Kr.post})})]}):null),kn=({value:e,onChange:t,height:i="200px",defaultLanguage:r="sql"})=>{const l=o=>{console.log("changing"),t==null||t(o??"")},s=!t;return n(Z,{className:"minimal-monaco-editor",height:i,defaultLanguage:r,value:e,onChange:s?void 0:l,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1},readOnly:s||!t}})},_v=({value:e,height:t="200px",defaultLanguage:i="sql"})=>n(Z,{className:"preview-sql-in-monaco-editor",height:t,defaultLanguage:i,value:e,onChange:void 0,theme:"vs-light",options:{lineNumbers:"on",folding:!0,lineDecorationsWidth:20,wordWrap:"on",minimap:{enabled:!1},readOnly:!0}}),Sv=_.observer(({value:e})=>{const t=M(),i=t.context.current,r=g.useMemo(()=>wr(e,i,t.mock_context.current,t.sqlSnippets.current,t.filters.values),[e,i,t.mock_context.current,t.sqlSnippets.current,t.filters.values]);return n(_v,{height:"100%",value:r})}),Jr={pre:["function process_request({ context, filters, sql }, utils) {"," // modify and return sql"," return sql","}"].join(`
362
+ `)},wv=_.observer(({queryModel:e})=>e.typedAsHTTP?u(a.Tabs,{defaultValue:"pre_process",orientation:"vertical",sx:{flexGrow:1},children:[u(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(Dn,{})]}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(yt,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Kr.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(yt,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Kr.post})})]}):null),kn=({value:e,onChange:t,height:i="200px",defaultLanguage:r="sql"})=>{const l=d=>{console.log("changing"),t==null||t(d??"")},s=!t;return n(Z,{className:"minimal-monaco-editor",height:i,defaultLanguage:r,value:e,onChange:s?void 0:l,theme:"vs-dark",options:{lineNumbers:"off",folding:!1,lineDecorationsWidth:20,lineNumbersMinChars:0,wordWrap:"on",minimap:{enabled:!1},readOnly:s||!t}})},_v=({value:e,height:t="200px",defaultLanguage:i="sql"})=>n(Z,{className:"preview-sql-in-monaco-editor",height:t,defaultLanguage:i,value:e,onChange:void 0,theme:"vs-light",options:{lineNumbers:"on",folding:!0,lineDecorationsWidth:20,wordWrap:"on",minimap:{enabled:!1},readOnly:!0}}),Sv=_.observer(({value:e})=>{const t=M(),i=t.context.current,r=g.useMemo(()=>wr(e,i,t.mock_context.current,t.sqlSnippets.current,t.filters.values),[e,i,t.mock_context.current,t.sqlSnippets.current,t.filters.values]);return n(_v,{height:"100%",value:r})}),Jr={pre:["function process_request({ context, filters, sql }, utils) {"," // modify and return sql"," return sql","}"].join(`
363
363
  `),post:["function process_result(data, utils) {"," // process data and return the result"," return data","}"].join(`
364
- `)},Tv=_.observer(({queryModel:e})=>{const[t,i]=g.useState(e.sql);g.useEffect(()=>{i(s=>s!==e.sql?e.sql:s)},[e.sql]);const r=t!==e.sql,l=()=>{e.setSQL(t)};return e.typedAsSQL?u(a.Tabs,{defaultValue:"Edit",orientation:"vertical",sx:{flexGrow:1},styles:{tabLabel:{width:"100%",height:"28px",lineHeight:"28px"}},keepMounted:!1,children:[u(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Edit",children:u(a.Group,{spacing:14,position:"apart",children:["Edit SQL",n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!r,onClick:l,children:n(S.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(Dn,{}),e.datasource&&n(Xr,{dataSource:e.datasource})]}),n(a.Tabs.Panel,{value:"Edit",sx:{position:"relative"},p:"sm",children:n(kn,{height:"100%",value:t,onChange:i})}),n(a.Tabs.Panel,{value:"Preview",p:0,pl:4,children:n(Sv,{value:e.sql})}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(yt,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Jr.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(yt,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Jr.post})})]}):null}),Dv=_.observer(({queryID:e,usage:t})=>{const i=M().editor,r=s=>{if(s.type==="filter"){i.setPath(["_FILTERS_",s.id]);return}if(s.type==="panel"){const o=s.views[0].id;i.setPath(["_VIEWS_",o,"_PANELS_",s.id]);return}},l=s=>{i.setPath(["_VIEWS_",s])};return n(a.Stack,{py:"sm",px:"md",children:u(a.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[n("thead",{children:u("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(s=>u("tr",{children:[n("td",{children:b.capitalize(s.type)}),n("td",{children:n(a.Anchor,{component:"button",type:"button",onClick:()=>r(s),children:s.label})}),n("td",{children:u(a.Stack,{align:"flex-start",justify:"flex-start",spacing:2,children:[s.views.map(o=>n(a.Anchor,{component:"button",type:"button",onClick:()=>l(o.id),children:n(a.Box,{children:o.label})})),s.views.length===0&&n(a.Box,{children:"--"})]})})]},s.id))})]})})}),vt={height:"calc(100% - 44px)",padding:0},kv=_.observer(({queryModel:e})=>{const t=M(),i=g.useMemo(()=>e.datasource?e.typedAsHTTP?"HTTP":"SQL":"Configurations",[e.datasource,e.typedAsHTTP]),r=t.findQueryUsage(e.id),l=r.length===0;return n(a.Stack,{sx:{flexGrow:1},my:0,p:0,children:u(a.Tabs,{defaultValue:i,orientation:"horizontal",keepMounted:!1,sx:{flexGrow:1},children:[u(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:l,children:n(a.Tooltip,{label:"This query is not used for any filter or panel",disabled:!l,withinPortal:!0,children:n(a.Text,{children:"Usage"})})})]}),n(a.Tabs.Panel,{value:"Configurations",pt:0,p:0,children:n(yv,{queryModel:e})}),e.typedAsSQL&&n(a.Tabs.Panel,{value:"SQL",sx:vt,children:n(a.Stack,{sx:{height:"100%"},children:n(Tv,{queryModel:e})})}),e.typedAsHTTP&&n(a.Tabs.Panel,{value:"HTTP",sx:vt,children:n(a.Stack,{sx:{height:"100%"},children:n(wv,{queryModel:e})})}),n(a.Tabs.Panel,{value:"Data",sx:{...vt,overflow:"hidden"},children:n(Wr,{id:e.id})}),n(a.Tabs.Panel,{value:"Usage",sx:{...vt,overflow:"hidden"},children:n(Dv,{queryID:e.id,usage:r})})]})})}),Iv=_.observer(({id:e})=>{const i=M().queries.findByID(e);return e===""?null:i?n(a.Stack,{sx:{height:"100%"},spacing:"sm",children:n(kv,{queryModel:i})}):n(a.Text,{size:14,color:"red",children:"Invalid Query ID"})}),Mv=_.observer(({value:e})=>{const t=M(),i=t.context.current,r=rb(e,i,t.mock_context.current,t.filters.values);return n(kn,{height:"100%",value:r})}),Av=_.observer(({item:e,remove:t,onKeyChanged:i})=>{const[r,l]=g.useState("SQL"),[s,o]=g.useState(e.key),d=()=>{e.setKey(s),i(s)},c=s!==e.key,p=e.isADuplicatedKey(s),[f,y]=g.useState(e.value),h=()=>{e.setValue(f)};g.useEffect(()=>{o(e.key),y(e.value)},[e]);const x=f!==e.value,C=ce.useModals(),T=()=>{C.openConfirmModal({title:"Delete this SQL snippet?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:t,zIndex:320})};return u(a.Stack,{p:20,sx:{maxWidth:"1100px",height:"100vh"},spacing:"sm",children:[u(a.Group,{sx:{alignItems:"end"},spacing:40,children:[n(a.TextInput,{label:p?"This key is occupied by another snippet":"Key",value:s,onChange:L=>{o(L.currentTarget.value)},sx:{flexGrow:"1 !important"},rightSection:n(a.ActionIcon,{color:"blue",variant:"subtle",onClick:d,disabled:!c||p,children:n(S.DeviceFloppy,{size:16})}),error:p}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:T,children:"Delete this SQL Snippet"})]}),u(a.Tabs,{value:r,onTabChange:l,sx:{flexGrow:1},styles:{panel:{height:"calc(100% - 50px)"}},children:[u(a.Tabs.List,{sx:{position:"relative"},children:[n(a.Tabs.Tab,{value:"SQL",children:"SQL"}),n(a.Tabs.Tab,{value:"Preview",children:"Preview"}),n(Dn,{}),n(a.ActionIcon,{color:"blue",variant:"filled",onClick:h,disabled:!x,sx:{position:"absolute",top:0,right:10},children:n(S.DeviceFloppy,{size:18})})]}),n(a.Tabs.Panel,{value:"SQL",pt:"sm",children:n(kn,{height:"100%",value:f,onChange:y})}),n(a.Tabs.Panel,{value:"Preview",pt:"sm",children:n(Mv,{value:f})})]})]})}),zv=_.observer(({id:e})=>{const t=M(),i=g.useMemo(()=>t.sqlSnippets.findByKey(e),[e]);return i?n(Av,{item:i,remove:()=>t.sqlSnippets.removeByKey(e),onKeyChanged:s=>{t.editor.setPath(["_SQL_SNIPPETS_",s])}}):u(a.Text,{size:14,children:["SQL Snippet by key[",e,"] is not found"]})}),Vv=_.observer(({view:e})=>!e||e.type!==O.Division?null:u(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"})]})),Lv=[{value:"default",label:"Default"},{value:"outline",label:"Outline"},{value:"pills",label:"Pills"}],Ev=[{value:"horizontal",label:"Horizontal"},{value:"vertical",label:"Vertical"}],Pv=_.observer(({view:e})=>{if(!e||e.type!==O.Tabs)return null;const t=e.config;return u(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:Lv}),n(a.Select,{label:"Orientation",value:t.orientation,onChange:t.setOrientation,data:Ev}),n(a.Switch,{label:"Grow Tabs",checked:t.grow,onChange:i=>t.setGrow(i.currentTarget.checked)})]})}),Bv=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Ov=({value:e,onChange:t})=>{const[i,{setTrue:r,setFalse:l}]=B.useBoolean(),[s,o]=g.useState(e??bn),d=h=>{o({...s,enabled:h})},c=()=>{l();const{enabled:h,func_content:x}=s,C={enabled:h,func_content:x};o(C),t(C)},p=()=>{l(),o(e)},f=h=>{o(x=>({...x,func_content:h}))},y=()=>{f(bn.func_content)};return u(k,{children:[n(a.ActionIcon,{size:"lg",color:"blue",variant:"filled",mt:26,onClick:r,sx:{flexGrow:0},children:n(S.Settings,{size:14})}),n(a.Modal,{size:800,title:"Customize modal title",opened:i,onClose:l,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:s.enabled,onChange:h=>d(h.currentTarget.checked)}),n(Bv,{value:s.func_content,onChange:f,disabled:!s.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},$v=_.observer(({view:e})=>{if(!e||e.type!==O.Modal)return null;const t=e.config,i=t.custom_modal_title.value;return u(a.Stack,{children:[n(a.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),u(a.Flex,{gap:10,children:[n(a.TextInput,{label:"Modal Title",value:i,onChange:b.noop,disabled:!0,sx:{flexGrow:1}}),n(Ov,{value:t.custom_modal_title,onChange:t.custom_modal_title.replace})]}),u(a.Group,{grow:!0,children:[n(a.TextInput,{label:"Width",value:t.width,onChange:r=>t.setWidth(r.currentTarget.value),placeholder:"600px / 50vw"}),n(a.TextInput,{label:"Height",value:t.height,onChange:r=>t.setHeight(r.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),Nv=_.observer(({view:e})=>u(k,{children:[n(Vv,{view:e}),n($v,{view:e}),n(Pv,{view:e})]})),Gv=[{label:"Division",value:O.Division},{label:"Modal",value:O.Modal},{label:"Tabs",value:O.Tabs}],qv=_.observer(({view:e})=>e?u(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:Gv}),n(Nv,{view:e})]}):null),Fv=_.observer(({id:e})=>{const t=ce.useModals(),i=M(),r=i.views.findByID(e);if(!r)return u(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const l=()=>{t.openConfirmModal({title:"Delete this view?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>i.views.removeByID(e),zIndex:320})};return u(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(S.Trash,{size:16}),onClick:l,children:"Delete this view"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(qv,{view:r})})]})});function jv(e){return e.length===1&&e[0]==="_GLOBAL_VARS_"}function Wv(e){return e.length===1&&e[0]==="_MOCK_CONTEXT_"}function Uv(e){return e.length===2&&e[0]==="_FILTERS_"}function Rv(e){return e.length===2&&e[0]==="_SQL_SNIPPETS_"}function Qv(e){return e.length===2&&e[0]==="_QUERIES_"}function Yv(e){return e.length===2&&e[0]==="_VIEWS_"}function Xv(e){return e.length===4&&e[0]==="_VIEWS_"&&e[2]==="_PANELS_"}const Zv=_.observer(()=>n(a.Stack,{sx:{height:"100%"},p:"sm",children:n(Zr,{})})),Kv=_.observer(()=>{const e=M().editor,t=e.path;return jv(t)?n(Zv,{}):Wv(t)?n(Cy,{}):Uv(t)?n(a.Box,{p:"xs",pl:20,children:n(xy,{id:t[1]})}):Rv(t)?n(zv,{id:t[1]}):Qv(t)?n(Iv,{id:t[1]}):Yv(t)?n(a.Box,{p:"xs",pl:20,children:n(Fv,{id:t[1]})}):Xv(t)?n(Ky,{viewID:t[1],panelID:t[3]}):n(a.Box,{children:e.path})}),Jv=_.observer(()=>(M().editor,n(Kv,{}))),Hv=_.observer(()=>{const e=M(),t=()=>{const i=new Date().getTime().toString(),r={id:i,key:i,label:i,order:e.filters.current.length+1,type:cn.TextInput,config:mr(),visibleInViewsIDs:["Main"],auto_submit:!1};e.filters.append(r)};return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),ex=_.observer(({parentID:e})=>{const t=M();if(!e)return null;const i=t.views.findByID(e);return i?n(a.Button,{variant:"subtle",leftIcon:n(I.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:()=>t.addANewPanel(i.id),sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Panel"}):null}),tx=_.observer(()=>{const e=M(),t=()=>{const i=new Date().getTime().toString(),r={id:i,name:i,type:F.Postgresql,key:"",sql:""};e.queries.append(r)};return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),nx=_.observer(()=>{const e=M(),t=()=>{const r={key:new Date().getTime().toString(),value:""};e.sqlSnippets.append(r)};return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),ix=_.observer(()=>{const e=M();return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),rx=_.observer(({action_type:e,parentID:t})=>(M(),e==="_Add_A_Filter_"?n(Hv,{}):e==="_Add_A_SQL_SNIPPET_"?n(nx,{}):e==="_Add_A_QUERY_"?n(tx,{}):e==="_Add_A_VIEW_"?n(ix,{}):e==="_Add_A_PANEL_"?n(ex,{parentID:t}):null)),Hr=_.observer(({option:e})=>{var p;const t=M().editor,i=t.isOptionActive,r=i(t.path,e),l=t.isOptionOpened,s=t.navigate,o=l(e),[d,c]=g.useState(o);return g.useEffect(()=>{c(o)},[o]),n(a.NavLink,{active:r,defaultOpened:o,opened:d,onChange:c,label:e.label,onClick:()=>s(e),icon:e.Icon?n(e.Icon,{size:18}):null,children:(p=e.children)==null?void 0:p.map(f=>f._type==="ACTION"?n(rx,{action_type:f._action_type,parentID:f.parentID},`_ADD_${f.value}_`):n(Hr,{option:f},f.value))},e.label)}),ax=_.observer(()=>{const e=M();return n(a.Box,{sx:{position:"relative"},children:e.editor.navOptions.map(t=>n(Hr,{option:t},t.value))})}),lx=_.observer(()=>{const e=M();return u(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(ax,{})}),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(I.IconX,{size:18}),onClick:()=>e.editor.close(),children:"Close"})})})]})}),sx={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"}},ox=_.observer(()=>{const e=M().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(lx,{}),styles:sx,children:n(Jv,{})})})}),dx=e=>e.replace(/([^:])(\/\/+)/g,"$1/");function ux(e){g.useEffect(()=>{if(Z.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/dashboard");const i=dx(e);Z.loader.config({paths:{vs:i}}),Z.loader.init().then(r=>console.log("monaco instance:",r))},[])}const ea={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 cx(){N.registerTheme("merico-light",{color:Object.values(ea.graphics.multiple),visualMap:{color:Object.values(ea.graphics.depth).reverse()}})}function ta(){cx()}ta();const px={root:{height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"},body:{flexGrow:1},main:{flexGrow:1,display:"flex",flexDirection:"column",paddingTop:60,height:"100vh"}},hx=_.observer(g.forwardRef(function({context:t,dashboard:i,update:r,className:l="dashboard",config:s,onChange:o,headerSlot:d},c){ux(s.monacoPath),sr(s);const{data:p=[]}=B.useRequest(fn),[f,y]=g.useState(!1),h=g.useMemo(()=>vn(i,p,t),[i]);g.useImperativeHandle(c,()=>h,[h]),Rn(h,!0),g.useEffect(()=>{h.context.replace(t)},[t]),g.useEffect(()=>{h.datasources.replace(p)},[p]),g.useEffect(()=>$.reaction(()=>$.toJS(h.json),L=>{o==null||o(L)}),[h]);const x=async()=>{await r(h.json)},C=B.useCreation(dn,[]),T=xn(C);return n(ce.ModalsProvider,{children:n(Tt,{value:h,children:n(we.Provider,{value:{layoutFrozen:f,freezeLayout:y,inEditMode:!0},children:n(me.Provider,{value:C,children:u(Ze,{configure:T,children:[n(a.AppShell,{padding:0,header:n(Lb,{saveDashboardChanges:x,headerSlot:d}),navbar:n(ay,{}),styles:px,children:n(a.Box,{className:`${l} dashboard-root`,sx:{position:"relative"},children:h.views.visibleViews.map(L=>n(lr,{view:L},L.id))})}),n(ox,{})]})})})})})})),Ax="";ta();const gx=_.observer(({context:e,dashboard:t,className:i="dashboard",config:r,fullScreenPanelID:l,setFullScreenPanelID:s})=>{sr(r);const{data:o=[]}=B.useRequest(fn),d=g.useMemo(()=>vn(t,o,e),[t]);Rn(d,!1),g.useEffect(()=>{d.context.replace(e)},[e]),g.useEffect(()=>{d.datasources.replace(o)},[o]);const c=B.useCreation(dn,[]),p=xn(c);return n(ce.ModalsProvider,{children:n(Tt,{value:d,children:n(It.Provider,{value:{fullScreenPanelID:l,setFullScreenPanelID:s},children:n(we.Provider,{value:{layoutFrozen:!0,freezeLayout:b.noop,inEditMode:!1},children:n(a.Box,{className:`${i} dashboard-root`,children:n(me.Provider,{value:c,children:n(Ze,{configure:p,children:d.views.visibleViews.map(f=>n(pt,{view:f},f.id))})})})})})})})});z.extend(ga),z.extend(ma),z.extend(fa),z.extend(ba),z.extend(ya),z.extend(va),z.extend(xa),z.extend(Ca),z.extend(wa),z.extend(_a),z.extend(Sa),z.extend(ka),z.extend(Ia),z.extend(Ma),z.extend(Aa),z.extend(za),z.extend(Ta),z.extend(Da),z.extend(Va),z.extend(La),z.extend(Ea),z.extend(Pa),z.extend(Ba),z.extend(Oa),z.extend($a),z.extend(Na),z.extend(Ga),z.extend(qa),z.extend(Fa),z.extend(ja),z.extend(Wa),z.extend(Ra),z.extend(Qa),z.extend(Ua),z.tz.setDefault("UTC");const mx=()=>Promise.resolve().then(()=>Il).then(({version:e})=>(console.log(`[@devtable/dashboard] version: ${e}`),e));w.ContextModel=kr,w.Dashboard=hx,w.DashboardFilterType=cn,w.DashboardMode=rr,w.DashboardModel=mt,w.DashboardViewEditor=lr,w.DashboardViewRender=pt,w.EViewComponentType=O,w.FilterModel=hn,w.FiltersModel=yr,w.FullScreenPanelContext=It,w.LayoutStateContext=we,w.ModelContextProvider=Tt,w.Panel=ct,w.PanelContextProvider=kt,w.PanelModel=Ir,w.PanelsModel=Ar,w.QueriesModel=Sr,w.QueryModel=_r,w.ReadOnlyDashboard=gx,w.SQLSnippetModel=Tr,w.SQLSnippetsModel=Dr,w.ViewComponentTypeBackground=ar,w.ViewComponentTypeColor=Cf,w.ViewComponentTypeName=xf,w.ViewModel=Er,w.ViewsModel=Pr,w.applyPartialDashboard=Vb,w.createDashboardModel=vn,w.createDashboardViewsModel=yn,w.getInitialFiltersPayload=vr,w.getNewPanel=Mr,w.getVersion=mx,w.useFullScreenPanelContext=Kn,w.useModelContext=M,w.usePanelContext=Q,w.useTopLevelServices=xn,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
364
+ `)},Tv=_.observer(({queryModel:e})=>{const[t,i]=g.useState(e.sql);g.useEffect(()=>{i(s=>s!==e.sql?e.sql:s)},[e.sql]);const r=t!==e.sql,l=()=>{e.setSQL(t)};return e.typedAsSQL?u(a.Tabs,{defaultValue:"Edit",orientation:"vertical",sx:{flexGrow:1},styles:{tabLabel:{width:"100%",height:"28px",lineHeight:"28px"}},keepMounted:!1,children:[u(a.Tabs.List,{children:[n(a.Tabs.Tab,{value:"Edit",children:u(a.Group,{spacing:14,position:"apart",children:["Edit SQL",n(a.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!r,onClick:l,children:n(S.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(Dn,{}),e.datasource&&n(Xr,{dataSource:e.datasource})]}),n(a.Tabs.Panel,{value:"Edit",sx:{position:"relative"},p:"sm",children:n(kn,{height:"100%",value:t,onChange:i})}),n(a.Tabs.Panel,{value:"Preview",p:0,pl:4,children:n(Sv,{value:e.sql})}),n(a.Tabs.Panel,{value:"pre_process",sx:{position:"relative"},p:"sm",children:n(yt,{label:"",value:e.pre_process,onChange:e.setPreProcess,defaultValue:Jr.pre})}),n(a.Tabs.Panel,{value:"post_process",p:"sm",children:n(yt,{label:"",value:e.post_process,onChange:e.setPostProcess,defaultValue:Jr.post})})]}):null}),Dv=_.observer(({queryID:e,usage:t})=>{const i=M().editor,r=s=>{if(s.type==="filter"){i.setPath(["_FILTERS_",s.id]);return}if(s.type==="panel"){const d=s.views[0].id;i.setPath(["_VIEWS_",d,"_PANELS_",s.id]);return}},l=s=>{i.setPath(["_VIEWS_",s])};return n(a.Stack,{py:"sm",px:"md",children:u(a.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[n("thead",{children:u("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(s=>u("tr",{children:[n("td",{children:b.capitalize(s.type)}),n("td",{children:n(a.Anchor,{component:"button",type:"button",onClick:()=>r(s),children:s.label})}),n("td",{children:u(a.Stack,{align:"flex-start",justify:"flex-start",spacing:2,children:[s.views.map(d=>n(a.Anchor,{component:"button",type:"button",onClick:()=>l(d.id),children:n(a.Box,{children:d.label})})),s.views.length===0&&n(a.Box,{children:"--"})]})})]},s.id))})]})})}),vt={height:"calc(100% - 44px)",padding:0},kv=_.observer(({queryModel:e})=>{const t=M(),i=g.useMemo(()=>e.datasource?e.typedAsHTTP?"HTTP":"SQL":"Configurations",[e.datasource,e.typedAsHTTP]),r=t.findQueryUsage(e.id),l=r.length===0;return n(a.Stack,{sx:{flexGrow:1},my:0,p:0,children:u(a.Tabs,{defaultValue:i,orientation:"horizontal",keepMounted:!1,sx:{flexGrow:1},children:[u(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:l,children:n(a.Tooltip,{label:"This query is not used for any filter or panel",disabled:!l,withinPortal:!0,children:n(a.Text,{children:"Usage"})})})]}),n(a.Tabs.Panel,{value:"Configurations",pt:0,p:0,children:n(yv,{queryModel:e})}),e.typedAsSQL&&n(a.Tabs.Panel,{value:"SQL",sx:vt,children:n(a.Stack,{sx:{height:"100%"},children:n(Tv,{queryModel:e})})}),e.typedAsHTTP&&n(a.Tabs.Panel,{value:"HTTP",sx:vt,children:n(a.Stack,{sx:{height:"100%"},children:n(wv,{queryModel:e})})}),n(a.Tabs.Panel,{value:"Data",sx:{...vt,overflow:"hidden"},children:n(Wr,{id:e.id})}),n(a.Tabs.Panel,{value:"Usage",sx:{...vt,overflow:"hidden"},children:n(Dv,{queryID:e.id,usage:r})})]})})}),Iv=_.observer(({id:e})=>{const i=M().queries.findByID(e);return e===""?null:i?n(a.Stack,{sx:{height:"100%"},spacing:"sm",children:n(kv,{queryModel:i})}):n(a.Text,{size:14,color:"red",children:"Invalid Query ID"})}),Mv=_.observer(({value:e})=>{const t=M(),i=t.context.current,r=rb(e,i,t.mock_context.current,t.filters.values);return n(kn,{height:"100%",value:r})}),Av=_.observer(({item:e,remove:t,onKeyChanged:i})=>{const[r,l]=g.useState("SQL"),[s,d]=g.useState(e.key),o=()=>{e.setKey(s),i(s)},c=s!==e.key,p=e.isADuplicatedKey(s),[f,y]=g.useState(e.value),h=()=>{e.setValue(f)};g.useEffect(()=>{d(e.key),y(e.value)},[e]);const x=f!==e.value,C=ce.useModals(),T=()=>{C.openConfirmModal({title:"Delete this SQL snippet?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:t,zIndex:320})};return u(a.Stack,{p:20,sx:{maxWidth:"1100px",height:"100vh"},spacing:"sm",children:[u(a.Group,{sx:{alignItems:"end"},spacing:40,children:[n(a.TextInput,{label:p?"This key is occupied by another snippet":"Key",value:s,onChange:L=>{d(L.currentTarget.value)},sx:{flexGrow:"1 !important"},rightSection:n(a.ActionIcon,{color:"blue",variant:"subtle",onClick:o,disabled:!c||p,children:n(S.DeviceFloppy,{size:16})}),error:p}),n(a.Button,{leftIcon:n(S.Trash,{size:16}),color:"red",variant:"light",onClick:T,children:"Delete this SQL Snippet"})]}),u(a.Tabs,{value:r,onTabChange:l,sx:{flexGrow:1},styles:{panel:{height:"calc(100% - 50px)"}},children:[u(a.Tabs.List,{sx:{position:"relative"},children:[n(a.Tabs.Tab,{value:"SQL",children:"SQL"}),n(a.Tabs.Tab,{value:"Preview",children:"Preview"}),n(Dn,{}),n(a.ActionIcon,{color:"blue",variant:"filled",onClick:h,disabled:!x,sx:{position:"absolute",top:0,right:10},children:n(S.DeviceFloppy,{size:18})})]}),n(a.Tabs.Panel,{value:"SQL",pt:"sm",children:n(kn,{height:"100%",value:f,onChange:y})}),n(a.Tabs.Panel,{value:"Preview",pt:"sm",children:n(Mv,{value:f})})]})]})}),zv=_.observer(({id:e})=>{const t=M(),i=g.useMemo(()=>t.sqlSnippets.findByKey(e),[e]);return i?n(Av,{item:i,remove:()=>t.sqlSnippets.removeByKey(e),onKeyChanged:s=>{t.editor.setPath(["_SQL_SNIPPETS_",s])}}):u(a.Text,{size:14,children:["SQL Snippet by key[",e,"] is not found"]})}),Vv=_.observer(({view:e})=>!e||e.type!==O.Division?null:u(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"})]})),Lv=[{value:"default",label:"Default"},{value:"outline",label:"Outline"},{value:"pills",label:"Pills"}],Ev=[{value:"horizontal",label:"Horizontal"},{value:"vertical",label:"Vertical"}],Pv=_.observer(({view:e})=>{if(!e||e.type!==O.Tabs)return null;const t=e.config;return u(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:Lv}),n(a.Select,{label:"Orientation",value:t.orientation,onChange:t.setOrientation,data:Ev}),n(a.Switch,{label:"Grow Tabs",checked:t.grow,onChange:i=>t.setGrow(i.currentTarget.checked)})]})}),Bv=({disabled:e,value:t,onChange:i})=>{const r=l=>{l&&i(l)};return u(a.Box,{sx:{position:"relative"},children:[e&&n(a.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),n(Z,{height:"500px",defaultLanguage:"javascript",value:t,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})},Ov=({value:e,onChange:t})=>{const[i,{setTrue:r,setFalse:l}]=B.useBoolean(),[s,d]=g.useState(e??bn),o=h=>{d({...s,enabled:h})},c=()=>{l();const{enabled:h,func_content:x}=s,C={enabled:h,func_content:x};d(C),t(C)},p=()=>{l(),d(e)},f=h=>{d(x=>({...x,func_content:h}))},y=()=>{f(bn.func_content)};return u(k,{children:[n(a.ActionIcon,{size:"lg",color:"blue",variant:"filled",mt:26,onClick:r,sx:{flexGrow:0},children:n(S.Settings,{size:14})}),n(a.Modal,{size:800,title:"Customize modal title",opened:i,onClose:l,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:i&&u(a.Stack,{children:[n(a.Checkbox,{mt:10,label:"Enabled",checked:s.enabled,onChange:h=>o(h.currentTarget.checked)}),n(Bv,{value:s.func_content,onChange:f,disabled:!s.enabled}),u(a.Group,{position:"apart",children:[n(a.Button,{onClick:y,color:"red",leftIcon:n(S.Recycle,{size:20}),children:"Rest"}),u(a.Group,{position:"right",children:[n(a.Button,{onClick:p,variant:"subtle",children:"Cancel"}),n(a.Button,{onClick:c,children:"OK"})]})]})]})})]})},$v=_.observer(({view:e})=>{if(!e||e.type!==O.Modal)return null;const t=e.config,i=t.custom_modal_title.value;return u(a.Stack,{children:[n(a.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),u(a.Flex,{gap:10,children:[n(a.TextInput,{label:"Modal Title",value:i,onChange:b.noop,disabled:!0,sx:{flexGrow:1}}),n(Ov,{value:t.custom_modal_title,onChange:t.custom_modal_title.replace})]}),u(a.Group,{grow:!0,children:[n(a.TextInput,{label:"Width",value:t.width,onChange:r=>t.setWidth(r.currentTarget.value),placeholder:"600px / 50vw"}),n(a.TextInput,{label:"Height",value:t.height,onChange:r=>t.setHeight(r.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),Nv=_.observer(({view:e})=>u(k,{children:[n(Vv,{view:e}),n($v,{view:e}),n(Pv,{view:e})]})),Gv=[{label:"Division",value:O.Division},{label:"Modal",value:O.Modal},{label:"Tabs",value:O.Tabs}],qv=_.observer(({view:e})=>e?u(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:Gv}),n(Nv,{view:e})]}):null),Fv=_.observer(({id:e})=>{const t=ce.useModals(),i=M(),r=i.views.findByID(e);if(!r)return u(a.Text,{size:14,children:["View by ID[",e,"] is not found"]});const l=()=>{t.openConfirmModal({title:"Delete this view?",labels:{confirm:"Confirm",cancel:"Cancel"},onCancel:()=>console.log("Cancel"),onConfirm:()=>i.views.removeByID(e),zIndex:320})};return u(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(S.Trash,{size:16}),onClick:l,children:"Delete this view"})}),n(a.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"auto"},children:n(qv,{view:r})})]})});function jv(e){return e.length===1&&e[0]==="_GLOBAL_VARS_"}function Wv(e){return e.length===1&&e[0]==="_MOCK_CONTEXT_"}function Uv(e){return e.length===2&&e[0]==="_FILTERS_"}function Rv(e){return e.length===2&&e[0]==="_SQL_SNIPPETS_"}function Qv(e){return e.length===2&&e[0]==="_QUERIES_"}function Yv(e){return e.length===2&&e[0]==="_VIEWS_"}function Xv(e){return e.length===4&&e[0]==="_VIEWS_"&&e[2]==="_PANELS_"}const Zv=_.observer(()=>n(a.Stack,{sx:{height:"100%"},p:"sm",children:n(Zr,{})})),Kv=_.observer(()=>{const e=M().editor,t=e.path;return jv(t)?n(Zv,{}):Wv(t)?n(Cy,{}):Uv(t)?n(a.Box,{p:"xs",pl:20,children:n(xy,{id:t[1]})}):Rv(t)?n(zv,{id:t[1]}):Qv(t)?n(Iv,{id:t[1]}):Yv(t)?n(a.Box,{p:"xs",pl:20,children:n(Fv,{id:t[1]})}):Xv(t)?n(Ky,{viewID:t[1],panelID:t[3]}):n(a.Box,{children:e.path})}),Jv=_.observer(()=>(M().editor,n(Kv,{}))),Hv=_.observer(()=>{const e=M(),t=()=>{const i=new Date().getTime().toString(),r={id:i,key:i,label:i,order:e.filters.current.length+1,type:cn.TextInput,config:mr(),visibleInViewsIDs:["Main"],auto_submit:!1};e.filters.append(r)};return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),ex=_.observer(({parentID:e})=>{const t=M();if(!e)return null;const i=t.views.findByID(e);return i?n(a.Button,{variant:"subtle",leftIcon:n(I.IconPlus,{size:14}),size:"sm",px:"xs",mb:10,color:"blue",onClick:()=>t.addANewPanel(i.id),sx:{width:"100%",borderRadius:0},styles:{inner:{justifyContent:"flex-start"}},children:"Add a Panel"}):null}),tx=_.observer(()=>{const e=M(),t=()=>{const i=new Date().getTime().toString(),r={id:i,name:i,type:F.Postgresql,key:"",sql:""};e.queries.append(r)};return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),nx=_.observer(()=>{const e=M(),t=()=>{const r={key:new Date().getTime().toString(),value:""};e.sqlSnippets.append(r)};return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),ix=_.observer(()=>{const e=M();return n(a.Button,{variant:"subtle",leftIcon:n(I.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"})}),rx=_.observer(({action_type:e,parentID:t})=>(M(),e==="_Add_A_Filter_"?n(Hv,{}):e==="_Add_A_SQL_SNIPPET_"?n(nx,{}):e==="_Add_A_QUERY_"?n(tx,{}):e==="_Add_A_VIEW_"?n(ix,{}):e==="_Add_A_PANEL_"?n(ex,{parentID:t}):null)),Hr=_.observer(({option:e})=>{var p;const t=M().editor,i=t.isOptionActive,r=i(t.path,e),l=t.isOptionOpened,s=t.navigate,d=l(e),[o,c]=g.useState(d);return g.useEffect(()=>{c(d)},[d]),n(a.NavLink,{active:r,defaultOpened:d,opened:o,onChange:c,label:e.label,onClick:()=>s(e),icon:e.Icon?n(e.Icon,{size:18}):null,children:(p=e.children)==null?void 0:p.map(f=>f._type==="ACTION"?n(rx,{action_type:f._action_type,parentID:f.parentID},`_ADD_${f.value}_`):n(Hr,{option:f},f.value))},e.label)}),ax=_.observer(()=>{const e=M();return n(a.Box,{sx:{position:"relative"},children:e.editor.navOptions.map(t=>n(Hr,{option:t},t.value))})}),lx=_.observer(()=>{const e=M();return u(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(ax,{})}),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(I.IconX,{size:18}),onClick:()=>e.editor.close(),children:"Close"})})})]})}),sx={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"}},ox=_.observer(()=>{const e=M().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(lx,{}),styles:sx,children:n(Jv,{})})})}),dx=e=>e.replace(/([^:])(\/\/+)/g,"$1/");function ux(e){g.useEffect(()=>{if(Z.loader.__getMonacoInstance())return;console.log("loading monaco for @devtable/dashboard");const i=dx(e);Z.loader.config({paths:{vs:i}}),Z.loader.init().then(r=>console.log("monaco instance:",r))},[])}const ea={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 cx(){N.registerTheme("merico-light",{color:Object.values(ea.graphics.multiple),visualMap:{color:Object.values(ea.graphics.depth).reverse()}})}function ta(){cx()}ta();const px={root:{height:"100vh",display:"flex",flexDirection:"column",overflow:"hidden"},body:{flexGrow:1},main:{flexGrow:1,display:"flex",flexDirection:"column",paddingTop:60,height:"100vh"}},hx=_.observer(g.forwardRef(function({context:t,dashboard:i,update:r,className:l="dashboard",config:s,onChange:d,headerSlot:o},c){ux(s.monacoPath),sr(s);const{data:p=[]}=B.useRequest(fn),[f,y]=g.useState(!1),h=g.useMemo(()=>vn(i,p,t),[i]);g.useImperativeHandle(c,()=>h,[h]),Rn(h,!0),g.useEffect(()=>{h.context.replace(t)},[t]),g.useEffect(()=>{h.datasources.replace(p)},[p]),g.useEffect(()=>$.reaction(()=>$.toJS(h.json),L=>{d==null||d(L)}),[h]);const x=async()=>{await r(h.json)},C=B.useCreation(dn,[]),T=xn(C);return n(ce.ModalsProvider,{children:n(Tt,{value:h,children:n(we.Provider,{value:{layoutFrozen:f,freezeLayout:y,inEditMode:!0},children:n(me.Provider,{value:C,children:u(Ze,{configure:T,children:[n(a.AppShell,{padding:0,header:n(Lb,{saveDashboardChanges:x,headerSlot:o}),navbar:n(ay,{}),styles:px,children:n(a.Box,{className:`${l} dashboard-root`,sx:{position:"relative"},children:h.views.visibleViews.map(L=>n(lr,{view:L},L.id))})}),n(ox,{})]})})})})})})),Ax="";ta();const gx=_.observer(({context:e,dashboard:t,className:i="dashboard",config:r,fullScreenPanelID:l,setFullScreenPanelID:s})=>{sr(r);const{data:d=[]}=B.useRequest(fn),o=g.useMemo(()=>vn(t,d,e),[t]);Rn(o,!1),g.useEffect(()=>{o.context.replace(e)},[e]),g.useEffect(()=>{o.datasources.replace(d)},[d]);const c=B.useCreation(dn,[]),p=xn(c);return n(ce.ModalsProvider,{children:n(Tt,{value:o,children:n(It.Provider,{value:{fullScreenPanelID:l,setFullScreenPanelID:s},children:n(we.Provider,{value:{layoutFrozen:!0,freezeLayout:b.noop,inEditMode:!1},children:n(a.Box,{className:`${i} dashboard-root`,children:n(me.Provider,{value:c,children:n(Ze,{configure:p,children:o.views.visibleViews.map(f=>n(pt,{view:f},f.id))})})})})})})})});z.extend(ga),z.extend(ma),z.extend(fa),z.extend(ba),z.extend(ya),z.extend(va),z.extend(xa),z.extend(Ca),z.extend(wa),z.extend(_a),z.extend(Sa),z.extend(ka),z.extend(Ia),z.extend(Ma),z.extend(Aa),z.extend(za),z.extend(Ta),z.extend(Da),z.extend(Va),z.extend(La),z.extend(Ea),z.extend(Pa),z.extend(Ba),z.extend(Oa),z.extend($a),z.extend(Na),z.extend(Ga),z.extend(qa),z.extend(Fa),z.extend(ja),z.extend(Wa),z.extend(Ra),z.extend(Qa),z.extend(Ua),z.tz.setDefault("UTC");const mx=()=>Promise.resolve().then(()=>Il).then(({version:e})=>(console.log(`[@devtable/dashboard] version: ${e}`),e));w.ContextModel=kr,w.Dashboard=hx,w.DashboardFilterType=cn,w.DashboardMode=rr,w.DashboardModel=mt,w.DashboardViewEditor=lr,w.DashboardViewRender=pt,w.EViewComponentType=O,w.FilterModel=hn,w.FiltersModel=yr,w.FullScreenPanelContext=It,w.LayoutStateContext=we,w.ModelContextProvider=Tt,w.Panel=ct,w.PanelContextProvider=kt,w.PanelModel=Ir,w.PanelsModel=Ar,w.QueriesModel=Sr,w.QueryModel=_r,w.ReadOnlyDashboard=gx,w.SQLSnippetModel=Tr,w.SQLSnippetsModel=Dr,w.ViewComponentTypeBackground=ar,w.ViewComponentTypeColor=Cf,w.ViewComponentTypeName=xf,w.ViewModel=Er,w.ViewsModel=Pr,w.applyPartialDashboard=Vb,w.createDashboardModel=vn,w.createDashboardViewsModel=yn,w.getInitialFiltersPayload=vr,w.getNewPanel=Mr,w.getVersion=mx,w.useFullScreenPanelContext=Kn,w.useModelContext=M,w.usePanelContext=Q,w.useTopLevelServices=xn,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});