kd-lane-chart-v3 0.0.9 → 0.1.1

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/esm/index.js CHANGED
@@ -2929,7 +2929,7 @@ const _hoisted_2$6 = { class: "legend-content" };
2929
2929
  const _hoisted_3$5 = { class: "scale-left" };
2930
2930
  const _hoisted_4$5 = ["onClick"];
2931
2931
  const _hoisted_5$4 = { class: "legend-line-item-top" };
2932
- const _hoisted_6$4 = { class: "legend-text" };
2932
+ const _hoisted_6$3 = { class: "legend-text" };
2933
2933
  const _hoisted_7$3 = {
2934
2934
  key: 0,
2935
2935
  class: "legend-data"
@@ -2959,7 +2959,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
2959
2959
  class: normalizeClass(["legend-color", legend.lineType]),
2960
2960
  style: normalizeStyle({ borderBottom: `2px ${legend.lineType} ${legend.color}` })
2961
2961
  }, null, 6),
2962
- createElementVNode("div", _hoisted_6$4, toDisplayString(legend.label), 1)
2962
+ createElementVNode("div", _hoisted_6$3, toDisplayString(legend.label), 1)
2963
2963
  ]),
2964
2964
  $props.formCache.displayType == "header" ? (openBlock(), createElementBlock("div", _hoisted_7$3, toDisplayString(legend.data), 1)) : createCommentVNode("", true)
2965
2965
  ], 12, _hoisted_4$5);
@@ -4072,7 +4072,7 @@ const _hoisted_5$3 = {
4072
4072
  key: 0,
4073
4073
  class: "kd-lane-chart-lane-container-echart"
4074
4074
  };
4075
- const _hoisted_6$3 = ["onMousedown"];
4075
+ const _hoisted_6$2 = ["onMousedown"];
4076
4076
  const _hoisted_7$2 = ["id", "lane-id"];
4077
4077
  const _hoisted_8$1 = ["onMousedown"];
4078
4078
  const _hoisted_9$1 = {
@@ -4204,7 +4204,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
4204
4204
  key: 1,
4205
4205
  class: "kd-lane-resize-handle kd-lane-resize-handle-right",
4206
4206
  onMousedown: ($event) => $options.startResize($event, lane, "right")
4207
- }, null, 40, _hoisted_6$3)) : createCommentVNode("", true)
4207
+ }, null, 40, _hoisted_6$2)) : createCommentVNode("", true)
4208
4208
  ], 64))
4209
4209
  ], 14, _hoisted_1$6);
4210
4210
  }), 128)),
@@ -4407,7 +4407,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
4407
4407
  }, 8, ["modelValue", "onClose"])
4408
4408
  ], 544);
4409
4409
  }
4410
- const KdLaneContainerComponent = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-423ed0d6"]]);
4410
+ const KdLaneContainerComponent = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-58d1cc31"]]);
4411
4411
  const SLIDER_GROUP_ID = "depthSliderGroup";
4412
4412
  function pad2(n) {
4413
4413
  return n < 10 ? "0" + n : "" + n;
@@ -5675,7 +5675,7 @@ const _hoisted_4$3 = {
5675
5675
  class: "chart"
5676
5676
  };
5677
5677
  const _hoisted_5$2 = { class: "label-card" };
5678
- const _hoisted_6$2 = { class: "label-row" };
5678
+ const _hoisted_6$1 = { class: "label-row" };
5679
5679
  const _hoisted_7$1 = { class: "label-row" };
5680
5680
  function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
5681
5681
  const _component_el_radio = resolveComponent("el-radio");
@@ -5711,7 +5711,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
5711
5711
  style: normalizeStyle($options.labelFloatStyle)
5712
5712
  }, [
5713
5713
  createElementVNode("div", _hoisted_5$2, [
5714
- createElementVNode("div", _hoisted_6$2, toDisplayString($data.labelPos.line1), 1),
5714
+ createElementVNode("div", _hoisted_6$1, toDisplayString($data.labelPos.line1), 1),
5715
5715
  createElementVNode("div", _hoisted_7$1, toDisplayString($data.labelPos.line2), 1)
5716
5716
  ])
5717
5717
  ], 4), [
@@ -6185,7 +6185,7 @@ const _hoisted_4$2 = {
6185
6185
  class: "label"
6186
6186
  };
6187
6187
  const _hoisted_5$1 = { class: "elTooltipArea" };
6188
- const _hoisted_6$1 = {
6188
+ const _hoisted_6 = {
6189
6189
  key: 7,
6190
6190
  class: "label"
6191
6191
  };
@@ -6384,7 +6384,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
6384
6384
  ]),
6385
6385
  _: 1
6386
6386
  }, 8, ["disabled"])) : createCommentVNode("", true),
6387
- $props.currentToolBarConfig.timeRangeSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_6$1, "时间范围:")) : createCommentVNode("", true),
6387
+ $props.currentToolBarConfig.timeRangeSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_6, "时间范围:")) : createCommentVNode("", true),
6388
6388
  $props.currentToolBarConfig.timeRangeSelectShow !== false ? (openBlock(), createBlock(_component_el_tooltip, {
6389
6389
  key: 8,
6390
6390
  disabled: !($data.form.axisType == "depth"),
@@ -7395,6 +7395,7 @@ const _sfc_main$2 = {
7395
7395
  // 当前右键菜单来源:'missingPoint' | 'markArea' | null
7396
7396
  currentContextMenuType: null,
7397
7397
  activeSubMenu: null,
7398
+ subMenuDirection: "right",
7398
7399
  params: [],
7399
7400
  contextItem: void 0,
7400
7401
  realTimeData: [],
@@ -8465,7 +8466,31 @@ const _sfc_main$2 = {
8465
8466
  },
8466
8467
  formatter: (series) => {
8467
8468
  var _a;
8468
- const uniqueSeries = series.filter((item) => item.seriesName !== "helper");
8469
+ const uniqueSeries = series.filter((item) => item.seriesName !== "helper").reduce((acc, current) => {
8470
+ const existingIndex = acc.findIndex(
8471
+ (item) => item.seriesName === current.seriesName
8472
+ );
8473
+ if (existingIndex === -1) {
8474
+ acc.push(current);
8475
+ } else {
8476
+ const existingItem = acc[existingIndex];
8477
+ const existingValue = Array.isArray(existingItem.value) ? existingItem.value[0] : existingItem.value;
8478
+ const currentValue = Array.isArray(current.value) ? current.value[0] : current.value;
8479
+ const existingHasValue = existingValue !== void 0 && existingValue !== null && existingValue !== "";
8480
+ const currentHasValue = currentValue !== void 0 && currentValue !== null && currentValue !== "";
8481
+ if (!existingHasValue && currentHasValue) ;
8482
+ else if (existingHasValue && !currentHasValue) {
8483
+ acc[existingIndex] = current;
8484
+ } else if (existingHasValue && currentHasValue) {
8485
+ if (Number(currentValue) > Number(existingValue)) {
8486
+ acc[existingIndex] = current;
8487
+ }
8488
+ } else {
8489
+ acc[existingIndex] = current;
8490
+ }
8491
+ }
8492
+ return acc;
8493
+ }, []);
8469
8494
  if (this.tooltipFormatter && typeof this.tooltipFormatter === "function") {
8470
8495
  let mousePositionData = null;
8471
8496
  if (uniqueSeries.length > 0) {
@@ -9097,7 +9122,7 @@ const _sfc_main$2 = {
9097
9122
  }
9098
9123
  }
9099
9124
  }
9100
- return [value, +item[axisKey]];
9125
+ return [value, +item[axisKey], item.timestamp];
9101
9126
  });
9102
9127
  },
9103
9128
  generateSeriesDataCached(data, lineInfo, axisKey, paramCodeMap) {
@@ -9115,7 +9140,7 @@ const _sfc_main$2 = {
9115
9140
  }
9116
9141
  }
9117
9142
  }
9118
- return [value, +item[axisKey]];
9143
+ return [value, +item[axisKey], item.timestamp];
9119
9144
  });
9120
9145
  },
9121
9146
  generateAllSeriesDataCached(data, lineInfo, axisKey, paramCodeMap) {
@@ -9168,11 +9193,21 @@ const _sfc_main$2 = {
9168
9193
  let lastValidPoint = null;
9169
9194
  let lastValidIndex = -1;
9170
9195
  let inMissingRange = false;
9196
+ let firstValidPoint = null;
9197
+ let firstValidIndex = -1;
9198
+ let hasMissingAtStart = false;
9171
9199
  for (let i = 0; i < seriesData.length; i++) {
9172
9200
  const point = seriesData[i];
9173
9201
  const value = point[0];
9174
9202
  const isValid = value !== null && value !== void 0 && value !== "" && Number.isFinite(+value);
9175
9203
  if (isValid) {
9204
+ if (firstValidPoint === null) {
9205
+ firstValidPoint = point;
9206
+ firstValidIndex = i;
9207
+ if (i > 0) {
9208
+ hasMissingAtStart = true;
9209
+ }
9210
+ }
9176
9211
  if (inMissingRange && lastValidPoint) {
9177
9212
  boundaryPoints.push({
9178
9213
  data: lastValidPoint,
@@ -9194,6 +9229,20 @@ const _sfc_main$2 = {
9194
9229
  }
9195
9230
  }
9196
9231
  }
9232
+ if (hasMissingAtStart && firstValidPoint) {
9233
+ boundaryPoints.push({
9234
+ data: firstValidPoint,
9235
+ type: "bottom",
9236
+ originalIndex: firstValidIndex
9237
+ });
9238
+ }
9239
+ if (inMissingRange && lastValidPoint) {
9240
+ boundaryPoints.push({
9241
+ data: lastValidPoint,
9242
+ type: "top",
9243
+ originalIndex: lastValidIndex
9244
+ });
9245
+ }
9197
9246
  return boundaryPoints;
9198
9247
  },
9199
9248
  async handleChartClick(e, laneId) {
@@ -9384,6 +9433,9 @@ const _sfc_main$2 = {
9384
9433
  });
9385
9434
  const scatterData = filteredPoints.map((point) => ({
9386
9435
  value: point.value,
9436
+ lineId: point.lineId,
9437
+ paramId: point.paramId,
9438
+ timestamp: point.timestamp,
9387
9439
  itemStyle: {
9388
9440
  color: point.color || "#1890ff",
9389
9441
  borderColor: "#fff",
@@ -9506,7 +9558,27 @@ const _sfc_main$2 = {
9506
9558
  }
9507
9559
  }
9508
9560
  if (clickedPoint) {
9509
- this.showContextMenu(clickedPoint, laneId, e);
9561
+ if (clickedPoint.type && (clickedPoint.type === "top" || clickedPoint.type === "bottom")) {
9562
+ this.showContextMenu(clickedPoint, laneId, e);
9563
+ } else if (clickedPoint.paramId && clickedPoint.lineId) {
9564
+ const markAreaIndex = this.findMarkAreaByPoint(clickedPoint, laneId);
9565
+ if (markAreaIndex !== -1) {
9566
+ this.currentMarkAreaIndex = markAreaIndex;
9567
+ this.currentContextMenuType = "markArea";
9568
+ this.currentPointInfo = null;
9569
+ this.currentContextMenuItems = [
9570
+ ...this.markAreaMenuConfig || [],
9571
+ { label: "删除区块", action: "deleteMarkArea" }
9572
+ ];
9573
+ this.calculateContextMenuPosition(e);
9574
+ this.contextMenuVisible = true;
9575
+ this.activeSubMenu = null;
9576
+ } else {
9577
+ this.showMarkAreaContextMenu(laneId, e);
9578
+ }
9579
+ } else {
9580
+ this.showMarkAreaContextMenu(laneId, e);
9581
+ }
9510
9582
  } else {
9511
9583
  this.showMarkAreaContextMenu(laneId, e);
9512
9584
  }
@@ -9645,12 +9717,35 @@ const _sfc_main$2 = {
9645
9717
  this.currentContextMenuType = null;
9646
9718
  this.currentContextMenuItems = [];
9647
9719
  this.activeSubMenu = null;
9720
+ this.subMenuDirection = "right";
9648
9721
  this.menuWidth = null;
9649
9722
  this.menuHeight = null;
9650
9723
  },
9651
9724
  showSubMenu(item, event) {
9652
9725
  event.stopPropagation();
9653
9726
  this.activeSubMenu = item;
9727
+ const parentMenuItem = event.currentTarget;
9728
+ this.$nextTick(() => {
9729
+ const container = document.querySelector(".kd-lane-chart-lane-container-echart");
9730
+ const subMenu = parentMenuItem == null ? void 0 : parentMenuItem.querySelector(".sub-menu");
9731
+ if (!container || !parentMenuItem || !subMenu) return;
9732
+ subMenu.style.visibility = "hidden";
9733
+ const containerRect = container.getBoundingClientRect();
9734
+ const parentRect = parentMenuItem.getBoundingClientRect();
9735
+ const subMenuWidth = subMenu.offsetWidth;
9736
+ const rightAvailable = containerRect.right - parentRect.right;
9737
+ this.subMenuDirection = rightAvailable >= subMenuWidth ? "right" : "left";
9738
+ subMenu.style.visibility = "";
9739
+ });
9740
+ },
9741
+ getSubMenuStyle() {
9742
+ return {
9743
+ left: this.subMenuDirection === "right" ? "100%" : "auto",
9744
+ right: this.subMenuDirection === "right" ? "auto" : "100%",
9745
+ top: 0,
9746
+ marginLeft: this.subMenuDirection === "right" ? "4px" : "auto",
9747
+ marginRight: this.subMenuDirection === "right" ? "auto" : "4px"
9748
+ };
9654
9749
  },
9655
9750
  handleContextMenuItemClick(item) {
9656
9751
  if (item.action === "deleteMarkArea") {
@@ -9695,6 +9790,7 @@ const _sfc_main$2 = {
9695
9790
  return;
9696
9791
  }
9697
9792
  const { topPoint, bottomPoint } = this.findBoundaryPointPair(currentPoint);
9793
+ console.log("获取到的起始点和结束点", topPoint, bottomPoint);
9698
9794
  this.$emit("missingPointMenuItemClick", {
9699
9795
  pointInfo: currentPoint,
9700
9796
  menuItem: item,
@@ -9737,45 +9833,133 @@ const _sfc_main$2 = {
9737
9833
  }
9738
9834
  },
9739
9835
  findBoundaryPointPair(currentPoint) {
9740
- const chartRef = this.getChartRefByLaneId(currentPoint.laneId);
9741
- if (!chartRef || !chartRef.chart) {
9742
- return { topPoint: null, bottomPoint: null };
9743
- }
9744
- const option = chartRef.chart.getOption();
9745
9836
  let topPoint = null;
9746
9837
  let bottomPoint = null;
9747
- for (let i = 0; i < option.series.length; i++) {
9748
- const series = option.series[i];
9749
- if (series.type !== "scatter") continue;
9750
- const data = series.data || [];
9751
- for (let j = 0; j < data.length; j++) {
9752
- const point = data[j];
9753
- if (!point || !point.value) continue;
9754
- if (point.lineId === currentPoint.lineId && point.paramId === currentPoint.paramId) {
9755
- if (point.type === "top") {
9756
- topPoint = point;
9757
- } else if (point.type === "bottom") {
9758
- bottomPoint = point;
9759
- }
9838
+ if (currentPoint.type === "top") {
9839
+ topPoint = currentPoint;
9840
+ bottomPoint = this.findBoundaryPointFromRealTimeData(
9841
+ currentPoint,
9842
+ "bottom"
9843
+ );
9844
+ } else if (currentPoint.type === "bottom") {
9845
+ bottomPoint = currentPoint;
9846
+ topPoint = this.findBoundaryPointFromRealTimeData(currentPoint, "top");
9847
+ }
9848
+ return { topPoint, bottomPoint };
9849
+ },
9850
+ findBoundaryPointFromRealTimeData(currentPoint, targetType) {
9851
+ const axisType = this.formCache.axisType;
9852
+ const axisKey = this.currentToolBarConfig.axisTypeList && this.currentToolBarConfig.axisTypeList[axisType] || (axisType === "time" ? "time" : "depth");
9853
+ const currentYValue = currentPoint.value[1];
9854
+ const paramId = currentPoint.paramId;
9855
+ const hasTimestamp = axisType === "depth" && this.realTimeData.length > 0 && this.realTimeData[0] && Object.prototype.hasOwnProperty.call(this.realTimeData[0], "timestamp");
9856
+ let searchStartIndex = -1;
9857
+ const tolerance = axisType === "depth" ? 0.01 : 1e3;
9858
+ for (let i = 0; i < this.realTimeData.length; i++) {
9859
+ const item = this.realTimeData[i];
9860
+ let itemYValue = item[axisKey];
9861
+ if (axisType !== "depth") {
9862
+ itemYValue = this.toMillisecondTimestamp(itemYValue);
9863
+ } else {
9864
+ itemYValue = Number(itemYValue);
9865
+ }
9866
+ if (hasTimestamp) {
9867
+ const itemTimestamp = this.toMillisecondTimestamp(item.timestamp);
9868
+ const pointTimestamp = currentPoint.timestamp ? this.toMillisecondTimestamp(currentPoint.timestamp) : null;
9869
+ if (Math.abs(itemYValue - currentYValue) < tolerance && (!pointTimestamp || itemTimestamp === pointTimestamp)) {
9870
+ searchStartIndex = i;
9871
+ break;
9872
+ }
9873
+ } else {
9874
+ if (Math.abs(itemYValue - currentYValue) < tolerance) {
9875
+ searchStartIndex = i;
9876
+ break;
9760
9877
  }
9761
9878
  }
9762
9879
  }
9763
- if (currentPoint.type === "top" && topPoint) {
9764
- const nextPoint = option.series.filter((s) => s.type === "scatter").flatMap((s) => s.data || []).find(
9765
- (p) => p && p.value && p.lineId === currentPoint.lineId && p.paramId === currentPoint.paramId && p.type === "bottom" && p.originalIndex > currentPoint.originalIndex
9766
- );
9767
- if (nextPoint) {
9768
- bottomPoint = nextPoint;
9880
+ console.log("searchStartIndex", searchStartIndex);
9881
+ if (searchStartIndex === -1) return null;
9882
+ let boundaryPoint = null;
9883
+ if (targetType === "bottom") {
9884
+ for (let i = searchStartIndex + 1; i < this.realTimeData.length; i++) {
9885
+ const item = this.realTimeData[i];
9886
+ const value = item[paramId];
9887
+ if (value !== null && value !== void 0 && value !== "" && Number.isFinite(+value)) {
9888
+ let itemYValue = item[axisKey];
9889
+ if (axisType !== "depth") {
9890
+ itemYValue = this.toMillisecondTimestamp(itemYValue);
9891
+ } else {
9892
+ itemYValue = Number(itemYValue);
9893
+ }
9894
+ boundaryPoint = {
9895
+ value: [value, itemYValue, item.timestamp],
9896
+ lineId: currentPoint.lineId,
9897
+ paramId,
9898
+ type: "bottom",
9899
+ originalIndex: i,
9900
+ timestamp: hasTimestamp ? item.timestamp : void 0
9901
+ };
9902
+ break;
9903
+ }
9769
9904
  }
9770
- } else if (currentPoint.type === "bottom" && bottomPoint) {
9771
- const prevPoint = option.series.filter((s) => s.type === "scatter").flatMap((s) => s.data || []).find(
9772
- (p) => p && p.value && p.lineId === currentPoint.lineId && p.paramId === currentPoint.paramId && p.type === "top" && p.originalIndex < currentPoint.originalIndex
9773
- );
9774
- if (prevPoint) {
9775
- topPoint = prevPoint;
9905
+ if (!boundaryPoint) {
9906
+ const lastItem = this.realTimeData[this.realTimeData.length - 1];
9907
+ let lastYValue = lastItem[axisKey];
9908
+ if (axisType !== "depth") {
9909
+ lastYValue = this.toMillisecondTimestamp(lastYValue);
9910
+ } else {
9911
+ lastYValue = Number(lastYValue);
9912
+ }
9913
+ boundaryPoint = {
9914
+ value: [lastItem[paramId], lastYValue, lastItem.timestamp],
9915
+ lineId: currentPoint.lineId,
9916
+ paramId,
9917
+ type: "bottom",
9918
+ originalIndex: this.realTimeData.length - 1,
9919
+ timestamp: hasTimestamp ? lastItem.timestamp : void 0
9920
+ };
9921
+ }
9922
+ } else {
9923
+ for (let i = searchStartIndex - 1; i >= 0; i--) {
9924
+ const item = this.realTimeData[i];
9925
+ const value = item[paramId];
9926
+ if (value !== null && value !== void 0 && value !== "" && Number.isFinite(+value)) {
9927
+ let itemYValue = item[axisKey];
9928
+ if (axisType !== "depth") {
9929
+ itemYValue = this.toMillisecondTimestamp(itemYValue);
9930
+ } else {
9931
+ itemYValue = Number(itemYValue);
9932
+ }
9933
+ boundaryPoint = {
9934
+ value: [value, itemYValue, item.timestamp],
9935
+ lineId: currentPoint.lineId,
9936
+ paramId,
9937
+ type: "top",
9938
+ originalIndex: i,
9939
+ timestamp: hasTimestamp ? item.timestamp : void 0
9940
+ };
9941
+ break;
9942
+ }
9943
+ }
9944
+ if (!boundaryPoint) {
9945
+ const firstItem = this.realTimeData[0];
9946
+ let firstYValue = firstItem[axisKey];
9947
+ if (axisType !== "depth") {
9948
+ firstYValue = this.toMillisecondTimestamp(firstYValue);
9949
+ } else {
9950
+ firstYValue = Number(firstYValue);
9951
+ }
9952
+ boundaryPoint = {
9953
+ value: [firstItem[paramId], firstYValue, firstItem.timestamp],
9954
+ lineId: currentPoint.lineId,
9955
+ paramId,
9956
+ type: "top",
9957
+ originalIndex: 0,
9958
+ timestamp: hasTimestamp ? firstItem.timestamp : void 0
9959
+ };
9776
9960
  }
9777
9961
  }
9778
- return { topPoint, bottomPoint };
9962
+ return boundaryPoint;
9779
9963
  },
9780
9964
  // 获取Y轴标签格式化函数
9781
9965
  getYAxisLabelFormatter(isTimeLane, dataGroups, groupIndex, groupMin, groupMax, axisKey) {
@@ -10402,6 +10586,7 @@ const _sfc_main$2 = {
10402
10586
  const formattedBoundaryPoints = boundaryPoints.map(
10403
10587
  (bp) => ({
10404
10588
  value: bp.data,
10589
+ timestamp: bp.data[2],
10405
10590
  type: bp.type,
10406
10591
  originalIndex: bp.originalIndex,
10407
10592
  lineId: lineInfo.lineId,
@@ -10972,13 +11157,8 @@ const _hoisted_2$2 = {
10972
11157
  ref: "targetDom"
10973
11158
  };
10974
11159
  const _hoisted_3$1 = ["onMouseenter", "onClick"];
10975
- const _hoisted_4$1 = {
10976
- key: 0,
10977
- class: "context-menu sub-menu",
10978
- style: { left: "100%", top: 0 }
10979
- };
11160
+ const _hoisted_4$1 = ["onClick"];
10980
11161
  const _hoisted_5 = ["onClick"];
10981
- const _hoisted_6 = ["onClick"];
10982
11162
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
10983
11163
  const _component_resizeEcharts = resolveComponent("resizeEcharts");
10984
11164
  const _component_chartContainer = resolveComponent("chartContainer");
@@ -11091,7 +11271,11 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
11091
11271
  }, [
11092
11272
  createElementVNode("span", null, toDisplayString(item.label), 1),
11093
11273
  _cache[8] || (_cache[8] = createElementVNode("span", { class: "arrow" }, "›", -1)),
11094
- $data.activeSubMenu === item ? (openBlock(), createElementBlock("div", _hoisted_4$1, [
11274
+ $data.activeSubMenu === item ? (openBlock(), createElementBlock("div", {
11275
+ key: 0,
11276
+ class: "context-menu sub-menu",
11277
+ style: normalizeStyle($options.getSubMenuStyle())
11278
+ }, [
11095
11279
  (openBlock(true), createElementBlock(Fragment, null, renderList(item.children, (child, childIndex) => {
11096
11280
  return openBlock(), createElementBlock("div", {
11097
11281
  key: childIndex,
@@ -11099,16 +11283,16 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
11099
11283
  onClick: ($event) => $options.handleContextMenuItemClick(child)
11100
11284
  }, [
11101
11285
  createElementVNode("span", null, toDisplayString(child.label), 1)
11102
- ], 8, _hoisted_5);
11286
+ ], 8, _hoisted_4$1);
11103
11287
  }), 128))
11104
- ])) : createCommentVNode("", true)
11288
+ ], 4)) : createCommentVNode("", true)
11105
11289
  ], 40, _hoisted_3$1)) : (openBlock(), createElementBlock("div", {
11106
11290
  key: 1,
11107
11291
  class: "context-menu-item",
11108
11292
  onClick: ($event) => $options.handleContextMenuItemClick(item)
11109
11293
  }, [
11110
11294
  createElementVNode("span", null, toDisplayString(item.label), 1)
11111
- ], 8, _hoisted_6))
11295
+ ], 8, _hoisted_5))
11112
11296
  ], 64);
11113
11297
  }), 128))
11114
11298
  ], 4)
@@ -11117,7 +11301,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
11117
11301
  ])
11118
11302
  ], 512);
11119
11303
  }
11120
- const chartContainer = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-1fceddd1"]]);
11304
+ const chartContainer = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-2b46ef31"]]);
11121
11305
  const _sfc_main$1 = {
11122
11306
  name: "ParameterPanel",
11123
11307
  props: {