@devtable/dashboard 14.53.3 → 14.53.4

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.
@@ -2520,7 +2520,7 @@ class di {
2520
2520
  }), this.instanceRegistry.clear(), this.factoryRegistry.clear();
2521
2521
  }
2522
2522
  }
2523
- const Fs = "14.53.3", yg = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2523
+ const Fs = "14.53.4", yg = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2524
2524
  __proto__: null,
2525
2525
  version: Fs
2526
2526
  }, Symbol.toStringTag, { value: "Module" }));
@@ -7669,7 +7669,11 @@ function Ky({
7669
7669
  } = y(), i = (d) => {
7670
7670
  t({
7671
7671
  ...e,
7672
- output: d
7672
+ output: d,
7673
+ absolute: !1,
7674
+ average: !1,
7675
+ trimMantissa: !1,
7676
+ mantissa: 0
7673
7677
  });
7674
7678
  }, o = (d) => {
7675
7679
  if (typeof d == "string")
@@ -6,7 +6,7 @@ Variable: {{ your_var }}`,tabs:{guide:"Guide",vars:"Dashboard state & Panel vari
6
6
  -- 在富文本中,要使用双重花括号来包裹代码。
7
7
  项目ID:{{ context.project_id }}
8
8
  搜索关键字:{{ filters.keyword }}
9
- 我的卡片变量: {{ your_var }}`,tabs:{guide:"使用指南",vars:"看板信息与卡片的变量"}}}},style:{label:"样式",font_size:{label:"字号",placeholder:"10px, 1em, 1rem, 100%..."},font_weight:{label:"字重"},size:{xs:"特小",sm:"小",md:"中",lg:"大",xl:"特大"},flex:{justify_content:{label:"内容分布",left:"从左起",center:"居中",right:"从右起",space_between:"均匀分布,首尾顶格",space_around:"均匀分布,首尾留空一半",space_evenly:"均匀分布,首尾留空"},align_items:{label:"对齐位置",start:"起点对齐",center:"居中对齐",end:"末端对齐",stretch:"拉伸对齐"}},color:{type:{label:"颜色类型",static:"单色",interpolation:"插值取色",none:"无"},interpolation:{setup:"设置取色方案",palette:{label:"色板",category:{sequential:"单色渐变",diverging:"双色渐变"},red_green:"红 / 绿",yellow_blue:"黄 / 蓝",red:"红",green:"绿",blue:"蓝",orange:"橙",mapping:{value_input_label:"映射一个值到此颜色"}}}}},query:{label:"查询",labels:"查询",add:"新增查询",delete:"删除这个查询",cant_delete:"此查询在使用中,不能删除。请查看“使用情况”标签页以了解详情",delete_unused:"删除未用到的查询",name:"名称",name_description:"唯一名称",manage:"管理查询",open:"打开此查询",configurations:"配置",basics:"基本信息",conditions:"条件",run_by_condition:{label:"以下条件为真时,才运行本查询",description:"为假的情况: 空数组 / NaN / false / 空字符串 / undefined / null",unset:"留空则在看板加载时便运行本查询"},re_run_condition:{label:"当以下条件改变时,重新运行此查询",unset:"留空则永不重新运行此查询"},dependency:{label:"依赖",has_none:"此查询无依赖"},edit_sql:"编辑SQL",preview_sql:"预览SQL",request:"请求",build_request:"构造请求",process_request:"加工请求",process_result:"加工结果",usage:{label:"使用情况",in_views:"所在视图",unused_description:"此查询未被任何筛选器或卡片用到"},transform:{label:"查询变形",full_label:"查询变形",data_source:"基于其他查询的数据,加工出新数据",guide:{pick_queries:"选择一至多个查询作为数据输入",write_function:"编写函数,返回新数据"}}},data:{label:"数据",preview_data:"预览数据",empty_data:"无数据",requires_data:"请先关联查询",data_field:{selector:{options:{unset:"未设置",default:"默认"}}}},data_source:{label:"数据源",explore:"查看数据源",explorer:"数据源查看器",table_structure:"数据表结构",table_structure_short:"表结构",see_table_structure:"查看数据表结构"},visualization:{label:"可视化",component:"可视化组件",label_short:"可视化"},numbro:{format:{label:"格式",absolute:"绝对值",absolute_description:"非负",abbreviation:"缩写",abbreviation_description:"如1.23k、1.23m",mantissa:"小数",trim_mantissa:"抹零",trim_mantissa_description:"省略末尾的零",preview:{open:"展开预览",close:"收起预览",input:"输入",output:"输出"}}},import:{label:"导入...",title:"自描述文件导入看板内容",json_file:"描述文件(JSON格式)",this_dashboard:"此看板",this_file:"此文件"},function_utils:{trigger_text:"关于utils参数",modal_title:"关于utils参数",description:"参数 <code>utils</code> 是 <code>FunctionUtils</code>,包含以下内容:",document:"文档"},aggregation:{option:{none:"无",sum:"和",mean:"平均值",median:"中位数",min:"最小值",max:"最大值",cov:"变异系数",std:"标准差",quantile:{label:"分位",label_with_hint:"分位(99%, 95%, ...)"},custom:{label:"自定义",label_trigger:"编写函数",title:"自定义聚合方式"},pick_record:{label:"直接选择数据",method:{label:"数据记录",first:"第一条",last:"最后一条"}}}},rich_text:{label:"富文本",content:{label:"内容"},dynamic_color:{label:"动态颜色",edit:"编辑动态颜色",clear:"清除动态颜色"},color_mapping:{label:"颜色映射",edit:"编辑颜色映射",clear:"清除颜色映射",choose_value_var:"选择用于映射颜色的变量",min:{val:"固定最小值",var:"动态最小值(优先)"},max:{val:"固定最大值",var:"动态最大值(优先)"}}},chart:{chart_config:"图表设置",data_field:"数据字段",groups:{merico_suite:"思码逸套件",echarts_based_charts:"基于ECharts的图表",others:"其他"},unit:{title:"单位",text:{placeholder:"单位文案"},show_in_tooltip:"在提示框中显示单位",show_in_legend:"在图例中显示单位"},series_order:{label:"排序依据",name:"名称",value:"值",raw:"不排序,保持数据本身的顺序",asc:"升序",desc:"降序"},label:{label:"文案",label_full:"标签文案",label_style:"标签文案样式",label_format:"标签文案格式"},label_position:{label:"文案位置",off:"不显示文案",top:"上",left:"左",right:"右",bottom:"下",inside:"内",inside_top:"内-上",inside_left:"内-左",inside_center:"内-中",inside_right:"内-右",inside_bottom:"内-下",inside_top_left:"内-上-左",inside_top_right:"内-上-右",inside_bottom_left:"内-下-左",inside_bottom_right:"内-下-右",outside:"外"},visual_map:{label:"视觉映射",continuous:{label:"连续型"},piecewise:{label:"分段型",mode:{pieces:"连续数据",categories:"离散数据"},add_a_piece:"加一个分段",interval:"值区间",piece_label:"文案"},bar_width:"长条的宽度",bar_height:"长条的高度",item_width:"小块的宽度",item_height:"小块的高度",calculable:"显示拖拽手柄",min_value:"最小值",max_value:"最大值",min_text:"最小值文案",max_text:"最大值文案",use_palette_x:'使用配色方案"{{x}}"',built_in_palettes:"内置配色方案",precision:"数据精度",skip_range:{lt_min:"小于最小值时的颜色",min:"最小值的颜色",max:"最大值的颜色",gt_max:"大于最大值时的颜色",follow_visual_map:"颜色跟随渐变规则"}},number_or_dynamic_value:{type:{static:"具体值",dynamic:"动态值"},dynamic:{setup:"设置",setup_title:"设置动态值",guide:"由函数确定动态值"}},orientation:{label:"朝向",horizontal:"水平",vertical:"垂直"},symbol_size:{label:"标记点大小",static:"固定值",dynamic:"动态值",setup:{label:"设置",title:"设置动态值",description:"由函数确定动态值"}},series:{label:"系列",name:"名称",y_axis:"Y轴",data_field:"数据字段",add:"增加一个系列",delete:"删除这个系列",line:{label:"线",line_settings:"线段设置",line_style:"线条样式",type:{label:"类型",solid:"实线",dashed:"方虚线",dotted:"圆点虚线"},line_width:"线宽",step:{label:"阶梯状",off:"不启用",start:"在当前点拐弯",middle:"在当前点与下个点中间拐弯",end:"在下个点拐弯"},smooth_line:"平滑曲线",show_name_on_line:"显示标签文案",show_symbol_on_line:"显示标记点",area_style:{label:"区域填充样式",enabled:"启用区域填充",color:"填充颜色",use_series_color:"沿用系列本色",origin:{label:"图形区域的起始位置",auto:{label:"自动",description:"填充坐标轴线到数据间的区域(默认)"},start:{label:"自下而上",description:"填充坐标轴底部到数据间的区域"},end:{label:"自上而下",description:"填充坐标轴顶部到数据间的区域"}},shadow_blur:"图形阴影的模糊大小",shadow_color:"图形阴影的颜色",shadow_offset_x:"阴影水平方向上的偏移距离",shadow_offset_y:"阴影垂直方向上的偏移距离",opacity:"图形透明度"}},bar:{label:"柱",stack:"堆放",stack_hint:"此值相同的柱系列会堆叠在一起",bar_gap:{label:"柱间隔",no_gap:"柱子之间无间隔",overlap:"柱子可互相重叠"},bar_width:{min:"最小柱宽",exact:"柱宽",max:"最大柱宽"}},scatter:{label:"散点"},group_by:{label:"按此字段拆分为多个系列",label_line:"按此字段拆分为多条线"}},axis:{tick_label:"刻度文案",customize_label:"自定义文案",overflow:{label:"溢出",max_width:"最大宽度",truncate:"截断",break_line:"换行",break_word:"断词换行",ellipsis:"省略符",section_title:{on_axis:"轴刻度上文案的溢出",in_tooltip:"提示框中的文案溢出"}},section_title:{label_format:"文案格式"},type:{value:"数值轴",category:"类目轴",time:"时间轴",log:"对数轴",click_to_learn_more:"点击 <1>这里</1> 以进一步了解这些选项"}},name_text:{align:{label:"名称贴靠侧",left:"左",center:"中",right:"右"}},rotate:"旋转",degree:"度",padding:"内间距",content_template:{label:"内容模板",hint:"均值: ${avg}"},x_axis:{label:"X轴",labels:"X轴",label_format:"刻度文案格式",add:"增加一条X轴",delete:"删除这条X轴",x_axis_name:"X轴名称",x_axis_data_field:"X轴数据字段",x_axis_type:"X轴类型",layout:"布局",position:{label:"位置",top:"上",bottom:"下"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见"},y_axis:{label:"Y轴",labels:"Y轴",label_format:"刻度文案格式",add:"增加一条Y轴",delete:"删除这条Y轴",y_axis_name:"Y轴名称",y_axis_name_anchor:"名称贴靠侧",y_axis_data_field:"Y轴数据字段",inverse:"反向坐标轴",layout:"布局",position:{label:"位置",left:"左",right:"右"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见",mirror:{label:"上下镜像"}},stats:{label:"统计内容",template:{above_chart:"统计内容(图表上方)",under_chart:"统计内容(图表下方)"}},legend:{label:"图例",show_legend:"显示图例",show_in_legend:"显示在图例中",hide_in_legend:"不显示在图例中",orientation:{label:"布局朝向",horizontal:"横向",vertical:"纵向"}},tooltip:{label:"提示框",additional_metrics:{description:"在此设置更多指标,来展示在散点的提示框",add:"增加一个指标",delete:"删除这个指标"},trigger:{label:"触发者",scatter_point:"散点",x_axis:"X轴"}},style:{label:"样式"},color:{label:"颜色",background_color:"背景色",text_color:"文字颜色",click_to_add_a_color:"点击增加一个颜色",color_gradient:"颜色渐变",not_set:"未设置"},behavior:{label:"表现",invisible:"隐藏不可见"},heatmap:{heatblock:{label:"热力块",show_label:"展示值文案"}},reference_line:{label:"参考线",labels:"参考线",add:"增加一条参考线",name_placeholder:"均值参考线",delete:"删除这条参考线",orientation:{vertical_hint:"仅当X轴值为数字时可绘制"}},regression_line:{label:"回归线",labels:"回归线",add:"增加一条回归线",delete:"删除这条回归线",method:{label:"方法",linear:"线性回归",exponential:"指数回归",logistic:"逻辑回归",polynomial:"多项式回归",polynomial_order:"次"}},reference_area:{label:"参考区域",labels:"参考区域",add:"增加一面参考区域",delete:"删除这面参考区域",type:{label:"形状",rectangle:"矩形"},direction:{label:"方向",horizontal:"水平"},boundary:{upper:"上边界",lower:"下边界"},content:{label:"内容",content_text:"内容文字",text_position:"文字位置"},endpoint:{labels:"端点",left_bottom_point:"左下点",right_top_point:"右上点"}},zooming:{label:"缩放",scroll:{label:"滚轮缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用"},slider:{label:"滚动条缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用",y_axis_disabled:"暂不可用,会与Y轴刻度文字重叠"}}},viz:{viz_config_banner:"可视化参数配置"},validation:{number:{require_a_number:"请填写一个数字"}},spotlight:{trigger_text:"搜索",main_group:"主要项",placeholder:"打开…",not_found:"无匹配项"}}};class on{constructor(t){V(this,"rootRef");this.rootRef=F.observable({current:t})}async deleteItem(t){F.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?F.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(b.isObject(r))F.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else F.runInAction(()=>{b.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return F.reaction(()=>this.getValueFromRoot(t),(o,l)=>{r(o,l)},{requiresObservable:!0,fireImmediately:b.get(a,"fireImmediately",!1)})}}class Vu{constructor(){V(this,"channels",new Map);V(this,"globalChannel",new fs)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new fs;return this.channels.set(t,a),a}}class Pu{constructor(t){V(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const a={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Vu,instanceData:new on(t.viz.conf)};return this.instances.set(t.id,a),a}}function qs(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new on({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const $u=e=>{const{panel:t,measure:r,vizManager:a,data:o,variables:l}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...qs(c,o,a,l),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...b.omit(e,["panel","vizManager","data"])})},Au=e=>{const{vizManager:t,panel:r,data:a,variables:o}=e,l=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...qs(i,a,t,o)},d=l.configRender;return n.jsx(d,{context:c,instance:i,...b.omit(e,["panel","vizManager","data"])})},Ls=(e,t)=>{const r=Ne.bezier(e),a=Ne.bezier(t);return function(o){return o<50?r(o*2/100).hex():a((o-50)*2/100).hex()}},ln=e=>{const t=Ne.bezier(e);return function(r){return t(r/100).hex()}},Eu={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Ls(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Bu={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Ls(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},qu={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:ln(["#fff7f1","darkred"]),name:"red",category:"sequential"},Lu={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:ln(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ou={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:ln(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Nu={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:ln(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Gu{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(o=>o.manifest.panelAddon).filter(o=>!!o).map(o=>h.createElement(o.addonRender,{...t,key:o.name}));return n.jsx(n.Fragment,{children:a})}}const Os=h.createContext({addonSlotId:null});function Ns({children:e}){const t=`panel-addon-slot-${h.useId()}`;return n.jsxs(Os.Provider,{value:{addonSlotId:t},children:[n.jsx("div",{style:{position:"static",top:0,left:0},id:t}),e]})}function Fu(){const{addonSlotId:e}=h.useContext(Os);return e?document.getElementById(e):null}class Qu{constructor(t){V(this,"symbol");this.symbol=Symbol(t)}}function He(e){return new Qu(e)}class Un{constructor(){V(this,"parent");V(this,"factoryRegistry",new Map);V(this,"instanceRegistry",new Map)}createScoped(){const t=new Un;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const r=this.factoryRegistry.get(t.symbol);if(r){const a=r(this);return this.instanceRegistry.set(t.symbol,a),a}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=b.get(t,"dispose");b.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Gs="14.53.3",ju=Object.freeze(Object.defineProperty({__proto__:null,version:Gs},Symbol.toStringTag,{value:"Module"}));class Wu{constructor(t){V(this,"staticColors",new Map);V(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(a=>{this.register(a)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(r,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Uu{constructor(){V(this,"plugins",new Map);V(this,"vizComponents",new Map);V(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Ku{constructor(){V(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,a){var i;if(t.from===t.to)return r;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const o=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),l=b.orderBy(o,"version","asc");if(((i=b.last(l))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return l.reduce((c,d)=>d.handler(c,a),r)}}class H extends Ku{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,o)=>({version:t,...r(a,o)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),o=b.get(a,"version",0),l=this.run({from:o,to:this.VERSION},a,{panelModel:r});await t.setItem(null,l)}async needMigration({configData:t}){const r=await t.getItem(null);return b.get(r,"version",0)<this.VERSION}}const q=(e,t)=>{const[r,{setFalse:a}]=O.useBoolean(!0),[o,l]=h.useState();h.useEffect(()=>(e.getItem(t).then(c=>{l(c),a()}),e.watchItem(t,c=>{l(c)})));const i=h.useCallback(async c=>{await e.setItem(t,c),l(c)},[e,t]);return{loading:r,value:o,set:i}},Fs=h.createContext(null),Kn=Fs.Provider;function jt(){const e=h.useContext(Fs);if(!e)throw new Error("Please use DashboardModelContextProvider");return e}const j=()=>jt(),Qs=()=>jt(),js=h.createContext({}),Yn=js.Provider;function Ws(){return h.useContext(js)}const Xn=h.createContext(null),Zn=Xn.Provider;function Jn(){const e=h.useContext(Xn);if(!e)throw new Error("Please use ContentModelContextProvider");return e}const G=()=>Jn(),Yu={inEditMode:!1},It=h.createContext(Yu),Us=h.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{},getEchartsOptions:()=>null,setEchartsOptions:()=>{}}),Hn=Us.Provider;function Rn(){const e=h.useContext(Us);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const re=()=>Rn(),ae=()=>Rn();function Ks(){try{return Rn(),!0}catch{return!1}}const Ys=()=>Ks(),Xs=()=>Ks(),Xu={fullScreenPanelID:"",setFullScreenPanelID:b.noop},er=h.createContext(Xu);function Zs(){const e=h.useContext(er);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const Zu={en:"en",zh:"zh-cn"};function tr({children:e}){const{i18n:t}=m.useTranslation(),r=h.useMemo(()=>{const a=t.language;return Zu[a]??"en"},[t.language]);return n.jsx(wt.DatesProvider,{settings:{locale:r,firstDayOfWeek:1},children:e})}const J=()=>Jn(),Ju={items:[]},nr=h.createContext(Ju),rr=nr.Provider;function ar(){return h.useContext(nr)}h.forwardRef(function({value:t,onChange:r,...a},o){return n.jsx(s.TextInput,{ref:o,value:t,onChange:r,...a})});class Hu{constructor({valueRange:t,colorRange:r}){V(this,"mapper");this.mapper=ut.interpolate(t,r)}getColor(t){return this.mapper(t)}}function Ru(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{const r=Number(t);if(Number.isNaN(r))throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}, parsed: ${r}`);return new Hu(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const ep=Ru;function $(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function Js(e){return!!e&&!!e.columnKey&&!!e.queryID}function tp(e){return e.includes(".")?$(e):{queryID:"",columnKey:e}}function me(e,t){var o;const{queryID:r,columnKey:a}=$(t);return r?a?((o=e[r])==null?void 0:o.map(l=>l[a]))??[]:e[r]:[]}function cn(e,t){const{queryID:r}=$(t);return r?e[r]:[]}function np(e){return Object.values(e)[0]}function dn(e,t){const{queryID:r,columnKey:a}=$(t);return e[a]}const Qe={CryptoJS:ys,d3Array:Bs,dayjs:M,lodash:b,numbro:Ae,mathjs:Fe,faker:qd.faker,popmotion:ku},rp=[{name:"CryptoJS",url:"https://github.com/brix/crypto-js",version:"4.1.1"},{name:"d3Array",url:"https://github.com/d3/d3-array",version:"3.2.4"},{name:"dayjs",url:"https://day.js.org/",version:"1.11.6"},{name:"lodash",url:"https://lodash.com/docs/4.17.15",version:"4.17.21"},{name:"mathjs",url:"https://mathjs.org/",version:"11.12.0"},{name:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"faker",url:"https://fakerjs.dev/",version:"7.6.0"},{name:"popmotion",url:"https://popmotion.io/",version:"11.0.3"}],ap=e=>`
9
+ 我的卡片变量: {{ your_var }}`,tabs:{guide:"使用指南",vars:"看板信息与卡片的变量"}}}},style:{label:"样式",font_size:{label:"字号",placeholder:"10px, 1em, 1rem, 100%..."},font_weight:{label:"字重"},size:{xs:"特小",sm:"小",md:"中",lg:"大",xl:"特大"},flex:{justify_content:{label:"内容分布",left:"从左起",center:"居中",right:"从右起",space_between:"均匀分布,首尾顶格",space_around:"均匀分布,首尾留空一半",space_evenly:"均匀分布,首尾留空"},align_items:{label:"对齐位置",start:"起点对齐",center:"居中对齐",end:"末端对齐",stretch:"拉伸对齐"}},color:{type:{label:"颜色类型",static:"单色",interpolation:"插值取色",none:"无"},interpolation:{setup:"设置取色方案",palette:{label:"色板",category:{sequential:"单色渐变",diverging:"双色渐变"},red_green:"红 / 绿",yellow_blue:"黄 / 蓝",red:"红",green:"绿",blue:"蓝",orange:"橙",mapping:{value_input_label:"映射一个值到此颜色"}}}}},query:{label:"查询",labels:"查询",add:"新增查询",delete:"删除这个查询",cant_delete:"此查询在使用中,不能删除。请查看“使用情况”标签页以了解详情",delete_unused:"删除未用到的查询",name:"名称",name_description:"唯一名称",manage:"管理查询",open:"打开此查询",configurations:"配置",basics:"基本信息",conditions:"条件",run_by_condition:{label:"以下条件为真时,才运行本查询",description:"为假的情况: 空数组 / NaN / false / 空字符串 / undefined / null",unset:"留空则在看板加载时便运行本查询"},re_run_condition:{label:"当以下条件改变时,重新运行此查询",unset:"留空则永不重新运行此查询"},dependency:{label:"依赖",has_none:"此查询无依赖"},edit_sql:"编辑SQL",preview_sql:"预览SQL",request:"请求",build_request:"构造请求",process_request:"加工请求",process_result:"加工结果",usage:{label:"使用情况",in_views:"所在视图",unused_description:"此查询未被任何筛选器或卡片用到"},transform:{label:"查询变形",full_label:"查询变形",data_source:"基于其他查询的数据,加工出新数据",guide:{pick_queries:"选择一至多个查询作为数据输入",write_function:"编写函数,返回新数据"}}},data:{label:"数据",preview_data:"预览数据",empty_data:"无数据",requires_data:"请先关联查询",data_field:{selector:{options:{unset:"未设置",default:"默认"}}}},data_source:{label:"数据源",explore:"查看数据源",explorer:"数据源查看器",table_structure:"数据表结构",table_structure_short:"表结构",see_table_structure:"查看数据表结构"},visualization:{label:"可视化",component:"可视化组件",label_short:"可视化"},numbro:{format:{label:"格式",absolute:"绝对值",absolute_description:"非负",abbreviation:"缩写",abbreviation_description:"如1.23k、1.23m",mantissa:"小数",trim_mantissa:"抹零",trim_mantissa_description:"省略末尾的零",preview:{open:"展开预览",close:"收起预览",input:"输入",output:"输出"}}},import:{label:"导入...",title:"自描述文件导入看板内容",json_file:"描述文件(JSON格式)",this_dashboard:"此看板",this_file:"此文件"},function_utils:{trigger_text:"关于utils参数",modal_title:"关于utils参数",description:"参数 <code>utils</code> 是 <code>FunctionUtils</code>,包含以下内容:",document:"文档"},aggregation:{option:{none:"无",sum:"和",mean:"平均值",median:"中位数",min:"最小值",max:"最大值",cov:"变异系数",std:"标准差",quantile:{label:"分位",label_with_hint:"分位(99%, 95%, ...)"},custom:{label:"自定义",label_trigger:"编写函数",title:"自定义聚合方式"},pick_record:{label:"直接选择数据",method:{label:"数据记录",first:"第一条",last:"最后一条"}}}},rich_text:{label:"富文本",content:{label:"内容"},dynamic_color:{label:"动态颜色",edit:"编辑动态颜色",clear:"清除动态颜色"},color_mapping:{label:"颜色映射",edit:"编辑颜色映射",clear:"清除颜色映射",choose_value_var:"选择用于映射颜色的变量",min:{val:"固定最小值",var:"动态最小值(优先)"},max:{val:"固定最大值",var:"动态最大值(优先)"}}},chart:{chart_config:"图表设置",data_field:"数据字段",groups:{merico_suite:"思码逸套件",echarts_based_charts:"基于ECharts的图表",others:"其他"},unit:{title:"单位",text:{placeholder:"单位文案"},show_in_tooltip:"在提示框中显示单位",show_in_legend:"在图例中显示单位"},series_order:{label:"排序依据",name:"名称",value:"值",raw:"不排序,保持数据本身的顺序",asc:"升序",desc:"降序"},label:{label:"文案",label_full:"标签文案",label_style:"标签文案样式",label_format:"标签文案格式"},label_position:{label:"文案位置",off:"不显示文案",top:"上",left:"左",right:"右",bottom:"下",inside:"内",inside_top:"内-上",inside_left:"内-左",inside_center:"内-中",inside_right:"内-右",inside_bottom:"内-下",inside_top_left:"内-上-左",inside_top_right:"内-上-右",inside_bottom_left:"内-下-左",inside_bottom_right:"内-下-右",outside:"外"},visual_map:{label:"视觉映射",continuous:{label:"连续型"},piecewise:{label:"分段型",mode:{pieces:"连续数据",categories:"离散数据"},add_a_piece:"加一个分段",interval:"值区间",piece_label:"文案"},bar_width:"长条的宽度",bar_height:"长条的高度",item_width:"小块的宽度",item_height:"小块的高度",calculable:"显示拖拽手柄",min_value:"最小值",max_value:"最大值",min_text:"最小值文案",max_text:"最大值文案",use_palette_x:'使用配色方案"{{x}}"',built_in_palettes:"内置配色方案",precision:"数据精度",skip_range:{lt_min:"小于最小值时的颜色",min:"最小值的颜色",max:"最大值的颜色",gt_max:"大于最大值时的颜色",follow_visual_map:"颜色跟随渐变规则"}},number_or_dynamic_value:{type:{static:"具体值",dynamic:"动态值"},dynamic:{setup:"设置",setup_title:"设置动态值",guide:"由函数确定动态值"}},orientation:{label:"朝向",horizontal:"水平",vertical:"垂直"},symbol_size:{label:"标记点大小",static:"固定值",dynamic:"动态值",setup:{label:"设置",title:"设置动态值",description:"由函数确定动态值"}},series:{label:"系列",name:"名称",y_axis:"Y轴",data_field:"数据字段",add:"增加一个系列",delete:"删除这个系列",line:{label:"线",line_settings:"线段设置",line_style:"线条样式",type:{label:"类型",solid:"实线",dashed:"方虚线",dotted:"圆点虚线"},line_width:"线宽",step:{label:"阶梯状",off:"不启用",start:"在当前点拐弯",middle:"在当前点与下个点中间拐弯",end:"在下个点拐弯"},smooth_line:"平滑曲线",show_name_on_line:"显示标签文案",show_symbol_on_line:"显示标记点",area_style:{label:"区域填充样式",enabled:"启用区域填充",color:"填充颜色",use_series_color:"沿用系列本色",origin:{label:"图形区域的起始位置",auto:{label:"自动",description:"填充坐标轴线到数据间的区域(默认)"},start:{label:"自下而上",description:"填充坐标轴底部到数据间的区域"},end:{label:"自上而下",description:"填充坐标轴顶部到数据间的区域"}},shadow_blur:"图形阴影的模糊大小",shadow_color:"图形阴影的颜色",shadow_offset_x:"阴影水平方向上的偏移距离",shadow_offset_y:"阴影垂直方向上的偏移距离",opacity:"图形透明度"}},bar:{label:"柱",stack:"堆放",stack_hint:"此值相同的柱系列会堆叠在一起",bar_gap:{label:"柱间隔",no_gap:"柱子之间无间隔",overlap:"柱子可互相重叠"},bar_width:{min:"最小柱宽",exact:"柱宽",max:"最大柱宽"}},scatter:{label:"散点"},group_by:{label:"按此字段拆分为多个系列",label_line:"按此字段拆分为多条线"}},axis:{tick_label:"刻度文案",customize_label:"自定义文案",overflow:{label:"溢出",max_width:"最大宽度",truncate:"截断",break_line:"换行",break_word:"断词换行",ellipsis:"省略符",section_title:{on_axis:"轴刻度上文案的溢出",in_tooltip:"提示框中的文案溢出"}},section_title:{label_format:"文案格式"},type:{value:"数值轴",category:"类目轴",time:"时间轴",log:"对数轴",click_to_learn_more:"点击 <1>这里</1> 以进一步了解这些选项"}},name_text:{align:{label:"名称贴靠侧",left:"左",center:"中",right:"右"}},rotate:"旋转",degree:"度",padding:"内间距",content_template:{label:"内容模板",hint:"均值: ${avg}"},x_axis:{label:"X轴",labels:"X轴",label_format:"刻度文案格式",add:"增加一条X轴",delete:"删除这条X轴",x_axis_name:"X轴名称",x_axis_data_field:"X轴数据字段",x_axis_type:"X轴类型",layout:"布局",position:{label:"位置",top:"上",bottom:"下"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见"},y_axis:{label:"Y轴",labels:"Y轴",label_format:"刻度文案格式",add:"增加一条Y轴",delete:"删除这条Y轴",y_axis_name:"Y轴名称",y_axis_name_anchor:"名称贴靠侧",y_axis_data_field:"Y轴数据字段",inverse:"反向坐标轴",layout:"布局",position:{label:"位置",left:"左",right:"右"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见",mirror:{label:"上下镜像"}},stats:{label:"统计内容",template:{above_chart:"统计内容(图表上方)",under_chart:"统计内容(图表下方)"}},legend:{label:"图例",show_legend:"显示图例",show_in_legend:"显示在图例中",hide_in_legend:"不显示在图例中",orientation:{label:"布局朝向",horizontal:"横向",vertical:"纵向"}},tooltip:{label:"提示框",additional_metrics:{description:"在此设置更多指标,来展示在散点的提示框",add:"增加一个指标",delete:"删除这个指标"},trigger:{label:"触发者",scatter_point:"散点",x_axis:"X轴"}},style:{label:"样式"},color:{label:"颜色",background_color:"背景色",text_color:"文字颜色",click_to_add_a_color:"点击增加一个颜色",color_gradient:"颜色渐变",not_set:"未设置"},behavior:{label:"表现",invisible:"隐藏不可见"},heatmap:{heatblock:{label:"热力块",show_label:"展示值文案"}},reference_line:{label:"参考线",labels:"参考线",add:"增加一条参考线",name_placeholder:"均值参考线",delete:"删除这条参考线",orientation:{vertical_hint:"仅当X轴值为数字时可绘制"}},regression_line:{label:"回归线",labels:"回归线",add:"增加一条回归线",delete:"删除这条回归线",method:{label:"方法",linear:"线性回归",exponential:"指数回归",logistic:"逻辑回归",polynomial:"多项式回归",polynomial_order:"次"}},reference_area:{label:"参考区域",labels:"参考区域",add:"增加一面参考区域",delete:"删除这面参考区域",type:{label:"形状",rectangle:"矩形"},direction:{label:"方向",horizontal:"水平"},boundary:{upper:"上边界",lower:"下边界"},content:{label:"内容",content_text:"内容文字",text_position:"文字位置"},endpoint:{labels:"端点",left_bottom_point:"左下点",right_top_point:"右上点"}},zooming:{label:"缩放",scroll:{label:"滚轮缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用"},slider:{label:"滚动条缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用",y_axis_disabled:"暂不可用,会与Y轴刻度文字重叠"}}},viz:{viz_config_banner:"可视化参数配置"},validation:{number:{require_a_number:"请填写一个数字"}},spotlight:{trigger_text:"搜索",main_group:"主要项",placeholder:"打开…",not_found:"无匹配项"}}};class on{constructor(t){V(this,"rootRef");this.rootRef=F.observable({current:t})}async deleteItem(t){F.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?F.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(b.isObject(r))F.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else F.runInAction(()=>{b.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return F.reaction(()=>this.getValueFromRoot(t),(o,l)=>{r(o,l)},{requiresObservable:!0,fireImmediately:b.get(a,"fireImmediately",!1)})}}class Vu{constructor(){V(this,"channels",new Map);V(this,"globalChannel",new fs)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new fs;return this.channels.set(t,a),a}}class Pu{constructor(t){V(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const a={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Vu,instanceData:new on(t.viz.conf)};return this.instances.set(t.id,a),a}}function qs(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new on({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const $u=e=>{const{panel:t,measure:r,vizManager:a,data:o,variables:l}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...qs(c,o,a,l),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...b.omit(e,["panel","vizManager","data"])})},Au=e=>{const{vizManager:t,panel:r,data:a,variables:o}=e,l=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...qs(i,a,t,o)},d=l.configRender;return n.jsx(d,{context:c,instance:i,...b.omit(e,["panel","vizManager","data"])})},Ls=(e,t)=>{const r=Ne.bezier(e),a=Ne.bezier(t);return function(o){return o<50?r(o*2/100).hex():a((o-50)*2/100).hex()}},ln=e=>{const t=Ne.bezier(e);return function(r){return t(r/100).hex()}},Eu={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Ls(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Bu={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Ls(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},qu={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:ln(["#fff7f1","darkred"]),name:"red",category:"sequential"},Lu={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:ln(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ou={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:ln(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Nu={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:ln(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Gu{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(o=>o.manifest.panelAddon).filter(o=>!!o).map(o=>h.createElement(o.addonRender,{...t,key:o.name}));return n.jsx(n.Fragment,{children:a})}}const Os=h.createContext({addonSlotId:null});function Ns({children:e}){const t=`panel-addon-slot-${h.useId()}`;return n.jsxs(Os.Provider,{value:{addonSlotId:t},children:[n.jsx("div",{style:{position:"static",top:0,left:0},id:t}),e]})}function Fu(){const{addonSlotId:e}=h.useContext(Os);return e?document.getElementById(e):null}class Qu{constructor(t){V(this,"symbol");this.symbol=Symbol(t)}}function He(e){return new Qu(e)}class Un{constructor(){V(this,"parent");V(this,"factoryRegistry",new Map);V(this,"instanceRegistry",new Map)}createScoped(){const t=new Un;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const r=this.factoryRegistry.get(t.symbol);if(r){const a=r(this);return this.instanceRegistry.set(t.symbol,a),a}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=b.get(t,"dispose");b.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Gs="14.53.4",ju=Object.freeze(Object.defineProperty({__proto__:null,version:Gs},Symbol.toStringTag,{value:"Module"}));class Wu{constructor(t){V(this,"staticColors",new Map);V(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(a=>{this.register(a)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(r,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Uu{constructor(){V(this,"plugins",new Map);V(this,"vizComponents",new Map);V(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Ku{constructor(){V(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,a){var i;if(t.from===t.to)return r;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const o=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),l=b.orderBy(o,"version","asc");if(((i=b.last(l))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return l.reduce((c,d)=>d.handler(c,a),r)}}class H extends Ku{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,o)=>({version:t,...r(a,o)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),o=b.get(a,"version",0),l=this.run({from:o,to:this.VERSION},a,{panelModel:r});await t.setItem(null,l)}async needMigration({configData:t}){const r=await t.getItem(null);return b.get(r,"version",0)<this.VERSION}}const q=(e,t)=>{const[r,{setFalse:a}]=O.useBoolean(!0),[o,l]=h.useState();h.useEffect(()=>(e.getItem(t).then(c=>{l(c),a()}),e.watchItem(t,c=>{l(c)})));const i=h.useCallback(async c=>{await e.setItem(t,c),l(c)},[e,t]);return{loading:r,value:o,set:i}},Fs=h.createContext(null),Kn=Fs.Provider;function jt(){const e=h.useContext(Fs);if(!e)throw new Error("Please use DashboardModelContextProvider");return e}const j=()=>jt(),Qs=()=>jt(),js=h.createContext({}),Yn=js.Provider;function Ws(){return h.useContext(js)}const Xn=h.createContext(null),Zn=Xn.Provider;function Jn(){const e=h.useContext(Xn);if(!e)throw new Error("Please use ContentModelContextProvider");return e}const G=()=>Jn(),Yu={inEditMode:!1},It=h.createContext(Yu),Us=h.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{},getEchartsOptions:()=>null,setEchartsOptions:()=>{}}),Hn=Us.Provider;function Rn(){const e=h.useContext(Us);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const re=()=>Rn(),ae=()=>Rn();function Ks(){try{return Rn(),!0}catch{return!1}}const Ys=()=>Ks(),Xs=()=>Ks(),Xu={fullScreenPanelID:"",setFullScreenPanelID:b.noop},er=h.createContext(Xu);function Zs(){const e=h.useContext(er);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const Zu={en:"en",zh:"zh-cn"};function tr({children:e}){const{i18n:t}=m.useTranslation(),r=h.useMemo(()=>{const a=t.language;return Zu[a]??"en"},[t.language]);return n.jsx(wt.DatesProvider,{settings:{locale:r,firstDayOfWeek:1},children:e})}const J=()=>Jn(),Ju={items:[]},nr=h.createContext(Ju),rr=nr.Provider;function ar(){return h.useContext(nr)}h.forwardRef(function({value:t,onChange:r,...a},o){return n.jsx(s.TextInput,{ref:o,value:t,onChange:r,...a})});class Hu{constructor({valueRange:t,colorRange:r}){V(this,"mapper");this.mapper=ut.interpolate(t,r)}getColor(t){return this.mapper(t)}}function Ru(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{const r=Number(t);if(Number.isNaN(r))throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}, parsed: ${r}`);return new Hu(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const ep=Ru;function $(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function Js(e){return!!e&&!!e.columnKey&&!!e.queryID}function tp(e){return e.includes(".")?$(e):{queryID:"",columnKey:e}}function me(e,t){var o;const{queryID:r,columnKey:a}=$(t);return r?a?((o=e[r])==null?void 0:o.map(l=>l[a]))??[]:e[r]:[]}function cn(e,t){const{queryID:r}=$(t);return r?e[r]:[]}function np(e){return Object.values(e)[0]}function dn(e,t){const{queryID:r,columnKey:a}=$(t);return e[a]}const Qe={CryptoJS:ys,d3Array:Bs,dayjs:M,lodash:b,numbro:Ae,mathjs:Fe,faker:qd.faker,popmotion:ku},rp=[{name:"CryptoJS",url:"https://github.com/brix/crypto-js",version:"4.1.1"},{name:"d3Array",url:"https://github.com/d3/d3-array",version:"3.2.4"},{name:"dayjs",url:"https://day.js.org/",version:"1.11.6"},{name:"lodash",url:"https://lodash.com/docs/4.17.15",version:"4.17.21"},{name:"mathjs",url:"https://mathjs.org/",version:"11.12.0"},{name:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"faker",url:"https://fakerjs.dev/",version:"7.6.0"},{name:"popmotion",url:"https://popmotion.io/",version:"11.0.3"}],ap=e=>`
10
10
  <tr>
11
11
  <td><code>${e.name}</code></td>
12
12
  <td>
@@ -116,7 +116,7 @@ Variable: {{ your_var }}`,tabs:{guide:"Guide",vars:"Dashboard state & Panel vari
116
116
  ${o.join("")}
117
117
  </tbody>
118
118
  </table>
119
- `}const Bg=(e,t)=>r=>{const{seriesName:a,value:o}=r;switch(a){case t.Box:return Pg(e,o);case t.Outlier:return Ag(e,o);case t.Scatter:return Eg(e,o)}};function qg({config:e,seriesNames:t}){return X.getTooltip({trigger:"item",formatter:Bg(e,t)})}function yn(e,t){t||(t="none");const r=[];return e.x_axis_scroll&&r.push({type:"inside",xAxisIndex:[0],filterMode:t,minSpan:1}),e.y_axis_scroll&&r.push({type:"inside",yAxisIndex:[0],filterMode:t,minSpan:1}),e.x_axis_slider&&r.push({type:"slider",xAxisIndex:[0],filterMode:t,bottom:"auto",top:0,height:15,moveHandleSize:0,showDataShadow:!1,minSpan:1}),r}function Lg({min:e,max:t}){if(e<=110)return Math.min(0,e);if(e<=200)return 100;const r=Fe.floor(Fe.log10(e)),a=Math.pow(10,r),o=Math.pow(10,r-1);return e/a<=2?b.round(e,-1*(r-1))-o:b.round(e,-1*r)-a}function Og(e){return{Box:e("viz.boxplot.box"),Scatter:e("viz.boxplot.scatter"),Outlier:e("viz.boxplot.outlier")}}function Ng({config:e,data:t,variables:r,t:a}){const{x_axis:o,y_axis:l,reference_lines:i}=e,c=wg(e,t),d=Ue(o.axisLabel.overflow.on_axis),u=Og(a),p=Vg(e,c).map(f=>({...f,name:b.get(u,f.name,f.name)}));return{dataZoom:yn(e.dataZoom,"filter"),grid:xg(e),dataset:c,legend:Cg({config:e,seriesNames:u}),tooltip:qg({config:e,seriesNames:u}),xAxis:[X.getXAxis({type:"category",name:o.name,nameGap:25,nameLocation:"center",nameTextStyle:{align:"center"},axisLabel:{...o.axisLabel,...d,formatter:ze(o.axisLabel.formatter)}})],yAxis:[X.getYAxis({name:l.name,minInterval:1,axisLabel:{formatter:function(f){return Y(f,l.label_formatter)}},min:Lg})],series:[...p,...Sg(i,r,t)]}}function Gg({context:e,instance:t}){const{t:r}=m.useTranslation(),{value:a}=q(e.instanceData,"config"),{variables:o}=e,l=e.data,{width:i,height:c}=e.viewport,d=b.defaults({},a,mr),u=Ve({vizManager:e.vizManager,instance:t}),p=Ie(u.triggerManager,Vo.id),f=kt(l,d.x_axis.data_key),v=h.useCallback(D=>{const z=b.get(f,D.name,{error:"rowData is not found"});p.forEach(I=>{u.runInteraction(I.id,{...D,rowData:z})})},[f,p,u]),_=h.useRef(null),w=h.useCallback(()=>{var z;const D=(z=_.current)==null?void 0:z.getEchartsInstance();D&&fe(t,D.getOption())},[]),x=h.useMemo(()=>({click:v,finished:w}),[v,w]),T=h.useMemo(()=>Ng({config:d,data:l,variables:o,t:r}),[d,l,o,r]);return!a||!i||!c?null:n.jsx(ve,{width:i,height:c,children:n.jsx(he,{echarts:ce,option:T,ref:_,style:Kt(i,c),onEvents:x,notMerge:!0,theme:"merico-light"})})}function se({canSubmit:e,buttonRef:t}){const{t:r}=m.useTranslation();return n.jsxs(s.Group,{justify:"flex-start",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n.jsx(s.Text,{size:"sm",children:r("viz.viz_config_banner")}),n.jsx(s.ActionIcon,{ref:t,type:"submit",mr:5,variant:"filled",color:"blue",disabled:!e,children:n.jsx(S.IconDeviceFloppy,{size:20})})]})}const Dr=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("common.align.horizontal.left"),value:"left"},{label:l("common.align.horizontal.center"),value:"center"},{label:l("common.align.horizontal.right"),value:"right"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("common.align.horizontal.label"),data:c,value:t,onChange:Z(r),sx:a})}),No=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("common.align.vertical.top"),value:"top"},{label:l("common.align.vertical.center"),value:"center"},{label:l("common.align.vertical.bottom"),value:"bottom"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("common.align.vertical.label"),data:c,value:t,onChange:Z(r),sx:a})}),Go=ht.createStyles(()=>({palette:{display:"flex",flexFlow:"row nowrap"},paletteItem:{".palette-value":{height:24,overflow:"visible",width:36},".palette-item":{width:"36px",height:36*.618,cursor:"pointer",transition:"transform 100ms ease-in-out","&:hover":{boxShadow:"0 0 0 2px var(--shadow-color)",borderRadius:2,transform:"scale(1.2)"}}}})),Fg=[{from:0,to:0},{from:100,to:100}];class Qg{constructor(){V(this,"steps",new Map);V(this,"interpolation");V(this,"onChange");F.makeAutoObservable(this,{steps:F.observable},{deep:!1}),F.reaction(()=>F.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(t){for(const r of t)this.steps.set(r.to,r.from)}notifyStepChange(){var t;(t=this.onChange)==null||t.call(this,Array.from(this.steps.entries()).map(([r,a])=>({to:r,from:a})).sort((r,a)=>r.to-a.to||r.from-a.from))}fromProps(t){t.steps.length<2?this.setSteps(Fg):this.setSteps(t.steps),this.interpolation=t.interpolation,this.onChange=t.onChange}changeStep(t,r){t==null?this.steps.delete(r):this.steps.set(r,t)}getStepFromValue(t){return this.steps.get(t)}}function Fo(e){if(typeof e=="number")return String(e)}function jg(e){const{t}=m.useTranslation(),{onChange:r,color:a,index:o,value:l}=e,{classes:i}=Go(),[c,d]=h.useState(Fo(l)),[u,{setTrue:p,setFalse:f}]=O.useBoolean(!1),v=o%2===1,_=v&&l!=null,w=!v&&l!=null,x=`map ${l} to color ${o}`,T=()=>{d(Fo(l)),f()},D=()=>{f(),r==null||r(Number(c))},z=()=>{f(),r==null||r(null)},I=Y(l??null,{output:"number",mantissa:10,trimMantissa:!0,average:!0,absolute:!1}),E=!c||Number.isNaN(Number(c));return n.jsxs("div",{"data-testid":`palette-item-${o}`,className:i.paletteItem,children:[n.jsx(s.Text,{title:x,style:{opacity:_?1:0},c:"dimmed",size:"sm",className:"palette-value--up palette-value",children:I}),n.jsxs(s.Popover,{width:240,trapFocus:!0,opened:u,onClose:f,zIndex:340,withinPortal:!0,children:[n.jsx(s.Popover.Target,{children:n.jsx("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:p,style:{"--shadow-color":Ne(a).alpha(.5).hex(),backgroundColor:a}})}),n.jsxs(s.Popover.Dropdown,{children:[n.jsx(s.Tooltip,{withinPortal:!0,zIndex:340,label:t("common.actions.close"),children:n.jsx(s.CloseButton,{"data-testid":"palette-item-cancel",size:"sm",color:"gray",onClick:T,style:{position:"absolute",top:"0.5em",right:"0.8em"}})}),n.jsxs(s.Stack,{children:[n.jsx(s.TextInput,{size:"xs",label:t("style.color.interpolation.palette.mapping.value_input_label"),value:c,onChange:A=>{const U=A.currentTarget.value;d(U)},error:c&&E}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{variant:"light",color:"red",size:"xs",onClick:z,leftSection:n.jsx(S.IconTrash,{size:16}),children:t("common.actions.delete")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(S.IconDeviceFloppy,{size:16}),"data-testid":"palette-item-ok",size:"xs",onClick:D,disabled:E,children:t("common.actions.save")})]})]})]})]}),n.jsx(s.Text,{title:x,style:{opacity:w?1:0},c:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:I})]})}const Wg=k.observer(({model:e})=>{const{classes:t}=Go(),r=b.range(0,13,1).map(a=>100/12*a).map(a=>[e.interpolation.getColor(a),a]);return n.jsx("div",{className:t.palette,children:r.map(([a,o],l)=>n.jsx(jg,{index:l,color:a,value:e.getStepFromValue(o),onChange:i=>e.changeStep(i,o)},a))})}),Ug=k.observer(function(t){const r=O.useCreation(()=>new Qg,[]);return h.useEffect(()=>{r.fromProps(t)}),r.interpolation==null?null:n.jsx(Wg,{model:r})}),Kg=e=>{const{t,i18n:r}=m.useTranslation(),{value:a,onChange:o,colorManager:l}=e,i=l.getColorInterpolations(),[c,d]=h.useState(a),u=l.decodeInterpolation(c.interpolation)||i[0],[p,{setTrue:f,setFalse:v}]=O.useBoolean(),_=h.useMemo(()=>{const z=b.groupBy(i,"category");return Object.entries(z).map(([I,E])=>({group:t(`style.color.interpolation.palette.category.${I}`),items:E.map(A=>({label:t(A.displayName),value:l.encodeColor(A)}))}))},[r.language]);function w(z){z&&d(I=>({...I,interpolation:z}))}const x=()=>{v(),o==null||o(F.toJS(c))};function T(z){d(I=>({...I,steps:z}))}const D=()=>{v(),d(a)};return n.jsxs(n.Fragment,{children:[n.jsx(s.Button,{variant:"outline",onClick:f,children:t(u==null?void 0:u.displayName)}),n.jsx(s.Modal,{size:508,title:t("style.color.interpolation.setup"),opened:p,onClose:v,zIndex:320,children:p&&n.jsxs(s.Stack,{"data-testid":"color-interpolation-modal",children:[n.jsx(s.Select,{label:t("style.color.interpolation.palette.label"),value:c.interpolation,data:_,onChange:w,comboboxProps:{withinPortal:!0,zIndex:340},maxDropdownHeight:500}),n.jsx(Ug,{steps:c.steps,interpolation:u,onChange:T}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{onClick:D,variant:"subtle",children:t("common.actions.cancel")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(S.IconDeviceFloppy,{size:16}),onClick:x,children:t("common.actions.save")})]})]})})]})},Yg=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("style.color.type.static"),value:"static"},{label:l("style.color.type.interpolation"),value:"interpolation"},{label:l("style.color.type.none"),value:"none"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("style.color.type.label"),data:c,value:t,onChange:Z(r),sx:a})}),Xg=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("style.flex.justify_content.left"),value:"left"},{label:l("style.flex.justify_content.center"),value:"center"},{label:l("style.flex.justify_content.right"),value:"right"},{label:l("style.flex.justify_content.space_between"),value:"space-between"},{label:l("style.flex.justify_content.space_around"),value:"space-around"},{label:l("style.flex.justify_content.space_evenly"),value:"space-evenly"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("style.flex.justify_content.label"),data:c,value:t,onChange:Z(r),sx:a})}),Zg=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("style.flex.align_items.start"),value:"start"},{label:l("style.flex.align_items.center"),value:"center"},{label:l("style.flex.align_items.end"),value:"end"},{label:l("style.flex.align_items.stretch"),value:"stretch"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("style.flex.align_items.label"),data:c,value:t,onChange:Z(r),sx:a})}),Jg=({value:e,index:t,children:r})=>{const[a,{setTrue:o,setFalse:l}]=O.useBoolean(!1),{ref:i,handleRef:c}=rn.useSortable({id:e,index:t});return n.jsx(s.Tabs.Tab,{ref:i,value:e,leftSection:n.jsx(S.IconGripHorizontal,{size:14,color:a||t===0?"rgb(34, 139, 230)":"transparent"}),onMouseEnter:o,onMouseLeave:l,children:r})},Hg=({fieldArray:e,add:t,addButtonText:r,renderTabName:a,controlledFields:o})=>{const l=i=>{const{source:c,target:d}=i.operation,u=o.findIndex(f=>f.id===c.id),p=d.index;e.move(u,p)};return n.jsxs(s.Tabs.List,{children:[n.jsx(nn.DragDropProvider,{onDragEnd:l,children:o.map((i,c)=>n.jsx(Jg,{value:i.id,index:c,children:a(i,c)},i.id))}),n.jsx(s.Tabs.Tab,{onClick:t,value:"add",children:n.jsx(s.Tooltip,{label:r,children:n.jsx(s.Center,{children:n.jsx(S.IconPlus,{size:18,color:"#228be6"})})})})]})},Rg={tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},R=({control:e,watch:t,name:r,getItem:a,children:o,addButtonText:l,deleteButtonText:i,renderTabName:c,deleteDisalbed:d})=>{var E;const u=y.useFieldArray({control:e,name:r}),{fields:p,append:f,remove:v}=u,_=t(r),w=p.map((A,U)=>({...A,..._[U]})),x=((E=b.last(w))==null?void 0:E.id)??null,[T,D]=h.useState(x),z=A=>{A!=="add"&&D(A)};h.useEffect(()=>{D(A=>x===A?A:x)},[x]);const I=()=>{const A=a();u.append(A),D(A.id)};return n.jsxs(s.Tabs,{value:T,onChange:z,styles:Rg,children:[n.jsx(Hg,{fieldArray:u,add:I,addButtonText:l,renderTabName:c,controlledFields:w}),w.map((A,U)=>n.jsx(s.Tabs.Panel,{value:A.id,children:n.jsxs(s.Stack,{children:[o({field:A,index:U}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed"}),n.jsx(s.Button,{leftSection:n.jsx(S.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>v(U),sx:{top:15,right:5},disabled:d==null?void 0:d({field:A,index:U,fields:w}),children:i})]})},A.id))]})},vn=h.forwardRef(({value:e,onChange:t},r)=>{const{t:a}=m.useTranslation(),o=l=>i=>{t({...e,[l]:i})};return n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{variant:"dashed",label:a("chart.zooming.scroll.label"),labelPosition:"center"}),n.jsxs(s.Group,{children:[n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.scroll.x_axis"),checked:e.x_axis_scroll,onChange:l=>o("x_axis_scroll")(l.currentTarget.checked)})}),n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.scroll.y_axis"),checked:e.y_axis_scroll,onChange:l=>o("y_axis_scroll")(l.currentTarget.checked)})})]}),n.jsx(s.Divider,{variant:"dashed",label:a("chart.zooming.slider.label"),labelPosition:"center"}),n.jsxs(s.Group,{children:[n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.slider.x_axis"),checked:e.x_axis_slider,onChange:l=>o("x_axis_slider")(l.currentTarget.checked)})}),n.jsx(s.Tooltip,{label:a("chart.zooming.slider.y_axis_disabled"),children:n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.slider.y_axis"),disabled:!e.y_axis_slider,checked:e.y_axis_slider,onChange:l=>o("y_axis_slider")(l.currentTarget.checked)})})})]})]})}),bt=h.forwardRef(({label:e,value:t,onChange:r,sx:a={},disabled:o},l)=>{const{t:i,i18n:c}=m.useTranslation(),d=h.useMemo(()=>[{label:i("chart.orientation.horizontal"),value:"horizontal"},{label:i("chart.orientation.vertical"),value:"vertical"}],[c.language]);return n.jsx(s.Select,{ref:l,label:e??i("chart.orientation.label"),data:d,value:t,onChange:Z(r),sx:a,disabled:o})}),ef=({control:e,watch:t})=>{const{t:r}=m.useTranslation(),a=t("legend"),o=(l,i)=>{const c={...a,orient:l};l==="horizontal"?(c.top="0",c.left="auto",c.right="10",c.bottom="auto"):(c.top="10",c.left="auto",c.right="0",c.bottom="auto"),i(c)};return n.jsxs(s.Stack,{children:[n.jsx(s.Group,{grow:!0,wrap:"nowrap",mt:20,children:n.jsx(y.Controller,{name:"legend.show",control:e,render:({field:l})=>n.jsx(s.Switch,{label:r("chart.legend.show_legend"),sx:{flex:1},checked:l.value,onChange:i=>l.onChange(i.currentTarget.checked)})})}),n.jsx(s.Group,{children:n.jsx(y.Controller,{name:"legend",control:e,render:({field:l})=>n.jsx(bt,{sx:{flex:1},value:l.value.orient,onChange:i=>{o(i,l.onChange)},disabled:!a.show})})})]})};function tf({control:e,index:t,variableOptions:r}){const{t:a}=m.useTranslation();return n.jsxs(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:o})=>n.jsx(s.TextInput,{label:a("common.name"),placeholder:a("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...o})}),n.jsx(y.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:o})=>n.jsx(s.Select,{label:a("common.value"),required:!0,data:r,sx:{flex:1},...o})})]}),n.jsx(y.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:o})=>n.jsx(s.TextInput,{label:a("chart.content_template.label"),placeholder:a("chart.content_template.placeholder"),required:!0,sx:{flex:1},...o})})]})}function nf({control:e,watch:t,variables:r}){const{t:a}=m.useTranslation(),o=()=>({name:"",template:"",variable_key:""}),l=h.useMemo(()=>r.map(c=>({label:c.name,value:c.name})),[r]),i=(c,d)=>{const u=c.name.trim();return u||d+1};return n.jsx(R,{control:e,watch:t,name:"reference_lines",getItem:o,addButtonText:a("chart.reference_line.add"),deleteButtonText:a("chart.reference_line.delete"),renderTabName:i,children:({field:c,index:d})=>n.jsx(tf,{control:e,index:d,variableOptions:l})})}const rf=({control:e,index:t})=>{const{t:r}=m.useTranslation();return n.jsxs(s.Stack,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("common.name"),required:!0,sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:a})=>n.jsx(L,{label:r("chart.data_field"),required:!0,sx:{flex:1},...a})})]}),n.jsx(y.Controller,{name:`tooltip.metrics.${t}.unit`,control:e,render:({field:a})=>n.jsx(ue,{hiddenFileds:["show_in_legend"],...a})})]})},af=({control:e,watch:t})=>{const{t:r}=m.useTranslation(),a=()=>({id:Date.now().toString(),data_key:"",name:"",unit:K()}),o=(l,i)=>{const c=l.name.trim();return c||i+1};return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{gap:2,sx:{cursor:"default",userSelect:"none"},children:[n.jsx(S.IconInfoCircle,{size:14,color:"#888"}),n.jsx(s.Text,{size:"14px",c:"#888",children:r("chart.tooltip.additional_metrics.description")})]}),n.jsx(R,{control:e,watch:t,name:"tooltip.metrics",getItem:a,addButtonText:r("chart.tooltip.additional_metrics.add"),deleteButtonText:r("chart.tooltip.additional_metrics.delete"),renderTabName:o,children:({field:l,index:i})=>n.jsx(rf,{control:e,index:i})})]})};function sf({control:e,watch:t}){return n.jsx(s.Stack,{children:n.jsx(af,{control:e,watch:t})})}const ot=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l}=m.useTranslation();return n.jsx(s.NumberInput,{ref:o,label:e??l("chart.rotate"),hideControls:!0,min:-90,max:90,rightSection:n.jsx(s.Text,{size:"xs",c:"dimmed",children:l("chart.degree")}),sx:a,styles:{section:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},value:t,onChange:i=>{typeof i!="string"&&r(i)}})}),of=({control:e,watch:t})=>{const{t:r}=m.useTranslation();return t(["x_axis"]),n.jsxs(s.Stack,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.name",control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.x_axis.x_axis_name"),sx:{flex:1},...a})}),n.jsx(y.Controller,{name:"x_axis.data_key",control:e,render:({field:a})=>n.jsx(L,{label:r("chart.x_axis.x_axis_data_field"),required:!0,sx:{flex:1},...a})})]}),n.jsx(s.Divider,{mb:-15,label:r("chart.axis.tick_label"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:a})=>n.jsx(ot,{sx:{width:"48%"},...a})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:a})=>n.jsx(et,{...a})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:a})=>n.jsx(tt,{...a})})]})},zr={root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}},lf=["123456789","1234","1234.56789","1.234","0.123456789","-0.123456789"];function cf({format:e}){const{t}=m.useTranslation(),[r,{toggle:a}]=te.useDisclosure(!1);return n.jsxs(s.Box,{children:[n.jsx(s.Button,{variant:"subtle",w:"100%",size:"compact-sm",onClick:a,leftSection:r?n.jsx(S.IconChevronUp,{size:14}):n.jsx(S.IconChevronDown,{size:14}),children:t(r?"numbro.format.preview.close":"numbro.format.preview.open")}),n.jsx(s.Collapse,{in:r,children:r&&n.jsxs(s.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[n.jsx(s.Table.Thead,{children:n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Th,{children:t("numbro.format.preview.input")}),n.jsx(s.Table.Th,{children:t("numbro.format.preview.output")})]})}),n.jsx(s.Table.Tbody,{children:lf.map(o=>n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{children:o}),n.jsx(s.Table.Td,{children:n.jsx(ne,{children:Y(o,e)})})]},o))})]})})]})}function df({value:e,onChange:t},r){const{t:a}=m.useTranslation(),o=u=>{t({...e,output:u})},l=u=>{if(typeof u=="string")return;const p=u===0?!1:e.trimMantissa;t({...e,mantissa:u,trimMantissa:p})},i=u=>{t({...e,trimMantissa:u.currentTarget.checked})},c=u=>{t({...e,average:u.currentTarget.checked})},d=u=>{const p={...e,absolute:u.currentTarget.checked};t(p)};return n.jsxs(s.Stack,{ref:r,children:[n.jsxs(s.Group,{grow:!0,children:[n.jsx(s.Select,{label:a("numbro.format.label"),data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:Z(o),sx:{flexGrow:1}}),n.jsx(s.Switch,{label:n.jsxs(s.Stack,{gap:0,children:[n.jsx(s.Text,{size:"sm",children:a("numbro.format.absolute")}),n.jsx(s.Text,{size:"12px",c:"gray",children:a("numbro.format.absolute_description")})]}),checked:e.absolute,onChange:d,sx:{flexGrow:1},styles:zr}),n.jsx(s.Switch,{label:n.jsxs(s.Stack,{gap:0,children:[n.jsx(s.Text,{size:"sm",children:a("numbro.format.abbreviation")}),n.jsx(s.Text,{size:"12px",c:"gray",children:a("numbro.format.abbreviation_description")})]}),checked:e.average,onChange:c,disabled:e.output!=="number",sx:{flexGrow:1},styles:zr})]}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(s.NumberInput,{label:a("numbro.format.mantissa"),defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:l}),n.jsx(s.Switch,{label:n.jsxs(s.Stack,{gap:0,children:[n.jsx(s.Text,{size:"sm",children:a("numbro.format.trim_mantissa")}),n.jsx(s.Text,{size:"12px",c:"gray",children:a("numbro.format.trim_mantissa_description")})]}),checked:e.trimMantissa,onChange:i,disabled:e.mantissa===0,styles:zr}),n.jsx(s.Box,{})]}),n.jsx(cf,{format:e})]})}const Ke=h.forwardRef(df),uf=({control:e,watch:t})=>{const{t:r}=m.useTranslation();return t(["y_axis"]),n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"y_axis.name",control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.y_axis_name"),sx:{flex:1},...a})}),n.jsx(y.Controller,{name:"y_axis.data_key",control:e,render:({field:a})=>n.jsx(L,{label:r("chart.y_axis.y_axis_data_field"),required:!0,sx:{flex:1},...a})})]}),n.jsx(y.Controller,{name:"y_axis.unit",control:e,render:({field:a})=>n.jsx(ue,{hiddenFileds:["show_in_legend"],...a})}),n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mt:10,mb:-15,variant:"dashed",label:r("chart.axis.section_title.label_format"),labelPosition:"center"}),n.jsx(y.Controller,{name:"y_axis.label_formatter",control:e,render:({field:a})=>n.jsx(Ke,{...a})})]})]})};function pf({context:e}){const{t}=m.useTranslation(),{value:r,set:a}=q(e.instanceData,"config"),{variables:o}=e,l=h.useMemo(()=>b.defaults({},r,mr),[r]),{control:i,handleSubmit:c,watch:d,formState:u,reset:p}=y.useForm({defaultValues:l});return h.useEffect(()=>{p(l)},[l]),d(["x_axis","y_axis","reference_lines","color","dataZoom"]),n.jsx(s.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:c(a),children:[n.jsx(se,{canSubmit:u.isDirty}),n.jsxs(s.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[n.jsxs(s.Tabs.List,{children:[n.jsx(s.Tabs.Tab,{value:"X Axis",children:t("chart.x_axis.label")}),n.jsx(s.Tabs.Tab,{value:"Y Axis",children:t("chart.y_axis.label")}),n.jsx(s.Tabs.Tab,{value:"Legend",children:t("chart.legend.label")}),n.jsx(s.Tabs.Tab,{value:"Tooltip",children:t("chart.tooltip.label")}),n.jsx(s.Tabs.Tab,{value:"Style",children:t("chart.style.label")}),n.jsx(s.Tabs.Tab,{value:"Reference Lines",children:t("chart.reference_line.labels")}),n.jsx(s.Tabs.Tab,{value:"Zooming",children:t("chart.zooming.label")})]}),n.jsx(s.Tabs.Panel,{value:"X Axis",children:n.jsx(of,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Y Axis",children:n.jsx(uf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Legend",children:n.jsx(ef,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Tooltip",children:n.jsx(sf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Style",children:n.jsx(s.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:"color",control:i,render:({field:f})=>n.jsx(ye,{label:t("chart.color.label"),...f})})})}),n.jsx(s.Tabs.Panel,{value:"Reference Lines",children:n.jsx(nf,{variables:o,control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Zooming",children:n.jsx(y.Controller,{name:"dataZoom",control:i,render:({field:f})=>n.jsx(vn,{...f})})})]})]})})}function hf(e){return b.omit(e,"variables")}function gf(e){const{label_formatter:t=de,...r}=e.y_axis;return{...e,y_axis:{...r,label_formatter:t}}}function ff(e){const t={rotate:0,formatter:_e()},{axisLabel:r=t,...a}=e.x_axis;return{...e,x_axis:{...a,axisLabel:r}}}function bf(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function yf(e){delete e.config;const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,a={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return b.defaultsDeep(a,e)}function vf(e){const t={tooltip:{metrics:[]}};return b.defaultsDeep(t,e)}function _f(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const a=d=>d&&`${r}.${d}`,{x_axis:o,y_axis:l,tooltip:i,...c}=e;return{...c,x_axis:{...o,data_key:a(o.data_key)},y_axis:{...l,data_key:a(l.data_key)},tooltip:{...i,metrics:i.metrics.map(d=>({...d,data_key:a(d.data_key)}))}}}catch(r){throw console.error("[Migration failed]",r),r}}function mf(e){const t={legend:{show:!0,top:"0",right:"10",left:"auto",bottom:"auto",orient:"horizontal",type:"scroll"}};return b.defaultsDeep(t,e)}function wf(e){const{dataZoom:t,...r}=e;return{...r,dataZoom:t??Io()}}function xf(e){const t=e.tooltip.metrics;return{...e,tooltip:{...e.tooltip,metrics:t.map(r=>({...r,unit:r.unit??K()}))}}}function Cf(e){const{y_axis:t}=e;return{...e,y_axis:{...t,unit:t.unit??K()}}}class Sf extends H{constructor(){super(...arguments);V(this,"VERSION",12)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:a})=>{const{config:o}=r;return(o.variables||[]).forEach(i=>{a.variables.find(c=>c.name===i.name)||a.addVariable(i)}),{...r,version:2,config:hf(o)}}),this.version(3,r=>{const{config:a}=r;return{...r,version:3,config:gf(a)}}),this.version(4,r=>{const{config:a}=r;return{...r,version:4,config:ff(a)}}),this.version(5,r=>{const{config:a}=r;return{...r,version:5,config:bf(a)}}),this.version(6,r=>{const{config:a}=r;return{...r,version:6,config:yf(a)}}),this.version(7,r=>{const{config:a}=r;return{...r,version:7,config:vf(a)}}),this.version(8,(r,a)=>{const{config:o}=r;return{...r,version:8,config:_f(o,a)}}),this.version(9,r=>{const{config:a}=r;return{...r,version:9,config:mf(a)}}),this.version(10,r=>{const{config:a}=r;return{...r,version:10,config:wf(a)}}),this.version(11,r=>{const{config:a}=r;return{...r,version:11,config:xf(a)}}),this.version(12,r=>{const{config:a}=r;return{...r,version:12,config:Cf(a)}})}}const Tf={displayName:"viz.boxplot.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new Sf,name:"boxplot",viewRender:Gg,configRender:pf,createConfig(){return{version:12,config:b.cloneDeep(mr)}},triggers:[Vo],translation:vh},Qo={id:"builtin:button:click-button",displayName:"viz.button.click.label",nameRender:Df,configRender:kf,payload:[]};function kf(e){return n.jsx(n.Fragment,{})}function Df(e){const{t}=m.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.button.click.label")})}const Mr={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},zf={left:"flex-start",center:"center",right:"flex-end"},Mf={top:"flex-start",center:"center",bottom:"flex-end"},If=k.observer(({context:e,instance:t})=>{const r=Ve({vizManager:e.vizManager,instance:t}),a=Ie(r.triggerManager,Qo.id),o=J(),{value:l}=q(e.instanceData,"config"),i=h.useMemo(()=>b.defaultsDeep({},l,Mr),[l]),{content:c,horizontal_align:d,vertical_align:u,compact:p,size:f,...v}=i,{width:_,height:w}=e.viewport,x=o.payloadForSQL,T=()=>{a.forEach(z=>{r.runInteraction(z.id,{})})},D=p?`compact-${f}`:f;return n.jsx(s.Center,{sx:{width:_,height:w,justifyContent:zf[d],alignItems:Mf[u]},children:n.jsx(s.Button,{size:D,...v,onClick:T,children:b.template(c)(x)})})}),Vf=({value:e,onChange:t,label:r})=>{const a=s.useMantineTheme(),o=h.useCallback(i=>()=>t(i),[t]),l=i=>e===i;return n.jsxs(s.Stack,{gap:2,children:[n.jsx(s.Text,{size:"14px",fw:500,children:r}),n.jsx(s.Group,{justify:"flex-start",gap:"xs",children:Object.keys(a.colors).map(i=>{const c=a.colors[i][6];return n.jsx(s.ColorSwatch,{color:c,onClick:o(i),radius:4,size:26,sx:{cursor:"pointer"},children:l(i)&&n.jsx(s.CheckIcon,{width:10,color:"white"})},i)})})]})},Pf=["xs","sm","md","lg","xl"],Ir=h.forwardRef(({label:e,value:t,onChange:r,sx:a,disabled:o},l)=>{const{t:i,i18n:c}=m.useTranslation(),d=h.useMemo(()=>Pf.map(u=>({label:i(`style.size.${u}`),value:u})),[c.language]);return n.jsx(s.Select,{ref:l,data:d,label:e,value:t,onChange:Z(r),sx:a,disabled:!0})}),$f=[{label:"Filled",value:"filled"},{label:"Outline",value:"outline"},{label:"Light",value:"light"},{label:"White",value:"white"},{label:"Default",value:"default"},{label:"Subtle",value:"subtle"},{label:"Gradient",value:"gradient",disabled:!0}];function Af({context:e}){const{value:t,set:r}=q(e.instanceData,"config"),a=h.useMemo(()=>b.defaultsDeep({},t,Mr),[t]),o=a;h.useEffect(()=>{!b.isEqual(a,o)&&(console.log("config malformed, resetting to defaults",a,o),r(o))},[a,o]);const{control:l,handleSubmit:i,watch:c,formState:d,reset:u}=y.useForm({defaultValues:o});return h.useEffect(()=>{u(o)},[o]),c(["content","variant","color","size","compact","horizontal_align","vertical_align"]),n.jsxs("form",{onSubmit:i(r),children:[n.jsx(se,{canSubmit:d.isDirty}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{control:l,name:"content",render:({field:p})=>n.jsx(s.TextInput,{label:"Content Template",description:"Filter values & context entries are supported",...p,required:!0})}),n.jsx(s.Divider,{mt:"xs",mb:0,label:"Styles",labelPosition:"center",variant:"dashed"}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:l,name:"variant",render:({field:p})=>n.jsx(s.Select,{label:"Variant",data:$f,...p})}),n.jsx(y.Controller,{control:l,name:"color",render:({field:p})=>n.jsx(Vf,{label:"Theme",...p})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:l,name:"size",render:({field:p})=>n.jsx(Ir,{label:"Size",...p})}),n.jsx(y.Controller,{control:l,name:"compact",render:({field:p})=>n.jsx(s.Checkbox,{label:"Compact",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked),mt:26})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:l,name:"horizontal_align",render:({field:p})=>n.jsx(Dr,{...p})}),n.jsx(y.Controller,{control:l,name:"vertical_align",render:({field:p})=>n.jsx(No,{...p})})]})]})]})}const Ef=[{lang:"en",resources:{button:{viz_name:"Button",click:{label:"Click this button"}}}},{lang:"zh",resources:{button:{viz_name:"按钮",click:{label:"点击此按钮"}}}}];class Bf extends H{constructor(){super(...arguments);V(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{horizontal_align:a="left",vertical_align:o="center",...l}=r.config;return{...r,version:2,config:{...l,horizontal_align:a,vertical_align:o}}})}}const qf={displayName:"viz.button.viz_name",displayGroup:"chart.groups.others",migrator:new Bf,name:"button",viewRender:If,configRender:Af,createConfig(){return{version:2,config:b.cloneDeep(Mr)}},triggers:[Qo],translation:Ef},_n=({label:e,field:t})=>{const{t:r}=m.useTranslation();return n.jsx(s.ColorInput,{label:e,placeholder:r("chart.visual_map.skip_range.follow_visual_map"),size:"xs",popoverProps:{withinPortal:!0,zIndex:340},rightSection:t.value?n.jsx(s.CloseButton,{size:"sm",onClick:()=>{t.onChange("")}}):null,...t})},Lf=({form:e})=>{const{t}=m.useTranslation();return n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.lt_min",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.lt_min")})}),n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.min",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.min")})}),n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.max",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.max")})}),n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.gt_max",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.gt_max")})})]})},Of=({form:e})=>{const{t,i18n:r}=m.useTranslation(),a=e.control,o=e.watch("visualMap"),{type:l,orient:i}=o,c=i==="horizontal",d=u=>p=>{typeof p!="string"&&u(p)};return l!=="continuous"?null:n.jsxs(s.Stack,{children:[n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.text.1",control:a,render:({field:u})=>n.jsx(s.TextInput,{label:t("chart.visual_map.min_text"),...u})}),n.jsx(y.Controller,{name:"visualMap.text.0",control:a,render:({field:u})=>n.jsx(s.TextInput,{label:t("chart.visual_map.max_text"),...u})})]}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.orient",control:a,render:({field:u})=>n.jsx(bt,{sx:{flex:1},...u})}),n.jsx(y.Controller,{name:"visualMap.calculable",control:a,render:({field:u})=>n.jsx(s.Checkbox,{label:t("chart.visual_map.calculable"),checked:u.value,onChange:p=>u.onChange(p.currentTarget.checked),styles:{root:{transform:"translateY(12px)"}}})})]}),n.jsxs(s.Group,{grow:!0,styles:{root:{flexDirection:c?"row-reverse":"row"}},children:[n.jsx(y.Controller,{name:"visualMap.itemWidth",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t(c?"chart.visual_map.bar_height":"chart.visual_map.bar_width"),...u,onChange:d(u.onChange)})}),n.jsx(y.Controller,{name:"visualMap.itemHeight",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t(c?"chart.visual_map.bar_width":"chart.visual_map.bar_height"),...u,onChange:d(u.onChange)})})]}),n.jsx(y.Controller,{name:"visualMap.inRange.color",control:a,render:({field:u})=>n.jsx(co,{...u})}),n.jsx(Lf,{form:e})]})},Nf=({visualMap:e})=>{const{orient:t,itemWidth:r,itemHeight:a}=e,l=t==="horizontal"?r:a,{panel:i}=ae(),c=un(e,i.variableValueMap);return n.jsx(ne,{children:n.jsx(he,{echarts:ce,option:{visualMap:c},style:{width:"100%",height:`${l+40}px`},notMerge:!0,theme:"merico-light"})})},jo={lower:[{label:"<",value:"gt"},{label:"≤",value:"gte"}],upper:[{label:">",value:"lt"},{label:"≥",value:"lte"}]},Wo={gt:"(",gte:"[",lt:")",lte:"]"},Uo=(e,t)=>e===""?t:Number.isNaN(Number(e))?"INVALID VALUE":e,Gf=({form:e,index:t})=>{const{t:r}=m.useTranslation(),{control:a,watch:o}=e,l=o(`visualMap.pieces.${t}`),{lower:i,upper:c}=l,d=[Wo[i.symbol],Uo(i.value,r("chart.visual_map.min_value")),",",Uo(c.value,r("chart.visual_map.max_value")),Wo[c.symbol]].join(""),[u,p]=h.useState(!1);return n.jsx(s.Group,{wrap:"nowrap",children:n.jsxs(s.Popover,{width:400,position:"bottom",withArrow:!0,shadow:"md",opened:u,onChange:p,withinPortal:!0,zIndex:340,children:[n.jsx(s.Popover.Target,{children:n.jsx(s.Button,{variant:"subtle",size:"compact-sm",px:0,onClick:()=>p(f=>!f),fw:"normal",ff:"monospace",children:d})}),n.jsx(s.Popover.Dropdown,{children:n.jsxs(s.Group,{wrap:"nowrap",gap:8,children:[n.jsx(y.Controller,{name:`visualMap.pieces.${t}.lower.value`,control:a,render:({field:f})=>n.jsx(s.TextInput,{...f,placeholder:r("chart.visual_map.min_value"),size:"xs",onChange:v=>f.onChange(v.currentTarget.value),error:f.value!==""&&Number.isNaN(Number(f.value))})}),n.jsx(y.Controller,{name:`visualMap.pieces.${t}.lower.symbol`,control:a,render:({field:f})=>n.jsx(s.Select,{size:"xs",data:jo.lower,...f,onChange:Z(v=>f.onChange(v))})}),n.jsx(s.Text,{c:"dimmed",size:"sm",sx:{userSelect:"none",cursor:"default"},children:r("common.value").toLowerCase()}),n.jsx(y.Controller,{name:`visualMap.pieces.${t}.upper.symbol`,control:a,render:({field:f})=>n.jsx(s.Select,{size:"xs",data:jo.upper,...f,onChange:Z(v=>f.onChange(v))})}),n.jsx(y.Controller,{name:`visualMap.pieces.${t}.upper.value`,control:a,render:({field:f})=>n.jsx(s.TextInput,{...f,size:"xs",placeholder:r("chart.visual_map.max_value"),onChange:v=>f.onChange(v.currentTarget.value),error:f.value!==""&&Number.isNaN(Number(f.value))})})]})})]})})},Ff=({form:e,index:t,remove:r})=>{const{control:a}=e,{t:o}=m.useTranslation();return n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{children:(t+1).toString()}),n.jsx(s.Table.Td,{children:n.jsx(Gf,{form:e,index:t})}),n.jsx(s.Table.Td,{children:n.jsx(y.Controller,{name:`visualMap.pieces.${t}.label`,control:a,render:({field:l})=>n.jsx(s.TextInput,{size:"xs",placeholder:"",...l,onChange:i=>l.onChange(i.currentTarget.value)})})}),n.jsx(s.Table.Td,{children:n.jsx(y.Controller,{name:`visualMap.pieces.${t}.color`,control:a,render:({field:l})=>n.jsx(s.ColorInput,{label:o(""),placeholder:o("chart.color.label"),size:"xs",popoverProps:{withinPortal:!0,zIndex:340},rightSection:l.value?n.jsx(s.CloseButton,{size:"sm",onClick:()=>{l.onChange("")}}):null,...l})})}),n.jsx(s.Table.Td,{children:n.jsx(s.CloseButton,{size:"sm",onClick:()=>r(t)})})]})},Qf=({form:e})=>{const{t,i18n:r}=m.useTranslation(),{fields:a,append:o,remove:l}=y.useFieldArray({control:e.control,name:"visualMap.pieces"}),i=e.watch("visualMap.pieces"),c=a.map((u,p)=>({...u,...i[p]})),d=()=>{o(io())};return n.jsx(s.Stack,{children:n.jsxs(s.Table,{children:[n.jsx(s.Table.Thead,{children:n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Th,{style:{width:"40px"}}),n.jsx(s.Table.Th,{children:t("chart.visual_map.piecewise.interval")}),n.jsx(s.Table.Th,{children:t("chart.visual_map.piecewise.piece_label")}),n.jsx(s.Table.Th,{children:t("chart.color.label")}),n.jsx(s.Table.Th,{style:{width:"40px"}})]})}),n.jsx(s.Table.Tbody,{children:c.map((u,p)=>n.jsx(Ff,{index:p,form:e,remove:l},u.id))}),n.jsx(s.Table.Tfoot,{children:n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{}),n.jsx(s.Table.Td,{colSpan:3,children:n.jsx(s.Button,{mt:10,size:"xs",color:"blue",leftSection:n.jsx(S.IconPlaylistAdd,{size:20}),onClick:d,sx:{width:"50%"},mx:"auto",children:t("chart.visual_map.piecewise.add_a_piece")})}),n.jsx(s.Table.Td,{})]})})]})})},jf=({form:e})=>{const{t,i18n:r}=m.useTranslation(),a=e.control,o=e.watch("visualMap");h.useMemo(()=>[{label:t("chart.visual_map.piecewise.mode.pieces"),value:"pieces"},{label:t("chart.visual_map.piecewise.mode.categories"),value:"categories"}],[r.language]);const{type:l,orient:i,piecewise_mode:c}=o,d=u=>p=>{typeof p!="string"&&u(p)};return l!=="piecewise"?null:n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:"visualMap.precision",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t("chart.visual_map.precision"),...u,onChange:d(u.onChange)})}),n.jsx(y.Controller,{name:"visualMap.orient",control:a,render:({field:u})=>n.jsx(bt,{sx:{flex:1},...u})}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.itemWidth",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t("chart.visual_map.item_width"),...u,onChange:d(u.onChange)})}),n.jsx(y.Controller,{name:"visualMap.itemHeight",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t("chart.visual_map.item_height"),...u,onChange:d(u.onChange)})})]}),c==="pieces"&&n.jsx(Qf,{form:e})]})},Vr=({form:e})=>{const{t,i18n:r}=m.useTranslation(),a=e.control,o=e.watch("visualMap"),l=h.useMemo(()=>[{label:t("chart.visual_map.continuous.label"),value:"continuous"},{label:t("chart.visual_map.piecewise.label"),value:"piecewise"}],[r.language]),i=c=>{switch(c){case"continuous":e.setValue("visualMap",lo());break;case"piecewise":e.setValue("visualMap",wp());break;default:return}};return n.jsx(ne,{children:n.jsxs(s.Stack,{children:[n.jsx(Nf,{visualMap:o}),n.jsx(y.Controller,{name:"visualMap.type",control:a,render:({field:c})=>n.jsx(s.SegmentedControl,{mt:-10,data:l,sx:{flex:1},...c,onChange:i})}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.min",control:a,render:({field:c})=>n.jsx(so,{label:t("chart.visual_map.min_value"),...c})}),n.jsx(y.Controller,{name:"visualMap.max",control:a,render:({field:c})=>n.jsx(so,{label:t("chart.visual_map.max_value"),...c})})]}),n.jsx(s.Divider,{variant:"dashed"}),n.jsx(Of,{form:e}),n.jsx(jf,{form:e})]})})};function Wf(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const a=d=>d&&`${r}.${d}`,{calendar:o,heat_block:l,tooltip:i,...c}=e;return{...c,calendar:{...o,data_key:a(o.data_key)},heat_block:{...l,data_key:a(l.data_key)},tooltip:{...i,metrics:i.metrics.map(d=>({...d,data_key:a(d.data_key)}))}}}catch(r){throw console.error("[Migration failed]",r),r}}function Uf(e){const{heat_block:t}=e;let{min:r,max:a}=t;return typeof r!="number"&&(r=0),typeof a!="number"&&(a=100),{...e,heat_block:{...t,min:{type:"static",value:r},max:{type:"static",value:a}}}}function Kf(e){const{visualMap:t=at(),heat_block:{min:r,max:a,...o},...l}=e;return{...l,heat_block:o,visualMap:{...at(),min:r,max:a}}}function Yf(e){const t=e.tooltip.metrics;return{...e,tooltip:{...e.tooltip,metrics:t.map(r=>({...r,unit:r.unit??K()}))}}}function Xf(e){const{heat_block:t}=e;return{...e,heat_block:{...t,unit:t.unit??K()}}}const Zf=[{lang:"en",resources:{calendar_heatmap:{viz_name:"Heatmap(Calendar)",calendar:{label:"Calendar",locale:"Langauge"},click_heatmap:{heatblock:{label:"Click heat block"}}}}},{lang:"zh",resources:{calendar_heatmap:{viz_name:"日历热力图",calendar:{label:"日历",locale:"语言"},click_heatmap:{heatblock:{label:"点击热力块"}}}}}];function Jf(e){return n.jsx(n.Fragment,{})}function Hf(e){const{t}=m.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.calendar_heatmap.click_heatmap.heatblock.label")})}const Ko={id:"builtin:echarts:click-heatmap:heat-block",displayName:"viz.calendar_heatmap.click_heatmap.heatblock.label",nameRender:Hf,configRender:Jf,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Pr={calendar:{data_key:"",locale:"EN"},heat_block:{name:"Value",data_key:"",unit:K(),value_formatter:de},tooltip:{metrics:[]},visualMap:at()};function Rf(e,t,r){if(!e)return r[0];try{return[t,M(t).add(1,"year").subtract(1,"day").valueOf()]}catch(a){return console.error(a),r[0]}}function eb(e,t,r){const a=Rf(e,t,r);return{top:50,left:25,right:5,cellSize:["auto",13],range:a,itemStyle:{borderColor:"#eee"},splitLine:{show:!0},dayLabel:{firstDay:1},monthLabel:{position:"end"},yearLabel:{show:!0}}}function tb(e){return{heat_block:function(a){if(!e.heat_block.value_formatter)return a;try{return Y(a,e.heat_block.value_formatter)}catch(o){return console.error(o),a}}}}function nb(e,t){return{show:!e,selectedMode:"single",top:5,right:5,data:t.map(r=>({name:r,icon:"circle"}))}}function rb(e,t,r){return e?{type:"heatmap",name:"heatmap",coordinateSystem:"calendar",calendarIndex:0,data:r}:Object.entries(t).map(([a,o])=>({type:"heatmap",name:a,coordinateSystem:"calendar",calendarIndex:0,data:o}))}const ab=e=>Y(e,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function sb({conf:e,valueFormatters:t,dataDict:r,params:a,metricUnitMap:o}){const{value:l}=a,[i,c]=l,u=[{label:e.heat_block.name,value:t.heat_block(c),unit:e.heat_block.unit.show_in_tooltip?e.heat_block.unit.text:""}],p=r[i];return p&&e.tooltip.metrics.forEach(f=>{const v=$(f.data_key),_=o[f.name]??"";u.push({label:f.name,value:ab(b.get(p,v.columnKey,"")),unit:_})}),u}function ob(e,t,r){const a=$(e.calendar.data_key),o=b.keyBy(t[a.queryID],a.columnKey),l=e.tooltip.metrics.reduce((i,{unit:c,name:d})=>(c.show_in_tooltip&&(i[d]=c.text),i),{});return X.getTooltip({formatter:function(i){const d=sb({conf:e,valueFormatters:r,dataDict:o,params:i,metricUnitMap:l}).map(f=>`
119
+ `}const Bg=(e,t)=>r=>{const{seriesName:a,value:o}=r;switch(a){case t.Box:return Pg(e,o);case t.Outlier:return Ag(e,o);case t.Scatter:return Eg(e,o)}};function qg({config:e,seriesNames:t}){return X.getTooltip({trigger:"item",formatter:Bg(e,t)})}function yn(e,t){t||(t="none");const r=[];return e.x_axis_scroll&&r.push({type:"inside",xAxisIndex:[0],filterMode:t,minSpan:1}),e.y_axis_scroll&&r.push({type:"inside",yAxisIndex:[0],filterMode:t,minSpan:1}),e.x_axis_slider&&r.push({type:"slider",xAxisIndex:[0],filterMode:t,bottom:"auto",top:0,height:15,moveHandleSize:0,showDataShadow:!1,minSpan:1}),r}function Lg({min:e,max:t}){if(e<=110)return Math.min(0,e);if(e<=200)return 100;const r=Fe.floor(Fe.log10(e)),a=Math.pow(10,r),o=Math.pow(10,r-1);return e/a<=2?b.round(e,-1*(r-1))-o:b.round(e,-1*r)-a}function Og(e){return{Box:e("viz.boxplot.box"),Scatter:e("viz.boxplot.scatter"),Outlier:e("viz.boxplot.outlier")}}function Ng({config:e,data:t,variables:r,t:a}){const{x_axis:o,y_axis:l,reference_lines:i}=e,c=wg(e,t),d=Ue(o.axisLabel.overflow.on_axis),u=Og(a),p=Vg(e,c).map(f=>({...f,name:b.get(u,f.name,f.name)}));return{dataZoom:yn(e.dataZoom,"filter"),grid:xg(e),dataset:c,legend:Cg({config:e,seriesNames:u}),tooltip:qg({config:e,seriesNames:u}),xAxis:[X.getXAxis({type:"category",name:o.name,nameGap:25,nameLocation:"center",nameTextStyle:{align:"center"},axisLabel:{...o.axisLabel,...d,formatter:ze(o.axisLabel.formatter)}})],yAxis:[X.getYAxis({name:l.name,minInterval:1,axisLabel:{formatter:function(f){return Y(f,l.label_formatter)}},min:Lg})],series:[...p,...Sg(i,r,t)]}}function Gg({context:e,instance:t}){const{t:r}=m.useTranslation(),{value:a}=q(e.instanceData,"config"),{variables:o}=e,l=e.data,{width:i,height:c}=e.viewport,d=b.defaults({},a,mr),u=Ve({vizManager:e.vizManager,instance:t}),p=Ie(u.triggerManager,Vo.id),f=kt(l,d.x_axis.data_key),v=h.useCallback(D=>{const z=b.get(f,D.name,{error:"rowData is not found"});p.forEach(I=>{u.runInteraction(I.id,{...D,rowData:z})})},[f,p,u]),_=h.useRef(null),w=h.useCallback(()=>{var z;const D=(z=_.current)==null?void 0:z.getEchartsInstance();D&&fe(t,D.getOption())},[]),x=h.useMemo(()=>({click:v,finished:w}),[v,w]),T=h.useMemo(()=>Ng({config:d,data:l,variables:o,t:r}),[d,l,o,r]);return!a||!i||!c?null:n.jsx(ve,{width:i,height:c,children:n.jsx(he,{echarts:ce,option:T,ref:_,style:Kt(i,c),onEvents:x,notMerge:!0,theme:"merico-light"})})}function se({canSubmit:e,buttonRef:t}){const{t:r}=m.useTranslation();return n.jsxs(s.Group,{justify:"flex-start",py:"md",pl:"md",sx:{borderBottom:"1px solid #eee",background:"#efefef"},children:[n.jsx(s.Text,{size:"sm",children:r("viz.viz_config_banner")}),n.jsx(s.ActionIcon,{ref:t,type:"submit",mr:5,variant:"filled",color:"blue",disabled:!e,children:n.jsx(S.IconDeviceFloppy,{size:20})})]})}const Dr=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("common.align.horizontal.left"),value:"left"},{label:l("common.align.horizontal.center"),value:"center"},{label:l("common.align.horizontal.right"),value:"right"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("common.align.horizontal.label"),data:c,value:t,onChange:Z(r),sx:a})}),No=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("common.align.vertical.top"),value:"top"},{label:l("common.align.vertical.center"),value:"center"},{label:l("common.align.vertical.bottom"),value:"bottom"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("common.align.vertical.label"),data:c,value:t,onChange:Z(r),sx:a})}),Go=ht.createStyles(()=>({palette:{display:"flex",flexFlow:"row nowrap"},paletteItem:{".palette-value":{height:24,overflow:"visible",width:36},".palette-item":{width:"36px",height:36*.618,cursor:"pointer",transition:"transform 100ms ease-in-out","&:hover":{boxShadow:"0 0 0 2px var(--shadow-color)",borderRadius:2,transform:"scale(1.2)"}}}})),Fg=[{from:0,to:0},{from:100,to:100}];class Qg{constructor(){V(this,"steps",new Map);V(this,"interpolation");V(this,"onChange");F.makeAutoObservable(this,{steps:F.observable},{deep:!1}),F.reaction(()=>F.toJS(this.steps),()=>{this.notifyStepChange()})}setSteps(t){for(const r of t)this.steps.set(r.to,r.from)}notifyStepChange(){var t;(t=this.onChange)==null||t.call(this,Array.from(this.steps.entries()).map(([r,a])=>({to:r,from:a})).sort((r,a)=>r.to-a.to||r.from-a.from))}fromProps(t){t.steps.length<2?this.setSteps(Fg):this.setSteps(t.steps),this.interpolation=t.interpolation,this.onChange=t.onChange}changeStep(t,r){t==null?this.steps.delete(r):this.steps.set(r,t)}getStepFromValue(t){return this.steps.get(t)}}function Fo(e){if(typeof e=="number")return String(e)}function jg(e){const{t}=m.useTranslation(),{onChange:r,color:a,index:o,value:l}=e,{classes:i}=Go(),[c,d]=h.useState(Fo(l)),[u,{setTrue:p,setFalse:f}]=O.useBoolean(!1),v=o%2===1,_=v&&l!=null,w=!v&&l!=null,x=`map ${l} to color ${o}`,T=()=>{d(Fo(l)),f()},D=()=>{f(),r==null||r(Number(c))},z=()=>{f(),r==null||r(null)},I=Y(l??null,{output:"number",mantissa:10,trimMantissa:!0,average:!0,absolute:!1}),E=!c||Number.isNaN(Number(c));return n.jsxs("div",{"data-testid":`palette-item-${o}`,className:i.paletteItem,children:[n.jsx(s.Text,{title:x,style:{opacity:_?1:0},c:"dimmed",size:"sm",className:"palette-value--up palette-value",children:I}),n.jsxs(s.Popover,{width:240,trapFocus:!0,opened:u,onClose:f,zIndex:340,withinPortal:!0,children:[n.jsx(s.Popover.Target,{children:n.jsx("div",{"data-testid":"palette-item-target",className:"palette-item",onClick:p,style:{"--shadow-color":Ne(a).alpha(.5).hex(),backgroundColor:a}})}),n.jsxs(s.Popover.Dropdown,{children:[n.jsx(s.Tooltip,{withinPortal:!0,zIndex:340,label:t("common.actions.close"),children:n.jsx(s.CloseButton,{"data-testid":"palette-item-cancel",size:"sm",color:"gray",onClick:T,style:{position:"absolute",top:"0.5em",right:"0.8em"}})}),n.jsxs(s.Stack,{children:[n.jsx(s.TextInput,{size:"xs",label:t("style.color.interpolation.palette.mapping.value_input_label"),value:c,onChange:A=>{const U=A.currentTarget.value;d(U)},error:c&&E}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{variant:"light",color:"red",size:"xs",onClick:z,leftSection:n.jsx(S.IconTrash,{size:16}),children:t("common.actions.delete")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(S.IconDeviceFloppy,{size:16}),"data-testid":"palette-item-ok",size:"xs",onClick:D,disabled:E,children:t("common.actions.save")})]})]})]})]}),n.jsx(s.Text,{title:x,style:{opacity:w?1:0},c:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:I})]})}const Wg=k.observer(({model:e})=>{const{classes:t}=Go(),r=b.range(0,13,1).map(a=>100/12*a).map(a=>[e.interpolation.getColor(a),a]);return n.jsx("div",{className:t.palette,children:r.map(([a,o],l)=>n.jsx(jg,{index:l,color:a,value:e.getStepFromValue(o),onChange:i=>e.changeStep(i,o)},a))})}),Ug=k.observer(function(t){const r=O.useCreation(()=>new Qg,[]);return h.useEffect(()=>{r.fromProps(t)}),r.interpolation==null?null:n.jsx(Wg,{model:r})}),Kg=e=>{const{t,i18n:r}=m.useTranslation(),{value:a,onChange:o,colorManager:l}=e,i=l.getColorInterpolations(),[c,d]=h.useState(a),u=l.decodeInterpolation(c.interpolation)||i[0],[p,{setTrue:f,setFalse:v}]=O.useBoolean(),_=h.useMemo(()=>{const z=b.groupBy(i,"category");return Object.entries(z).map(([I,E])=>({group:t(`style.color.interpolation.palette.category.${I}`),items:E.map(A=>({label:t(A.displayName),value:l.encodeColor(A)}))}))},[r.language]);function w(z){z&&d(I=>({...I,interpolation:z}))}const x=()=>{v(),o==null||o(F.toJS(c))};function T(z){d(I=>({...I,steps:z}))}const D=()=>{v(),d(a)};return n.jsxs(n.Fragment,{children:[n.jsx(s.Button,{variant:"outline",onClick:f,children:t(u==null?void 0:u.displayName)}),n.jsx(s.Modal,{size:508,title:t("style.color.interpolation.setup"),opened:p,onClose:v,zIndex:320,children:p&&n.jsxs(s.Stack,{"data-testid":"color-interpolation-modal",children:[n.jsx(s.Select,{label:t("style.color.interpolation.palette.label"),value:c.interpolation,data:_,onChange:w,comboboxProps:{withinPortal:!0,zIndex:340},maxDropdownHeight:500}),n.jsx(Ug,{steps:c.steps,interpolation:u,onChange:T}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{onClick:D,variant:"subtle",children:t("common.actions.cancel")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(S.IconDeviceFloppy,{size:16}),onClick:x,children:t("common.actions.save")})]})]})})]})},Yg=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("style.color.type.static"),value:"static"},{label:l("style.color.type.interpolation"),value:"interpolation"},{label:l("style.color.type.none"),value:"none"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("style.color.type.label"),data:c,value:t,onChange:Z(r),sx:a})}),Xg=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("style.flex.justify_content.left"),value:"left"},{label:l("style.flex.justify_content.center"),value:"center"},{label:l("style.flex.justify_content.right"),value:"right"},{label:l("style.flex.justify_content.space_between"),value:"space-between"},{label:l("style.flex.justify_content.space_around"),value:"space-around"},{label:l("style.flex.justify_content.space_evenly"),value:"space-evenly"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("style.flex.justify_content.label"),data:c,value:t,onChange:Z(r),sx:a})}),Zg=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l,i18n:i}=m.useTranslation(),c=h.useMemo(()=>[{label:l("style.flex.align_items.start"),value:"start"},{label:l("style.flex.align_items.center"),value:"center"},{label:l("style.flex.align_items.end"),value:"end"},{label:l("style.flex.align_items.stretch"),value:"stretch"}],[i.language]);return n.jsx(s.Select,{ref:o,label:e??l("style.flex.align_items.label"),data:c,value:t,onChange:Z(r),sx:a})}),Jg=({value:e,index:t,children:r})=>{const[a,{setTrue:o,setFalse:l}]=O.useBoolean(!1),{ref:i,handleRef:c}=rn.useSortable({id:e,index:t});return n.jsx(s.Tabs.Tab,{ref:i,value:e,leftSection:n.jsx(S.IconGripHorizontal,{size:14,color:a||t===0?"rgb(34, 139, 230)":"transparent"}),onMouseEnter:o,onMouseLeave:l,children:r})},Hg=({fieldArray:e,add:t,addButtonText:r,renderTabName:a,controlledFields:o})=>{const l=i=>{const{source:c,target:d}=i.operation,u=o.findIndex(f=>f.id===c.id),p=d.index;e.move(u,p)};return n.jsxs(s.Tabs.List,{children:[n.jsx(nn.DragDropProvider,{onDragEnd:l,children:o.map((i,c)=>n.jsx(Jg,{value:i.id,index:c,children:a(i,c)},i.id))}),n.jsx(s.Tabs.Tab,{onClick:t,value:"add",children:n.jsx(s.Tooltip,{label:r,children:n.jsx(s.Center,{children:n.jsx(S.IconPlus,{size:18,color:"#228be6"})})})})]})},Rg={tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},R=({control:e,watch:t,name:r,getItem:a,children:o,addButtonText:l,deleteButtonText:i,renderTabName:c,deleteDisalbed:d})=>{var E;const u=y.useFieldArray({control:e,name:r}),{fields:p,append:f,remove:v}=u,_=t(r),w=p.map((A,U)=>({...A,..._[U]})),x=((E=b.last(w))==null?void 0:E.id)??null,[T,D]=h.useState(x),z=A=>{A!=="add"&&D(A)};h.useEffect(()=>{D(A=>x===A?A:x)},[x]);const I=()=>{const A=a();u.append(A),D(A.id)};return n.jsxs(s.Tabs,{value:T,onChange:z,styles:Rg,children:[n.jsx(Hg,{fieldArray:u,add:I,addButtonText:l,renderTabName:c,controlledFields:w}),w.map((A,U)=>n.jsx(s.Tabs.Panel,{value:A.id,children:n.jsxs(s.Stack,{children:[o({field:A,index:U}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed"}),n.jsx(s.Button,{leftSection:n.jsx(S.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>v(U),sx:{top:15,right:5},disabled:d==null?void 0:d({field:A,index:U,fields:w}),children:i})]})},A.id))]})},vn=h.forwardRef(({value:e,onChange:t},r)=>{const{t:a}=m.useTranslation(),o=l=>i=>{t({...e,[l]:i})};return n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{variant:"dashed",label:a("chart.zooming.scroll.label"),labelPosition:"center"}),n.jsxs(s.Group,{children:[n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.scroll.x_axis"),checked:e.x_axis_scroll,onChange:l=>o("x_axis_scroll")(l.currentTarget.checked)})}),n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.scroll.y_axis"),checked:e.y_axis_scroll,onChange:l=>o("y_axis_scroll")(l.currentTarget.checked)})})]}),n.jsx(s.Divider,{variant:"dashed",label:a("chart.zooming.slider.label"),labelPosition:"center"}),n.jsxs(s.Group,{children:[n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.slider.x_axis"),checked:e.x_axis_slider,onChange:l=>o("x_axis_slider")(l.currentTarget.checked)})}),n.jsx(s.Tooltip,{label:a("chart.zooming.slider.y_axis_disabled"),children:n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.zooming.slider.y_axis"),disabled:!e.y_axis_slider,checked:e.y_axis_slider,onChange:l=>o("y_axis_slider")(l.currentTarget.checked)})})})]})]})}),bt=h.forwardRef(({label:e,value:t,onChange:r,sx:a={},disabled:o},l)=>{const{t:i,i18n:c}=m.useTranslation(),d=h.useMemo(()=>[{label:i("chart.orientation.horizontal"),value:"horizontal"},{label:i("chart.orientation.vertical"),value:"vertical"}],[c.language]);return n.jsx(s.Select,{ref:l,label:e??i("chart.orientation.label"),data:d,value:t,onChange:Z(r),sx:a,disabled:o})}),ef=({control:e,watch:t})=>{const{t:r}=m.useTranslation(),a=t("legend"),o=(l,i)=>{const c={...a,orient:l};l==="horizontal"?(c.top="0",c.left="auto",c.right="10",c.bottom="auto"):(c.top="10",c.left="auto",c.right="0",c.bottom="auto"),i(c)};return n.jsxs(s.Stack,{children:[n.jsx(s.Group,{grow:!0,wrap:"nowrap",mt:20,children:n.jsx(y.Controller,{name:"legend.show",control:e,render:({field:l})=>n.jsx(s.Switch,{label:r("chart.legend.show_legend"),sx:{flex:1},checked:l.value,onChange:i=>l.onChange(i.currentTarget.checked)})})}),n.jsx(s.Group,{children:n.jsx(y.Controller,{name:"legend",control:e,render:({field:l})=>n.jsx(bt,{sx:{flex:1},value:l.value.orient,onChange:i=>{o(i,l.onChange)},disabled:!a.show})})})]})};function tf({control:e,index:t,variableOptions:r}){const{t:a}=m.useTranslation();return n.jsxs(s.Stack,{my:0,p:"md",pr:40,sx:{border:"1px solid #eee",position:"relative"},children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:o})=>n.jsx(s.TextInput,{label:a("common.name"),placeholder:a("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...o})}),n.jsx(y.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:o})=>n.jsx(s.Select,{label:a("common.value"),required:!0,data:r,sx:{flex:1},...o})})]}),n.jsx(y.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:o})=>n.jsx(s.TextInput,{label:a("chart.content_template.label"),placeholder:a("chart.content_template.placeholder"),required:!0,sx:{flex:1},...o})})]})}function nf({control:e,watch:t,variables:r}){const{t:a}=m.useTranslation(),o=()=>({name:"",template:"",variable_key:""}),l=h.useMemo(()=>r.map(c=>({label:c.name,value:c.name})),[r]),i=(c,d)=>{const u=c.name.trim();return u||d+1};return n.jsx(R,{control:e,watch:t,name:"reference_lines",getItem:o,addButtonText:a("chart.reference_line.add"),deleteButtonText:a("chart.reference_line.delete"),renderTabName:i,children:({field:c,index:d})=>n.jsx(tf,{control:e,index:d,variableOptions:l})})}const rf=({control:e,index:t})=>{const{t:r}=m.useTranslation();return n.jsxs(s.Stack,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("common.name"),required:!0,sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:a})=>n.jsx(L,{label:r("chart.data_field"),required:!0,sx:{flex:1},...a})})]}),n.jsx(y.Controller,{name:`tooltip.metrics.${t}.unit`,control:e,render:({field:a})=>n.jsx(ue,{hiddenFileds:["show_in_legend"],...a})})]})},af=({control:e,watch:t})=>{const{t:r}=m.useTranslation(),a=()=>({id:Date.now().toString(),data_key:"",name:"",unit:K()}),o=(l,i)=>{const c=l.name.trim();return c||i+1};return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{gap:2,sx:{cursor:"default",userSelect:"none"},children:[n.jsx(S.IconInfoCircle,{size:14,color:"#888"}),n.jsx(s.Text,{size:"14px",c:"#888",children:r("chart.tooltip.additional_metrics.description")})]}),n.jsx(R,{control:e,watch:t,name:"tooltip.metrics",getItem:a,addButtonText:r("chart.tooltip.additional_metrics.add"),deleteButtonText:r("chart.tooltip.additional_metrics.delete"),renderTabName:o,children:({field:l,index:i})=>n.jsx(rf,{control:e,index:i})})]})};function sf({control:e,watch:t}){return n.jsx(s.Stack,{children:n.jsx(af,{control:e,watch:t})})}const ot=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},o)=>{const{t:l}=m.useTranslation();return n.jsx(s.NumberInput,{ref:o,label:e??l("chart.rotate"),hideControls:!0,min:-90,max:90,rightSection:n.jsx(s.Text,{size:"xs",c:"dimmed",children:l("chart.degree")}),sx:a,styles:{section:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},value:t,onChange:i=>{typeof i!="string"&&r(i)}})}),of=({control:e,watch:t})=>{const{t:r}=m.useTranslation();return t(["x_axis"]),n.jsxs(s.Stack,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.name",control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.x_axis.x_axis_name"),sx:{flex:1},...a})}),n.jsx(y.Controller,{name:"x_axis.data_key",control:e,render:({field:a})=>n.jsx(L,{label:r("chart.x_axis.x_axis_data_field"),required:!0,sx:{flex:1},...a})})]}),n.jsx(s.Divider,{mb:-15,label:r("chart.axis.tick_label"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:a})=>n.jsx(ot,{sx:{width:"48%"},...a})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:a})=>n.jsx(et,{...a})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:a})=>n.jsx(tt,{...a})})]})},zr={root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}},lf=["123456789","1234","1234.56789","1.234","0.123456789","-0.123456789"];function cf({format:e}){const{t}=m.useTranslation(),[r,{toggle:a}]=te.useDisclosure(!1);return n.jsxs(s.Box,{children:[n.jsx(s.Button,{variant:"subtle",w:"100%",size:"compact-sm",onClick:a,leftSection:r?n.jsx(S.IconChevronUp,{size:14}):n.jsx(S.IconChevronDown,{size:14}),children:t(r?"numbro.format.preview.close":"numbro.format.preview.open")}),n.jsx(s.Collapse,{in:r,children:r&&n.jsxs(s.Table,{highlightOnHover:!0,sx:{tableLayout:"fixed"},children:[n.jsx(s.Table.Thead,{children:n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Th,{children:t("numbro.format.preview.input")}),n.jsx(s.Table.Th,{children:t("numbro.format.preview.output")})]})}),n.jsx(s.Table.Tbody,{children:lf.map(o=>n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{children:o}),n.jsx(s.Table.Td,{children:n.jsx(ne,{children:Y(o,e)})})]},o))})]})})]})}function df({value:e,onChange:t},r){const{t:a}=m.useTranslation(),o=u=>{t({...e,output:u,absolute:!1,average:!1,trimMantissa:!1,mantissa:0})},l=u=>{if(typeof u=="string")return;const p=u===0?!1:e.trimMantissa;t({...e,mantissa:u,trimMantissa:p})},i=u=>{t({...e,trimMantissa:u.currentTarget.checked})},c=u=>{t({...e,average:u.currentTarget.checked})},d=u=>{const p={...e,absolute:u.currentTarget.checked};t(p)};return n.jsxs(s.Stack,{ref:r,children:[n.jsxs(s.Group,{grow:!0,children:[n.jsx(s.Select,{label:a("numbro.format.label"),data:[{label:"1234",value:"number"},{label:"99%",value:"percent"}],value:e.output,onChange:Z(o),sx:{flexGrow:1}}),n.jsx(s.Switch,{label:n.jsxs(s.Stack,{gap:0,children:[n.jsx(s.Text,{size:"sm",children:a("numbro.format.absolute")}),n.jsx(s.Text,{size:"12px",c:"gray",children:a("numbro.format.absolute_description")})]}),checked:e.absolute,onChange:d,sx:{flexGrow:1},styles:zr}),n.jsx(s.Switch,{label:n.jsxs(s.Stack,{gap:0,children:[n.jsx(s.Text,{size:"sm",children:a("numbro.format.abbreviation")}),n.jsx(s.Text,{size:"12px",c:"gray",children:a("numbro.format.abbreviation_description")})]}),checked:e.average,onChange:c,disabled:e.output!=="number",sx:{flexGrow:1},styles:zr})]}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(s.NumberInput,{label:a("numbro.format.mantissa"),defaultValue:0,min:0,step:1,max:4,value:e.mantissa,onChange:l}),n.jsx(s.Switch,{label:n.jsxs(s.Stack,{gap:0,children:[n.jsx(s.Text,{size:"sm",children:a("numbro.format.trim_mantissa")}),n.jsx(s.Text,{size:"12px",c:"gray",children:a("numbro.format.trim_mantissa_description")})]}),checked:e.trimMantissa,onChange:i,disabled:e.mantissa===0,styles:zr}),n.jsx(s.Box,{})]}),n.jsx(cf,{format:e})]})}const Ke=h.forwardRef(df),uf=({control:e,watch:t})=>{const{t:r}=m.useTranslation();return t(["y_axis"]),n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"y_axis.name",control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.y_axis_name"),sx:{flex:1},...a})}),n.jsx(y.Controller,{name:"y_axis.data_key",control:e,render:({field:a})=>n.jsx(L,{label:r("chart.y_axis.y_axis_data_field"),required:!0,sx:{flex:1},...a})})]}),n.jsx(y.Controller,{name:"y_axis.unit",control:e,render:({field:a})=>n.jsx(ue,{hiddenFileds:["show_in_legend"],...a})}),n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mt:10,mb:-15,variant:"dashed",label:r("chart.axis.section_title.label_format"),labelPosition:"center"}),n.jsx(y.Controller,{name:"y_axis.label_formatter",control:e,render:({field:a})=>n.jsx(Ke,{...a})})]})]})};function pf({context:e}){const{t}=m.useTranslation(),{value:r,set:a}=q(e.instanceData,"config"),{variables:o}=e,l=h.useMemo(()=>b.defaults({},r,mr),[r]),{control:i,handleSubmit:c,watch:d,formState:u,reset:p}=y.useForm({defaultValues:l});return h.useEffect(()=>{p(l)},[l]),d(["x_axis","y_axis","reference_lines","color","dataZoom"]),n.jsx(s.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:c(a),children:[n.jsx(se,{canSubmit:u.isDirty}),n.jsxs(s.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[n.jsxs(s.Tabs.List,{children:[n.jsx(s.Tabs.Tab,{value:"X Axis",children:t("chart.x_axis.label")}),n.jsx(s.Tabs.Tab,{value:"Y Axis",children:t("chart.y_axis.label")}),n.jsx(s.Tabs.Tab,{value:"Legend",children:t("chart.legend.label")}),n.jsx(s.Tabs.Tab,{value:"Tooltip",children:t("chart.tooltip.label")}),n.jsx(s.Tabs.Tab,{value:"Style",children:t("chart.style.label")}),n.jsx(s.Tabs.Tab,{value:"Reference Lines",children:t("chart.reference_line.labels")}),n.jsx(s.Tabs.Tab,{value:"Zooming",children:t("chart.zooming.label")})]}),n.jsx(s.Tabs.Panel,{value:"X Axis",children:n.jsx(of,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Y Axis",children:n.jsx(uf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Legend",children:n.jsx(ef,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Tooltip",children:n.jsx(sf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Style",children:n.jsx(s.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:"color",control:i,render:({field:f})=>n.jsx(ye,{label:t("chart.color.label"),...f})})})}),n.jsx(s.Tabs.Panel,{value:"Reference Lines",children:n.jsx(nf,{variables:o,control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Zooming",children:n.jsx(y.Controller,{name:"dataZoom",control:i,render:({field:f})=>n.jsx(vn,{...f})})})]})]})})}function hf(e){return b.omit(e,"variables")}function gf(e){const{label_formatter:t=de,...r}=e.y_axis;return{...e,y_axis:{...r,label_formatter:t}}}function ff(e){const t={rotate:0,formatter:_e()},{axisLabel:r=t,...a}=e.x_axis;return{...e,x_axis:{...a,axisLabel:r}}}function bf(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return b.defaultsDeep(t,e)}function yf(e){delete e.config;const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,a={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return b.defaultsDeep(a,e)}function vf(e){const t={tooltip:{metrics:[]}};return b.defaultsDeep(t,e)}function _f(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const a=d=>d&&`${r}.${d}`,{x_axis:o,y_axis:l,tooltip:i,...c}=e;return{...c,x_axis:{...o,data_key:a(o.data_key)},y_axis:{...l,data_key:a(l.data_key)},tooltip:{...i,metrics:i.metrics.map(d=>({...d,data_key:a(d.data_key)}))}}}catch(r){throw console.error("[Migration failed]",r),r}}function mf(e){const t={legend:{show:!0,top:"0",right:"10",left:"auto",bottom:"auto",orient:"horizontal",type:"scroll"}};return b.defaultsDeep(t,e)}function wf(e){const{dataZoom:t,...r}=e;return{...r,dataZoom:t??Io()}}function xf(e){const t=e.tooltip.metrics;return{...e,tooltip:{...e.tooltip,metrics:t.map(r=>({...r,unit:r.unit??K()}))}}}function Cf(e){const{y_axis:t}=e;return{...e,y_axis:{...t,unit:t.unit??K()}}}class Sf extends H{constructor(){super(...arguments);V(this,"VERSION",12)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:a})=>{const{config:o}=r;return(o.variables||[]).forEach(i=>{a.variables.find(c=>c.name===i.name)||a.addVariable(i)}),{...r,version:2,config:hf(o)}}),this.version(3,r=>{const{config:a}=r;return{...r,version:3,config:gf(a)}}),this.version(4,r=>{const{config:a}=r;return{...r,version:4,config:ff(a)}}),this.version(5,r=>{const{config:a}=r;return{...r,version:5,config:bf(a)}}),this.version(6,r=>{const{config:a}=r;return{...r,version:6,config:yf(a)}}),this.version(7,r=>{const{config:a}=r;return{...r,version:7,config:vf(a)}}),this.version(8,(r,a)=>{const{config:o}=r;return{...r,version:8,config:_f(o,a)}}),this.version(9,r=>{const{config:a}=r;return{...r,version:9,config:mf(a)}}),this.version(10,r=>{const{config:a}=r;return{...r,version:10,config:wf(a)}}),this.version(11,r=>{const{config:a}=r;return{...r,version:11,config:xf(a)}}),this.version(12,r=>{const{config:a}=r;return{...r,version:12,config:Cf(a)}})}}const Tf={displayName:"viz.boxplot.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new Sf,name:"boxplot",viewRender:Gg,configRender:pf,createConfig(){return{version:12,config:b.cloneDeep(mr)}},triggers:[Vo],translation:vh},Qo={id:"builtin:button:click-button",displayName:"viz.button.click.label",nameRender:Df,configRender:kf,payload:[]};function kf(e){return n.jsx(n.Fragment,{})}function Df(e){const{t}=m.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.button.click.label")})}const Mr={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},zf={left:"flex-start",center:"center",right:"flex-end"},Mf={top:"flex-start",center:"center",bottom:"flex-end"},If=k.observer(({context:e,instance:t})=>{const r=Ve({vizManager:e.vizManager,instance:t}),a=Ie(r.triggerManager,Qo.id),o=J(),{value:l}=q(e.instanceData,"config"),i=h.useMemo(()=>b.defaultsDeep({},l,Mr),[l]),{content:c,horizontal_align:d,vertical_align:u,compact:p,size:f,...v}=i,{width:_,height:w}=e.viewport,x=o.payloadForSQL,T=()=>{a.forEach(z=>{r.runInteraction(z.id,{})})},D=p?`compact-${f}`:f;return n.jsx(s.Center,{sx:{width:_,height:w,justifyContent:zf[d],alignItems:Mf[u]},children:n.jsx(s.Button,{size:D,...v,onClick:T,children:b.template(c)(x)})})}),Vf=({value:e,onChange:t,label:r})=>{const a=s.useMantineTheme(),o=h.useCallback(i=>()=>t(i),[t]),l=i=>e===i;return n.jsxs(s.Stack,{gap:2,children:[n.jsx(s.Text,{size:"14px",fw:500,children:r}),n.jsx(s.Group,{justify:"flex-start",gap:"xs",children:Object.keys(a.colors).map(i=>{const c=a.colors[i][6];return n.jsx(s.ColorSwatch,{color:c,onClick:o(i),radius:4,size:26,sx:{cursor:"pointer"},children:l(i)&&n.jsx(s.CheckIcon,{width:10,color:"white"})},i)})})]})},Pf=["xs","sm","md","lg","xl"],Ir=h.forwardRef(({label:e,value:t,onChange:r,sx:a,disabled:o},l)=>{const{t:i,i18n:c}=m.useTranslation(),d=h.useMemo(()=>Pf.map(u=>({label:i(`style.size.${u}`),value:u})),[c.language]);return n.jsx(s.Select,{ref:l,data:d,label:e,value:t,onChange:Z(r),sx:a,disabled:!0})}),$f=[{label:"Filled",value:"filled"},{label:"Outline",value:"outline"},{label:"Light",value:"light"},{label:"White",value:"white"},{label:"Default",value:"default"},{label:"Subtle",value:"subtle"},{label:"Gradient",value:"gradient",disabled:!0}];function Af({context:e}){const{value:t,set:r}=q(e.instanceData,"config"),a=h.useMemo(()=>b.defaultsDeep({},t,Mr),[t]),o=a;h.useEffect(()=>{!b.isEqual(a,o)&&(console.log("config malformed, resetting to defaults",a,o),r(o))},[a,o]);const{control:l,handleSubmit:i,watch:c,formState:d,reset:u}=y.useForm({defaultValues:o});return h.useEffect(()=>{u(o)},[o]),c(["content","variant","color","size","compact","horizontal_align","vertical_align"]),n.jsxs("form",{onSubmit:i(r),children:[n.jsx(se,{canSubmit:d.isDirty}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{control:l,name:"content",render:({field:p})=>n.jsx(s.TextInput,{label:"Content Template",description:"Filter values & context entries are supported",...p,required:!0})}),n.jsx(s.Divider,{mt:"xs",mb:0,label:"Styles",labelPosition:"center",variant:"dashed"}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:l,name:"variant",render:({field:p})=>n.jsx(s.Select,{label:"Variant",data:$f,...p})}),n.jsx(y.Controller,{control:l,name:"color",render:({field:p})=>n.jsx(Vf,{label:"Theme",...p})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:l,name:"size",render:({field:p})=>n.jsx(Ir,{label:"Size",...p})}),n.jsx(y.Controller,{control:l,name:"compact",render:({field:p})=>n.jsx(s.Checkbox,{label:"Compact",checked:p.value,onChange:f=>p.onChange(f.currentTarget.checked),mt:26})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:l,name:"horizontal_align",render:({field:p})=>n.jsx(Dr,{...p})}),n.jsx(y.Controller,{control:l,name:"vertical_align",render:({field:p})=>n.jsx(No,{...p})})]})]})]})}const Ef=[{lang:"en",resources:{button:{viz_name:"Button",click:{label:"Click this button"}}}},{lang:"zh",resources:{button:{viz_name:"按钮",click:{label:"点击此按钮"}}}}];class Bf extends H{constructor(){super(...arguments);V(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{horizontal_align:a="left",vertical_align:o="center",...l}=r.config;return{...r,version:2,config:{...l,horizontal_align:a,vertical_align:o}}})}}const qf={displayName:"viz.button.viz_name",displayGroup:"chart.groups.others",migrator:new Bf,name:"button",viewRender:If,configRender:Af,createConfig(){return{version:2,config:b.cloneDeep(Mr)}},triggers:[Qo],translation:Ef},_n=({label:e,field:t})=>{const{t:r}=m.useTranslation();return n.jsx(s.ColorInput,{label:e,placeholder:r("chart.visual_map.skip_range.follow_visual_map"),size:"xs",popoverProps:{withinPortal:!0,zIndex:340},rightSection:t.value?n.jsx(s.CloseButton,{size:"sm",onClick:()=>{t.onChange("")}}):null,...t})},Lf=({form:e})=>{const{t}=m.useTranslation();return n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.lt_min",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.lt_min")})}),n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.min",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.min")})}),n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.max",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.max")})}),n.jsx(y.Controller,{control:e.control,name:"visualMap.skipRange.gt_max",render:({field:r})=>n.jsx(_n,{field:r,label:t("chart.visual_map.skip_range.gt_max")})})]})},Of=({form:e})=>{const{t,i18n:r}=m.useTranslation(),a=e.control,o=e.watch("visualMap"),{type:l,orient:i}=o,c=i==="horizontal",d=u=>p=>{typeof p!="string"&&u(p)};return l!=="continuous"?null:n.jsxs(s.Stack,{children:[n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.text.1",control:a,render:({field:u})=>n.jsx(s.TextInput,{label:t("chart.visual_map.min_text"),...u})}),n.jsx(y.Controller,{name:"visualMap.text.0",control:a,render:({field:u})=>n.jsx(s.TextInput,{label:t("chart.visual_map.max_text"),...u})})]}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.orient",control:a,render:({field:u})=>n.jsx(bt,{sx:{flex:1},...u})}),n.jsx(y.Controller,{name:"visualMap.calculable",control:a,render:({field:u})=>n.jsx(s.Checkbox,{label:t("chart.visual_map.calculable"),checked:u.value,onChange:p=>u.onChange(p.currentTarget.checked),styles:{root:{transform:"translateY(12px)"}}})})]}),n.jsxs(s.Group,{grow:!0,styles:{root:{flexDirection:c?"row-reverse":"row"}},children:[n.jsx(y.Controller,{name:"visualMap.itemWidth",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t(c?"chart.visual_map.bar_height":"chart.visual_map.bar_width"),...u,onChange:d(u.onChange)})}),n.jsx(y.Controller,{name:"visualMap.itemHeight",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t(c?"chart.visual_map.bar_width":"chart.visual_map.bar_height"),...u,onChange:d(u.onChange)})})]}),n.jsx(y.Controller,{name:"visualMap.inRange.color",control:a,render:({field:u})=>n.jsx(co,{...u})}),n.jsx(Lf,{form:e})]})},Nf=({visualMap:e})=>{const{orient:t,itemWidth:r,itemHeight:a}=e,l=t==="horizontal"?r:a,{panel:i}=ae(),c=un(e,i.variableValueMap);return n.jsx(ne,{children:n.jsx(he,{echarts:ce,option:{visualMap:c},style:{width:"100%",height:`${l+40}px`},notMerge:!0,theme:"merico-light"})})},jo={lower:[{label:"<",value:"gt"},{label:"≤",value:"gte"}],upper:[{label:">",value:"lt"},{label:"≥",value:"lte"}]},Wo={gt:"(",gte:"[",lt:")",lte:"]"},Uo=(e,t)=>e===""?t:Number.isNaN(Number(e))?"INVALID VALUE":e,Gf=({form:e,index:t})=>{const{t:r}=m.useTranslation(),{control:a,watch:o}=e,l=o(`visualMap.pieces.${t}`),{lower:i,upper:c}=l,d=[Wo[i.symbol],Uo(i.value,r("chart.visual_map.min_value")),",",Uo(c.value,r("chart.visual_map.max_value")),Wo[c.symbol]].join(""),[u,p]=h.useState(!1);return n.jsx(s.Group,{wrap:"nowrap",children:n.jsxs(s.Popover,{width:400,position:"bottom",withArrow:!0,shadow:"md",opened:u,onChange:p,withinPortal:!0,zIndex:340,children:[n.jsx(s.Popover.Target,{children:n.jsx(s.Button,{variant:"subtle",size:"compact-sm",px:0,onClick:()=>p(f=>!f),fw:"normal",ff:"monospace",children:d})}),n.jsx(s.Popover.Dropdown,{children:n.jsxs(s.Group,{wrap:"nowrap",gap:8,children:[n.jsx(y.Controller,{name:`visualMap.pieces.${t}.lower.value`,control:a,render:({field:f})=>n.jsx(s.TextInput,{...f,placeholder:r("chart.visual_map.min_value"),size:"xs",onChange:v=>f.onChange(v.currentTarget.value),error:f.value!==""&&Number.isNaN(Number(f.value))})}),n.jsx(y.Controller,{name:`visualMap.pieces.${t}.lower.symbol`,control:a,render:({field:f})=>n.jsx(s.Select,{size:"xs",data:jo.lower,...f,onChange:Z(v=>f.onChange(v))})}),n.jsx(s.Text,{c:"dimmed",size:"sm",sx:{userSelect:"none",cursor:"default"},children:r("common.value").toLowerCase()}),n.jsx(y.Controller,{name:`visualMap.pieces.${t}.upper.symbol`,control:a,render:({field:f})=>n.jsx(s.Select,{size:"xs",data:jo.upper,...f,onChange:Z(v=>f.onChange(v))})}),n.jsx(y.Controller,{name:`visualMap.pieces.${t}.upper.value`,control:a,render:({field:f})=>n.jsx(s.TextInput,{...f,size:"xs",placeholder:r("chart.visual_map.max_value"),onChange:v=>f.onChange(v.currentTarget.value),error:f.value!==""&&Number.isNaN(Number(f.value))})})]})})]})})},Ff=({form:e,index:t,remove:r})=>{const{control:a}=e,{t:o}=m.useTranslation();return n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{children:(t+1).toString()}),n.jsx(s.Table.Td,{children:n.jsx(Gf,{form:e,index:t})}),n.jsx(s.Table.Td,{children:n.jsx(y.Controller,{name:`visualMap.pieces.${t}.label`,control:a,render:({field:l})=>n.jsx(s.TextInput,{size:"xs",placeholder:"",...l,onChange:i=>l.onChange(i.currentTarget.value)})})}),n.jsx(s.Table.Td,{children:n.jsx(y.Controller,{name:`visualMap.pieces.${t}.color`,control:a,render:({field:l})=>n.jsx(s.ColorInput,{label:o(""),placeholder:o("chart.color.label"),size:"xs",popoverProps:{withinPortal:!0,zIndex:340},rightSection:l.value?n.jsx(s.CloseButton,{size:"sm",onClick:()=>{l.onChange("")}}):null,...l})})}),n.jsx(s.Table.Td,{children:n.jsx(s.CloseButton,{size:"sm",onClick:()=>r(t)})})]})},Qf=({form:e})=>{const{t,i18n:r}=m.useTranslation(),{fields:a,append:o,remove:l}=y.useFieldArray({control:e.control,name:"visualMap.pieces"}),i=e.watch("visualMap.pieces"),c=a.map((u,p)=>({...u,...i[p]})),d=()=>{o(io())};return n.jsx(s.Stack,{children:n.jsxs(s.Table,{children:[n.jsx(s.Table.Thead,{children:n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Th,{style:{width:"40px"}}),n.jsx(s.Table.Th,{children:t("chart.visual_map.piecewise.interval")}),n.jsx(s.Table.Th,{children:t("chart.visual_map.piecewise.piece_label")}),n.jsx(s.Table.Th,{children:t("chart.color.label")}),n.jsx(s.Table.Th,{style:{width:"40px"}})]})}),n.jsx(s.Table.Tbody,{children:c.map((u,p)=>n.jsx(Ff,{index:p,form:e,remove:l},u.id))}),n.jsx(s.Table.Tfoot,{children:n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{}),n.jsx(s.Table.Td,{colSpan:3,children:n.jsx(s.Button,{mt:10,size:"xs",color:"blue",leftSection:n.jsx(S.IconPlaylistAdd,{size:20}),onClick:d,sx:{width:"50%"},mx:"auto",children:t("chart.visual_map.piecewise.add_a_piece")})}),n.jsx(s.Table.Td,{})]})})]})})},jf=({form:e})=>{const{t,i18n:r}=m.useTranslation(),a=e.control,o=e.watch("visualMap");h.useMemo(()=>[{label:t("chart.visual_map.piecewise.mode.pieces"),value:"pieces"},{label:t("chart.visual_map.piecewise.mode.categories"),value:"categories"}],[r.language]);const{type:l,orient:i,piecewise_mode:c}=o,d=u=>p=>{typeof p!="string"&&u(p)};return l!=="piecewise"?null:n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:"visualMap.precision",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t("chart.visual_map.precision"),...u,onChange:d(u.onChange)})}),n.jsx(y.Controller,{name:"visualMap.orient",control:a,render:({field:u})=>n.jsx(bt,{sx:{flex:1},...u})}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.itemWidth",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t("chart.visual_map.item_width"),...u,onChange:d(u.onChange)})}),n.jsx(y.Controller,{name:"visualMap.itemHeight",control:a,render:({field:u})=>n.jsx(s.NumberInput,{label:t("chart.visual_map.item_height"),...u,onChange:d(u.onChange)})})]}),c==="pieces"&&n.jsx(Qf,{form:e})]})},Vr=({form:e})=>{const{t,i18n:r}=m.useTranslation(),a=e.control,o=e.watch("visualMap"),l=h.useMemo(()=>[{label:t("chart.visual_map.continuous.label"),value:"continuous"},{label:t("chart.visual_map.piecewise.label"),value:"piecewise"}],[r.language]),i=c=>{switch(c){case"continuous":e.setValue("visualMap",lo());break;case"piecewise":e.setValue("visualMap",wp());break;default:return}};return n.jsx(ne,{children:n.jsxs(s.Stack,{children:[n.jsx(Nf,{visualMap:o}),n.jsx(y.Controller,{name:"visualMap.type",control:a,render:({field:c})=>n.jsx(s.SegmentedControl,{mt:-10,data:l,sx:{flex:1},...c,onChange:i})}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:"visualMap.min",control:a,render:({field:c})=>n.jsx(so,{label:t("chart.visual_map.min_value"),...c})}),n.jsx(y.Controller,{name:"visualMap.max",control:a,render:({field:c})=>n.jsx(so,{label:t("chart.visual_map.max_value"),...c})})]}),n.jsx(s.Divider,{variant:"dashed"}),n.jsx(Of,{form:e}),n.jsx(jf,{form:e})]})})};function Wf(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const a=d=>d&&`${r}.${d}`,{calendar:o,heat_block:l,tooltip:i,...c}=e;return{...c,calendar:{...o,data_key:a(o.data_key)},heat_block:{...l,data_key:a(l.data_key)},tooltip:{...i,metrics:i.metrics.map(d=>({...d,data_key:a(d.data_key)}))}}}catch(r){throw console.error("[Migration failed]",r),r}}function Uf(e){const{heat_block:t}=e;let{min:r,max:a}=t;return typeof r!="number"&&(r=0),typeof a!="number"&&(a=100),{...e,heat_block:{...t,min:{type:"static",value:r},max:{type:"static",value:a}}}}function Kf(e){const{visualMap:t=at(),heat_block:{min:r,max:a,...o},...l}=e;return{...l,heat_block:o,visualMap:{...at(),min:r,max:a}}}function Yf(e){const t=e.tooltip.metrics;return{...e,tooltip:{...e.tooltip,metrics:t.map(r=>({...r,unit:r.unit??K()}))}}}function Xf(e){const{heat_block:t}=e;return{...e,heat_block:{...t,unit:t.unit??K()}}}const Zf=[{lang:"en",resources:{calendar_heatmap:{viz_name:"Heatmap(Calendar)",calendar:{label:"Calendar",locale:"Langauge"},click_heatmap:{heatblock:{label:"Click heat block"}}}}},{lang:"zh",resources:{calendar_heatmap:{viz_name:"日历热力图",calendar:{label:"日历",locale:"语言"},click_heatmap:{heatblock:{label:"点击热力块"}}}}}];function Jf(e){return n.jsx(n.Fragment,{})}function Hf(e){const{t}=m.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.calendar_heatmap.click_heatmap.heatblock.label")})}const Ko={id:"builtin:echarts:click-heatmap:heat-block",displayName:"viz.calendar_heatmap.click_heatmap.heatblock.label",nameRender:Hf,configRender:Jf,payload:[{name:"seriesType",description:"'heatmap'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Pr={calendar:{data_key:"",locale:"EN"},heat_block:{name:"Value",data_key:"",unit:K(),value_formatter:de},tooltip:{metrics:[]},visualMap:at()};function Rf(e,t,r){if(!e)return r[0];try{return[t,M(t).add(1,"year").subtract(1,"day").valueOf()]}catch(a){return console.error(a),r[0]}}function eb(e,t,r){const a=Rf(e,t,r);return{top:50,left:25,right:5,cellSize:["auto",13],range:a,itemStyle:{borderColor:"#eee"},splitLine:{show:!0},dayLabel:{firstDay:1},monthLabel:{position:"end"},yearLabel:{show:!0}}}function tb(e){return{heat_block:function(a){if(!e.heat_block.value_formatter)return a;try{return Y(a,e.heat_block.value_formatter)}catch(o){return console.error(o),a}}}}function nb(e,t){return{show:!e,selectedMode:"single",top:5,right:5,data:t.map(r=>({name:r,icon:"circle"}))}}function rb(e,t,r){return e?{type:"heatmap",name:"heatmap",coordinateSystem:"calendar",calendarIndex:0,data:r}:Object.entries(t).map(([a,o])=>({type:"heatmap",name:a,coordinateSystem:"calendar",calendarIndex:0,data:o}))}const ab=e=>Y(e,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function sb({conf:e,valueFormatters:t,dataDict:r,params:a,metricUnitMap:o}){const{value:l}=a,[i,c]=l,u=[{label:e.heat_block.name,value:t.heat_block(c),unit:e.heat_block.unit.show_in_tooltip?e.heat_block.unit.text:""}],p=r[i];return p&&e.tooltip.metrics.forEach(f=>{const v=$(f.data_key),_=o[f.name]??"";u.push({label:f.name,value:ab(b.get(p,v.columnKey,"")),unit:_})}),u}function ob(e,t,r){const a=$(e.calendar.data_key),o=b.keyBy(t[a.queryID],a.columnKey),l=e.tooltip.metrics.reduce((i,{unit:c,name:d})=>(c.show_in_tooltip&&(i[d]=c.text),i),{});return X.getTooltip({formatter:function(i){const d=sb({conf:e,valueFormatters:r,dataDict:o,params:i,metricUnitMap:l}).map(f=>`
120
120
  <tr>
121
121
  <th style="text-align: right; padding: 0 1em;">
122
122
  ${f.label}