@devtable/dashboard 14.19.2 → 14.19.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.
- package/dist/dashboard.es.js +2 -1
- package/dist/dashboard.umd.js +2 -2
- package/dist/stats.html +1 -1
- package/dist/version.json +2 -2
- package/package.json +1 -1
package/dist/dashboard.es.js
CHANGED
|
@@ -2419,7 +2419,7 @@ function um() {
|
|
|
2419
2419
|
} = A.useContext(es);
|
|
2420
2420
|
return e ? document.getElementById(e) : null;
|
|
2421
2421
|
}
|
|
2422
|
-
const ns = "14.19.
|
|
2422
|
+
const ns = "14.19.4", hm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
2423
2423
|
__proto__: null,
|
|
2424
2424
|
version: ns
|
|
2425
2425
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -9125,6 +9125,7 @@ function e_({
|
|
|
9125
9125
|
};
|
|
9126
9126
|
if (v.type === "line" && (Q.lineStyle = {
|
|
9127
9127
|
width: v.lineStyle.width,
|
|
9128
|
+
type: v.lineStyle.type,
|
|
9128
9129
|
shadowColor: "rgba(255,255,255,1)",
|
|
9129
9130
|
shadowBlur: 0,
|
|
9130
9131
|
shadowOffsetX: 0,
|
package/dist/dashboard.umd.js
CHANGED
|
@@ -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_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:"其他"},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:"可见"},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 Gt{constructor(t){P(this,"rootRef");this.rootRef=j.observable({current:t})}async deleteItem(t){j.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?j.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(b.isObject(r))j.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else j.runInAction(()=>{b.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return j.reaction(()=>this.getValueFromRoot(t),(l,o)=>{r(l,o)},{requiresObservable:!0,fireImmediately:b.get(a,"fireImmediately",!1)})}}class Ad{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new qa)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new qa;return this.channels.set(t,a),a}}class Pd{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const a={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Ad,instanceData:new Gt(t.viz.conf)};return this.instances.set(t.id,a),a}}function is(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Gt({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const Vd=e=>{const{panel:t,measure:r,vizManager:a,data:l,variables:o}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...is(c,l,a,o),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...b.omit(e,["panel","vizManager","data"])})},$d=e=>{const{vizManager:t,panel:r,data:a,variables:l}=e,o=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...is(i,a,t,l)},d=o.configRender;return n.jsx(d,{context:c,instance:i,...b.omit(e,["panel","vizManager","data"])})},cs=(e,t)=>{const r=Ee.bezier(e),a=Ee.bezier(t);return function(l){return l<50?r(l*2/100).hex():a((l-50)*2/100).hex()}},Ft=e=>{const t=Ee.bezier(e);return function(r){return t(r/100).hex()}},Ed={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:cs(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Bd={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:cs(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ld={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:Ft(["#fff7f1","darkred"]),name:"red",category:"sequential"},qd={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:Ft(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Od={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:Ft(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Nd={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:Ft(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Gd{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function Ue(e){return new Gd(e)}class An{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new An;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()}}class Fd{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(l=>l.manifest.panelAddon).filter(l=>!!l).map(l=>g.createElement(l.addonRender,{...t,key:l.name}));return n.jsx(n.Fragment,{children:a})}}const ds=g.createContext({addonSlotId:null});function us({children:e}){const t=`panel-addon-slot-${g.useId()}`;return n.jsxs(ds.Provider,{value:{addonSlotId:t},children:[n.jsx("div",{style:{position:"static",top:0,left:0},id:t}),e]})}function jd(){const{addonSlotId:e}=g.useContext(ds);return e?document.getElementById(e):null}const ps="14.19.2",Qd=Object.freeze(Object.defineProperty({__proto__:null,version:ps},Symbol.toStringTag,{value:"Module"}));class Wd{constructor(t){P(this,"staticColors",new Map);P(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 Ud{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Yd{constructor(){P(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 l=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),o=b.orderBy(l,"version","asc");if(((i=b.last(o))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,d)=>d.handler(c,a),r)}}class R extends Yd{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,l)=>({version:t,...r(a,l)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),l=b.get(a,"version",0),o=this.run({from:l,to:this.VERSION},a,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return b.get(r,"version",0)<this.VERSION}}const B=(e,t)=>{const[r,{setFalse:a}]=q.useBoolean(!0),[l,o]=g.useState();g.useEffect(()=>(e.getItem(t).then(c=>{o(c),a()}),e.watchItem(t,c=>{o(c)})));const i=g.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:r,value:l,set:i}},ve={top:16,right:16,bottom:16,left:16},Le=e=>Math.max(0,e-ve.left-ve.right),qe=e=>Math.max(0,e-ve.top-ve.bottom),Mt=(e,t)=>({width:Le(e),height:qe(t)}),_e=({width:e,height:t,children:r})=>n.jsx(s.Box,{pt:ve.top,pr:ve.right,pb:ve.bottom,pl:ve.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:r});g.forwardRef(function({value:t,onChange:r,...a},l){return n.jsx(s.TextInput,{ref:l,value:t,onChange:r,...a})});class Kd{constructor({valueRange:t,colorRange:r}){P(this,"mapper");this.mapper=tt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function Xd(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 Kd(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const Zd=Xd;function A(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function Jd(e){return e.includes(".")?A(e):{queryID:"",columnKey:e}}function Me(e,t){var l;const{queryID:r,columnKey:a}=A(t);return r?a?((l=e[r])==null?void 0:l.map(o=>o[a]))??[]:e[r]:[]}function jt(e,t){const{queryID:r}=A(t);return r?e[r]:[]}function Hd(e){return Object.values(e)[0]}function Qt(e,t){const{queryID:r,columnKey:a}=A(t);return e[a]}const Oe={CryptoJS:Na,d3Array:os,dayjs:I,lodash:b,numbro:ct,mathjs:vt,faker:qc.faker,popmotion:kd},Rd=[{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"}],eu=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_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:"其他"},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:"可见"},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 Gt{constructor(t){P(this,"rootRef");this.rootRef=j.observable({current:t})}async deleteItem(t){j.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?j.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(b.isObject(r))j.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else j.runInAction(()=>{b.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return j.reaction(()=>this.getValueFromRoot(t),(l,o)=>{r(l,o)},{requiresObservable:!0,fireImmediately:b.get(a,"fireImmediately",!1)})}}class Ad{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new qa)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new qa;return this.channels.set(t,a),a}}class Pd{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const a={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Ad,instanceData:new Gt(t.viz.conf)};return this.instances.set(t.id,a),a}}function is(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Gt({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const Vd=e=>{const{panel:t,measure:r,vizManager:a,data:l,variables:o}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...is(c,l,a,o),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...b.omit(e,["panel","vizManager","data"])})},$d=e=>{const{vizManager:t,panel:r,data:a,variables:l}=e,o=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...is(i,a,t,l)},d=o.configRender;return n.jsx(d,{context:c,instance:i,...b.omit(e,["panel","vizManager","data"])})},cs=(e,t)=>{const r=Ee.bezier(e),a=Ee.bezier(t);return function(l){return l<50?r(l*2/100).hex():a((l-50)*2/100).hex()}},Ft=e=>{const t=Ee.bezier(e);return function(r){return t(r/100).hex()}},Ed={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:cs(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Bd={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:cs(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ld={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:Ft(["#fff7f1","darkred"]),name:"red",category:"sequential"},qd={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:Ft(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Od={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:Ft(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Nd={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:Ft(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Gd{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function Ue(e){return new Gd(e)}class An{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new An;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()}}class Fd{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(l=>l.manifest.panelAddon).filter(l=>!!l).map(l=>g.createElement(l.addonRender,{...t,key:l.name}));return n.jsx(n.Fragment,{children:a})}}const ds=g.createContext({addonSlotId:null});function us({children:e}){const t=`panel-addon-slot-${g.useId()}`;return n.jsxs(ds.Provider,{value:{addonSlotId:t},children:[n.jsx("div",{style:{position:"static",top:0,left:0},id:t}),e]})}function jd(){const{addonSlotId:e}=g.useContext(ds);return e?document.getElementById(e):null}const ps="14.19.4",Qd=Object.freeze(Object.defineProperty({__proto__:null,version:ps},Symbol.toStringTag,{value:"Module"}));class Wd{constructor(t){P(this,"staticColors",new Map);P(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 Ud{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Yd{constructor(){P(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 l=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),o=b.orderBy(l,"version","asc");if(((i=b.last(o))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,d)=>d.handler(c,a),r)}}class R extends Yd{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,l)=>({version:t,...r(a,l)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),l=b.get(a,"version",0),o=this.run({from:l,to:this.VERSION},a,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return b.get(r,"version",0)<this.VERSION}}const B=(e,t)=>{const[r,{setFalse:a}]=q.useBoolean(!0),[l,o]=g.useState();g.useEffect(()=>(e.getItem(t).then(c=>{o(c),a()}),e.watchItem(t,c=>{o(c)})));const i=g.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:r,value:l,set:i}},ve={top:16,right:16,bottom:16,left:16},Le=e=>Math.max(0,e-ve.left-ve.right),qe=e=>Math.max(0,e-ve.top-ve.bottom),Mt=(e,t)=>({width:Le(e),height:qe(t)}),_e=({width:e,height:t,children:r})=>n.jsx(s.Box,{pt:ve.top,pr:ve.right,pb:ve.bottom,pl:ve.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:r});g.forwardRef(function({value:t,onChange:r,...a},l){return n.jsx(s.TextInput,{ref:l,value:t,onChange:r,...a})});class Kd{constructor({valueRange:t,colorRange:r}){P(this,"mapper");this.mapper=tt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function Xd(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 Kd(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const Zd=Xd;function A(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function Jd(e){return e.includes(".")?A(e):{queryID:"",columnKey:e}}function Me(e,t){var l;const{queryID:r,columnKey:a}=A(t);return r?a?((l=e[r])==null?void 0:l.map(o=>o[a]))??[]:e[r]:[]}function jt(e,t){const{queryID:r}=A(t);return r?e[r]:[]}function Hd(e){return Object.values(e)[0]}function Qt(e,t){const{queryID:r,columnKey:a}=A(t);return e[a]}const Oe={CryptoJS:Na,d3Array:os,dayjs:I,lodash:b,numbro:ct,mathjs:vt,faker:qc.faker,popmotion:kd},Rd=[{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"}],eu=e=>`
|
|
10
10
|
<tr>
|
|
11
11
|
<td><code>${e.name}</code></td>
|
|
12
12
|
<td>
|
|
@@ -111,7 +111,7 @@ Variable: {{ your_var }}`,tabs:{guide:"Guide",vars:"Dashboard state & Panel vari
|
|
|
111
111
|
${a.join("")}
|
|
112
112
|
</tbody>
|
|
113
113
|
</table>
|
|
114
|
-
`}const Ih=(e,t)=>r=>{const{seriesName:a,value:l}=r;switch(a){case t.Box:return Sh(e,l);case t.Outlier:return zh(e,l);case t.Scatter:return Dh(e,l)}};function Mh({config:e,seriesNames:t}){return K.getTooltip({trigger:"item",formatter:Ih(e,t)})}function en(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 Ah({min:e,max:t}){if(e<=110)return Math.min(0,e);if(e<=200)return 100;const r=vt.floor(vt.log10(e)),a=Math.pow(10,r),l=Math.pow(10,r-1);return e/a<=2?b.round(e,-1*(r-1))-l:b.round(e,-1*r)-a}function Ph(e){return{Box:e("viz.boxplot.box"),Scatter:e("viz.boxplot.scatter"),Outlier:e("viz.boxplot.outlier")}}function Vh({config:e,data:t,variables:r,t:a}){const{x_axis:l,y_axis:o,reference_lines:i}=e,c=gh(e,t),d=Ve(l.axisLabel.overflow.on_axis),u=Ph(a),p=Th(e,c).map(f=>({...f,name:b.get(u,f.name,f.name)}));return{dataZoom:en(e.dataZoom,"filter"),grid:fh(e),dataset:c,legend:bh({config:e,seriesNames:u}),tooltip:Mh({config:e,seriesNames:u}),xAxis:[K.getXAxis({type:"category",name:l.name,nameGap:25,nameLocation:"center",nameTextStyle:{align:"center"},axisLabel:{...l.axisLabel,...d,formatter:xe(l.axisLabel.formatter)}})],yAxis:[K.getYAxis({name:o.name,minInterval:1,axisLabel:{formatter:function(f){return U(f,o.label_formatter)}},min:Ah})],series:[...p,...yh(i,r,t)]}}function $h({context:e,instance:t}){const{t:r}=x.useTranslation(),{value:a}=B(e.instanceData,"config"),{variables:l}=e,o=e.data,{width:i,height:c}=e.viewport,d=b.defaults({},a,Rn),u=De({vizManager:e.vizManager,instance:t}),p=ze(u.triggerManager,nl.id),f=gt(o,d.x_axis.data_key),v=g.useCallback(z=>{const D=b.get(f,z.name,{error:"rowData is not found"});p.forEach(M=>{u.runInteraction(M.id,{...z,rowData:D})})},[f,p,u]),m=g.useRef(null),_=g.useCallback(()=>{var D;const z=(D=m.current)==null?void 0:D.getEchartsInstance();z&&ge(t,z.getOption())},[]),w=g.useMemo(()=>({click:v,finished:_}),[v,_]),k=g.useMemo(()=>Vh({config:d,data:o,variables:l,t:r}),[d,o,l,r]);return!a||!i||!c?null:n.jsx(_e,{width:i,height:c,children:n.jsx(pe,{echarts:ce,option:k,ref:m,style:Mt(i,c),onEvents:w,notMerge:!0,theme:"merico-light"})})}function le({canSubmit:e,buttonRef:t}){const{t:r}=x.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(T.IconDeviceFloppy,{size:20})})]})}const lr=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("common.align.horizontal.left"),value:"left"},{label:o("common.align.horizontal.center"),value:"center"},{label:o("common.align.horizontal.right"),value:"right"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("common.align.horizontal.label"),data:c,value:t,onChange:Z(r),sx:a})}),dl=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("common.align.vertical.top"),value:"top"},{label:o("common.align.vertical.center"),value:"center"},{label:o("common.align.vertical.bottom"),value:"bottom"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("common.align.vertical.label"),data:c,value:t,onChange:Z(r),sx:a})}),ul=rt.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)"}}}})),Eh=[{from:0,to:0},{from:100,to:100}];class Bh{constructor(){P(this,"steps",new Map);P(this,"interpolation");P(this,"onChange");j.makeAutoObservable(this,{steps:j.observable},{deep:!1}),j.reaction(()=>j.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(Eh):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 pl(e){if(typeof e=="number")return String(e)}function Lh(e){const{t}=x.useTranslation(),{onChange:r,color:a,index:l,value:o}=e,{classes:i}=ul(),[c,d]=g.useState(pl(o)),[u,{setTrue:p,setFalse:f}]=q.useBoolean(!1),v=l%2===1,m=v&&o!=null,_=!v&&o!=null,w=`map ${o} to color ${l}`,k=()=>{d(pl(o)),f()},z=()=>{f(),r==null||r(Number(c))},D=()=>{f(),r==null||r(null)},M=U(o??null,{output:"number",mantissa:10,trimMantissa:!0,average:!0,absolute:!1}),O=!c||Number.isNaN(Number(c));return n.jsxs("div",{"data-testid":`palette-item-${l}`,className:i.paletteItem,children:[n.jsx(s.Text,{title:w,style:{opacity:m?1:0},c:"dimmed",size:"sm",className:"palette-value--up palette-value",children:M}),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":Ee(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:k,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:V=>{const Y=V.currentTarget.value;d(Y)},error:c&&O}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{variant:"light",color:"red",size:"xs",onClick:D,leftSection:n.jsx(T.IconTrash,{size:16}),children:t("common.actions.delete")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(T.IconDeviceFloppy,{size:16}),"data-testid":"palette-item-ok",size:"xs",onClick:z,disabled:O,children:t("common.actions.save")})]})]})]})]}),n.jsx(s.Text,{title:w,style:{opacity:_?1:0},c:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:M})]})}const qh=S.observer(({model:e})=>{const{classes:t}=ul(),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,l],o)=>n.jsx(Lh,{index:o,color:a,value:e.getStepFromValue(l),onChange:i=>e.changeStep(i,l)},a))})}),Oh=S.observer(function(t){const r=q.useCreation(()=>new Bh,[]);return g.useEffect(()=>{r.fromProps(t)}),r.interpolation==null?null:n.jsx(qh,{model:r})}),Nh=e=>{const{t,i18n:r}=x.useTranslation(),{value:a,onChange:l,colorManager:o}=e,i=o.getColorInterpolations(),[c,d]=g.useState(a),u=o.decodeInterpolation(c.interpolation)||i[0],[p,{setTrue:f,setFalse:v}]=q.useBoolean(),m=g.useMemo(()=>{const D=b.groupBy(i,"category");return Object.entries(D).map(([M,O])=>({group:t(`style.color.interpolation.palette.category.${M}`),items:O.map(V=>({label:t(V.displayName),value:o.encodeColor(V)}))}))},[r.language]);function _(D){D&&d(M=>({...M,interpolation:D}))}const w=()=>{v(),l==null||l(j.toJS(c))};function k(D){d(M=>({...M,steps:D}))}const z=()=>{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:m,onChange:_,comboboxProps:{withinPortal:!0,zIndex:340},maxDropdownHeight:500}),n.jsx(Oh,{steps:c.steps,interpolation:u,onChange:k}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{onClick:z,variant:"subtle",children:t("common.actions.cancel")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(T.IconDeviceFloppy,{size:16}),onClick:w,children:t("common.actions.save")})]})]})})]})},Gh=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("style.color.type.static"),value:"static"},{label:o("style.color.type.interpolation"),value:"interpolation"},{label:o("style.color.type.none"),value:"none"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("style.color.type.label"),data:c,value:t,onChange:Z(r),sx:a})}),Fh=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("style.flex.justify_content.left"),value:"left"},{label:o("style.flex.justify_content.center"),value:"center"},{label:o("style.flex.justify_content.right"),value:"right"},{label:o("style.flex.justify_content.space_between"),value:"space-between"},{label:o("style.flex.justify_content.space_around"),value:"space-around"},{label:o("style.flex.justify_content.space_evenly"),value:"space-evenly"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("style.flex.justify_content.label"),data:c,value:t,onChange:Z(r),sx:a})}),jh=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("style.flex.align_items.start"),value:"start"},{label:o("style.flex.align_items.center"),value:"center"},{label:o("style.flex.align_items.end"),value:"end"},{label:o("style.flex.align_items.stretch"),value:"stretch"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("style.flex.align_items.label"),data:c,value:t,onChange:Z(r),sx:a})}),Qh=({value:e,index:t,children:r})=>{const[a,{setTrue:l,setFalse:o}]=q.useBoolean(!1),{ref:i,handleRef:c}=In.useSortable({id:e,index:t});return n.jsx(s.Tabs.Tab,{ref:i,value:e,leftSection:n.jsx(T.IconGripHorizontal,{size:14,color:a||t===0?"rgb(34, 139, 230)":"transparent"}),onMouseEnter:l,onMouseLeave:o,children:r})},Wh=({fieldArray:e,add:t,addButtonText:r,renderTabName:a,controlledFields:l})=>{const o=i=>{const{source:c,target:d}=i.operation,u=l.findIndex(f=>f.id===c.id),p=d.index;e.move(u,p)};return n.jsxs(s.Tabs.List,{children:[n.jsx(Dn.DragDropProvider,{onDragEnd:o,children:l.map((i,c)=>n.jsx(Qh,{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(T.IconPlus,{size:18,color:"#228be6"})})})})]})},Uh={tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},X=({control:e,watch:t,name:r,getItem:a,children:l,addButtonText:o,deleteButtonText:i,renderTabName:c,deleteDisalbed:d})=>{var O;const u=y.useFieldArray({control:e,name:r}),{fields:p,append:f,remove:v}=u,m=t(r),_=p.map((V,Y)=>({...V,...m[Y]})),w=((O=b.last(_))==null?void 0:O.id)??null,[k,z]=g.useState(w),D=V=>{V!=="add"&&z(V)};g.useEffect(()=>{z(V=>w===V?V:w)},[w]);const M=()=>{const V=a();u.append(V),z(V.id)};return n.jsxs(s.Tabs,{value:k,onChange:D,styles:Uh,children:[n.jsx(Wh,{fieldArray:u,add:M,addButtonText:o,renderTabName:c,controlledFields:_}),_.map((V,Y)=>n.jsx(s.Tabs.Panel,{value:V.id,children:n.jsxs(s.Stack,{children:[l({field:V,index:Y}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed"}),n.jsx(s.Button,{leftSection:n.jsx(T.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>v(Y),sx:{top:15,right:5},disabled:d==null?void 0:d({field:V,index:Y,fields:_}),children:i})]})},V.id))]})},tn=g.forwardRef(({value:e,onChange:t},r)=>{const{t:a}=x.useTranslation(),l=o=>i=>{t({...e,[o]: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:o=>l("x_axis_scroll")(o.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:o=>l("y_axis_scroll")(o.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:o=>l("x_axis_slider")(o.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:o=>l("y_axis_slider")(o.currentTarget.checked)})})})]})]})}),lt=g.forwardRef(({label:e,value:t,onChange:r,sx:a={},disabled:l},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=g.useMemo(()=>[{label:i("chart.orientation.horizontal"),value:"horizontal"},{label:i("chart.orientation.vertical"),value:"vertical"}],[c.language]);return n.jsx(s.Select,{ref:o,label:e??i("chart.orientation.label"),data:d,value:t,onChange:Z(r),sx:a,disabled:l})}),Yh=({control:e,watch:t})=>{const{t:r}=x.useTranslation(),a=t("legend"),l=(o,i)=>{const c={...a,orient:o};o==="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:o})=>n.jsx(s.Switch,{label:r("chart.legend.show_legend"),sx:{flex:1},checked:o.value,onChange:i=>o.onChange(i.currentTarget.checked)})})}),n.jsx(s.Group,{children:n.jsx(y.Controller,{name:"legend",control:e,render:({field:o})=>n.jsx(lt,{sx:{flex:1},value:o.value.orient,onChange:i=>{l(i,o.onChange)},disabled:!a.show})})})]})};function Kh({control:e,index:t,variableOptions:r}){const{t:a}=x.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:l})=>n.jsx(s.TextInput,{label:a("common.name"),placeholder:a("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...l})}),n.jsx(y.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n.jsx(s.Select,{label:a("common.value"),required:!0,data:r,sx:{flex:1},...l})})]}),n.jsx(y.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n.jsx(s.TextInput,{label:a("chart.content_template.label"),placeholder:a("chart.content_template.placeholder"),required:!0,sx:{flex:1},...l})})]})}function Xh({control:e,watch:t,variables:r}){const{t:a}=x.useTranslation(),l=()=>({name:"",template:"",variable_key:""}),o=g.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(X,{control:e,watch:t,name:"reference_lines",getItem:l,addButtonText:a("chart.reference_line.add"),deleteButtonText:a("chart.reference_line.delete"),renderTabName:i,children:({field:c,index:d})=>n.jsx(Kh,{control:e,index:d,variableOptions:o})})}const Zh=({control:e,index:t})=>{const{t:r}=x.useTranslation();return n.jsx(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})})]})})},Jh=({control:e,watch:t})=>{const{t:r}=x.useTranslation(),a=()=>({id:Date.now().toString(),data_key:"",name:""}),l=(o,i)=>{const c=o.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(T.IconInfoCircle,{size:14,color:"#888"}),n.jsx(s.Text,{size:"14px",c:"#888",children:r("chart.tooltip.additional_metrics.description")})]}),n.jsx(X,{control:e,watch:t,name:"tooltip.metrics",getItem:a,addButtonText:r("chart.tooltip.additional_metrics.add"),deleteButtonText:r("chart.tooltip.additional_metrics.delete"),renderTabName:l,children:({field:o,index:i})=>n.jsx(Zh,{control:e,index:i})})]})};function Hh({control:e,watch:t}){return n.jsx(s.Stack,{children:n.jsx(Jh,{control:e,watch:t})})}const Je=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o}=x.useTranslation();return n.jsx(s.NumberInput,{ref:l,label:e??o("chart.rotate"),hideControls:!0,min:-90,max:90,rightSection:n.jsx(s.Text,{size:"xs",c:"dimmed",children:o("chart.degree")}),sx:a,styles:{section:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},value:t,onChange:i=>{typeof i!="string"&&r(i)}})}),Rh=({control:e,watch:t})=>{const{t:r}=x.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(Je,{sx:{width:"48%"},...a})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:a})=>n.jsx(Ne,{...a})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:a})=>n.jsx(Ge,{...a})})]})},or={root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}},eg=["123456789","1234","1234.56789","1.234","0.123456789","-0.123456789"];function tg({format:e}){const{t}=x.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(T.IconChevronUp,{size:14}):n.jsx(T.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:eg.map(l=>n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{children:l}),n.jsx(s.Table.Td,{children:n.jsx(ne,{children:U(l,e)})})]},l))})]})})]})}function ng({value:e,onChange:t},r){const{t:a}=x.useTranslation(),l=u=>{t({...e,output:u})},o=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(l),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:or}),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:or})]}),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:o}),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:or}),n.jsx(s.Box,{})]}),n.jsx(tg,{format:e})]})}const $e=g.forwardRef(ng),rg=({control:e,watch:t})=>{const{t:r}=x.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.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($e,{...a})})]})]})};function ag({context:e}){const{t}=x.useTranslation(),{value:r,set:a}=B(e.instanceData,"config"),{variables:l}=e,o=g.useMemo(()=>b.defaults({},r,Rn),[r]),{control:i,handleSubmit:c,watch:d,formState:u,reset:p}=y.useForm({defaultValues:o});return g.useEffect(()=>{p(o)},[o]),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(le,{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(Rh,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Y Axis",children:n.jsx(rg,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Legend",children:n.jsx(Yh,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Tooltip",children:n.jsx(Hh,{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(Xh,{variables:l,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(tn,{...f})})})]})]})})}function sg(e){return b.omit(e,"variables")}function lg(e){const{label_formatter:t=oe,...r}=e.y_axis;return{...e,y_axis:{...r,label_formatter:t}}}function og(e){const t={rotate:0,formatter:fe()},{axisLabel:r=t,...a}=e.x_axis;return{...e,x_axis:{...a,axisLabel:r}}}function ig(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 cg(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 dg(e){const t={tooltip:{metrics:[]}};return b.defaultsDeep(t,e)}function ug(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:l,y_axis:o,tooltip:i,...c}=e;return{...c,x_axis:{...l,data_key:a(l.data_key)},y_axis:{...o,data_key:a(o.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 pg(e){const t={legend:{show:!0,top:"0",right:"10",left:"auto",bottom:"auto",orient:"horizontal",type:"scroll"}};return b.defaultsDeep(t,e)}function hg(e){const{dataZoom:t,...r}=e;return{...r,dataZoom:t??tl()}}class gg extends R{constructor(){super(...arguments);P(this,"VERSION",9)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:a})=>{const{config:l}=r;return(l.variables||[]).forEach(i=>{a.variables.find(c=>c.name===i.name)||a.addVariable(i)}),{...r,version:2,config:sg(l)}}),this.version(3,r=>{const{config:a}=r;return{...r,version:3,config:lg(a)}}),this.version(4,r=>{const{config:a}=r;return{...r,version:4,config:og(a)}}),this.version(5,r=>{const{config:a}=r;return{...r,version:5,config:ig(a)}}),this.version(6,r=>{const{config:a}=r;return{...r,version:6,config:cg(a)}}),this.version(7,r=>{const{config:a}=r;return{...r,version:7,config:dg(a)}}),this.version(8,(r,a)=>{const{config:l}=r;return{...r,version:8,config:ug(l,a)}}),this.version(9,r=>{const{config:a}=r;return{...r,version:9,config:pg(a)}}),this.version(10,r=>{const{config:a}=r;return{...r,version:10,config:hg(a)}})}}const fg={displayName:"viz.boxplot.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new gg,name:"boxplot",viewRender:$h,configRender:ag,createConfig(){return{version:10,config:b.cloneDeep(Rn)}},triggers:[nl],translation:yp},hl={id:"builtin:button:click-button",displayName:"viz.button.click.label",nameRender:yg,configRender:bg,payload:[]};function bg(e){return n.jsx(n.Fragment,{})}function yg(e){const{t}=x.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.button.click.label")})}const ir={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},vg={left:"flex-start",center:"center",right:"flex-end"},_g={top:"flex-start",center:"center",bottom:"flex-end"},xg=S.observer(({context:e,instance:t})=>{const r=De({vizManager:e.vizManager,instance:t}),a=ze(r.triggerManager,hl.id),l=ee(),{value:o}=B(e.instanceData,"config"),i=g.useMemo(()=>b.defaultsDeep({},o,ir),[o]),{content:c,horizontal_align:d,vertical_align:u,compact:p,size:f,...v}=i,{width:m,height:_}=e.viewport,w=l.payloadForSQL,k=()=>{a.forEach(D=>{r.runInteraction(D.id,{})})},z=p?`compact-${f}`:f;return n.jsx(s.Center,{sx:{width:m,height:_,justifyContent:vg[d],alignItems:_g[u]},children:n.jsx(s.Button,{size:z,...v,onClick:k,children:b.template(c)(w)})})}),mg=({value:e,onChange:t,label:r})=>{const a=s.useMantineTheme(),l=g.useCallback(i=>()=>t(i),[t]),o=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:l(i),radius:4,size:26,sx:{cursor:"pointer"},children:o(i)&&n.jsx(s.CheckIcon,{width:10,color:"white"})},i)})})]})},wg=["xs","sm","md","lg","xl"],cr=g.forwardRef(({label:e,value:t,onChange:r,sx:a,disabled:l},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=g.useMemo(()=>wg.map(u=>({label:i(`style.size.${u}`),value:u})),[c.language]);return n.jsx(s.Select,{ref:o,data:d,label:e,value:t,onChange:Z(r),sx:a,disabled:!0})}),Cg=[{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 Tg({context:e}){const{value:t,set:r}=B(e.instanceData,"config"),a=g.useMemo(()=>b.defaultsDeep({},t,ir),[t]),l=a;g.useEffect(()=>{!b.isEqual(a,l)&&(console.log("config malformed, resetting to defaults",a,l),r(l))},[a,l]);const{control:o,handleSubmit:i,watch:c,formState:d,reset:u}=y.useForm({defaultValues:l});return g.useEffect(()=>{u(l)},[l]),c(["content","variant","color","size","compact","horizontal_align","vertical_align"]),n.jsxs("form",{onSubmit:i(r),children:[n.jsx(le,{canSubmit:d.isDirty}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{control:o,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:o,name:"variant",render:({field:p})=>n.jsx(s.Select,{label:"Variant",data:Cg,...p})}),n.jsx(y.Controller,{control:o,name:"color",render:({field:p})=>n.jsx(mg,{label:"Theme",...p})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:o,name:"size",render:({field:p})=>n.jsx(cr,{label:"Size",...p})}),n.jsx(y.Controller,{control:o,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:o,name:"horizontal_align",render:({field:p})=>n.jsx(lr,{...p})}),n.jsx(y.Controller,{control:o,name:"vertical_align",render:({field:p})=>n.jsx(dl,{...p})})]})]})]})}const Sg=[{lang:"en",resources:{button:{viz_name:"Button",click:{label:"Click this button"}}}},{lang:"zh",resources:{button:{viz_name:"按钮",click:{label:"点击此按钮"}}}}];class kg extends R{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{horizontal_align:a="left",vertical_align:l="center",...o}=r.config;return{...r,version:2,config:{...o,horizontal_align:a,vertical_align:l}}})}}const zg={displayName:"viz.button.viz_name",displayGroup:"chart.groups.others",migrator:new kg,name:"button",viewRender:xg,configRender:Tg,createConfig(){return{version:2,config:b.cloneDeep(ir)}},triggers:[hl],translation:Sg},Dg=({option:e,...t})=>{const{label:r,description:a}=e;return n.jsx(s.Box,{...t,children:n.jsxs(s.Stack,{gap:"0",children:[n.jsx(s.Text,{size:"sm",children:r}),n.jsx(s.Text,{size:"xs",opacity:.65,children:a})]})})},Ig=g.forwardRef(({value:e,onChange:t},r)=>{const{t:a,i18n:l}=x.useTranslation(),o=g.useMemo(()=>[{label:a("chart.series.line.area_style.origin.auto.label"),description:a("chart.series.line.area_style.origin.auto.description"),value:"auto"},{label:a("chart.series.line.area_style.origin.start.label"),description:a("chart.series.line.area_style.origin.start.description"),value:"start"},{label:a("chart.series.line.area_style.origin.end.label"),description:a("chart.series.line.area_style.origin.end.description"),value:"end"}],[l.language]);return n.jsx(s.Select,{ref:r,label:a("chart.series.line.area_style.origin.label"),data:o,value:e,onChange:Z(t),renderOption:Dg,size:"xs"})}),gl=g.forwardRef(({value:e,onChange:t,label:r,placeholder:a},l)=>n.jsx(s.ColorInput,{ref:l,label:r,placeholder:a,value:e,onChange:t,size:"xs",popoverProps:{withinPortal:!0,zIndex:340},rightSection:e?n.jsx(s.CloseButton,{size:"sm",onClick:()=>{t("")}}):null})),Mg=g.forwardRef(({value:e,onChange:t},r)=>{const{t:a}=x.useTranslation(),l=o=>i=>{const c=b.cloneDeep(e);b.set(c,o,i),t(c)};return n.jsxs(s.Stack,{ref:r,children:[n.jsx(s.Divider,{mt:10,mb:-10,variant:"dashed",label:n.jsxs(s.Group,{gap:6,children:[n.jsx(T.IconChartAreaLineFilled,{size:14,style:{color:"#999"}}),a("chart.series.line.area_style.label")]}),labelPosition:"center"}),n.jsx(s.Switch,{label:a("chart.series.line.area_style.enabled"),checked:e.enabled,onChange:o=>l("enabled")(o.currentTarget.checked)}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(gl,{label:a("chart.series.line.area_style.color"),placeholder:a("chart.series.line.area_style.use_series_color"),value:e.color,onChange:l("color")}),n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.opacity"),value:e.opacity,onChange:l("opacity"),step:.1,decimalScale:1,min:0,max:1})]}),n.jsx(Ig,{value:e.origin,onChange:l("origin")}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(gl,{label:a("chart.series.line.area_style.shadow_color"),value:e.shadowColor,onChange:l("shadowColor")}),n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.shadow_blur"),value:e.shadowBlur,onChange:l("shadowBlur")})]}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.shadow_offset_x"),value:e.shadowOffsetX,onChange:l("shadowOffsetX")}),n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.shadow_offset_y"),value:e.shadowOffsetY,onChange:l("shadowOffsetY")})]})]})});function fl(){return{enabled:!1,color:"",origin:"auto",shadowBlur:0,shadowColor:"",shadowOffsetX:0,shadowOffsetY:0,opacity:.7}}const bl=g.forwardRef(({label:e,value:t,onChange:r,hiddenKeys:a},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>{let m=[{label:o("chart.series_order.name"),value:"name"},{label:o("chart.series_order.value"),value:"value"},{label:o("chart.series_order.raw"),value:""}];if(a&&Array.isArray(a)&&a.length>0){const _=new Set(a);m=m.filter(w=>!_.has(w.value))}return m},[i.language,a]),d=g.useMemo(()=>[{label:o("chart.series_order.asc"),value:"asc"},{label:o("chart.series_order.desc"),value:"desc"}],[i.language,a]),{key:u,order:p}=t,f=m=>{m!==null&&r({key:m,order:p})},v=m=>{m&&r({key:u,order:m})};return n.jsxs(s.Group,{gap:"xs",grow:!0,align:"flex-end",children:[n.jsx(s.Select,{ref:l,label:e,data:c,value:u,onChange:f}),u!==""&&n.jsx(s.SegmentedControl,{size:"sm",data:d,value:p,onChange:v})]})}),nn=()=>({key:"",order:"desc"});function Ag(e){const t=b.cloneDeep(b.omit(e,"variables"));return t.stats=b.omit(t.stats,"variables"),t}function Pg(e){const{rotate:t,formatter:r=fe()}=e.x_axis.axisLabel;return{...e,x_axis:{...e.x_axis,axisLabel:{rotate:t,formatter:r}}}}function Vg(e){const{dataZoom:t=ht,...r}=e;return{...r,dataZoom:t}}function $g(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 Eg(e){const t=e.reference_lines.map(r=>{const{lineStyle:a={type:"dashed",width:1,color:Ee.random().css()},show_in_legend:l=!1}=r;return{...r,lineStyle:a,show_in_legend:l}});return{...e,reference_lines:t}}function Bg(e){const t=e.reference_lines.map(r=>{const{yAxisIndex:a=0}=r;return{...r,yAxisIndex:a}});return{...e,reference_lines:t}}function Lg(e){const t=e.series.map(r=>{const{aggregation_on_group:a=_t}=r;return{...r,aggregation_on_group:a}});return{...e,series:t}}function qg(e){const t=e.series.map(r=>{const{aggregation_on_value:a=_t}=r;return{...r,aggregation_on_value:a}});return{...e,series:t}}function Og(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 Ng(e){const{series:t,...r}=e;return{...r,series:t.map(a=>{const{barMinWidth:l,barWidth:o,barMaxWidth:i}=a;return l?{...a,barMinWidth:l,barWidth:"",barMaxWidth:i??o}:{...a,barMinWidth:"",barWidth:o,barMaxWidth:""}})}}function Gg(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(a=>{const{min:l="",max:o=""}=a;return{...a,min:l,max:o}})}}function Fg(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(a=>{const{nameAlignment:l="left"}=a;return{...a,nameAlignment:l}})}}function jg(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(a=>{const{show:l=!0}=a;return{...a,show:l}})}}function Qg(e){const{regressions:t,...r}=e;return{...r,regressions:t.map(a=>{const{group_by_key:l=""}=a;return{...a,group_by_key:l}})}}function Wg(e){const{series:t,y_axes:r,...a}=e;return{...a,series:t.map(l=>{const{hide_in_legend:o=!1,aggregation_on_value:i=_t}=l;return{...l,hide_in_legend:o,aggregation_on_value:i}}),y_axes:r.map(l=>{const{min:o="",max:i="",show:c=!0}=l;return{...l,min:o,max:i,show:c}})}}function Ug(e){const{type:t="category",...r}=e.x_axis;return{...e,x_axis:{...r,type:t}}}function Yg(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_data_key:l,series:o,regressions:i,...c}=e;return{...c,x_axis_data_key:a(l),series:o.map(d=>({...d,y_axis_data_key:a(d.y_axis_data_key),group_by_key:a(d.group_by_key)})),regressions:i.map(d=>({...d,y_axis_data_key:a(d.y_axis_data_key),group_by_key:a(d.group_by_key)}))}}catch(r){throw console.error("[Migration failed]",r),r}}function Kg(e){const{tooltip:t={metrics:[]},...r}=e;return{...e,tooltip:t}}function Xg(e,t){const{stats:r,...a}=e,l=wt(r.templates.top,t),o=wt(r.templates.bottom,t);return{stats:{top:l??"",bottom:o??""},...a}}function Zg(e){const{series:t,...r}=e,a=t.map(l=>{const{areaStyle:o=fl(),...i}=l;return{...i,areaStyle:o}});return{...r,series:a}}function Jg(e){const{series:t,...r}=e,a=t.map(l=>{const{order_in_group:o=nn(),...i}=l;return{...i,order_in_group:o}});return{...r,series:a}}class Hg extends R{constructor(){super(...arguments);P(this,"VERSION",22)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:a})=>{const{config:l}=r;return(l.variables||[]).forEach(c=>{a.variables.find(d=>d.name===c.name)||a.addVariable(c)}),(b.get(l,"stats.variables")||[]).forEach(c=>{a.variables.find(d=>d.name===c.name)||a.addVariable(c)}),{...r,version:2,config:Ag(l)}}),this.version(3,r=>({...r,version:3,config:Pg(r.config)})),this.version(4,r=>({...r,version:4,config:Vg(r.config)})),this.version(5,r=>({...r,version:5,config:$g(r.config)})),this.version(6,r=>({...r,version:6,config:Eg(r.config)})),this.version(7,r=>({...r,version:7,config:Bg(r.config)})),this.version(8,r=>({...r,version:8,config:Lg(r.config)})),this.version(9,r=>({...r,version:9,config:qg(r.config)})),this.version(10,r=>({...r,version:10,config:Og(r.config)})),this.version(11,r=>({...r,version:11,config:Ng(r.config)})),this.version(12,r=>({...r,version:12,config:Gg(r.config)})),this.version(13,r=>({...r,version:13,config:Fg(r.config)})),this.version(14,r=>({...r,version:14,config:jg(r.config)})),this.version(15,r=>({...r,version:15,config:Qg(r.config)})),this.version(16,r=>({...r,version:16,config:Wg(r.config)})),this.version(17,r=>({...r,version:17,config:Ug(r.config)})),this.version(18,(r,a)=>({...r,version:18,config:Yg(r.config,a)})),this.version(19,r=>({...r,version:19,config:Kg(r.config)})),this.version(20,(r,a)=>({...r,version:20,config:Xg(r.config,a.panelModel)})),this.version(21,(r,a)=>({...r,version:21,config:Zg(r.config)})),this.version(22,(r,a)=>({...r,version:22,config:Jg(r.config)}))}}const Rg=[{lang:"en",resources:{cartesian_chart:{viz_name:"Cartesian Chart",series:{aggregation:{label:"Aggregation on Value"}},click_series:{label:"Click bar, line or scatter"}}}},{lang:"zh",resources:{cartesian_chart:{viz_name:"复合图",series:{aggregation:{label:"聚合数据"}},click_series:{label:"点击柱、线或散点"}}}}],dr={id:"builtin:echarts:click-echart:series",displayName:"viz.cartesian_chart.click_series.label",nameRender:tf,configRender:ef,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function ef(e){return n.jsx(n.Fragment,{})}function tf(e){const{t}=x.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.cartesian_chart.click_series.label")})}const yl={regressions:[],series:[],stats:{bottom:"",top:""},x_axis:{type:"category",axisLabel:{rotate:0,formatter:fe(),overflow:me()}},tooltip:{metrics:[]},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:oe}],reference_lines:[],reference_areas:[],dataZoom:ht},rn=S.observer(({value:e,context:t,onHeightChange:r})=>{var f;const{ref:a}=te.useElementSize(),l=ee(),{panel:o}=be(),{variables:i,data:c}=t,d=g.useMemo(()=>Zt(e,i,l.payloadForViz,c),[e,i,c]),u=((f=a.current)==null?void 0:f.textContent)==="";g.useEffect(()=>{if(!r||!a.current)return;const v=u?0:a.current.offsetHeight;r(v)},[u,a.current]);const p=g.useMemo(()=>u?"none":"block",[u]);return n.jsx(s.Box,{sx:{display:p},children:n.jsx(mt,{ref:a,value:d,styles:{root:{margin:"0 8px",border:"none",maxWidth:"100%","&.mantine-RichTextEditor-root":{overflow:"auto !important"}},content:{"&.mantine-RichTextEditor-content .ProseMirror":{padding:0},"&.mantine-RichTextEditor-content .ProseMirror > p":{fontSize:"12px",lineHeight:"20px"}}},dashboardState:l.dashboardState,variableAggValueMap:o.variableAggValueMap})})});function nf(e){const t=e.y_axes.some(l=>!!l.name);let r=15;t&&(r+=20),e.dataZoom.x_axis_slider&&(r+=20);let a=5;return e.x_axis_name&&(a+=15),e.series.some(l=>!l.hide_in_legend)&&(a+=20),{top:r,right:15,bottom:a,left:20,containLabel:!0}}function rf(e){return e!=="line"?{}:{itemStyle:{opacity:0}}}function af(e){switch(e){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function sf(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(r=>!r.hide_in_legend).map(({name:r,type:a})=>({name:r,icon:af(a),...rf(a)})),t}function an(e,t){switch(e.config.method){case"linear":return[...at.regressionLinear()(t)];case"exponential":return[...at.regressionExp()(t)];case"logistic":return[...at.regressionLog()(t)];case"polynomial":return[...at.regressionPoly().order(e.config.order)(t)];default:return[]}}function lf(e,t,r,a){const{transform:l,plot:o}=e,i={...o,name:t,data:an(l,a),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return r&&(i.custom={type:"regression-line",targetSeries:r}),i}function of({regressions:e=[],x_axis_data_key:t},r){const a=[];if(Object.keys(r).length===0)return a;function l(o,i,c,d){const u=lf(o,i,c,d);a.push(u)}return e.forEach(o=>{const{name:i,group_by_key:c}=o;if(!c||c===t){const f=Me(r,o.y_axis_data_key).map((v,m)=>[m,Number(v)]);l(o,i,"",f);return}const{columnKey:d}=A(o.y_axis_data_key),u=b.groupBy(jt(r,o.y_axis_data_key),c);Object.entries(u).forEach(([p,f])=>{const v=f.map((_,w)=>[w,Number(_[d])]);l(o,p,p,v)})}),a}function cf(e,t){return e.map(r=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:r.color},data:[[{yAxis:t[r.y_keys.upper]},{yAxis:t[r.y_keys.lower]}]],silent:!0}}))}function df(e,t,r,a){return t?a==="value"?[[r[0],e]]:[e]:[]}function uf(e,t,r,a,l,o){return e.map(i=>{const c=r[i.variable_key],d=i.orientation==="horizontal",u=d?"yAxis":"xAxis",p=d?"insideEndTop":"end",f=df(c,d,l,o);return{name:i.name,type:"scatter",hide_in_legend:!i.show_in_legend,xAxisId:"main-x-axis",yAxisIndex:i.yAxisIndex,data:f,symbol:"none",silent:!0,tooltip:{show:!1},markLine:{data:[{name:i.name,[u]:c}],silent:!0,symbol:["none","none"],lineStyle:i.lineStyle,label:{formatter:function(){return i.template?$t(i.template,t,a):""},position:p}}}})}function ur(e,t,r){const a=Me(e,t),l=Me(e,r);return b.zip(a,l)}function pf(e,t,r,a){const l=ur(t,r,a);return b.unionBy(l,e,0)}function hf({dataTemplate:e,data:t,x_axis_data_key:r,y_axis_data_key:a,valueTypedXAxis:l}){return l?pf(e,t,r,a):Me(t,a)}function gf({dataTemplate:e,data:t,aggregation_on_value:r,x_axis_data_key:a,y_axis_data_key:l,valueTypedXAxis:o}){if(!r||r.type==="none")return hf({dataTemplate:e,data:t,x_axis_data_key:a,y_axis_data_key:l,valueTypedXAxis:o});const i=ur(t,a,l),c=b.groupBy(i,"0");return e.map(([u])=>{const f=c[u].map(m=>m[1]),v=Pn(f,r);return[u,v]})}function ff({group_by_key:e,data:t,x_axis_data_key:r,y_axis_data_key:a}){const{queryID:l,columnKey:o}=A(e),i=b.groupBy(t[l],o);return Object.entries(i).forEach(([c,d])=>{i[c]=ur({[l]:d},r,a)}),i}function bf({type:e,...t},r,a,l){if(!e)return 10;if(e==="static"){const{size:u}=t;return u}const{func_content:o}=t,{queryID:i,columnKey:c}=A(a),d=b.keyBy(jt(r,i),c);return(u,p)=>{let f;p.name?f=d[p.name]:f=r[p.dataIndex];try{return new Function(`return ${o}`)()({rowData:f,params:p,variables:l},{lodash:b,interpolate:tt.interpolate})}catch(v){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${v.message}`),10}}}function yf({x_axis_data_key:e,x_axis:t},{y_axis_data_key:r,yAxisIndex:a,label_position:l,name:o,group_by_key:i,order_in_group:c,aggregation_on_value:d,stack:u,color:p,display_name_on_line:f,symbolSize:v,hide_in_legend:m,areaStyle:_,...w},k,z,D,M){const O=t.type!=="category",V={label:{show:!!l,position:l,formatter:M[a??"default"]},name:o,xAxisId:"main-x-axis",yAxisIndex:a,stack:u,color:p,symbolSize:bf(v,z,e,D),hide_in_legend:m,labelLayout:{hideOverlap:!0},...w};if(w.type==="line"&&(V.lineStyle={width:w.lineStyle.width,shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:b.clamp(w.lineStyle.width,1,3)},_.enabled)){V.lineStyle.shadowColor="transparent";const{enabled:de,...H}=_;V.areaStyle={...H,color:H.color||p}}if(f&&(V.endLabel={show:!0,formatter:o,offset:[-12,12],align:"right"}),!i||i===e)return V.data=gf({dataTemplate:k,data:z,aggregation_on_value:d,x_axis_data_key:e,y_axis_data_key:r,valueTypedXAxis:O}),V;const Y=ff({group_by_key:i,data:z,x_axis_data_key:e,y_axis_data_key:r});let N=Object.entries(Y);return c.key==="name"&&(N=b.orderBy(Object.entries(Y),0,[c.order])),N.map(([de,H])=>{const ae=b.cloneDeep(V);return ae.name=de,ae.color=void 0,"areaStyle"in ae&&(ae.areaStyle.color=void 0),ae.data=H,ae})}function vf(e,t,r,a,l,o){const i=t.map(d=>[d,0]);return e.series.map(d=>yf(e,d,i,r,o,a)).flat().concat(uf(e.reference_lines,l,o,r,t,e.x_axis.type)).concat(cf(e.reference_areas,o))}function _f(e,t){const r=e.find(o=>o.axisDim==="x"&&o.axisId==="main-x-axis");if(!r)return"";const{axisValue:a,axisIndex:l}=r;return xe(t.x_axis.axisLabel.formatter)(a,l)}const xf=e=>U(e,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function mf(e,t,r,a){const l=r.reduce((o,{yAxisIndex:i,name:c})=>(o[c]=i,o),{});return K.getTooltip({trigger:"axis",formatter:function(o){const i=Array.isArray(o)?o:[o];if(i.length===0)return"";const c=i.map(({seriesName:f,marker:v,value:m})=>{if(Array.isArray(m)&&m.length===2&&(m=m[1]),!f)return m;const _=l[f],w=a[_]??a.default;return`
|
|
114
|
+
`}const Ih=(e,t)=>r=>{const{seriesName:a,value:l}=r;switch(a){case t.Box:return Sh(e,l);case t.Outlier:return zh(e,l);case t.Scatter:return Dh(e,l)}};function Mh({config:e,seriesNames:t}){return K.getTooltip({trigger:"item",formatter:Ih(e,t)})}function en(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 Ah({min:e,max:t}){if(e<=110)return Math.min(0,e);if(e<=200)return 100;const r=vt.floor(vt.log10(e)),a=Math.pow(10,r),l=Math.pow(10,r-1);return e/a<=2?b.round(e,-1*(r-1))-l:b.round(e,-1*r)-a}function Ph(e){return{Box:e("viz.boxplot.box"),Scatter:e("viz.boxplot.scatter"),Outlier:e("viz.boxplot.outlier")}}function Vh({config:e,data:t,variables:r,t:a}){const{x_axis:l,y_axis:o,reference_lines:i}=e,c=gh(e,t),d=Ve(l.axisLabel.overflow.on_axis),u=Ph(a),p=Th(e,c).map(f=>({...f,name:b.get(u,f.name,f.name)}));return{dataZoom:en(e.dataZoom,"filter"),grid:fh(e),dataset:c,legend:bh({config:e,seriesNames:u}),tooltip:Mh({config:e,seriesNames:u}),xAxis:[K.getXAxis({type:"category",name:l.name,nameGap:25,nameLocation:"center",nameTextStyle:{align:"center"},axisLabel:{...l.axisLabel,...d,formatter:xe(l.axisLabel.formatter)}})],yAxis:[K.getYAxis({name:o.name,minInterval:1,axisLabel:{formatter:function(f){return U(f,o.label_formatter)}},min:Ah})],series:[...p,...yh(i,r,t)]}}function $h({context:e,instance:t}){const{t:r}=x.useTranslation(),{value:a}=B(e.instanceData,"config"),{variables:l}=e,o=e.data,{width:i,height:c}=e.viewport,d=b.defaults({},a,Rn),u=De({vizManager:e.vizManager,instance:t}),p=ze(u.triggerManager,nl.id),f=gt(o,d.x_axis.data_key),v=g.useCallback(z=>{const D=b.get(f,z.name,{error:"rowData is not found"});p.forEach(M=>{u.runInteraction(M.id,{...z,rowData:D})})},[f,p,u]),m=g.useRef(null),_=g.useCallback(()=>{var D;const z=(D=m.current)==null?void 0:D.getEchartsInstance();z&&ge(t,z.getOption())},[]),w=g.useMemo(()=>({click:v,finished:_}),[v,_]),k=g.useMemo(()=>Vh({config:d,data:o,variables:l,t:r}),[d,o,l,r]);return!a||!i||!c?null:n.jsx(_e,{width:i,height:c,children:n.jsx(pe,{echarts:ce,option:k,ref:m,style:Mt(i,c),onEvents:w,notMerge:!0,theme:"merico-light"})})}function le({canSubmit:e,buttonRef:t}){const{t:r}=x.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(T.IconDeviceFloppy,{size:20})})]})}const lr=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("common.align.horizontal.left"),value:"left"},{label:o("common.align.horizontal.center"),value:"center"},{label:o("common.align.horizontal.right"),value:"right"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("common.align.horizontal.label"),data:c,value:t,onChange:Z(r),sx:a})}),dl=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("common.align.vertical.top"),value:"top"},{label:o("common.align.vertical.center"),value:"center"},{label:o("common.align.vertical.bottom"),value:"bottom"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("common.align.vertical.label"),data:c,value:t,onChange:Z(r),sx:a})}),ul=rt.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)"}}}})),Eh=[{from:0,to:0},{from:100,to:100}];class Bh{constructor(){P(this,"steps",new Map);P(this,"interpolation");P(this,"onChange");j.makeAutoObservable(this,{steps:j.observable},{deep:!1}),j.reaction(()=>j.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(Eh):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 pl(e){if(typeof e=="number")return String(e)}function Lh(e){const{t}=x.useTranslation(),{onChange:r,color:a,index:l,value:o}=e,{classes:i}=ul(),[c,d]=g.useState(pl(o)),[u,{setTrue:p,setFalse:f}]=q.useBoolean(!1),v=l%2===1,m=v&&o!=null,_=!v&&o!=null,w=`map ${o} to color ${l}`,k=()=>{d(pl(o)),f()},z=()=>{f(),r==null||r(Number(c))},D=()=>{f(),r==null||r(null)},M=U(o??null,{output:"number",mantissa:10,trimMantissa:!0,average:!0,absolute:!1}),O=!c||Number.isNaN(Number(c));return n.jsxs("div",{"data-testid":`palette-item-${l}`,className:i.paletteItem,children:[n.jsx(s.Text,{title:w,style:{opacity:m?1:0},c:"dimmed",size:"sm",className:"palette-value--up palette-value",children:M}),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":Ee(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:k,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:V=>{const Y=V.currentTarget.value;d(Y)},error:c&&O}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{variant:"light",color:"red",size:"xs",onClick:D,leftSection:n.jsx(T.IconTrash,{size:16}),children:t("common.actions.delete")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(T.IconDeviceFloppy,{size:16}),"data-testid":"palette-item-ok",size:"xs",onClick:z,disabled:O,children:t("common.actions.save")})]})]})]})]}),n.jsx(s.Text,{title:w,style:{opacity:_?1:0},c:"dimmed",size:"sm",className:"palette-value--bottom palette-value",children:M})]})}const qh=S.observer(({model:e})=>{const{classes:t}=ul(),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,l],o)=>n.jsx(Lh,{index:o,color:a,value:e.getStepFromValue(l),onChange:i=>e.changeStep(i,l)},a))})}),Oh=S.observer(function(t){const r=q.useCreation(()=>new Bh,[]);return g.useEffect(()=>{r.fromProps(t)}),r.interpolation==null?null:n.jsx(qh,{model:r})}),Nh=e=>{const{t,i18n:r}=x.useTranslation(),{value:a,onChange:l,colorManager:o}=e,i=o.getColorInterpolations(),[c,d]=g.useState(a),u=o.decodeInterpolation(c.interpolation)||i[0],[p,{setTrue:f,setFalse:v}]=q.useBoolean(),m=g.useMemo(()=>{const D=b.groupBy(i,"category");return Object.entries(D).map(([M,O])=>({group:t(`style.color.interpolation.palette.category.${M}`),items:O.map(V=>({label:t(V.displayName),value:o.encodeColor(V)}))}))},[r.language]);function _(D){D&&d(M=>({...M,interpolation:D}))}const w=()=>{v(),l==null||l(j.toJS(c))};function k(D){d(M=>({...M,steps:D}))}const z=()=>{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:m,onChange:_,comboboxProps:{withinPortal:!0,zIndex:340},maxDropdownHeight:500}),n.jsx(Oh,{steps:c.steps,interpolation:u,onChange:k}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{onClick:z,variant:"subtle",children:t("common.actions.cancel")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(T.IconDeviceFloppy,{size:16}),onClick:w,children:t("common.actions.save")})]})]})})]})},Gh=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("style.color.type.static"),value:"static"},{label:o("style.color.type.interpolation"),value:"interpolation"},{label:o("style.color.type.none"),value:"none"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("style.color.type.label"),data:c,value:t,onChange:Z(r),sx:a})}),Fh=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("style.flex.justify_content.left"),value:"left"},{label:o("style.flex.justify_content.center"),value:"center"},{label:o("style.flex.justify_content.right"),value:"right"},{label:o("style.flex.justify_content.space_between"),value:"space-between"},{label:o("style.flex.justify_content.space_around"),value:"space-around"},{label:o("style.flex.justify_content.space_evenly"),value:"space-evenly"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("style.flex.justify_content.label"),data:c,value:t,onChange:Z(r),sx:a})}),jh=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>[{label:o("style.flex.align_items.start"),value:"start"},{label:o("style.flex.align_items.center"),value:"center"},{label:o("style.flex.align_items.end"),value:"end"},{label:o("style.flex.align_items.stretch"),value:"stretch"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("style.flex.align_items.label"),data:c,value:t,onChange:Z(r),sx:a})}),Qh=({value:e,index:t,children:r})=>{const[a,{setTrue:l,setFalse:o}]=q.useBoolean(!1),{ref:i,handleRef:c}=In.useSortable({id:e,index:t});return n.jsx(s.Tabs.Tab,{ref:i,value:e,leftSection:n.jsx(T.IconGripHorizontal,{size:14,color:a||t===0?"rgb(34, 139, 230)":"transparent"}),onMouseEnter:l,onMouseLeave:o,children:r})},Wh=({fieldArray:e,add:t,addButtonText:r,renderTabName:a,controlledFields:l})=>{const o=i=>{const{source:c,target:d}=i.operation,u=l.findIndex(f=>f.id===c.id),p=d.index;e.move(u,p)};return n.jsxs(s.Tabs.List,{children:[n.jsx(Dn.DragDropProvider,{onDragEnd:o,children:l.map((i,c)=>n.jsx(Qh,{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(T.IconPlus,{size:18,color:"#228be6"})})})})]})},Uh={tab:{paddingTop:"4px",paddingBottom:"4px"},panel:{padding:"0px"}},X=({control:e,watch:t,name:r,getItem:a,children:l,addButtonText:o,deleteButtonText:i,renderTabName:c,deleteDisalbed:d})=>{var O;const u=y.useFieldArray({control:e,name:r}),{fields:p,append:f,remove:v}=u,m=t(r),_=p.map((V,Y)=>({...V,...m[Y]})),w=((O=b.last(_))==null?void 0:O.id)??null,[k,z]=g.useState(w),D=V=>{V!=="add"&&z(V)};g.useEffect(()=>{z(V=>w===V?V:w)},[w]);const M=()=>{const V=a();u.append(V),z(V.id)};return n.jsxs(s.Tabs,{value:k,onChange:D,styles:Uh,children:[n.jsx(Wh,{fieldArray:u,add:M,addButtonText:o,renderTabName:c,controlledFields:_}),_.map((V,Y)=>n.jsx(s.Tabs.Panel,{value:V.id,children:n.jsxs(s.Stack,{children:[l({field:V,index:Y}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed"}),n.jsx(s.Button,{leftSection:n.jsx(T.IconTrash,{size:16}),color:"red",variant:"light",onClick:()=>v(Y),sx:{top:15,right:5},disabled:d==null?void 0:d({field:V,index:Y,fields:_}),children:i})]})},V.id))]})},tn=g.forwardRef(({value:e,onChange:t},r)=>{const{t:a}=x.useTranslation(),l=o=>i=>{t({...e,[o]: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:o=>l("x_axis_scroll")(o.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:o=>l("y_axis_scroll")(o.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:o=>l("x_axis_slider")(o.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:o=>l("y_axis_slider")(o.currentTarget.checked)})})})]})]})}),lt=g.forwardRef(({label:e,value:t,onChange:r,sx:a={},disabled:l},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=g.useMemo(()=>[{label:i("chart.orientation.horizontal"),value:"horizontal"},{label:i("chart.orientation.vertical"),value:"vertical"}],[c.language]);return n.jsx(s.Select,{ref:o,label:e??i("chart.orientation.label"),data:d,value:t,onChange:Z(r),sx:a,disabled:l})}),Yh=({control:e,watch:t})=>{const{t:r}=x.useTranslation(),a=t("legend"),l=(o,i)=>{const c={...a,orient:o};o==="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:o})=>n.jsx(s.Switch,{label:r("chart.legend.show_legend"),sx:{flex:1},checked:o.value,onChange:i=>o.onChange(i.currentTarget.checked)})})}),n.jsx(s.Group,{children:n.jsx(y.Controller,{name:"legend",control:e,render:({field:o})=>n.jsx(lt,{sx:{flex:1},value:o.value.orient,onChange:i=>{l(i,o.onChange)},disabled:!a.show})})})]})};function Kh({control:e,index:t,variableOptions:r}){const{t:a}=x.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:l})=>n.jsx(s.TextInput,{label:a("common.name"),placeholder:a("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...l})}),n.jsx(y.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:l})=>n.jsx(s.Select,{label:a("common.value"),required:!0,data:r,sx:{flex:1},...l})})]}),n.jsx(y.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:l})=>n.jsx(s.TextInput,{label:a("chart.content_template.label"),placeholder:a("chart.content_template.placeholder"),required:!0,sx:{flex:1},...l})})]})}function Xh({control:e,watch:t,variables:r}){const{t:a}=x.useTranslation(),l=()=>({name:"",template:"",variable_key:""}),o=g.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(X,{control:e,watch:t,name:"reference_lines",getItem:l,addButtonText:a("chart.reference_line.add"),deleteButtonText:a("chart.reference_line.delete"),renderTabName:i,children:({field:c,index:d})=>n.jsx(Kh,{control:e,index:d,variableOptions:o})})}const Zh=({control:e,index:t})=>{const{t:r}=x.useTranslation();return n.jsx(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})})]})})},Jh=({control:e,watch:t})=>{const{t:r}=x.useTranslation(),a=()=>({id:Date.now().toString(),data_key:"",name:""}),l=(o,i)=>{const c=o.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(T.IconInfoCircle,{size:14,color:"#888"}),n.jsx(s.Text,{size:"14px",c:"#888",children:r("chart.tooltip.additional_metrics.description")})]}),n.jsx(X,{control:e,watch:t,name:"tooltip.metrics",getItem:a,addButtonText:r("chart.tooltip.additional_metrics.add"),deleteButtonText:r("chart.tooltip.additional_metrics.delete"),renderTabName:l,children:({field:o,index:i})=>n.jsx(Zh,{control:e,index:i})})]})};function Hh({control:e,watch:t}){return n.jsx(s.Stack,{children:n.jsx(Jh,{control:e,watch:t})})}const Je=g.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o}=x.useTranslation();return n.jsx(s.NumberInput,{ref:l,label:e??o("chart.rotate"),hideControls:!0,min:-90,max:90,rightSection:n.jsx(s.Text,{size:"xs",c:"dimmed",children:o("chart.degree")}),sx:a,styles:{section:{width:"4em",justifyContent:"flex-end",paddingRight:"6px"}},value:t,onChange:i=>{typeof i!="string"&&r(i)}})}),Rh=({control:e,watch:t})=>{const{t:r}=x.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(Je,{sx:{width:"48%"},...a})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:a})=>n.jsx(Ne,{...a})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:a})=>n.jsx(Ge,{...a})})]})},or={root:{alignSelf:"flex-end"},body:{alignItems:"center"},label:{display:"block"}},eg=["123456789","1234","1234.56789","1.234","0.123456789","-0.123456789"];function tg({format:e}){const{t}=x.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(T.IconChevronUp,{size:14}):n.jsx(T.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:eg.map(l=>n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Td,{children:l}),n.jsx(s.Table.Td,{children:n.jsx(ne,{children:U(l,e)})})]},l))})]})})]})}function ng({value:e,onChange:t},r){const{t:a}=x.useTranslation(),l=u=>{t({...e,output:u})},o=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(l),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:or}),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:or})]}),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:o}),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:or}),n.jsx(s.Box,{})]}),n.jsx(tg,{format:e})]})}const $e=g.forwardRef(ng),rg=({control:e,watch:t})=>{const{t:r}=x.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.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($e,{...a})})]})]})};function ag({context:e}){const{t}=x.useTranslation(),{value:r,set:a}=B(e.instanceData,"config"),{variables:l}=e,o=g.useMemo(()=>b.defaults({},r,Rn),[r]),{control:i,handleSubmit:c,watch:d,formState:u,reset:p}=y.useForm({defaultValues:o});return g.useEffect(()=>{p(o)},[o]),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(le,{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(Rh,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Y Axis",children:n.jsx(rg,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Legend",children:n.jsx(Yh,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Tooltip",children:n.jsx(Hh,{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(Xh,{variables:l,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(tn,{...f})})})]})]})})}function sg(e){return b.omit(e,"variables")}function lg(e){const{label_formatter:t=oe,...r}=e.y_axis;return{...e,y_axis:{...r,label_formatter:t}}}function og(e){const t={rotate:0,formatter:fe()},{axisLabel:r=t,...a}=e.x_axis;return{...e,x_axis:{...a,axisLabel:r}}}function ig(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 cg(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 dg(e){const t={tooltip:{metrics:[]}};return b.defaultsDeep(t,e)}function ug(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:l,y_axis:o,tooltip:i,...c}=e;return{...c,x_axis:{...l,data_key:a(l.data_key)},y_axis:{...o,data_key:a(o.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 pg(e){const t={legend:{show:!0,top:"0",right:"10",left:"auto",bottom:"auto",orient:"horizontal",type:"scroll"}};return b.defaultsDeep(t,e)}function hg(e){const{dataZoom:t,...r}=e;return{...r,dataZoom:t??tl()}}class gg extends R{constructor(){super(...arguments);P(this,"VERSION",9)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:a})=>{const{config:l}=r;return(l.variables||[]).forEach(i=>{a.variables.find(c=>c.name===i.name)||a.addVariable(i)}),{...r,version:2,config:sg(l)}}),this.version(3,r=>{const{config:a}=r;return{...r,version:3,config:lg(a)}}),this.version(4,r=>{const{config:a}=r;return{...r,version:4,config:og(a)}}),this.version(5,r=>{const{config:a}=r;return{...r,version:5,config:ig(a)}}),this.version(6,r=>{const{config:a}=r;return{...r,version:6,config:cg(a)}}),this.version(7,r=>{const{config:a}=r;return{...r,version:7,config:dg(a)}}),this.version(8,(r,a)=>{const{config:l}=r;return{...r,version:8,config:ug(l,a)}}),this.version(9,r=>{const{config:a}=r;return{...r,version:9,config:pg(a)}}),this.version(10,r=>{const{config:a}=r;return{...r,version:10,config:hg(a)}})}}const fg={displayName:"viz.boxplot.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new gg,name:"boxplot",viewRender:$h,configRender:ag,createConfig(){return{version:10,config:b.cloneDeep(Rn)}},triggers:[nl],translation:yp},hl={id:"builtin:button:click-button",displayName:"viz.button.click.label",nameRender:yg,configRender:bg,payload:[]};function bg(e){return n.jsx(n.Fragment,{})}function yg(e){const{t}=x.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.button.click.label")})}const ir={content:"Button",variant:"filled",color:"blue",size:"xs",compact:!1,horizontal_align:"left",vertical_align:"center"},vg={left:"flex-start",center:"center",right:"flex-end"},_g={top:"flex-start",center:"center",bottom:"flex-end"},xg=S.observer(({context:e,instance:t})=>{const r=De({vizManager:e.vizManager,instance:t}),a=ze(r.triggerManager,hl.id),l=ee(),{value:o}=B(e.instanceData,"config"),i=g.useMemo(()=>b.defaultsDeep({},o,ir),[o]),{content:c,horizontal_align:d,vertical_align:u,compact:p,size:f,...v}=i,{width:m,height:_}=e.viewport,w=l.payloadForSQL,k=()=>{a.forEach(D=>{r.runInteraction(D.id,{})})},z=p?`compact-${f}`:f;return n.jsx(s.Center,{sx:{width:m,height:_,justifyContent:vg[d],alignItems:_g[u]},children:n.jsx(s.Button,{size:z,...v,onClick:k,children:b.template(c)(w)})})}),mg=({value:e,onChange:t,label:r})=>{const a=s.useMantineTheme(),l=g.useCallback(i=>()=>t(i),[t]),o=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:l(i),radius:4,size:26,sx:{cursor:"pointer"},children:o(i)&&n.jsx(s.CheckIcon,{width:10,color:"white"})},i)})})]})},wg=["xs","sm","md","lg","xl"],cr=g.forwardRef(({label:e,value:t,onChange:r,sx:a,disabled:l},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=g.useMemo(()=>wg.map(u=>({label:i(`style.size.${u}`),value:u})),[c.language]);return n.jsx(s.Select,{ref:o,data:d,label:e,value:t,onChange:Z(r),sx:a,disabled:!0})}),Cg=[{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 Tg({context:e}){const{value:t,set:r}=B(e.instanceData,"config"),a=g.useMemo(()=>b.defaultsDeep({},t,ir),[t]),l=a;g.useEffect(()=>{!b.isEqual(a,l)&&(console.log("config malformed, resetting to defaults",a,l),r(l))},[a,l]);const{control:o,handleSubmit:i,watch:c,formState:d,reset:u}=y.useForm({defaultValues:l});return g.useEffect(()=>{u(l)},[l]),c(["content","variant","color","size","compact","horizontal_align","vertical_align"]),n.jsxs("form",{onSubmit:i(r),children:[n.jsx(le,{canSubmit:d.isDirty}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{control:o,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:o,name:"variant",render:({field:p})=>n.jsx(s.Select,{label:"Variant",data:Cg,...p})}),n.jsx(y.Controller,{control:o,name:"color",render:({field:p})=>n.jsx(mg,{label:"Theme",...p})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{control:o,name:"size",render:({field:p})=>n.jsx(cr,{label:"Size",...p})}),n.jsx(y.Controller,{control:o,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:o,name:"horizontal_align",render:({field:p})=>n.jsx(lr,{...p})}),n.jsx(y.Controller,{control:o,name:"vertical_align",render:({field:p})=>n.jsx(dl,{...p})})]})]})]})}const Sg=[{lang:"en",resources:{button:{viz_name:"Button",click:{label:"Click this button"}}}},{lang:"zh",resources:{button:{viz_name:"按钮",click:{label:"点击此按钮"}}}}];class kg extends R{constructor(){super(...arguments);P(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>{const{horizontal_align:a="left",vertical_align:l="center",...o}=r.config;return{...r,version:2,config:{...o,horizontal_align:a,vertical_align:l}}})}}const zg={displayName:"viz.button.viz_name",displayGroup:"chart.groups.others",migrator:new kg,name:"button",viewRender:xg,configRender:Tg,createConfig(){return{version:2,config:b.cloneDeep(ir)}},triggers:[hl],translation:Sg},Dg=({option:e,...t})=>{const{label:r,description:a}=e;return n.jsx(s.Box,{...t,children:n.jsxs(s.Stack,{gap:"0",children:[n.jsx(s.Text,{size:"sm",children:r}),n.jsx(s.Text,{size:"xs",opacity:.65,children:a})]})})},Ig=g.forwardRef(({value:e,onChange:t},r)=>{const{t:a,i18n:l}=x.useTranslation(),o=g.useMemo(()=>[{label:a("chart.series.line.area_style.origin.auto.label"),description:a("chart.series.line.area_style.origin.auto.description"),value:"auto"},{label:a("chart.series.line.area_style.origin.start.label"),description:a("chart.series.line.area_style.origin.start.description"),value:"start"},{label:a("chart.series.line.area_style.origin.end.label"),description:a("chart.series.line.area_style.origin.end.description"),value:"end"}],[l.language]);return n.jsx(s.Select,{ref:r,label:a("chart.series.line.area_style.origin.label"),data:o,value:e,onChange:Z(t),renderOption:Dg,size:"xs"})}),gl=g.forwardRef(({value:e,onChange:t,label:r,placeholder:a},l)=>n.jsx(s.ColorInput,{ref:l,label:r,placeholder:a,value:e,onChange:t,size:"xs",popoverProps:{withinPortal:!0,zIndex:340},rightSection:e?n.jsx(s.CloseButton,{size:"sm",onClick:()=>{t("")}}):null})),Mg=g.forwardRef(({value:e,onChange:t},r)=>{const{t:a}=x.useTranslation(),l=o=>i=>{const c=b.cloneDeep(e);b.set(c,o,i),t(c)};return n.jsxs(s.Stack,{ref:r,children:[n.jsx(s.Divider,{mt:10,mb:-10,variant:"dashed",label:n.jsxs(s.Group,{gap:6,children:[n.jsx(T.IconChartAreaLineFilled,{size:14,style:{color:"#999"}}),a("chart.series.line.area_style.label")]}),labelPosition:"center"}),n.jsx(s.Switch,{label:a("chart.series.line.area_style.enabled"),checked:e.enabled,onChange:o=>l("enabled")(o.currentTarget.checked)}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(gl,{label:a("chart.series.line.area_style.color"),placeholder:a("chart.series.line.area_style.use_series_color"),value:e.color,onChange:l("color")}),n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.opacity"),value:e.opacity,onChange:l("opacity"),step:.1,decimalScale:1,min:0,max:1})]}),n.jsx(Ig,{value:e.origin,onChange:l("origin")}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(gl,{label:a("chart.series.line.area_style.shadow_color"),value:e.shadowColor,onChange:l("shadowColor")}),n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.shadow_blur"),value:e.shadowBlur,onChange:l("shadowBlur")})]}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.shadow_offset_x"),value:e.shadowOffsetX,onChange:l("shadowOffsetX")}),n.jsx(s.NumberInput,{size:"xs",label:a("chart.series.line.area_style.shadow_offset_y"),value:e.shadowOffsetY,onChange:l("shadowOffsetY")})]})]})});function fl(){return{enabled:!1,color:"",origin:"auto",shadowBlur:0,shadowColor:"",shadowOffsetX:0,shadowOffsetY:0,opacity:.7}}const bl=g.forwardRef(({label:e,value:t,onChange:r,hiddenKeys:a},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=g.useMemo(()=>{let m=[{label:o("chart.series_order.name"),value:"name"},{label:o("chart.series_order.value"),value:"value"},{label:o("chart.series_order.raw"),value:""}];if(a&&Array.isArray(a)&&a.length>0){const _=new Set(a);m=m.filter(w=>!_.has(w.value))}return m},[i.language,a]),d=g.useMemo(()=>[{label:o("chart.series_order.asc"),value:"asc"},{label:o("chart.series_order.desc"),value:"desc"}],[i.language,a]),{key:u,order:p}=t,f=m=>{m!==null&&r({key:m,order:p})},v=m=>{m&&r({key:u,order:m})};return n.jsxs(s.Group,{gap:"xs",grow:!0,align:"flex-end",children:[n.jsx(s.Select,{ref:l,label:e,data:c,value:u,onChange:f}),u!==""&&n.jsx(s.SegmentedControl,{size:"sm",data:d,value:p,onChange:v})]})}),nn=()=>({key:"",order:"desc"});function Ag(e){const t=b.cloneDeep(b.omit(e,"variables"));return t.stats=b.omit(t.stats,"variables"),t}function Pg(e){const{rotate:t,formatter:r=fe()}=e.x_axis.axisLabel;return{...e,x_axis:{...e.x_axis,axisLabel:{rotate:t,formatter:r}}}}function Vg(e){const{dataZoom:t=ht,...r}=e;return{...r,dataZoom:t}}function $g(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 Eg(e){const t=e.reference_lines.map(r=>{const{lineStyle:a={type:"dashed",width:1,color:Ee.random().css()},show_in_legend:l=!1}=r;return{...r,lineStyle:a,show_in_legend:l}});return{...e,reference_lines:t}}function Bg(e){const t=e.reference_lines.map(r=>{const{yAxisIndex:a=0}=r;return{...r,yAxisIndex:a}});return{...e,reference_lines:t}}function Lg(e){const t=e.series.map(r=>{const{aggregation_on_group:a=_t}=r;return{...r,aggregation_on_group:a}});return{...e,series:t}}function qg(e){const t=e.series.map(r=>{const{aggregation_on_value:a=_t}=r;return{...r,aggregation_on_value:a}});return{...e,series:t}}function Og(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 Ng(e){const{series:t,...r}=e;return{...r,series:t.map(a=>{const{barMinWidth:l,barWidth:o,barMaxWidth:i}=a;return l?{...a,barMinWidth:l,barWidth:"",barMaxWidth:i??o}:{...a,barMinWidth:"",barWidth:o,barMaxWidth:""}})}}function Gg(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(a=>{const{min:l="",max:o=""}=a;return{...a,min:l,max:o}})}}function Fg(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(a=>{const{nameAlignment:l="left"}=a;return{...a,nameAlignment:l}})}}function jg(e){const{y_axes:t,...r}=e;return{...r,y_axes:t.map(a=>{const{show:l=!0}=a;return{...a,show:l}})}}function Qg(e){const{regressions:t,...r}=e;return{...r,regressions:t.map(a=>{const{group_by_key:l=""}=a;return{...a,group_by_key:l}})}}function Wg(e){const{series:t,y_axes:r,...a}=e;return{...a,series:t.map(l=>{const{hide_in_legend:o=!1,aggregation_on_value:i=_t}=l;return{...l,hide_in_legend:o,aggregation_on_value:i}}),y_axes:r.map(l=>{const{min:o="",max:i="",show:c=!0}=l;return{...l,min:o,max:i,show:c}})}}function Ug(e){const{type:t="category",...r}=e.x_axis;return{...e,x_axis:{...r,type:t}}}function Yg(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_data_key:l,series:o,regressions:i,...c}=e;return{...c,x_axis_data_key:a(l),series:o.map(d=>({...d,y_axis_data_key:a(d.y_axis_data_key),group_by_key:a(d.group_by_key)})),regressions:i.map(d=>({...d,y_axis_data_key:a(d.y_axis_data_key),group_by_key:a(d.group_by_key)}))}}catch(r){throw console.error("[Migration failed]",r),r}}function Kg(e){const{tooltip:t={metrics:[]},...r}=e;return{...e,tooltip:t}}function Xg(e,t){const{stats:r,...a}=e,l=wt(r.templates.top,t),o=wt(r.templates.bottom,t);return{stats:{top:l??"",bottom:o??""},...a}}function Zg(e){const{series:t,...r}=e,a=t.map(l=>{const{areaStyle:o=fl(),...i}=l;return{...i,areaStyle:o}});return{...r,series:a}}function Jg(e){const{series:t,...r}=e,a=t.map(l=>{const{order_in_group:o=nn(),...i}=l;return{...i,order_in_group:o}});return{...r,series:a}}class Hg extends R{constructor(){super(...arguments);P(this,"VERSION",22)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,{panelModel:a})=>{const{config:l}=r;return(l.variables||[]).forEach(c=>{a.variables.find(d=>d.name===c.name)||a.addVariable(c)}),(b.get(l,"stats.variables")||[]).forEach(c=>{a.variables.find(d=>d.name===c.name)||a.addVariable(c)}),{...r,version:2,config:Ag(l)}}),this.version(3,r=>({...r,version:3,config:Pg(r.config)})),this.version(4,r=>({...r,version:4,config:Vg(r.config)})),this.version(5,r=>({...r,version:5,config:$g(r.config)})),this.version(6,r=>({...r,version:6,config:Eg(r.config)})),this.version(7,r=>({...r,version:7,config:Bg(r.config)})),this.version(8,r=>({...r,version:8,config:Lg(r.config)})),this.version(9,r=>({...r,version:9,config:qg(r.config)})),this.version(10,r=>({...r,version:10,config:Og(r.config)})),this.version(11,r=>({...r,version:11,config:Ng(r.config)})),this.version(12,r=>({...r,version:12,config:Gg(r.config)})),this.version(13,r=>({...r,version:13,config:Fg(r.config)})),this.version(14,r=>({...r,version:14,config:jg(r.config)})),this.version(15,r=>({...r,version:15,config:Qg(r.config)})),this.version(16,r=>({...r,version:16,config:Wg(r.config)})),this.version(17,r=>({...r,version:17,config:Ug(r.config)})),this.version(18,(r,a)=>({...r,version:18,config:Yg(r.config,a)})),this.version(19,r=>({...r,version:19,config:Kg(r.config)})),this.version(20,(r,a)=>({...r,version:20,config:Xg(r.config,a.panelModel)})),this.version(21,(r,a)=>({...r,version:21,config:Zg(r.config)})),this.version(22,(r,a)=>({...r,version:22,config:Jg(r.config)}))}}const Rg=[{lang:"en",resources:{cartesian_chart:{viz_name:"Cartesian Chart",series:{aggregation:{label:"Aggregation on Value"}},click_series:{label:"Click bar, line or scatter"}}}},{lang:"zh",resources:{cartesian_chart:{viz_name:"复合图",series:{aggregation:{label:"聚合数据"}},click_series:{label:"点击柱、线或散点"}}}}],dr={id:"builtin:echarts:click-echart:series",displayName:"viz.cartesian_chart.click_series.label",nameRender:tf,configRender:ef,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function ef(e){return n.jsx(n.Fragment,{})}function tf(e){const{t}=x.useTranslation();return n.jsx(s.Text,{size:"sm",children:t("viz.cartesian_chart.click_series.label")})}const yl={regressions:[],series:[],stats:{bottom:"",top:""},x_axis:{type:"category",axisLabel:{rotate:0,formatter:fe(),overflow:me()}},tooltip:{metrics:[]},x_axis_data_key:"",x_axis_name:"",y_axes:[{min:"",max:"",name:"Y Axis",show:!0,position:"left",nameAlignment:"center",label_formatter:oe}],reference_lines:[],reference_areas:[],dataZoom:ht},rn=S.observer(({value:e,context:t,onHeightChange:r})=>{var f;const{ref:a}=te.useElementSize(),l=ee(),{panel:o}=be(),{variables:i,data:c}=t,d=g.useMemo(()=>Zt(e,i,l.payloadForViz,c),[e,i,c]),u=((f=a.current)==null?void 0:f.textContent)==="";g.useEffect(()=>{if(!r||!a.current)return;const v=u?0:a.current.offsetHeight;r(v)},[u,a.current]);const p=g.useMemo(()=>u?"none":"block",[u]);return n.jsx(s.Box,{sx:{display:p},children:n.jsx(mt,{ref:a,value:d,styles:{root:{margin:"0 8px",border:"none",maxWidth:"100%","&.mantine-RichTextEditor-root":{overflow:"auto !important"}},content:{"&.mantine-RichTextEditor-content .ProseMirror":{padding:0},"&.mantine-RichTextEditor-content .ProseMirror > p":{fontSize:"12px",lineHeight:"20px"}}},dashboardState:l.dashboardState,variableAggValueMap:o.variableAggValueMap})})});function nf(e){const t=e.y_axes.some(l=>!!l.name);let r=15;t&&(r+=20),e.dataZoom.x_axis_slider&&(r+=20);let a=5;return e.x_axis_name&&(a+=15),e.series.some(l=>!l.hide_in_legend)&&(a+=20),{top:r,right:15,bottom:a,left:20,containLabel:!0}}function rf(e){return e!=="line"?{}:{itemStyle:{opacity:0}}}function af(e){switch(e){case"line":return;case"bar":return"roundRect";case"scatter":return"circle"}}function sf(e){const t={show:!0,bottom:0,left:"center",type:"scroll"};return t.data=e.filter(r=>!r.hide_in_legend).map(({name:r,type:a})=>({name:r,icon:af(a),...rf(a)})),t}function an(e,t){switch(e.config.method){case"linear":return[...at.regressionLinear()(t)];case"exponential":return[...at.regressionExp()(t)];case"logistic":return[...at.regressionLog()(t)];case"polynomial":return[...at.regressionPoly().order(e.config.order)(t)];default:return[]}}function lf(e,t,r,a){const{transform:l,plot:o}=e,i={...o,name:t,data:an(l,a),showSymbol:!1,tooltip:{show:!1},smooth:!1,custom:{}};return r&&(i.custom={type:"regression-line",targetSeries:r}),i}function of({regressions:e=[],x_axis_data_key:t},r){const a=[];if(Object.keys(r).length===0)return a;function l(o,i,c,d){const u=lf(o,i,c,d);a.push(u)}return e.forEach(o=>{const{name:i,group_by_key:c}=o;if(!c||c===t){const f=Me(r,o.y_axis_data_key).map((v,m)=>[m,Number(v)]);l(o,i,"",f);return}const{columnKey:d}=A(o.y_axis_data_key),u=b.groupBy(jt(r,o.y_axis_data_key),c);Object.entries(u).forEach(([p,f])=>{const v=f.map((_,w)=>[w,Number(_[d])]);l(o,p,p,v)})}),a}function cf(e,t){return e.map(r=>({name:"",type:"line",hide_in_legend:!0,data:[],markArea:{itemStyle:{color:r.color},data:[[{yAxis:t[r.y_keys.upper]},{yAxis:t[r.y_keys.lower]}]],silent:!0}}))}function df(e,t,r,a){return t?a==="value"?[[r[0],e]]:[e]:[]}function uf(e,t,r,a,l,o){return e.map(i=>{const c=r[i.variable_key],d=i.orientation==="horizontal",u=d?"yAxis":"xAxis",p=d?"insideEndTop":"end",f=df(c,d,l,o);return{name:i.name,type:"scatter",hide_in_legend:!i.show_in_legend,xAxisId:"main-x-axis",yAxisIndex:i.yAxisIndex,data:f,symbol:"none",silent:!0,tooltip:{show:!1},markLine:{data:[{name:i.name,[u]:c}],silent:!0,symbol:["none","none"],lineStyle:i.lineStyle,label:{formatter:function(){return i.template?$t(i.template,t,a):""},position:p}}}})}function ur(e,t,r){const a=Me(e,t),l=Me(e,r);return b.zip(a,l)}function pf(e,t,r,a){const l=ur(t,r,a);return b.unionBy(l,e,0)}function hf({dataTemplate:e,data:t,x_axis_data_key:r,y_axis_data_key:a,valueTypedXAxis:l}){return l?pf(e,t,r,a):Me(t,a)}function gf({dataTemplate:e,data:t,aggregation_on_value:r,x_axis_data_key:a,y_axis_data_key:l,valueTypedXAxis:o}){if(!r||r.type==="none")return hf({dataTemplate:e,data:t,x_axis_data_key:a,y_axis_data_key:l,valueTypedXAxis:o});const i=ur(t,a,l),c=b.groupBy(i,"0");return e.map(([u])=>{const f=c[u].map(m=>m[1]),v=Pn(f,r);return[u,v]})}function ff({group_by_key:e,data:t,x_axis_data_key:r,y_axis_data_key:a}){const{queryID:l,columnKey:o}=A(e),i=b.groupBy(t[l],o);return Object.entries(i).forEach(([c,d])=>{i[c]=ur({[l]:d},r,a)}),i}function bf({type:e,...t},r,a,l){if(!e)return 10;if(e==="static"){const{size:u}=t;return u}const{func_content:o}=t,{queryID:i,columnKey:c}=A(a),d=b.keyBy(jt(r,i),c);return(u,p)=>{let f;p.name?f=d[p.name]:f=r[p.dataIndex];try{return new Function(`return ${o}`)()({rowData:f,params:p,variables:l},{lodash:b,interpolate:tt.interpolate})}catch(v){return console.error(`[getEchartsSymbolSize] failed parsing custom function, error: ${v.message}`),10}}}function yf({x_axis_data_key:e,x_axis:t},{y_axis_data_key:r,yAxisIndex:a,label_position:l,name:o,group_by_key:i,order_in_group:c,aggregation_on_value:d,stack:u,color:p,display_name_on_line:f,symbolSize:v,hide_in_legend:m,areaStyle:_,...w},k,z,D,M){const O=t.type!=="category",V={label:{show:!!l,position:l,formatter:M[a??"default"]},name:o,xAxisId:"main-x-axis",yAxisIndex:a,stack:u,color:p,symbolSize:bf(v,z,e,D),hide_in_legend:m,labelLayout:{hideOverlap:!0},...w};if(w.type==="line"&&(V.lineStyle={width:w.lineStyle.width,type:w.lineStyle.type,shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:b.clamp(w.lineStyle.width,1,3)},_.enabled)){V.lineStyle.shadowColor="transparent";const{enabled:de,...H}=_;V.areaStyle={...H,color:H.color||p}}if(f&&(V.endLabel={show:!0,formatter:o,offset:[-12,12],align:"right"}),!i||i===e)return V.data=gf({dataTemplate:k,data:z,aggregation_on_value:d,x_axis_data_key:e,y_axis_data_key:r,valueTypedXAxis:O}),V;const Y=ff({group_by_key:i,data:z,x_axis_data_key:e,y_axis_data_key:r});let N=Object.entries(Y);return c.key==="name"&&(N=b.orderBy(Object.entries(Y),0,[c.order])),N.map(([de,H])=>{const ae=b.cloneDeep(V);return ae.name=de,ae.color=void 0,"areaStyle"in ae&&(ae.areaStyle.color=void 0),ae.data=H,ae})}function vf(e,t,r,a,l,o){const i=t.map(d=>[d,0]);return e.series.map(d=>yf(e,d,i,r,o,a)).flat().concat(uf(e.reference_lines,l,o,r,t,e.x_axis.type)).concat(cf(e.reference_areas,o))}function _f(e,t){const r=e.find(o=>o.axisDim==="x"&&o.axisId==="main-x-axis");if(!r)return"";const{axisValue:a,axisIndex:l}=r;return xe(t.x_axis.axisLabel.formatter)(a,l)}const xf=e=>U(e,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function mf(e,t,r,a){const l=r.reduce((o,{yAxisIndex:i,name:c})=>(o[c]=i,o),{});return K.getTooltip({trigger:"axis",formatter:function(o){const i=Array.isArray(o)?o:[o];if(i.length===0)return"";const c=i.map(({seriesName:f,marker:v,value:m})=>{if(Array.isArray(m)&&m.length===2&&(m=m[1]),!f)return m;const _=l[f],w=a[_]??a.default;return`
|
|
115
115
|
<tr>
|
|
116
116
|
<td>${v}</td>
|
|
117
117
|
<th style="text-align: right; padding: 0 1em;">${f}</th>
|