forked from elastic/kibana
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vega_info_message.tsx
45 lines (38 loc) · 1.37 KB
/
vega_info_message.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import React, { useMemo } from 'react';
import { parse } from 'hjson';
import { ExperimentalMapLayerInfo, shouldShowMapLayerInfo } from './experimental_map_vis_info';
import {
DeprecatedHistogramIntervalInfo,
shouldShowDeprecatedHistogramIntervalInfo,
} from './deprecated_interval_info';
import type { Vis } from '../../../../visualizations/public';
import type { VegaSpec } from '../data_model/types';
const parseSpec = (spec: string) => {
if (spec) {
try {
return parse(spec, { legacyRoot: false, keepWsc: true });
} catch (e) {
// spec is invalid
}
}
};
const InfoMessage = ({ spec }: { spec: string }) => {
const vegaSpec: VegaSpec = useMemo(() => parseSpec(spec), [spec]);
if (!vegaSpec) {
return null;
}
return (
<>
{shouldShowMapLayerInfo(vegaSpec) && <ExperimentalMapLayerInfo />}
{shouldShowDeprecatedHistogramIntervalInfo(vegaSpec) && <DeprecatedHistogramIntervalInfo />}
</>
);
};
export const getInfoMessage = (vis: Vis) => <InfoMessage spec={vis.params.spec} />;