@vmscloud/moz-ui-chart-vue 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/README.md +68 -0
- package/dist/EChart.vue.d.ts +70 -0
- package/dist/EChartPopup.d.ts +65 -0
- package/dist/EChartPopup.vue.d.ts +94 -0
- package/dist/ViewDefinitionPanel.vue.d.ts +26 -0
- package/dist/bridge/VueRenderer.d.ts +12 -0
- package/dist/contracts/UserLayoutInstance.d.ts +38 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/userLayout.contract.d.ts +15 -0
- package/dist/echarts-stat.cjs +1 -0
- package/dist/echarts-stat.d.ts +1 -0
- package/dist/echarts-stat.js +4 -0
- package/dist/echarts.charts.cjs +1 -0
- package/dist/echarts.charts.d.ts +1 -0
- package/dist/echarts.charts.js +1 -0
- package/dist/echarts.cjs +1 -0
- package/dist/echarts.components.cjs +1 -0
- package/dist/echarts.components.d.ts +1 -0
- package/dist/echarts.components.js +1 -0
- package/dist/echarts.core.cjs +1 -0
- package/dist/echarts.core.d.ts +1 -0
- package/dist/echarts.core.js +1 -0
- package/dist/echarts.d.ts +2 -0
- package/dist/echarts.js +4 -0
- package/dist/echarts.renderers.cjs +1 -0
- package/dist/echarts.renderers.d.ts +1 -0
- package/dist/echarts.renderers.js +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +531 -0
- package/dist/locale/index.d.ts +23 -0
- package/dist/style.css +1 -0
- package/dist/types.d.ts +27 -0
- package/package.json +95 -0
package/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# @vmscloud/moz-ui-chart-vue
|
|
2
|
+
|
|
3
|
+
`@vmscloud/moz-ui-chart-core` 의 Vue 3 어댑터. 레거시 `@vmscloud/moz-ui-chart` 와 같은 이름의 export(`EChart`, `EChartPopup`,
|
|
4
|
+
`ViewDefinitionPanel`, `MozEChart`, `DataType`, `Aggregate`, `IEChartExposed` …)와 같은 props / v-model / slot / expose 계약을 제공합니다.
|
|
5
|
+
import 경로만 바꾸면 됩니다.
|
|
6
|
+
|
|
7
|
+
## 설치
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add @vmscloud/moz-ui-chart-vue vue vue-router
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
npmjs 공개 패키지라 레지스트리 설정이나 토큰 없이 설치됩니다. 레거시 `@vmscloud/moz-ui-components` peer 가 없습니다.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
// main.ts
|
|
17
|
+
import '@vmscloud/moz-ui-chart-vue/style.css'; // primitives + 크롬 스타일 한 파일
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 사용
|
|
21
|
+
|
|
22
|
+
```vue
|
|
23
|
+
<EChart
|
|
24
|
+
id="sales"
|
|
25
|
+
:itemsSource="rows"
|
|
26
|
+
v-model:chartDef="chartDef"
|
|
27
|
+
v-model:viewDef="viewDef"
|
|
28
|
+
v-model:filterDef="filterDef"
|
|
29
|
+
:isFetching="loading"
|
|
30
|
+
ref="chart"
|
|
31
|
+
>
|
|
32
|
+
<template #tool-left>매출 차트</template>
|
|
33
|
+
</EChart>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
const chart = ref<IEChartExposed>();
|
|
38
|
+
chart.value!.chartOptionModal = true; // 설정 모달 열기
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 팝업 창
|
|
42
|
+
|
|
43
|
+
툴바의 팝업 버튼(`useChartPopupIcon`)은 vue-router 로 `/chartPopup/<key>` 를 새 창에 엽니다. 라우트에 `EChartPopup` 을 등록하세요.
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
{ path: '/chartPopup/:chartId', component: () => import('@vmscloud/moz-ui-chart-vue').then((m) => m.EChartPopup) }
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 로케일
|
|
50
|
+
|
|
51
|
+
기본 ko. 앱 전체에 적용하려면 `MOZ_CHART_LOCALE_KEY` 로 `Ref<ChartLocaleMessages>` 를 provide 하거나 `ChartLocaleProvider` 로 감쌉니다.
|
|
52
|
+
레거시·components-core 의 전체 메시지 객체도 그대로 넘길 수 있습니다(구조적 부분집합).
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
app.provide(MOZ_CHART_LOCALE_KEY, computed(() => (lang.value === 'en' ? enUS : koKR)));
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 사용자 레이아웃(UserLayout)
|
|
59
|
+
|
|
60
|
+
호스트가 `'user-layout-module'` 을 provide 하면 정의 저장/복원에 등록됩니다(레거시 계약 동일).
|
|
61
|
+
|
|
62
|
+
## 레거시와 다른 점
|
|
63
|
+
|
|
64
|
+
- `v-loading` / `v-tooltip` 디렉티브가 필요 없습니다(코어가 로딩 오버레이·`title` 툴팁을 직접 그림).
|
|
65
|
+
- expose 의 `chartRef` 는 레거시에서 vue-echarts 컴포넌트(`chartRef.chart` 로 echarts 접근)였지만, 이제 echarts 인스턴스 자체입니다. 새 코드는 `chart.value.chrome.echarts` 또는 `mozEChart.chart` 를 쓰세요.
|
|
66
|
+
- 필터의 Boolean 옵션에서 FALSE 항목의 key 가 레거시에서는 `true`(버그)였던 것을 `false` 로 고쳤습니다.
|
|
67
|
+
- `ViewDefinitionPanel` 단독 컴포넌트는 `columnLabel/rowLabel/valueLabel` 슬롯을 지원하지 않습니다(로케일 기본 라벨).
|
|
68
|
+
- Storybook 은 이 패키지에 없습니다.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ChartChrome, FilterDef, MozEChartOptions, ViewDef, MozEChart as MozEChartType, MozEChartOptions as MozEChartOptionsType, MozEChartTemplateOptions as MozEChartTemplateOptionsType } from '@vmscloud/moz-ui-chart-core';
|
|
2
|
+
/** EChart props — 레거시 moz-ui-chart EChart.vue 의 Props 1:1 (d.ts 에 노출되도록 별도 script 블록에서 export) */
|
|
3
|
+
export interface EChartProps {
|
|
4
|
+
id: string;
|
|
5
|
+
itemsSource?: Record<string, any>[];
|
|
6
|
+
isFetching?: boolean;
|
|
7
|
+
chartDef?: MozEChartOptionsType;
|
|
8
|
+
/** 개발자 측에서 항상 유지되었으면 하는 설정값 — chartDef 와 deepMerge 된다 */
|
|
9
|
+
chartDefTemplate?: MozEChartTemplateOptionsType;
|
|
10
|
+
useToolBox?: boolean;
|
|
11
|
+
useChartPopupIcon?: boolean;
|
|
12
|
+
useChartSetting?: boolean;
|
|
13
|
+
chartPopupTitle?: string;
|
|
14
|
+
/** stack bar hover 시 합계 label 표시 여부 (기본 true) */
|
|
15
|
+
useStackBarHover?: boolean;
|
|
16
|
+
onInitialized?: (mozEChart: MozEChartType) => void;
|
|
17
|
+
}
|
|
18
|
+
declare const _default: import('vue').DefineComponent<{
|
|
19
|
+
viewDef?: ViewDef;
|
|
20
|
+
filterDef?: FilterDef[];
|
|
21
|
+
} & EChartProps, {
|
|
22
|
+
chartCategorySource: MozEChartType["chartCategorySource"] | undefined;
|
|
23
|
+
chartTypeSource: MozEChartType["chartTypeSource"] | undefined;
|
|
24
|
+
mozEChart: MozEChartType | undefined;
|
|
25
|
+
chartRef: unknown;
|
|
26
|
+
state: import('@vmscloud/moz-ui-chart-core').ChartDefinition | undefined;
|
|
27
|
+
chartCategory: import('@vmscloud/moz-ui-chart-core').ChartCategory | undefined;
|
|
28
|
+
chartType: import('@vmscloud/moz-ui-chart-core').ChartType | undefined;
|
|
29
|
+
useZoomX: boolean;
|
|
30
|
+
useZoomY: boolean;
|
|
31
|
+
chartOptionModal: boolean;
|
|
32
|
+
chartFilterModel: boolean;
|
|
33
|
+
initializeDefinition: (initial
|
|
34
|
+
/**
|
|
35
|
+
* EChart — chart-core `ChartChrome` 을 얇게 감싸는 Vue 어댑터.
|
|
36
|
+
*
|
|
37
|
+
* 레거시 moz-ui-chart/src/EChart.vue 의 공개 계약(props / v-model:viewDef·filterDef / update:chartDef /
|
|
38
|
+
* slot tool-left·tool-items·tool-items-after / 'user-layout-module' inject / expose) 을 그대로 유지하고,
|
|
39
|
+
* 툴바·모달·필터·캔버스는 모두 코어가 그린다. 이 파일은 (1) 생명주기, (2) props → chrome.update 매핑,
|
|
40
|
+
* (3) 코어 이벤트 → emit/v-model, (4) Vue 슬롯 → 코어 outlet 마운트(VueRenderer), (5) expose 만 담당한다.
|
|
41
|
+
*/
|
|
42
|
+
?: boolean) => void;
|
|
43
|
+
chartKey: string | undefined;
|
|
44
|
+
customYAxisForSeriesType: string[];
|
|
45
|
+
clickChartPopup: () => void;
|
|
46
|
+
useChartPopupIcon: boolean | undefined;
|
|
47
|
+
onClickLegend: (params: any) => void;
|
|
48
|
+
chrome: ChartChrome | null;
|
|
49
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
50
|
+
"update:viewDef": (value: ViewDef) => any;
|
|
51
|
+
"update:filterDef": (value: FilterDef[]) => any;
|
|
52
|
+
"update:chartDef": (definition: MozEChartOptions) => any;
|
|
53
|
+
}, string, import('vue').PublicProps, Readonly<{
|
|
54
|
+
viewDef?: ViewDef;
|
|
55
|
+
filterDef?: FilterDef[];
|
|
56
|
+
} & EChartProps> & Readonly<{
|
|
57
|
+
"onUpdate:viewDef"?: ((value: ViewDef) => any) | undefined;
|
|
58
|
+
"onUpdate:filterDef"?: ((value: FilterDef[]) => any) | undefined;
|
|
59
|
+
"onUpdate:chartDef"?: ((definition: MozEChartOptions) => any) | undefined;
|
|
60
|
+
}>, {
|
|
61
|
+
itemsSource: Record<string, any>[];
|
|
62
|
+
chartDef: MozEChartOptionsType;
|
|
63
|
+
useToolBox: boolean;
|
|
64
|
+
useChartSetting: boolean;
|
|
65
|
+
useChartPopupIcon: boolean;
|
|
66
|
+
useStackBarHover: boolean;
|
|
67
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
68
|
+
hostRef: HTMLDivElement;
|
|
69
|
+
}, HTMLDivElement>;
|
|
70
|
+
export default _default;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ChartPopupPayload, ViewDef } from '@vmscloud/moz-ui-chart-core';
|
|
2
|
+
export type { ChartPopupPayload as EChartPopupData } from '@vmscloud/moz-ui-chart-core';
|
|
3
|
+
export declare function useEChartPopup(): {
|
|
4
|
+
openChartPopup: (data: ChartPopupPayload, chartKey: string, title?: string) => Promise<void>;
|
|
5
|
+
closePopup: () => void;
|
|
6
|
+
chartPopupTitle: import('vue').Ref<string, string>;
|
|
7
|
+
};
|
|
8
|
+
export declare function useEChartPopupView(): {
|
|
9
|
+
itemsSource: import('vue').Ref<any[], any[]>;
|
|
10
|
+
chartDef: import('vue').Ref<Record<string, any>, Record<string, any>>;
|
|
11
|
+
viewDef: import('vue').Ref<{
|
|
12
|
+
fields: {
|
|
13
|
+
binding: string;
|
|
14
|
+
header: string;
|
|
15
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
16
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
17
|
+
}[];
|
|
18
|
+
rowFields: {
|
|
19
|
+
binding: string;
|
|
20
|
+
header: string;
|
|
21
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
22
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
23
|
+
}[];
|
|
24
|
+
columnFields: {
|
|
25
|
+
binding: string;
|
|
26
|
+
header: string;
|
|
27
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
28
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
29
|
+
}[];
|
|
30
|
+
valueFields: {
|
|
31
|
+
binding: string;
|
|
32
|
+
header: string;
|
|
33
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
34
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
35
|
+
}[];
|
|
36
|
+
}, ViewDef | {
|
|
37
|
+
fields: {
|
|
38
|
+
binding: string;
|
|
39
|
+
header: string;
|
|
40
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
41
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
42
|
+
}[];
|
|
43
|
+
rowFields: {
|
|
44
|
+
binding: string;
|
|
45
|
+
header: string;
|
|
46
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
47
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
48
|
+
}[];
|
|
49
|
+
columnFields: {
|
|
50
|
+
binding: string;
|
|
51
|
+
header: string;
|
|
52
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
53
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
54
|
+
}[];
|
|
55
|
+
valueFields: {
|
|
56
|
+
binding: string;
|
|
57
|
+
header: string;
|
|
58
|
+
dataType: import('@vmscloud/moz-ui-chart-core').DataType;
|
|
59
|
+
aggregate?: import('@vmscloud/moz-ui-chart-core').Aggregate | undefined;
|
|
60
|
+
}[];
|
|
61
|
+
}>;
|
|
62
|
+
filterDef: import('vue').Ref<any[], any[]>;
|
|
63
|
+
chartPopupTitle: import('vue').Ref<string, string>;
|
|
64
|
+
chartDefTemplate: import('vue').Ref<Record<string, any>, Record<string, any>>;
|
|
65
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { MozEChart } from '@vmscloud/moz-ui-chart-core';
|
|
2
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
|
|
3
|
+
chartPopupRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
|
|
4
|
+
viewDef?: import('@vmscloud/moz-ui-chart-core').ViewDef;
|
|
5
|
+
filterDef?: import('@vmscloud/moz-ui-chart-core').FilterDef[];
|
|
6
|
+
} & import('./EChart.vue').EChartProps> & Readonly<{
|
|
7
|
+
"onUpdate:viewDef"?: ((value: import('@vmscloud/moz-ui-chart-core').ViewDef) => any) | undefined;
|
|
8
|
+
"onUpdate:filterDef"?: ((value: import('@vmscloud/moz-ui-chart-core').FilterDef[]) => any) | undefined;
|
|
9
|
+
"onUpdate:chartDef"?: ((definition: import('@vmscloud/moz-ui-chart-core').MozEChartOptions) => any) | undefined;
|
|
10
|
+
}>, {
|
|
11
|
+
chartCategorySource: MozEChart["chartCategorySource"] | undefined;
|
|
12
|
+
chartTypeSource: MozEChart["chartTypeSource"] | undefined;
|
|
13
|
+
mozEChart: MozEChart | undefined;
|
|
14
|
+
chartRef: unknown;
|
|
15
|
+
state: import('@vmscloud/moz-ui-chart-core').ChartDefinition | undefined;
|
|
16
|
+
chartCategory: import('@vmscloud/moz-ui-chart-core').ChartCategory | undefined;
|
|
17
|
+
chartType: import('@vmscloud/moz-ui-chart-core').ChartType | undefined;
|
|
18
|
+
useZoomX: boolean;
|
|
19
|
+
useZoomY: boolean;
|
|
20
|
+
chartOptionModal: boolean;
|
|
21
|
+
chartFilterModel: boolean;
|
|
22
|
+
initializeDefinition: (initial
|
|
23
|
+
/**
|
|
24
|
+
* MOVED — 원본: components/frontend/moz-ui-chart/src/components/EChartPopup.vue (2026-09-14)
|
|
25
|
+
* 팝업 창(/chartPopup/:key) 페이지 컴포넌트. opener 가 보낸 payload 로 차트를 그린다.
|
|
26
|
+
*/
|
|
27
|
+
?: boolean) => void;
|
|
28
|
+
chartKey: string | undefined;
|
|
29
|
+
customYAxisForSeriesType: string[];
|
|
30
|
+
clickChartPopup: () => void;
|
|
31
|
+
useChartPopupIcon: boolean | undefined;
|
|
32
|
+
onClickLegend: (params: any) => void;
|
|
33
|
+
chrome: import('@vmscloud/moz-ui-chart-core').ChartChrome | null;
|
|
34
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
35
|
+
"update:viewDef": (value: import('@vmscloud/moz-ui-chart-core').ViewDef) => any;
|
|
36
|
+
"update:filterDef": (value: import('@vmscloud/moz-ui-chart-core').FilterDef[]) => any;
|
|
37
|
+
"update:chartDef": (definition: import('@vmscloud/moz-ui-chart-core').MozEChartOptions) => any;
|
|
38
|
+
}, import('vue').PublicProps, {
|
|
39
|
+
itemsSource: Record<string, any>[];
|
|
40
|
+
chartDef: import('@vmscloud/moz-ui-chart-core').MozEChartOptions;
|
|
41
|
+
useToolBox: boolean;
|
|
42
|
+
useChartSetting: boolean;
|
|
43
|
+
useChartPopupIcon: boolean;
|
|
44
|
+
useStackBarHover: boolean;
|
|
45
|
+
}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
|
|
46
|
+
hostRef: HTMLDivElement;
|
|
47
|
+
}, HTMLDivElement, import('vue').ComponentProvideOptions, {
|
|
48
|
+
P: {};
|
|
49
|
+
B: {};
|
|
50
|
+
D: {};
|
|
51
|
+
C: {};
|
|
52
|
+
M: {};
|
|
53
|
+
Defaults: {};
|
|
54
|
+
}, Readonly<{
|
|
55
|
+
viewDef?: import('@vmscloud/moz-ui-chart-core').ViewDef;
|
|
56
|
+
filterDef?: import('@vmscloud/moz-ui-chart-core').FilterDef[];
|
|
57
|
+
} & import('./EChart.vue').EChartProps> & Readonly<{
|
|
58
|
+
"onUpdate:viewDef"?: ((value: import('@vmscloud/moz-ui-chart-core').ViewDef) => any) | undefined;
|
|
59
|
+
"onUpdate:filterDef"?: ((value: import('@vmscloud/moz-ui-chart-core').FilterDef[]) => any) | undefined;
|
|
60
|
+
"onUpdate:chartDef"?: ((definition: import('@vmscloud/moz-ui-chart-core').MozEChartOptions) => any) | undefined;
|
|
61
|
+
}>, {
|
|
62
|
+
chartCategorySource: MozEChart["chartCategorySource"] | undefined;
|
|
63
|
+
chartTypeSource: MozEChart["chartTypeSource"] | undefined;
|
|
64
|
+
mozEChart: MozEChart | undefined;
|
|
65
|
+
chartRef: unknown;
|
|
66
|
+
state: import('@vmscloud/moz-ui-chart-core').ChartDefinition | undefined;
|
|
67
|
+
chartCategory: import('@vmscloud/moz-ui-chart-core').ChartCategory | undefined;
|
|
68
|
+
chartType: import('@vmscloud/moz-ui-chart-core').ChartType | undefined;
|
|
69
|
+
useZoomX: boolean;
|
|
70
|
+
useZoomY: boolean;
|
|
71
|
+
chartOptionModal: boolean;
|
|
72
|
+
chartFilterModel: boolean;
|
|
73
|
+
initializeDefinition: (initial
|
|
74
|
+
/**
|
|
75
|
+
* MOVED — 원본: components/frontend/moz-ui-chart/src/components/EChartPopup.vue (2026-09-14)
|
|
76
|
+
* 팝업 창(/chartPopup/:key) 페이지 컴포넌트. opener 가 보낸 payload 로 차트를 그린다.
|
|
77
|
+
*/
|
|
78
|
+
?: boolean) => void;
|
|
79
|
+
chartKey: string | undefined;
|
|
80
|
+
customYAxisForSeriesType: string[];
|
|
81
|
+
clickChartPopup: () => void;
|
|
82
|
+
useChartPopupIcon: boolean | undefined;
|
|
83
|
+
onClickLegend: (params: any) => void;
|
|
84
|
+
chrome: import('@vmscloud/moz-ui-chart-core').ChartChrome | null;
|
|
85
|
+
}, {}, {}, {}, {
|
|
86
|
+
itemsSource: Record<string, any>[];
|
|
87
|
+
chartDef: import('@vmscloud/moz-ui-chart-core').MozEChartOptions;
|
|
88
|
+
useToolBox: boolean;
|
|
89
|
+
useChartSetting: boolean;
|
|
90
|
+
useChartPopupIcon: boolean;
|
|
91
|
+
useStackBarHover: boolean;
|
|
92
|
+
}> | null;
|
|
93
|
+
}, HTMLDivElement>;
|
|
94
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChartField, ViewDef, ChartField as ChartFieldType } from '@vmscloud/moz-ui-chart-core';
|
|
2
|
+
/** ViewDefinitionPanel props — 레거시 1:1 */
|
|
3
|
+
export interface ViewDefinitionPanelProps {
|
|
4
|
+
customRule?: (type: 'column' | 'row' | 'value' | 'source', fieldsArray: ChartFieldType[], field: ChartFieldType) => boolean;
|
|
5
|
+
disableSourceField?: boolean;
|
|
6
|
+
disableColumnField?: boolean;
|
|
7
|
+
disableRowField?: boolean;
|
|
8
|
+
disableValueField?: boolean;
|
|
9
|
+
disableAggregate?: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare const _default: import('vue').DefineComponent<{
|
|
12
|
+
definition: ViewDef;
|
|
13
|
+
} & ViewDefinitionPanelProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
14
|
+
change: (field: ChartField) => any;
|
|
15
|
+
"update:definition": (value: ViewDef) => any;
|
|
16
|
+
}, string, import('vue').PublicProps, Readonly<{
|
|
17
|
+
definition: ViewDef;
|
|
18
|
+
} & ViewDefinitionPanelProps> & Readonly<{
|
|
19
|
+
onChange?: ((field: ChartField) => any) | undefined;
|
|
20
|
+
"onUpdate:definition"?: ((value: ViewDef) => any) | undefined;
|
|
21
|
+
}>, {
|
|
22
|
+
customRule: (type: "column" | "row" | "value" | "source", fieldsArray: ChartFieldType[], field: ChartFieldType) => boolean;
|
|
23
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
24
|
+
hostRef: HTMLDivElement;
|
|
25
|
+
}, HTMLDivElement>;
|
|
26
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppContext } from 'vue';
|
|
2
|
+
export declare class VueRenderer {
|
|
3
|
+
private appContext;
|
|
4
|
+
private apps;
|
|
5
|
+
setAppContext(ctx: AppContext): void;
|
|
6
|
+
mountInstance(container: HTMLElement, slot: (props: Record<string, unknown>) => unknown, initialProps: Record<string, unknown>): {
|
|
7
|
+
update: (props: Record<string, unknown>) => void;
|
|
8
|
+
destroy: () => void;
|
|
9
|
+
};
|
|
10
|
+
unmountAll(): void;
|
|
11
|
+
get size(): number;
|
|
12
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
interface IUserLayout {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
importDef: (value: any) => void;
|
|
6
|
+
exportDef: () => any;
|
|
7
|
+
strict?: boolean;
|
|
8
|
+
dependencies?: Ref<any>;
|
|
9
|
+
manualLifeCycle?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 해당 인스턴스는 반드시 Vue Setup 내에서 선언되어야 함. 그래야만 페이지 이동시 onBeforeUnmount내의 onDispose가 호출되어 인스턴스를 정리할 수 있음.
|
|
13
|
+
*/
|
|
14
|
+
export declare class UserLayoutInstance {
|
|
15
|
+
uniqueId: string;
|
|
16
|
+
private _id;
|
|
17
|
+
private _type;
|
|
18
|
+
private _default;
|
|
19
|
+
private _importDef;
|
|
20
|
+
private _exportDef;
|
|
21
|
+
private _pendingDef;
|
|
22
|
+
private _pending;
|
|
23
|
+
dispose: () => void;
|
|
24
|
+
setApplied: (value: boolean) => void;
|
|
25
|
+
strict: boolean;
|
|
26
|
+
dependencies: Ref<any> | null;
|
|
27
|
+
get pending(): boolean;
|
|
28
|
+
set pending(value: boolean);
|
|
29
|
+
get id(): string;
|
|
30
|
+
get type(): string;
|
|
31
|
+
get default(): any;
|
|
32
|
+
set default(value: any);
|
|
33
|
+
get current(): any;
|
|
34
|
+
set current(value: any);
|
|
35
|
+
setDefaultToCurrent(): void;
|
|
36
|
+
constructor({ id, type, exportDef, importDef, strict, dependencies, manualLifeCycle }: IUserLayout);
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UserLayoutInstance } from './UserLayoutInstance';
|
|
2
|
+
/**
|
|
3
|
+
* 호스트 앱이 provide 하는 userLayout 모듈 계약
|
|
4
|
+
* - register: 레이아웃 인스턴스 등록
|
|
5
|
+
* - currentPreset: 현재 선택된 프리셋
|
|
6
|
+
*/
|
|
7
|
+
export interface UserLayoutModuleContract {
|
|
8
|
+
register(instance: UserLayoutInstance): void;
|
|
9
|
+
currentPreset: any;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* userLayout 모듈을 주입받아 사용합니다. 모듈이 제공되지 않으면 기본 구현(no-op)을 반환합니다.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useUserLayoutModule: () => UserLayoutModuleContract;
|
|
15
|
+
export { UserLayoutInstance };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("@vmscloud/moz-ui-chart-core/echarts-stat");module.exports=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "@vmscloud/moz-ui-chart-core/echarts-stat";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vmscloud/moz-ui-chart-core/echarts/charts");Object.keys(e).forEach(t=>{"default"===t||Object.prototype.hasOwnProperty.call(exports,t)||Object.defineProperty(exports,t,{enumerable:!0,get:()=>e[t]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/charts";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/charts";
|
package/dist/echarts.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function e(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const t=e(require("@vmscloud/moz-ui-chart-core/echarts"));module.exports=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vmscloud/moz-ui-chart-core/echarts/components");Object.keys(e).forEach(t=>{"default"===t||Object.prototype.hasOwnProperty.call(exports,t)||Object.defineProperty(exports,t,{enumerable:!0,get:()=>e[t]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/components";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/components";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vmscloud/moz-ui-chart-core/echarts/core");Object.keys(e).forEach(t=>{"default"===t||Object.prototype.hasOwnProperty.call(exports,t)||Object.defineProperty(exports,t,{enumerable:!0,get:()=>e[t]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/core";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/core";
|
package/dist/echarts.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vmscloud/moz-ui-chart-core/echarts/renderers");Object.keys(e).forEach(r=>{"default"===r||Object.prototype.hasOwnProperty.call(exports,r)||Object.defineProperty(exports,r,{enumerable:!0,get:()=>e[r]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/renderers";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vmscloud/moz-ui-chart-core/echarts/renderers";
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=Object.defineProperty,t=(t,o,r)=>((t,o,r)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[o]=r)(t,"symbol"!=typeof o?o+"":o,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),r=require("@vmscloud/moz-ui-chart-core"),i=require("vue-router");class l{constructor(){t(this,"appContext",null),t(this,"apps",new Set)}setAppContext(e){this.appContext=e}mountInstance(e,t,r){const i=o.reactive({...r}),l=o.createApp({render:()=>t(i)});return this.appContext&&(l._context.provides={...this.appContext.provides},l._context.components={...this.appContext.components},l._context.directives={...this.appContext.directives},l._context.config.globalProperties={...this.appContext.config.globalProperties}),l.mount(e),this.apps.add(l),{update:e=>{Object.assign(i,e)},destroy:()=>{this.apps.delete(l),l.unmount()}}}unmountAll(){for(const e of this.apps)try{e.unmount()}catch{}this.apps.clear()}get size(){return this.apps.size}}class n{constructor({id:e,type:i,exportDef:l,importDef:n,strict:a,dependencies:u,manualLifeCycle:s}){t(this,"uniqueId"),t(this,"_id"),t(this,"_type"),t(this,"_default"),t(this,"_importDef"),t(this,"_exportDef"),t(this,"_pendingDef"),t(this,"_pending"),t(this,"dispose",()=>{}),t(this,"setApplied",()=>{}),t(this,"strict"),t(this,"dependencies"),this.uniqueId=r.generateUUID(),this._id=e,this._type=i,this._importDef=n,this._exportDef=l,this._default=l(),this._pending=!1,this._pendingDef=null,this.strict=a??!1,this.dependencies=u??null,s||o.onBeforeUnmount(()=>{this.dispose()})}get pending(){return this._pending}set pending(e){if(this._pending=e,!e&&this._pendingDef)try{this._importDef(this._pendingDef),this.setApplied(!0)}catch(t){}finally{this._pendingDef=null}}get id(){return this._id}get type(){return this._type}get default(){return this._default}set default(e){this._default=e}get current(){return this._exportDef()}set current(e){this.pending?this._pendingDef=e:(this._importDef(e),this.setApplied(!0))}setDefaultToCurrent(){this._default=this._exportDef()}}const a=()=>o.inject("user-layout-module",{register:()=>{},currentPreset:o.ref(null)}),u=Symbol("MozChartLocale");function s(){const e=o.inject(u,null);return e||o.computed(()=>r.koKR)}const p=o.defineComponent({name:"ChartLocaleProvider",props:{locale:{type:Object,default:()=>r.koKR}},setup:(e,{slots:t})=>(o.provide(u,o.computed(()=>e.locale)),()=>{var e;return null==(e=t.default)?void 0:e.call(t)})});function d(){const e=s(),t=i.useRouter(),l=o.ref("");let n=null;const a=()=>{null==n||n.close(),n=null};return o.onUnmounted(()=>a()),{openChartPopup:async(o,i,a)=>{l.value=a??e.value.Chart.chartPopup,null==n||n.close();const u=t.resolve({path:`/chartPopup/${i}`,query:{}}).href;n=r.openChartPopupWindow({href:u,name:i,payload:o,title:l.value,onBlocked:()=>r.showMessage(e.value.Chart.errorMessage,!1)})},closePopup:a,chartPopupTitle:l}}function c(){const e=o.ref([]),t=o.ref({}),i=o.ref({fields:[],columnFields:[],rowFields:[],valueFields:[]}),l=o.ref([]),n=o.ref(""),a=o.ref({});let u=null;return o.onMounted(()=>{u=r.listenChartPopupPayload(o=>{e.value=o.itemsSource,t.value=o.chartDef,i.value=o.viewDef,l.value=o.filterDef,a.value=o.chartDefTemplate??{},o.title&&(n.value=o.title)})}),o.onUnmounted(()=>null==u?void 0:u()),{itemsSource:e,chartDef:t,viewDef:i,filterDef:l,chartPopupTitle:n,chartDefTemplate:a}}const h=["data-chart-id"],f=o.defineComponent({__name:"EChart",props:o.mergeModels({id:{},itemsSource:{default:()=>[]},isFetching:{type:Boolean},chartDef:{default:()=>({})},chartDefTemplate:{},useToolBox:{type:Boolean,default:!0},useChartPopupIcon:{type:Boolean,default:!1},useChartSetting:{type:Boolean,default:!0},chartPopupTitle:{},useStackBarHover:{type:Boolean,default:!0},onInitialized:{}},{viewDef:{default:()=>({fields:[],rowFields:[],columnFields:[],valueFields:[]})},viewDefModifiers:{},filterDef:{default:()=>[]},filterDefModifiers:{}}),emits:o.mergeModels(["update:chartDef"],["update:viewDef","update:filterDef"]),setup(e,{expose:t,emit:i}){const u=e,p=i,c=o.useModel(e,"viewDef"),f=o.useModel(e,"filterDef"),m=o.ref(),g=o.useSlots(),v=s(),{register:C}=a(),{openChartPopup:D}=d(),y=new l,b=o.getCurrentInstance();b&&y.setAppContext(b.appContext);let P=null,x=null;const w=["tool-left","tool-items","tool-items-after"];function _(e){return(t,o)=>{const r=y.mountInstance(t,t=>{var o;return null==(o=g[e])?void 0:o.call(g,t)},o??{});return{update:e=>r.update(e??{}),dispose:()=>r.destroy()}}}o.onMounted(()=>{const e={};for(const o of w)g[o]&&(e[o]=_(o));const t=new r.ChartChrome(m.value,{id:u.id,itemsSource:u.itemsSource,chartDef:u.chartDef,viewDef:c.value,filterDef:f.value,chartDefTemplate:u.chartDefTemplate,isFetching:u.isFetching,useToolBox:u.useToolBox,useChartSetting:u.useChartSetting,useChartPopupIcon:u.useChartPopupIcon,chartPopupTitle:u.chartPopupTitle,useStackBarHover:u.useStackBarHover,onInitialized:u.onInitialized},{locale:v.value,slots:e,onOpenPopup:(e,t,o)=>D(e,t,o)});t.on("chartDef:change",e=>p("update:chartDef",e)),t.on("viewDef:change",e=>{o.toRaw(c.value)!==o.toRaw(e)&&(c.value=e)}),t.on("filterDef:change",e=>{o.toRaw(f.value)!==o.toRaw(e)?f.value=e:null==b||b.emit("update:filterDef",e)}),P=t,t.mount(),x=new n({id:u.id,type:"chart",importDef:e=>null==P?void 0:P.importDefinition(e),exportDef:()=>P?P.getDefinitionWithoutData():{}}),C(x)}),o.watch(()=>u.itemsSource,e=>null==P?void 0:P.update({itemsSource:e})),o.watch(()=>u.chartDef,e=>null==P?void 0:P.update({chartDef:e})),o.watch(()=>u.chartDefTemplate,e=>null==P?void 0:P.update({chartDefTemplate:e}),{deep:!0}),o.watch(c,e=>null==P?void 0:P.update({viewDef:e}),{deep:!0}),o.watch(f,e=>null==P?void 0:P.update({filterDef:e}),{deep:!0}),o.watch(()=>[u.isFetching,u.useToolBox,u.useChartSetting,u.useChartPopupIcon,u.chartPopupTitle,u.useStackBarHover,u.onInitialized,u.id],()=>null==P?void 0:P.update({id:u.id,isFetching:u.isFetching,useToolBox:u.useToolBox,useChartSetting:u.useChartSetting,useChartPopupIcon:u.useChartPopupIcon,chartPopupTitle:u.chartPopupTitle,useStackBarHover:u.useStackBarHover,onInitialized:u.onInitialized})),o.watch(v,e=>null==P?void 0:P.setLocale(e)),o.onBeforeUnmount(()=>{null==P||P.destroy(),P=null,y.unmountAll()});return t({get chartCategorySource(){return null==P?void 0:P.mozEChart.chartCategorySource},get chartTypeSource(){return null==P?void 0:P.mozEChart.chartTypeSource},get mozEChart(){return null==P?void 0:P.mozEChart},get chartRef(){return(null==P?void 0:P.echarts)??null},get state(){return null==P?void 0:P.state},get chartCategory(){return null==P?void 0:P.chartCategory},get chartType(){return null==P?void 0:P.chartType},get useZoomX(){return!!(null==P?void 0:P.mozEChart.dataZoomComputedProperty("x").get())},set useZoomX(e){null==P||P.mozEChart.dataZoomComputedProperty("x").set(e),null==P||P.syncOption()},get useZoomY(){return!!(null==P?void 0:P.mozEChart.dataZoomComputedProperty("y").get())},set useZoomY(e){null==P||P.mozEChart.dataZoomComputedProperty("y").set(e),null==P||P.syncOption()},get chartOptionModal(){return!!(null==P?void 0:P.optionModalOpen)},set chartOptionModal(e){P&&(P.optionModalOpen=e)},get chartFilterModel(){return!!(null==P?void 0:P.filterModalOpen)},set chartFilterModel(e){P&&(P.filterModalOpen=e)},initializeDefinition:e=>null==P?void 0:P.initializeDefinition(e),get chartKey(){return null==P?void 0:P.chartKey},get customYAxisForSeriesType(){var e;return(null==(e=null==P?void 0:P.mozEChart.chartModule.series)?void 0:e.customYAxisComputedProperty().get())??[]},set customYAxisForSeriesType(e){var t;null==(t=null==P?void 0:P.mozEChart.chartModule.series)||t.customYAxisComputedProperty().set(e),null==P||P.syncOption()},clickChartPopup:()=>null==P?void 0:P.clickChartPopup(),get useChartPopupIcon(){return u.useChartPopupIcon},onClickLegend:e=>null==P?void 0:P.onClickLegend(e),get chrome(){return P}}),(t,r)=>(o.openBlock(),o.createElementBlock("div",{ref_key:"hostRef",ref:m,class:"mzch-vue-echart-host","data-chart-id":e.id},null,8,h))}}),m={class:"chart-popup-wrapper"},g=((e,t)=>{const o=e.__vccOpts||e;for(const[r,i]of t)o[r]=i;return o})(o.defineComponent({__name:"EChartPopup",setup(e){const{itemsSource:t,chartDef:r,viewDef:i,filterDef:l,chartDefTemplate:n}=c(),a=e=>{e.dataZoomComputedProperty("X").set(!0),e.dataZoomComputedProperty("Y").set(!0)};return(e,u)=>(o.openBlock(),o.createElementBlock("div",m,[o.createVNode(f,{id:"chart_popup",onInitialized:a,itemsSource:o.unref(t),chartDef:o.unref(r),"onUpdate:chartDef":u[0]||(u[0]=e=>o.isRef(r)?r.value=e:null),viewDef:o.unref(i),"onUpdate:viewDef":u[1]||(u[1]=e=>o.isRef(i)?i.value=e:null),filterDef:o.unref(l),"onUpdate:filterDef":u[2]||(u[2]=e=>o.isRef(l)?l.value=e:null),chartDefTemplate:o.unref(n),ref:"chartPopupRef","use-tool-box":!1},null,8,["itemsSource","chartDef","viewDef","filterDef","chartDefTemplate"])]))}}),[["__scopeId","data-v-8e21a7ac"]]),v=o.defineComponent({__name:"ViewDefinitionPanel",props:o.mergeModels({customRule:{type:Function,default:()=>!0},disableSourceField:{type:Boolean},disableColumnField:{type:Boolean},disableRowField:{type:Boolean},disableValueField:{type:Boolean},disableAggregate:{type:Boolean}},{definition:{required:!0},definitionModifiers:{}}),emits:o.mergeModels(["change"],["update:definition"]),setup(e,{emit:t}){const i=e,l=t,n=o.useModel(e,"definition"),a=o.ref(),u=s();let p=null;return o.onMounted(()=>{p=new r.ViewDefinitionPanelHost(a.value,{definition:n.value,customRule:i.customRule,disableSourceField:i.disableSourceField,disableColumnField:i.disableColumnField,disableRowField:i.disableRowField,disableValueField:i.disableValueField,disableAggregate:i.disableAggregate,onChange:e=>l("change",e)},{locale:u.value}).mount()}),o.watch(()=>[i.disableSourceField,i.disableColumnField,i.disableRowField,i.disableValueField,i.disableAggregate],()=>null==p?void 0:p.update({disableSourceField:i.disableSourceField,disableColumnField:i.disableColumnField,disableRowField:i.disableRowField,disableValueField:i.disableValueField,disableAggregate:i.disableAggregate})),o.watch(n,e=>null==p?void 0:p.update({definition:e}),{deep:!0}),o.watch(u,e=>null==p?void 0:p.setLocale(e)),o.onBeforeUnmount(()=>{null==p||p.destroy(),p=null}),(e,t)=>(o.openBlock(),o.createElementBlock("div",{ref_key:"hostRef",ref:a,class:"mzch-vue-view-def-host"},null,512))}});Object.defineProperty(exports,"Aggregate",{enumerable:!0,get:()=>r.Aggregate}),Object.defineProperty(exports,"ChartChrome",{enumerable:!0,get:()=>r.ChartChrome}),Object.defineProperty(exports,"DataType",{enumerable:!0,get:()=>r.DataType}),Object.defineProperty(exports,"MozEChart",{enumerable:!0,get:()=>r.MozEChart}),Object.defineProperty(exports,"RENDER_LIMIT",{enumerable:!0,get:()=>r.RENDER_LIMIT}),Object.defineProperty(exports,"enUS",{enumerable:!0,get:()=>r.enUS}),Object.defineProperty(exports,"jaJP",{enumerable:!0,get:()=>r.jaJP}),Object.defineProperty(exports,"koKR",{enumerable:!0,get:()=>r.koKR}),Object.defineProperty(exports,"showConfirm",{enumerable:!0,get:()=>r.showConfirm}),Object.defineProperty(exports,"showDialog",{enumerable:!0,get:()=>r.showDialog}),Object.defineProperty(exports,"showMessage",{enumerable:!0,get:()=>r.showMessage}),Object.defineProperty(exports,"zhCN",{enumerable:!0,get:()=>r.zhCN}),exports.ChartLocaleProvider=p,exports.EChart=f,exports.EChartPopup=g,exports.MOZ_CHART_LOCALE_KEY=u,exports.UserLayoutInstance=n,exports.ViewDefinitionPanel=v,exports.useChartLocale=s,exports.useEChartPopup=d,exports.useEChartPopupView=c,exports.useUserLayoutModule=a;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as EChart } from './EChart.vue';
|
|
2
|
+
export { default as EChartPopup } from './EChartPopup.vue';
|
|
3
|
+
export { default as ViewDefinitionPanel } from './ViewDefinitionPanel.vue';
|
|
4
|
+
export { useEChartPopup, useEChartPopupView } from './EChartPopup';
|
|
5
|
+
export type { EChartPopupData } from './EChartPopup';
|
|
6
|
+
export type { IEChartExposed } from './types';
|
|
7
|
+
export * from './contracts';
|
|
8
|
+
export * from './locale';
|
|
9
|
+
export { MozEChart, DataType, Aggregate, ChartChrome, showConfirm, showDialog, showMessage, RENDER_LIMIT } from '@vmscloud/moz-ui-chart-core';
|
|
10
|
+
export type { ChartCategory, ChartType, MozEChartOptions, MozEChartTemplateOptions, ChartField, ViewDef, ChartDefinition, FilterDef, ChartPopupPayload, ChartChromeProps, ChartDefinitionWithoutData, } from '@vmscloud/moz-ui-chart-core';
|