@jzg223/design-runtime 0.0.1 → 0.1.0-rc.2

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 (54) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +52 -0
  3. package/dist/board/api.js +57 -0
  4. package/dist/board/board-chart.vue.js +7 -0
  5. package/dist/board/board-chart2.vue.js +93 -0
  6. package/dist/board/context.js +15 -0
  7. package/dist/board/datav-map.js +66 -0
  8. package/dist/board/design-board.vue.js +172 -0
  9. package/dist/board/design-board2.vue.js +331 -0
  10. package/dist/board/echarts.js +40 -0
  11. package/dist/board/part-node.vue.js +63 -0
  12. package/dist/board/part-node2.vue.js +125 -0
  13. package/dist/board/part-renderer.vue.js +561 -0
  14. package/dist/board/part-renderer2.vue.js +884 -0
  15. package/dist/board/theme-host.js +129 -0
  16. package/dist/board-engine/asset.js +32 -0
  17. package/dist/board-engine/chart-option.js +377 -0
  18. package/dist/board-engine/data-hub.js +67 -0
  19. package/dist/board-engine/datav-meta.js +51 -0
  20. package/dist/board-engine/i18n.js +130 -0
  21. package/dist/board-engine/param-catalog.js +137 -0
  22. package/dist/board-engine/params.js +61 -0
  23. package/dist/board-engine/render-model.js +65 -0
  24. package/dist/board-engine/schema.js +856 -0
  25. package/dist/board-engine/theme-manifest.js +19 -0
  26. package/dist/board-engine/version.js +4 -0
  27. package/dist/host.js +6 -1
  28. package/dist/index.js +172 -24
  29. package/dist/style.css +1067 -0
  30. package/dist/types/board/api.d.ts +45 -0
  31. package/dist/types/board/board-chart.vue.d.ts +15 -0
  32. package/dist/types/board/context.d.ts +29 -0
  33. package/dist/types/board/datav-map.d.ts +24 -0
  34. package/dist/types/board/design-board.vue.d.ts +1409 -0
  35. package/dist/types/board/echarts.d.ts +25 -0
  36. package/dist/types/board/part-node.vue.d.ts +1237 -0
  37. package/dist/types/board/part-renderer.vue.d.ts +1205 -0
  38. package/dist/types/board/theme-host.d.ts +41 -0
  39. package/dist/types/board-engine/asset.d.ts +37 -0
  40. package/dist/types/board-engine/chart-option.d.ts +737 -0
  41. package/dist/types/board-engine/data-hub.d.ts +48 -0
  42. package/dist/types/board-engine/datav-meta.d.ts +37 -0
  43. package/dist/types/board-engine/i18n.d.ts +43 -0
  44. package/dist/types/board-engine/index.d.ts +25 -0
  45. package/dist/types/board-engine/param-catalog.d.ts +82 -0
  46. package/dist/types/board-engine/params.d.ts +37 -0
  47. package/dist/types/board-engine/render-model.d.ts +87 -0
  48. package/dist/types/board-engine/schema.d.ts +513 -0
  49. package/dist/types/board-engine/theme-manifest.d.ts +23 -0
  50. package/dist/types/board-engine/types.d.ts +147 -0
  51. package/dist/types/board-engine/version.d.ts +10 -0
  52. package/dist/types/host.d.ts +21 -0
  53. package/dist/types/index.d.ts +21 -2
  54. package/package.json +21 -4
@@ -0,0 +1,1205 @@
1
+ /**
2
+ * 部件渲染器:设计器与运行时**共用同一个组件**,保证"所见即所得"。
3
+ * 定位/尺寸由父容器负责,这里只画内容。
4
+ */
5
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
+ part: {
7
+ type: ObjectConstructor;
8
+ required: true;
9
+ };
10
+ themeCode: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
14
+ refreshKey: {
15
+ type: NumberConstructor;
16
+ default: number;
17
+ };
18
+ /** 看板参数版本号(引擎的参数 state 是普通对象,Vue 追踪不到 ⇒ 由 DesignBoard 往下传) */
19
+ paramsVersion: {
20
+ type: NumberConstructor;
21
+ default: number;
22
+ };
23
+ /** 容器内子栅格的几何(列数/行高/间距,来自整页设置) */
24
+ gridOptions: {
25
+ type: ObjectConstructor;
26
+ default: () => {
27
+ cols: number;
28
+ rowHeight: number;
29
+ gap: number;
30
+ };
31
+ };
32
+ /** 本部件直接子级的总数(决定容器显示子级还是显示空提示) */
33
+ childrenCount: {
34
+ type: NumberConstructor;
35
+ default: number;
36
+ };
37
+ /** 每个页签各有几个子级,形如 {0:2, 2:1} */
38
+ tabChildCounts: {
39
+ type: ObjectConstructor;
40
+ default: () => {};
41
+ };
42
+ /** 设计器里为 true:空容器的引导文案只在设计器显示,不泄漏到运行时大屏 */
43
+ design: {
44
+ type: BooleanConstructor;
45
+ default: boolean;
46
+ };
47
+ /** 设计器里"当前选中的就是这个部件":选中时把容器的**内容区**画成虚线框,
48
+ * 这样"子级有没有超出内容区"一眼可见(用户反馈过"text 的区域好像超出 container 了")。 */
49
+ active: {
50
+ type: BooleanConstructor;
51
+ default: boolean;
52
+ };
53
+ /** 移动端堆叠:容器内的子部件区改成纵向流式(否则 inset:0 的绝对定位区在 auto 高度下会塌成 0) */
54
+ stacked: {
55
+ type: BooleanConstructor;
56
+ default: boolean;
57
+ };
58
+ /** 窄屏:图例挪到底部、饼图居中收窄(图表 option 用) */
59
+ narrow: {
60
+ type: BooleanConstructor;
61
+ default: boolean;
62
+ };
63
+ }>, {}, {
64
+ result: null;
65
+ loading: boolean;
66
+ carouselIndex: number;
67
+ activeTab: number;
68
+ timer: null;
69
+ shrunkFont: number;
70
+ dvRO: null;
71
+ dvROEl: null;
72
+ }, {
73
+ theme(): any;
74
+ /** tab容器当前页签里有没有子部件(有就显示子栅格、没有就回落成原来的文字内容) */
75
+ tabHasChildren(): boolean;
76
+ /** 本容器的子级是否用绝对定位摆放(容器设置里的 childLayout='free') */
77
+ childrenFree(): boolean;
78
+ /** 本容器的内边距(部件级可配)。⚠️ 必须与 schema.paddingOf 用同一个来源:
79
+ * 内框宽度、拖入容器的列计算都用它,写死 10 会让"按落点算列"整体偏一列。 */
80
+ childPad(): number;
81
+ /** 标题要占的面板内高度(内容区顶部让位):bar 恒定 34,chip 挪进面板内时按实际高度算 */
82
+ titleBarH(): number;
83
+ /**
84
+ * 胶囊标题的内联位置:
85
+ * 纵向 = titleOffsetOf(相对面板上沿的偏移,0 = 贴面板内上沿)
86
+ * 横向 = 容器内边距 + titleInsetOf(默认再多缩 8px,即与内容左边缘略错开一点)
87
+ * 标题压在切角标记上没关系:标题 z-index 1、切角 z-index 0,观感是"标签切断框线"。
88
+ */
89
+ titleOffsetStyle(): {
90
+ top?: undefined;
91
+ left?: undefined;
92
+ } | {
93
+ top: string;
94
+ left: string;
95
+ };
96
+ /** 容器标题样式:chip(胶囊骑框线,默认)/ bar(框内标题条,见 TITLE_BAR_HEIGHT) */
97
+ titleStyle(): "bar" | "chip";
98
+ /** 子栅格行高是否"撑满容器内区"(见 schema.childRowsOf 的说明) */
99
+ childRowsFill(): boolean;
100
+ /** 容器边框样式预设(四角括号 / 切角描边 / 描边流光 / DataV 边框 / 无) */
101
+ borderPreset(): any;
102
+ /** DataV 边框组件(borderPreset==='datav' 时用),编号取自 view.datavBorder */
103
+ datavBorder(): import("vue").Component;
104
+ /** DataV 装饰组件(decoration 部件用),编号取自 view.datavDecoration */
105
+ datavDecoration(): import("vue").Component;
106
+ /**
107
+ * DataV **边框**的配色(容器边框预设=datav 时用)。取自主题 `--brd-frame-1 / --brd-frame-2`。
108
+ *
109
+ * ⚠️ 第二个颜色默认是 **transparent**,这是刻意的:读了 DataV borderBox 的源码,
110
+ * `color[0]` 画整圈细框(1px),`color[1]` 画的是**沿边流动的光点**(3px + 径向发光遮罩)。
111
+ * 给它一个不透明色,任何时候都有一条边比其余三条又粗又亮 ⇒ 用户反馈"四条边的颜色不一样"。
112
+ * 主题里把 `--brd-frame-2` 写回颜色就能把那条流光要回来(同色流光=写 var(--brd-accent))。
113
+ */
114
+ datavColors(): any[];
115
+ /**
116
+ * DataV **装饰部件**(decoration 1–12)的配色:另一对变量 `--brd-deco-1 / --brd-deco-2`。
117
+ * 不能跟边框共用 —— 边框那边第二个颜色是 transparent(关掉流光),装饰要是也 transparent 就缺一半。
118
+ */
119
+ datavDecoColors(): any[];
120
+ /** 子级栅格:列宽用 1fr ⇒ 容器一变宽子级就跟着重排,这就是"容器内子栅格"的意义 */
121
+ childGridStyle(): {
122
+ position: string;
123
+ inset: string;
124
+ height: string;
125
+ display: string;
126
+ flexDirection: string;
127
+ gap: string;
128
+ overflow: string;
129
+ top?: undefined;
130
+ gridTemplateColumns?: undefined;
131
+ gridAutoRows?: undefined;
132
+ } | {
133
+ overflow: string;
134
+ top: string | number;
135
+ position?: undefined;
136
+ inset?: undefined;
137
+ height?: undefined;
138
+ display?: undefined;
139
+ flexDirection?: undefined;
140
+ gap?: undefined;
141
+ gridTemplateColumns?: undefined;
142
+ gridAutoRows?: undefined;
143
+ } | {
144
+ display: string;
145
+ gridTemplateColumns: string;
146
+ gridAutoRows: string;
147
+ gap: string;
148
+ top: string | number;
149
+ overflow: string;
150
+ position?: undefined;
151
+ inset?: undefined;
152
+ height?: undefined;
153
+ flexDirection?: undefined;
154
+ };
155
+ hasData(): false;
156
+ /**
157
+ * 根容器要不要放开裁切。
158
+ * 静态边框/自由容器的标题是**骑在框线上、画在框外面**的(top:-11px),
159
+ * 而 .part-body 默认 overflow:hidden ⇒ 标题上半截会被切掉(用户反馈"卡片标题没显示全")。
160
+ * 这两个类型的内部内容是 .part-children(自己带 overflow:auto),放开父级不会让内容溢出。
161
+ */
162
+ bodyClass(): string[];
163
+ /** 指标卡:把"对齐"落到横向排布上(.kpi 是纵向 flex,align-items 才是横向对齐;
164
+ * 以前 text.align 对指标卡同样完全不生效 —— 与文本部件同一个根因) */
165
+ kpiBoxStyle(): {
166
+ alignItems: any;
167
+ textAlign: any;
168
+ };
169
+ bodyStyle(): any;
170
+ subStyle(): {
171
+ color: any;
172
+ fontSize: string;
173
+ letterSpacing: string;
174
+ };
175
+ valueStyle(): {
176
+ color: any;
177
+ fontFamily: any;
178
+ fontWeight: number;
179
+ fontVariantNumeric: string;
180
+ };
181
+ chartOption(): {
182
+ color: any;
183
+ tooltip: {
184
+ trigger: string;
185
+ backgroundColor: any;
186
+ borderColor: any;
187
+ borderWidth: number;
188
+ padding: number[];
189
+ textStyle: {
190
+ color: any;
191
+ fontSize: number;
192
+ fontFamily: string;
193
+ };
194
+ extraCssText: string;
195
+ axisPointer: {
196
+ type: string;
197
+ lineStyle: {
198
+ color: any;
199
+ width: number;
200
+ type: string;
201
+ };
202
+ label: {
203
+ backgroundColor: any;
204
+ color: string;
205
+ borderRadius: number;
206
+ padding: number[];
207
+ };
208
+ };
209
+ };
210
+ legend: {
211
+ orient: string;
212
+ left: string;
213
+ show: boolean;
214
+ textStyle: {
215
+ color: any;
216
+ fontSize: number;
217
+ fontFamily: string;
218
+ };
219
+ icon: string;
220
+ itemWidth: number;
221
+ itemHeight: number;
222
+ itemGap: number;
223
+ top: number | undefined;
224
+ bottom: number | undefined;
225
+ type: string;
226
+ } | {
227
+ orient: string;
228
+ right: number;
229
+ top: string;
230
+ show: boolean;
231
+ textStyle: {
232
+ color: any;
233
+ fontSize: number;
234
+ fontFamily: string;
235
+ };
236
+ icon: string;
237
+ itemWidth: number;
238
+ itemHeight: number;
239
+ itemGap: number;
240
+ bottom: number | undefined;
241
+ type: string;
242
+ };
243
+ series: {
244
+ type: string;
245
+ radius: string | string[];
246
+ center: string[];
247
+ roseType: string | undefined;
248
+ avoidLabelOverlap: boolean;
249
+ itemStyle: {
250
+ borderColor: any;
251
+ borderWidth: number;
252
+ borderRadius: number;
253
+ shadowBlur: number;
254
+ shadowColor: any;
255
+ };
256
+ label: {
257
+ show: boolean;
258
+ position?: undefined;
259
+ color?: undefined;
260
+ fontSize?: undefined;
261
+ formatter?: undefined;
262
+ } | {
263
+ show: boolean;
264
+ position: string;
265
+ color: string;
266
+ fontSize: number;
267
+ formatter: string;
268
+ } | {
269
+ show: boolean;
270
+ color: any;
271
+ fontSize: number;
272
+ formatter: string;
273
+ position?: undefined;
274
+ };
275
+ labelLine: {
276
+ lineStyle: {
277
+ color: any;
278
+ };
279
+ };
280
+ data: any;
281
+ }[];
282
+ radar?: undefined;
283
+ grid?: undefined;
284
+ xAxis?: undefined;
285
+ yAxis?: undefined;
286
+ } | {
287
+ color: any;
288
+ tooltip: {
289
+ trigger: string;
290
+ backgroundColor: any;
291
+ borderColor: any;
292
+ borderWidth: number;
293
+ padding: number[];
294
+ textStyle: {
295
+ color: any;
296
+ fontSize: number;
297
+ fontFamily: string;
298
+ };
299
+ extraCssText: string;
300
+ axisPointer: {
301
+ type: string;
302
+ lineStyle: {
303
+ color: any;
304
+ width: number;
305
+ type: string;
306
+ };
307
+ label: {
308
+ backgroundColor: any;
309
+ color: string;
310
+ borderRadius: number;
311
+ padding: number[];
312
+ };
313
+ };
314
+ };
315
+ legend: {
316
+ show: boolean;
317
+ textStyle: {
318
+ color: any;
319
+ fontSize: number;
320
+ fontFamily: string;
321
+ };
322
+ icon: string;
323
+ itemWidth: number;
324
+ itemHeight: number;
325
+ itemGap: number;
326
+ top: number | undefined;
327
+ bottom: number | undefined;
328
+ type: string;
329
+ };
330
+ series: {
331
+ type: string;
332
+ left: string;
333
+ width: string;
334
+ top: number;
335
+ bottom: number;
336
+ sort: string;
337
+ gap: number;
338
+ label: {
339
+ color: any;
340
+ fontSize: number;
341
+ formatter: string;
342
+ } & ({
343
+ position: string;
344
+ color: string;
345
+ fontWeight: number;
346
+ } | {
347
+ position?: undefined;
348
+ color?: undefined;
349
+ fontWeight?: undefined;
350
+ });
351
+ itemStyle: {
352
+ borderColor: string;
353
+ borderWidth: number;
354
+ borderRadius?: undefined;
355
+ } | {
356
+ borderColor: any;
357
+ borderWidth: number;
358
+ borderRadius: number;
359
+ };
360
+ data: any;
361
+ }[];
362
+ radar?: undefined;
363
+ grid?: undefined;
364
+ xAxis?: undefined;
365
+ yAxis?: undefined;
366
+ } | {
367
+ color: any;
368
+ tooltip: {
369
+ trigger: string;
370
+ backgroundColor: any;
371
+ borderColor: any;
372
+ borderWidth: number;
373
+ padding: number[];
374
+ textStyle: {
375
+ color: any;
376
+ fontSize: number;
377
+ fontFamily: string;
378
+ };
379
+ extraCssText: string;
380
+ axisPointer: {
381
+ type: string;
382
+ lineStyle: {
383
+ color: any;
384
+ width: number;
385
+ type: string;
386
+ };
387
+ label: {
388
+ backgroundColor: any;
389
+ color: string;
390
+ borderRadius: number;
391
+ padding: number[];
392
+ };
393
+ };
394
+ };
395
+ legend: {
396
+ show: boolean;
397
+ textStyle: {
398
+ color: any;
399
+ fontSize: number;
400
+ fontFamily: string;
401
+ };
402
+ icon: string;
403
+ itemWidth: number;
404
+ itemHeight: number;
405
+ itemGap: number;
406
+ top: number | undefined;
407
+ bottom: number | undefined;
408
+ type: string;
409
+ };
410
+ radar: {
411
+ indicator: any;
412
+ axisName: {
413
+ color: any;
414
+ };
415
+ splitLine: {
416
+ lineStyle: {
417
+ color: any;
418
+ };
419
+ };
420
+ splitArea: {
421
+ areaStyle: {
422
+ color: string[];
423
+ };
424
+ };
425
+ axisLine: {
426
+ lineStyle: {
427
+ color: any;
428
+ };
429
+ };
430
+ };
431
+ series: {
432
+ type: string;
433
+ areaStyle: {
434
+ opacity: number;
435
+ };
436
+ data: {
437
+ value: any;
438
+ name: any;
439
+ }[];
440
+ }[];
441
+ grid?: undefined;
442
+ xAxis?: undefined;
443
+ yAxis?: undefined;
444
+ } | {
445
+ color: any;
446
+ tooltip: {
447
+ trigger: string;
448
+ backgroundColor: any;
449
+ borderColor: any;
450
+ borderWidth: number;
451
+ padding: number[];
452
+ textStyle: {
453
+ color: any;
454
+ fontSize: number;
455
+ fontFamily: string;
456
+ };
457
+ extraCssText: string;
458
+ axisPointer: {
459
+ type: string;
460
+ lineStyle: {
461
+ color: any;
462
+ width: number;
463
+ type: string;
464
+ };
465
+ label: {
466
+ backgroundColor: any;
467
+ color: string;
468
+ borderRadius: number;
469
+ padding: number[];
470
+ };
471
+ };
472
+ };
473
+ grid: {
474
+ left: number;
475
+ right: number;
476
+ top: number;
477
+ bottom: number;
478
+ };
479
+ xAxis: {
480
+ name: any;
481
+ nameTextStyle: {
482
+ color: any;
483
+ };
484
+ axisLine: {
485
+ show: boolean;
486
+ };
487
+ axisTick: {
488
+ show: boolean;
489
+ };
490
+ axisLabel: {
491
+ color: any;
492
+ fontSize: number;
493
+ fontFamily: string;
494
+ };
495
+ splitLine: {
496
+ show: boolean;
497
+ };
498
+ type: string;
499
+ data: any;
500
+ };
501
+ yAxis: {
502
+ name: any;
503
+ nameTextStyle: {
504
+ color: any;
505
+ };
506
+ splitLine: {
507
+ lineStyle: {
508
+ color: any;
509
+ type: string;
510
+ };
511
+ };
512
+ axisLine: {
513
+ show: boolean;
514
+ };
515
+ axisTick: {
516
+ show: boolean;
517
+ };
518
+ axisLabel: {
519
+ color: any;
520
+ fontSize: number;
521
+ fontFamily: string;
522
+ };
523
+ type: string;
524
+ };
525
+ series: {
526
+ type: string;
527
+ symbolSize: number;
528
+ itemStyle: {
529
+ color: any;
530
+ borderColor: any;
531
+ borderWidth: number;
532
+ };
533
+ data: any;
534
+ }[];
535
+ legend?: undefined;
536
+ radar?: undefined;
537
+ } | {
538
+ color: any;
539
+ series: {
540
+ type: string;
541
+ min: number;
542
+ max: number;
543
+ progress: {
544
+ show: boolean;
545
+ width: number;
546
+ roundCap: boolean;
547
+ itemStyle: {
548
+ color: {
549
+ type: string;
550
+ x: number;
551
+ y: number;
552
+ x2: number;
553
+ y2: number;
554
+ colorStops: {
555
+ offset: number;
556
+ color: any;
557
+ }[];
558
+ };
559
+ };
560
+ };
561
+ axisLine: {
562
+ roundCap: boolean;
563
+ lineStyle: {
564
+ width: number;
565
+ color: any[][];
566
+ };
567
+ };
568
+ axisLabel: {
569
+ color: any;
570
+ fontSize: number;
571
+ distance: number;
572
+ };
573
+ axisTick: {
574
+ show: boolean;
575
+ };
576
+ splitLine: {
577
+ length: number;
578
+ lineStyle: {
579
+ color: any;
580
+ };
581
+ };
582
+ pointer: {
583
+ width: number;
584
+ length: string;
585
+ itemStyle: {
586
+ color: any;
587
+ };
588
+ };
589
+ anchor: {
590
+ show: boolean;
591
+ size: number;
592
+ itemStyle: {
593
+ color: any;
594
+ };
595
+ };
596
+ detail: {
597
+ valueAnimation: boolean;
598
+ color: any;
599
+ fontSize: number;
600
+ fontWeight: number;
601
+ offsetCenter: (string | number)[];
602
+ };
603
+ title: {
604
+ color: any;
605
+ fontSize: number;
606
+ offsetCenter: (string | number)[];
607
+ };
608
+ data: {
609
+ value: any;
610
+ name: any;
611
+ }[];
612
+ }[];
613
+ tooltip?: undefined;
614
+ legend?: undefined;
615
+ radar?: undefined;
616
+ grid?: undefined;
617
+ xAxis?: undefined;
618
+ yAxis?: undefined;
619
+ } | {
620
+ color: any;
621
+ series: {
622
+ type: string;
623
+ startAngle: number;
624
+ endAngle: number;
625
+ min: number;
626
+ max: number;
627
+ radius: string;
628
+ pointer: {
629
+ show: boolean;
630
+ };
631
+ progress: {
632
+ show: boolean;
633
+ overlap: boolean;
634
+ roundCap: boolean;
635
+ clip: boolean;
636
+ width: number;
637
+ itemStyle: {
638
+ color: {
639
+ type: string;
640
+ x: number;
641
+ y: number;
642
+ x2: number;
643
+ y2: number;
644
+ colorStops: {
645
+ offset: number;
646
+ color: any;
647
+ }[];
648
+ };
649
+ };
650
+ };
651
+ axisLine: {
652
+ lineStyle: {
653
+ width: number;
654
+ color: any[][];
655
+ };
656
+ };
657
+ splitLine: {
658
+ show: boolean;
659
+ };
660
+ axisTick: {
661
+ show: boolean;
662
+ };
663
+ axisLabel: {
664
+ show: boolean;
665
+ };
666
+ anchor: {
667
+ show: boolean;
668
+ };
669
+ detail: {
670
+ valueAnimation: boolean;
671
+ offsetCenter: number[];
672
+ color: any;
673
+ fontSize: number;
674
+ fontWeight: number;
675
+ formatter: (v: any) => string;
676
+ };
677
+ title: {
678
+ show: boolean;
679
+ };
680
+ data: {
681
+ value: number;
682
+ name: any;
683
+ }[];
684
+ }[];
685
+ tooltip?: undefined;
686
+ legend?: undefined;
687
+ radar?: undefined;
688
+ grid?: undefined;
689
+ xAxis?: undefined;
690
+ yAxis?: undefined;
691
+ } | {
692
+ color: any;
693
+ tooltip: {
694
+ trigger: string;
695
+ backgroundColor: any;
696
+ borderColor: any;
697
+ borderWidth: number;
698
+ padding: number[];
699
+ textStyle: {
700
+ color: any;
701
+ fontSize: number;
702
+ fontFamily: string;
703
+ };
704
+ extraCssText: string;
705
+ axisPointer: {
706
+ type: string;
707
+ lineStyle: {
708
+ color: any;
709
+ width: number;
710
+ type: string;
711
+ };
712
+ label: {
713
+ backgroundColor: any;
714
+ color: string;
715
+ borderRadius: number;
716
+ padding: number[];
717
+ };
718
+ };
719
+ };
720
+ legend: {
721
+ show: boolean;
722
+ textStyle: {
723
+ color: any;
724
+ fontSize: number;
725
+ fontFamily: string;
726
+ };
727
+ icon: string;
728
+ itemWidth: number;
729
+ itemHeight: number;
730
+ itemGap: number;
731
+ top: number | undefined;
732
+ bottom: number | undefined;
733
+ type: string;
734
+ };
735
+ grid: {
736
+ left: number;
737
+ right: number;
738
+ top: number;
739
+ bottom: number;
740
+ };
741
+ xAxis: {
742
+ axisLine: {
743
+ show: boolean;
744
+ };
745
+ axisTick: {
746
+ show: boolean;
747
+ };
748
+ axisLabel: {
749
+ color: any;
750
+ fontSize: number;
751
+ fontFamily: string;
752
+ };
753
+ splitLine: {
754
+ show: boolean;
755
+ };
756
+ type: string;
757
+ data: any;
758
+ boundaryGap: boolean;
759
+ };
760
+ yAxis: any;
761
+ series: any;
762
+ radar?: undefined;
763
+ } | {
764
+ color: any;
765
+ tooltip: {
766
+ trigger: string;
767
+ backgroundColor: any;
768
+ borderColor: any;
769
+ borderWidth: number;
770
+ padding: number[];
771
+ textStyle: {
772
+ color: any;
773
+ fontSize: number;
774
+ fontFamily: string;
775
+ };
776
+ extraCssText: string;
777
+ axisPointer: {
778
+ type: string;
779
+ lineStyle: {
780
+ color: any;
781
+ width: number;
782
+ type: string;
783
+ };
784
+ label: {
785
+ backgroundColor: any;
786
+ color: string;
787
+ borderRadius: number;
788
+ padding: number[];
789
+ };
790
+ };
791
+ };
792
+ legend: {
793
+ show: boolean;
794
+ textStyle: {
795
+ color: any;
796
+ fontSize: number;
797
+ fontFamily: string;
798
+ };
799
+ icon: string;
800
+ itemWidth: number;
801
+ itemHeight: number;
802
+ itemGap: number;
803
+ top: number | undefined;
804
+ bottom: number | undefined;
805
+ type: string;
806
+ };
807
+ grid: {
808
+ left: number;
809
+ right: number;
810
+ top: number;
811
+ bottom: number;
812
+ };
813
+ xAxis: any;
814
+ yAxis: {
815
+ axisLine: {
816
+ show: boolean;
817
+ };
818
+ axisTick: {
819
+ show: boolean;
820
+ };
821
+ axisLabel: {
822
+ color: any;
823
+ fontSize: number;
824
+ fontFamily: string;
825
+ };
826
+ splitLine: {
827
+ show: boolean;
828
+ };
829
+ type: string;
830
+ data: any;
831
+ };
832
+ series: any;
833
+ radar?: undefined;
834
+ } | {
835
+ color: any;
836
+ tooltip: {
837
+ trigger: string;
838
+ backgroundColor: any;
839
+ borderColor: any;
840
+ borderWidth: number;
841
+ padding: number[];
842
+ textStyle: {
843
+ color: any;
844
+ fontSize: number;
845
+ fontFamily: string;
846
+ };
847
+ extraCssText: string;
848
+ axisPointer: {
849
+ type: string;
850
+ lineStyle: {
851
+ color: any;
852
+ width: number;
853
+ type: string;
854
+ };
855
+ label: {
856
+ backgroundColor: any;
857
+ color: string;
858
+ borderRadius: number;
859
+ padding: number[];
860
+ };
861
+ };
862
+ };
863
+ legend: {
864
+ show: boolean;
865
+ textStyle: {
866
+ color: any;
867
+ fontSize: number;
868
+ fontFamily: string;
869
+ };
870
+ icon: string;
871
+ itemWidth: number;
872
+ itemHeight: number;
873
+ itemGap: number;
874
+ top: number | undefined;
875
+ bottom: number | undefined;
876
+ type: string;
877
+ };
878
+ grid: {
879
+ left: number;
880
+ right: number;
881
+ top: number;
882
+ bottom: number;
883
+ };
884
+ xAxis: {
885
+ axisLabel: {
886
+ color: any;
887
+ interval: string | number;
888
+ rotate: number;
889
+ };
890
+ axisLine: {
891
+ show: boolean;
892
+ };
893
+ axisTick: {
894
+ show: boolean;
895
+ };
896
+ splitLine: {
897
+ show: boolean;
898
+ };
899
+ type: string;
900
+ data: any;
901
+ };
902
+ yAxis: any;
903
+ series: any;
904
+ radar?: undefined;
905
+ } | null;
906
+ kpiTitle(): any;
907
+ kpiValue(): any;
908
+ decimalFormat(): string;
909
+ tableColumns(): any[];
910
+ tableRows(): never[];
911
+ /** 明细表:可排序 / 可拖列宽 / 显示合计(都可关) */
912
+ isSortable(): boolean;
913
+ isResizable(): boolean;
914
+ showSummary(): boolean;
915
+ hasColWidths(): boolean;
916
+ /**
917
+ * 表格宽度(只对"有拖过列宽"的明细表生效)。
918
+ *
919
+ * ⚠️ 原来的 CSS 是 `.fixed { width: max-content; min-width: 100% }` —— 表格按**内容最大宽度**排版,
920
+ * 于是只要"纵向滚动条"占掉十几像素,max-content 就比可视宽度大一点点 ⇒ **凭空冒出一条横向滚动条**
921
+ * (表格明明塞得下;用户反馈"这个应该没有 scroll-x")。
922
+ *
923
+ * 现在:
924
+ * - 所有列都有显式宽度(用户逐列拖过)⇒ width = max(100%, 各列合计),合计真的超了才横向滚动;
925
+ * - 还有"自动列"(只拖了其中几列)⇒ 交给浏览器按 100% 排(显式宽度仍然作为该列的最小宽度生效,
926
+ * 真放不下时表格会自己撑破容器、滚动条照旧出现)。
927
+ */
928
+ tableStyle(): {
929
+ width?: undefined;
930
+ } | {
931
+ width: string;
932
+ };
933
+ sortField(): any;
934
+ /** 交叉表用的度量列表(多度量:每个度量一组数值列) */
935
+ crossMeasures(): any;
936
+ /**
937
+ * 交叉表的**整份视图数据**:表头行 / 表体行 / 表尾单元格,一次算完。
938
+ *
939
+ * ⚠️ 为什么要合成一个 computed:之前拆成 crossHeadRows / crossBodyRows / crossFootCells 三个 computed,
940
+ * 它们都依赖另一个 computed(cross),结果出现了"cross 已经是最新(28 行 6 列)、
941
+ * 但表头 computed 还停在空数据那一版"的缓存不失效问题 —— 表头永远只有 2 列、$forceUpdate 都救不回来。
942
+ * 合成一个、直接从 result/part 推,就不存在链式 computed 的缓存问题。
943
+ */
944
+ crossView(): {
945
+ headRows: never[];
946
+ bodyRows: never[];
947
+ footCells: never[];
948
+ footTotal: string;
949
+ rowKey: string;
950
+ rowField: string;
951
+ colCount: number;
952
+ } | {
953
+ headRows: any[][];
954
+ bodyRows: {
955
+ name: any;
956
+ cells: any[];
957
+ total: any;
958
+ }[];
959
+ footCells: any[];
960
+ footTotal: any;
961
+ rowKey: any;
962
+ rowField: any;
963
+ colCount: number;
964
+ rows: any[];
965
+ cols: any[];
966
+ map: {};
967
+ rowTotal: {};
968
+ colTotal: {};
969
+ grand: {};
970
+ multi: boolean;
971
+ };
972
+ tabs(): any;
973
+ tabContents(): any;
974
+ carouselImages(): any;
975
+ marqueeStyle(): {
976
+ animationDuration: string;
977
+ color: any;
978
+ };
979
+ progressValue(): number;
980
+ /** 筛选部件"生效配置":类型与可选值优先取数据集声明,部件自己的只作覆盖 */
981
+ filterCfg(): any;
982
+ currentParam(): any;
983
+ /** 导航项(过滤掉空项;value 缺省时回落成 label) */
984
+ navItems(): any;
985
+ /** 绝对定位模式:每个菜单项自己带 x/y/w/h(设计稿里菜单项是**沿斜切板排布**的,
986
+ 等宽等距的流式布局对不上,所以给 nav 加了这种布局) */
987
+ navAbsolute(): boolean;
988
+ /**
989
+ * 导航的"当前选中值":
990
+ * 运行时 —— 以**真实参数值**为准(刷新/深链/别处改参数都会跟着动)
991
+ * 设计器 —— 以 view.active 为准,这样第 2 页的部件也能被编辑(设计器不过滤 visibleWhen)
992
+ */
993
+ navActiveValue(): string;
994
+ /** 导航布局:间距与项尺寸走 CSS 变量,主题负责长相 */
995
+ navStyle(): {
996
+ fontSize: string;
997
+ fontFamily: any;
998
+ fontWeight: string;
999
+ fontStyle: string;
1000
+ color: any;
1001
+ letterSpacing: any;
1002
+ textShadow: any;
1003
+ } | {
1004
+ gap: string;
1005
+ '--nav-item-w': string;
1006
+ '--nav-item-h': string;
1007
+ fontSize: string;
1008
+ fontFamily: any;
1009
+ fontWeight: string;
1010
+ fontStyle: string;
1011
+ color: any;
1012
+ letterSpacing: any;
1013
+ textShadow: any;
1014
+ };
1015
+ textOverflow(): any;
1016
+ /**
1017
+ * 文本部件的内联样式:**必须把 textStyle(part, theme) 应用上**。
1018
+ * 以前这里只返回"自动缩小字号"时的 fontSize,于是部件设置里的
1019
+ * 字体/字号/加粗/斜体/颜色/对齐**全都没生效**(对齐是用户报的)。
1020
+ * 另外 .part-text 是 flex(为了垂直居中),所以横向对齐除了 textAlign
1021
+ * 还要给 justifyContent —— flex 容器里 text-align 管不到 flex item 的位置。
1022
+ */
1023
+ textBoxStyle(): {
1024
+ fontFamily: any;
1025
+ fontSize: string;
1026
+ fontWeight: string;
1027
+ fontStyle: string;
1028
+ color: any;
1029
+ textAlign: any;
1030
+ };
1031
+ /**
1032
+ * 看板参数版本号(必须走 computed)。
1033
+ * ⚠️ 踩过的坑:直接写 `watch: { 'paramState.version'(){} }` 是无效的 ——
1034
+ * Vue 的字符串路径是相对**组件实例**解析的,而 paramState 是 import 进来的模块对象,
1035
+ * 解析不到 → 永远不触发(表现为"筛选点了没反应")。
1036
+ */
1037
+ paramVersion(): any;
1038
+ }, {
1039
+ /** 上下文(缺失直接抛:静默降级只会让"数据不出来"更难查) */
1040
+ ctx(): {};
1041
+ /**
1042
+ * DataV 边框/装饰的**尺寸同步**(实测踩到的坑,2026-09)。
1043
+ *
1044
+ * DataV 的 "自适应" 其实很弱:`lib/util/observerDomResize` 是 **MutationObserver 盯自身 `style` 属性**,
1045
+ * 外加一个 window resize 监听(`lib/mixin/autoResize.js`)。而我们的部件框是**父节点改宽高**
1046
+ * (`.part` 的行内 width/height,DataV 根节点只有 class 给的 `inset:0`),它自己的 `style` 属性从头到尾不变
1047
+ * ⇒ 拖拽缩放/栅格重排/移动端堆叠之后,边框**不重量**:实测部件宽从 340 改成 200,根节点跟到 200,
1048
+ * 但 svg 的 width 还停在 340(边框和框错位,看起来像"边框画歪了")。
1049
+ *
1050
+ * 修法:自己挂一个真 ResizeObserver(和 BoardChart.vue 里图表用的是同一套做法),
1051
+ * 尺寸变了就调 DataV 组件暴露出来的 `initWH(true)` 让它重新量一次(mixin 的方法,实例上直接可调)。
1052
+ * 只在"量到的尺寸和它自己记的不一样"时调用,避免 svg 重画反过来触发观察器形成回环。
1053
+ */
1054
+ bindDatavResize(): void;
1055
+ unbindDatavResize(): void;
1056
+ /** 配置里的 src → 可直接渲染的地址(asset: 引用在这里才拼成当前部署的 URL,见 engine/asset.js) */
1057
+ mediaSrc(v: any): string;
1058
+ /** 表格某列的宽度(colgroup 用)。⚠️ 必须放 methods:模板里是 colWidthOf(c) 这种调用写法,
1059
+ 放 computed 会变成"不是函数",渲染直接抛错 ⇒ DOM 停在旧状态(这个错我犯了两次,见文件里另一处注释)
1060
+ 优先用用户拖过的宽度;否则数值列给一个固定窄宽(数字本来就不长),**文本列给 auto**(平分剩余空间) */
1061
+ colWidthOf(col: any): string;
1062
+ load(force: any): Promise<void>;
1063
+ isDim(col: any): boolean;
1064
+ thStyle(col: any): {
1065
+ textAlign: string;
1066
+ position: string;
1067
+ };
1068
+ /** 点表头:切换排序字段/方向。写回部件配置(走服务端 orderField,大数据量也正确)并立刻重查 */
1069
+ onSort(col: any): void;
1070
+ /**
1071
+ * 拖表头右边缘调列宽,存进部件配置(跟着看板一起保存)。
1072
+ * ⚠️ 必须用 $set 整体替换 colWidths:colWidths 在老配置里通常还不存在,
1073
+ * 直接 `view.colWidths = {...}` 是"加新 key",Vue 2 检测不到 ⇒ colgroup 不渲染、
1074
+ * 表现成"拖了列宽但表格没反应"(我在这上面栽过)。
1075
+ */
1076
+ startColResize(e: any, col: any): void;
1077
+ /** 合计行:数字列求和,非数字列留空 */
1078
+ summaryValue(col: any): number | null;
1079
+ summaryText(col: any): any;
1080
+ /** 导出当前渲染的数据为 CSV(带 BOM,Excel 打开不乱码) */
1081
+ exportCsv(): void;
1082
+ onDrill(field: any, value: any): void;
1083
+ onCellClick(row: any, col: any): void;
1084
+ /** 图表点击下钻:类目名就是维度值(饼图用 name,直角坐标系用类目名) */
1085
+ onChartClick(p: any): void;
1086
+ cellText(row: any, col: any): any;
1087
+ measureText(index: any): any;
1088
+ fmt(v: any): any;
1089
+ startCarousel(): void;
1090
+ onButtonClick(): void;
1091
+ isNavActive(item: any): boolean;
1092
+ /**
1093
+ * 导航点击:
1094
+ * mode=param(默认,主模型)—— 只写看板参数 ⇒ 各部件按 view.visibleWhen 显隐、并按参数重新取数
1095
+ * mode=code —— 跳另一个看板(同窗)
1096
+ * mode=both —— 先写参数再跳(目标看板可带同一参数继续用)
1097
+ * item.reset:切页时顺带清掉的业务参数(如 ['ageRange'])——导航参数本身不清。
1098
+ */
1099
+ /** 绝对布局下:项的坐标以**部件盒子左上角**为原点(设计稿坐标 - 部件 x/y 由调用方算好)
1100
+ * ⚠ 必须放 methods:Vue 2 的 computed 里定义成函数会被当 getter,`vm.navItemStyle(it)`
1101
+ * 会报 "is not a function" → 整个 nav 部件的渲染直接抛错,DOM 里只剩一个空注释。 */
1102
+ navItemStyle(it: any): {
1103
+ left: string;
1104
+ top: string;
1105
+ } | null;
1106
+ onNavClick(item: any): void;
1107
+ onFilterChange(val: any): void;
1108
+ /**
1109
+ * 文本"自动缩小字号":从设定字号起逐级降,直到内容放得下(或到下限 10px)。
1110
+ * 为什么要这么做:绝对/栅格布局里文本高度是给定的,而多语言(英文比中文长)和长文案
1111
+ * 会让文字溢出被静默裁掉。缩小字号是比裁切更可接受的降级。
1112
+ *
1113
+ * ⚠️ 两个必须遵守的点(否则会死循环/结果错):
1114
+ * 1) 每轮先把字号写到内层元素上再测量 —— 直接读会被"上一次渲染"的字号干扰;
1115
+ * 2) 只有结果真的变了才写 shrunkFont —— 无条件先赋值 base 会让
1116
+ * updated() → fitText() → 改数据 → updated() 无限来回(base ⇄ 缩小值)。
1117
+ */
1118
+ fitText(): void;
1119
+ /** 全部生效参数(设计器/子组件用) */
1120
+ allParams(): any;
1121
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1122
+ part: {
1123
+ type: ObjectConstructor;
1124
+ required: true;
1125
+ };
1126
+ themeCode: {
1127
+ type: StringConstructor;
1128
+ default: string;
1129
+ };
1130
+ refreshKey: {
1131
+ type: NumberConstructor;
1132
+ default: number;
1133
+ };
1134
+ /** 看板参数版本号(引擎的参数 state 是普通对象,Vue 追踪不到 ⇒ 由 DesignBoard 往下传) */
1135
+ paramsVersion: {
1136
+ type: NumberConstructor;
1137
+ default: number;
1138
+ };
1139
+ /** 容器内子栅格的几何(列数/行高/间距,来自整页设置) */
1140
+ gridOptions: {
1141
+ type: ObjectConstructor;
1142
+ default: () => {
1143
+ cols: number;
1144
+ rowHeight: number;
1145
+ gap: number;
1146
+ };
1147
+ };
1148
+ /** 本部件直接子级的总数(决定容器显示子级还是显示空提示) */
1149
+ childrenCount: {
1150
+ type: NumberConstructor;
1151
+ default: number;
1152
+ };
1153
+ /** 每个页签各有几个子级,形如 {0:2, 2:1} */
1154
+ tabChildCounts: {
1155
+ type: ObjectConstructor;
1156
+ default: () => {};
1157
+ };
1158
+ /** 设计器里为 true:空容器的引导文案只在设计器显示,不泄漏到运行时大屏 */
1159
+ design: {
1160
+ type: BooleanConstructor;
1161
+ default: boolean;
1162
+ };
1163
+ /** 设计器里"当前选中的就是这个部件":选中时把容器的**内容区**画成虚线框,
1164
+ * 这样"子级有没有超出内容区"一眼可见(用户反馈过"text 的区域好像超出 container 了")。 */
1165
+ active: {
1166
+ type: BooleanConstructor;
1167
+ default: boolean;
1168
+ };
1169
+ /** 移动端堆叠:容器内的子部件区改成纵向流式(否则 inset:0 的绝对定位区在 auto 高度下会塌成 0) */
1170
+ stacked: {
1171
+ type: BooleanConstructor;
1172
+ default: boolean;
1173
+ };
1174
+ /** 窄屏:图例挪到底部、饼图居中收窄(图表 option 用) */
1175
+ narrow: {
1176
+ type: BooleanConstructor;
1177
+ default: boolean;
1178
+ };
1179
+ }>> & Readonly<{}>, {
1180
+ design: boolean;
1181
+ gridOptions: Record<string, any>;
1182
+ active: boolean;
1183
+ themeCode: string;
1184
+ refreshKey: number;
1185
+ paramsVersion: number;
1186
+ childrenCount: number;
1187
+ tabChildCounts: Record<string, any>;
1188
+ stacked: boolean;
1189
+ narrow: boolean;
1190
+ }, {}, {
1191
+ BoardChart: import("vue").DefineComponent<{
1192
+ option?: Record<string, any> | null;
1193
+ }, {
1194
+ resize: () => void;
1195
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
1196
+ "chart-click": (payload: any) => any;
1197
+ }, string, import("vue").PublicProps, Readonly<{
1198
+ option?: Record<string, any> | null;
1199
+ }> & Readonly<{
1200
+ "onChart-click"?: ((payload: any) => any) | undefined;
1201
+ }>, {
1202
+ option: Record<string, any> | null;
1203
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
1204
+ }, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1205
+ export default _default;