@devtable/dashboard 5.10.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dashboard.umd.js
CHANGED
|
@@ -44,8 +44,8 @@ WHERE
|
|
|
44
44
|
value: string;
|
|
45
45
|
description?: string; // optional
|
|
46
46
|
}
|
|
47
|
-
`,xr=()=>{const[e,t]=S.useState(!1);return g(H,{children:[o(s.Button,{variant:"subtle",compact:!0,onClick:()=>t(n=>!n),children:e?"Close":"Click to see expected data structure"}),o(s.Collapse,{in:e,children:o(be.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:Na})})]})},La=M.observer(function({config:t}){const n=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,i=[...r];return g(H,{children:[o(s.Divider,{label:"Configure options",labelPosition:"center"}),r.length>0&&o(s.MultiSelect,{label:"Default Selection",data:i,value:t.default_value,onChange:t.setDefaultValue}),r.map((a,l)=>g(s.Group,{sx:{position:"relative"},pr:"40px",children:[o(s.TextInput,{label:"Label",required:!0,value:t.static_options[l].label,onChange:u=>{t.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.TextInput,{label:"Value",required:!0,value:t.static_options[l].value,onChange:u=>{t.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:o($.Trash,{size:16})})]})),o(s.Button,{size:"xs",color:"blue",leftIcon:o($.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),o(s.Divider,{label:"Or fetch options from database",labelPosition:"center"}),o(s.Checkbox,{checked:t.select_first_by_default,onChange:a=>t.setSelectFirstByDefault(a.currentTarget.checked),label:"Select the first option by default"}),o(Cr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),o(xr,{})]})}),ja=M.observer(function({config:t}){const n=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,i=[{label:"No default selection",value:""},...r];return g(H,{children:[o(s.Checkbox,{checked:t.required,onChange:a=>t.setRequired(a.currentTarget.checked),label:"Required"}),o(s.Divider,{label:"Configure options",labelPosition:"center"}),r.length>0&&o(s.Select,{label:"Default Selection",data:i,value:t.default_value,onChange:t.setDefaultValue}),r.map((a,l)=>g(s.Group,{sx:{position:"relative"},pr:"40px",children:[o(s.TextInput,{label:"Label",required:!0,value:t.static_options[l].label,onChange:u=>{t.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.TextInput,{label:"Value",required:!0,value:t.static_options[l].value,onChange:u=>{t.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:o($.Trash,{size:16})})]},l)),o(s.Button,{size:"xs",color:"blue",leftIcon:o($.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),o(s.Divider,{label:"Or fetch options from database",labelPosition:"center"}),o(s.Checkbox,{checked:t.select_first_by_default,onChange:a=>t.setSelectFirstByDefault(a.currentTarget.checked),label:"Select the first option by default"}),o(Cr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),o(xr,{})]})}),Ba=M.observer(function({config:t}){return g(H,{children:[o(s.TextInput,{label:"Default Value",value:t.default_value,onChange:n=>{t.setDefaultValue(n.currentTarget.value)}}),o(s.Checkbox,{checked:t.required,onChange:n=>t.setRequired(n.currentTarget.checked),label:"Required"})]})}),Wa=M.observer(function({filter:t}){const n=t.plainDefaultValue,[r,i]=_.default.useState(n);return _.default.useEffect(()=>{i(n)},[n]),g(s.Box,{sx:{maxWidth:"30em"},children:[o(s.Text,{pb:"md",color:"gray",children:"Preview"}),o(gr,{filter:t,value:r,onChange:i}),o(s.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),o(be.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(t,null,4)})]})}),Ua={select:ja,"multi-select":La,"text-input":Ba,checkbox:za,"date-range":Ga},Ya=[{label:"Select",value:"select"},{label:"Multi Select",value:"multi-select"},{label:"Text Input",value:"text-input"},{label:"Checkbox",value:"checkbox"},{label:"Date Range",value:"date-range"}],Ha=M.observer(function({filter:t,index:n}){const r=j(),i=_.default.useMemo(()=>Ua[t.type],[t.type]);return g(s.SimpleGrid,{cols:2,children:[g(s.Box,{pl:"md",children:[o(s.Text,{pb:"md",color:"gray",children:"Edit"}),g(s.Stack,{sx:{maxWidth:"30em"},children:[o(s.NumberInput,{label:"Placement Order",required:!0,value:t.order,onChange:t.setOrder,hideControls:!0}),o(s.MultiSelect,{label:"Visible in...",data:r.views.options,value:[...t.visibleInViewsIDs],onChange:t.setVisibleInViewsIDs}),o(s.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,value:t.key,onChange:a=>{t.setKey(a.currentTarget.value)}}),o(s.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:t.label,onChange:a=>{t.setLabel(a.currentTarget.value)}}),o(s.Select,{label:"Widget",data:Ya,required:!0,value:t.type,onChange:t.setType}),o(i,{config:t.config,index:n})]})]}),o(Wa,{filter:t})]})}),Vf="",Qa=M.observer(function(){const t=j(),n=t.filters.current,r=()=>{const i=Z.randomId(),a={id:i,key:i,label:i,order:n.length+1,type:oe.TextInput,config:br(),visibleInViewsIDs:["Main"]};t.filters.append(a)};return g(s.Box,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)"},p:0,children:[o(s.Group,{sx:{position:"absolute",top:"16px",right:"16px"},children:o(s.Button,{size:"xs",color:"red",leftIcon:o($.Recycle,{size:20}),disabled:!t.filtersChanged,onClick:t.resetFilters,children:"Revert Changes"})}),o(s.Tabs,{className:"filter-settings-tabs",orientation:"vertical",defaultValue:t.filters.firstID,styles:{root:{display:"block"}},children:g(s.Group,{sx:{height:"100%"},children:[g(s.Stack,{sx:{height:"100%"},children:[o(s.Tabs.List,{position:"left",sx:{flexGrow:1,width:"200px"},children:t.filters.current.map(i=>o(s.Tabs.Tab,{value:i.id,sx:{maxWidth:"100%",overflow:"scroll"},children:i.label},i.id))}),o(s.Button,{size:"xs",color:"blue",leftIcon:o($.PlaylistAdd,{size:20}),onClick:r,children:"Add a Filter"})]}),o(s.Box,{sx:{flexGrow:1,height:"100%"},children:t.filters.current.map((i,a)=>o(s.Tabs.Panel,{value:i.id,sx:{height:"100%"},children:g(s.Stack,{sx:{height:"100%"},spacing:"sm",children:[o(s.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"scroll"},children:o(Ha,{filter:i,index:a})}),o(s.Group,{position:"right",pt:10,children:o(s.Button,{size:"xs",color:"red",leftIcon:o($.Trash,{size:20}),onClick:()=>t.filters.remove(a),children:"Delete this filter"})})]})},i.id))})]})})]})}),Ja=M.observer(function({opened:t,close:n}){const{freezeLayout:r}=_.default.useContext(Ce);return _.default.useEffect(()=>{r(t)},[t]),o(s.Modal,{size:"96vw",overflow:"inside",opened:t,onClose:n,title:"Filters",trapFocus:!0,onDragStart:i=>{i.stopPropagation()},withCloseButton:!1,children:o(Qa,{})})});var Sr=(e=>(e.Use="use",e.Edit="edit",e))(Sr||{}),he=(e=>(e.Division="div",e.Modal="modal",e))(he||{}),wr=(e=>(e.Select="select",e.MultiSelect="multi-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(wr||{});const Xa=M.observer(()=>{const t=j().views.VIE;return!t||t.type!==he.Division?null:g(s.Stack,{children:[o(s.Divider,{mt:8,mb:0,label:"Division settings",labelPosition:"center"}),o(s.Text,{align:"center",size:"xs",color:"dimmed",children:"Under construction"})]})}),Ka=M.observer(()=>{const t=j().views.VIE;return!t||t.type!==he.Modal?null:g(s.Stack,{children:[o(s.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),g(s.Group,{grow:!0,children:[o(s.TextInput,{label:"Width",value:t.config.width,onChange:n=>t.updateConfig("width",n.currentTarget.value),placeholder:"600px / 50vw"}),o(s.TextInput,{label:"Height",value:t.config.height,onChange:n=>t.updateConfig("height",n.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),Za=M.observer(()=>g(H,{children:[o(Xa,{}),o(Ka,{})]})),es=[{label:"Division",value:he.Division},{label:"Modal",value:he.Modal}],ts=M.observer(()=>{const t=j().views.VIE;return t?g(s.Stack,{sx:{position:"relative"},children:[o(s.TextInput,{label:"Name",value:t.name,onChange:n=>{t.setName(n.currentTarget.value)}}),o(s.Select,{label:"Type",value:t.type,onChange:t.setType,data:es}),o(Za,{})]}):null}),ns=M.observer(({opened:e,close:t})=>{var i;const n=j(),{freezeLayout:r}=_.default.useContext(Ce);return _.default.useEffect(()=>{r(e)},[e]),o(s.Modal,{size:"500px",overflow:"inside",opened:e,onClose:t,withCloseButton:!1,styles:{header:{width:"100%"},title:{width:"100%"}},title:g(s.Group,{position:"apart",children:[g(s.Text,{sx:{flexGrow:1},children:["Editing ",(i=n.views.VIE)==null?void 0:i.name]}),o(s.ActionIcon,{size:18,color:"red",onClick:n.views.removeVIE,disabled:n.views.isVIETheFirstView,children:o($.Trash,{size:18})})]}),trapFocus:!0,onDragStart:a=>{a.stopPropagation()},children:o(ts,{})})}),rs=S.forwardRef(({label:e,type:t,...n},r)=>t!=="TRIGGER_TO_ADD"?o("div",{ref:r,...n,children:g(s.Group,{noWrap:!0,position:"apart",children:[o(s.Text,{size:"sm",children:e}),o(s.Text,{size:"xs",color:"dimmed",children:t})]})}):o("div",{ref:r,...n,children:o(s.Group,{noWrap:!0,grow:!0,children:o(s.Text,{size:"sm",align:"center",color:"#228be6",children:e})})})),_r="TRIGGER_TO_ADD",is=M.observer(({value:e,onChange:t,triggerAdd:n,triggerEdit:r,options:i})=>{const a=S.useMemo(()=>[...i,{label:"Add a View",value:_r,type:"TRIGGER_TO_ADD"}],[i,n]),l=u=>{u!==_r?t(u):n()};return g(s.Group,{position:"left",spacing:0,sx:{minWidth:"260px"},children:[o(s.Select,{value:e,onChange:l,placeholder:"Pick a View",itemComponent:rs,data:a,nothingFound:"Empty",sx:{flexGrow:1},styles:{input:{borderTopRightRadius:0,borderBottomRightRadius:0}}}),o(s.ActionIcon,{onClick:r,variant:"default",size:36,sx:{borderLeft:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,"&:active":{transform:"none",svg:{transform:"translateY(1px)"}}},children:o($.Settings,{size:20})})]})}),os=M.observer(()=>{const e=j(),[t,n]=S.useState(!1),r=()=>{n(!0)},i=()=>{n(!1)};return g(H,{children:[o(is,{value:e.views.idOfVIE,onChange:e.views.setIDOfVIE,triggerAdd:e.views.addARandomNewView,triggerEdit:r,options:e.views.options}),o(ns,{opened:t,close:i})]})}),Dr={"> button":{"&:first-of-type":{borderTopRightRadius:0,borderBottomRightRadius:0,borderRightWidth:.5},"&:last-of-type":{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5}}},Ir=M.observer(function({saveChanges:t}){const n=j(),r=_.default.useCallback(()=>{const T=n.queries.json,E=n.views.json,O=n.sqlSnippets.json,F=n.filters.current,L=n.mock_context.current;return{filters:F,views:E,definition:{sqlSnippets:O,queries:T,mock_context:L},version:n.version}},[n]),i=()=>{n.reset()},a=n.changed,{inEditMode:l,inUseMode:u}=_.default.useContext(Ce),[c,p]=_.default.useState(!1),d=()=>p(!0),f=()=>p(!1),[h,v]=_.default.useState(!1),C=()=>v(!0),b=()=>v(!1),D=()=>{const T=JSON.stringify(r(),null,2);sa(n.name,T)};return g(s.Group,{position:"apart",pt:0,px:10,pb:"xs",children:[o(s.Group,{position:"left",children:l&&o(os,{})}),g(s.Group,{position:"right",sx:{button:{minWidth:"40px"}},children:[l&&g(H,{children:[o(s.Button,{variant:"filled",size:"xs",disabled:!n.views.VIE,onClick:n.views.addAPanelToVIE,leftIcon:o($.PlaylistAdd,{size:20}),children:"Add a Panel"}),g(s.Group,{spacing:0,sx:Dr,children:[o(s.Tooltip,{label:"Filters",children:o(s.ActionIcon,{variant:"default",size:"md",onClick:C,children:o($.Filter,{size:20})})}),o(s.Tooltip,{label:"Data Settings",children:o(s.ActionIcon,{variant:"default",size:"md",onClick:d,children:o($.Database,{size:20})})})]}),g(s.Group,{spacing:0,sx:Dr,children:[o(s.Tooltip,{label:"Save Changes",children:o(s.ActionIcon,{variant:"default",size:"md",onClick:t,disabled:!a,children:o($.DeviceFloppy,{size:20,color:"green"})})}),o(s.Tooltip,{label:"Revert Changes",children:o(s.ActionIcon,{variant:"default",size:"md",disabled:!a,onClick:i,children:o($.Recycle,{size:20,color:"red"})})})]})]}),!u&&g(s.Menu,{width:180,trigger:"hover",children:[o(s.Menu.Target,{children:o(s.ActionIcon,{variant:"default",size:"md",children:o($.Share,{size:20})})}),g(s.Menu.Dropdown,{children:[o(s.Menu.Item,{icon:o($.Download,{size:14}),onClick:n.queries.downloadAllData,children:"Download Data"}),o(s.Menu.Item,{icon:o($.Code,{size:14}),onClick:D,children:"Download Schema"})]})]})]}),o(Ja,{opened:h,close:b}),o(Fa,{opened:c,close:f})]})}),Tf="",Mr=M.observer(()=>{const{freezeLayout:e}=_.default.useContext(Ce),[t,n]=_.default.useState(!1),{panel:r}=ae();return _.default.useEffect(()=>{e(t)},[t]),!r.description||r.description==="<p><br></p>"?null:g(H,{children:[o(s.Modal,{opened:t,onClose:()=>n(!1),title:r.title,withCloseButton:!1,children:o(tr.default,{readOnly:!0,value:r.description,onChange:Y.default.noop,sx:{border:"none"}})}),o(s.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:o(s.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>n(i=>!i),sx:{verticalAlign:"baseline",cursor:"pointer"},children:o($.InfoCircle,{size:20})})})]})}),Ar=e=>{const{title:t="Variables",variables:n}=e,r=Z.useClipboard(),i=a=>{r.copy(a),st.showNotification({color:"green",message:"Copied to clipboard"})};return g(s.Paper,{withBorder:!0,p:"sm",children:[o(s.Text,{size:"xs",color:"dimmed",mb:"sm",children:t}),o(s.Stack,{style:{maxHeight:"300px"},children:n.map(a=>g(s.Text,{size:"sm",children:[g(s.Code,{color:"teal",children:["// ",a.description]}),o("br",{}),g(s.Code,{onClick:()=>i(a.name),style:{cursor:"pointer"},children:[a.name," : ",a.valueType]})]},a.name))})]})};class as{constructor(t,n){k(this,"operationId");k(this,"operation");k(this,"operationSchema");k(this,"variables",[]);this.operationManager=t,this.instance=n,ie.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(t,n){const r=await this.operationManager.retrieveTrigger(t),i=this.operationManager.getOperationSchemaList().find(a=>a.id===(r==null?void 0:r.schemaRef));ie.runInAction(()=>{this.operationId=t,this.operation=r,this.operationSchema=i,this.variables=n})}async changeSchema(t){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,t),await this.configOperation(this.operationId,this.variables))}}function ss(e){return!!e.operationId}const ls=M.observer(({model:e,onClick:t})=>{var r;const n=(r=e.operationSchema)==null?void 0:r.displayName;return o(s.Button,{variant:"outline",onClick:t,children:n})}),us=M.observer(({model:e})=>{const t={operation:e.operation,instance:e.instance,variables:[]};return S.createElement(e.operationSchema.configRender,t)});function cs({model:e}){const t=e.schemaList,n=t.map(i=>({label:i.displayName,value:i.id}));async function r(i){await e.changeSchema(t.find(a=>a.id===i))}return o(s.Select,{label:"Operation",data:n,onChange:r,value:e.operationSchema.id})}const ds=M.observer(e=>{const[t,{setTrue:n,setFalse:r}]=W.useBoolean(!1),{operationManager:i,operationId:a,instance:l,variables:u}=e,c=W.useCreation(()=>new as(i,l),[i,l]);return W.useAsyncEffect(async()=>{await c.configOperation(a,u)},[a,c]),ss(c)?g(H,{children:[o(ls,{model:c,onClick:n}),o(s.Modal,{opened:t,onClose:r,title:"Operation Settings",closeButtonLabel:"close",children:g(s.Stack,{children:[o(cs,{model:c}),o(us,{model:c}),o(Ar,{title:"Variables",variables:c.variables})]})})]}):null});class ps{constructor(t,n){k(this,"triggerId");k(this,"trigger");k(this,"triggerSchema");k(this,"sampleData");this.triggerManager=t,this.instance=n,ie.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(t,n){const r=await this.triggerManager.retrieveTrigger(t),i=this.triggerManager.getTriggerSchemaList().find(a=>a.id===(r==null?void 0:r.schemaRef));ie.runInAction(()=>{this.triggerId=t,this.trigger=r,this.triggerSchema=i,this.sampleData=n})}async changeSchema(t){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,t),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return gs(this)}}function gs(e){return!!e.triggerId&&!!e.triggerSchema}function fs(e,t){return W.useCreation(()=>new ps(e,t),[e,t])}const hs=M.observer(({model:e,onClick:t})=>{const n=e.triggerSchema.nameRender,r={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return o(s.Button,{variant:"outline",onClick:t,children:S.createElement(n,r)})}),ms=M.observer(({model:e})=>{const t=e.schemaList,n=t.map(i=>({label:i.displayName,value:i.id}));async function r(i){await e.changeSchema(t.find(a=>a.id===i))}return o(s.Select,{label:"Trigger",data:n,value:e.triggerSchema.id,onChange:r})}),vs=M.observer(({model:e})=>{const t={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return S.createElement(e.triggerSchema.configRender,t)}),ys=M.observer(e=>{const[t,{setTrue:n,setFalse:r}]=W.useBoolean(!1),i=e.model;return g(H,{children:[o(s.Modal,{opened:t,onClose:r,title:"Setup Trigger",closeButtonLabel:"close setup",children:g(s.Stack,{children:[o(ms,{model:i}),o(vs,{model:i}),o(Ar,{title:"Payload",variables:i.triggerSchema.payload})]})}),o(hs,{onClick:n,model:i})]})});class Ue{constructor(t,n){this.root=t,this.path=n}async deleteItem(t){t===null&&await this.root.deleteItem(this.path);const n=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,x.omit(n,t))}async getItem(t){const n=await this.root.getItem(this.path);return t===null?n:x.get(n,t)}async setItem(t,n){if(t===null)await this.root.setItem(this.path,n);else{const r=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...r,[t]:n})}return await this.getItem(t)}watchItem(t,n,r){return t===null?this.root.watchItem(this.path,(i,a)=>{n(i,a)},r):this.root.watchItem(this.path,(i,a)=>{const l=x.get(i,t),u=x.get(a,t);l!==u&&n(l,u)},r)}}class Yt{constructor(t,n,r){k(this,"attachmentStorage");this.instance=t,this.attachmentKey=n,this.constructInstance=r,this.attachmentStorage=new Ue(t.instanceData,n)}async getInstance(t){if(await this.attachmentStorage.getItem(t))return this.constructInstance(new Ue(this.attachmentStorage,t))}async create(t,n){return await this.attachmentStorage.setItem(t,n),this.constructInstance(new Ue(this.attachmentStorage,t))}async remove(t){await this.attachmentStorage.deleteItem(t)}async list(){const t=await this.attachmentStorage.getItem(null);return Promise.all(x.values(t).map(n=>this.constructInstance(new Ue(this.attachmentStorage,n.id))))}}class Vr{constructor(t){k(this,"rootRef");this.rootRef=ie.observable({current:t})}async deleteItem(t){ie.runInAction(()=>{x.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?ie.toJS(this.rootRef.current):x.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(x.isObject(n))ie.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else ie.runInAction(()=>{x.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,r){return ie.reaction(()=>this.getValueFromRoot(t),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class bs{constructor(){k(this,"channels",new Map);k(this,"globalChannel",new nr.default)}getChannel(t){const n=this.channels.get(t);if(n)return n;const r=new nr.default;return this.channels.set(t,r),r}}class Cs{constructor(t){k(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 n=this.instances.get(t.id);if(n)return n;const r={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new bs,instanceData:new Vr(t.viz.conf)};return this.instances.set(t.id,r),r}}function Tr(e,t,n){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Vr({}),colorPalette:{getColor(){return()=>""}},data:t}}const xs=e=>{const{panel:t,vizManager:n,data:r}=e,i=n.resolveComponent(t.viz.type),a=n.getOrCreateInstance(t),l={...Tr(a,r,n),viewport:{width:t.layout.w,height:t.layout.h}},u=i.viewRender;return o(u,{context:l,instance:a,...x.omit(e,["panel","vizManager","data"])})},Ss=e=>{const{vizManager:t,panel:n,panelInfoEditor:r,data:i}=e,a=t.resolveComponent(n.viz.type),l=t.getOrCreateInstance(n),u={...Tr(l,i,t),panelInfoEditor:r},c=a.configRender;return o(c,{context:u,instance:l,...x.omit(e,["panel","vizManager","data","panelInfoEditor"])})},$r=(e,t)=>{const n=Qe.default.bezier(e),r=Qe.default.bezier(t);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},pt=e=>{const t=Qe.default.bezier(e);return function(n){return t(n/100).hex()}},ws={type:"interpolation",displayName:"Red / Green",getColor:$r(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},_s={type:"interpolation",displayName:"Yellow / Blue",getColor:$r(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ds={type:"interpolation",displayName:"Red",getColor:pt(["#fff7f1","darkred"]),name:"red",category:"sequential"},Is={type:"interpolation",displayName:"Green",getColor:pt(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ms={type:"interpolation",displayName:"Blue",getColor:pt(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},As={type:"interpolation",displayName:"Orange",getColor:pt(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},Vs="5.10.0";class Ts{constructor(t){k(this,"staticColors",new Map);k(this,"interpolations",new Map);t.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const n=this.encodeColor(t);t.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(n,t)):t.type==="interpolation"&&(this.interpolations.has(n)&&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(n,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 $s{constructor(){k(this,"plugins",new Map);k(this,"vizComponents",new Map);k(this,"factory",{viz:t=>{const n=this.vizComponents.get(t);if(n)return n;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 n of t.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Es{constructor(){k(this,"migrations",[])}version(t,n){return this.migrations.push({version:t,handler:n}),this}run(t,n){var a;if(t.from===t.to)return n;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const r=this.migrations.filter(l=>l.version>t.from&&l.version<=t.to),i=x.orderBy(r,"version","asc");if(((a=x.last(i))==null?void 0:a.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return i.reduce((l,u)=>u.handler(l),n)}}class ge extends Es{constructor(){super(),this.configVersions()}version(t,n){return super.version(t,r=>({version:t,...n(r)}))}async migrate({configData:t}){const n=await t.getItem(null),r=x.get(n,"version",0),i=this.run({from:r,to:this.VERSION},n);await t.setItem(null,i)}async needMigration({configData:t}){const n=await t.getItem(null);return x.get(n,"version",0)<this.VERSION}}const G=(e,t)=>{const[n,{setFalse:r}]=W.useBoolean(!0),[i,a]=S.useState();S.useEffect(()=>(e.getItem(t).then(u=>{a(u),r()}),e.watchItem(t,u=>{a(u)})));const l=S.useCallback(async u=>{await e.setItem(t,u),a(u)},[e,t]);return{loading:n,value:i,set:l}},Ht={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"}};ee.use([U.GridComponent,U.VisualMapComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function ks({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:c,yAxis3D:p,zAxis3D:d}=x.defaults({},t,Ht),f=S.useMemo(()=>{const C=x.minBy(n,b=>b[u]);return x.get(C,u)},[n,u]),h=S.useMemo(()=>{const C=x.maxBy(n,b=>b[u]);return x.get(C,u)},[n,u]),v={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:f,max:h,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:p,zAxis3D:d,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:n.map(C=>[C[a],C[l],C[u]])}]};return t?o(Ee.default,{echarts:ee,option:v,style:{width:r,height:i}}):null}function Rs({label:e,required:t,value:n,onChange:r,data:i,clearable:a=!1,sx:l,...u},c){const p=_.default.useMemo(()=>{if(!Array.isArray(i)||i.length===0)return[];const f=Object.keys(i[0]).map(h=>({label:h,value:h}));return a?f.concat([{label:"unset",value:""}]):f},[i]);return o(s.Select,{ref:c,label:e,data:p,value:n,onChange:r,required:t,sx:l,...u})}const J=_.default.forwardRef(Rs);function Os({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=x.defaults({},t,Ht),{control:a,handleSubmit:l,reset:u}=w.useForm({defaultValues:i});return S.useEffect(()=>{u(i)},[t]),t?o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[o(s.Text,{children:"X Axis"}),g(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[o(w.Controller,{name:"x_axis_data_key",control:a,render:({field:c})=>o(J,{label:"Data Field",required:!0,data:r,...c})}),o(w.Controller,{name:"xAxis3D.name",control:a,render:({field:c})=>o(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),o(s.Text,{mt:"lg",children:"Y Axis"}),g(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[o(w.Controller,{name:"y_axis_data_key",control:a,render:({field:c})=>o(J,{label:"Data Field",required:!0,data:r,...c})}),o(w.Controller,{name:"yAxis3D.name",control:a,render:({field:c})=>o(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),o(s.Text,{mt:"lg",children:"Z Axis"}),g(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[o(w.Controller,{name:"z_axis_data_key",control:a,render:({field:c})=>o(J,{label:"Data Field",required:!0,data:r,...c})}),o(w.Controller,{name:"zAxis3D.name",control:a,render:({field:c})=>o(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),o(s.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:g(s.Button,{color:"blue",type:"submit",children:[o($.DeviceFloppy,{size:20}),o(s.Text,{ml:"md",children:"Save"})]})})]})}):null}class Ps extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Fs={displayName:"Bar Chart (3D)",migrator:new Ps,name:"bar-3d",viewRender:ks,configRender:Os,createConfig:()=>Ht},Qt=S.forwardRef(function({value:t,onChange:n,...r},i){return o(s.TextInput,{ref:i,value:t,onChange:n,...r})}),Ke={mantissa:0,output:"number",trimMantissa:!1,average:!1};function zs({value:e,onChange:t},n){const r=u=>{t({...e,output:u})},i=u=>{const c=u===0?!1:e.trimMantissa;t({...e,mantissa:u,trimMantissa:c})},a=u=>{t({...e,trimMantissa:u.currentTarget.checked})},l=u=>{t({...e,average:u.currentTarget.checked})};return g(s.Stack,{ref:n,children:[g(s.Group,{grow:!0,children:[o(s.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:r,sx:{flexGrow:1}}),o(s.Switch,{label:g(s.Stack,{spacing:0,children:[o(s.Text,{children:"Average"}),o(s.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:e.average,onChange:l,disabled:e.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),g(s.Group,{grow:!0,children:[o(s.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:i}),o(s.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:a,disabled:e.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),g(s.Stack,{spacing:0,children:[o(s.Text,{weight:"bold",children:"Preview"}),o(Be,{children:g(s.Group,{position:"apart",children:[g(s.Text,{size:12,color:"gray",children:["123456789 ",o($.ArrowRight,{size:9})," ",fe.default(123456789).format(e)]}),g(s.Text,{size:12,color:"gray",children:["1234 ",o($.ArrowRight,{size:9})," ",fe.default(1234).format(e)]}),g(s.Text,{size:12,color:"gray",children:["0.1234 ",o($.ArrowRight,{size:9})," ",fe.default(.1234).format(e)]})]})})]})]})}const Jt=_.default.forwardRef(zs);function gt(){return{name:Z.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:{type:"none",config:{}},formatter:Ke}}const qs=[{label:"None",value:"none"},{label:"Sum",value:"sum"},{label:"Mean",value:"mean"},{label:"Median",value:"median"},{label:"Max",value:"max"},{label:"Min",value:"min"},{label:"Quantile(99%, 95%, ...)",value:"quantile"}];function Gs({label:e,value:t,onChange:n},r){S.useEffect(()=>{typeof t=="string"&&(console.log(t),n({type:t,config:{}}))},[t,n]);const i=l=>{n(l==="quantile"?{type:"quantile",config:{p:.99}}:{type:l,config:{}})},a=l=>{n({type:"quantile",config:{p:l}})};return g(s.Group,{grow:!0,noWrap:!0,pt:"sm",children:[o(s.Select,{ref:r,label:e,data:qs,value:t.type,onChange:i}),t.type==="quantile"&&o(s.NumberInput,{label:"p",value:t.config.p,onChange:a,precision:2,min:.05,step:.05,max:1})]})}const Ns=_.default.forwardRef(Gs);function Ls({label:e,value:t,onChange:n},r){const[i,a]=_.default.useState(Array.isArray(t)?[...t]:[]),l=_.default.useCallback(()=>{a(h=>[...h,""])},[a]),u=_.default.useCallback(h=>{a(v=>(v.splice(h,1),[...v]))},[a]),c=_.default.useMemo(()=>!Y.default.isEqual(i,t),[i,t]),p=()=>{n(i.map(h=>h.toString()))},d=s.useMantineTheme(),f=_.default.useMemo(()=>Object.entries(d.colors).map(([h,v])=>v[6]),[d]);return g(H,{children:[g(s.Group,{position:"left",ref:r,children:[o(s.Text,{children:e}),o(s.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:p,children:o($.DeviceFloppy,{size:20})})]}),g(s.Group,{children:[i.map((h,v)=>o(s.ColorInput,{value:h,onChange:C=>{a(b=>(b.splice(v,1,C),[...b]))},swatches:f,rightSection:o(s.ActionIcon,{onClick:()=>u(v),color:"red",children:o($.Trash,{size:14})}),sx:{width:"45%"}})),o(s.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:o($.PlaylistAdd,{size:20})})]})]})}const js=_.default.forwardRef(Ls);function Bs({value:e,onChange:t},n){const{colorManager:r}=S.useContext(Ie),i=_.default.useMemo(()=>r.getStaticColors().map(u=>({label:u.name,group:u.category,value:u.value})),[r]),a=_.default.useMemo(()=>i.some(l=>l.value===e),[e,i]);return g(s.Group,{position:"apart",spacing:4,ref:n,children:[o(s.TextInput,{placeholder:"Set any color",value:a?"":e,onChange:l=>t(l.currentTarget.value),rightSection:o(s.ColorSwatch,{color:a?"transparent":e,radius:4}),variant:a?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),o(s.Text,{sx:{flexGrow:0},children:"or"}),o(s.Select,{data:i,value:e,onChange:t,variant:a?"default":"filled",placeholder:"Pick a theme color",icon:o(s.ColorSwatch,{color:a?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const Pe=_.default.forwardRef(Bs),ft=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function Ws({label:e,value:t,onChange:n},r){var l,u;const[i,a]=_.default.useState((u=(l=ft.find(c=>c.label===t))==null?void 0:l.value)!=null?u:ft[0].value);return _.default.useEffect(()=>{const c=ft.find(p=>p.value===i);c&&n(c.label)},[i]),g(s.Stack,{spacing:0,mt:"sm",mb:"lg",children:[o(s.Text,{size:"sm",children:e}),o(s.Slider,{label:null,marks:ft,value:i,onChange:a,step:25,placeholder:"Pick a font size",ref:r})]})}const Us=_.default.forwardRef(Ws);function Ys({label:e,value:t,onChange:n},r){const[i,a]=_.default.useState(Array.isArray(t)?[...t]:[]),l=_.default.useCallback(()=>{a(d=>[...d,""])},[a]),u=_.default.useCallback(d=>{a(f=>(f.splice(d,1),[...f]))},[a]),c=_.default.useMemo(()=>!Y.default.isEqual(i,t),[i,t]),p=()=>{n(i.map(d=>d.toString()))};return g(H,{children:[g(s.Group,{position:"left",ref:r,children:[o(s.Text,{children:e}),o(s.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:p,children:o($.DeviceFloppy,{size:20})})]}),g(s.Group,{children:[i.map((d,f)=>o(s.TextInput,{value:d,onChange:h=>{const v=h.currentTarget.value;a(C=>(C.splice(f,1,v),[...C]))},rightSection:o(s.ActionIcon,{onClick:()=>u(f),color:"red",children:o($.Trash,{size:14})}),sx:{width:"45%"}})),o(s.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:o($.PlaylistAdd,{size:20})})]})]})}const Hs=_.default.forwardRef(Ys),Qs=_.default.forwardRef(function({value:t,onChange:n},r){const i=t.color.type,a=(l,u)=>{const c=Y.default.cloneDeep(t);Y.default.set(c,l,u),n(c)};return g(H,{children:[o(s.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),o(s.Stack,{children:o(s.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:t.size,onChange:l=>a("size",l.currentTarget.value)})}),o(s.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:o(Us,{label:"Font Weight",value:t.weight,onChange:l=>a("weight",l)})}),o(s.Divider,{my:"xs",label:"Style",labelPosition:"center"}),g(s.Stack,{children:[o(s.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:t.color.type,onChange:l=>a("color.type",l)}),i==="static"&&o(Pe,{value:t.color.staticColor,onChange:l=>a("color.staticColor",l)}),i==="continuous"&&g(H,{children:[o(Hs,{label:"Value Range",value:t.color.valueRange,onChange:l=>a("color.valueRange",l)}),o(js,{label:"Color Range",value:t.color.colorRange,onChange:l=>a("color.colorRange",l)})]})]})]})}),ht=_.default.forwardRef(function({value:t,onChange:n,data:r,withStyle:i=!0},a){const l=(u,c)=>{const p=Y.default.cloneDeep(t);Y.default.set(p,u,c),n(p)};return g(s.Box,{px:"sm",py:"md",ref:a,children:[o(s.Text,{weight:"bold",pb:0,children:t.name}),o(s.Divider,{my:"xs",label:"Data",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(s.TextInput,{label:"Name",required:!0,value:t.name,onChange:u=>l("name",u.currentTarget.value)}),o(J,{label:"Data Field",required:!0,data:r,value:t.data_field,onChange:u=>l("data_field",u)})]}),o(Ns,{label:"Aggregation",value:t.aggregation,onChange:u=>l("aggregation",u)}),o(s.Divider,{my:"xs",label:"Format",labelPosition:"center"}),o(Jt,{value:t.formatter,onChange:u=>l("formatter",u)}),i&&o(Qs,{value:t,onChange:n})]})});function Js(e){const t=Array.from(e).sort((r,i)=>r-i),n=Math.floor(t.length/2);return t.length%2===0?(t[n-1]+t[n])/2:t[n]}function Xt(e,t,n){var i,a,l,u;const r=e.map(c=>c[t]);switch(n.type){case"sum":return Y.default.sum(r);case"mean":return Y.default.mean(r);case"median":return Js(r);case"max":return(i=Y.default.max(r))!=null?i:0;case"min":return(a=Y.default.min(r))!=null?a:0;case"quantile":return(l=No.quantile(r,n.config.p))!=null?l:0;default:return(u=e[0])==null?void 0:u[t]}}var Er=function(){},Ze=function(){};process.env.NODE_ENV!=="production"&&(Er=function(e,t){!e&&typeof console<"u"&&console.warn(t)},Ze=function(e,t){if(!e)throw new Error(t)});const Xs=(e,t,n)=>Math.min(Math.max(n,e),t),kr=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},Kt=(e,t,n)=>-n*e+n*t+e,Rr=(e,t)=>n=>Math.max(Math.min(n,t),e),et=e=>e%1?Number(e.toFixed(5)):e,mt=/(-)?([\d]*\.?[\d])+/g,Zt=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,Ks=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function tt(e){return typeof e=="string"}const vt={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Or=Object.assign(Object.assign({},vt),{transform:Rr(0,1)});Object.assign(Object.assign({},vt),{default:1});const nt=(e=>({test:t=>tt(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}))("%");Object.assign(Object.assign({},nt),{parse:e=>nt.parse(e)/100,transform:e=>nt.transform(e*100)});const en=(e,t)=>n=>Boolean(tt(n)&&Ks.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),Pr=(e,t,n)=>r=>{if(!tt(r))return r;const[i,a,l,u]=r.match(mt);return{[e]:parseFloat(i),[t]:parseFloat(a),[n]:parseFloat(l),alpha:u!==void 0?parseFloat(u):1}},je={test:en("hsl","hue"),parse:Pr("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+nt.transform(et(t))+", "+nt.transform(et(n))+", "+et(Or.transform(r))+")"},Zs=Rr(0,255),tn=Object.assign(Object.assign({},vt),{transform:e=>Math.round(Zs(e))}),Fe={test:en("rgb","red"),parse:Pr("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+tn.transform(e)+", "+tn.transform(t)+", "+tn.transform(n)+", "+et(Or.transform(r))+")"};function el(e){let t="",n="",r="",i="";return e.length>5?(t=e.substr(1,2),n=e.substr(3,2),r=e.substr(5,2),i=e.substr(7,2)):(t=e.substr(1,1),n=e.substr(2,1),r=e.substr(3,1),i=e.substr(4,1),t+=t,n+=n,r+=r,i+=i),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:i?parseInt(i,16)/255:1}}const nn={test:en("#"),parse:el,transform:Fe.transform},yt={test:e=>Fe.test(e)||nn.test(e)||je.test(e),parse:e=>Fe.test(e)?Fe.parse(e):je.test(e)?je.parse(e):nn.parse(e),transform:e=>tt(e)?e:e.hasOwnProperty("red")?Fe.transform(e):je.transform(e)},Fr="${c}",zr="${n}";function tl(e){var t,n,r,i;return isNaN(e)&&tt(e)&&((n=(t=e.match(mt))===null||t===void 0?void 0:t.length)!==null&&n!==void 0?n:0)+((i=(r=e.match(Zt))===null||r===void 0?void 0:r.length)!==null&&i!==void 0?i:0)>0}function qr(e){typeof e=="number"&&(e=`${e}`);const t=[];let n=0;const r=e.match(Zt);r&&(n=r.length,e=e.replace(Zt,Fr),t.push(...r.map(yt.parse)));const i=e.match(mt);return i&&(e=e.replace(mt,zr),t.push(...i.map(vt.parse))),{values:t,numColors:n,tokenised:e}}function Gr(e){return qr(e).values}function Nr(e){const{values:t,numColors:n,tokenised:r}=qr(e),i=t.length;return a=>{let l=r;for(let u=0;u<i;u++)l=l.replace(u<n?Fr:zr,u<n?yt.transform(a[u]):et(a[u]));return l}}const nl=e=>typeof e=="number"?0:e;function rl(e){const t=Gr(e);return Nr(e)(t.map(nl))}const Lr={test:tl,parse:Gr,createTransformer:Nr,getAnimatableNone:rl};function rn(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function jr({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,a=0,l=0;if(!t)i=a=l=n;else{const u=n<.5?n*(1+t):n+t-n*t,c=2*n-u;i=rn(c,u,e+1/3),a=rn(c,u,e),l=rn(c,u,e-1/3)}return{red:Math.round(i*255),green:Math.round(a*255),blue:Math.round(l*255),alpha:r}}const il=(e,t,n)=>{const r=e*e,i=t*t;return Math.sqrt(Math.max(0,n*(i-r)+r))},ol=[nn,Fe,je],Br=e=>ol.find(t=>t.test(e)),Wr=e=>`'${e}' is not an animatable color. Use the equivalent color code instead.`,Ur=(e,t)=>{let n=Br(e),r=Br(t);Ze(!!n,Wr(e)),Ze(!!r,Wr(t));let i=n.parse(e),a=r.parse(t);n===je&&(i=jr(i),n=Fe),r===je&&(a=jr(a),r=Fe);const l=Object.assign({},i);return u=>{for(const c in l)c!=="alpha"&&(l[c]=il(i[c],a[c],u));return l.alpha=Kt(i.alpha,a.alpha,u),n.transform(l)}},al=e=>typeof e=="number",sl=(e,t)=>n=>t(e(n)),Yr=(...e)=>e.reduce(sl);function Hr(e,t){return al(e)?n=>Kt(e,t,n):yt.test(e)?Ur(e,t):Xr(e,t)}const Qr=(e,t)=>{const n=[...e],r=n.length,i=e.map((a,l)=>Hr(a,t[l]));return a=>{for(let l=0;l<r;l++)n[l]=i[l](a);return n}},ll=(e,t)=>{const n=Object.assign(Object.assign({},e),t),r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=Hr(e[i],t[i]));return i=>{for(const a in r)n[a]=r[a](i);return n}};function Jr(e){const t=Lr.parse(e),n=t.length;let r=0,i=0,a=0;for(let l=0;l<n;l++)r||typeof t[l]=="number"?r++:t[l].hue!==void 0?a++:i++;return{parsed:t,numNumbers:r,numRGB:i,numHSL:a}}const Xr=(e,t)=>{const n=Lr.createTransformer(t),r=Jr(e),i=Jr(t);return r.numHSL===i.numHSL&&r.numRGB===i.numRGB&&r.numNumbers>=i.numNumbers?Yr(Qr(r.parsed,i.parsed),n):(Er(!0,`Complex values '${e}' and '${t}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),l=>`${l>0?t:e}`)},ul=(e,t)=>n=>Kt(e,t,n);function cl(e){if(typeof e=="number")return ul;if(typeof e=="string")return yt.test(e)?Ur:Xr;if(Array.isArray(e))return Qr;if(typeof e=="object")return ll}function dl(e,t,n){const r=[],i=n||cl(e[0]),a=e.length-1;for(let l=0;l<a;l++){let u=i(e[l],e[l+1]);if(t){const c=Array.isArray(t)?t[l]:t;u=Yr(c,u)}r.push(u)}return r}function pl([e,t],[n]){return r=>n(kr(e,t,r))}function gl(e,t){const n=e.length,r=n-1;return i=>{let a=0,l=!1;if(i<=e[0]?l=!0:i>=e[r]&&(a=r-1,l=!0),!l){let c=1;for(;c<n&&!(e[c]>i||c===r);c++);a=c-1}const u=kr(e[a],e[a+1],i);return t[a](u)}}function fl(e,t,{clamp:n=!0,ease:r,mixer:i}={}){const a=e.length;Ze(a===t.length,"Both input and output ranges must be the same length"),Ze(!r||!Array.isArray(r)||r.length===a-1,"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values."),e[0]>e[a-1]&&(e=[].concat(e),t=[].concat(t),e.reverse(),t.reverse());const l=dl(t,r,i),u=a===2?pl(e,l):gl(e,l);return n?c=>u(Xs(e[0],e[a-1],c)):u}class hl{constructor({valueRange:t,colorRange:n}){k(this,"mapper");this.mapper=fl(t,n)}getColor(t){return this.mapper(t)}}function ml(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function on({data_field:e,aggregation:t},n){return Xt(n,e,t)}function rt({formatter:e},t){return["string","number"].includes(typeof t)?fe.default(t).format(e):ml(t)}function vl(e,t){return e.type==="static"?e.staticColor:e.type==="continuous"?new hl(e).getColor(t):"black"}function yl(e,t){const n={};return e.forEach(r=>{const{name:i,color:a,data_field:l,aggregation:u,size:c,weight:p}=r,d=Xt(t,l,u),f=rt(r,d);n[i]=o(s.Text,{sx:{fontSize:c,display:"inline"},color:vl(a,d),weight:p,children:f})}),n}function bl(e){return e.split(" ").map((t,n)=>g(_.default.Fragment,{children:[t,"\xA0"]},n))}function Cl(e){const n=e.replaceAll("<br />","<br/>").replaceAll(`
|
|
48
|
-
`,"<br/>").split("<br/>");return n.map((i,a)=>{const l=[bl(i)];return a!==n.length-1&&l.push(o("br",{})),l}).flat().filter(i=>i!==void 0)}function an(e){return Cl(e)}function sn(e,t,n){const r=yl(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map(a=>{var p;const l=i.exec(a);if(!l)return an(a);const u=r[l[1]];if(!u)return an(a);const c=(p=l[2])!=null?p:"";return g(H,{children:[u,an(c)]})})}function xl(e,t){const n={};return e.forEach(r=>{const{name:i,data_field:a,aggregation:l}=r,u=Xt(t,a,l);n[i]=rt(r,u)}),n}function Kr(e,t,n){const r=xl(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map(a=>{var p;const l=i.exec(a);if(!l)return a;const u=r[l[1]];if(!u)return a;const c=(p=l[2])!=null?p:"";return`${u}${c}`}).join("")}const ln={x_axis:{name:"X Axis",data_key:""},y_axis:{name:"Y Axis",data_key:"value"},color:"#228be6",variables:[],reference_lines:[]};ee.use([U.DataZoomComponent,_e.BoxplotChart,U.MarkLineComponent,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function Sl(e,t,n){const r=t.reduce((i,a)=>{const l=on(a,n);return i[a.name]=rt(a,l),i},{});return e.map(i=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:i.name,yAxis:Number(r[i.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return Kr(i.template,t,n)},position:"insideEndTop"}}}))}function wl({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis:a,y_axis:l,color:u,variables:c,reference_lines:p}=x.defaults({},t,ln),{xAxisData:d,boxplotData:f}=S.useMemo(()=>{const v=Y.default.groupBy(n,a.data_key);return{xAxisData:Object.keys(v),boxplotData:Object.values(v).map(C=>C.map(b=>b[l.data_key]))}},[n,a.data_key,l.data_key]),h={dataset:[{source:f},{transform:{type:"boxplot",config:{itemNameFormatter:function(v){var C;return(C=d[v.value])!=null?C:v.value}}}}],dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",name:a.name}],yAxis:[{name:l.name}],series:[{name:l.name,type:"boxplot",itemStyle:{color:u,borderColor:"#454545"},boxWidth:[10,40],datasetIndex:1},...Sl(p,c,n)]};return!t||!r||!i?null:o(Ee.default,{echarts:ee,option:h,style:{width:r,height:i}})}function _l({control:e,index:t,remove:n,variableOptions:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:i})=>o(s.Select,{label:"Value",required:!0,data:r,sx:{flex:1},...i})})]}),o(w.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:i})=>o(s.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Dl({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"reference_lines"}),a=t("reference_lines"),l=n.map((d,f)=>({...d,...a[f]})),u=()=>r({name:"",template:"",variable_key:""}),c=t("variables"),p=S.useMemo(()=>c.map(d=>({label:d.name,value:d.name})),[c]);return g(s.Stack,{children:[l.map((d,f)=>o(_l,{control:e,index:f,remove:i,variableOptions:p})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Reference Line"})})]})}function Il({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,withStyle:!1,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Ml({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"variables"}),l=t("variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[u.map((p,d)=>o(Il,{control:e,index:d,remove:a,data:n})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function Al({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaults({},t,ln),[t]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});S.useEffect(()=>{p(i)},[i]),u(["x_axis","y_axis","reference_lines","color"]);const d=c(),f=S.useMemo(()=>!x.isEqual(d,t),[d,t]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),g(s.Accordion,{defaultValue:"Axis",children:[g(s.Accordion.Item,{value:"Axis",children:[o(s.Accordion.Control,{children:"Axis"}),g(s.Accordion.Panel,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"x_axis.data_key",control:a,render:({field:h})=>o(J,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"y_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"y_axis.data_key",control:a,render:({field:h})=>o(J,{label:"Y Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]})]})]}),g(s.Accordion.Item,{value:"Style",children:[o(s.Accordion.Control,{children:"Style"}),o(s.Accordion.Panel,{children:g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:"color",control:a,render:({field:h})=>o(Pe,{...h})})]})})]}),g(s.Accordion.Item,{value:"Advanced",children:[o(s.Accordion.Control,{children:g(s.Group,{position:"apart",children:["Advanced",o(s.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),o(s.Accordion.Panel,{children:g(s.Tabs,{defaultValue:"variables",children:[g(s.Tabs.List,{children:[o(s.Tabs.Tab,{value:"variables",children:"Variables"}),o(s.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"})]}),o(s.Tabs.Panel,{value:"variables",pt:"xs",children:o(Ml,{control:a,watch:u,data:r})}),o(s.Tabs.Panel,{value:"reference_lines",pt:"xs",children:o(Dl,{control:a,watch:u})})]})})]})]})]})})}class Vl extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Tl={displayName:"Boxplot",migrator:new Vl,name:"boxplot",viewRender:wl,configRender:Al,createConfig:()=>ln};function $l(e){const t=e.y_axes.some(n=>!!n.name);return{bottom:e.x_axis_name?40:25,top:t?30:10}}function El({regressions:e=[]},t){const n=[],r=[],i=[];return t.length===0?{regressionDataSets:n,regressionSeries:r,regressionXAxes:i}:(e.forEach(({transform:a,plot:l,name:u,y_axis_data_key:c})=>{const p=`x-axis-for-${u}`,d=`dataset-for-${u}--raw`,f=`dataset-for-${u}--transformed`;n.push({id:d,source:t.map((h,v)=>[v,Number(h[c])])}),n.push({transform:a,id:f,fromDatasetId:d}),r.push({...l,name:u,datasetId:f,xAxisId:p,showSymbol:!1,tooltip:{show:!1}}),i.push({type:"category",id:p,datasetId:f,show:!1})}),{regressionDataSets:n,regressionSeries:r,regressionXAxes:i})}function kl(e,t,n,r){const i=t.map(a=>[a[n],a[r]]);return Y.default.unionBy(i,e,0)}function Rl(e,t,n){const r=t.reduce((i,a)=>{const l=on(a,n);return i[a.name]=rt(a,l),i},{});return e.map(i=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:i.name,yAxis:Number(r[i.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return Kr(i.template,t,n)},position:"insideEndTop"}}}))}function Ol(e,t,n){const r=t.reduce((i,a)=>{const l=on(a,n);return i[a.name]=rt(a,l),i},{});return e.map(i=>({name:"",type:"line",data:[],markArea:{itemStyle:{color:i.color},data:[[{yAxis:r[i.y_keys.upper]},{yAxis:r[i.y_keys.lower]}]],silent:!0}}))}function Pl({x_axis_data_key:e},{y_axis_data_key:t,yAxisIndex:n,label_position:r,name:i,group_by_key:a,stack:l,color:u,display_name_on_line:c,...p},d,f,h){const v={label:{show:!!r,position:r,formatter:h[n!=null?n:"default"]},name:i,xAxisId:"main-x-axis",yAxisIndex:n,stack:l,color:u,...p};if(c&&(v.endLabel={show:!0,formatter:i,offset:[-12,12],align:"right"}),!a)return v.data=f.map(b=>b[t]),v;const C=x.groupBy(f,a);return Object.entries(C).map(([b,D])=>{const T=x.cloneDeep(v);return T.data=kl(d,D,e,t),T.name=b,T.color=void 0,T})}function Fl(e,t,n,r){const i=t.map(l=>[l,0]);return e.series.map(l=>Pl(e,l,i,n,r)).flat().concat(Rl(e.reference_lines,e.variables,n)).concat(Ol(e.reference_areas,e.variables,n))}function zl(e,t){const n=e.series.reduce((r,{yAxisIndex:i,name:a})=>(r[a]=i,r),{});return{formatter:function(r){const i=Array.isArray(r)?r:[r];if(i.length===0)return"";const a=i.map(({seriesName:l,value:u})=>{var d;if(Array.isArray(u)&&u.length===2&&(u=u[1]),!l)return u;const c=n[l],p=(d=t[c])!=null?d:t.default;return`${l}: <strong>${p({value:u})}</strong>`});return a.unshift(`<strong>${i[0].name}</strong>`),a.join("<br />")}}}function ql(e,t,n){var r;return[{data:t,name:(r=e.x_axis_name)!=null?r:"",id:"main-x-axis",...e.x_axis},...n]}function Gl(e,t){return e.y_axes.map(({nameAlignment:n,...r},i)=>{var l;let a=r.position;return a||(a=i>0?"right":"left"),{...r,position:a,axisLabel:{show:!0,formatter:(l=t[i])!=null?l:t.default},nameTextStyle:{fontWeight:"bold",align:n},nameLocation:"end",nameGap:15}})}const Nl={legend:{show:!0,bottom:0,left:"center",type:"scroll"},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"}}],grid:{top:10,left:30,right:15,bottom:25,containLabel:!0}};function Ll(e,t){const n=e.y_axes.reduce((p,{label_formatter:d},f)=>(p[f]=function(v){let C=v;if(typeof v=="object"&&(Array.isArray(v.value)&&v.value.length===2?C=v.value[1]:C=v.value),!d)return C;try{return fe.default(C).format(d)}catch(b){return console.error(b),C}},p),{default:({value:p})=>p}),r=Y.default.uniq(t.map(p=>p[e.x_axis_data_key])),i=Fl(e,r,t,n),{regressionDataSets:a,regressionSeries:l,regressionXAxes:u}=El(e,t),c={xAxis:ql(e,r,u),yAxis:Gl(e,n),dataset:[...a],series:[...i,...l],tooltip:zl(e,n),grid:$l(e)};return x.defaultsDeep({},c,Nl)}const un={regressions:[],series:[],stats:{templates:{bottom:"",top:""},variables:[]},x_axis:{axisLabel:{rotate:0}},x_axis_data_key:"",x_axis_name:"",y_axes:[{name:"Y Axis",position:"left",nameAlignment:"center",label_formatter:Ke}],variables:[],reference_lines:[],reference_areas:[]};ee.use([U.DataZoomComponent,_e.BarChart,_e.LineChart,_e.ScatterChart,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer,U.MarkLineComponent,U.MarkAreaComponent]),ee.registerTransform(Kn.transform.regression);function Zr(e){return e.trim().length>0}function jl({conf:e,data:t,width:n,height:r}){const i=_.default.useMemo(()=>Ll(e,t),[e,t]);return!n||!r?null:o(Ee.default,{echarts:ee,option:i,style:{width:n,height:r}})}function Bl({context:e}){const{value:t}=G(e.instanceData,"config"),n=S.useMemo(()=>x.defaults({},t,un),[t]),r=e.data,{width:i,height:a}=e.viewport,{ref:l,height:u}=Z.useElementSize(),{ref:c,height:p}=Z.useElementSize(),d=_.default.useMemo(()=>{const{stats:{templates:h,variables:v}}=n;return{top:sn(h.top,v,r),bottom:sn(h.bottom,v,r)}},[n,r]),f=Math.max(0,a-u-p);return g(s.Box,{children:[Zr(n.stats.templates.top)&&o(s.Text,{ref:l,align:"left",size:"xs",pl:"sm",children:Object.values(d.top).map(h=>h)}),o(jl,{width:i,height:f,data:r,conf:n}),Zr(n.stats.templates.bottom)&&o(s.Text,{ref:c,align:"left",size:"xs",pl:"sm",children:Object.values(d.bottom).map(h=>h)})]})}const Wl=[{label:"Rectangle",value:"rectangle"}],Ul=[{label:"Horizontal",value:"horizontal"}];function Yl({control:e,index:t,remove:n,variableOptions:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:i})=>o(s.TextInput,{label:"Color",required:!0,sx:{flex:1},...i})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:i})=>o(s.Select,{label:"Type",required:!0,data:Wl,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:i})=>o(s.Select,{label:"Direction",required:!0,data:Ul,sx:{flex:1},...i})})]}),o(s.Divider,{variant:"dashed",label:"Data",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:i})=>o(s.Select,{label:"Upper Boundary",required:!0,data:r,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:i})=>o(s.Select,{label:"Lower Boundary",required:!0,data:r,sx:{flex:1},...i})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Hl({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"reference_areas"}),a=t("reference_areas"),l=n.map((d,f)=>({...d,...a[f]})),u=()=>r({name:"",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),c=t("variables"),p=S.useMemo(()=>c.map(d=>({label:d.name,value:d.name})),[c]);return g(s.Stack,{children:[l.map((d,f)=>o(Yl,{control:e,index:f,remove:i,variableOptions:p})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Reference Area"})})]})}function Ql({control:e,index:t,remove:n,variableOptions:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:i})=>o(s.Select,{label:"Value",required:!0,data:r,sx:{flex:1},...i})})]}),o(w.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:i})=>o(s.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Jl({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"reference_lines"}),a=t("reference_lines"),l=n.map((d,f)=>({...d,...a[f]})),u=()=>r({name:"",template:"",variable_key:""}),c=t("variables"),p=S.useMemo(()=>c.map(d=>({label:d.name,value:d.name})),[c]);return g(s.Stack,{children:[l.map((d,f)=>o(Ql,{control:e,index:f,remove:i,variableOptions:p})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Reference Line"})})]})}const Xl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}],Kl=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Zl({control:e,regressionItem:t,index:n,remove:r,yAxisOptions:i,data:a}){const l=t.transform.config.method;return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[o(w.Controller,{name:`regressions.${n}.name`,control:e,render:({field:u})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`regressions.${n}.y_axis_data_key`,control:e,render:({field:u})=>o(J,{label:"Value Field",required:!0,data:a,sx:{flex:1},...u})}),o(w.Controller,{name:`regressions.${n}.plot.yAxisIndex`,control:e,render:({field:{value:u,onChange:c,...p}})=>{var d;return o(s.Select,{label:"Y Axis",data:i,disabled:i.length===0,...p,value:(d=u==null?void 0:u.toString())!=null?d:"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})}})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`regressions.${n}.transform.config.method`,control:e,render:({field:u})=>o(s.Select,{label:"Method",data:Xl,sx:{flex:1},...u})}),l==="polynomial"&&o(w.Controller,{name:`regressions.${n}.transform.config.order`,control:e,render:({field:u})=>o(s.NumberInput,{label:"Order",sx:{flex:1},...u})})]}),o(s.Divider,{mb:-15,variant:"dashed",label:"Line Style",labelPosition:"center"}),g(s.Group,{grow:!0,children:[o(w.Controller,{name:`regressions.${n}.plot.lineStyle.type`,control:e,render:({field:u})=>o(s.Select,{label:"Line Type",data:Kl,sx:{flexGrow:1},...u})}),o(w.Controller,{name:`regressions.${n}.plot.lineStyle.width`,control:e,render:({field:u})=>o(s.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...u})})]}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:`regressions.${n}.plot.color`,control:e,render:({field:u})=>o(Pe,{...u})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},n)}function eu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"regressions"}),l=t("regressions"),u=r.map((f,h)=>({...f,...l[h]})),c=t("y_axes"),p=_.default.useMemo(()=>c.map(({name:f},h)=>({label:f,value:h.toString()})),[c]),d=()=>i({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 g(s.Stack,{children:[u.map((f,h)=>o(Zl,{regressionItem:f,control:e,index:h,remove:a,yAxisOptions:p,data:n},h)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:d,children:"Add a Regression Line"})})]})}const tu=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function nu({control:e,index:t}){return g(H,{children:[g(s.Group,{grow:!0,align:"top",children:[o(w.Controller,{name:`series.${t}.stack`,control:e,render:({field:n})=>o(s.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...n})}),o(w.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:n})=>o(s.TextInput,{label:"Bar Width",sx:{flexGrow:1},...n})})]}),o(w.Controller,{name:`series.${t}.barGap`,control:e,render:({field:n})=>o(s.Select,{label:"Bar Gap",data:tu,sx:{flexGrow:1},...n})})]})}const ru=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}],iu=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function ou({control:e,index:t}){return g(H,{children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Line Settings",labelPosition:"center"}),g(s.Group,{grow:!0,children:[o(w.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:n})=>o(s.Select,{label:"Line Type",data:iu,sx:{flexGrow:1},...n})}),o(w.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:n})=>o(s.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...n})})]}),g(s.Group,{grow:!0,align:"center",children:[o(w.Controller,{name:`series.${t}.step`,control:e,render:({field:n})=>o(s.Select,{label:"Step",data:ru,sx:{flexGrow:1,maxWidth:"48%"},...n,value:String(n.value),onChange:r=>{const i=r==="false"?!1:r;n.onChange(i)}})}),g(s.Stack,{children:[o(w.Controller,{name:`series.${t}.smooth`,control:e,render:({field:n})=>o(s.Box,{sx:{flexGrow:1},children:o(s.Switch,{label:"Smooth Line",checked:n.value,onChange:r=>n.onChange(r.currentTarget.checked)})})}),o(w.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:n})=>{var r;return o(s.Box,{sx:{flexGrow:1},children:o(s.Switch,{label:"Display Name on Line",checked:(r=n.value)!=null?r:!1,onChange:i=>n.onChange(i.currentTarget.checked)})})}})]})]})]})}const au=Array.from(new Array(9),(e,t)=>({label:String(t+1),value:t+1}));function su({control:e,index:t}){return o(s.Group,{grow:!0,align:"center",children:o(w.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:n})=>g(s.Stack,{sx:{flexGrow:1},pb:16,spacing:4,children:[o(s.Text,{size:"sm",children:"Size"}),o(s.Slider,{min:1,max:10,marks:au,...n,sx:{width:"100%"}})]})})})}const lu=[{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 uu({control:e,index:t,remove:n,seriesItem:r,yAxisOptions:i,data:a}){const l=r.type;return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[o(s.Stack,{children:o(w.Controller,{name:`series.${t}.type`,control:e,render:({field:u})=>o(s.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}],...u})})}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`series.${t}.name`,control:e,render:({field:u})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),o(w.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:u})=>o(J,{label:"Value Field",required:!0,data:a,sx:{flex:1},...u})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:u,onChange:c,...p}})=>{var d;return o(s.Select,{label:"Y Axis",data:i,disabled:i.length===0,...p,value:(d=u==null?void 0:u.toString())!=null?d:"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})}}),o(w.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:u})=>o(J,{label:"Group By",data:a,clearable:!0,sx:{flex:1},...u})})]}),l==="line"&&o(ou,{index:t,control:e}),l==="bar"&&o(nu,{index:t,control:e}),l==="scatter"&&o(su,{index:t,control:e}),o(w.Controller,{name:`series.${t}.label_position`,control:e,render:({field:u})=>o(s.Select,{label:"Label Position",data:lu,...u})}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:`series.${t}.color`,control:e,render:({field:u})=>o(Pe,{...u})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function cu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"series"}),l=t("series"),u=r.map((f,h)=>({...f,...l[h]})),c=()=>i({type:"bar",name:Z.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",display_name_on_line:!1,stack:"",color:"#000",step:!1,smooth:!1,barWidth:"10",barGap:"0%",lineStyle:{type:"solid",width:1}}),p=t("y_axes"),d=_.default.useMemo(()=>p.map(({name:f},h)=>({label:f,value:h.toString()})),[p]);return g(s.Stack,{children:[u.map((f,h)=>o(uu,{control:e,index:h,remove:a,seriesItem:f,yAxisOptions:d,data:n},f.id)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Series"})})]})}function du({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`stats.variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function pu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"stats.variables"});t("stats.templates");const l=t("stats.variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[g(s.Stack,{spacing:0,children:[o(w.Controller,{name:"stats.templates.top",control:e,render:({field:p})=>o(Qt,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...p})}),o(w.Controller,{name:"stats.templates.bottom",control:e,render:({field:p})=>o(Qt,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...p})})]}),u.map((p,d)=>o(du,{control:e,index:d,remove:a,data:n})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function gu({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,withStyle:!1,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function fu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"variables"}),l=t("variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[u.map((p,d)=>o(gu,{control:e,index:d,remove:a,data:n},d)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function hu({data:e,control:t,watch:n}){return n(["x_axis_data_key","x_axis_name","x_axis"]),g(s.Stack,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis_data_key",control:t,render:({field:r})=>o(J,{label:"X Axis Data Field",required:!0,data:e,sx:{flex:1},...r})}),o(w.Controller,{name:"x_axis_name",control:t,render:({field:r})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...r})})]}),o(s.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),o(s.Group,{children:o(w.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>o(s.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:o(s.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...r})})})]})}const mu=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],vu=[{label:"left",value:"left"},{label:"right",value:"right"}];function yu({control:e,index:t,remove:n}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Name",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:r})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),o(w.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:r})=>o(s.Select,{label:"Align",required:!0,data:mu,sx:{flex:1},...r})})]}),o(s.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),o(s.Group,{grow:!0,noWrap:!0,children:o(w.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:r})=>o(s.Select,{label:"Position",required:!0,data:vu,sx:{flex:1},...r})})}),g(s.Stack,{children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),o(w.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:r})=>o(Jt,{...r})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:o($.Trash,{size:16})})]})}function bu({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"y_axes"}),a=t("y_axes"),l=n.map((c,p)=>({...c,...a[p]})),u=()=>r({name:"",label_formatter:Ke});return g(s.Stack,{children:[l.map((c,p)=>o(yu,{control:e,index:p,remove:i},p)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Y Axis"})})]})}function Cu(e){function t({type:n,name:r,showSymbol:i,symbolSize:a=5,y_axis_data_key:l="value",yAxisIndex:u=0,label_position:c="top",stack:p="1",color:d="black",barWidth:f="30",barGap:h="0%",smooth:v=!1,step:C=!1,group_by_key:b="",display_name_on_line:D=!1,lineStyle:T={type:"solid",width:1}}){return{type:n,name:r,showSymbol:i,symbolSize:a,y_axis_data_key:l,yAxisIndex:u,label_position:c,stack:p,color:d,barWidth:f,barGap:h,smooth:v,step:C,group_by_key:b,display_name_on_line:D,lineStyle:T}}return e.map(t)}function xu(e){return e||{templates:{top:"",bottom:""},variables:[]}}function Su({series:e,stats:t,...n}){return{series:Cu(e!=null?e:[]),stats:xu(t),...n}}function wu({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaultsDeep({},t,un),[t]),a=S.useMemo(()=>Su(i),[i]);S.useEffect(()=>{!x.isEqual(i,a)&&(console.log("config malformed, resetting to defaults",i,a),n(a))},[i,a]);const{control:l,handleSubmit:u,watch:c,getValues:p,reset:d}=w.useForm({defaultValues:a});S.useEffect(()=>{d(a)},[a]);const f=p(),h=S.useMemo(()=>!x.isEqual(f,i),[f,i]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:u(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:o($.DeviceFloppy,{size:20})})]}),g(s.Accordion,{multiple:!0,defaultValue:["X Axis","Y Axes"],children:[g(s.Accordion.Item,{value:"X Axis",children:[o(s.Accordion.Control,{children:"X Axis"}),o(s.Accordion.Panel,{children:o(hu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Y Axes",children:[o(s.Accordion.Control,{children:"Y Axes"}),o(s.Accordion.Panel,{children:o(bu,{control:l,watch:c})})]}),g(s.Accordion.Item,{value:"Series",children:[o(s.Accordion.Control,{children:"Series"}),o(s.Accordion.Panel,{children:o(cu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Regression Lines",children:[o(s.Accordion.Control,{children:"Regression Lines"}),o(s.Accordion.Panel,{children:o(eu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Stats",children:[o(s.Accordion.Control,{children:"Stats"}),o(s.Accordion.Panel,{children:o(pu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Advanced",children:[o(s.Accordion.Control,{children:g(s.Group,{position:"apart",children:["Advanced",o(s.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),o(s.Accordion.Panel,{children:g(s.Tabs,{defaultValue:"variables",children:[g(s.Tabs.List,{children:[o(s.Tabs.Tab,{value:"variables",children:"Variables"}),o(s.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"}),o(s.Tabs.Tab,{value:"reference_areas",children:"Reference Areas"})]}),o(s.Tabs.Panel,{value:"variables",pt:"xs",children:o(fu,{control:l,watch:c,data:r})}),o(s.Tabs.Panel,{value:"reference_lines",pt:"xs",children:o(Jl,{control:l,watch:c})}),o(s.Tabs.Panel,{value:"reference_areas",pt:"xs",children:o(Hl,{control:l,watch:c})})]})})]})]})]})})}class _u extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Du={displayName:"Cartesian Chart",migrator:new _u,name:"cartesian",viewRender:Bl,configRender:wu,createConfig:()=>un},cn={x_axis:{name:"X Axis",data_key:""},data_key:"value",bar:{name:"Value",color:"#228be6"},line:{name:"Value",color:"red"}};function dn(e){return fe.default(e).format({output:"percent",mantissa:0})}function Iu(e){const t=e.value[1];try{return dn(t)}catch(n){return console.error(n),t}}function Mu(e){const t=Array.isArray(e)?e:[e];if(t.length===0)return"";const n=t.map((r,i)=>{const a=r.seriesName,[l,u]=r.value;return a?`${a}: <strong>${(i===0?p=>p:dn)(u)}</strong>`:u});return n.unshift(`<strong>${t[0].name}</strong>`),n.join("<br />")}ee.use([_e.BarChart,_e.LineChart,U.DataZoomComponent,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function Au({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis:a,data_key:l,bar:u,line:c}=x.defaults({},t,cn),{barData:p,lineData:d}=S.useMemo(()=>{const h=n.map(b=>[b[a.data_key],Number(b[l])]).sort((b,D)=>D[1]-b[1]),v=h.reduce((b,D)=>b+D[1],0),C=h.reduce((b,D,T)=>{const E=T===0?0:b[T-1][1];return b.push([D[0],E+D[1]]),b},[]).map(b=>[b[0],b[1]/v]);return{barData:h,lineData:C}},[a.data_key,l,n]),f={dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis",formatter:Mu},xAxis:[{type:"category",name:a.name,nameLocation:"middle",nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"}}],yAxis:[{name:u.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"}},{name:c.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"center"},axisLabel:{show:!0,formatter:dn}}],series:[{name:u.name,type:"bar",itemStyle:{color:u.color},yAxisIndex:0,data:p},{name:c.name,type:"line",itemStyle:{color:c.color},symbolSize:2,lineStyle:{width:1},label:{show:!0,position:"top",formatter:Iu},yAxisIndex:1,data:d}]};return!t||!r||!i?null:o(Ee.default,{echarts:ee,option:f,style:{width:r,height:i}})}function Vu({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaults({},t,cn),[t]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});S.useEffect(()=>{p(i)},[i]),u(["x_axis","data_key","bar","line"]);const d=c(),f=S.useMemo(()=>!x.isEqual(d,t),[d,t]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"x_axis.data_key",control:a,render:({field:h})=>o(J,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),o(w.Controller,{name:"data_key",control:a,render:({field:h})=>o(J,{label:"Y Axis Data Field",required:!0,data:r,sx:{flex:1},...h})}),o(s.Divider,{my:"md",label:"Bar",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"bar.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Bar Name",sx:{flex:1},...h})}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Bar's Color"}),o(w.Controller,{name:"bar.color",control:a,render:({field:h})=>o(Pe,{...h})})]})]}),o(s.Divider,{my:"md",label:"Line",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"line.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Line Name",sx:{flex:1},...h})}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Line's Color"}),o(w.Controller,{name:"line.color",control:a,render:({field:h})=>o(Pe,{...h})})]})]})]})})}class Tu extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const $u={displayName:"Pareto Chart",migrator:new Tu,name:"paretoChart",viewRender:Au,configRender:Vu,createConfig:()=>cn},pn={label_field:"",value_field:""};ee.use([_e.PieChart,Te.CanvasRenderer]);const Eu={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
|
|
47
|
+
`,xr=()=>{const[e,t]=S.useState(!1);return g(H,{children:[o(s.Button,{variant:"subtle",compact:!0,onClick:()=>t(n=>!n),children:e?"Close":"Click to see expected data structure"}),o(s.Collapse,{in:e,children:o(be.Prism,{language:"typescript",noCopy:!0,colorScheme:"dark",children:Na})})]})},La=M.observer(function({config:t}){const n=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,i=[...r];return g(H,{children:[o(s.Divider,{label:"Configure options",labelPosition:"center"}),r.length>0&&o(s.MultiSelect,{label:"Default Selection",data:i,value:t.default_value,onChange:t.setDefaultValue}),r.map((a,l)=>g(s.Group,{sx:{position:"relative"},pr:"40px",children:[o(s.TextInput,{label:"Label",required:!0,value:t.static_options[l].label,onChange:u=>{t.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.TextInput,{label:"Value",required:!0,value:t.static_options[l].value,onChange:u=>{t.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:o($.Trash,{size:16})})]})),o(s.Button,{size:"xs",color:"blue",leftIcon:o($.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),o(s.Divider,{label:"Or fetch options from database",labelPosition:"center"}),o(s.Checkbox,{checked:t.select_first_by_default,onChange:a=>t.setSelectFirstByDefault(a.currentTarget.checked),label:"Select the first option by default"}),o(Cr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),o(xr,{})]})}),ja=M.observer(function({config:t}){const n=()=>{t.addStaticOption({label:"",value:""})},r=t.static_options,i=[{label:"No default selection",value:""},...r];return g(H,{children:[o(s.Checkbox,{checked:t.required,onChange:a=>t.setRequired(a.currentTarget.checked),label:"Required"}),o(s.Divider,{label:"Configure options",labelPosition:"center"}),r.length>0&&o(s.Select,{label:"Default Selection",data:i,value:t.default_value,onChange:t.setDefaultValue}),r.map((a,l)=>g(s.Group,{sx:{position:"relative"},pr:"40px",children:[o(s.TextInput,{label:"Label",required:!0,value:t.static_options[l].label,onChange:u=>{t.static_options[l].setLabel(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.TextInput,{label:"Value",required:!0,value:t.static_options[l].value,onChange:u=>{t.static_options[l].setValue(u.currentTarget.value)},sx:{flexGrow:1}}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>t.removeStaticOption(l),sx:{position:"absolute",top:28,right:5},children:o($.Trash,{size:16})})]},l)),o(s.Button,{size:"xs",color:"blue",leftIcon:o($.PlaylistAdd,{size:20}),onClick:n,sx:{width:"50%"},mx:"auto",children:"Add an Option"}),o(s.Divider,{label:"Or fetch options from database",labelPosition:"center"}),o(s.Checkbox,{checked:t.select_first_by_default,onChange:a=>t.setSelectFirstByDefault(a.currentTarget.checked),label:"Select the first option by default"}),o(Cr,{value:t.options_query_id,onChange:t.setOptionsQueryID}),o(xr,{})]})}),Ba=M.observer(function({config:t}){return g(H,{children:[o(s.TextInput,{label:"Default Value",value:t.default_value,onChange:n=>{t.setDefaultValue(n.currentTarget.value)}}),o(s.Checkbox,{checked:t.required,onChange:n=>t.setRequired(n.currentTarget.checked),label:"Required"})]})}),Wa=M.observer(function({filter:t}){const n=t.plainDefaultValue,[r,i]=_.default.useState(n);return _.default.useEffect(()=>{i(n)},[n]),g(s.Box,{sx:{maxWidth:"30em"},children:[o(s.Text,{pb:"md",color:"gray",children:"Preview"}),o(gr,{filter:t,value:r,onChange:i}),o(s.Text,{pt:"lg",pb:"md",color:"gray",children:"Config"}),o(be.Prism,{language:"json",colorScheme:"dark",noCopy:!0,children:JSON.stringify(t,null,4)})]})}),Ua={select:ja,"multi-select":La,"text-input":Ba,checkbox:za,"date-range":Ga},Ya=[{label:"Select",value:"select"},{label:"Multi Select",value:"multi-select"},{label:"Text Input",value:"text-input"},{label:"Checkbox",value:"checkbox"},{label:"Date Range",value:"date-range"}],Ha=M.observer(function({filter:t,index:n}){const r=j(),i=_.default.useMemo(()=>Ua[t.type],[t.type]);return g(s.SimpleGrid,{cols:2,children:[g(s.Box,{pl:"md",children:[o(s.Text,{pb:"md",color:"gray",children:"Edit"}),g(s.Stack,{sx:{maxWidth:"30em"},children:[o(s.NumberInput,{label:"Placement Order",required:!0,value:t.order,onChange:t.setOrder,hideControls:!0}),o(s.MultiSelect,{label:"Visible in...",data:r.views.options,value:[...t.visibleInViewsIDs],onChange:t.setVisibleInViewsIDs}),o(s.TextInput,{label:"Key",placeholder:"A unique key to refer",required:!0,value:t.key,onChange:a=>{t.setKey(a.currentTarget.value)}}),o(s.TextInput,{label:"Label",placeholder:"Label for this field",required:!0,value:t.label,onChange:a=>{t.setLabel(a.currentTarget.value)}}),o(s.Select,{label:"Widget",data:Ya,required:!0,value:t.type,onChange:t.setType}),o(i,{config:t.config,index:n})]})]}),o(Wa,{filter:t})]})}),Vf="",Qa=M.observer(function(){const t=j(),n=t.filters.current,r=()=>{const i=Z.randomId(),a={id:i,key:i,label:i,order:n.length+1,type:oe.TextInput,config:br(),visibleInViewsIDs:["Main"]};t.filters.append(a)};return g(s.Box,{sx:{height:"90vh",maxHeight:"calc(100vh - 185px)"},p:0,children:[o(s.Group,{sx:{position:"absolute",top:"16px",right:"16px"},children:o(s.Button,{size:"xs",color:"red",leftIcon:o($.Recycle,{size:20}),disabled:!t.filtersChanged,onClick:t.resetFilters,children:"Revert Changes"})}),o(s.Tabs,{className:"filter-settings-tabs",orientation:"vertical",defaultValue:t.filters.firstID,styles:{root:{display:"block"}},children:g(s.Group,{sx:{height:"100%"},children:[g(s.Stack,{sx:{height:"100%"},children:[o(s.Tabs.List,{position:"left",sx:{flexGrow:1,width:"200px"},children:t.filters.current.map(i=>o(s.Tabs.Tab,{value:i.id,sx:{maxWidth:"100%",overflow:"scroll"},children:i.label},i.id))}),o(s.Button,{size:"xs",color:"blue",leftIcon:o($.PlaylistAdd,{size:20}),onClick:r,children:"Add a Filter"})]}),o(s.Box,{sx:{flexGrow:1,height:"100%"},children:t.filters.current.map((i,a)=>o(s.Tabs.Panel,{value:i.id,sx:{height:"100%"},children:g(s.Stack,{sx:{height:"100%"},spacing:"sm",children:[o(s.Box,{sx:{flexGrow:1,maxHeight:"calc(100% - 52px)",overflow:"scroll"},children:o(Ha,{filter:i,index:a})}),o(s.Group,{position:"right",pt:10,children:o(s.Button,{size:"xs",color:"red",leftIcon:o($.Trash,{size:20}),onClick:()=>t.filters.remove(a),children:"Delete this filter"})})]})},i.id))})]})})]})}),Ja=M.observer(function({opened:t,close:n}){const{freezeLayout:r}=_.default.useContext(Ce);return _.default.useEffect(()=>{r(t)},[t]),o(s.Modal,{size:"96vw",overflow:"inside",opened:t,onClose:n,title:"Filters",trapFocus:!0,onDragStart:i=>{i.stopPropagation()},withCloseButton:!1,children:o(Qa,{})})});var Sr=(e=>(e.Use="use",e.Edit="edit",e))(Sr||{}),he=(e=>(e.Division="div",e.Modal="modal",e))(he||{}),wr=(e=>(e.Select="select",e.MultiSelect="multi-select",e.TextInput="text-input",e.Checkbox="checkbox",e.DateRange="date-range",e))(wr||{});const Xa=M.observer(()=>{const t=j().views.VIE;return!t||t.type!==he.Division?null:g(s.Stack,{children:[o(s.Divider,{mt:8,mb:0,label:"Division settings",labelPosition:"center"}),o(s.Text,{align:"center",size:"xs",color:"dimmed",children:"Under construction"})]})}),Ka=M.observer(()=>{const t=j().views.VIE;return!t||t.type!==he.Modal?null:g(s.Stack,{children:[o(s.Divider,{mt:8,label:"Modal settings",labelPosition:"center"}),g(s.Group,{grow:!0,children:[o(s.TextInput,{label:"Width",value:t.config.width,onChange:n=>t.updateConfig("width",n.currentTarget.value),placeholder:"600px / 50vw"}),o(s.TextInput,{label:"Height",value:t.config.height,onChange:n=>t.updateConfig("height",n.currentTarget.value),placeholder:"600px / 50vw"})]})]})}),Za=M.observer(()=>g(H,{children:[o(Xa,{}),o(Ka,{})]})),es=[{label:"Division",value:he.Division},{label:"Modal",value:he.Modal}],ts=M.observer(()=>{const t=j().views.VIE;return t?g(s.Stack,{sx:{position:"relative"},children:[o(s.TextInput,{label:"Name",value:t.name,onChange:n=>{t.setName(n.currentTarget.value)}}),o(s.Select,{label:"Type",value:t.type,onChange:t.setType,data:es}),o(Za,{})]}):null}),ns=M.observer(({opened:e,close:t})=>{var i;const n=j(),{freezeLayout:r}=_.default.useContext(Ce);return _.default.useEffect(()=>{r(e)},[e]),o(s.Modal,{size:"500px",overflow:"inside",opened:e,onClose:t,withCloseButton:!1,styles:{header:{width:"100%"},title:{width:"100%"}},title:g(s.Group,{position:"apart",children:[g(s.Text,{sx:{flexGrow:1},children:["Editing ",(i=n.views.VIE)==null?void 0:i.name]}),o(s.ActionIcon,{size:18,color:"red",onClick:n.views.removeVIE,disabled:n.views.isVIETheFirstView,children:o($.Trash,{size:18})})]}),trapFocus:!0,onDragStart:a=>{a.stopPropagation()},children:o(ts,{})})}),rs=S.forwardRef(({label:e,type:t,...n},r)=>t!=="TRIGGER_TO_ADD"?o("div",{ref:r,...n,children:g(s.Group,{noWrap:!0,position:"apart",children:[o(s.Text,{size:"sm",children:e}),o(s.Text,{size:"xs",color:"dimmed",children:t})]})}):o("div",{ref:r,...n,children:o(s.Group,{noWrap:!0,grow:!0,children:o(s.Text,{size:"sm",align:"center",color:"#228be6",children:e})})})),_r="TRIGGER_TO_ADD",is=M.observer(({value:e,onChange:t,triggerAdd:n,triggerEdit:r,options:i})=>{const a=S.useMemo(()=>[...i,{label:"Add a View",value:_r,type:"TRIGGER_TO_ADD"}],[i,n]),l=u=>{u!==_r?t(u):n()};return g(s.Group,{position:"left",spacing:0,sx:{minWidth:"260px"},children:[o(s.Select,{value:e,onChange:l,placeholder:"Pick a View",itemComponent:rs,data:a,nothingFound:"Empty",sx:{flexGrow:1},styles:{input:{borderTopRightRadius:0,borderBottomRightRadius:0}}}),o(s.ActionIcon,{onClick:r,variant:"default",size:36,sx:{borderLeft:0,borderTopLeftRadius:0,borderBottomLeftRadius:0,"&:active":{transform:"none",svg:{transform:"translateY(1px)"}}},children:o($.Settings,{size:20})})]})}),os=M.observer(()=>{const e=j(),[t,n]=S.useState(!1),r=()=>{n(!0)},i=()=>{n(!1)};return g(H,{children:[o(is,{value:e.views.idOfVIE,onChange:e.views.setIDOfVIE,triggerAdd:e.views.addARandomNewView,triggerEdit:r,options:e.views.options}),o(ns,{opened:t,close:i})]})}),Dr={"> button":{"&:first-of-type":{borderTopRightRadius:0,borderBottomRightRadius:0,borderRightWidth:.5},"&:last-of-type":{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeftWidth:.5}}},Ir=M.observer(function({saveChanges:t}){const n=j(),r=_.default.useCallback(()=>{const T=n.queries.json,E=n.views.json,O=n.sqlSnippets.json,F=n.filters.current,L=n.mock_context.current;return{filters:F,views:E,definition:{sqlSnippets:O,queries:T,mock_context:L},version:n.version}},[n]),i=()=>{n.reset()},a=n.changed,{inEditMode:l,inUseMode:u}=_.default.useContext(Ce),[c,p]=_.default.useState(!1),d=()=>p(!0),f=()=>p(!1),[h,v]=_.default.useState(!1),C=()=>v(!0),b=()=>v(!1),D=()=>{const T=JSON.stringify(r(),null,2);sa(n.name,T)};return g(s.Group,{position:"apart",pt:0,px:10,pb:"xs",children:[o(s.Group,{position:"left",children:l&&o(os,{})}),g(s.Group,{position:"right",sx:{button:{minWidth:"40px"}},children:[l&&g(H,{children:[o(s.Button,{variant:"filled",size:"xs",disabled:!n.views.VIE,onClick:n.views.addAPanelToVIE,leftIcon:o($.PlaylistAdd,{size:20}),children:"Add a Panel"}),g(s.Group,{spacing:0,sx:Dr,children:[o(s.Tooltip,{label:"Filters",children:o(s.ActionIcon,{variant:"default",size:"md",onClick:C,children:o($.Filter,{size:20})})}),o(s.Tooltip,{label:"Data Settings",children:o(s.ActionIcon,{variant:"default",size:"md",onClick:d,children:o($.Database,{size:20})})})]}),g(s.Group,{spacing:0,sx:Dr,children:[o(s.Tooltip,{label:"Save Changes",children:o(s.ActionIcon,{variant:"default",size:"md",onClick:t,disabled:!a,children:o($.DeviceFloppy,{size:20,color:"green"})})}),o(s.Tooltip,{label:"Revert Changes",children:o(s.ActionIcon,{variant:"default",size:"md",disabled:!a,onClick:i,children:o($.Recycle,{size:20,color:"red"})})})]})]}),!u&&g(s.Menu,{width:180,trigger:"hover",children:[o(s.Menu.Target,{children:o(s.ActionIcon,{variant:"default",size:"md",children:o($.Share,{size:20})})}),g(s.Menu.Dropdown,{children:[o(s.Menu.Item,{icon:o($.Download,{size:14}),onClick:n.queries.downloadAllData,children:"Download Data"}),o(s.Menu.Item,{icon:o($.Code,{size:14}),onClick:D,children:"Download Schema"})]})]})]}),o(Ja,{opened:h,close:b}),o(Fa,{opened:c,close:f})]})}),Tf="",Mr=M.observer(()=>{const{freezeLayout:e}=_.default.useContext(Ce),[t,n]=_.default.useState(!1),{panel:r}=ae();return _.default.useEffect(()=>{e(t)},[t]),!r.description||r.description==="<p><br></p>"?null:g(H,{children:[o(s.Modal,{opened:t,onClose:()=>n(!1),title:r.title,withCloseButton:!1,children:o(tr.default,{readOnly:!0,value:r.description,onChange:Y.default.noop,sx:{border:"none"}})}),o(s.Tooltip,{label:"Click to see description",position:"top-start",withinPortal:!0,children:o(s.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>n(i=>!i),sx:{verticalAlign:"baseline",cursor:"pointer"},children:o($.InfoCircle,{size:20})})})]})}),Ar=e=>{const{title:t="Variables",variables:n}=e,r=Z.useClipboard(),i=a=>{r.copy(a),st.showNotification({color:"green",message:"Copied to clipboard"})};return g(s.Paper,{withBorder:!0,p:"sm",children:[o(s.Text,{size:"xs",color:"dimmed",mb:"sm",children:t}),o(s.Stack,{style:{maxHeight:"300px"},children:n.map(a=>g(s.Text,{size:"sm",children:[g(s.Code,{color:"teal",children:["// ",a.description]}),o("br",{}),g(s.Code,{onClick:()=>i(a.name),style:{cursor:"pointer"},children:[a.name," : ",a.valueType]})]},a.name))})]})};class as{constructor(t,n){k(this,"operationId");k(this,"operation");k(this,"operationSchema");k(this,"variables",[]);this.operationManager=t,this.instance=n,ie.makeAutoObservable(this)}get schemaList(){return this.operationManager.getOperationSchemaList()}async configOperation(t,n){const r=await this.operationManager.retrieveTrigger(t),i=this.operationManager.getOperationSchemaList().find(a=>a.id===(r==null?void 0:r.schemaRef));ie.runInAction(()=>{this.operationId=t,this.operation=r,this.operationSchema=i,this.variables=n})}async changeSchema(t){this.operationId&&(await this.operationManager.createOrGetOperation(this.operationId,t),await this.configOperation(this.operationId,this.variables))}}function ss(e){return!!e.operationId}const ls=M.observer(({model:e,onClick:t})=>{var r;const n=(r=e.operationSchema)==null?void 0:r.displayName;return o(s.Button,{variant:"outline",onClick:t,children:n})}),us=M.observer(({model:e})=>{const t={operation:e.operation,instance:e.instance,variables:[]};return S.createElement(e.operationSchema.configRender,t)});function cs({model:e}){const t=e.schemaList,n=t.map(i=>({label:i.displayName,value:i.id}));async function r(i){await e.changeSchema(t.find(a=>a.id===i))}return o(s.Select,{label:"Operation",data:n,onChange:r,value:e.operationSchema.id})}const ds=M.observer(e=>{const[t,{setTrue:n,setFalse:r}]=W.useBoolean(!1),{operationManager:i,operationId:a,instance:l,variables:u}=e,c=W.useCreation(()=>new as(i,l),[i,l]);return W.useAsyncEffect(async()=>{await c.configOperation(a,u)},[a,c]),ss(c)?g(H,{children:[o(ls,{model:c,onClick:n}),o(s.Modal,{opened:t,onClose:r,title:"Operation Settings",closeButtonLabel:"close",children:g(s.Stack,{children:[o(cs,{model:c}),o(us,{model:c}),o(Ar,{title:"Variables",variables:c.variables})]})})]}):null});class ps{constructor(t,n){k(this,"triggerId");k(this,"trigger");k(this,"triggerSchema");k(this,"sampleData");this.triggerManager=t,this.instance=n,ie.makeAutoObservable(this)}get schemaList(){return this.triggerManager.getTriggerSchemaList()}async configTrigger(t,n){const r=await this.triggerManager.retrieveTrigger(t),i=this.triggerManager.getTriggerSchemaList().find(a=>a.id===(r==null?void 0:r.schemaRef));ie.runInAction(()=>{this.triggerId=t,this.trigger=r,this.triggerSchema=i,this.sampleData=n})}async changeSchema(t){this.triggerId&&(await this.triggerManager.createOrGetTrigger(this.triggerId,t),await this.configTrigger(this.triggerId,this.sampleData))}isReady(){return gs(this)}}function gs(e){return!!e.triggerId&&!!e.triggerSchema}function fs(e,t){return W.useCreation(()=>new ps(e,t),[e,t])}const hs=M.observer(({model:e,onClick:t})=>{const n=e.triggerSchema.nameRender,r={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return o(s.Button,{variant:"outline",onClick:t,children:S.createElement(n,r)})}),ms=M.observer(({model:e})=>{const t=e.schemaList,n=t.map(i=>({label:i.displayName,value:i.id}));async function r(i){await e.changeSchema(t.find(a=>a.id===i))}return o(s.Select,{label:"Trigger",data:n,value:e.triggerSchema.id,onChange:r})}),vs=M.observer(({model:e})=>{const t={trigger:e.trigger,instance:e.instance,sampleData:e.sampleData};return S.createElement(e.triggerSchema.configRender,t)}),ys=M.observer(e=>{const[t,{setTrue:n,setFalse:r}]=W.useBoolean(!1),i=e.model;return g(H,{children:[o(s.Modal,{opened:t,onClose:r,title:"Setup Trigger",closeButtonLabel:"close setup",children:g(s.Stack,{children:[o(ms,{model:i}),o(vs,{model:i}),o(Ar,{title:"Payload",variables:i.triggerSchema.payload})]})}),o(hs,{onClick:n,model:i})]})});class Ue{constructor(t,n){this.root=t,this.path=n}async deleteItem(t){t===null&&await this.root.deleteItem(this.path);const n=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,x.omit(n,t))}async getItem(t){const n=await this.root.getItem(this.path);return t===null?n:x.get(n,t)}async setItem(t,n){if(t===null)await this.root.setItem(this.path,n);else{const r=await this.root.getItem(this.path)||{};await this.root.setItem(this.path,{...r,[t]:n})}return await this.getItem(t)}watchItem(t,n,r){return t===null?this.root.watchItem(this.path,(i,a)=>{n(i,a)},r):this.root.watchItem(this.path,(i,a)=>{const l=x.get(i,t),u=x.get(a,t);l!==u&&n(l,u)},r)}}class Yt{constructor(t,n,r){k(this,"attachmentStorage");this.instance=t,this.attachmentKey=n,this.constructInstance=r,this.attachmentStorage=new Ue(t.instanceData,n)}async getInstance(t){if(await this.attachmentStorage.getItem(t))return this.constructInstance(new Ue(this.attachmentStorage,t))}async create(t,n){return await this.attachmentStorage.setItem(t,n),this.constructInstance(new Ue(this.attachmentStorage,t))}async remove(t){await this.attachmentStorage.deleteItem(t)}async list(){const t=await this.attachmentStorage.getItem(null);return Promise.all(x.values(t).map(n=>this.constructInstance(new Ue(this.attachmentStorage,n.id))))}}class Vr{constructor(t){k(this,"rootRef");this.rootRef=ie.observable({current:t})}async deleteItem(t){ie.runInAction(()=>{x.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?ie.toJS(this.rootRef.current):x.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(x.isObject(n))ie.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else ie.runInAction(()=>{x.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,r){return ie.reaction(()=>this.getValueFromRoot(t),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class bs{constructor(){k(this,"channels",new Map);k(this,"globalChannel",new nr.default)}getChannel(t){const n=this.channels.get(t);if(n)return n;const r=new nr.default;return this.channels.set(t,r),r}}class Cs{constructor(t){k(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 n=this.instances.get(t.id);if(n)return n;const r={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new bs,instanceData:new Vr(t.viz.conf)};return this.instances.set(t.id,r),r}}function Tr(e,t,n){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Vr({}),colorPalette:{getColor(){return()=>""}},data:t}}const xs=e=>{const{panel:t,vizManager:n,data:r}=e,i=n.resolveComponent(t.viz.type),a=n.getOrCreateInstance(t),l={...Tr(a,r,n),viewport:{width:t.layout.w,height:t.layout.h}},u=i.viewRender;return o(u,{context:l,instance:a,...x.omit(e,["panel","vizManager","data"])})},Ss=e=>{const{vizManager:t,panel:n,panelInfoEditor:r,data:i}=e,a=t.resolveComponent(n.viz.type),l=t.getOrCreateInstance(n),u={...Tr(l,i,t),panelInfoEditor:r},c=a.configRender;return o(c,{context:u,instance:l,...x.omit(e,["panel","vizManager","data","panelInfoEditor"])})},$r=(e,t)=>{const n=Qe.default.bezier(e),r=Qe.default.bezier(t);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},pt=e=>{const t=Qe.default.bezier(e);return function(n){return t(n/100).hex()}},ws={type:"interpolation",displayName:"Red / Green",getColor:$r(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},_s={type:"interpolation",displayName:"Yellow / Blue",getColor:$r(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ds={type:"interpolation",displayName:"Red",getColor:pt(["#fff7f1","darkred"]),name:"red",category:"sequential"},Is={type:"interpolation",displayName:"Green",getColor:pt(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ms={type:"interpolation",displayName:"Blue",getColor:pt(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},As={type:"interpolation",displayName:"Orange",getColor:pt(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"},Vs="5.12.0";class Ts{constructor(t){k(this,"staticColors",new Map);k(this,"interpolations",new Map);t.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const n=this.encodeColor(t);t.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(n,t)):t.type==="interpolation"&&(this.interpolations.has(n)&&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(n,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 $s{constructor(){k(this,"plugins",new Map);k(this,"vizComponents",new Map);k(this,"factory",{viz:t=>{const n=this.vizComponents.get(t);if(n)return n;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 n of t.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Es{constructor(){k(this,"migrations",[])}version(t,n){return this.migrations.push({version:t,handler:n}),this}run(t,n){var a;if(t.from===t.to)return n;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const r=this.migrations.filter(l=>l.version>t.from&&l.version<=t.to),i=x.orderBy(r,"version","asc");if(((a=x.last(i))==null?void 0:a.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return i.reduce((l,u)=>u.handler(l),n)}}class ge extends Es{constructor(){super(),this.configVersions()}version(t,n){return super.version(t,r=>({version:t,...n(r)}))}async migrate({configData:t}){const n=await t.getItem(null),r=x.get(n,"version",0),i=this.run({from:r,to:this.VERSION},n);await t.setItem(null,i)}async needMigration({configData:t}){const n=await t.getItem(null);return x.get(n,"version",0)<this.VERSION}}const G=(e,t)=>{const[n,{setFalse:r}]=W.useBoolean(!0),[i,a]=S.useState();S.useEffect(()=>(e.getItem(t).then(u=>{a(u),r()}),e.watchItem(t,u=>{a(u)})));const l=S.useCallback(async u=>{await e.setItem(t,u),a(u)},[e,t]);return{loading:n,value:i,set:l}},Ht={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"}};ee.use([U.GridComponent,U.VisualMapComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function ks({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:u,xAxis3D:c,yAxis3D:p,zAxis3D:d}=x.defaults({},t,Ht),f=S.useMemo(()=>{const C=x.minBy(n,b=>b[u]);return x.get(C,u)},[n,u]),h=S.useMemo(()=>{const C=x.maxBy(n,b=>b[u]);return x.get(C,u)},[n,u]),v={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:f,max:h,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:c,yAxis3D:p,zAxis3D:d,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:n.map(C=>[C[a],C[l],C[u]])}]};return t?o(Ee.default,{echarts:ee,option:v,style:{width:r,height:i}}):null}function Rs({label:e,required:t,value:n,onChange:r,data:i,clearable:a=!1,sx:l,...u},c){const p=_.default.useMemo(()=>{if(!Array.isArray(i)||i.length===0)return[];const f=Object.keys(i[0]).map(h=>({label:h,value:h}));return a?f.concat([{label:"unset",value:""}]):f},[i]);return o(s.Select,{ref:c,label:e,data:p,value:n,onChange:r,required:t,sx:l,...u})}const J=_.default.forwardRef(Rs);function Os({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=x.defaults({},t,Ht),{control:a,handleSubmit:l,reset:u}=w.useForm({defaultValues:i});return S.useEffect(()=>{u(i)},[t]),t?o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[o(s.Text,{children:"X Axis"}),g(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[o(w.Controller,{name:"x_axis_data_key",control:a,render:({field:c})=>o(J,{label:"Data Field",required:!0,data:r,...c})}),o(w.Controller,{name:"xAxis3D.name",control:a,render:({field:c})=>o(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),o(s.Text,{mt:"lg",children:"Y Axis"}),g(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[o(w.Controller,{name:"y_axis_data_key",control:a,render:({field:c})=>o(J,{label:"Data Field",required:!0,data:r,...c})}),o(w.Controller,{name:"yAxis3D.name",control:a,render:({field:c})=>o(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),o(s.Text,{mt:"lg",children:"Z Axis"}),g(s.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[o(w.Controller,{name:"z_axis_data_key",control:a,render:({field:c})=>o(J,{label:"Data Field",required:!0,data:r,...c})}),o(w.Controller,{name:"zAxis3D.name",control:a,render:({field:c})=>o(s.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),o(s.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:g(s.Button,{color:"blue",type:"submit",children:[o($.DeviceFloppy,{size:20}),o(s.Text,{ml:"md",children:"Save"})]})})]})}):null}class Ps extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Fs={displayName:"Bar Chart (3D)",migrator:new Ps,name:"bar-3d",viewRender:ks,configRender:Os,createConfig:()=>Ht},Qt=S.forwardRef(function({value:t,onChange:n,...r},i){return o(s.TextInput,{ref:i,value:t,onChange:n,...r})}),Ke={mantissa:0,output:"number",trimMantissa:!1,average:!1};function zs({value:e,onChange:t},n){const r=u=>{t({...e,output:u})},i=u=>{const c=u===0?!1:e.trimMantissa;t({...e,mantissa:u,trimMantissa:c})},a=u=>{t({...e,trimMantissa:u.currentTarget.checked})},l=u=>{t({...e,average:u.currentTarget.checked})};return g(s.Stack,{ref:n,children:[g(s.Group,{grow:!0,children:[o(s.Select,{label:"Format",data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:r,sx:{flexGrow:1}}),o(s.Switch,{label:g(s.Stack,{spacing:0,children:[o(s.Text,{children:"Average"}),o(s.Text,{size:12,color:"gray",children:"like 1.234k, 1.234m"})]}),checked:e.average,onChange:l,disabled:e.output!=="number",sx:{flexGrow:1},styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}}})]}),g(s.Group,{grow:!0,children:[o(s.NumberInput,{label:"Mantissa",defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:i}),o(s.Switch,{label:"Trim mantissa",checked:e.trimMantissa,onChange:a,disabled:e.mantissa===0,styles:{root:{alignSelf:"flex-end"},body:{alignItems:"center"}}})]}),g(s.Stack,{spacing:0,children:[o(s.Text,{weight:"bold",children:"Preview"}),o(Be,{children:g(s.Group,{position:"apart",children:[g(s.Text,{size:12,color:"gray",children:["123456789 ",o($.ArrowRight,{size:9})," ",fe.default(123456789).format(e)]}),g(s.Text,{size:12,color:"gray",children:["1234 ",o($.ArrowRight,{size:9})," ",fe.default(1234).format(e)]}),g(s.Text,{size:12,color:"gray",children:["0.1234 ",o($.ArrowRight,{size:9})," ",fe.default(.1234).format(e)]})]})})]})]})}const Jt=_.default.forwardRef(zs);function gt(){return{name:Z.randomId(),size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:{type:"none",config:{}},formatter:Ke}}const qs=[{label:"None",value:"none"},{label:"Sum",value:"sum"},{label:"Mean",value:"mean"},{label:"Median",value:"median"},{label:"Max",value:"max"},{label:"Min",value:"min"},{label:"Quantile(99%, 95%, ...)",value:"quantile"}];function Gs({label:e,value:t,onChange:n},r){S.useEffect(()=>{typeof t=="string"&&(console.log(t),n({type:t,config:{}}))},[t,n]);const i=l=>{n(l==="quantile"?{type:"quantile",config:{p:.99}}:{type:l,config:{}})},a=l=>{n({type:"quantile",config:{p:l}})};return g(s.Group,{grow:!0,noWrap:!0,pt:"sm",children:[o(s.Select,{ref:r,label:e,data:qs,value:t.type,onChange:i}),t.type==="quantile"&&o(s.NumberInput,{label:"p",value:t.config.p,onChange:a,precision:2,min:.05,step:.05,max:1})]})}const Ns=_.default.forwardRef(Gs);function Ls({label:e,value:t,onChange:n},r){const[i,a]=_.default.useState(Array.isArray(t)?[...t]:[]),l=_.default.useCallback(()=>{a(h=>[...h,""])},[a]),u=_.default.useCallback(h=>{a(v=>(v.splice(h,1),[...v]))},[a]),c=_.default.useMemo(()=>!Y.default.isEqual(i,t),[i,t]),p=()=>{n(i.map(h=>h.toString()))},d=s.useMantineTheme(),f=_.default.useMemo(()=>Object.entries(d.colors).map(([h,v])=>v[6]),[d]);return g(H,{children:[g(s.Group,{position:"left",ref:r,children:[o(s.Text,{children:e}),o(s.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:p,children:o($.DeviceFloppy,{size:20})})]}),g(s.Group,{children:[i.map((h,v)=>o(s.ColorInput,{value:h,onChange:C=>{a(b=>(b.splice(v,1,C),[...b]))},swatches:f,rightSection:o(s.ActionIcon,{onClick:()=>u(v),color:"red",children:o($.Trash,{size:14})}),sx:{width:"45%"}})),o(s.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:o($.PlaylistAdd,{size:20})})]})]})}const js=_.default.forwardRef(Ls);function Bs({value:e,onChange:t},n){const{colorManager:r}=S.useContext(Ie),i=_.default.useMemo(()=>r.getStaticColors().map(u=>({label:u.name,group:u.category,value:u.value})),[r]),a=_.default.useMemo(()=>i.some(l=>l.value===e),[e,i]);return g(s.Group,{position:"apart",spacing:4,ref:n,children:[o(s.TextInput,{placeholder:"Set any color",value:a?"":e,onChange:l=>t(l.currentTarget.value),rightSection:o(s.ColorSwatch,{color:a?"transparent":e,radius:4}),variant:a?"filled":"default",sx:{maxWidth:"46%",flexGrow:1}}),o(s.Text,{sx:{flexGrow:0},children:"or"}),o(s.Select,{data:i,value:e,onChange:t,variant:a?"default":"filled",placeholder:"Pick a theme color",icon:o(s.ColorSwatch,{color:a?e:"transparent",radius:4}),sx:{maxWidth:"46%",flexGrow:1}})]})}const Pe=_.default.forwardRef(Bs),ft=[{label:"initial",value:0},{label:"500",value:25},{label:"700",value:50},{label:"semibold",value:75},{label:"bold",value:100}];function Ws({label:e,value:t,onChange:n},r){var l,u;const[i,a]=_.default.useState((u=(l=ft.find(c=>c.label===t))==null?void 0:l.value)!=null?u:ft[0].value);return _.default.useEffect(()=>{const c=ft.find(p=>p.value===i);c&&n(c.label)},[i]),g(s.Stack,{spacing:0,mt:"sm",mb:"lg",children:[o(s.Text,{size:"sm",children:e}),o(s.Slider,{label:null,marks:ft,value:i,onChange:a,step:25,placeholder:"Pick a font size",ref:r})]})}const Us=_.default.forwardRef(Ws);function Ys({label:e,value:t,onChange:n},r){const[i,a]=_.default.useState(Array.isArray(t)?[...t]:[]),l=_.default.useCallback(()=>{a(d=>[...d,""])},[a]),u=_.default.useCallback(d=>{a(f=>(f.splice(d,1),[...f]))},[a]),c=_.default.useMemo(()=>!Y.default.isEqual(i,t),[i,t]),p=()=>{n(i.map(d=>d.toString()))};return g(H,{children:[g(s.Group,{position:"left",ref:r,children:[o(s.Text,{children:e}),o(s.ActionIcon,{mr:5,variant:"filled",color:"blue",disabled:!c,onClick:p,children:o($.DeviceFloppy,{size:20})})]}),g(s.Group,{children:[i.map((d,f)=>o(s.TextInput,{value:d,onChange:h=>{const v=h.currentTarget.value;a(C=>(C.splice(f,1,v),[...C]))},rightSection:o(s.ActionIcon,{onClick:()=>u(f),color:"red",children:o($.Trash,{size:14})}),sx:{width:"45%"}})),o(s.ActionIcon,{onClick:l,color:"blue",variant:"outline",children:o($.PlaylistAdd,{size:20})})]})]})}const Hs=_.default.forwardRef(Ys),Qs=_.default.forwardRef(function({value:t,onChange:n},r){const i=t.color.type,a=(l,u)=>{const c=Y.default.cloneDeep(t);Y.default.set(c,l,u),n(c)};return g(H,{children:[o(s.Divider,{my:"xs",label:"Typography",labelPosition:"center"}),o(s.Stack,{children:o(s.TextInput,{label:"Font Size",placeholder:"10px, 1em, 1rem, 100%...",sx:{flex:1},value:t.size,onChange:l=>a("size",l.currentTarget.value)})}),o(s.Group,{position:"apart",grow:!0,sx:{"> *":{flexGrow:1,maxWidth:"100%"}},children:o(Us,{label:"Font Weight",value:t.weight,onChange:l=>a("weight",l)})}),o(s.Divider,{my:"xs",label:"Style",labelPosition:"center"}),g(s.Stack,{children:[o(s.Select,{label:"Color Type",data:[{label:"Static Color",value:"static"},{label:"Continuous Color",value:"continuous"}],value:t.color.type,onChange:l=>a("color.type",l)}),i==="static"&&o(Pe,{value:t.color.staticColor,onChange:l=>a("color.staticColor",l)}),i==="continuous"&&g(H,{children:[o(Hs,{label:"Value Range",value:t.color.valueRange,onChange:l=>a("color.valueRange",l)}),o(js,{label:"Color Range",value:t.color.colorRange,onChange:l=>a("color.colorRange",l)})]})]})]})}),ht=_.default.forwardRef(function({value:t,onChange:n,data:r,withStyle:i=!0},a){const l=(u,c)=>{const p=Y.default.cloneDeep(t);Y.default.set(p,u,c),n(p)};return g(s.Box,{px:"sm",py:"md",ref:a,children:[o(s.Text,{weight:"bold",pb:0,children:t.name}),o(s.Divider,{my:"xs",label:"Data",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(s.TextInput,{label:"Name",required:!0,value:t.name,onChange:u=>l("name",u.currentTarget.value)}),o(J,{label:"Data Field",required:!0,data:r,value:t.data_field,onChange:u=>l("data_field",u)})]}),o(Ns,{label:"Aggregation",value:t.aggregation,onChange:u=>l("aggregation",u)}),o(s.Divider,{my:"xs",label:"Format",labelPosition:"center"}),o(Jt,{value:t.formatter,onChange:u=>l("formatter",u)}),i&&o(Qs,{value:t,onChange:n})]})});function Js(e){const t=Array.from(e).sort((r,i)=>r-i),n=Math.floor(t.length/2);return t.length%2===0?(t[n-1]+t[n])/2:t[n]}function Xt(e,t,n){var i,a,l,u;const r=e.map(c=>c[t]);switch(n.type){case"sum":return Y.default.sum(r);case"mean":return Y.default.mean(r);case"median":return Js(r);case"max":return(i=Y.default.max(r))!=null?i:0;case"min":return(a=Y.default.min(r))!=null?a:0;case"quantile":return(l=No.quantile(r,n.config.p))!=null?l:0;default:return(u=e[0])==null?void 0:u[t]}}var Er=function(){},Ze=function(){};process.env.NODE_ENV!=="production"&&(Er=function(e,t){!e&&typeof console<"u"&&console.warn(t)},Ze=function(e,t){if(!e)throw new Error(t)});const Xs=(e,t,n)=>Math.min(Math.max(n,e),t),kr=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},Kt=(e,t,n)=>-n*e+n*t+e,Rr=(e,t)=>n=>Math.max(Math.min(n,t),e),et=e=>e%1?Number(e.toFixed(5)):e,mt=/(-)?([\d]*\.?[\d])+/g,Zt=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,Ks=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function tt(e){return typeof e=="string"}const vt={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Or=Object.assign(Object.assign({},vt),{transform:Rr(0,1)});Object.assign(Object.assign({},vt),{default:1});const nt=(e=>({test:t=>tt(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}))("%");Object.assign(Object.assign({},nt),{parse:e=>nt.parse(e)/100,transform:e=>nt.transform(e*100)});const en=(e,t)=>n=>Boolean(tt(n)&&Ks.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),Pr=(e,t,n)=>r=>{if(!tt(r))return r;const[i,a,l,u]=r.match(mt);return{[e]:parseFloat(i),[t]:parseFloat(a),[n]:parseFloat(l),alpha:u!==void 0?parseFloat(u):1}},je={test:en("hsl","hue"),parse:Pr("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+nt.transform(et(t))+", "+nt.transform(et(n))+", "+et(Or.transform(r))+")"},Zs=Rr(0,255),tn=Object.assign(Object.assign({},vt),{transform:e=>Math.round(Zs(e))}),Fe={test:en("rgb","red"),parse:Pr("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+tn.transform(e)+", "+tn.transform(t)+", "+tn.transform(n)+", "+et(Or.transform(r))+")"};function el(e){let t="",n="",r="",i="";return e.length>5?(t=e.substr(1,2),n=e.substr(3,2),r=e.substr(5,2),i=e.substr(7,2)):(t=e.substr(1,1),n=e.substr(2,1),r=e.substr(3,1),i=e.substr(4,1),t+=t,n+=n,r+=r,i+=i),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:i?parseInt(i,16)/255:1}}const nn={test:en("#"),parse:el,transform:Fe.transform},yt={test:e=>Fe.test(e)||nn.test(e)||je.test(e),parse:e=>Fe.test(e)?Fe.parse(e):je.test(e)?je.parse(e):nn.parse(e),transform:e=>tt(e)?e:e.hasOwnProperty("red")?Fe.transform(e):je.transform(e)},Fr="${c}",zr="${n}";function tl(e){var t,n,r,i;return isNaN(e)&&tt(e)&&((n=(t=e.match(mt))===null||t===void 0?void 0:t.length)!==null&&n!==void 0?n:0)+((i=(r=e.match(Zt))===null||r===void 0?void 0:r.length)!==null&&i!==void 0?i:0)>0}function qr(e){typeof e=="number"&&(e=`${e}`);const t=[];let n=0;const r=e.match(Zt);r&&(n=r.length,e=e.replace(Zt,Fr),t.push(...r.map(yt.parse)));const i=e.match(mt);return i&&(e=e.replace(mt,zr),t.push(...i.map(vt.parse))),{values:t,numColors:n,tokenised:e}}function Gr(e){return qr(e).values}function Nr(e){const{values:t,numColors:n,tokenised:r}=qr(e),i=t.length;return a=>{let l=r;for(let u=0;u<i;u++)l=l.replace(u<n?Fr:zr,u<n?yt.transform(a[u]):et(a[u]));return l}}const nl=e=>typeof e=="number"?0:e;function rl(e){const t=Gr(e);return Nr(e)(t.map(nl))}const Lr={test:tl,parse:Gr,createTransformer:Nr,getAnimatableNone:rl};function rn(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function jr({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,a=0,l=0;if(!t)i=a=l=n;else{const u=n<.5?n*(1+t):n+t-n*t,c=2*n-u;i=rn(c,u,e+1/3),a=rn(c,u,e),l=rn(c,u,e-1/3)}return{red:Math.round(i*255),green:Math.round(a*255),blue:Math.round(l*255),alpha:r}}const il=(e,t,n)=>{const r=e*e,i=t*t;return Math.sqrt(Math.max(0,n*(i-r)+r))},ol=[nn,Fe,je],Br=e=>ol.find(t=>t.test(e)),Wr=e=>`'${e}' is not an animatable color. Use the equivalent color code instead.`,Ur=(e,t)=>{let n=Br(e),r=Br(t);Ze(!!n,Wr(e)),Ze(!!r,Wr(t));let i=n.parse(e),a=r.parse(t);n===je&&(i=jr(i),n=Fe),r===je&&(a=jr(a),r=Fe);const l=Object.assign({},i);return u=>{for(const c in l)c!=="alpha"&&(l[c]=il(i[c],a[c],u));return l.alpha=Kt(i.alpha,a.alpha,u),n.transform(l)}},al=e=>typeof e=="number",sl=(e,t)=>n=>t(e(n)),Yr=(...e)=>e.reduce(sl);function Hr(e,t){return al(e)?n=>Kt(e,t,n):yt.test(e)?Ur(e,t):Xr(e,t)}const Qr=(e,t)=>{const n=[...e],r=n.length,i=e.map((a,l)=>Hr(a,t[l]));return a=>{for(let l=0;l<r;l++)n[l]=i[l](a);return n}},ll=(e,t)=>{const n=Object.assign(Object.assign({},e),t),r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=Hr(e[i],t[i]));return i=>{for(const a in r)n[a]=r[a](i);return n}};function Jr(e){const t=Lr.parse(e),n=t.length;let r=0,i=0,a=0;for(let l=0;l<n;l++)r||typeof t[l]=="number"?r++:t[l].hue!==void 0?a++:i++;return{parsed:t,numNumbers:r,numRGB:i,numHSL:a}}const Xr=(e,t)=>{const n=Lr.createTransformer(t),r=Jr(e),i=Jr(t);return r.numHSL===i.numHSL&&r.numRGB===i.numRGB&&r.numNumbers>=i.numNumbers?Yr(Qr(r.parsed,i.parsed),n):(Er(!0,`Complex values '${e}' and '${t}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),l=>`${l>0?t:e}`)},ul=(e,t)=>n=>Kt(e,t,n);function cl(e){if(typeof e=="number")return ul;if(typeof e=="string")return yt.test(e)?Ur:Xr;if(Array.isArray(e))return Qr;if(typeof e=="object")return ll}function dl(e,t,n){const r=[],i=n||cl(e[0]),a=e.length-1;for(let l=0;l<a;l++){let u=i(e[l],e[l+1]);if(t){const c=Array.isArray(t)?t[l]:t;u=Yr(c,u)}r.push(u)}return r}function pl([e,t],[n]){return r=>n(kr(e,t,r))}function gl(e,t){const n=e.length,r=n-1;return i=>{let a=0,l=!1;if(i<=e[0]?l=!0:i>=e[r]&&(a=r-1,l=!0),!l){let c=1;for(;c<n&&!(e[c]>i||c===r);c++);a=c-1}const u=kr(e[a],e[a+1],i);return t[a](u)}}function fl(e,t,{clamp:n=!0,ease:r,mixer:i}={}){const a=e.length;Ze(a===t.length,"Both input and output ranges must be the same length"),Ze(!r||!Array.isArray(r)||r.length===a-1,"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values."),e[0]>e[a-1]&&(e=[].concat(e),t=[].concat(t),e.reverse(),t.reverse());const l=dl(t,r,i),u=a===2?pl(e,l):gl(e,l);return n?c=>u(Xs(e[0],e[a-1],c)):u}class hl{constructor({valueRange:t,colorRange:n}){k(this,"mapper");this.mapper=fl(t,n)}getColor(t){return this.mapper(t)}}function ml(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?`Array(${e.length})`:e.toString()}function on({data_field:e,aggregation:t},n){return Xt(n,e,t)}function rt({formatter:e},t){return["string","number"].includes(typeof t)?fe.default(t).format(e):ml(t)}function vl(e,t){return e.type==="static"?e.staticColor:e.type==="continuous"?new hl(e).getColor(t):"black"}function yl(e,t){const n={};return e.forEach(r=>{const{name:i,color:a,data_field:l,aggregation:u,size:c,weight:p}=r,d=Xt(t,l,u),f=rt(r,d);n[i]=o(s.Text,{sx:{fontSize:c,display:"inline"},color:vl(a,d),weight:p,children:f})}),n}function bl(e){return e.split(" ").map((t,n)=>g(_.default.Fragment,{children:[t,"\xA0"]},n))}function Cl(e){const n=e.replaceAll("<br />","<br/>").replaceAll(`
|
|
48
|
+
`,"<br/>").split("<br/>");return n.map((i,a)=>{const l=[bl(i)];return a!==n.length-1&&l.push(o("br",{})),l}).flat().filter(i=>i!==void 0)}function an(e){return Cl(e)}function sn(e,t,n){const r=yl(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map(a=>{var p;const l=i.exec(a);if(!l)return an(a);const u=r[l[1]];if(!u)return an(a);const c=(p=l[2])!=null?p:"";return g(H,{children:[u,an(c)]})})}function xl(e,t){const n={};return e.forEach(r=>{const{name:i,data_field:a,aggregation:l}=r,u=Xt(t,a,l);n[i]=rt(r,u)}),n}function Kr(e,t,n){const r=xl(t,n),i=/^\{(.+)\}(.*)$/;return e.split("$").map(a=>{var p;const l=i.exec(a);if(!l)return a;const u=r[l[1]];if(!u)return a;const c=(p=l[2])!=null?p:"";return`${u}${c}`}).join("")}const ln={x_axis:{name:"X Axis",data_key:""},y_axis:{name:"Y Axis",data_key:"value"},color:"#228be6",variables:[],reference_lines:[]};ee.use([U.DataZoomComponent,_e.BoxplotChart,U.MarkLineComponent,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function Sl(e,t,n){const r=t.reduce((i,a)=>{const l=on(a,n);return i[a.name]=rt(a,l),i},{});return e.map(i=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:i.name,yAxis:Number(r[i.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return Kr(i.template,t,n)},position:"insideEndTop"}}}))}function wl({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis:a,y_axis:l,color:u,variables:c,reference_lines:p}=x.defaults({},t,ln),{xAxisData:d,boxplotData:f}=S.useMemo(()=>{const v=Y.default.groupBy(n,a.data_key);return{xAxisData:Object.keys(v),boxplotData:Object.values(v).map(C=>C.map(b=>b[l.data_key]))}},[n,a.data_key,l.data_key]),h={dataset:[{source:f},{transform:{type:"boxplot",config:{itemNameFormatter:function(v){var C;return(C=d[v.value])!=null?C:v.value}}}}],dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis"},xAxis:[{type:"category",name:a.name,axisTick:{show:!0,alignWithLabel:!0}}],yAxis:[{name:l.name,axisLine:{show:!0}}],series:[{name:l.name,type:"boxplot",itemStyle:{color:u,borderColor:"#454545"},boxWidth:[10,40],datasetIndex:1},...Sl(p,c,n)]};return!t||!r||!i?null:o(Ee.default,{echarts:ee,option:h,style:{width:r,height:i}})}function _l({control:e,index:t,remove:n,variableOptions:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:i})=>o(s.Select,{label:"Value",required:!0,data:r,sx:{flex:1},...i})})]}),o(w.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:i})=>o(s.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Dl({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"reference_lines"}),a=t("reference_lines"),l=n.map((d,f)=>({...d,...a[f]})),u=()=>r({name:"",template:"",variable_key:""}),c=t("variables"),p=S.useMemo(()=>c.map(d=>({label:d.name,value:d.name})),[c]);return g(s.Stack,{children:[l.map((d,f)=>o(_l,{control:e,index:f,remove:i,variableOptions:p})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Reference Line"})})]})}function Il({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,withStyle:!1,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Ml({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"variables"}),l=t("variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[u.map((p,d)=>o(Il,{control:e,index:d,remove:a,data:n})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function Al({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaults({},t,ln),[t]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});S.useEffect(()=>{p(i)},[i]),u(["x_axis","y_axis","reference_lines","color"]);const d=c(),f=S.useMemo(()=>!x.isEqual(d,t),[d,t]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),g(s.Accordion,{defaultValue:"Axis",children:[g(s.Accordion.Item,{value:"Axis",children:[o(s.Accordion.Control,{children:"Axis"}),g(s.Accordion.Panel,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"x_axis.data_key",control:a,render:({field:h})=>o(J,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"y_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"y_axis.data_key",control:a,render:({field:h})=>o(J,{label:"Y Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]})]})]}),g(s.Accordion.Item,{value:"Style",children:[o(s.Accordion.Control,{children:"Style"}),o(s.Accordion.Panel,{children:g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:"color",control:a,render:({field:h})=>o(Pe,{...h})})]})})]}),g(s.Accordion.Item,{value:"Advanced",children:[o(s.Accordion.Control,{children:g(s.Group,{position:"apart",children:["Advanced",o(s.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),o(s.Accordion.Panel,{children:g(s.Tabs,{defaultValue:"variables",children:[g(s.Tabs.List,{children:[o(s.Tabs.Tab,{value:"variables",children:"Variables"}),o(s.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"})]}),o(s.Tabs.Panel,{value:"variables",pt:"xs",children:o(Ml,{control:a,watch:u,data:r})}),o(s.Tabs.Panel,{value:"reference_lines",pt:"xs",children:o(Dl,{control:a,watch:u})})]})})]})]})]})})}class Vl extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Tl={displayName:"Boxplot",migrator:new Vl,name:"boxplot",viewRender:wl,configRender:Al,createConfig:()=>ln};function $l(e){const t=e.y_axes.some(n=>!!n.name);return{bottom:e.x_axis_name?40:25,top:t?30:10}}function El({regressions:e=[]},t){const n=[],r=[],i=[];return t.length===0?{regressionDataSets:n,regressionSeries:r,regressionXAxes:i}:(e.forEach(({transform:a,plot:l,name:u,y_axis_data_key:c})=>{const p=`x-axis-for-${u}`,d=`dataset-for-${u}--raw`,f=`dataset-for-${u}--transformed`;n.push({id:d,source:t.map((h,v)=>[v,Number(h[c])])}),n.push({transform:a,id:f,fromDatasetId:d}),r.push({...l,name:u,datasetId:f,xAxisId:p,showSymbol:!1,tooltip:{show:!1}}),i.push({type:"category",id:p,datasetId:f,show:!1})}),{regressionDataSets:n,regressionSeries:r,regressionXAxes:i})}function kl(e,t,n,r){const i=t.map(a=>[a[n],a[r]]);return Y.default.unionBy(i,e,0)}function Rl(e,t,n){const r=t.reduce((i,a)=>{const l=on(a,n);return i[a.name]=rt(a,l),i},{});return e.map(i=>({name:"refs",type:"scatter",data:[],markLine:{data:[{name:i.name,yAxis:Number(r[i.variable_key])}],silent:!0,symbol:["none","none"],label:{formatter:function(){return Kr(i.template,t,n)},position:"insideEndTop"}}}))}function Ol(e,t,n){const r=t.reduce((i,a)=>{const l=on(a,n);return i[a.name]=rt(a,l),i},{});return e.map(i=>({name:"",type:"line",data:[],markArea:{itemStyle:{color:i.color},data:[[{yAxis:r[i.y_keys.upper]},{yAxis:r[i.y_keys.lower]}]],silent:!0}}))}function Pl({x_axis_data_key:e},{y_axis_data_key:t,yAxisIndex:n,label_position:r,name:i,group_by_key:a,stack:l,color:u,display_name_on_line:c,...p},d,f,h){const v={label:{show:!!r,position:r,formatter:h[n!=null?n:"default"]},name:i,xAxisId:"main-x-axis",yAxisIndex:n,stack:l,color:u,...p};if(c&&(v.endLabel={show:!0,formatter:i,offset:[-12,12],align:"right"}),!a)return v.data=f.map(b=>b[t]),v;const C=x.groupBy(f,a);return Object.entries(C).map(([b,D])=>{const T=x.cloneDeep(v);return T.data=kl(d,D,e,t),T.name=b,T.color=void 0,T})}function Fl(e,t,n,r){const i=t.map(l=>[l,0]);return e.series.map(l=>Pl(e,l,i,n,r)).flat().concat(Rl(e.reference_lines,e.variables,n)).concat(Ol(e.reference_areas,e.variables,n))}function zl(e,t){const n=e.series.reduce((r,{yAxisIndex:i,name:a})=>(r[a]=i,r),{});return{formatter:function(r){const i=Array.isArray(r)?r:[r];if(i.length===0)return"";const a=i.map(({seriesName:l,value:u})=>{var d;if(Array.isArray(u)&&u.length===2&&(u=u[1]),!l)return u;const c=n[l],p=(d=t[c])!=null?d:t.default;return`${l}: <strong>${p({value:u})}</strong>`});return a.unshift(`<strong>${i[0].name}</strong>`),a.join("<br />")}}}function ql(e,t,n){var r;return[{data:t,name:(r=e.x_axis_name)!=null?r:"",id:"main-x-axis",axisTick:{show:!0,alignWithLabel:!0},...e.x_axis},...n]}function Gl(e,t){return e.y_axes.map(({nameAlignment:n,...r},i)=>{var l;let a=r.position;return a||(a=i>0?"right":"left"),{...r,position:a,axisLabel:{show:!0,formatter:(l=t[i])!=null?l:t.default},axisLine:{show:!0},nameTextStyle:{fontWeight:"bold",align:n},nameLocation:"end",nameGap:15,splitLine:{show:!1}}})}const Nl={legend:{show:!0,bottom:0,left:"center",type:"scroll"},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],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:30,right:15,bottom:25,containLabel:!0}};function Ll(e,t){const n=e.y_axes.reduce((p,{label_formatter:d},f)=>(p[f]=function(v){let C=v;if(typeof v=="object"&&(Array.isArray(v.value)&&v.value.length===2?C=v.value[1]:C=v.value),!d)return C;try{return fe.default(C).format(d)}catch(b){return console.error(b),C}},p),{default:({value:p})=>p}),r=Y.default.uniq(t.map(p=>p[e.x_axis_data_key])),i=Fl(e,r,t,n),{regressionDataSets:a,regressionSeries:l,regressionXAxes:u}=El(e,t),c={xAxis:ql(e,r,u),yAxis:Gl(e,n),dataset:[...a],series:[...i,...l],tooltip:zl(e,n),grid:$l(e)};return x.defaultsDeep({},c,Nl)}const un={regressions:[],series:[],stats:{templates:{bottom:"",top:""},variables:[]},x_axis:{axisLabel:{rotate:0}},x_axis_data_key:"",x_axis_name:"",y_axes:[{name:"Y Axis",position:"left",nameAlignment:"center",label_formatter:Ke}],variables:[],reference_lines:[],reference_areas:[]};ee.use([U.DataZoomComponent,_e.BarChart,_e.LineChart,_e.ScatterChart,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer,U.MarkLineComponent,U.MarkAreaComponent]),ee.registerTransform(Kn.transform.regression);function Zr(e){return e.trim().length>0}function jl({conf:e,data:t,width:n,height:r}){const i=_.default.useMemo(()=>Ll(e,t),[e,t]);return!n||!r?null:o(Ee.default,{echarts:ee,option:i,style:{width:n,height:r}})}function Bl({context:e}){const{value:t}=G(e.instanceData,"config"),n=S.useMemo(()=>x.defaults({},t,un),[t]),r=e.data,{width:i,height:a}=e.viewport,{ref:l,height:u}=Z.useElementSize(),{ref:c,height:p}=Z.useElementSize(),d=_.default.useMemo(()=>{const{stats:{templates:h,variables:v}}=n;return{top:sn(h.top,v,r),bottom:sn(h.bottom,v,r)}},[n,r]),f=Math.max(0,a-u-p);return g(s.Box,{children:[Zr(n.stats.templates.top)&&o(s.Text,{ref:l,align:"left",size:"xs",pl:"sm",children:Object.values(d.top).map(h=>h)}),o(jl,{width:i,height:f,data:r,conf:n}),Zr(n.stats.templates.bottom)&&o(s.Text,{ref:c,align:"left",size:"xs",pl:"sm",children:Object.values(d.bottom).map(h=>h)})]})}const Wl=[{label:"Rectangle",value:"rectangle"}],Ul=[{label:"Horizontal",value:"horizontal"}];function Yl({control:e,index:t,remove:n,variableOptions:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:i})=>o(s.TextInput,{label:"Color",required:!0,sx:{flex:1},...i})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:i})=>o(s.Select,{label:"Type",required:!0,data:Wl,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:i})=>o(s.Select,{label:"Direction",required:!0,data:Ul,sx:{flex:1},...i})})]}),o(s.Divider,{variant:"dashed",label:"Data",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:i})=>o(s.Select,{label:"Upper Boundary",required:!0,data:r,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:i})=>o(s.Select,{label:"Lower Boundary",required:!0,data:r,sx:{flex:1},...i})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Hl({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"reference_areas"}),a=t("reference_areas"),l=n.map((d,f)=>({...d,...a[f]})),u=()=>r({name:"",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),c=t("variables"),p=S.useMemo(()=>c.map(d=>({label:d.name,value:d.name})),[c]);return g(s.Stack,{children:[l.map((d,f)=>o(Yl,{control:e,index:f,remove:i,variableOptions:p})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Reference Area"})})]})}function Ql({control:e,index:t,remove:n,variableOptions:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",placeholder:"Average Reference Line",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:i})=>o(s.Select,{label:"Value",required:!0,data:r,sx:{flex:1},...i})})]}),o(w.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:i})=>o(s.TextInput,{label:"Content Template",placeholder:"Average: ${avg}",required:!0,sx:{flex:1},...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function Jl({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"reference_lines"}),a=t("reference_lines"),l=n.map((d,f)=>({...d,...a[f]})),u=()=>r({name:"",template:"",variable_key:""}),c=t("variables"),p=S.useMemo(()=>c.map(d=>({label:d.name,value:d.name})),[c]);return g(s.Stack,{children:[l.map((d,f)=>o(Ql,{control:e,index:f,remove:i,variableOptions:p})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Reference Line"})})]})}const Xl=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}],Kl=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function Zl({control:e,regressionItem:t,index:n,remove:r,yAxisOptions:i,data:a}){const l=t.transform.config.method;return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[o(w.Controller,{name:`regressions.${n}.name`,control:e,render:({field:u})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`regressions.${n}.y_axis_data_key`,control:e,render:({field:u})=>o(J,{label:"Value Field",required:!0,data:a,sx:{flex:1},...u})}),o(w.Controller,{name:`regressions.${n}.plot.yAxisIndex`,control:e,render:({field:{value:u,onChange:c,...p}})=>{var d;return o(s.Select,{label:"Y Axis",data:i,disabled:i.length===0,...p,value:(d=u==null?void 0:u.toString())!=null?d:"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})}})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`regressions.${n}.transform.config.method`,control:e,render:({field:u})=>o(s.Select,{label:"Method",data:Xl,sx:{flex:1},...u})}),l==="polynomial"&&o(w.Controller,{name:`regressions.${n}.transform.config.order`,control:e,render:({field:u})=>o(s.NumberInput,{label:"Order",sx:{flex:1},...u})})]}),o(s.Divider,{mb:-15,variant:"dashed",label:"Line Style",labelPosition:"center"}),g(s.Group,{grow:!0,children:[o(w.Controller,{name:`regressions.${n}.plot.lineStyle.type`,control:e,render:({field:u})=>o(s.Select,{label:"Line Type",data:Kl,sx:{flexGrow:1},...u})}),o(w.Controller,{name:`regressions.${n}.plot.lineStyle.width`,control:e,render:({field:u})=>o(s.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...u})})]}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:`regressions.${n}.plot.color`,control:e,render:({field:u})=>o(Pe,{...u})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>r(n),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},n)}function eu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"regressions"}),l=t("regressions"),u=r.map((f,h)=>({...f,...l[h]})),c=t("y_axes"),p=_.default.useMemo(()=>c.map(({name:f},h)=>({label:f,value:h.toString()})),[c]),d=()=>i({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 g(s.Stack,{children:[u.map((f,h)=>o(Zl,{regressionItem:f,control:e,index:h,remove:a,yAxisOptions:p,data:n},h)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:d,children:"Add a Regression Line"})})]})}const tu=[{label:"No gap between bars",value:"0%"},{label:"Bars overlapping on each other",value:"-100%"}];function nu({control:e,index:t}){return g(H,{children:[g(s.Group,{grow:!0,align:"top",children:[o(w.Controller,{name:`series.${t}.stack`,control:e,render:({field:n})=>o(s.TextInput,{label:"Stack",placeholder:"Stack bars by this ID",sx:{flexGrow:1},...n})}),o(w.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:n})=>o(s.TextInput,{label:"Bar Width",sx:{flexGrow:1},...n})})]}),o(w.Controller,{name:`series.${t}.barGap`,control:e,render:({field:n})=>o(s.Select,{label:"Bar Gap",data:tu,sx:{flexGrow:1},...n})})]})}const ru=[{label:"off",value:"false"},{label:"start",value:"start"},{label:"middle",value:"middle"},{label:"end",value:"end"}],iu=[{label:"solid",value:"solid"},{label:"dashed",value:"dashed"},{label:"dotted",value:"dotted"}];function ou({control:e,index:t}){return g(H,{children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Line Settings",labelPosition:"center"}),g(s.Group,{grow:!0,children:[o(w.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:n})=>o(s.Select,{label:"Line Type",data:iu,sx:{flexGrow:1},...n})}),o(w.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:n})=>o(s.NumberInput,{label:"Line Width",min:1,max:10,sx:{flexGrow:1},...n})})]}),g(s.Group,{grow:!0,align:"center",children:[o(w.Controller,{name:`series.${t}.step`,control:e,render:({field:n})=>o(s.Select,{label:"Step",data:ru,sx:{flexGrow:1,maxWidth:"48%"},...n,value:String(n.value),onChange:r=>{const i=r==="false"?!1:r;n.onChange(i)}})}),g(s.Stack,{children:[o(w.Controller,{name:`series.${t}.smooth`,control:e,render:({field:n})=>o(s.Box,{sx:{flexGrow:1},children:o(s.Switch,{label:"Smooth Line",checked:n.value,onChange:r=>n.onChange(r.currentTarget.checked)})})}),o(w.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:n})=>{var r;return o(s.Box,{sx:{flexGrow:1},children:o(s.Switch,{label:"Display Name on Line",checked:(r=n.value)!=null?r:!1,onChange:i=>n.onChange(i.currentTarget.checked)})})}})]})]})]})}const au=Array.from(new Array(9),(e,t)=>({label:String(t+1),value:t+1}));function su({control:e,index:t}){return o(s.Group,{grow:!0,align:"center",children:o(w.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:n})=>g(s.Stack,{sx:{flexGrow:1},pb:16,spacing:4,children:[o(s.Text,{size:"sm",children:"Size"}),o(s.Slider,{min:1,max:10,marks:au,...n,sx:{width:"100%"}})]})})})}const lu=[{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 uu({control:e,index:t,remove:n,seriesItem:r,yAxisOptions:i,data:a}){const l=r.type;return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[o(s.Stack,{children:o(w.Controller,{name:`series.${t}.type`,control:e,render:({field:u})=>o(s.SegmentedControl,{data:[{label:"Line",value:"line"},{label:"Bar",value:"bar"},{label:"Scatter",value:"scatter"},{label:"Boxplot",value:"boxplot",disabled:!0}],...u})})}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`series.${t}.name`,control:e,render:({field:u})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...u})}),o(w.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:u})=>o(J,{label:"Value Field",required:!0,data:a,sx:{flex:1},...u})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:u,onChange:c,...p}})=>{var d;return o(s.Select,{label:"Y Axis",data:i,disabled:i.length===0,...p,value:(d=u==null?void 0:u.toString())!=null?d:"",onChange:f=>{if(!f){c(0);return}c(Number(f))},sx:{flex:1}})}}),o(w.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:u})=>o(J,{label:"Group By",data:a,clearable:!0,sx:{flex:1},...u})})]}),l==="line"&&o(ou,{index:t,control:e}),l==="bar"&&o(nu,{index:t,control:e}),l==="scatter"&&o(su,{index:t,control:e}),o(w.Controller,{name:`series.${t}.label_position`,control:e,render:({field:u})=>o(s.Select,{label:"Label Position",data:lu,...u})}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:`series.${t}.color`,control:e,render:({field:u})=>o(Pe,{...u})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function cu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"series"}),l=t("series"),u=r.map((f,h)=>({...f,...l[h]})),c=()=>i({type:"bar",name:Z.randomId(),showSymbol:!1,symbolSize:5,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",display_name_on_line:!1,stack:"",color:"#000",step:!1,smooth:!1,barWidth:"10",barGap:"0%",lineStyle:{type:"solid",width:1}}),p=t("y_axes"),d=_.default.useMemo(()=>p.map(({name:f},h)=>({label:f,value:h.toString()})),[p]);return g(s.Stack,{children:[u.map((f,h)=>o(uu,{control:e,index:h,remove:a,seriesItem:f,yAxisOptions:d,data:n},f.id)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Series"})})]})}function du({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`stats.variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function pu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"stats.variables"});t("stats.templates");const l=t("stats.variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[g(s.Stack,{spacing:0,children:[o(w.Controller,{name:"stats.templates.top",control:e,render:({field:p})=>o(Qt,{label:"Template for stats above the chart",py:"md",sx:{flexGrow:1},...p})}),o(w.Controller,{name:"stats.templates.bottom",control:e,render:({field:p})=>o(Qt,{label:"Template for stats under the chart",py:"md",sx:{flexGrow:1},...p})})]}),u.map((p,d)=>o(du,{control:e,index:d,remove:a,data:n})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function gu({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,withStyle:!1,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function fu({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"variables"}),l=t("variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[u.map((p,d)=>o(gu,{control:e,index:d,remove:a,data:n},d)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function hu({data:e,control:t,watch:n}){return n(["x_axis_data_key","x_axis_name","x_axis"]),g(s.Stack,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis_data_key",control:t,render:({field:r})=>o(J,{label:"X Axis Data Field",required:!0,data:e,sx:{flex:1},...r})}),o(w.Controller,{name:"x_axis_name",control:t,render:({field:r})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...r})})]}),o(s.Divider,{mb:-15,label:"Tick Label",labelPosition:"center"}),o(s.Group,{children:o(w.Controller,{name:"x_axis.axisLabel.rotate",control:t,render:({field:r})=>o(s.NumberInput,{label:"Rotate",hideControls:!0,min:-90,max:90,rightSection:o(s.Text,{color:"dimmed",children:"degree"}),sx:{width:"48%"},styles:{rightSection:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},...r})})})]})}const mu=[{label:"left",value:"left"},{label:"center",value:"center"},{label:"right",value:"right"}],vu=[{label:"left",value:"left"},{label:"right",value:"right"}];function yu({control:e,index:t,remove:n}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Name",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:r})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...r})}),o(w.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:r})=>o(s.Select,{label:"Align",required:!0,data:mu,sx:{flex:1},...r})})]}),o(s.Divider,{mb:-15,variant:"dashed",label:"Layout",labelPosition:"center"}),o(s.Group,{grow:!0,noWrap:!0,children:o(w.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:r})=>o(s.Select,{label:"Position",required:!0,data:vu,sx:{flex:1},...r})})}),g(s.Stack,{children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Label Format",labelPosition:"center"}),o(w.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:r})=>o(Jt,{...r})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:o($.Trash,{size:16})})]})}function bu({control:e,watch:t}){const{fields:n,append:r,remove:i}=w.useFieldArray({control:e,name:"y_axes"}),a=t("y_axes"),l=n.map((c,p)=>({...c,...a[p]})),u=()=>r({name:"",label_formatter:Ke});return g(s.Stack,{children:[l.map((c,p)=>o(yu,{control:e,index:p,remove:i},p)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:u,children:"Add a Y Axis"})})]})}function Cu(e){function t({type:n,name:r,showSymbol:i,symbolSize:a=5,y_axis_data_key:l="value",yAxisIndex:u=0,label_position:c="top",stack:p="1",color:d="black",barWidth:f="30",barGap:h="0%",smooth:v=!1,step:C=!1,group_by_key:b="",display_name_on_line:D=!1,lineStyle:T={type:"solid",width:1}}){return{type:n,name:r,showSymbol:i,symbolSize:a,y_axis_data_key:l,yAxisIndex:u,label_position:c,stack:p,color:d,barWidth:f,barGap:h,smooth:v,step:C,group_by_key:b,display_name_on_line:D,lineStyle:T}}return e.map(t)}function xu(e){return e||{templates:{top:"",bottom:""},variables:[]}}function Su({series:e,stats:t,...n}){return{series:Cu(e!=null?e:[]),stats:xu(t),...n}}function wu({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaultsDeep({},t,un),[t]),a=S.useMemo(()=>Su(i),[i]);S.useEffect(()=>{!x.isEqual(i,a)&&(console.log("config malformed, resetting to defaults",i,a),n(a))},[i,a]);const{control:l,handleSubmit:u,watch:c,getValues:p,reset:d}=w.useForm({defaultValues:a});S.useEffect(()=>{d(a)},[a]);const f=p(),h=S.useMemo(()=>!x.isEqual(f,i),[f,i]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:u(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!h,children:o($.DeviceFloppy,{size:20})})]}),g(s.Accordion,{multiple:!0,defaultValue:["X Axis","Y Axes"],children:[g(s.Accordion.Item,{value:"X Axis",children:[o(s.Accordion.Control,{children:"X Axis"}),o(s.Accordion.Panel,{children:o(hu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Y Axes",children:[o(s.Accordion.Control,{children:"Y Axes"}),o(s.Accordion.Panel,{children:o(bu,{control:l,watch:c})})]}),g(s.Accordion.Item,{value:"Series",children:[o(s.Accordion.Control,{children:"Series"}),o(s.Accordion.Panel,{children:o(cu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Regression Lines",children:[o(s.Accordion.Control,{children:"Regression Lines"}),o(s.Accordion.Panel,{children:o(eu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Stats",children:[o(s.Accordion.Control,{children:"Stats"}),o(s.Accordion.Panel,{children:o(pu,{control:l,watch:c,data:r})})]}),g(s.Accordion.Item,{value:"Advanced",children:[o(s.Accordion.Control,{children:g(s.Group,{position:"apart",children:["Advanced",o(s.Text,{align:"right",size:12,color:"grey",children:"Use variables in reference lines"})]})}),o(s.Accordion.Panel,{children:g(s.Tabs,{defaultValue:"variables",children:[g(s.Tabs.List,{children:[o(s.Tabs.Tab,{value:"variables",children:"Variables"}),o(s.Tabs.Tab,{value:"reference_lines",children:"Reference Lines"}),o(s.Tabs.Tab,{value:"reference_areas",children:"Reference Areas"})]}),o(s.Tabs.Panel,{value:"variables",pt:"xs",children:o(fu,{control:l,watch:c,data:r})}),o(s.Tabs.Panel,{value:"reference_lines",pt:"xs",children:o(Jl,{control:l,watch:c})}),o(s.Tabs.Panel,{value:"reference_areas",pt:"xs",children:o(Hl,{control:l,watch:c})})]})})]})]})]})})}class _u extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Du={displayName:"Cartesian Chart",migrator:new _u,name:"cartesian",viewRender:Bl,configRender:wu,createConfig:()=>un},cn={x_axis:{name:"X Axis",data_key:""},data_key:"value",bar:{name:"Value",color:"#228be6"},line:{name:"Value",color:"red"}};function dn(e){return fe.default(e).format({output:"percent",mantissa:0})}function Iu(e){const t=e.value[1];try{return dn(t)}catch(n){return console.error(n),t}}function Mu(e){const t=Array.isArray(e)?e:[e];if(t.length===0)return"";const n=t.map((r,i)=>{const a=r.seriesName,[l,u]=r.value;return a?`${a}: <strong>${(i===0?p=>p:dn)(u)}</strong>`:u});return n.unshift(`<strong>${t[0].name}</strong>`),n.join("<br />")}ee.use([_e.BarChart,_e.LineChart,U.DataZoomComponent,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function Au({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{x_axis:a,data_key:l,bar:u,line:c}=x.defaults({},t,cn),{barData:p,lineData:d}=S.useMemo(()=>{const h=n.map(b=>[b[a.data_key],Number(b[l])]).sort((b,D)=>D[1]-b[1]),v=h.reduce((b,D)=>b+D[1],0),C=h.reduce((b,D,T)=>{const E=T===0?0:b[T-1][1];return b.push([D[0],E+D[1]]),b},[]).map(b=>[b[0],b[1]/v]);return{barData:h,lineData:C}},[a.data_key,l,n]),f={dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}],tooltip:{trigger:"axis",formatter:Mu},xAxis:[{type:"category",name:a.name,nameLocation:"middle",nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0}}],yAxis:[{name:u.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"right"},axisLine:{show:!0},splitLine:{show:!1}},{name:c.name,nameGap:30,nameTextStyle:{fontWeight:"bold",align:"center"},axisLabel:{show:!0,formatter:dn},splitLine:{show:!1}}],series:[{name:u.name,type:"bar",itemStyle:{color:u.color},yAxisIndex:0,data:p},{name:c.name,type:"line",itemStyle:{color:c.color},symbolSize:2,lineStyle:{width:1},label:{show:!0,position:"top",formatter:Iu},yAxisIndex:1,data:d}]};return!t||!r||!i?null:o(Ee.default,{echarts:ee,option:f,style:{width:r,height:i}})}function Vu({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaults({},t,cn),[t]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});S.useEffect(()=>{p(i)},[i]),u(["x_axis","data_key","bar","line"]);const d=c(),f=S.useMemo(()=>!x.isEqual(d,t),[d,t]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"x_axis.data_key",control:a,render:({field:h})=>o(J,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),o(w.Controller,{name:"data_key",control:a,render:({field:h})=>o(J,{label:"Y Axis Data Field",required:!0,data:r,sx:{flex:1},...h})}),o(s.Divider,{my:"md",label:"Bar",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"bar.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Bar Name",sx:{flex:1},...h})}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Bar's Color"}),o(w.Controller,{name:"bar.color",control:a,render:({field:h})=>o(Pe,{...h})})]})]}),o(s.Divider,{my:"md",label:"Line",labelPosition:"center"}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"line.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Line Name",sx:{flex:1},...h})}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Line's Color"}),o(w.Controller,{name:"line.color",control:a,render:({field:h})=>o(Pe,{...h})})]})]})]})})}class Tu extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const $u={displayName:"Pareto Chart",migrator:new Tu,name:"paretoChart",viewRender:Au,configRender:Vu,createConfig:()=>cn},pn={label_field:"",value_field:""};ee.use([_e.PieChart,Te.CanvasRenderer]);const Eu={tooltip:{show:!0},series:{type:"pie",radius:["50%","80%"],label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
|
|
49
49
|
{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 ku({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{label_field:a,value_field:l}=x.defaults({},t,pn),u=S.useMemo(()=>n.map(d=>({name:d[a],value:Number(d[l])})),[n,a,l]),c=S.useMemo(()=>({series:{labelLayout:function(d){const f=d.labelRect.x<r/2,h=d.labelLinePoints;return x.set(h,[2,0],f?d.labelRect.x:d.labelRect.x+d.labelRect.width),{labelLinePoints:h}}}}),[r]),p=x.merge({},Eu,c,{series:{data:u}});return o(Ee.default,{echarts:ee,option:p,style:{width:r,height:i}})}function Ru({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),{label_field:r,value_field:i}=x.defaults({},t,pn),a=e.data,l=Pt.useForm({initialValues:{label_field:r,value_field:i}});return S.useEffect(()=>{l.setValues({label_field:r,value_field:i})},[r,i]),o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l.onSubmit(n),children:[g(s.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[o(s.Text,{children:"Pie Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:o($.DeviceFloppy,{size:20})})]}),g(s.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[o(J,{label:"Label Field",required:!0,data:a,...l.getInputProps("label_field")}),o(J,{label:"Value Field",required:!0,data:a,...l.getInputProps("value_field")})]})]})})}class Ou extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Pu={displayName:"Pie Chart",migrator:new Ou,name:"pie",viewRender:ku,configRender:Ru,createConfig:()=>pn};function ei(e){return e?t=>{try{return fe.default(t).format(e)}catch(n){return console.error(n),t}}:t=>t}function Fu(e){return{show:!0,formatter:({dimensionIndex:t,value:n})=>ei(e.dimensions[t].formatter)(n)}}function zu(e){return({name:t,marker:n,value:r})=>{if(r.length===0)return"";const i=r.map((a,l)=>{const u=e.dimensions[l],c=ei(u.formatter);return`
|
|
50
50
|
<tr>
|
|
51
51
|
<td style="padding-left: 18px;">${u.name}</td>
|
|
@@ -74,7 +74,7 @@ WHERE
|
|
|
74
74
|
${i.join("")}
|
|
75
75
|
</tbody>
|
|
76
76
|
</table>
|
|
77
|
-
`}}const qu={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function Gu(e,t){const n=["#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:l,max:u})=>({name:l,max:u})),i=t.map(l=>({value:e.dimensions.map(({data_key:u})=>l[u]),name:l[e.series_name_key]})),a={radar:{indicator:r,splitArea:{show:!1}},tooltip:{confine:!0,formatter:zu(e)},legend:{show:!0,left:"center"},series:{type:"radar",data:i,symbolSize:4,lineStyle:{width:1},areaStyle:{opacity:.4},label:Fu(e)},color:n};return Y.default.merge({},qu,a)}const gn={series_name_key:"name",dimensions:[]};ee.use([_e.RadarChart,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function Nu({context:e}){const{value:t}=G(e.instanceData,"config"),{width:n,height:r}=e.viewport,i=e.data,a=S.useMemo(()=>Gu(x.defaultsDeep({},t,gn),i),[t,i]);return!n||!r||!t||x.isEmpty(t==null?void 0:t.dimensions)?null:o(s.Box,{children:o(Ee.default,{echarts:ee,option:a,style:{width:n,height:r}})})}function Lu({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`dimensions.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`dimensions.${t}.data_key`,control:e,render:({field:i})=>o(J,{label:"Data Key",required:!0,data:r,sx:{flex:1},...i})}),o(w.Controller,{name:`dimensions.${t}.max`,control:e,render:({field:i})=>o(s.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...i})})]}),g(s.Stack,{children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Value Formatter",labelPosition:"center"}),o(w.Controller,{name:`dimensions.${t}.formatter`,control:e,render:({field:i})=>o(Jt,{...i})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:o($.Trash,{size:16})})]},t)}function ju({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"dimensions"}),l=t("dimensions"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i({name:Z.randomId(),data_key:"",max:100,formatter:Ke});return g(s.Stack,{children:[u.map((p,d)=>o(Lu,{data:n,control:e,index:d,remove:a})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Dimension"})})]})}function Bu(e){function t({name:n="",data_key:r="",max:i=10,formatter:a=Ke}){return{name:n,data_key:r,max:i,formatter:a}}return e.map(t)}function Wu({context:e}){const t=e.data,{value:n,set:r}=G(e.instanceData,"config"),i=S.useMemo(()=>x.defaultsDeep({},n,gn),[n]),{dimensions:a,series_name_key:l}=i,u=S.useMemo(()=>({dimensions:Bu(a!=null?a:[]),series_name_key:l}),[a,l]);S.useEffect(()=>{!x.isEqual(i,u)&&r(u)},[i,u]);const{control:c,handleSubmit:p,watch:d,getValues:f,reset:h}=w.useForm({defaultValues:u});S.useEffect(()=>{x.isEqual(f(),u)||h(u)},[i]),d(["series_name_key"]);const v=f(),C=S.useMemo(()=>!x.isEqual(v,i),[v,i]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:p(r),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!C,children:o($.DeviceFloppy,{size:20})})]}),o(s.Box,{py:"sm",children:o(w.Controller,{name:"series_name_key",control:c,render:({field:b})=>o(J,{label:"Series Name Field",required:!0,data:t,sx:{flex:1},...b})})}),o(ju,{control:c,watch:d,data:t})]})})}class Uu extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Yu={displayName:"Radar Chart",migrator:new Uu,name:"radar",viewRender:Nu,configRender:Wu,createConfig:()=>gn};function Hu(e,t){switch(e.config.method){case"linear":return[...ke.regressionLinear()(t)];case"exponential":return[...ke.regressionExp()(t)];case"logarithmic":return[...ke.regressionLog()(t)];case"polynomial":return[...ke.regressionPoly().order(e.config.order)(t)];default:return[]}}function Qu({regression:e},t){const n=[],r=[];if(t.length===0)return{regressionSeries:n,regressionXAxes:r};const{transform:i,plot:a,name:l}=e,u=Hu(i,t);return n.push({...a,name:l,data:u,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:n,regressionXAxes:r}}const Ju={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function Xu(e,t){var a,l;const n=Y.default.uniqBy(t.map(u=>[u[e.x_axis.data_key],u[e.regression.y_axis_data_key]]),0),{regressionSeries:r}=Qu(e,n),i={xAxis:{type:"category",name:(a=e.x_axis.name)!=null?a:""},yAxis:{name:(l=e.y_axis.name)!=null?l:""},series:[{data:n,name:e.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...r]};return x.defaultsDeep({},i,Ju)}function bt(e,t,n){return 1-(1-e)*(t-1)/(t-n-1)}function Ku(e,t){if(!t)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:n,x_axis:r,y_axis:i}=t,a=e.map(l=>[l[r.data_key],l[n.y_axis_data_key]]);if(n.transform.config.method==="linear"){const l=ke.regressionLinear()(a),{a:u,b:c,rSquared:p}=l;return{expression:g(s.Group,{position:"center",noWrap:!0,spacing:10,children:[o(s.Text,{children:i.name}),o(s.Text,{children:"="}),o(s.Text,{weight:"bold",color:"gray",children:c}),o(s.Text,{children:"+"}),o(s.Text,{weight:"bold",color:"gray",children:u}),o(s.Text,{children:"\xD7"}),o(s.Text,{children:r.name})]}),rSquared:p,adjustedRSquared:bt(p,e.length,1)}}if(n.transform.config.method==="exponential"){const{a:l,b:u,rSquared:c}=ke.regressionExp()(a);return{expression:g(s.Group,{position:"center",noWrap:!0,spacing:10,children:[o(s.Text,{children:i.name}),o(s.Text,{children:"="}),o(s.Text,{weight:"bold",color:"gray",children:l}),o(s.Text,{children:"\xD7"}),g(s.Group,{position:"left",noWrap:!0,spacing:2,children:[o(s.Text,{children:"Math.exp("}),o(s.Text,{weight:"bold",color:"gray",children:u}),o(s.Text,{children:"\xD7"}),o(s.Text,{children:r.name}),o(s.Text,{children:")"})]})]}),rSquared:c,adjustedRSquared:bt(c,e.length,1)}}if(n.transform.config.method==="logarithmic"){const{a:l,b:u,rSquared:c}=ke.regressionLog()(a);return{expression:g(s.Group,{position:"center",noWrap:!0,spacing:10,children:[o(s.Text,{children:i.name}),o(s.Text,{children:"="}),o(s.Text,{weight:"bold",color:"gray",children:l}),o(s.Text,{children:"\xD7"}),g(s.Group,{position:"left",noWrap:!0,spacing:2,children:[o(s.Text,{children:"Math.log("}),o(s.Text,{children:r.name}),o(s.Text,{children:")"}),o(s.Text,{children:"+"}),o(s.Text,{weight:"bold",color:"gray",children:u})]})]}),rSquared:c,adjustedRSquared:bt(c,e.length,1)}}if(n.transform.config.method==="polynomial"){const l=ke.regressionPoly().order(n.transform.config.order)(a),{rSquared:u}=l;return console.log(l),{expression:"",rSquared:u,adjustedRSquared:bt(u,e.length,1)}}return{expression:"",rSquared:0}}const fn={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"}};ee.use([U.DataZoomComponent,_e.ScatterChart,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]),ee.registerTransform(Kn.transform.regression);function Zu({context:e}){const{value:t}=G(e.instanceData,"config"),{width:n,height:r}=e.viewport,i=S.useMemo(()=>{var h;const d=e.data,f=(h=t==null?void 0:t.regression)==null?void 0:h.y_axis_data_key;return f?d.map(v=>typeof v[f]=="number"?v:{...v,[f]:Number(v[f])}):d},[e.data,t==null?void 0:t.regression.y_axis_data_key]),a=S.useMemo(()=>Xu(x.defaultsDeep({},t,fn),i),[t,i]),{expression:l,rSquared:u,adjustedRSquared:c}=S.useMemo(()=>Ku(i,t),[t,i]);if(!n||!r||!t)return null;let p=r;return l&&(p-=20),g(s.Box,{children:[l&&o(s.Text,{align:"center",size:12,children:l}),g(s.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[o(Ee.default,{echarts:ee,option:a,style:{width:n-190,height:p}}),u&&o(s.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:g("tbody",{children:[g("tr",{children:[o("td",{children:"R-Sq"}),o("td",{style:{textAlign:"right"},children:fe.default(u).format({output:"percent",mantissa:1})})]}),g("tr",{children:[o("td",{children:"R-Sq(Adjusted)"}),o("td",{style:{textAlign:"right"},children:fe.default(c).format({output:"percent",mantissa:1})})]})]})})]})]})}const ec=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function tc({control:e,watch:t,data:n}){const r=t("regression.transform.config.method");return g(s.Stack,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"regression.name",control:e,render:({field:i})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:"regression.y_axis_data_key",control:e,render:({field:i})=>o(J,{label:"Value Field",required:!0,data:n,sx:{flex:1},...i})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"regression.transform.config.method",control:e,render:({field:i})=>o(s.Select,{label:"Method",data:ec,sx:{flex:1},...i})}),r==="polynomial"&&o(w.Controller,{name:"regression.transform.config.order",control:e,render:({field:i})=>o(s.NumberInput,{label:"Order",sx:{flex:1},...i})})]}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:"regression.plot.color",control:e,render:({field:i})=>o(Pe,{...i})})]})]})}function nc({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaults({},t,fn),[t]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});S.useEffect(()=>{p(i)},[i]),u(["x_axis","y_axis","regression"]);const d=c(),f=S.useMemo(()=>!x.isEqual(d,t),[d,t]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),g(s.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[g(s.Accordion.Item,{value:"Axis",children:[o(s.Accordion.Control,{children:"Axis"}),g(s.Accordion.Panel,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"x_axis.data_key",control:a,render:({field:h})=>o(J,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),o(s.Group,{grow:!0,noWrap:!0,children:o(w.Controller,{name:"y_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})})})]})]}),g(s.Accordion.Item,{value:"Regression",children:[o(s.Accordion.Control,{children:"Regression Line"}),o(s.Accordion.Panel,{children:o(tc,{control:a,watch:u,data:r})})]})]})]})})}class rc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const ic={displayName:"Regression Chart",migrator:new rc,name:"regressionChart",viewRender:Zu,configRender:nc,createConfig:()=>fn},hn={content:""};function ti(e){const t=S.useRef(null);return S.useEffect(()=>{var n,r,i;e&&((i=(r=(n=t.current)==null?void 0:n.editor)==null?void 0:r.clipboard)==null||i.dangerouslyPasteHTML(e))},[e]),t}function oc({context:e}){const{panel:t}=ae(),{value:n}=G(e.instanceData,"config"),r=n==null?void 0:n.content,i=ti(r);return n!=null&&n.content?o(Ot.RichTextEditor,{id:t.id,ref:i,readOnly:!0,value:n.content,onChange:x.noop,sx:{border:"none",".ql-editor":{padding:0,"h1, h2, h3, h4, h5, p, ul, ol":{"&:last-child":{marginBottom:0}}}}}):null}function ac({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=S.useMemo(()=>x.defaults({},t,hn),[t]),{control:i,handleSubmit:a,watch:l,getValues:u}=w.useForm({defaultValues:r});l("content");const c=u(),p=S.useMemo(()=>!x.isEqual(c,t),[c,t]),d=ti(t==null?void 0:t.content);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:a(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Content"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!p,children:o($.DeviceFloppy,{size:20})})]}),o(w.Controller,{name:"content",control:i,render:({field:f})=>o(tr.default,{ref:d,sx:{flex:1},...x.omit(f,"ref")})})]})})}class sc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}fixMalformedConfig(n){return x.defaults({},n,hn)}configVersions(){this.version(1,n=>({version:1,config:this.fixMalformedConfig(n)}))}}const lc={displayName:"RichText",migrator:new sc,name:"richText",viewRender:oc,configRender:ac,createConfig:()=>hn},mn={align:"center",template:"The variable ${value} is defined in Variables section",variables:[{name:"value",size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:{type:"none",config:{}},formatter:{output:"number",mantissa:0}}]};function uc(e){if("variables"in e)return e;const{align:t,size:n,weight:r,color:i,content:{prefix:a="",data_field:l="value",formatter:u={output:"number",mantissa:0},postfix:c=""}={}}=e;return{align:t,template:`${a} \${value} ${c}`,variables:[{name:"value",data_field:l,aggregation:{type:"none",config:{}},formatter:u,color:i,weight:r,size:n}]}}class cc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({config:uc(n)}))}}function dc({context:e}){const{value:t=mn}=G(e.instanceData,"config"),{template:n,variables:r,align:i}=t,a=S.useMemo(()=>sn(n,r,e.data),[n,r,e.data]);return o(s.Text,{align:i,children:Object.values(a).map((l,u)=>o(_.default.Fragment,{children:l},u))})}function pc({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function gc({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"variables"}),l=t("variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[u.map((p,d)=>o(pc,{control:e,index:d,remove:a,data:n},p.name)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function fc({context:e}){const t=e.data||[],{value:n,set:r}=G(e.instanceData,"config"),i=_.default.useMemo(()=>{const{align:h,template:v="",variables:C=[]}=x.defaultsDeep({},n,mn);return{variables:C,template:v,align:h}},[n]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});_.default.useEffect(()=>{p(i)},[i]),u(["variables","template"]);const d=c(),f=_.default.useMemo(()=>!Y.default.isEqual(d,n),[d,n]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(r),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{weight:500,children:"Stats Configurations"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),o(w.Controller,{name:"template",control:a,render:({field:h})=>o(Qt,{label:"Template",py:"md",sx:{flexGrow:1},...h})}),o(s.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),o(gc,{control:a,watch:u,data:t})]})})}const hc={createConfig(){return{version:1,config:mn}},displayName:"Stats",migrator:new cc,name:"stats",viewRender:dc,configRender:fc},vn={label_field:"",value_field:""};ee.use([_e.SunburstChart,Te.CanvasRenderer]);const mc={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function vc({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{label_field:a,value_field:l}=x.defaults({},t,vn),u=S.useMemo(()=>n.map(f=>({name:f[a],value:Number(f[l])})),[n,a,l]),c=S.useMemo(()=>{var f,h;return(h=(f=x.maxBy(u,v=>v.value))==null?void 0:f.value)!=null?h:1},[u]),p=S.useMemo(()=>({series:{label:{formatter:({name:f,value:h})=>h/c<.2?" ":f}}}),[c]),d=x.merge({},mc,p,{series:{data:u}});return o(Ee.default,{echarts:ee,option:d,style:{width:r,height:i}})}function yc({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),{label_field:r,value_field:i}=x.defaults({},t,vn),a=e.data,l=Pt.useForm({initialValues:{label_field:r,value_field:i}});return S.useEffect(()=>{l.setValues({label_field:r,value_field:i})},[r,i]),o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l.onSubmit(n),children:[g(s.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[o(s.Text,{children:"Sunburst Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:o($.DeviceFloppy,{size:20})})]}),g(s.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[o(J,{label:"Label Field",required:!0,data:a,...l.getInputProps("label_field")}),o(J,{label:"Value Field",required:!0,data:a,...l.getInputProps("value_field")})]})]})})}class bc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Cc={displayName:"Sunburst",migrator:new bc,name:"sunburst",viewRender:vc,configRender:yc,createConfig:()=>vn};var ze=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e))(ze||{});const Ct={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!1,verticalSpacing:"1em"};/**
|
|
77
|
+
`}}const qu={legend:{show:!0,bottom:0,left:0},tooltip:{trigger:"item"}};function Gu(e,t){const n=["#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:l,max:u})=>({name:l,max:u})),i=t.map(l=>({value:e.dimensions.map(({data_key:u})=>l[u]),name:l[e.series_name_key]})),a={radar:{indicator:r,splitArea:{show:!1}},tooltip:{confine:!0,formatter:zu(e)},legend:{show:!0,left:"center"},series:{type:"radar",data:i,symbolSize:4,lineStyle:{width:1},areaStyle:{opacity:.4},label:Fu(e)},color:n};return Y.default.merge({},qu,a)}const gn={series_name_key:"name",dimensions:[]};ee.use([_e.RadarChart,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]);function Nu({context:e}){const{value:t}=G(e.instanceData,"config"),{width:n,height:r}=e.viewport,i=e.data,a=S.useMemo(()=>Gu(x.defaultsDeep({},t,gn),i),[t,i]);return!n||!r||!t||x.isEmpty(t==null?void 0:t.dimensions)?null:o(s.Box,{children:o(Ee.default,{echarts:ee,option:a,style:{width:n,height:r}})})}function Lu({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:`dimensions.${t}.name`,control:e,render:({field:i})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:`dimensions.${t}.data_key`,control:e,render:({field:i})=>o(J,{label:"Data Key",required:!0,data:r,sx:{flex:1},...i})}),o(w.Controller,{name:`dimensions.${t}.max`,control:e,render:({field:i})=>o(s.NumberInput,{label:"Max",hideControls:!0,required:!0,sx:{flex:1},...i})})]}),g(s.Stack,{children:[o(s.Divider,{mb:-15,variant:"dashed",label:"Value Formatter",labelPosition:"center"}),o(w.Controller,{name:`dimensions.${t}.formatter`,control:e,render:({field:i})=>o(Jt,{...i})})]}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},disabled:t===0,children:o($.Trash,{size:16})})]},t)}function ju({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"dimensions"}),l=t("dimensions"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i({name:Z.randomId(),data_key:"",max:100,formatter:Ke});return g(s.Stack,{children:[u.map((p,d)=>o(Lu,{data:n,control:e,index:d,remove:a})),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Dimension"})})]})}function Bu(e){function t({name:n="",data_key:r="",max:i=10,formatter:a=Ke}){return{name:n,data_key:r,max:i,formatter:a}}return e.map(t)}function Wu({context:e}){const t=e.data,{value:n,set:r}=G(e.instanceData,"config"),i=S.useMemo(()=>x.defaultsDeep({},n,gn),[n]),{dimensions:a,series_name_key:l}=i,u=S.useMemo(()=>({dimensions:Bu(a!=null?a:[]),series_name_key:l}),[a,l]);S.useEffect(()=>{!x.isEqual(i,u)&&r(u)},[i,u]);const{control:c,handleSubmit:p,watch:d,getValues:f,reset:h}=w.useForm({defaultValues:u});S.useEffect(()=>{x.isEqual(f(),u)||h(u)},[i]),d(["series_name_key"]);const v=f(),C=S.useMemo(()=>!x.isEqual(v,i),[v,i]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:p(r),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!C,children:o($.DeviceFloppy,{size:20})})]}),o(s.Box,{py:"sm",children:o(w.Controller,{name:"series_name_key",control:c,render:({field:b})=>o(J,{label:"Series Name Field",required:!0,data:t,sx:{flex:1},...b})})}),o(ju,{control:c,watch:d,data:t})]})})}class Uu extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Yu={displayName:"Radar Chart",migrator:new Uu,name:"radar",viewRender:Nu,configRender:Wu,createConfig:()=>gn};function Hu(e,t){switch(e.config.method){case"linear":return[...ke.regressionLinear()(t)];case"exponential":return[...ke.regressionExp()(t)];case"logarithmic":return[...ke.regressionLog()(t)];case"polynomial":return[...ke.regressionPoly().order(e.config.order)(t)];default:return[]}}function Qu({regression:e},t){const n=[],r=[];if(t.length===0)return{regressionSeries:n,regressionXAxes:r};const{transform:i,plot:a,name:l}=e,u=Hu(i,t);return n.push({...a,name:l,data:u,showSymbol:!1,smooth:!0,tooltip:{show:!1}}),{regressionSeries:n,regressionXAxes:r}}const Ju={tooltip:{trigger:"axis"},grid:{top:10,left:30,right:15,bottom:30,containLabel:!0},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"inside",yAxisIndex:[0]}]};function Xu(e,t){var a,l;const n=Y.default.uniqBy(t.map(u=>[u[e.x_axis.data_key],u[e.regression.y_axis_data_key]]),0),{regressionSeries:r}=Qu(e,n),i={xAxis:{type:"category",name:(a=e.x_axis.name)!=null?a:"",axisTick:{show:!0,alignWithLabel:!0}},yAxis:{name:(l=e.y_axis.name)!=null?l:"",axisLine:{show:!0}},series:[{data:n,name:e.y_axis.name,type:"scatter",symbolSize:4,color:"red"},...r]};return x.defaultsDeep({},i,Ju)}function bt(e,t,n){return 1-(1-e)*(t-1)/(t-n-1)}function Ku(e,t){if(!t)return{expression:"",rSquared:0,adjustedRSquared:0};const{regression:n,x_axis:r,y_axis:i}=t,a=e.map(l=>[l[r.data_key],l[n.y_axis_data_key]]);if(n.transform.config.method==="linear"){const l=ke.regressionLinear()(a),{a:u,b:c,rSquared:p}=l;return{expression:g(s.Group,{position:"center",noWrap:!0,spacing:10,children:[o(s.Text,{children:i.name}),o(s.Text,{children:"="}),o(s.Text,{weight:"bold",color:"gray",children:c}),o(s.Text,{children:"+"}),o(s.Text,{weight:"bold",color:"gray",children:u}),o(s.Text,{children:"\xD7"}),o(s.Text,{children:r.name})]}),rSquared:p,adjustedRSquared:bt(p,e.length,1)}}if(n.transform.config.method==="exponential"){const{a:l,b:u,rSquared:c}=ke.regressionExp()(a);return{expression:g(s.Group,{position:"center",noWrap:!0,spacing:10,children:[o(s.Text,{children:i.name}),o(s.Text,{children:"="}),o(s.Text,{weight:"bold",color:"gray",children:l}),o(s.Text,{children:"\xD7"}),g(s.Group,{position:"left",noWrap:!0,spacing:2,children:[o(s.Text,{children:"Math.exp("}),o(s.Text,{weight:"bold",color:"gray",children:u}),o(s.Text,{children:"\xD7"}),o(s.Text,{children:r.name}),o(s.Text,{children:")"})]})]}),rSquared:c,adjustedRSquared:bt(c,e.length,1)}}if(n.transform.config.method==="logarithmic"){const{a:l,b:u,rSquared:c}=ke.regressionLog()(a);return{expression:g(s.Group,{position:"center",noWrap:!0,spacing:10,children:[o(s.Text,{children:i.name}),o(s.Text,{children:"="}),o(s.Text,{weight:"bold",color:"gray",children:l}),o(s.Text,{children:"\xD7"}),g(s.Group,{position:"left",noWrap:!0,spacing:2,children:[o(s.Text,{children:"Math.log("}),o(s.Text,{children:r.name}),o(s.Text,{children:")"}),o(s.Text,{children:"+"}),o(s.Text,{weight:"bold",color:"gray",children:u})]})]}),rSquared:c,adjustedRSquared:bt(c,e.length,1)}}if(n.transform.config.method==="polynomial"){const l=ke.regressionPoly().order(n.transform.config.order)(a),{rSquared:u}=l;return console.log(l),{expression:"",rSquared:u,adjustedRSquared:bt(u,e.length,1)}}return{expression:"",rSquared:0}}const fn={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"}};ee.use([U.DataZoomComponent,_e.ScatterChart,U.GridComponent,U.LegendComponent,U.TooltipComponent,Te.CanvasRenderer]),ee.registerTransform(Kn.transform.regression);function Zu({context:e}){const{value:t}=G(e.instanceData,"config"),{width:n,height:r}=e.viewport,i=S.useMemo(()=>{var h;const d=e.data,f=(h=t==null?void 0:t.regression)==null?void 0:h.y_axis_data_key;return f?d.map(v=>typeof v[f]=="number"?v:{...v,[f]:Number(v[f])}):d},[e.data,t==null?void 0:t.regression.y_axis_data_key]),a=S.useMemo(()=>Xu(x.defaultsDeep({},t,fn),i),[t,i]),{expression:l,rSquared:u,adjustedRSquared:c}=S.useMemo(()=>Ku(i,t),[t,i]);if(!n||!r||!t)return null;let p=r;return l&&(p-=20),g(s.Box,{children:[l&&o(s.Text,{align:"center",size:12,children:l}),g(s.Group,{spacing:0,noWrap:!0,align:"start",sx:{"> *":{flexGrow:0,flexShrink:0}},children:[o(Ee.default,{echarts:ee,option:a,style:{width:n-190,height:p}}),u&&o(s.Table,{mt:20,fontSize:12,sx:{width:180,border:"1px solid #999",td:{padding:"3px 8px"}},children:g("tbody",{children:[g("tr",{children:[o("td",{children:"R-Sq"}),o("td",{style:{textAlign:"right"},children:fe.default(u).format({output:"percent",mantissa:1})})]}),g("tr",{children:[o("td",{children:"R-Sq(Adjusted)"}),o("td",{style:{textAlign:"right"},children:fe.default(c).format({output:"percent",mantissa:1})})]})]})})]})]})}const ec=[{label:"Linear",value:"linear"},{label:"Exponential",value:"exponential"},{label:"Logarithmic",value:"logarithmic"},{label:"Polynomial",value:"polynomial"}];function tc({control:e,watch:t,data:n}){const r=t("regression.transform.config.method");return g(s.Stack,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"regression.name",control:e,render:({field:i})=>o(s.TextInput,{label:"Name",required:!0,sx:{flex:1},...i})}),o(w.Controller,{name:"regression.y_axis_data_key",control:e,render:({field:i})=>o(J,{label:"Value Field",required:!0,data:n,sx:{flex:1},...i})})]}),g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"regression.transform.config.method",control:e,render:({field:i})=>o(s.Select,{label:"Method",data:ec,sx:{flex:1},...i})}),r==="polynomial"&&o(w.Controller,{name:"regression.transform.config.order",control:e,render:({field:i})=>o(s.NumberInput,{label:"Order",sx:{flex:1},...i})})]}),g(s.Stack,{spacing:4,children:[o(s.Text,{size:"sm",children:"Color"}),o(w.Controller,{name:"regression.plot.color",control:e,render:({field:i})=>o(Pe,{...i})})]})]})}function nc({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=e.data,i=S.useMemo(()=>x.defaults({},t,fn),[t]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});S.useEffect(()=>{p(i)},[i]),u(["x_axis","y_axis","regression"]);const d=c(),f=S.useMemo(()=>!x.isEqual(d,t),[d,t]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Chart Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),g(s.Accordion,{multiple:!0,defaultValue:["Axis","Regression"],children:[g(s.Accordion.Item,{value:"Axis",children:[o(s.Accordion.Control,{children:"Axis"}),g(s.Accordion.Panel,{children:[g(s.Group,{grow:!0,noWrap:!0,children:[o(w.Controller,{name:"x_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"X Axis Name",sx:{flex:1},...h})}),o(w.Controller,{name:"x_axis.data_key",control:a,render:({field:h})=>o(J,{label:"X Axis Data Field",required:!0,data:r,sx:{flex:1},...h})})]}),o(s.Group,{grow:!0,noWrap:!0,children:o(w.Controller,{name:"y_axis.name",control:a,render:({field:h})=>o(s.TextInput,{label:"Y Axis Name",sx:{flex:1},...h})})})]})]}),g(s.Accordion.Item,{value:"Regression",children:[o(s.Accordion.Control,{children:"Regression Line"}),o(s.Accordion.Panel,{children:o(tc,{control:a,watch:u,data:r})})]})]})]})})}class rc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const ic={displayName:"Regression Chart",migrator:new rc,name:"regressionChart",viewRender:Zu,configRender:nc,createConfig:()=>fn},hn={content:""};function ti(e){const t=S.useRef(null);return S.useEffect(()=>{var n,r,i;e&&((i=(r=(n=t.current)==null?void 0:n.editor)==null?void 0:r.clipboard)==null||i.dangerouslyPasteHTML(e))},[e]),t}function oc({context:e}){const{panel:t}=ae(),{value:n}=G(e.instanceData,"config"),r=n==null?void 0:n.content,i=ti(r);return n!=null&&n.content?o(Ot.RichTextEditor,{id:t.id,ref:i,readOnly:!0,value:n.content,onChange:x.noop,sx:{border:"none",".ql-editor":{padding:0,"h1, h2, h3, h4, h5, p, ul, ol":{"&:last-child":{marginBottom:0}}}}}):null}function ac({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),r=S.useMemo(()=>x.defaults({},t,hn),[t]),{control:i,handleSubmit:a,watch:l,getValues:u}=w.useForm({defaultValues:r});l("content");const c=u(),p=S.useMemo(()=>!x.isEqual(c,t),[c,t]),d=ti(t==null?void 0:t.content);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:a(n),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{children:"Content"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!p,children:o($.DeviceFloppy,{size:20})})]}),o(w.Controller,{name:"content",control:i,render:({field:f})=>o(tr.default,{ref:d,sx:{flex:1},...x.omit(f,"ref")})})]})})}class sc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}fixMalformedConfig(n){return x.defaults({},n,hn)}configVersions(){this.version(1,n=>({version:1,config:this.fixMalformedConfig(n)}))}}const lc={displayName:"RichText",migrator:new sc,name:"richText",viewRender:oc,configRender:ac,createConfig:()=>hn},mn={align:"center",template:"The variable ${value} is defined in Variables section",variables:[{name:"value",size:"20px",weight:"bold",color:{type:"static",staticColor:"blue"},data_field:"",aggregation:{type:"none",config:{}},formatter:{output:"number",mantissa:0}}]};function uc(e){if("variables"in e)return e;const{align:t,size:n,weight:r,color:i,content:{prefix:a="",data_field:l="value",formatter:u={output:"number",mantissa:0},postfix:c=""}={}}=e;return{align:t,template:`${a} \${value} ${c}`,variables:[{name:"value",data_field:l,aggregation:{type:"none",config:{}},formatter:u,color:i,weight:r,size:n}]}}class cc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({config:uc(n)}))}}function dc({context:e}){const{value:t=mn}=G(e.instanceData,"config"),{template:n,variables:r,align:i}=t,a=S.useMemo(()=>sn(n,r,e.data),[n,r,e.data]);return o(s.Text,{align:i,children:Object.values(a).map((l,u)=>o(_.default.Fragment,{children:l},u))})}function pc({control:e,index:t,remove:n,data:r}){return g(s.Stack,{my:"sm",p:0,sx:{border:"1px solid #eee",borderTopColor:"#333",borderTopWidth:2,position:"relative"},children:[o(w.Controller,{name:`variables.${t}`,control:e,render:({field:i})=>o(ht,{data:r,...i})}),o(s.ActionIcon,{color:"red",variant:"subtle",onClick:()=>n(t),sx:{position:"absolute",top:15,right:5},children:o($.Trash,{size:16})})]},t)}function gc({control:e,watch:t,data:n}){const{fields:r,append:i,remove:a}=w.useFieldArray({control:e,name:"variables"}),l=t("variables"),u=r.map((p,d)=>({...p,...l[d]})),c=()=>i(gt());return g(s.Stack,{children:[u.map((p,d)=>o(pc,{control:e,index:d,remove:a,data:n},p.name)),o(s.Group,{position:"center",mt:"xs",children:o(s.Button,{onClick:c,children:"Add a Variable"})})]})}function fc({context:e}){const t=e.data||[],{value:n,set:r}=G(e.instanceData,"config"),i=_.default.useMemo(()=>{const{align:h,template:v="",variables:C=[]}=x.defaultsDeep({},n,mn);return{variables:C,template:v,align:h}},[n]),{control:a,handleSubmit:l,watch:u,getValues:c,reset:p}=w.useForm({defaultValues:i});_.default.useEffect(()=>{p(i)},[i]),u(["variables","template"]);const d=c(),f=_.default.useMemo(()=>!Y.default.isEqual(d,n),[d,n]);return o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l(r),children:[g(s.Group,{position:"left",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[o(s.Text,{weight:500,children:"Stats Configurations"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",disabled:!f,children:o($.DeviceFloppy,{size:20})})]}),o(w.Controller,{name:"template",control:a,render:({field:h})=>o(Qt,{label:"Template",py:"md",sx:{flexGrow:1},...h})}),o(s.Text,{pb:"sm",pt:"md",size:"sm",children:"Variables"}),o(gc,{control:a,watch:u,data:t})]})})}const hc={createConfig(){return{version:1,config:mn}},displayName:"Stats",migrator:new cc,name:"stats",viewRender:dc,configRender:fc},vn={label_field:"",value_field:""};ee.use([_e.SunburstChart,Te.CanvasRenderer]);const mc={tooltip:{show:!0},series:{type:"sunburst",radius:[0,"90%"],emphasis:{focus:"ancestor"}}};function vc({context:e}){const{value:t}=G(e.instanceData,"config"),n=e.data,{width:r,height:i}=e.viewport,{label_field:a,value_field:l}=x.defaults({},t,vn),u=S.useMemo(()=>n.map(f=>({name:f[a],value:Number(f[l])})),[n,a,l]),c=S.useMemo(()=>{var f,h;return(h=(f=x.maxBy(u,v=>v.value))==null?void 0:f.value)!=null?h:1},[u]),p=S.useMemo(()=>({series:{label:{formatter:({name:f,value:h})=>h/c<.2?" ":f}}}),[c]),d=x.merge({},mc,p,{series:{data:u}});return o(Ee.default,{echarts:ee,option:d,style:{width:r,height:i}})}function yc({context:e}){const{value:t,set:n}=G(e.instanceData,"config"),{label_field:r,value_field:i}=x.defaults({},t,vn),a=e.data,l=Pt.useForm({initialValues:{label_field:r,value_field:i}});return S.useEffect(()=>{l.setValues({label_field:r,value_field:i})},[r,i]),o(s.Stack,{mt:"md",spacing:"xs",children:g("form",{onSubmit:l.onSubmit(n),children:[g(s.Group,{position:"apart",mb:"lg",sx:{position:"relative"},children:[o(s.Text,{children:"Sunburst Config"}),o(s.ActionIcon,{type:"submit",mr:5,variant:"filled",color:"blue",children:o($.DeviceFloppy,{size:20})})]}),g(s.Stack,{mt:"md",spacing:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[o(J,{label:"Label Field",required:!0,data:a,...l.getInputProps("label_field")}),o(J,{label:"Value Field",required:!0,data:a,...l.getInputProps("value_field")})]})]})})}class bc extends ge{constructor(){super(...arguments);k(this,"VERSION",1)}configVersions(){this.version(1,n=>({version:1,config:n}))}}const Cc={displayName:"Sunburst",migrator:new bc,name:"sunburst",viewRender:vc,configRender:yc,createConfig:()=>vn};var ze=(e=>(e.string="string",e.number="number",e.eloc="eloc",e.percentage="percentage",e))(ze||{});const Ct={columns:[],fontSize:"1rem",highlightOnHover:!1,horizontalSpacing:"1em",id_field:"",striped:!1,use_raw_columns:!1,verticalSpacing:"1em"};/**
|
|
78
78
|
* react-table
|
|
79
79
|
*
|
|
80
80
|
* Copyright (c) TanStack
|
|
@@ -5,12 +5,18 @@ export declare function getYAxes(conf: ICartesianChartConf, labelFormatters: Rec
|
|
|
5
5
|
show: boolean;
|
|
6
6
|
formatter: (p: $TSFixMe) => string;
|
|
7
7
|
};
|
|
8
|
+
axisLine: {
|
|
9
|
+
show: boolean;
|
|
10
|
+
};
|
|
8
11
|
nameTextStyle: {
|
|
9
12
|
fontWeight: string;
|
|
10
13
|
align: "left" | "right" | "center";
|
|
11
14
|
};
|
|
12
15
|
nameLocation: string;
|
|
13
16
|
nameGap: number;
|
|
17
|
+
splitLine: {
|
|
18
|
+
show: boolean;
|
|
19
|
+
};
|
|
14
20
|
name: string;
|
|
15
21
|
label_formatter: import("../../../../panel/settings/common/numbro-format-selector").TNumbroFormat;
|
|
16
22
|
}[];
|