@visactor/vseed 0.4.2 → 0.4.3

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.
Files changed (153) hide show
  1. package/dist/cjs/index.cjs +646 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildSpec.d.ts +1 -2
  4. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  5. package/dist/esm/builder/builder/builder.d.ts +1116 -106
  6. package/dist/esm/builder/builder/builder.js +10 -0
  7. package/dist/esm/builder/builder/builder.js.map +1 -1
  8. package/dist/esm/builder/builder/prepare.d.ts +12 -0
  9. package/dist/esm/builder/builder/prepare.js +269 -0
  10. package/dist/esm/builder/builder/prepare.js.map +1 -0
  11. package/dist/esm/dataReshape/constant.d.ts +1 -0
  12. package/dist/esm/dataReshape/constant.js +2 -1
  13. package/dist/esm/dataReshape/constant.js.map +1 -1
  14. package/dist/esm/dataSelector/selector.d.ts +71 -2
  15. package/dist/esm/dataSelector/selector.js +96 -32
  16. package/dist/esm/dataSelector/selector.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +2 -1
  18. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js +2 -1
  20. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  21. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +10 -4
  22. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
  23. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.d.ts +8 -2
  24. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js +13 -4
  25. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js.map +1 -1
  26. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js +8 -4
  27. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js.map +1 -1
  28. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +10 -4
  29. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
  30. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.d.ts +9 -1
  31. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js +7 -1
  32. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js.map +1 -1
  33. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js +3 -2
  34. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js.map +1 -1
  35. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js +5 -2
  36. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js.map +1 -1
  37. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js +3 -2
  38. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js.map +1 -1
  39. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.d.ts +4 -1
  40. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js +12 -1
  41. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js.map +1 -1
  42. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +6 -3
  43. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  44. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js +7 -3
  45. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -1
  46. package/dist/esm/pipeline/utils/index.d.ts +1 -0
  47. package/dist/esm/pipeline/utils/index.js +1 -0
  48. package/dist/esm/pipeline/utils/sandbox/builtin-utils.d.ts +6 -0
  49. package/dist/esm/pipeline/utils/sandbox/builtin-utils.js +337 -0
  50. package/dist/esm/pipeline/utils/sandbox/builtin-utils.js.map +1 -0
  51. package/dist/esm/pipeline/utils/sandbox/execute.d.ts +73 -0
  52. package/dist/esm/pipeline/utils/sandbox/execute.js +716 -0
  53. package/dist/esm/pipeline/utils/sandbox/execute.js.map +1 -0
  54. package/dist/esm/pipeline/utils/sandbox/index.d.ts +7 -0
  55. package/dist/esm/pipeline/utils/sandbox/index.js +3 -0
  56. package/dist/esm/types/builder/builder.d.ts +1 -0
  57. package/dist/esm/types/builder/builder.js.map +1 -1
  58. package/dist/esm/types/chartType/area/zArea.d.ts +682 -18
  59. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +682 -18
  60. package/dist/esm/types/chartType/bar/zBar.d.ts +362 -10
  61. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +362 -10
  62. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +362 -10
  63. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +210 -14
  64. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +2 -2
  65. package/dist/esm/types/chartType/column/zColumn.d.ts +362 -10
  66. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +362 -10
  67. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +362 -10
  68. package/dist/esm/types/chartType/donut/zDonut.d.ts +2 -2
  69. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +842 -22
  70. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +2 -2
  71. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +2 -2
  72. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +362 -10
  73. package/dist/esm/types/chartType/line/zLine.d.ts +522 -14
  74. package/dist/esm/types/chartType/pie/zPie.d.ts +2 -2
  75. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +241 -4
  76. package/dist/esm/types/chartType/pivotTable/zPivotTable.js +1 -1
  77. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  78. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +362 -10
  79. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +362 -10
  80. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +362 -10
  81. package/dist/esm/types/chartType/radar/zRadar.d.ts +2 -2
  82. package/dist/esm/types/chartType/rose/zRose.d.ts +2 -2
  83. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +2 -2
  84. package/dist/esm/types/chartType/scatter/zScatter.d.ts +362 -10
  85. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +2 -2
  86. package/dist/esm/types/chartType/table/zTable.d.ts +241 -4
  87. package/dist/esm/types/chartType/table/zTable.js +1 -1
  88. package/dist/esm/types/chartType/table/zTable.js.map +1 -1
  89. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +2 -2
  90. package/dist/esm/types/dataSelector/selector.d.ts +594 -3
  91. package/dist/esm/types/dataSelector/selector.js +58 -2
  92. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  93. package/dist/esm/types/properties/annotation/annotation.d.ts +200 -4
  94. package/dist/esm/types/properties/annotation/annotationHorizontalLine.d.ts +12 -0
  95. package/dist/esm/types/properties/annotation/annotationPoint.d.ts +19 -0
  96. package/dist/esm/types/properties/annotation/annotationVerticalLine.d.ts +12 -0
  97. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.d.ts +10 -0
  98. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js +2 -0
  99. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js.map +1 -1
  100. package/dist/esm/types/properties/annotation/zAnnotationPoint.d.ts +80 -2
  101. package/dist/esm/types/properties/annotation/zAnnotationPoint.js +2 -1
  102. package/dist/esm/types/properties/annotation/zAnnotationPoint.js.map +1 -1
  103. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.d.ts +10 -0
  104. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js +2 -0
  105. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js.map +1 -1
  106. package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +105 -2
  107. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js +2 -1
  108. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
  109. package/dist/esm/types/properties/cellStyle/cellStyle.d.ts +83 -2
  110. package/dist/esm/types/properties/config/annotation/zAnnotation.d.ts +156 -0
  111. package/dist/esm/types/properties/config/area.d.ts +160 -4
  112. package/dist/esm/types/properties/config/bar.d.ts +240 -6
  113. package/dist/esm/types/properties/config/boxplot.d.ts +80 -2
  114. package/dist/esm/types/properties/config/circlePacking.d.ts +2 -2
  115. package/dist/esm/types/properties/config/column.d.ts +240 -6
  116. package/dist/esm/types/properties/config/config.d.ts +1300 -52
  117. package/dist/esm/types/properties/config/dualAxis.d.ts +80 -2
  118. package/dist/esm/types/properties/config/funnel.d.ts +2 -2
  119. package/dist/esm/types/properties/config/heatmap.d.ts +2 -2
  120. package/dist/esm/types/properties/config/histogram.d.ts +80 -2
  121. package/dist/esm/types/properties/config/label/zLabel.d.ts +2 -2
  122. package/dist/esm/types/properties/config/label/zPieLabel.d.ts +2 -2
  123. package/dist/esm/types/properties/config/line.d.ts +80 -2
  124. package/dist/esm/types/properties/config/pie.d.ts +6 -6
  125. package/dist/esm/types/properties/config/race.d.ts +240 -6
  126. package/dist/esm/types/properties/config/rose.d.ts +4 -4
  127. package/dist/esm/types/properties/config/scatter.d.ts +80 -2
  128. package/dist/esm/types/properties/config/sunburst.d.ts +2 -2
  129. package/dist/esm/types/properties/config/treeMap.d.ts +2 -2
  130. package/dist/esm/types/properties/markStyle/areaStyle.d.ts +19 -0
  131. package/dist/esm/types/properties/markStyle/barStyle.d.ts +99 -2
  132. package/dist/esm/types/properties/markStyle/barStyle.js +2 -1
  133. package/dist/esm/types/properties/markStyle/barStyle.js.map +1 -1
  134. package/dist/esm/types/properties/markStyle/boxPlotStyle.d.ts +2 -2
  135. package/dist/esm/types/properties/markStyle/lineStyle.d.ts +99 -2
  136. package/dist/esm/types/properties/markStyle/lineStyle.js +2 -1
  137. package/dist/esm/types/properties/markStyle/lineStyle.js.map +1 -1
  138. package/dist/esm/types/properties/markStyle/markStyle.d.ts +648 -24
  139. package/dist/esm/types/properties/markStyle/outlierStyle.d.ts +2 -2
  140. package/dist/esm/types/properties/markStyle/pointStyle.d.ts +99 -2
  141. package/dist/esm/types/properties/markStyle/pointStyle.js +2 -1
  142. package/dist/esm/types/properties/markStyle/pointStyle.js.map +1 -1
  143. package/dist/esm/types/properties/markStyle/zAreaStyle.d.ts +80 -2
  144. package/dist/esm/types/properties/markStyle/zAreaStyle.js +2 -1
  145. package/dist/esm/types/properties/markStyle/zAreaStyle.js.map +1 -1
  146. package/dist/esm/types/properties/theme/customTheme.d.ts +2600 -104
  147. package/dist/esm/types/sandbox.d.ts +19 -0
  148. package/dist/esm/types/sandbox.js +0 -0
  149. package/dist/esm/types/zVseed.d.ts +7 -25058
  150. package/dist/esm/types/zVseed.js.map +1 -1
  151. package/dist/umd/index.js +1772 -259
  152. package/dist/umd/index.js.map +1 -1
  153. package/package.json +1 -1
@@ -1,4 +1,6 @@
1
1
  import { z } from "zod";
2
+ import { zDatum } from "../properties/index.js";
3
+ const zPartialSelector = zDatum;
2
4
  const zMeasureSelector = z.object({
3
5
  field: z.string(),
4
6
  operator: z["enum"]([
@@ -53,7 +55,8 @@ const zSelector = z.union([
53
55
  z.string(),
54
56
  z.number(),
55
57
  zMeasureSelector,
56
- zDimensionSelector
58
+ zDimensionSelector,
59
+ zPartialSelector
57
60
  ]);
58
61
  const zSelectors = z.array(zSelector);
59
62
  const zAreaSelector = z.union([
@@ -61,6 +64,59 @@ const zAreaSelector = z.union([
61
64
  zDimensionSelector
62
65
  ]);
63
66
  const zAreaSelectors = z.array(zAreaSelector);
64
- export { zAreaSelector, zAreaSelectors, zDimensionSelector, zMeasureSelector, zSelector, zSelectors };
67
+ const zCellSelector = z.object({
68
+ __row_index: z.number(),
69
+ field: z.union([
70
+ z.string(),
71
+ z.literal('*')
72
+ ])
73
+ });
74
+ const zTableDynamicFilter = z.object({
75
+ type: z.literal('row-with-field'),
76
+ description: z.string().optional(),
77
+ code: z.string(),
78
+ fallback: z.union([
79
+ zSelector,
80
+ zSelectors
81
+ ]).optional(),
82
+ result: z.object({
83
+ success: z.boolean(),
84
+ data: z.array(zCellSelector).optional()
85
+ }).optional()
86
+ });
87
+ const zChartDynamicFilter = z.object({
88
+ type: z.literal('row-with-field'),
89
+ description: z.string().optional(),
90
+ code: z.string(),
91
+ fallback: z.union([
92
+ zSelector,
93
+ zSelectors
94
+ ]).optional(),
95
+ result: z.object({
96
+ success: z.boolean(),
97
+ data: z.array(z.record(z.string(), z.any())).optional()
98
+ }).optional()
99
+ });
100
+ const zValueDynamicFilter = z.object({
101
+ type: z.literal('value'),
102
+ description: z.string().optional(),
103
+ code: z.string(),
104
+ fallback: z.union([
105
+ z.string(),
106
+ z.number()
107
+ ]).optional(),
108
+ result: z.object({
109
+ success: z.boolean(),
110
+ data: z.union([
111
+ z.number(),
112
+ z.string()
113
+ ]).optional()
114
+ }).optional()
115
+ });
116
+ const zDynamicFilter = z.union([
117
+ zTableDynamicFilter,
118
+ zChartDynamicFilter
119
+ ]);
120
+ export { zAreaSelector, zAreaSelectors, zCellSelector, zChartDynamicFilter, zDimensionSelector, zDynamicFilter, zMeasureSelector, zPartialSelector, zSelector, zSelectors, zTableDynamicFilter, zValueDynamicFilter };
65
121
 
66
122
  //# sourceMappingURL=selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types/dataSelector/selector.js","sources":["webpack://@visactor/vseed/./src/types/dataSelector/selector.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\n/**\n * @description 指标选择器, 用于选择数据项中指标字段的值\n */\nexport type MeasureSelector = {\n /**\n * @description 指标字段, measures 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n */\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项, 会将值转换为字符串后进行比较, 因此 1 == \"1\" 为 true\n * - ==: 选择数据项中指标字段的值精准等于 value 的数据项, 不会做任何特殊处理, 因此 1 == \"1\" 为 false\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n * same as operator\n */\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 选择数据项中指标字段的值\n * - 仅 op 为 between 时, value 为长度为2的数组, 数组中的元素为指标字段的最小值和最大值\n * - 其他情况, value 为指标字段的单个值\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, measures 仅设置了 value, field 为 isHigh 或 isLow, op 为 =, value 为 1,\n // * 关闭useOrigin时, 数据项并不会考虑measures之外的字段, 因此field为isHigh或isLow的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {value: 100, isHigh: 1, isLow: 0},\n // * {value: 200, isHigh: 0, isLow: 1},\n // * {value: 300, isHigh: 1, isLow: 0},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\n/**\n * @description 维度选择器, 用于选择数据项中维度字段的值\n */\nexport type DimensionSelector = {\n /**\n * @description 维度字段, dimensions 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n */\n operator?: 'in' | 'not in'\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n * same as operator\n */\n op?: 'in' | 'not in'\n /**\n * @description 选择数据项中维度字段的值, 支持数组\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, dimensions 仅设置了 name, field 为 name, op 为 =, value 为 \"high\",\n // * 关闭useOrigin时, 数据项并不会考虑dimensions之外的字段, 因此field为name的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"high\", isHigh: \"true\", isLow: \"false\"},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type AreaSelector = MeasureSelector | DimensionSelector\n\nexport type AreaSelectors = Array<AreaSelector>\n\nexport type Selectors = Array<Selector>\n\nexport const zMeasureSelector = z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n})\n\nexport const zDimensionSelector = z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n})\n\nexport const zSelector = z.union([z.string(), z.number(), zMeasureSelector, zDimensionSelector])\n\nexport const zSelectors = z.array(zSelector)\n\nexport const zAreaSelector = z.union([zMeasureSelector, zDimensionSelector])\n\nexport const zAreaSelectors = z.array(zAreaSelector)\n"],"names":["zMeasureSelector","z","zDimensionSelector","zSelector","zSelectors","zAreaSelector","zAreaSelectors"],"mappings":";AA6GO,MAAMA,mBAAmBC,EAAE,MAAM,CAAC;IACvC,OAAOA,EAAE,MAAM;IACf,UAAUA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAK;QAAM;QAAM;QAAK;QAAK;QAAM;QAAM;KAAU,EAAE,OAAO;IAC5E,IAAIA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAK;QAAM;QAAM;QAAK;QAAK;QAAM;QAAM;KAAU,EAAE,OAAO;IACtE,OAAOA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;QAAIA,EAAE,KAAK,CAACA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG;KAAG;AACrF;AAEO,MAAMC,qBAAqBD,EAAE,MAAM,CAAC;IACzC,OAAOA,EAAE,MAAM;IACf,UAAUA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAM;KAAS,EAAE,OAAO;IAC1C,IAAIA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAM;KAAS,EAAE,OAAO;IACpC,OAAOA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;QAAIA,EAAE,KAAK,CAACA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG;KAAG;AACrF;AAEO,MAAME,YAAYF,EAAE,KAAK,CAAC;IAACA,EAAE,MAAM;IAAIA,EAAE,MAAM;IAAID;IAAkBE;CAAmB;AAExF,MAAME,aAAaH,EAAE,KAAK,CAACE;AAE3B,MAAME,gBAAgBJ,EAAE,KAAK,CAAC;IAACD;IAAkBE;CAAmB;AAEpE,MAAMI,iBAAiBL,EAAE,KAAK,CAACI"}
1
+ {"version":3,"file":"types/dataSelector/selector.js","sources":["webpack://@visactor/vseed/./src/types/dataSelector/selector.ts"],"sourcesContent":["import { z } from 'zod'\nimport { zDatum, type Datum } from '../properties'\n\nexport type ValueSelector = string | number\n\nexport type PartialDatumSelector = Datum\n\n/**\n * @description 指标选择器, 用于选择数据项中指标字段的值\n */\nexport type MeasureSelector = {\n /**\n * @description 指标字段, measures 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项\n * - ==: 选择数据项中指标字段的值等于 value 的数据项\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n */\n operator?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 操作符\n * - =: 选择数据项中指标字段的值等于 value 的数据项, 会将值转换为字符串后进行比较, 因此 1 == \"1\" 为 true\n * - ==: 选择数据项中指标字段的值精准等于 value 的数据项, 不会做任何特殊处理, 因此 1 == \"1\" 为 false\n * - !=: 选择数据项中指标字段的值不等于 value 的数据项\n * - >: 选择数据项中指标字段的值大于 value 的数据项\n * - <: 选择数据项中指标字段的值小于 value 的数据项\n * - >=: 选择数据项中指标字段的值大于等于 value 的数据项\n * - <=: 选择数据项中指标字段的值小于等于 value 的数据项\n * - between: 选择数据项中指标字段的值在 value 之间的 data item\n * same as operator\n */\n op?: '=' | '==' | '!=' | '>' | '<' | '>=' | '<=' | 'between'\n /**\n * @description 选择数据项中指标字段的值\n * - 仅 op 为 between 时, value 为长度为2的数组, 数组中的元素为指标字段的最小值和最大值\n * - 其他情况, value 为指标字段的单个值\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, measures 仅设置了 value, field 为 isHigh 或 isLow, op 为 =, value 为 1,\n // * 关闭useOrigin时, 数据项并不会考虑measures之外的字段, 因此field为isHigh或isLow的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {value: 100, isHigh: 1, isLow: 0},\n // * {value: 200, isHigh: 0, isLow: 1},\n // * {value: 300, isHigh: 1, isLow: 0},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\n/**\n * @description 维度选择器, 用于选择数据项中维度字段的值\n */\nexport type DimensionSelector = {\n /**\n * @description 维度字段, dimensions 某一项的 id\n */\n field: string\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n */\n operator?: 'in' | 'not in'\n /**\n * @description 操作符\n * - in: 选择数据项中维度字段的值在 value 中的数据项\n * - not in: 选择数据项中维度字段的值不在 value 中的数据项\n * same as operator\n */\n op?: 'in' | 'not in'\n /**\n * @description 选择数据项中维度字段的值, 支持数组\n */\n value: string | number | Array<string | number>\n // /**\n // * @description 是否使用原始数据进行数据匹配, 开启后会有更多的数据被匹配到\n // * 若下述数据, dimensions 仅设置了 name, field 为 name, op 为 =, value 为 \"high\",\n // * 关闭useOrigin时, 数据项并不会考虑dimensions之外的字段, 因此field为name的字段会被忽略\n // * 开启useOrigin时, 会直接使用整个数据项进行匹配\n // * [\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"low\", isHigh: \"false\", isLow: \"true\"},\n // * {name: \"high\", isHigh: \"true\", isLow: \"false\"},\n // * ]\n // * @default false\n // */\n // useOrigin?: boolean\n}\n\nexport type Selector = ValueSelector | PartialDatumSelector | MeasureSelector | DimensionSelector\n\nexport type AreaSelector = MeasureSelector | DimensionSelector\n\nexport type AreaSelectors = Array<AreaSelector>\n\nexport type Selectors = Array<Selector>\n\nexport type TableDynamicFilterRes = {\n __row_index: number\n field: string | '*'\n}\n\nexport type ChartDynamicFilterRes = Datum\n\nexport type DynamicFilterExecutionResult<T> = {\n success: boolean\n data?: T[]\n error?: string\n}\n\n/**\n * 表格动态筛选器配置\n * @description 通过 AI 生成的 JavaScript 代码实现表格单元格级别的精确筛选\n * @environment 仅支持浏览器环境(需要 Web Worker),Node.js 环境将使用 fallback\n */\nexport interface TableDynamicFilter {\n type: 'row-with-field'\n /**\n * 用户的筛选需求描述(自然语言)\n * @example \"高亮销售额大于1000的单元格\"\n * @example \"高亮每行中最大值所在的单元格\"\n */\n description?: string\n\n /**\n * AI 生成的 JavaScript 筛选代码\n * @description\n * - 只能使用内置工具函数(通过 _ 或 R 访问)\n * - 输入参数: data (数组),每个 item 包含 _index 字段表示行号\n * - 必须返回单元格选择器数组: Array<{ __row_index: number, field: string }>\n * - field 为 \"*\" 时表示整行高亮\n * - 禁止使用: eval, Function, 异步操作, DOM API, 网络请求\n *\n * @example Top N 筛选\n * dynamicFilter = {\n * type: 'row-with-field',\n * description: '高亮销售额最高的前3个产品',\n * code: `\n * const sorted = _.sortBy(data, 'sales');\n * const reversed = [...sorted].reverse();\n * const result = _.take(reversed, 3);\n * return _.flatten(\n * _.map(result, item => [\n * { __row_index: item._index, field: 'product' },\n * { __row_index: item._index, field: 'sales' }\n * ])\n * );\n * `,\n * enabled: true\n * }\n *\n * @example 多条件筛选\n * dynamicFilter = {\n * type: 'row-with-field',\n * description: '高亮利润率大于20%且销售额超过5000的产品',\n * code: `\n * const matched = _.filter(data, item => {\n * const profitRate = (item.profit / item.sales) * 100;\n * return profitRate > 20 && item.sales > 5000;\n * });\n * return _.flatten(\n * _.map(matched, item => [\n * { __row_index: item._index, field: 'product' },\n * { __row_index: item._index, field: 'sales' }\n * ])\n * );\n * `,\n * enabled: true\n * }\n *\n * @example 相对值筛选\n * dynamicFilter = { *\n * type: 'row-with-field',\n * description: '高亮销售额高于平均值的产品',\n * code: `\n * const avgSales = _.meanBy(data, 'sales');\n * const matched = _.filter(data, item => item.sales > avgSales);\n * return _.flatten(\n * _.map(matched, item => [\n * { __row_index: item._index, field: 'product' },\n * { __row_index: item._index, field: 'sales' }\n * ])\n * );\n * `,\n * enabled: true\n * }\n *\n * @example 分组筛选\n * dynamicFilter = {\n * type: 'row-with-field',\n * description: '每个区域中销售额最高的产品',\n * code: `\n * const grouped = _.groupBy(data, 'region');\n * const topByRegion = _.map(_.values(grouped), group => _.maxBy(group, 'sales'));\n * return _.flatten(\n * _.map(topByRegion, item => [\n * { __row_index: item._index, field: 'product' },\n * { __row_index: item._index, field: 'sales' }\n * ])\n * );\n * `,\n * enabled: true\n * }\n *\n * @example 整行高亮\n * dynamicFilter = {\n * description: '高亮销售额大于利润的整行',\n * code: `\n * const matched = _.filter(data, item => item.sales > item.profit);\n * return matched.map(item => ({\n * __row_index: item._index,\n * field: '*'\n * }));\n * `,\n * enabled: true\n * }\n */\n code: string\n\n /**\n * 代码执行失败或环境不支持时的降级方案\n */\n fallback?: Selector | Selectors\n\n /**\n * 动态筛选执行结果(运行期字段)\n * @description prepare() 阶段写入,运行时只读\n */\n result?: DynamicFilterExecutionResult<TableDynamicFilterRes>\n}\n\n/**\n * 图表动态筛选器配置\n * @description 通过 AI 生成的 JavaScript 代码实现图表标记(柱子、点等)的筛选\n * @environment 仅支持浏览器环境(需要 Web Worker),Node.js 环境将使用 fallback\n */\nexport interface ChartDynamicFilter {\n type: 'row-with-field'\n /**\n * 用户的筛选需求描述(自然语言)\n * @example \"高亮销售额大于1000的柱子\"\n * @example \"高亮每个区域中利润率最高的柱子\"\n */\n description?: string\n\n /**\n * AI 生成的 JavaScript 筛选代码\n * @description\n * - 只能使用内置工具函数(通过 _ 或 R 访问)\n * - 输入参数: data (数组)\n * - 必须返回部分数据项数组: Array<{ [dimField]: value }>\n * - 返回的对象包含能唯一标识图表标记的维度字段组合\n * - 禁止使用: eval, Function, 异步操作, DOM API, 网络请求\n *\n * @example 高亮销售额大于1000的柱子\n * ```javascript\n * const filtered = _.filter(data, item => item.sales > 1000);\n * // 假设柱子由 product 和 area 两个维度唯一标识\n * return _.map(filtered, item => ({\n * product: item.product,\n * area: item.area\n * }));\n * ```\n *\n * @example 高亮每个区域中利润率最高的柱子\n * ```javascript\n * const grouped = _.groupBy(data, 'area');\n * const result = _.map(grouped, group => {\n * const maxProfitRateItem = _.maxBy(group, item =>\n * item.profit / item.sales\n * );\n * return {\n * product: maxProfitRateItem.product,\n * area: maxProfitRateItem.area\n * };\n * });\n * return result;\n * ```\n *\n * @example 高亮多条件筛选\n * ```javascript\n * const filtered = _.filter(data, item => {\n * const profitRate = item.profit / item.sales;\n * return profitRate > 0.2 && item.sales > 5000;\n * });\n * return _.map(filtered, item => ({\n * product: item.product,\n * region: item.region\n * }));\n * ```\n */\n code: string\n\n /**\n * 代码执行失败或环境不支持时的降级方案\n */\n fallback?: Selector | Selectors\n\n /**\n * 动态筛选执行结果(运行期字段)\n * @description prepare() 阶段写入,运行时只读\n */\n result?: DynamicFilterExecutionResult<ChartDynamicFilterRes>\n}\n\nexport interface ValueDynamicFilter {\n type: 'value'\n /**\n * 用户的筛选需求描述(自然语言)\n * @example \"获取销售额最高的值作为标注线参考\"\n * @example \"计算平均销售额用于标注线\"\n */\n description?: string\n\n /**\n * AI 生成的 JavaScript 筛选代码\n * @description\n * - 只能使用内置工具函数(通过 _ 或 R 访问)\n * - 输入参数: data (数组)\n * - 必须返回单个数值或字符串: number | string\n * - 适用场景:标注线(水平线、垂直线)需要的动态数值\n * - 禁止使用: eval, Function, 异步操作, DOM API, 网络请求\n *\n * @example 获取销售额最大值作为标注线值\n * ```javascript\n * const maxSales = _.maxBy(data, 'sales')?.sales;\n * return maxSales || 0;\n * ```\n *\n * @example 计算平均值用于标注线\n * ```javascript\n * const avgSales = _.meanBy(data, 'sales');\n * return _.round(avgSales, 2);\n * ```\n *\n * @example 获取分位数作为标注线\n * ```javascript\n * const sorted = _.sortBy(data, 'sales');\n * const index = Math.floor(sorted.length * 0.75);\n * return sorted[index]?.sales || 0;\n * ```\n *\n * @example 根据条件计算目标值\n * ```javascript\n * const currentYearTotal = _.sumBy(\n * _.filter(data, item => item.year === 2024),\n * 'sales'\n * );\n * return currentYearTotal;\n * ```\n */\n code: string\n\n /**\n * 代码执行失败或环境不支持时的降级方案\n */\n fallback?: string | number\n\n /**\n * 动态筛选执行结果(运行期字段)\n * @description prepare() 阶段写入,运行时只读\n */\n result?: {\n success: boolean\n data?: number | string\n }\n}\n\nexport const zPartialSelector = zDatum\nexport const zMeasureSelector = z.object({\n field: z.string(),\n operator: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n op: z.enum(['=', '==', '!=', '>', '<', '>=', '<=', 'between']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n})\n\nexport const zDimensionSelector = z.object({\n field: z.string(),\n operator: z.enum(['in', 'not in']).nullish(),\n op: z.enum(['in', 'not in']).nullish(),\n value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]),\n})\n\nexport const zSelector = z.union([z.string(), z.number(), zMeasureSelector, zDimensionSelector, zPartialSelector])\n\nexport const zSelectors = z.array(zSelector)\n\nexport const zAreaSelector = z.union([zMeasureSelector, zDimensionSelector])\n\nexport const zAreaSelectors = z.array(zAreaSelector)\n\nexport const zCellSelector = z.object({\n __row_index: z.number(),\n field: z.union([z.string(), z.literal('*')]),\n})\n\nexport const zTableDynamicFilter = z.object({\n type: z.literal('row-with-field'),\n description: z.string().optional(),\n code: z.string(),\n fallback: z.union([zSelector, zSelectors]).optional(),\n result: z\n .object({\n success: z.boolean(),\n data: z.array(zCellSelector).optional(),\n })\n .optional(),\n})\n\nexport const zChartDynamicFilter = z.object({\n type: z.literal('row-with-field'),\n description: z.string().optional(),\n code: z.string(),\n fallback: z.union([zSelector, zSelectors]).optional(),\n result: z\n .object({\n success: z.boolean(),\n data: z.array(z.record(z.string(), z.any())).optional(),\n })\n .optional(),\n})\n\nexport const zValueDynamicFilter = z.object({\n type: z.literal('value'),\n description: z.string().optional(),\n code: z.string(),\n fallback: z.union([z.string(), z.number()]).optional(),\n result: z\n .object({\n success: z.boolean(),\n data: z.union([z.number(), z.string()]).optional(),\n })\n .optional(),\n})\n\n/**\n * @deprecated 请使用 zTableDynamicFilter 或 zChartDynamicFilter\n */\nexport const zDynamicFilter = z.union([zTableDynamicFilter, zChartDynamicFilter])\n"],"names":["zPartialSelector","zDatum","zMeasureSelector","z","zDimensionSelector","zSelector","zSelectors","zAreaSelector","zAreaSelectors","zCellSelector","zTableDynamicFilter","zChartDynamicFilter","zValueDynamicFilter","zDynamicFilter"],"mappings":";;AA4XO,MAAMA,mBAAmBC;AACzB,MAAMC,mBAAmBC,EAAE,MAAM,CAAC;IACvC,OAAOA,EAAE,MAAM;IACf,UAAUA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAK;QAAM;QAAM;QAAK;QAAK;QAAM;QAAM;KAAU,EAAE,OAAO;IAC5E,IAAIA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAK;QAAM;QAAM;QAAK;QAAK;QAAM;QAAM;KAAU,EAAE,OAAO;IACtE,OAAOA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;QAAIA,EAAE,KAAK,CAACA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG;KAAG;AACrF;AAEO,MAAMC,qBAAqBD,EAAE,MAAM,CAAC;IACzC,OAAOA,EAAE,MAAM;IACf,UAAUA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAM;KAAS,EAAE,OAAO;IAC1C,IAAIA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAM;KAAS,EAAE,OAAO;IACpC,OAAOA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;QAAIA,EAAE,KAAK,CAACA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG;KAAG;AACrF;AAEO,MAAME,YAAYF,EAAE,KAAK,CAAC;IAACA,EAAE,MAAM;IAAIA,EAAE,MAAM;IAAID;IAAkBE;IAAoBJ;CAAiB;AAE1G,MAAMM,aAAaH,EAAE,KAAK,CAACE;AAE3B,MAAME,gBAAgBJ,EAAE,KAAK,CAAC;IAACD;IAAkBE;CAAmB;AAEpE,MAAMI,iBAAiBL,EAAE,KAAK,CAACI;AAE/B,MAAME,gBAAgBN,EAAE,MAAM,CAAC;IACpC,aAAaA,EAAE,MAAM;IACrB,OAAOA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,OAAO,CAAC;KAAK;AAC7C;AAEO,MAAMO,sBAAsBP,EAAE,MAAM,CAAC;IAC1C,MAAMA,EAAE,OAAO,CAAC;IAChB,aAAaA,EAAE,MAAM,GAAG,QAAQ;IAChC,MAAMA,EAAE,MAAM;IACd,UAAUA,EAAE,KAAK,CAAC;QAACE;QAAWC;KAAW,EAAE,QAAQ;IACnD,QAAQH,EAAAA,MACC,CAAC;QACN,SAASA,EAAE,OAAO;QAClB,MAAMA,EAAE,KAAK,CAACM,eAAe,QAAQ;IACvC,GACC,QAAQ;AACb;AAEO,MAAME,sBAAsBR,EAAE,MAAM,CAAC;IAC1C,MAAMA,EAAE,OAAO,CAAC;IAChB,aAAaA,EAAE,MAAM,GAAG,QAAQ;IAChC,MAAMA,EAAE,MAAM;IACd,UAAUA,EAAE,KAAK,CAAC;QAACE;QAAWC;KAAW,EAAE,QAAQ;IACnD,QAAQH,EAAAA,MACC,CAAC;QACN,SAASA,EAAE,OAAO;QAClB,MAAMA,EAAE,KAAK,CAACA,EAAE,MAAM,CAACA,EAAE,MAAM,IAAIA,EAAE,GAAG,KAAK,QAAQ;IACvD,GACC,QAAQ;AACb;AAEO,MAAMS,sBAAsBT,EAAE,MAAM,CAAC;IAC1C,MAAMA,EAAE,OAAO,CAAC;IAChB,aAAaA,EAAE,MAAM,GAAG,QAAQ;IAChC,MAAMA,EAAE,MAAM;IACd,UAAUA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;KAAG,EAAE,QAAQ;IACpD,QAAQA,EAAAA,MACC,CAAC;QACN,SAASA,EAAE,OAAO;QAClB,MAAMA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG,EAAE,QAAQ;IAClD,GACC,QAAQ;AACb;AAKO,MAAMU,iBAAiBV,EAAE,KAAK,CAAC;IAACO;IAAqBC;CAAoB"}
@@ -35,7 +35,7 @@ export declare const zAnnotation: z.ZodObject<{
35
35
  "not in": "not in";
36
36
  }>>>;
37
37
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
38
- }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
38
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
39
39
  field: z.ZodString;
40
40
  operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
41
41
  "=": "=";
@@ -69,7 +69,85 @@ export declare const zAnnotation: z.ZodObject<{
69
69
  "not in": "not in";
70
70
  }>>>;
71
71
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
72
- }, z.core.$strip>]>>]>>>;
72
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>>]>>>;
73
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
74
+ type: z.ZodLiteral<"row-with-field">;
75
+ description: z.ZodOptional<z.ZodString>;
76
+ code: z.ZodString;
77
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
78
+ field: z.ZodString;
79
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
80
+ "=": "=";
81
+ "==": "==";
82
+ "!=": "!=";
83
+ ">": ">";
84
+ "<": "<";
85
+ ">=": ">=";
86
+ "<=": "<=";
87
+ between: "between";
88
+ }>>>;
89
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
90
+ "=": "=";
91
+ "==": "==";
92
+ "!=": "!=";
93
+ ">": ">";
94
+ "<": "<";
95
+ ">=": ">=";
96
+ "<=": "<=";
97
+ between: "between";
98
+ }>>>;
99
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
100
+ }, z.core.$strip>, z.ZodObject<{
101
+ field: z.ZodString;
102
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
103
+ in: "in";
104
+ "not in": "not in";
105
+ }>>>;
106
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
107
+ in: "in";
108
+ "not in": "not in";
109
+ }>>>;
110
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
111
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
112
+ field: z.ZodString;
113
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
114
+ "=": "=";
115
+ "==": "==";
116
+ "!=": "!=";
117
+ ">": ">";
118
+ "<": "<";
119
+ ">=": ">=";
120
+ "<=": "<=";
121
+ between: "between";
122
+ }>>>;
123
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
124
+ "=": "=";
125
+ "==": "==";
126
+ "!=": "!=";
127
+ ">": ">";
128
+ "<": "<";
129
+ ">=": ">=";
130
+ "<=": "<=";
131
+ between: "between";
132
+ }>>>;
133
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
134
+ }, z.core.$strip>, z.ZodObject<{
135
+ field: z.ZodString;
136
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
137
+ in: "in";
138
+ "not in": "not in";
139
+ }>>>;
140
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
141
+ in: "in";
142
+ "not in": "not in";
143
+ }>>>;
144
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
145
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>>]>>;
146
+ result: z.ZodOptional<z.ZodObject<{
147
+ success: z.ZodBoolean;
148
+ data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>;
149
+ }, z.core.$strip>>;
150
+ }, z.core.$strip>>;
73
151
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
74
152
  textColor: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodString>>>;
75
153
  textFontSize: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodNumber>>>;
@@ -127,7 +205,7 @@ export declare const zAnnotation: z.ZodObject<{
127
205
  "not in": "not in";
128
206
  }>>>;
129
207
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
130
- }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
208
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
131
209
  field: z.ZodString;
132
210
  operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
133
211
  "=": "=";
@@ -161,7 +239,85 @@ export declare const zAnnotation: z.ZodObject<{
161
239
  "not in": "not in";
162
240
  }>>>;
163
241
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
164
- }, z.core.$strip>]>>]>>>;
242
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>>]>>>;
243
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
244
+ type: z.ZodLiteral<"row-with-field">;
245
+ description: z.ZodOptional<z.ZodString>;
246
+ code: z.ZodString;
247
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
248
+ field: z.ZodString;
249
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
250
+ "=": "=";
251
+ "==": "==";
252
+ "!=": "!=";
253
+ ">": ">";
254
+ "<": "<";
255
+ ">=": ">=";
256
+ "<=": "<=";
257
+ between: "between";
258
+ }>>>;
259
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
260
+ "=": "=";
261
+ "==": "==";
262
+ "!=": "!=";
263
+ ">": ">";
264
+ "<": "<";
265
+ ">=": ">=";
266
+ "<=": "<=";
267
+ between: "between";
268
+ }>>>;
269
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
270
+ }, z.core.$strip>, z.ZodObject<{
271
+ field: z.ZodString;
272
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
273
+ in: "in";
274
+ "not in": "not in";
275
+ }>>>;
276
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
277
+ in: "in";
278
+ "not in": "not in";
279
+ }>>>;
280
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
281
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
282
+ field: z.ZodString;
283
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
284
+ "=": "=";
285
+ "==": "==";
286
+ "!=": "!=";
287
+ ">": ">";
288
+ "<": "<";
289
+ ">=": ">=";
290
+ "<=": "<=";
291
+ between: "between";
292
+ }>>>;
293
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
294
+ "=": "=";
295
+ "==": "==";
296
+ "!=": "!=";
297
+ ">": ">";
298
+ "<": "<";
299
+ ">=": ">=";
300
+ "<=": "<=";
301
+ between: "between";
302
+ }>>>;
303
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
304
+ }, z.core.$strip>, z.ZodObject<{
305
+ field: z.ZodString;
306
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
307
+ in: "in";
308
+ "not in": "not in";
309
+ }>>>;
310
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
311
+ in: "in";
312
+ "not in": "not in";
313
+ }>>>;
314
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
315
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>>]>>;
316
+ result: z.ZodOptional<z.ZodObject<{
317
+ success: z.ZodBoolean;
318
+ data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>;
319
+ }, z.core.$strip>>;
320
+ }, z.core.$strip>>;
165
321
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
166
322
  textColor: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodString>>>;
167
323
  textFontSize: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodNumber>>>;
@@ -187,6 +343,16 @@ export declare const zAnnotation: z.ZodObject<{
187
343
  }, z.core.$strip>>]>>>;
188
344
  annotationVerticalLine: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodObject<{
189
345
  xValue: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>]>>>;
346
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
347
+ type: z.ZodLiteral<"value">;
348
+ description: z.ZodOptional<z.ZodString>;
349
+ code: z.ZodString;
350
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
351
+ result: z.ZodOptional<z.ZodObject<{
352
+ success: z.ZodBoolean;
353
+ data: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
354
+ }, z.core.$strip>>;
355
+ }, z.core.$strip>>;
190
356
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
191
357
  textPosition: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodEnum<{
192
358
  outsideStart: "outsideStart";
@@ -221,6 +387,16 @@ export declare const zAnnotation: z.ZodObject<{
221
387
  lineStyle: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"solid">, z.ZodLiteral<"dashed">, z.ZodLiteral<"dotted">]>>>>;
222
388
  }, z.core.$strip>, z.ZodArray<z.ZodObject<{
223
389
  xValue: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>]>>>;
390
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
391
+ type: z.ZodLiteral<"value">;
392
+ description: z.ZodOptional<z.ZodString>;
393
+ code: z.ZodString;
394
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
395
+ result: z.ZodOptional<z.ZodObject<{
396
+ success: z.ZodBoolean;
397
+ data: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
398
+ }, z.core.$strip>>;
399
+ }, z.core.$strip>>;
224
400
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
225
401
  textPosition: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodEnum<{
226
402
  outsideStart: "outsideStart";
@@ -256,6 +432,16 @@ export declare const zAnnotation: z.ZodObject<{
256
432
  }, z.core.$strip>>]>>>;
257
433
  annotationHorizontalLine: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodObject<{
258
434
  yValue: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>]>>>;
435
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
436
+ type: z.ZodLiteral<"value">;
437
+ description: z.ZodOptional<z.ZodString>;
438
+ code: z.ZodString;
439
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
440
+ result: z.ZodOptional<z.ZodObject<{
441
+ success: z.ZodBoolean;
442
+ data: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
443
+ }, z.core.$strip>>;
444
+ }, z.core.$strip>>;
259
445
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
260
446
  textPosition: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodEnum<{
261
447
  outsideStart: "outsideStart";
@@ -290,6 +476,16 @@ export declare const zAnnotation: z.ZodObject<{
290
476
  textBackgroundPadding: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodNumber>>>;
291
477
  }, z.core.$strip>, z.ZodArray<z.ZodObject<{
292
478
  yValue: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>]>>>;
479
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
480
+ type: z.ZodLiteral<"value">;
481
+ description: z.ZodOptional<z.ZodString>;
482
+ code: z.ZodString;
483
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
484
+ result: z.ZodOptional<z.ZodObject<{
485
+ success: z.ZodBoolean;
486
+ data: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
487
+ }, z.core.$strip>>;
488
+ }, z.core.$strip>>;
293
489
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
294
490
  textPosition: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodEnum<{
295
491
  outsideStart: "outsideStart";
@@ -1,3 +1,4 @@
1
+ import type { ValueDynamicFilter } from '../../dataSelector';
1
2
  /**
2
3
  * @description 水平标注线, 根据用户设置的 yValue, 从左向右绘制一条末尾有箭头的线, 标签默认在标注线的终点正下方
3
4
  */
@@ -6,6 +7,17 @@ export type AnnotationHorizontalLine = {
6
7
  * @description 固定的y值, 用于标注水平线, 类目轴在y方向, 则可输入维值, 数值轴在y方向, 则可输入具体的数值
7
8
  */
8
9
  yValue?: (number | string) | (number | string)[];
10
+ /**
11
+ * 动态筛选器(AI生成代码执行)
12
+ * @description
13
+ * 通过 AI 生成的 JavaScript 代码动态计算标注线的值
14
+ * 适用于需要根据数据动态确定标注线位置,如平均值、最大值、分位数,业务线等
15
+ *
16
+ * 仅支持浏览器环境(需要 Web Worker)
17
+ *
18
+ * @type {ValueDynamicFilter}
19
+ */
20
+ dynamicFilter?: ValueDynamicFilter;
9
21
  /**
10
22
  * @description 标注的文本
11
23
  * @default ''
@@ -1,3 +1,4 @@
1
+ import type { ChartDynamicFilter } from '../../dataSelector';
1
2
  import { type Selector, type Selectors } from '../../dataSelector';
2
3
  /**
3
4
  * @description 标注点, 根据用户设置的selector, 在数据点的左下方, 显示一个带有背景的标签.
@@ -7,6 +8,24 @@ export type AnnotationPoint = {
7
8
  * @description 标注点的选择器, 用于选择数据点.
8
9
  */
9
10
  selector?: Selector | Selectors;
11
+ /**
12
+ * 动态筛选器(AI生成代码执行)
13
+ * @description
14
+ * 通过 AI 生成的 JavaScript 代码实现复杂数据筛选逻辑
15
+ * 适用于 Top N、统计分析、复杂条件等静态 selector 难以表达的场景
16
+ *
17
+ * 核心能力:
18
+ * - 支持任意复杂的数据筛选条件
19
+ * - 使用 内置工具函数 进行数据操作
20
+ * - 在浏览器环境中安全执行(Web Worker 沙箱)
21
+ *
22
+ * 环境要求: 仅支持浏览器环境,Node.js 环境将使用 fallback
23
+ *
24
+ * 注意: selector 和 dynamicFilter 不能同时使用,dynamicFilter 优先级更高
25
+ *
26
+ * @type {ChartDynamicFilter}
27
+ */
28
+ dynamicFilter?: ChartDynamicFilter;
10
29
  /**
11
30
  * @description 标注的文本
12
31
  * @default ''
@@ -1,3 +1,4 @@
1
+ import type { ValueDynamicFilter } from '../../dataSelector';
1
2
  /**
2
3
  * @description 垂直标注线, 根据用户设置的selector 或 xValue, 从下向上绘制一条末尾有箭头的线, 标签默认在标注线终点的正左侧
3
4
  */
@@ -6,6 +7,17 @@ export type AnnotationVerticalLine = {
6
7
  * @description 固定的x值, 用于标注垂直线, 类目轴在x方向, 则可输入维值, 数值轴在x方向, 则可输入具体的数值
7
8
  */
8
9
  xValue?: (number | string) | (number | string)[];
10
+ /**
11
+ * 动态筛选器(AI生成代码执行)
12
+ * @description
13
+ * 通过 AI 生成的 JavaScript 代码动态计算标注线的值
14
+ * 适用于需要根据数据动态确定标注线位置,如平均值、最大值、分位数,业务线等
15
+ *
16
+ * 仅支持浏览器环境(需要 Web Worker)
17
+ *
18
+ * @type {ValueDynamicFilter}
19
+ */
20
+ dynamicFilter?: ValueDynamicFilter;
9
21
  /**
10
22
  * @description 标注的文本
11
23
  * @default ''
@@ -1,6 +1,16 @@
1
1
  import { z } from 'zod';
2
2
  export declare const zAnnotationHorizontalLine: z.ZodObject<{
3
3
  yValue: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>]>>>;
4
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
5
+ type: z.ZodLiteral<"value">;
6
+ description: z.ZodOptional<z.ZodString>;
7
+ code: z.ZodString;
8
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9
+ result: z.ZodOptional<z.ZodObject<{
10
+ success: z.ZodBoolean;
11
+ data: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
12
+ }, z.core.$strip>>;
13
+ }, z.core.$strip>>;
4
14
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
5
15
  textPosition: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodEnum<{
6
16
  outsideStart: "outsideStart";
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { zValueDynamicFilter } from "../../dataSelector/index.js";
2
3
  const zAnnotationHorizontalLine = z.object({
3
4
  yValue: z.union([
4
5
  z.number(),
@@ -8,6 +9,7 @@ const zAnnotationHorizontalLine = z.object({
8
9
  z.string()
9
10
  ]))
10
11
  ]).nullish(),
12
+ dynamicFilter: zValueDynamicFilter.optional(),
11
13
  text: z.string().or(z.array(z.string())).nullish(),
12
14
  textPosition: z["enum"]([
13
15
  'outsideStart',
@@ -1 +1 @@
1
- {"version":3,"file":"types/properties/annotation/zAnnotationHorizontalLine.js","sources":["webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationHorizontalLine.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const zAnnotationHorizontalLine = z.object({\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n})\n"],"names":["zAnnotationHorizontalLine","z"],"mappings":";AAEO,MAAMA,4BAA4BC,EAAE,MAAM,CAAC;IAChD,QAAQA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;QAAIA,EAAE,KAAK,CAACA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG;KAAG,EAAE,OAAO;IAC7F,MAAMA,EAAE,MAAM,GAAG,EAAE,CAACA,EAAE,KAAK,CAACA,EAAE,MAAM,KAAK,OAAO;IAChD,cAAcA,CAAC,CAADA,OACP,CAAC;QAAC;QAAgB;QAAc;QAAiB;QAAe;QAAgB;KAAY,EAChG,OAAO,CAAC,aACR,OAAO;IACV,WAAWA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAChD,cAAcA,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,OAAO;IAC5C,gBAAgBA,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,OAAO;IAC/C,WAAWA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAQ;QAAS;KAAS,EAAE,OAAO,CAAC,SAAS,OAAO;IACvE,cAAcA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAO;QAAU;KAAS,EAAE,OAAO,CAAC,OAAO,OAAO;IAExE,aAAaA,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,OAAO;IAC9C,WAAWA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAChD,WAAWA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;IACxC,WAAWA,EAAAA,KACH,CAAC;QAACA,EAAE,OAAO,CAAC;QAAUA,EAAE,OAAO,CAAC;QAAWA,EAAE,OAAO,CAAC;KAAU,EACpE,OAAO,CAAC,UACR,OAAO;IAEV,uBAAuBA,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,OAAO;IACxD,qBAAqBA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAC1D,2BAA2BA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAChE,4BAA4BA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;IACzD,2BAA2BA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;IACxD,uBAAuBA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;AACtD"}
1
+ {"version":3,"file":"types/properties/annotation/zAnnotationHorizontalLine.js","sources":["webpack://@visactor/vseed/./src/types/properties/annotation/zAnnotationHorizontalLine.ts"],"sourcesContent":["import { z } from 'zod'\nimport { zValueDynamicFilter } from '../../dataSelector'\n\nexport const zAnnotationHorizontalLine = z.object({\n yValue: z.union([z.number(), z.string(), z.array(z.union([z.number(), z.string()]))]).nullish(),\n dynamicFilter: zValueDynamicFilter.optional(),\n text: z.string().or(z.array(z.string())).nullish(),\n textPosition: z\n .enum(['outsideStart', 'outsideEnd', 'outsideMiddle', 'insideStart', 'insideMiddle', 'insideEnd'])\n .default('insideEnd')\n .nullish(),\n textColor: z.string().default('#ffffff').nullish(),\n textFontSize: z.number().default(12).nullish(),\n textFontWeight: z.number().default(400).nullish(),\n textAlign: z.enum(['left', 'right', 'center']).default('right').nullish(),\n textBaseline: z.enum(['top', 'middle', 'bottom']).default('top').nullish(),\n\n lineVisible: z.boolean().default(true).nullish(),\n lineColor: z.string().default('#212121').nullish(),\n lineWidth: z.number().default(1).nullish(),\n lineStyle: z\n .union([z.literal('solid'), z.literal('dashed'), z.literal('dotted')])\n .default('dashed')\n .nullish(),\n\n textBackgroundVisible: z.boolean().default(true).nullish(),\n textBackgroundColor: z.string().default('#212121').nullish(),\n textBackgroundBorderColor: z.string().default('#212121').nullish(),\n textBackgroundBorderRadius: z.number().default(4).nullish(),\n textBackgroundBorderWidth: z.number().default(1).nullish(),\n textBackgroundPadding: z.number().default(2).nullish(),\n})\n"],"names":["zAnnotationHorizontalLine","z","zValueDynamicFilter"],"mappings":";;AAGO,MAAMA,4BAA4BC,EAAE,MAAM,CAAC;IAChD,QAAQA,EAAE,KAAK,CAAC;QAACA,EAAE,MAAM;QAAIA,EAAE,MAAM;QAAIA,EAAE,KAAK,CAACA,EAAE,KAAK,CAAC;YAACA,EAAE,MAAM;YAAIA,EAAE,MAAM;SAAG;KAAG,EAAE,OAAO;IAC7F,eAAeC,oBAAoB,QAAQ;IAC3C,MAAMD,EAAE,MAAM,GAAG,EAAE,CAACA,EAAE,KAAK,CAACA,EAAE,MAAM,KAAK,OAAO;IAChD,cAAcA,CAAC,CAADA,OACP,CAAC;QAAC;QAAgB;QAAc;QAAiB;QAAe;QAAgB;KAAY,EAChG,OAAO,CAAC,aACR,OAAO;IACV,WAAWA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAChD,cAAcA,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,OAAO;IAC5C,gBAAgBA,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,OAAO;IAC/C,WAAWA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAQ;QAAS;KAAS,EAAE,OAAO,CAAC,SAAS,OAAO;IACvE,cAAcA,CAAC,CAADA,OAAM,CAAC;QAAC;QAAO;QAAU;KAAS,EAAE,OAAO,CAAC,OAAO,OAAO;IAExE,aAAaA,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,OAAO;IAC9C,WAAWA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAChD,WAAWA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;IACxC,WAAWA,EAAAA,KACH,CAAC;QAACA,EAAE,OAAO,CAAC;QAAUA,EAAE,OAAO,CAAC;QAAWA,EAAE,OAAO,CAAC;KAAU,EACpE,OAAO,CAAC,UACR,OAAO;IAEV,uBAAuBA,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,OAAO;IACxD,qBAAqBA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAC1D,2BAA2BA,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,OAAO;IAChE,4BAA4BA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;IACzD,2BAA2BA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;IACxD,uBAAuBA,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;AACtD"}
@@ -34,7 +34,7 @@ export declare const zAnnotationPoint: z.ZodObject<{
34
34
  "not in": "not in";
35
35
  }>>>;
36
36
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
37
- }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
37
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
38
38
  field: z.ZodString;
39
39
  operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
40
40
  "=": "=";
@@ -68,7 +68,85 @@ export declare const zAnnotationPoint: z.ZodObject<{
68
68
  "not in": "not in";
69
69
  }>>>;
70
70
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
71
- }, z.core.$strip>]>>]>>>;
71
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>>]>>>;
72
+ dynamicFilter: z.ZodOptional<z.ZodObject<{
73
+ type: z.ZodLiteral<"row-with-field">;
74
+ description: z.ZodOptional<z.ZodString>;
75
+ code: z.ZodString;
76
+ fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
77
+ field: z.ZodString;
78
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
79
+ "=": "=";
80
+ "==": "==";
81
+ "!=": "!=";
82
+ ">": ">";
83
+ "<": "<";
84
+ ">=": ">=";
85
+ "<=": "<=";
86
+ between: "between";
87
+ }>>>;
88
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
89
+ "=": "=";
90
+ "==": "==";
91
+ "!=": "!=";
92
+ ">": ">";
93
+ "<": "<";
94
+ ">=": ">=";
95
+ "<=": "<=";
96
+ between: "between";
97
+ }>>>;
98
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
99
+ }, z.core.$strip>, z.ZodObject<{
100
+ field: z.ZodString;
101
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
102
+ in: "in";
103
+ "not in": "not in";
104
+ }>>>;
105
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
106
+ in: "in";
107
+ "not in": "not in";
108
+ }>>>;
109
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
110
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodObject<{
111
+ field: z.ZodString;
112
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
113
+ "=": "=";
114
+ "==": "==";
115
+ "!=": "!=";
116
+ ">": ">";
117
+ "<": "<";
118
+ ">=": ">=";
119
+ "<=": "<=";
120
+ between: "between";
121
+ }>>>;
122
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
123
+ "=": "=";
124
+ "==": "==";
125
+ "!=": "!=";
126
+ ">": ">";
127
+ "<": "<";
128
+ ">=": ">=";
129
+ "<=": "<=";
130
+ between: "between";
131
+ }>>>;
132
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ field: z.ZodString;
135
+ operator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
136
+ in: "in";
137
+ "not in": "not in";
138
+ }>>>;
139
+ op: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
140
+ in: "in";
141
+ "not in": "not in";
142
+ }>>>;
143
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>;
144
+ }, z.core.$strip>, z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>]>>]>>;
145
+ result: z.ZodOptional<z.ZodObject<{
146
+ success: z.ZodBoolean;
147
+ data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>;
148
+ }, z.core.$strip>>;
149
+ }, z.core.$strip>>;
72
150
  text: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString>]>>>;
73
151
  textColor: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodString>>>;
74
152
  textFontSize: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodNumber>>>;
@@ -1,10 +1,11 @@
1
- import { zSelector, zSelectors } from "../../dataSelector/index.js";
1
+ import { zChartDynamicFilter, zSelector, zSelectors } from "../../dataSelector/index.js";
2
2
  import { z } from "zod";
3
3
  const zAnnotationPoint = z.object({
4
4
  selector: z.union([
5
5
  zSelector,
6
6
  zSelectors
7
7
  ]).nullish(),
8
+ dynamicFilter: zChartDynamicFilter.optional(),
8
9
  text: z.string().or(z.array(z.string())).nullish(),
9
10
  textColor: z.string().default('#ffffff').nullish(),
10
11
  textFontSize: z.number().default(12).nullish(),