@splunk/visualizations 27.5.0 → 28.0.0
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/Area.config.js +19 -21
- package/Area.config.js.map +3 -3
- package/Area.js +54 -32
- package/Area.js.map +3 -3
- package/Bar.config.js +18 -21
- package/Bar.config.js.map +3 -3
- package/Bar.js +48 -31
- package/Bar.js.map +3 -3
- package/Bubble.config.js +39 -44
- package/Bubble.config.js.map +4 -4
- package/Bubble.js +69 -51
- package/Bubble.js.map +4 -4
- package/CHANGELOG.external.md +35 -7
- package/ChoroplethSvg.config.js +47 -43
- package/ChoroplethSvg.config.js.map +4 -4
- package/ChoroplethSvg.js +72 -45
- package/ChoroplethSvg.js.map +4 -4
- package/Column.config.js +15 -20
- package/Column.config.js.map +3 -3
- package/Column.js +42 -29
- package/Column.js.map +3 -3
- package/Ellipse.config.js +16 -7
- package/Ellipse.config.js.map +2 -2
- package/Ellipse.js +45 -19
- package/Ellipse.js.map +2 -2
- package/Events.config.js +38 -27
- package/Events.config.js.map +4 -4
- package/Events.js +113 -97
- package/Events.js.map +4 -4
- package/FEATUREFLAGS.md +9 -9
- package/FillerGauge.config.js +20 -13
- package/FillerGauge.config.js.map +3 -3
- package/FillerGauge.js +76 -27
- package/FillerGauge.js.map +4 -4
- package/Image.config.js +5 -6
- package/Image.config.js.map +2 -2
- package/Image.js +29 -14
- package/Image.js.map +2 -2
- package/Line.config.js +15 -20
- package/Line.config.js.map +3 -3
- package/Line.js +50 -31
- package/Line.js.map +3 -3
- package/LinkGraph.config.js +39 -46
- package/LinkGraph.config.js.map +3 -3
- package/LinkGraph.js +70 -50
- package/LinkGraph.js.map +3 -3
- package/MIGRATION.md +169 -40
- package/Map.config.js +36 -13
- package/Map.config.js.map +4 -4
- package/Map.js +170 -105
- package/Map.js.map +4 -4
- package/Markdown.config.js +4 -5
- package/Markdown.config.js.map +2 -2
- package/Markdown.js +117 -72
- package/Markdown.js.map +3 -3
- package/MarkerGauge.config.js +14 -12
- package/MarkerGauge.config.js.map +3 -3
- package/MarkerGauge.js +107 -69
- package/MarkerGauge.js.map +4 -4
- package/ParallelCoordinates.config.js +14 -12
- package/ParallelCoordinates.config.js.map +3 -3
- package/ParallelCoordinates.js +113 -59
- package/ParallelCoordinates.js.map +3 -3
- package/Pie.config.js +51 -38
- package/Pie.config.js.map +4 -4
- package/Pie.js +109 -85
- package/Pie.js.map +4 -4
- package/Punchcard.config.js +36 -34
- package/Punchcard.config.js.map +4 -4
- package/Punchcard.js +153 -87
- package/Punchcard.js.map +4 -4
- package/README.internal.md +15 -15
- package/README.md +10 -10
- package/Rectangle.config.js +16 -7
- package/Rectangle.config.js.map +2 -2
- package/Rectangle.js +45 -19
- package/Rectangle.js.map +2 -2
- package/Sankey.config.js +69 -17
- package/Sankey.config.js.map +4 -4
- package/Sankey.js +178 -49
- package/Sankey.js.map +4 -4
- package/Scatter.config.js +37 -42
- package/Scatter.config.js.map +3 -3
- package/Scatter.js +70 -53
- package/Scatter.js.map +3 -3
- package/SingleValue.config.js +32 -18
- package/SingleValue.config.js.map +4 -4
- package/SingleValue.js +237 -93
- package/SingleValue.js.map +4 -4
- package/SingleValueBasic.js +1 -0
- package/SingleValueBasic.js.map +2 -2
- package/SingleValueIcon.config.js +22 -11
- package/SingleValueIcon.config.js.map +2 -2
- package/SingleValueIcon.js +84 -28
- package/SingleValueIcon.js.map +2 -2
- package/SingleValueRadial.config.js +34 -23
- package/SingleValueRadial.config.js.map +3 -3
- package/SingleValueRadial.js +89 -48
- package/SingleValueRadial.js.map +4 -4
- package/SparkLine.js +153 -49
- package/SparkLine.js.map +2 -2
- package/Table.config.js +71 -51
- package/Table.config.js.map +3 -3
- package/Table.js +282 -145
- package/Table.js.map +3 -3
- package/Timeline.config.js +36 -34
- package/Timeline.config.js.map +4 -4
- package/Timeline.js +67 -59
- package/Timeline.js.map +4 -4
- package/common/Charting.js +1 -0
- package/common/Charting.js.map +2 -2
- package/common/ChartingApi.js +1 -0
- package/common/ChartingApi.js.map +1 -1
- package/common/DocExampleWithVizSandbox.js +7 -2
- package/common/DocExampleWithVizSandbox.js.map +2 -2
- package/common/EventsDoc.js +31 -5
- package/common/EventsDoc.js.map +4 -4
- package/common/GaugeMajorTicks.js +4 -1
- package/common/GaugeMajorTicks.js.map +2 -2
- package/common/GaugeValueMarker.js +31 -3
- package/common/GaugeValueMarker.js.map +4 -4
- package/common/OptionsDoc.js +4 -1
- package/common/OptionsDoc.js.map +2 -2
- package/common/OverviewDoc.js +66 -50
- package/common/OverviewDoc.js.map +4 -4
- package/common/SplunkVisualization.js +1 -0
- package/common/SplunkVisualization.js.map +1 -1
- package/common/SplunkVisualizationApi.js +1 -0
- package/common/SplunkVisualizationApi.js.map +1 -1
- package/common/ThemedDefaults.js +67 -0
- package/common/ThemedDefaults.js.map +7 -0
- package/common/ThemesDoc.js +6 -9
- package/common/ThemesDoc.js.map +2 -2
- package/common/chartingUtils.js +1 -0
- package/common/chartingUtils.js.map +2 -2
- package/common/docUtils.js +6 -1
- package/common/docUtils.js.map +2 -2
- package/common/gaugeUtils.js +6 -1
- package/common/gaugeUtils.js.map +2 -2
- package/common/shapeUtils.js +6 -4
- package/common/shapeUtils.js.map +2 -2
- package/common/utils/configUtils.js +4 -5
- package/common/utils/configUtils.js.map +2 -2
- package/common/utils/dataUtils.js +1 -0
- package/common/utils/dataUtils.js.map +2 -2
- package/common/utils/featureFlagUtils.js +1 -0
- package/common/utils/featureFlagUtils.js.map +1 -1
- package/common/utils/hocUtils.js +1 -0
- package/common/utils/hocUtils.js.map +1 -1
- package/common/utils/mapUtils.js +35 -22
- package/common/utils/mapUtils.js.map +4 -4
- package/common/utils/singleValueUtils.js +8 -2
- package/common/utils/singleValueUtils.js.map +2 -2
- package/common/utils/styleUtils.js +1 -0
- package/common/utils/styleUtils.js.map +1 -1
- package/common/utils/testHelper.js +1 -0
- package/common/utils/testHelper.js.map +1 -1
- package/common/utils/trellisUtils.js +1 -0
- package/common/utils/trellisUtils.js.map +1 -1
- package/common/utils/urlUtils.js +1 -0
- package/common/utils/urlUtils.js.map +1 -1
- package/common/withDashboardViz.js +25 -8
- package/common/withDashboardViz.js.map +2 -2
- package/package.json +37 -35
package/Column.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["src/Column/index.ts", "esm-externals:lodash", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/visualization-color-palettes", "esm-externals:react", "esm-externals:prop-types", "esm-externals:react-event-listener", "esm-externals:@splunk/visualizations-shared/i18n", "esm-externals:@splunk/charting-bundle", "esm-externals:@splunk/visualization-context/TimezoneContext", "esm-externals:@splunk/visualizations-shared/style", "esm-externals:styled-components", "esm-externals:@splunk/visualizations-shared/Message", "esm-externals:@splunk/themes/useSplunkTheme", "esm-externals:@splunk/visualizations-shared/themeUtils", "esm-externals:@splunk/visualization-schemas", "src/common/ChartingApi.ts", "src/common/hooks/usePrevious.ts", "src/common/hooks/useEventCallback.tsx", "esm-externals:@splunk/visualizations-shared/numberUtils", "src/common/interfaces/DataSource.ts", "src/common/interfaces/VizActionHandler.ts", "src/common/utils/dataUtils.ts", "esm-externals:@splunk/visualization-context/FeatureFlagContext", "src/common/hooks/useTrellisEnabled.ts", "src/common/components/TrellisTitle.tsx", "src/common/Charting.tsx", "esm-externals:@splunk/visualizations-shared/simpleXMLOptions", "esm-externals:@splunk/visualization-icons", "esm-externals:@splunk/visualization-icons/placeholders", "esm-externals:@splunk/themes/pick", "esm-externals:@splunk/themes/variables", "esm-externals:@splunk/visualizations-shared/configUtils", "src/common/utils/configUtils.ts", "src/common/editorConfig/AxesChartDataConfig.ts", "src/common/editorConfig/TrellisEditors.ts", "src/common/editorConfig/AxesChartDataDisplay.ts", "src/common/editorConfig/BackgroundColor.ts", "src/common/editorConfig/AxesChartColorAndStyle.ts", "src/common/editorConfig/AxesChartLegend.ts", "src/common/editorConfig/AxesChartXGridAndLabels.ts", "src/common/editorConfig/AxesChartYGridAndLabels.ts", "src/common/editorConfig/AxesChartY2GridAndLabels.ts", "src/Column/config.ts", "esm-externals:@splunk/themes/getSettingsFromThemedProps", "esm-externals:@splunk/visualization-encoding/Options", "esm-externals:@splunk/visualizations-shared/SanitizeProps", "esm-externals:@splunk/moment", "esm-externals:@splunk/visualizations-shared/hocUtils", "esm-externals:@splunk/visualizations-shared/JSONSchemaUtils", "esm-externals:@splunk/async-dynamic-options-evaluator", "esm-externals:@splunk/ui-utils/id", "src/common/SplunkVisualization.tsx", "src/common/hooks/getSorting.ts", "src/common/hooks/getPagination.ts", "src/common/hooks/useDeepMemo.ts", "esm-externals:@splunk/visualizations-shared/colorUtils", "esm-externals:@splunk/visualizations-shared/SizeAwareWrapper", "src/common/hocs/FixedSizeContainer.tsx", "src/common/components/MissingPropsMessage.tsx", "src/common/utils/hocUtils.ts", "src/common/hocs/withEditModeCover.tsx", "src/common/components/IconPlaceholder.tsx", "src/common/hocs/withPlaceholder.tsx", "src/common/hooks/useGetXAndYFields.tsx", "src/common/hooks/useDownsampleDataSources.tsx", "esm-externals:@splunk/visualization-context/FeatureFlags", "src/common/utils/featureFlagUtils.ts", "esm-externals:@splunk/visualizations-shared/trellisUtils", "src/common/utils/trellisUtils.ts", "src/common/withDashboardViz.tsx", "esm-externals:@splunk/visualizations-shared/propUtils", "src/common/chartingUtils.ts", "src/Column/columnUtils.ts", "esm-externals:@splunk/react-ui/Paginator", "esm-externals:@splunk/themes", "src/common/hocs/withTrellis.tsx", "src/Column/Column.tsx"],
|
|
4
|
-
"sourcesContent": ["export * from './Column';\nexport { default } from './Column';\n", "\nimport * as defaultImport from \"lodash\";\nexport * from \"lodash\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-color-palettes\";\nexport * from \"@splunk/visualization-color-palettes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"prop-types\";\nexport * from \"prop-types\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"react-event-listener\";\nexport * from \"react-event-listener\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/i18n\";\nexport * from \"@splunk/visualizations-shared/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/charting-bundle\";\nexport * from \"@splunk/charting-bundle\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-context/TimezoneContext\";\nexport * from \"@splunk/visualization-context/TimezoneContext\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/style\";\nexport * from \"@splunk/visualizations-shared/style\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/Message\";\nexport * from \"@splunk/visualizations-shared/Message\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes/useSplunkTheme\";\nexport * from \"@splunk/themes/useSplunkTheme\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/themeUtils\";\nexport * from \"@splunk/visualizations-shared/themeUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-schemas\";\nexport * from \"@splunk/visualization-schemas\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import jsCharting from '@splunk/charting-bundle';\n\ninterface Point {\n /**\n * Valid xValue of the chart\n *\n * @type {string|number}\n * @memberof Point\n */\n xValue?: string | number;\n\n /**\n * Valid seriesName for a chart\n *\n * @type {string}\n * @memberof Point\n */\n seriesName?: string;\n}\n\nexport class ChartingApiFunctional {\n // eslint-disable-next-line no-useless-constructor\n constructor(private chartRef: any) {}\n\n /**\n * Allows users to programmatically highlight a point on the chart\n *\n * @memberof ChartingApiFunctional\n */\n highlight({ xValue, seriesName }: Point = { xValue: '', seriesName: '' }): void {\n this.getChart().highlight(xValue, seriesName);\n }\n\n /**\n * Allows users to programmatically unhighlight all points on the chart\n *\n * @memberof ChartingApiFunctional\n */\n unHighlight(): void {\n this.getChart().unHighlight();\n }\n\n // returns chart object\n getChart(): jsCharting {\n return this.chartRef?.current;\n }\n}\n", "import { useEffect, useRef } from 'react';\n\nexport default function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n", "import { useRef, useLayoutEffect, useCallback } from 'react';\n\n/**\n * This is an escape hatch for the case where an event handler function depends on some states that changes too often thus the event handle is recreated frequently which causes bugs in some edge cases.\n *\n * For example if an old callback is called, it may not use the most recent props, but the previous props when that callback was created.\n */\n\ntype Fn<ARGS extends any[], R> = (...args: ARGS) => R;\nconst useEventCallback = <A extends any[], R>(fn: Fn<A, R>): Fn<A, R> => {\n const ref = useRef<Fn<A, R>>(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args: A): R => ref.current(...args), []);\n};\n\nexport default useEventCallback;\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/numberUtils\";\nexport * from \"@splunk/visualizations-shared/numberUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { validSegmentationModes } from '@splunk/visualization-schemas';\n\nexport interface JsonColumnData {\n fields: FieldEntry[] | string[];\n columns: (string | number)[][];\n}\n\nexport type HighlightedSourceMap = Record<string, Record<string, boolean>>;\nexport type TagsMap = Record<string, Record<string, string[]>>;\n\nexport interface Meta {\n totalCount: number;\n sid: string;\n app: string;\n highlighted?: HighlightedSourceMap;\n tags?: TagsMap;\n}\n\nexport const validSortDirs = ['asc', 'desc', 'none'] as const;\nexport type SortDirType = typeof validSortDirs[number];\nexport type SegmentationType = typeof validSegmentationModes[number];\nexport const validOutputModes = ['json_cols', 'json'] as const;\nexport type OutputModeType = typeof validOutputModes[number];\n\nexport interface RequestParams {\n count?: number;\n offset?: number;\n sort?: {\n [sortKey: string]: SortDirType;\n };\n segmentation?: SegmentationType;\n // eslint-disable-next-line camelcase\n output_mode?: OutputModeType;\n}\n\nexport interface DataSource {\n requestParams: Partial<RequestParams>;\n onRequestParamsChange?: (p: Record<string, unknown>) => void;\n data: JsonColumnData;\n error?: { level: string; message: string };\n meta: Partial<Meta>;\n}\n\nexport interface DataSourceMeta {\n requestParams: Partial<RequestParams>;\n meta: Partial<Meta>;\n onRequestParamsChange: (payload: RequestParams) => void;\n}\n", "/* eslint-disable class-methods-use-this */\nexport interface VizActionHandler {\n /**\n * put focus on the visualization\n */\n focus(): void;\n\n /**\n * compute snapshot of this visualization\n */\n snapshot(): Record<string, unknown>; // (This is for pdf export)\n}\n\nexport class DefaultVizActionHandler {\n focus(): void {\n // noop\n }\n\n snapshot(): Record<string, unknown> {\n return null; // noop\n }\n}\n", "import type { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { startsWithNumber } from '@splunk/visualizations-shared/numberUtils';\nimport type { DashboardVizProps, DataSource, VizConfig } from '../interfaces';\nimport { VizBehavior } from '../interfaces';\nimport { ChartEvent } from '../interfaces/ChartEvent';\n\n// TODO: utilize this fn in ParallelCoordinates\n\nexport const convertToArrOfObjects = (columns: (string | any[])[], fields: any[]): any[] => {\n if (!columns || !columns[0] || !columns[0].length) return [];\n\n const data = [];\n\n for (let i = 0; i < columns[0].length; i += 1) {\n const newObj = {};\n fields.forEach((field, index) => {\n const fieldName = typeof field === 'string' ? field : field.name;\n if (columns[index][i] === '') {\n newObj[fieldName] = null;\n } else {\n newObj[fieldName] = columns[index][i];\n }\n });\n data.push(newObj);\n }\n\n return data;\n};\n\n// LTTB algorithm which can be used to downsample time series data while striving to maintain\n// the spikes and overall shape of the chart\n// Copied from https://github.com/sveinn-steinarsson/flot-downsample/blob/0815010016fc94b1bbc6a010afb8aad13ada6d0d/jquery.flot.downsample.js\n// Modifications include:\n// 1) Convert to modern JavaScript(use const, let, and use array.push to push to last element of array)\n// 2) Convert to camel case\n// 3) Convert to TS and also return the indices of the points that are in the downsampled result.\n// 4) Add a new parameter preferredDownsampleIndices that correspond to the indices of points\n// that should be used in case of a tie of the max area in a bucket\nconst largestTriangleThreeBuckets = (\n data: [Date | number, number][],\n threshold: number,\n preferredDownsampleIndices: Set<number>\n): { downsampledData: [Date | number, number][]; downsampledIndices: number[] } => {\n const dataLength = data.length;\n const downsampledIndices = [];\n if (threshold >= dataLength || threshold === 0) {\n const allIndices = data.map((values, index) => index);\n return { downsampledData: data, downsampledIndices: allIndices }; // Nothing to do\n }\n\n const sampled: [Date | number, number][] = [];\n let sampledIndex = 0;\n\n // Bucket size. Leave room for start and end data points\n const every = (dataLength - 2) / (threshold - 2);\n\n let a = 0; // Initially a is the first point in the triangle\n let maxAreaPoint: [Date | number, number];\n let maxArea: number | undefined;\n let area: number | undefined;\n let nextA: number | undefined;\n\n sampled.push(data[a]); // Always add the first point\n downsampledIndices.push(0);\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < threshold - 2; i++) {\n // Calculate point average for next bucket (containing c)\n let avgX = 0;\n let avgY = 0;\n let avgRangeStart = Math.floor((i + 1) * every) + 1;\n let avgRangeEnd = Math.floor((i + 2) * every) + 1;\n avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;\n\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n // eslint-disable-next-line no-plusplus\n for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {\n avgX += Number(data[avgRangeStart][0]); // * 1 enforces Number (value may be Date)\n avgY += data[avgRangeStart][1] * 1;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n\n // Get the range for this bucket\n let rangeOffs = Math.floor((i + 0) * every) + 1;\n const rangeTo = Math.floor((i + 1) * every) + 1;\n\n // Point a\n const pointAX = Number(data[a][0]); // Enforce Number (value may be Date)\n const pointAY = data[a][1] * 1;\n\n // eslint-disable-next-line no-multi-assign\n maxArea = area = -1;\n let maxAreaIndex = rangeOffs;\n\n // eslint-disable-next-line no-plusplus\n for (; rangeOffs < rangeTo; rangeOffs++) {\n // Calculate triangle area over three buckets\n area =\n Math.abs(\n (pointAX - avgX) * (data[rangeOffs][1] - pointAY) -\n (pointAX - Number(data[rangeOffs][0])) * (avgY - pointAY)\n ) * 0.5;\n // Modification: try to downsample the least amount of points possible when there are multiple series\n // If all points in a bucket have the same area, prioritize the one with an x index\n // that also existed from another series so we don't add another point unnecessarily.\n // By default LTTB picks the leftmost point in the bucket\n if (area > maxArea || (area === maxArea && preferredDownsampleIndices.has(rangeOffs))) {\n maxArea = area;\n maxAreaPoint = data[rangeOffs];\n nextA = rangeOffs; // Next a is this b\n // Modification: save the index of the point with the most area\n maxAreaIndex = rangeOffs;\n }\n }\n\n // eslint-disable-next-line no-plusplus\n sampled[sampledIndex++] = maxAreaPoint; // Pick this point from the bucket\n downsampledIndices.push(maxAreaIndex);\n a = nextA; // This a is the next a (chosen b)\n }\n\n // eslint-disable-next-line no-plusplus\n sampled[sampledIndex++] = data[dataLength - 1]; // Always add last\n downsampledIndices.push(dataLength - 1);\n\n return { downsampledData: sampled, downsampledIndices };\n};\n\nexport type DownsampleOptions = { threshold: number } & Pick<DashboardVizProps, 'dataSources' | 'options'>;\n\ntype CoerceYColumnResult = {\n canDownsampleColumn: boolean;\n canLooselyCoerceSomeValues: boolean;\n coercedColumn: number[];\n};\n\n/**\n * Strictly coerces the entire column to numbers if it only consists of numeric strings or numbers. Also determines\n * if at least one of the values in the column can be loosely coerced to a number.\n * If the column cannot be strictly downsampled (if it contains nulls or non-numeric strings), returns an empty array and\n * returns that it cannot downsample the column.\n */\nconst strictlyCoerceYColumn = (\n column: (string | number)[] | number[],\n options: DownsampleOptions['options']\n): CoerceYColumnResult => {\n const isNullCoercionEnabled = options.nullValueDisplay === 'zero';\n // Splunk charting allows for numbers in formats such as negative hex that\n // Number() does not support and also allows loose coercion of hex numbers (but not other formats)\n // We want to identify columns which contain at least one value that can be loosely coerced\n const canLooselyCoerceSomeValues =\n column.findIndex(\n value => startsWithNumber(`${value}`) || (isNullCoercionEnabled && value === null)\n ) >= 0;\n\n // If not all values in column can be strictly coerced to a number, we do not downsample\n const coercedColumn: number[] = [];\n const canDownsampleColumn = !column.some(value => {\n const coercedValue = Number(value);\n const coerceValueToZero = isNullCoercionEnabled && value === null;\n\n // if it can't be parsed or isn't safe, fail\n if (\n Number.isNaN(coercedValue) ||\n coercedValue <= Number.MIN_SAFE_INTEGER ||\n coercedValue >= Number.MAX_SAFE_INTEGER ||\n (typeof value !== 'string' && typeof value !== 'number' && !coerceValueToZero)\n ) {\n return true;\n }\n // save value and continue to next\n coercedColumn.push(coercedValue);\n return false;\n });\n\n return {\n canDownsampleColumn,\n canLooselyCoerceSomeValues,\n coercedColumn: canDownsampleColumn ? coercedColumn : [],\n };\n};\n\n/**\n * Tries to coerce the x-column to numbers or dates, if it is eligible for downsampling.\n * Only strictly increasing x-columns are eligible for downsampling.\n * If the column is not eligible for downsampling, returns an empty array.\n */\nconst strictlyCoerceXColumn = (column: (string | number)[], fieldType: string): Date[] | number[] => {\n if (fieldType === 'number') {\n const coercedXColumn = column.map(xValue => Number(xValue));\n if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {\n return coercedXColumn;\n }\n } else if (fieldType === 'time') {\n const coercedXColumn = column.map(xValue => new Date(xValue));\n if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {\n return coercedXColumn;\n }\n }\n return [];\n};\n\nexport const isDownsamplingEnabledForViz = ({ vizConfig }: { vizConfig: VizConfig }) => {\n return vizConfig.supports?.includes(VizBehavior.DOWNSAMPLING);\n};\n\nexport const calculateThresholdOnRangeSelect = ({\n firstIndex,\n lastIndex,\n dataSources,\n width,\n}: Pick<DashboardVizProps, 'dataSources'> & {\n firstIndex: number;\n lastIndex: number;\n width: number | string;\n}): number => {\n const window = lastIndex - firstIndex + 1;\n const ratio = Math.round(Number(dataSources?.primary?.data?.columns[0]?.length / window) * 10) / 10;\n return Math.round(ratio * Number(width));\n};\n\n/**\n * Calculates the downsampling threshold based on the range selection. If search zoom is enabled or there is no selection,\n * then returns the width of the visualization.\n *\n * Otherwise calculates the threshold based on the ratio of the window selected compared to the size of the non-downsampled\n * data sources. Returns null if the chart event's dataset does not match the passed in primary data source or if the chart is zoomed\n * in for a categorical chart.\n */\nexport const calculateDownsamplingThreshold = ({\n enableSearchZoom,\n dataSources,\n selectChartEvent,\n width,\n xField,\n}: {\n enableSearchZoom: boolean;\n dataSources: Record<string, DataSource> | null;\n selectChartEvent: ChartEvent<'chartRangeSelect'> | null;\n width: number;\n xField: string;\n}): number | null => {\n if (enableSearchZoom || !selectChartEvent) {\n return Number(width);\n }\n\n const primaryDataSource = dataSources?.primary;\n if (!primaryDataSource) {\n return null;\n }\n\n const { startXIndex, endXIndex, currentTarget } = selectChartEvent;\n\n try {\n const xFieldIndex = primaryDataSource?.data?.fields.findIndex(field => {\n const name = typeof field === 'string' ? field : field.name;\n return name === xField;\n });\n const downsampledXFieldIndex = currentTarget.dataSet?.fields.findIndex(field => field === xField);\n\n if (xFieldIndex === -1 || downsampledXFieldIndex === -1) {\n return null;\n }\n\n const fullSeries = primaryDataSource?.data?.columns[xFieldIndex];\n const downsampledSeries = currentTarget.dataSet.seriesList[downsampledXFieldIndex];\n\n const firstIndex = fullSeries.findIndex(x => {\n return downsampledSeries[startXIndex] === x;\n });\n const lastIndex = fullSeries.findIndex(x => {\n return downsampledSeries[endXIndex] === x;\n });\n\n if (firstIndex >= 0 && lastIndex >= 0 && firstIndex <= lastIndex) {\n return calculateThresholdOnRangeSelect({\n firstIndex,\n lastIndex,\n dataSources,\n width,\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Error occurred while setting downsample threshold on range select event', e);\n }\n\n return null;\n};\n\nconst isColumnStrictlyIncreasing = (column: (number | Date)[], fieldType: 'number' | 'time') => {\n return column.every((value, index) => {\n if (fieldType === 'number') {\n if (Number.isNaN(value)) {\n return false;\n }\n }\n\n if (fieldType === 'time') {\n if (Number.isNaN((value as Date).getTime())) {\n return false;\n }\n }\n if (index === 0) {\n return true;\n }\n return value > column[index - 1];\n });\n};\n\n/**\n * Verifies that all of the columns that are displayed in a chart can be downsampled. Valid columns that can be\n * displayed are those that contain at least one number. We can only downsample columns that only consist of numbers.\n *\n * If all columns can be downsampled, returns the x column coerced to time/number and y columns coerced to numbers.\n * If not all columns can be downsampled, then returns empty arrays for both x and y\n */\nconst tryToCoerceAllDisplayedFields = (\n ds: DataSource,\n xField: string,\n yFields: Set<string>,\n fieldTypes: string[],\n options: DownsampleOptions['options']\n): { xColumn: Date[] | number[]; yColumns: number[][] } => {\n let xColumn: Date[] | number[] = [];\n const yColumns: number[][] = [];\n\n const canDownsample = !ds.data.fields.some((field, index) => {\n const fieldName = (field as FieldEntry).name ?? field;\n const fieldType = fieldTypes[index] ?? 'unknown';\n const column = ds.data.columns[index];\n let hasDisplayedColumnThatCantBeDownsampled = false;\n\n if (fieldName === xField) {\n xColumn = strictlyCoerceXColumn(column, fieldType);\n } else if (yFields.has(fieldName)) {\n const { coercedColumn, canLooselyCoerceSomeValues, canDownsampleColumn } = strictlyCoerceYColumn(\n ds.data.columns[index],\n options\n );\n // do not perform downsampling if a column can possibly be displayed but cannot\n // be downsampled using LTTB\n hasDisplayedColumnThatCantBeDownsampled = canLooselyCoerceSomeValues && !canDownsampleColumn;\n if (hasDisplayedColumnThatCantBeDownsampled) {\n return true;\n }\n if (canDownsampleColumn) {\n yColumns.push(coercedColumn);\n }\n }\n return false;\n });\n\n if (canDownsample) {\n return { xColumn, yColumns };\n }\n return { xColumn: [], yColumns: [] };\n};\n\nconst pickIndicesFromDataSource = (ds: DataSource, indices: Set<number>): DataSource => {\n const sortedIndices = Array.from(indices).sort((a: number, b: number) => a - b);\n const slicedColumns = [];\n ds.data.columns.forEach(column => {\n const slicedColumn = [];\n sortedIndices.forEach(index => {\n slicedColumn.push(column[index]);\n });\n slicedColumns.push(slicedColumn);\n });\n\n // update data columns with downsampled columns\n return {\n ...ds,\n data: {\n ...ds.data,\n columns: slicedColumns,\n },\n };\n};\n\nexport const downsampleDataSources = ({ dataSources, threshold, options }: DownsampleOptions) => {\n const primaryDS = dataSources?.primary;\n // only downsample time series when number of data points are over threshold\n const numPoints = primaryDS?.data?.columns[0]?.length ?? 0;\n if (Number.isNaN(threshold) || numPoints <= threshold || threshold < 2) {\n return dataSources;\n }\n\n const { xField, yFields, fieldTypes } = options;\n if (!xField || !yFields?.length || !fieldTypes?.length) {\n return dataSources;\n }\n\n const nonInternalYFields = new Set<string>(yFields.filter(yField => !yField.startsWith('_')));\n const maxPointsInDownsample = Math.min(nonInternalYFields.size * threshold, numPoints);\n\n // Do not try to downsample if there are too many downsampled pts\n // At the worst case, each series has non-overlapping downsampled pts\n // which will mean that all points will be included in the downsampled result\n // This will just lead to additional overhead due to coercing each\n // x and y field to number\n if (maxPointsInDownsample >= numPoints) {\n return dataSources;\n }\n\n const { xColumn, yColumns } = tryToCoerceAllDisplayedFields(\n primaryDS,\n xField,\n nonInternalYFields,\n fieldTypes,\n options\n );\n\n if (!yColumns.length || !xColumn.length) {\n return dataSources;\n }\n\n const downsampledDataSources = { ...dataSources };\n const downsampledIndices = new Set<number>();\n\n yColumns.forEach((yColumn, columnIndex) => {\n // perform LTTB downsampling for current series, LTTB takes an [x, y] pair\n const xyPair: [Date | number, number][] = yColumn.map((yValue, index) => {\n return [xColumn[index], yValue];\n });\n\n try {\n const { downsampledIndices: downsampledIndicesForSeries } = largestTriangleThreeBuckets(\n xyPair,\n threshold,\n downsampledIndices\n );\n downsampledIndicesForSeries.forEach(downsampleIndex => downsampledIndices.add(downsampleIndex));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(`Error occurred while downsampling column ${columnIndex}`, e);\n }\n });\n // update data columns with downsampled columns\n downsampledDataSources.primary = pickIndicesFromDataSource(primaryDS, downsampledIndices);\n\n return downsampledDataSources;\n};\n", "\nimport * as defaultImport from \"@splunk/visualization-context/FeatureFlagContext\";\nexport * from \"@splunk/visualization-context/FeatureFlagContext\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { useContext } from 'react';\nimport FeatureFlagContext from '@splunk/visualization-context/FeatureFlagContext';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\n\nexport const useTrellisFeatureFlagOn = (): boolean => {\n const context = useContext(FeatureFlagContext) as Record<string, unknown>;\n return Boolean(context?.visualizations_enableTrellis);\n};\n\nexport const useTrellisEnabled = (layoutType = LAYOUT_TYPE.Off): boolean => {\n const trellisFeatureEnabled = useTrellisFeatureFlagOn();\n return trellisFeatureEnabled && layoutType === LAYOUT_TYPE.Trellis;\n};\n", "import * as React from 'react';\nimport styled from 'styled-components';\n\nexport const TRELLIS_TITLE_HEIGHT = 28;\n\nconst TrellisTitleText = styled.div`\n margin-left: 10px;\n margin-right: 10px;\n padding-top: 8px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n`;\n\nconst TrellisTitleDiv = styled.div<{ fontColor: string; backgroundColor: string }>`\n height: ${TRELLIS_TITLE_HEIGHT}px;\n font-size: 14px;\n font-weight: 700;\n color: ${props => props.fontColor};\n background-color: ${props => props.backgroundColor};\n box-shadow: 0 1px ${props => props.backgroundColor}; // this is added to avoid a 1px gap between title and viz divs that showed up intermittently because of pixel rounding error in chrome.\n`;\n\ninterface TrellisTitleProps {\n fontColor: string;\n backgroundColor: string;\n trellisKey: unknown;\n}\n\nexport const TrellisTitle = (props: TrellisTitleProps) => {\n const titleText = String(props.trellisKey).toString();\n return (\n <TrellisTitleDiv\n fontColor={props.fontColor}\n backgroundColor={props.backgroundColor}\n data-test=\"trellis-title\"\n title={titleText}\n >\n <TrellisTitleText>{titleText}</TrellisTitleText>\n </TrellisTitleDiv>\n );\n};\n", "/* eslint-disable react/no-unused-prop-types */\nimport { pick, debounce, noop } from 'lodash';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport * as T from 'prop-types';\nimport EventListener from 'react-event-listener';\nimport '@splunk/visualizations-shared/i18n'; // fixme, @splunk/charting should be refactor to use locale & timezone instead of i18n functions\nimport jsCharting from '@splunk/charting-bundle';\nimport TimezoneContext, { TimezoneContextInterface } from '@splunk/visualization-context/TimezoneContext';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport styled from 'styled-components';\nimport Message from '@splunk/visualizations-shared/Message';\nimport useSplunkTheme from '@splunk/themes/useSplunkTheme';\nimport { getChartingThemeKey } from '@splunk/visualizations-shared/themeUtils';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { ChartingApiFunctional } from './ChartingApi';\nimport usePrevious from './hooks/usePrevious';\nimport useEventCallback from './hooks/useEventCallback';\nimport { DataSource } from './interfaces';\nimport { calculateDownsamplingThreshold } from './utils/dataUtils';\nimport type { ChartEvent } from './interfaces/ChartEvent';\nimport { useTrellisEnabled } from './hooks/useTrellisEnabled';\nimport { TrellisTitle, TRELLIS_TITLE_HEIGHT } from './components/TrellisTitle';\n\nexport const NO_INPLACE_PROPS = [\n 'chart',\n 'chart.orientation',\n 'layout.splitSeries',\n 'chart.style',\n 'legend.placement',\n];\n\nexport const appendTrellisToPayload = (\n props: ChartingProps,\n payload: Record<string, unknown>\n): Record<string, unknown> => {\n if (props.trellisSplitBy) {\n // eslint-disable-next-line no-param-reassign\n payload['trellis.name'] = props.trellisSplitBy;\n }\n if (props.trellisKey) {\n // eslint-disable-next-line no-param-reassign\n payload['trellis.value'] = props.trellisKey;\n }\n return payload;\n};\n\nexport const changedOptions = (\n curOptions: Record<string, unknown>,\n nextOptions: Record<string, unknown>\n): string[] =>\n Object.keys(curOptions)\n .filter(key => !(key in nextOptions))\n .concat(\n Object.keys(nextOptions).filter(\n key => !(key in curOptions) || curOptions[key] !== nextOptions[key]\n )\n );\n\nexport const canUpdateInPlace = (\n curOptions: Record<string, unknown>,\n nextOptions: Record<string, unknown>\n): boolean => {\n // if either of the options are undefined\n // it cannot update in place.\n if (!curOptions || !nextOptions) {\n return false;\n }\n return (\n !NO_INPLACE_PROPS.some(p => curOptions[p] !== nextOptions[p]) &&\n !changedOptions(curOptions, nextOptions).some(p => p.toLowerCase().endsWith('color'))\n );\n};\n\n// create 'row' payloads from 'rowContext' in the flattened format:\n// row.<fieldname>.value\nexport const updateRowPayload = (\n chartEventRowContext: Record<string, unknown>,\n payload: Record<string, unknown>\n): Record<string, unknown> => {\n Object.keys(chartEventRowContext || {}).forEach(key => {\n // eslint-disable-next-line no-param-reassign\n payload[`${key}.value`] = chartEventRowContext[key];\n });\n\n return payload;\n};\n\nexport interface ContainerProps {\n width: string | number;\n height: string | number;\n}\n\nenum VizChartEventType {\n POINT_CLICK = 'point.click',\n POINT_MOUSE_OUT = 'point.mouseout',\n POINT_MOUSE_OVER = 'point.mouseover',\n LEGEND_CLICK = 'legend.click',\n}\n\n// @TODO(pwied): remove after HC upgrade to 8+\n// .highcharts-a11y-proxy-container rule addresses a HighCharts < 8 bug\n// caused by the accessibility plugin\n// https://github.com/highcharts/highcharts/issues/12883\nconst ChartingContainer = styled.div.attrs((props: ContainerProps) => ({\n 'data-test': 'charting-container',\n width: props.width,\n height: props.height,\n}))`\n & .highcharts-a11y-proxy-container {\n pointer-events: none;\n }\n overflow: hidden;\n position: relative;\n ${props => toDimension(pick(props, ['width', 'height']))};\n`;\n\nexport interface ChartingProps {\n // width in pixel or string, defaults to 100%\n width: string | number;\n // height in pixel or string\n height: string | number;\n // visualization formatting options\n options?: Record<string, any>;\n // charting dataset from jsCharting.extractChartReadyData\n chartData: Record<string, any>;\n // callbacks to trigger event\n onEventTrigger?: (...args: any[]) => void;\n onSelect?: (...args: any[]) => void;\n onClick?: (...args: any[]) => void;\n onPointMouseOver?: (...args: any[]) => void;\n onPointMouseOut?: (...args: any[]) => void;\n // Custom style on visualization\n style?: Record<string, unknown>;\n colorPalette?: Array<string>;\n visualizationApiRef?: (...args: any[]) => void;\n themeKey?: string;\n // The non-downsampled data sources used by this chart. Passed in if downsampling\n // is enabled for this chart.\n originalDataSources?: Record<string, DataSource> | null;\n // Callback for when downsampling threshold changes. Passed in if downsampling\n // is enabled for this chart.\n onDownsamplingThresholdChange?: (threshold: number) => void | null;\n // The xField for this chart if it is an axis chart\n xField?: string;\n // The y2Fields for this chart if it is specified and it is an axis chart\n y2Fields?: string[];\n // The additional tooltip fields for this chart if it is specified and it is an axis chart\n additionalTooltipFields?: string[];\n splitByLayout?: LAYOUT_TYPE;\n trellisKey?: string;\n trellisSplitBy?: string;\n backgroundColor?: string;\n defaultFontColor?: string;\n}\n\nconst propTypes: Record<keyof ChartingProps, T.Validator<any>> = {\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n options: T.object,\n chartData: T.object,\n onEventTrigger: T.func,\n onClick: T.func,\n onSelect: T.func,\n onPointMouseOver: T.func,\n onPointMouseOut: T.func,\n style: T.object,\n colorPalette: T.array,\n visualizationApiRef: T.func,\n themeKey: T.string,\n originalDataSources: T.object,\n onDownsamplingThresholdChange: T.func,\n xField: T.string,\n y2Fields: T.array,\n additionalTooltipFields: T.array,\n splitByLayout: T.oneOf(Object.values(LAYOUT_TYPE)),\n trellisKey: T.string,\n trellisSplitBy: T.string,\n backgroundColor: T.string,\n defaultFontColor: T.string,\n};\n\nconst Charting: React.FC<ChartingProps> = props => {\n const container = useRef<HTMLDivElement>(null);\n const needsInit = useRef<boolean>(true);\n const chart = useRef<jsCharting>();\n const needsRedraw = useRef<boolean>(true);\n const api = useRef(new ChartingApiFunctional(chart));\n const timezone = useContext<TimezoneContextInterface>(TimezoneContext);\n const selectChartEvent = useRef<ChartEvent<'chartRangeSelect'>>(null);\n const trellisEnabled = useTrellisEnabled(props.splitByLayout);\n\n const computeChartingSize = () => {\n if (container.current) {\n const rect = container.current.getBoundingClientRect();\n return {\n height: rect.height,\n width: rect.width,\n };\n }\n return {};\n };\n const splunkTheme = useSplunkTheme();\n const themeKey = props.themeKey ? props.themeKey : getChartingThemeKey({ splunkThemeV1: splunkTheme });\n const {\n width,\n height,\n style,\n chartData,\n options,\n colorPalette,\n onClick,\n onSelect,\n onPointMouseOut,\n onPointMouseOver,\n onEventTrigger,\n originalDataSources,\n onDownsamplingThresholdChange,\n xField,\n backgroundColor,\n defaultFontColor,\n trellisKey,\n additionalTooltipFields,\n } = props;\n const prevOptions = usePrevious(options);\n const prevTimezone = usePrevious(timezone);\n\n const handleClick = (\n chartEvent: ChartEvent<'pointClick' | 'legendClick'>,\n type: VizChartEventType\n ): void => {\n let payload: Partial<ChartEvent<'pointClick' | 'legendClick'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n\n if (type === VizChartEventType.POINT_CLICK) {\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n }\n\n payload = appendTrellisToPayload(props, payload);\n\n onClick({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const destroyChart = (): void => {\n if (chart.current) {\n chart.current.destroy();\n chart.current = null;\n }\n needsRedraw.current = true;\n needsInit.current = true;\n };\n\n const enableSearchZoom = chartData?.chartDataOptions?.enableSearchZoom ?? false;\n const recalculateDownsamplingThreshold = React.useCallback(() => {\n if (!onDownsamplingThresholdChange || !xField) {\n return;\n }\n\n const newThreshold = calculateDownsamplingThreshold({\n enableSearchZoom,\n dataSources: originalDataSources,\n width: Number(width),\n selectChartEvent: selectChartEvent.current,\n xField,\n });\n\n if (Number.isFinite(newThreshold)) {\n onDownsamplingThresholdChange(newThreshold);\n }\n }, [enableSearchZoom, originalDataSources, onDownsamplingThresholdChange, width, xField]);\n\n React.useEffect(() => {\n recalculateDownsamplingThreshold();\n }, [recalculateDownsamplingThreshold]);\n\n // useEventCallback is used for these handlers to make sure that they are a stable reference and\n // we always use the latest version of the callback\n // Since chart drawing is debounced, there is a race condition where a stale callback may be called\n // if a prop changes and the event handler is called before the chart redraws. This means that\n // it will use the old callback rather than the newer one, which can lead to inaccurate results\n const handleSelect = useEventCallback((chartEvent: ChartEvent<'chartRangeSelect'>): void => {\n selectChartEvent.current = chartEvent;\n recalculateDownsamplingThreshold();\n const payload = appendTrellisToPayload(\n props,\n pick(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue')\n );\n\n // todo: need change this after breaking all visualizations\n if (onSelect && typeof onSelect === 'function') {\n onSelect({\n type: 'range.select',\n originalEvent: chartEvent,\n payload,\n });\n\n return;\n }\n\n // the chartEvent here is a jQuery event\n onEventTrigger({\n type: 'range.select',\n originalEvent: chartEvent,\n payload,\n });\n });\n\n const handlePointMouseOut = useEventCallback(\n (chartEvent: ChartEvent<'pointMouseOut'>, type: VizChartEventType): void => {\n let payload: Partial<ChartEvent<'pointMouseOut'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = appendTrellisToPayload(props, updateRowPayload(chartEvent.rowContext, payload));\n\n onPointMouseOut({\n type,\n originalEvent: chartEvent,\n payload,\n });\n }\n );\n\n const handlePointMouseOver = useEventCallback(\n (chartEvent: ChartEvent<'pointMouseOver'>, type: VizChartEventType): void => {\n let payload: Partial<ChartEvent<'pointMouseOver'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = appendTrellisToPayload(props, updateRowPayload(chartEvent.rowContext, payload));\n\n onPointMouseOver({\n type,\n originalEvent: chartEvent,\n payload,\n });\n }\n );\n\n const drawChart = (): void => {\n const updatedOptions = { ...options, shouldColorizeTooltipData: false };\n const computedChartSize = computeChartingSize();\n const computedWidth = computedChartSize.width;\n const computedHeight = computedChartSize.height;\n const serializedTimezone = timezone?.serializedTimezone;\n const ianaTimezone = timezone?.ianaTimezone;\n const utcOffset = timezone?.utcOffset;\n if (!computedWidth || !computedHeight) {\n return;\n }\n if (!chartData || !Object.keys(chartData).length) {\n return;\n }\n\n // splunk-charting layers configuration option updates.\n // when an option is removed it needs to be set to an empty string\n // to override the previous configuration\n if (prevOptions) {\n Object.keys(prevOptions).forEach(key => {\n if (prevOptions[key] && updatedOptions[key] === undefined) {\n updatedOptions[key] = '';\n }\n });\n }\n\n try {\n if (needsInit.current) {\n destroyChart();\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n chart.current = jsCharting.createChart(container.current, {\n ...updatedOptions,\n drilldown: 'all',\n ...(typeof serializedTimezone === 'string' && {\n 'time.serializedTz': serializedTimezone,\n }),\n ...(typeof ianaTimezone === 'string' && {\n 'time.ianaTimezone': ianaTimezone,\n }),\n ...(typeof utcOffset === 'number' && {\n 'time.timezoneOffset': utcOffset,\n }),\n });\n // bind event handlers\n chart.current.on('pointClick', e => {\n handleClick(e, VizChartEventType.POINT_CLICK);\n });\n chart.current.on('pointMouseOver', e => {\n handlePointMouseOver(e, VizChartEventType.POINT_MOUSE_OVER);\n });\n chart.current.on('pointMouseOut', e => {\n handlePointMouseOut(e, VizChartEventType.POINT_MOUSE_OUT);\n });\n chart.current.on('legendClick', e => {\n handleClick(e, VizChartEventType.LEGEND_CLICK);\n });\n chart.current.on('chartRangeSelect', handleSelect);\n }\n if (needsRedraw.current) {\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n const payload = appendTrellisToPayload(props, {\n width,\n height,\n currentTime: new Date().getTime(),\n });\n chart.current.prepareAndDraw(chartData, updatedOptions, () => {\n onEventTrigger({\n type: 'viz.renderedWithData',\n payload,\n });\n });\n }\n if (chart.current) {\n if (\n Math.round(chart.current.height) !== Math.round(computedHeight) ||\n Math.round(chart.current.width) !== Math.round(computedWidth)\n ) {\n chart.current.resize(computedWidth, computedHeight);\n }\n }\n needsInit.current = false;\n needsRedraw.current = false;\n } catch (e) {\n window.console.error('Caught error rendering chart:', e);\n }\n };\n\n const debouncedDrawChart = debounce(drawChart, 5);\n\n const onContainerMount = chartingContainer => {\n container.current = chartingContainer;\n debouncedDrawChart();\n };\n\n const prevTheme = usePrevious(themeKey);\n const prevOnClick = usePrevious(onClick);\n\n useEffect(() => {\n debouncedDrawChart();\n props.visualizationApiRef(api.current);\n return () => {\n props.visualizationApiRef(null);\n destroyChart();\n };\n }, []);\n\n useEffect(() => {\n // TODO: figure out why re-init is needed for functional components (i.e. PlatformViz) when changing theme\n // seems like redraw doesn't suffice to update the background colors\n if (\n !chart.current ||\n !canUpdateInPlace(prevOptions, options) ||\n // timezone is a simple object so this comparison should be fast\n JSON.stringify(prevTimezone) !== JSON.stringify(timezone) ||\n (!props.themeKey && prevTheme !== themeKey) ||\n prevOnClick !== onClick\n ) {\n needsInit.current = true;\n }\n // need to immediately call drawChart upon an option or chartData change\n // otherwise a noop would occur if the onContainerMount drawChart is re-invoked when dimensions change\n needsRedraw.current = true;\n drawChart();\n }, [\n JSON.stringify(options),\n JSON.stringify(chartData.toJSON()),\n JSON.stringify(chartData.annotations),\n timezone?.ianaTimezone,\n timezone?.utcOffset,\n timezone?.serializedTimezone,\n themeKey,\n onClick,\n additionalTooltipFields,\n ]);\n\n return (\n <>\n {trellisEnabled && (\n <TrellisTitle\n trellisKey={trellisKey}\n backgroundColor={backgroundColor}\n fontColor={defaultFontColor}\n />\n )}\n <ChartingContainer\n style={style}\n ref={onContainerMount}\n width={width}\n height={trellisEnabled ? Number(height) - TRELLIS_TITLE_HEIGHT : height}\n >\n <EventListener target={window} onResize={debouncedDrawChart} />\n </ChartingContainer>\n </>\n );\n};\n\nconst defaultProps: Record<keyof ChartingProps, any> = {\n width: '100%',\n height: 250,\n options: {},\n style: {},\n // todo: need remove it\n onEventTrigger: noop,\n onClick: noop,\n onSelect: noop,\n onPointMouseOver: noop,\n onPointMouseOut: noop,\n colorPalette: VIZ_CATEGORICAL,\n visualizationApiRef: noop,\n chartData: null,\n themeKey: null,\n onDownsamplingThresholdChange: null,\n originalDataSources: null,\n xField: null,\n y2Fields: [],\n splitByLayout: undefined,\n trellisKey: undefined,\n trellisSplitBy: undefined,\n backgroundColor: '',\n defaultFontColor: '',\n additionalTooltipFields: [],\n};\n\nCharting.propTypes = propTypes;\nCharting.defaultProps = defaultProps;\n\n// allow for early return in case of empty chartData while still following hook rules\nconst ChartingWrapper: React.FC<ChartingProps> = props => {\n const { chartData } = props;\n\n if (!chartData) {\n return <Message message={_('No DataSource')} level=\"warning\" />;\n }\n\n if (!Object.keys(chartData).length) {\n return <Message message={_('No Result')} level=\"info\" />;\n }\n\n return <Charting {...props} />;\n};\n\nChartingWrapper.propTypes = propTypes;\nChartingWrapper.defaultProps = defaultProps;\nexport default ChartingWrapper;\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/simpleXMLOptions\";\nexport * from \"@splunk/visualizations-shared/simpleXMLOptions\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-icons\";\nexport * from \"@splunk/visualization-icons\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-icons/placeholders\";\nexport * from \"@splunk/visualization-icons/placeholders\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes/pick\";\nexport * from \"@splunk/themes/pick\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes/variables\";\nexport * from \"@splunk/themes/variables\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/configUtils\";\nexport * from \"@splunk/visualizations-shared/configUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { get, range } from 'lodash';\nimport { isDynamicOption } from '@splunk/visualizations-shared/configUtils';\nimport { VizConfig } from '../interfaces/VizConfig';\nimport { EditorLayoutConfig, EditorConfig } from '../interfaces/Editor';\n\n// included for backwards compatibility\nexport { enhanceOptionsSchemaWithDynamicOptions } from '@splunk/visualization-schemas';\n\nexport interface PresetEntry {\n name: string;\n value: any;\n label: string;\n}\n\n/**\n * Helper function to enhance a Visualization Config as needed based on behaviors specified in supports block\n * this function also collapse all editor panels\n * @param vizConfig a Visualization Config\n * @returns an enhanced Visualization Config containing updated config entries based on behaviors it supports\n * and containing `open: false` for all editor panels in editorConfig\n */\nfunction enhanceConfig(vizConfig: VizConfig): VizConfig {\n const enhancedConfig: VizConfig = { ...vizConfig };\n\n enhancedConfig.editorConfig = vizConfig.editorConfig.map(\n (config: EditorConfig): EditorConfig => {\n return { ...config, open: config.open || false };\n }\n );\n return enhancedConfig;\n}\n\n/**\n * Helper function to uncollapse all editor panels by adding `open: true` to the editorConfig\n * Created for editor unit tests\n * @param vizConfig a Visualization Config\n * @returns a Visualization Config containing `open: true` for all editor panels in editorConfig\n */\nfunction uncollapseEditorConfig(vizConfig: VizConfig): VizConfig {\n const editorPanelUncollapsedConfig: VizConfig = { ...vizConfig };\n editorPanelUncollapsedConfig.editorConfig = vizConfig.editorConfig.map(\n (config: EditorConfig): EditorConfig => {\n return { ...config, open: true };\n }\n );\n return editorPanelUncollapsedConfig;\n}\n\n// private helpers to improve readability of getInitialPreset\n// this shouldn't be tested since this util isn't something that we expect to use outside of getInitialPreset\n\n/**\n * this checks to make sure that all values within vizContext are compatible with the given preset's context to determine the initialPreset\n * if a preset has explicitly specified a key as being undefined, the vizContext must also has that key as undefined, or else this CANNOT be the initialPreset\n * the inverse is true; if a preset has key is NOT undefined, it must also be NOT undefined in the corresponding vizContext\n * the internal config contents are irrelevant (as the user could customize them in source), just as long as the presence of `undefined`s match up\n *\n * Since the presetConfigs have explicit undefined keys to override the existing config, we need to explicitly check the undefined values\n */\nfunction hasCompatibleContexts(\n vizContext: { [configKey: string]: any },\n presetContext: { [configKey: string]: any }\n): boolean {\n const presetContextKeys = Object.keys(presetContext);\n return presetContextKeys.every(\n (contextKey): boolean =>\n (presetContext[contextKey] === undefined && vizContext[contextKey] === undefined) ||\n (presetContext[contextKey] !== undefined && vizContext[contextKey] !== undefined)\n );\n}\n\n/**\n * Checks to make sure that dynamic (non-dynamic) options in a given preset are also dynamic (non-dynamic) in the vizOptions\n */\nfunction hasCompatibleOptions(\n vizOptions: { [configKey: string]: any },\n presetOptions: { [configKey: string]: any }\n): boolean {\n const presetOptionKeys = Object.keys(presetOptions);\n return presetOptionKeys.every(\n (optionKey): boolean =>\n isDynamicOption(presetOptions[optionKey]) === isDynamicOption(vizOptions[optionKey])\n );\n}\n\n/**\n * Evaluates whether there is an initialPreset that fits the current state of vizContext + vizOptions\n * This function ignores extraneous vizOptions or vizContext keys, as they could be outside the scope of what the preset is intended to configure\n *\n * @param {Object} vizContext - the current vizContext definition\n * @param {Object} vizOptions - the current vizOptions definition\n * @param {PresetEntry[]} presets - the list of presets, one of which can be considered an initialPreset\n */\nfunction getInitialPreset(\n vizContext: { [configKey: string]: any },\n vizOptions: { [configKey: string]: any },\n presets: PresetEntry[]\n): PresetEntry | null {\n return presets.find((preset): boolean => {\n const presetContext = get(preset, ['value', 'context'], {});\n const presetOptions = get(preset, ['value', 'options'], {});\n const presetContextKeys = Object.keys(presetContext);\n const presetOptionKeys = Object.keys(presetOptions);\n\n // all presets have to explicitly specify which options to reset (i.e. need explicitly undefined keys)\n // if not, then the preset is invalid in config.ts\n if (presetContextKeys.length === 0 || presetOptionKeys.length === 0) return false;\n\n return (\n hasCompatibleContexts(vizContext, presetContext) &&\n hasCompatibleOptions(vizOptions, presetOptions)\n );\n });\n}\n\ninterface PrecisionOption {\n label: string;\n value: number;\n}\n\n/**\n * generates number precision values for a Select editor\n *\n * @param {Number} numPrecisionValues - number of integer precision values to generate\n * @returns {{ label: string; value; string }[]} array of { label, value } tuples\n */\nfunction generatePrecisionValues(numPrecisionValues: number): PrecisionOption[] {\n return range(0, numPrecisionValues + 1).map(\n (i): PrecisionOption => ({\n label: `${i} (0${i > 0 ? '.' : ''}${'0'.repeat(i)})`, // e.g. 0.000 for numPrecisionValues = 3\n value: i,\n })\n );\n}\n\nexport { enhanceConfig, getInitialPreset, generatePrecisionValues, uncollapseEditorConfig, isDynamicOption };\n\n/**\n * insert layout in layout array, return a new layout array instead of updating the original\n *\n * @param {EditorLayoutConfig[][]} layout - editor layout\n * @param {Number} index - the index to insert layout item(s)\n * @param {EditorLayoutConfig[][]} layoutItems - the item(s) to insert\n * @returns {EditorLayoutConfig[][]} new editor layout with insertion\n */\nexport const insertLayout = (\n layout: EditorLayoutConfig[][],\n index: number,\n ...layoutItems: EditorLayoutConfig[][]\n): EditorLayoutConfig[][] => [\n // copy part of the array before the specified index\n ...layout.slice(0, index),\n // inserted layout item\n ...layoutItems,\n // copy part of the array after the specified index\n ...layout.slice(index),\n];\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { insertLayout } from '../utils/configUtils';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisEnabled = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === LAYOUT_TYPE.Trellis;\n};\n\nconst AxesChartDataConfig: EditorConfig = {\n label: _('Data configurations'),\n layout: [\n [\n {\n label: _('X'),\n option: 'x',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Y'),\n option: 'y',\n editor: 'editor.columnMultiSelector',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n supportsDSL: true,\n expectedDataPrimitive: ['series', 'frame'],\n },\n },\n ],\n [\n {\n label: _('Additional tooltip fields'),\n option: 'additionalTooltipFields',\n editor: 'editor.columnMultiSelectionByFieldNameEditor',\n },\n ],\n [\n {\n label: _('Result limit'),\n option: 'resultLimit',\n editor: 'editor.number',\n editorProps: {\n dataSourceKey: 'primary',\n },\n },\n ],\n ],\n};\n\nexport const AxesChartDataConfigBar: EditorConfig = {\n label: AxesChartDataConfig.label,\n // insert Y2 after Y\n layout: insertLayout(AxesChartDataConfig.layout, 2, [\n {\n label: _('Y2'),\n option: 'y2',\n editor: 'editor.columnMultiSelector',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n supportsDSL: true,\n expectedDataPrimitive: ['series', 'frame'],\n },\n isDisabled: isTrellisEnabled,\n },\n ]),\n};\n\nexport const AxesChartDataConfigScatter: EditorConfig = {\n label: AxesChartDataConfig.label,\n layout: [\n [\n {\n label: _('X'),\n option: 'x',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Y'),\n option: 'y',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Category'),\n option: 'category',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Result limit'),\n option: 'resultLimit',\n editor: 'editor.number',\n editorProps: {\n dataSourceKey: 'primary',\n },\n },\n ],\n ],\n};\n\nexport const AxesChartDataConfigBubble: EditorConfig = {\n label: AxesChartDataConfigScatter.label,\n // layout: insert Size after Category\n layout: insertLayout(AxesChartDataConfigScatter.layout, 3, [\n {\n label: _('Size'),\n option: 'size',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ]),\n};\n\nexport const AxesChartDataConfigAreaColumnLine: EditorConfig = {\n label: AxesChartDataConfigBar.label,\n layout: [\n ...AxesChartDataConfigBar.layout,\n [\n {\n label: _('Annotation x'),\n option: 'annotationX',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'annotation',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Annotation labels'),\n option: 'annotationLabel',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'annotation',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n ],\n};\n\nexport default AxesChartDataConfig;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisEnabled = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === LAYOUT_TYPE.Trellis;\n};\n\nexport const TrellisEditorConfig = [\n [\n {\n label: _('Trellis layout'),\n option: 'splitByLayout',\n editor: 'editor.toggle',\n showEditor: isTrellisFeatureFlagOn,\n },\n ],\n [\n {\n label: _('Split by'),\n option: 'trellisSplitBy',\n editor: 'editor.trellisSplitBy',\n editorProps: {\n dataSourceKey: 'primary',\n },\n showEditor: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Number of columns'),\n option: 'trellisColumns',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n placeholder: _('Auto'),\n showEditor: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Min column width'),\n option: 'trellisMinColumnWidth',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n {\n label: _('Row height'),\n option: 'trellisRowHeight',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Max number of components per page'),\n option: 'trellisPageCount',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n ],\n];\n\nexport const TimechartTrellisEditorConfig = [\n [\n {\n label: _('Trellis layout'),\n option: 'splitByLayout',\n editor: 'editor.toggle',\n showEditor: isTrellisFeatureFlagOn,\n // add help text for timecharts\n editorProps: {\n help: _(\n 'Y2-axis and overlay field configurations are not supported when trellis is enabled.'\n ),\n helpFormat: 'under',\n },\n },\n ],\n ...TrellisEditorConfig.slice(1),\n [\n {\n label: _('Shared y-axis scale'),\n option: 'trellisSharedScale',\n editor: 'editor.checkbox',\n showEditor: isTrellisEnabled,\n },\n ],\n];\n\nexport const TrellisBackgroundColorEditor = {\n label: _('Trellis background'),\n option: 'trellisBackgroundColor',\n editor: 'editor.color',\n showEditor: isTrellisEnabled,\n};\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { TimechartTrellisEditorConfig, TrellisEditorConfig } from './TrellisEditors';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisEnabled = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === LAYOUT_TYPE.Trellis;\n};\n\nconst AxesChartDataDisplayBase: EditorConfig = {\n label: _('Data display'),\n layout: [\n [\n {\n label: _('Stack mode'),\n option: 'stackMode',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('Not stacked'), value: 'auto' },\n { label: _('Stacked'), value: 'stacked' },\n { label: _('Stacked 100%'), value: 'stacked100' },\n ],\n },\n },\n ],\n [\n {\n label: _('Null value display'),\n option: 'nullValueDisplay',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Gaps'), value: 'gaps' },\n { label: _('Zero'), value: 'zero' },\n { label: _('Connect'), value: 'connect' },\n ],\n },\n },\n ],\n [\n {\n label: _('Data value display'),\n option: 'dataValuesDisplay',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Off'), value: 'off' },\n { label: _('All'), value: 'all' },\n { label: _('Min/Max'), value: 'minmax' },\n ],\n },\n },\n ],\n [\n {\n label: _('Overlay fields'),\n option: 'overlayFields',\n editor: 'editor.columnMultiSelectionByFieldNameEditor',\n editorProps: {\n filterByTypes: ['number'],\n },\n isDisabled: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Split series'),\n option: 'showSplitSeries',\n editor: 'editor.toggle',\n },\n ],\n [\n {\n label: _('Independent y-axis for split series'),\n option: 'showIndependentYRanges',\n editor: 'editor.checkbox',\n showEditor: ({ options }) => options.showSplitSeries,\n },\n ],\n ...TimechartTrellisEditorConfig,\n ],\n};\n\nexport const AxesChartDataDisplayArea: EditorConfig = AxesChartDataDisplayBase;\n\nexport const AxesChartDataDisplayBar: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n AxesChartDataDisplayBase.layout[0],\n // remove null value display editor at index 1\n ...AxesChartDataDisplayBase.layout.slice(2),\n ],\n};\n\nexport const AxesChartDataDisplayScatter: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n ...TrellisEditorConfig,\n [\n {\n label: _('Shared y-axis scale'),\n option: 'trellisSharedScale',\n editor: 'editor.checkbox',\n showEditor: isTrellisEnabled,\n },\n ],\n ],\n};\n\nexport const AxesChartDataDisplayColumn: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n AxesChartDataDisplayBase.layout[0],\n // remove null value display and add data value display\n AxesChartDataDisplayBase.layout[2],\n [\n {\n label: _('Show tooltip on hover'),\n option: 'showTooltip',\n editor: 'editor.checkbox',\n },\n ],\n ...AxesChartDataDisplayBase.layout.slice(3),\n [\n {\n label: _('Column grouping mode'),\n option: 'columnGrouping',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Overlay'), value: 'overlay' },\n ],\n },\n },\n ],\n ],\n};\n\nexport const AxesChartDataDisplayLine: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n // remove stacked mode editor\n ...AxesChartDataDisplayBase.layout.slice(1),\n ],\n};\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorLayoutConfig } from '../interfaces/Editor';\nimport { ThemedDefaults } from '../interfaces/ThemedDefaults';\n\ninterface backgroundEditorProps {\n label?: string;\n themes: ThemedDefaults;\n labelPosition?: string;\n}\n\nconst background: ({ label, themes, labelPosition }: backgroundEditorProps) => EditorLayoutConfig[] = ({\n label,\n themes,\n labelPosition,\n}) => [\n {\n label: _(label || 'Background color'),\n option: 'backgroundColor',\n editor: 'editor.color',\n editorProps: {\n labelPosition: labelPosition || 'top',\n themes,\n },\n },\n];\n\nexport default background;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport pick from '@splunk/themes/pick';\nimport variables from '@splunk/themes/variables';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { ThemedDefaults } from '../interfaces/ThemedDefaults';\nimport getBackgroundColorEditor from '../editorConfig/BackgroundColor';\nimport { TrellisBackgroundColorEditor } from './TrellisEditors';\n\nconst themes: ThemedDefaults = {\n defaultBackgroundColor: props =>\n pick({\n enterprise: {\n dark: variables.black(props),\n light: variables.backgroundColor(props),\n },\n prisma: variables.backgroundColorSidebar(props),\n })(props),\n};\n\nconst AxesChartColorAndStyle: EditorConfig = {\n label: _('Color and style'),\n layout: [\n getBackgroundColorEditor({ themes }),\n [\n {\n label: _('Series colors'),\n option: 'seriesColors',\n editor: 'editor.seriesColors',\n },\n ],\n [\n {\n label: _('Series colors by field name'),\n option: 'seriesColorsByField',\n editor: 'editor.seriesColorsByField',\n },\n ],\n ],\n};\n\nexport const AxesChartColorAndStyleWithTrellis: EditorConfig = {\n ...AxesChartColorAndStyle,\n layout: [\n AxesChartColorAndStyle.layout[0],\n [\n {\n ...TrellisBackgroundColorEditor,\n editorProps: {\n themes,\n },\n },\n ],\n ...AxesChartColorAndStyle.layout.slice(1),\n ],\n};\n\nexport default AxesChartColorAndStyle;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\n\nconst AxesChartLegend: EditorConfig = {\n label: _('Legend'),\n layout: [\n [\n {\n label: _('Legend display'),\n option: 'legendDisplay',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('Right'), value: 'right' },\n { label: _('Left'), value: 'left' },\n { label: _('Top'), value: 'top' },\n { label: _('Bottom'), value: 'bottom' },\n { label: _('Off'), value: 'off' },\n ],\n },\n },\n ],\n [\n {\n label: _('Legend truncation'),\n option: 'legendTruncation',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('A...'), value: 'ellipsisEnd' },\n { label: _('A...Z'), value: 'ellipsisMiddle' },\n { label: _('...Z'), value: 'ellipsisStart' },\n { label: _('Off'), value: 'ellipsisOff' },\n ],\n },\n showEditor: ({ options }) =>\n options.legendDisplay === 'left' ||\n options.legendDisplay === 'right' ||\n options.legendDisplay === 'top' ||\n options.legendDisplay === 'bottom' ||\n options.legendDisplay === undefined,\n },\n ],\n ],\n};\n\nexport const AxesChartLegendWithTrellisAndMode = ({\n showLegendTooltip = false,\n hideModeWhenOff = false,\n}): EditorConfig => ({\n label: AxesChartLegend.label,\n layout: [\n [\n {\n label: _('Legend display'),\n option: 'legendDisplay',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('Right'), value: 'right' },\n { label: _('Left'), value: 'left' },\n { label: _('Top'), value: 'top' },\n { label: _('Bottom'), value: 'bottom' },\n { label: _('Off'), value: 'off' },\n ],\n tooltip:\n showLegendTooltip && _('Legend mode must be \"Standard\" to configure legend display'),\n },\n isDisabled: showLegendTooltip\n ? ({ options }) => options.legendMode === 'seriesCompare'\n : undefined,\n overrideDefaultValue: ({ options }) =>\n options?.splitByLayout === 'trellis' ? 'off' : 'right',\n },\n ],\n [\n {\n ...AxesChartLegend.layout[1][0],\n showEditor: ({ options }) =>\n options.legendDisplay === 'left' ||\n options.legendDisplay === 'right' ||\n options.legendDisplay === 'top' ||\n options.legendDisplay === 'bottom' ||\n // when Trellis is on, the default value of legendDisplay is off\n (options.legendDisplay === undefined && options.splitByLayout !== 'trellis'),\n },\n ],\n [\n {\n label: _('Legend mode'),\n option: 'legendMode',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Standard'), value: 'standard' },\n { label: _('Compare series'), value: 'seriesCompare' },\n ],\n },\n showEditor: ({ options }) =>\n hideModeWhenOff\n ? options.legendDisplay === 'left' ||\n options.legendDisplay === 'right' ||\n options.legendDisplay === 'top' ||\n options.legendDisplay === 'bottom' ||\n // when Trellis is on, the default value of legendDisplay is off\n (options.legendDisplay === undefined && options.splitByLayout !== 'trellis')\n : true,\n },\n ],\n ],\n});\n\nexport default AxesChartLegend;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { insertLayout } from '../utils/configUtils';\n\nexport const AxesChartXGridAndLabelsCommon: EditorConfig = {\n label: _('X-axis grid and labels'),\n layout: [\n [\n {\n label: _('Axis title'),\n option: 'xAxisTitleVisibility',\n editor: 'editor.toggle',\n },\n ],\n [\n {\n label: _('Axis title text'),\n option: 'xAxisTitleText',\n editor: 'editor.text',\n showEditor: ({ options }) =>\n options.xAxisTitleVisibility === 'show' || options.xAxisTitleVisibility === undefined,\n },\n ],\n [\n {\n label: _('Label visibility'),\n option: 'xAxisLabelVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n ],\n};\n\nconst AxesChartXGridAndLabels: EditorConfig = {\n label: AxesChartXGridAndLabelsCommon.label,\n layout: [\n ...AxesChartXGridAndLabelsCommon.layout,\n [\n {\n label: _('Label rotation'),\n option: 'xAxisLabelRotation',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('-90'), value: -90 },\n { label: _('-45'), value: -45 },\n { label: _('0'), value: 0 },\n { label: _('45'), value: 45 },\n { label: _('90'), value: 90 },\n ],\n },\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Number of time label parts'),\n option: 'xAxisMaxLabelParts',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n max: 3,\n },\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'xAxisLineVisibility',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major gridlines'),\n option: 'showXMajorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major tick visibility'),\n option: 'xAxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'xAxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.xAxisMajorTickVisibility === 'show' ||\n options.xAxisMajorTickVisibility === 'auto' ||\n options.xAxisMajorTickVisibility === undefined,\n },\n ],\n ],\n};\n\nexport const AxesChartXGridAndLabelsBubbleScatter: EditorConfig = {\n label: AxesChartXGridAndLabelsCommon.label,\n layout: [\n ...insertLayout(AxesChartXGridAndLabelsCommon.layout, 2, [\n {\n label: _('Axis scale'),\n option: 'xAxisScale',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Linear'), value: 'linear' },\n { label: _('Log'), value: 'log' },\n ],\n },\n },\n ]),\n [\n {\n label: _('Label rotation'),\n option: 'xAxisLabelRotation',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('-90'), value: -90 },\n { label: _('-45'), value: -45 },\n { label: _('0'), value: 0 },\n { label: _('45'), value: 45 },\n { label: _('90'), value: 90 },\n ],\n },\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Round axis labels'),\n option: 'showRoundedXAxisLabels',\n editor: 'editor.checkbox',\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('SI prefix abbreviation for labels'),\n option: 'xAxisAbbreviation',\n editor: 'editor.checkbox',\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Include zero'),\n option: 'showXAxisWithZero',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Extend to whole grid'),\n option: 'showXAxisExtendedRange',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minimum axis value'),\n option: 'xAxisMin',\n editor: 'editor.number',\n },\n {\n label: _('Maximum axis value'),\n option: 'xAxisMax',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'xAxisLineVisibility',\n editor: 'editor.checkbox',\n },\n ],\n // this option is disabled for bubble and scatter\n // [\n // {\n // label: _('Major gridlines'),\n // option: 'showXMajorGridLines',\n // editor: 'editor.checkbox',\n // },\n // ],\n [\n {\n label: _('Major tick visibility'),\n option: 'xAxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'xAxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.xAxisMajorTickVisibility === 'show' ||\n options.xAxisMajorTickVisibility === 'auto' ||\n options.xAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Major tick interval spacing'),\n option: 'xAxisMajorTickInterval',\n editor: 'editor.number',\n showEditor: ({ options }) =>\n options.xAxisMajorTickVisibility === 'show' ||\n options.xAxisMajorTickVisibility === 'auto' ||\n options.xAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Minor gridlines'),\n option: 'showXMinorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minor tick visibility'),\n option: 'xAxisMinorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Minor tick size (px)'),\n option: 'xAxisMinorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.xAxisMinorTickVisibility === 'show' ||\n options.xAxisMinorTickVisibility === 'auto' ||\n options.xAxisMinorTickVisibility === undefined,\n },\n ],\n ],\n};\n\nexport default AxesChartXGridAndLabels;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\n\nconst AxesChartYGridAndLabels: EditorConfig = {\n label: _('Y-axis grid and labels'),\n layout: [\n [\n {\n label: _('Axis title'),\n option: 'yAxisTitleVisibility',\n editor: 'editor.toggle',\n },\n ],\n [\n {\n label: _('Axis title text'),\n option: 'yAxisTitleText',\n editor: 'editor.text',\n showEditor: ({ options }) =>\n options.yAxisTitleVisibility === 'show' || options.yAxisTitleVisibility === undefined,\n },\n ],\n [\n {\n label: _('Scale'),\n option: 'yAxisScale',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Linear'), value: 'linear' },\n { label: _('Log'), value: 'log' },\n ],\n },\n },\n ],\n [\n {\n label: _('Label visibility'),\n option: 'yAxisLabelVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('SI prefix abbreviation for labels'),\n option: 'yAxisAbbreviation',\n editor: 'editor.checkbox',\n showEditor: ({ options }) =>\n options.yAxisLabelVisibility === 'show' ||\n options.yAxisLabelVisibility === 'auto' ||\n options.yAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Include zero'),\n option: 'showYAxisWithZero',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Extend to whole grid'),\n option: 'showYAxisExtendedRange',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minimum axis value'),\n option: 'yAxisMin',\n editor: 'editor.number',\n },\n {\n label: _('Maximum axis value'),\n option: 'yAxisMax',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'yAxisLineVisibility',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major gridlines'),\n option: 'showYMajorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major tick visibility'),\n option: 'yAxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'yAxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.yAxisMajorTickVisibility === 'show' ||\n options.yAxisMajorTickVisibility === 'auto' ||\n options.yAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Major tick interval spacing'),\n option: 'yAxisMajorTickInterval',\n editor: 'editor.number',\n showEditor: ({ options }) =>\n options.yAxisMajorTickVisibility === 'show' ||\n options.yAxisMajorTickVisibility === 'auto' ||\n options.yAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Minor gridlines'),\n option: 'showYMinorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minor tick visibility'),\n option: 'yAxisMinorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Minor tick size (px)'),\n option: 'yAxisMinorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.yAxisMinorTickVisibility === 'show' ||\n options.yAxisMinorTickVisibility === 'auto' ||\n options.yAxisMinorTickVisibility === undefined,\n },\n ],\n ],\n};\n\nexport default AxesChartYGridAndLabels;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { EditorConfig } from '../interfaces/Editor';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisOff = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return !isTrellisFeatureFlagOn({ featureFlags }) || splitByLayout !== LAYOUT_TYPE.Trellis;\n};\n\nconst axesChartY2GridAndLabels: EditorConfig = {\n label: _('Y2-axis grid and labels'),\n layout: [\n [\n {\n label: _('Axis title'),\n option: 'y2AxisTitleVisibility',\n editor: 'editor.toggle',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Axis title text'),\n option: 'y2AxisTitleText',\n editor: 'editor.text',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisTitleVisibility === 'show' || options.y2AxisTitleVisibility === undefined),\n },\n ],\n [\n {\n label: _('Show overlays on the y2-axis'),\n option: 'showOverlayY2Axis',\n editor: 'editor.checkbox',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n Array.isArray(options.overlayFields) &&\n options.overlayFields.length > 0,\n },\n ],\n [\n {\n label: _('Scale'),\n option: 'y2AxisScale',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Linear'), value: 'linear' },\n { label: _('Log'), value: 'log' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Label visibility'),\n option: 'y2AxisLabelVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Round axis labels'),\n option: 'showRoundedY2AxisLabels',\n editor: 'editor.checkbox',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisLabelVisibility === 'show' ||\n options.y2AxisLabelVisibility === 'auto' ||\n options.y2AxisLabelVisibility === undefined),\n },\n ],\n [\n {\n label: _('SI prefix abbreviation for labels'),\n option: 'y2AxisAbbreviation',\n editor: 'editor.checkbox',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisLabelVisibility === 'show' ||\n options.y2AxisLabelVisibility === 'auto' ||\n options.y2AxisLabelVisibility === undefined),\n },\n ],\n [\n {\n label: _('Include zero'),\n option: 'showY2AxisWithZero',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Minimum axis value'),\n option: 'y2AxisMin',\n editor: 'editor.number',\n showEditor: isTrellisOff,\n },\n {\n label: _('Maximum axis value'),\n option: 'y2AxisMax',\n editor: 'editor.number',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'y2AxisLineVisibility',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Major gridlines'),\n option: 'showY2MajorGridLines',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Major tick visibility'),\n option: 'y2AxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'y2AxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisMajorTickVisibility === 'show' ||\n options.y2AxisMajorTickVisibility === 'auto' ||\n options.y2AxisMajorTickVisibility === undefined),\n },\n ],\n [\n {\n label: _('Major tick interval spacing'),\n option: 'y2AxisMajorTickInterval',\n editor: 'editor.number',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisMajorTickVisibility === 'show' ||\n options.y2AxisMajorTickVisibility === 'auto' ||\n options.y2AxisMajorTickVisibility === undefined),\n },\n ],\n [\n {\n label: _('Minor gridlines'),\n option: 'showY2MinorGridLines',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Minor tick visibility'),\n option: 'y2AxisMinorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Minor tick size (px)'),\n option: 'y2AxisMinorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisMinorTickVisibility === 'show' ||\n options.y2AxisMinorTickVisibility === 'auto' ||\n options.y2AxisMinorTickVisibility === undefined),\n },\n ],\n ],\n};\n\nexport default axesChartY2GridAndLabels;\n", "import { Column as ColumnIcon } from '@splunk/visualization-icons';\nimport { Column as ColumnPlaceholderIcon } from '@splunk/visualization-icons/placeholders';\nimport { columnOptionsSchema as optionsSchema } from '@splunk/visualization-schemas';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport pick from '@splunk/themes/pick';\nimport variables from '@splunk/themes/variables';\nimport { DataContract } from '../common/interfaces/DataContract';\nimport { DefaultContext } from '../common/interfaces/DefaultContext';\nimport { EditorConfig } from '../common/interfaces/Editor';\nimport { ThemedDefaults } from '../common/interfaces/ThemedDefaults';\nimport { VizBehavior } from '../common/interfaces/VizBehavior';\nimport { VizCategory } from '../common/interfaces/VizCategory';\nimport { VizConfig } from '../common/interfaces/VizConfig';\nimport { VizSize } from '../common/interfaces/VizSize';\nimport { enhanceConfig } from '../common/utils/configUtils';\nimport { AxesChartDataConfigAreaColumnLine } from '../common/editorConfig/AxesChartDataConfig';\nimport { AxesChartDataDisplayColumn } from '../common/editorConfig/AxesChartDataDisplay';\nimport { AxesChartColorAndStyleWithTrellis } from '../common/editorConfig/AxesChartColorAndStyle';\nimport { AxesChartLegendWithTrellisAndMode } from '../common/editorConfig/AxesChartLegend';\nimport AxesChartXGridAndLabels from '../common/editorConfig/AxesChartXGridAndLabels';\nimport AxesChartYGridAndLabels from '../common/editorConfig/AxesChartYGridAndLabels';\nimport AxesChartY2GridAndLabels from '../common/editorConfig/AxesChartY2GridAndLabels';\n\nconst dataContract: DataContract = {\n requiredDataSources: [\n {\n name: 'primary',\n description: 'DataSource that powers the visualization',\n },\n ],\n optionalDataSources: [\n {\n name: 'annotation',\n description: 'DataSource that populates event annotations',\n },\n ],\n initialRequestParams: {\n primary: { offset: 0, count: 10000 },\n annotation: { offset: 0, count: 10000 },\n },\n};\n\nconst size: VizSize = {\n initialWidth: 300,\n initialHeight: 300,\n};\n\nconst defaultContext: DefaultContext = {};\n\nconst themes: ThemedDefaults = {\n defaultBackgroundColor: props =>\n pick({\n enterprise: {\n dark: variables.black(props),\n light: variables.backgroundColor(props),\n },\n prisma: variables.backgroundColorSidebar(props),\n })(props),\n defaultFontColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorDefault(props),\n })(props),\n};\n\nconst editorConfig: EditorConfig[] = [\n AxesChartDataConfigAreaColumnLine,\n AxesChartDataDisplayColumn,\n {\n label: AxesChartColorAndStyleWithTrellis.label,\n layout: [\n ...AxesChartColorAndStyleWithTrellis.layout,\n [\n {\n label: _('Spacing between column series'),\n option: 'seriesSpacing',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Spacing between columns'),\n option: 'columnSpacing',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Line width'),\n option: 'lineWidth',\n editor: 'editor.slider',\n editorProps: {\n min: 0.5,\n max: 8.0,\n step: 0.5,\n },\n showEditor: ({ options }) =>\n Array.isArray(options.overlayFields) && options.overlayFields.length > 0,\n },\n ],\n [\n {\n label: _('Annotation colors'),\n option: 'annotationColor',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'annotation',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n ],\n },\n AxesChartLegendWithTrellisAndMode({ showLegendTooltip: false }),\n AxesChartXGridAndLabels,\n AxesChartYGridAndLabels,\n AxesChartY2GridAndLabels,\n];\n\n/**\n * visualization configuration\n */\nconst config: VizConfig = {\n /**\n * unique viz key\n */\n key: 'splunk.column',\n /**\n * viz name\n */\n name: _('Column'),\n category: VizCategory.TRENDS,\n /**\n * viz icon\n */\n icon: ColumnIcon,\n placeholderIcon: ColumnPlaceholderIcon,\n dataContract,\n size,\n defaultContext,\n optionsSchema,\n editorConfig,\n events: {\n 'legend.click': {\n description: 'triggered when user clicks on chart legend',\n },\n 'point.click': {\n description: 'triggered when user clicks on a point in the column chart',\n },\n 'range.select': {\n description: 'triggered when user makes a selection',\n },\n 'point.mouseover': {\n description: 'triggered when user hovers over a data point',\n },\n 'point.mouseout': {\n description: 'triggered when user moves out of a data point',\n },\n },\n supports: [\n VizBehavior.DYNAMIC_OPTIONS,\n VizBehavior.PLACEHOLDER,\n VizBehavior.DOWNSAMPLING,\n VizBehavior.TRELLIS,\n ],\n themes,\n};\n\nexport default enhanceConfig(config);\n", "\nimport * as defaultImport from \"@splunk/themes/getSettingsFromThemedProps\";\nexport * from \"@splunk/themes/getSettingsFromThemedProps\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-encoding/Options\";\nexport * from \"@splunk/visualization-encoding/Options\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/SanitizeProps\";\nexport * from \"@splunk/visualizations-shared/SanitizeProps\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/moment\";\nexport * from \"@splunk/moment\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/hocUtils\";\nexport * from \"@splunk/visualizations-shared/hocUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/JSONSchemaUtils\";\nexport * from \"@splunk/visualizations-shared/JSONSchemaUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/async-dynamic-options-evaluator\";\nexport * from \"@splunk/async-dynamic-options-evaluator\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/id\";\nexport * from \"@splunk/ui-utils/id\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable react/no-unused-prop-types,react/prefer-stateless-function */\nimport * as T from 'prop-types';\nimport { noop } from 'lodash';\nimport { DashboardVizProps } from './interfaces/DashboardVizProps';\nimport { DefaultVizActionHandler } from './interfaces/VizActionHandler';\n\n// this is identical to the initial height and width we use in BaseVisualization in dashboard-visualizations\nexport const INITIAL_WIDTH = 250;\nexport const INITIAL_HEIGHT = 250;\n\n/**\n * A Splunk visualization\n */\nclass SplunkVisualization {\n static propTypes: Record<keyof DashboardVizProps, T.Validator<any>> = {\n /**\n * display mode\n */\n mode: T.oneOf(['view', 'edit', 'export']).isRequired,\n /**\n * width in pixel or string, defaults to 100%\n */\n width: T.oneOfType([T.string, T.number]).isRequired,\n /**\n * height in pixel or string\n */\n height: T.oneOfType([T.string, T.number]).isRequired,\n /**\n * visualization context used for dynamic option evaluation\n */\n context: T.object,\n /**\n * visualization formatting options\n */\n options: T.object,\n /**\n * A callback to update formatting options\n */\n onOptionsChange: T.func,\n /**\n * datasource state which include data and request params, object key indicate the datasource type.\n */\n dataSources: T.objectOf(\n T.shape({\n /**\n * current request params\n */\n requestParams: T.object,\n /**\n * current dataset\n */\n data: T.shape({\n fields: T.array,\n columns: T.array,\n }),\n /**\n * error\n */\n error: T.shape({\n level: T.string,\n message: T.string,\n }),\n /**\n * meta data that came with the dataset\n */\n meta: T.object,\n })\n ),\n /**\n * A callback to trigger event\n */\n onEventTrigger: T.func,\n /**\n * Inform viz if there are handlers listening to events\n */\n hasEventHandlers: T.bool,\n /**\n * A callback to communicate computed props to a consumer\n */\n onComputedProps: T.func,\n /**\n * A callback to obtain visualization api\n */\n vizActionHandlerRef: T.func,\n\n loading: T.bool,\n theme: T.object,\n /**\n * A callback to request new data with updated request params\n */\n onRequestParamsChange: T.func,\n };\n\n /**\n *\n */\n static defaultProps: DashboardVizProps = {\n // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height\n width: '100%',\n height: INITIAL_HEIGHT,\n dataSources: {},\n onEventTrigger: (): Record<string, unknown> => ({}),\n mode: 'view',\n hasEventHandlers: false,\n options: {},\n context: {},\n onOptionsChange: (): Record<string, unknown> => ({}),\n vizActionHandlerRef: (): DefaultVizActionHandler => new DefaultVizActionHandler(),\n onComputedProps: (): Record<string, unknown> => ({}),\n loading: false,\n onRequestParamsChange: noop,\n };\n}\n\nexport default SplunkVisualization;\n", "import * as T from 'prop-types';\nimport { has } from 'lodash';\nimport { DataSourceMeta, SortDirType, validSortDirs } from '../interfaces/DataSource';\n\nexport interface SortParams {\n currentSortKey?: undefined | string;\n currentSortDir?: undefined | SortDirType;\n onSort?: (e: MouseEvent, { sortKey, sortDir }: { sortKey: string; sortDir: SortDirType }) => void;\n}\n\nexport const SortParamsPropTypes = T.shape({\n currentSortKey: T.string,\n currentSortDir: T.oneOf(validSortDirs),\n onSort: T.func,\n});\n\nexport const getSortingParams = ({ requestParams, onRequestParamsChange }: DataSourceMeta): SortParams => {\n let currentSortKey;\n let currentSortDir;\n\n const nextSortDirMap = {\n asc: 'desc',\n desc: 'asc',\n none: 'asc',\n };\n\n let onSort;\n if (typeof onRequestParamsChange === 'function') {\n if (requestParams && has(requestParams, 'sort')) {\n currentSortKey = Object.keys(requestParams.sort).shift();\n currentSortDir = requestParams.sort[currentSortKey];\n }\n\n // undid memoization since there is a dependency on requestParams, which is a deeply nested object\n onSort = (e, { sortKey, sortDir }): void => {\n if (typeof sortKey === 'string') {\n const nextSortDir = has(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : 'none';\n onRequestParamsChange({\n ...requestParams,\n ...{ offset: 0, sort: { [sortKey]: nextSortDir } },\n });\n } else {\n onRequestParamsChange(requestParams);\n }\n };\n }\n\n return {\n currentSortKey,\n currentSortDir,\n onSort,\n };\n};\n", "import * as T from 'prop-types';\nimport { cloneDeep, noop } from 'lodash';\nimport { DataSourceMeta, RequestParams } from '../interfaces/DataSource';\n\nexport interface OnChangeParams {\n page?: number;\n count?: number;\n}\nexport interface PaginatorParams {\n isPaging?: boolean;\n current?: number;\n totalPages?: number;\n onChange?: (e: MouseEvent, x: OnChangeParams) => void;\n}\n\nexport const PaginatorParamsPropTypes = T.shape({\n isPaging: T.bool,\n current: T.number,\n totalPages: T.number,\n onChange: T.func,\n});\n\nexport const getPaginationParams = ({\n requestParams,\n meta,\n onRequestParamsChange,\n}: DataSourceMeta): PaginatorParams => {\n const totalCount = (meta && meta.totalCount) || 0;\n const offset = (requestParams && requestParams.offset) || 0;\n const count = requestParams && requestParams.count;\n const totalPages = typeof count === 'number' && count > 0 ? Math.ceil(totalCount / count) : 0;\n const current = typeof count === 'number' && count > 0 ? Math.floor(offset / count) + 1 : 0;\n const isPaging = totalPages > 1 && typeof onRequestParamsChange === 'function';\n\n const onChangeHandler = (e, { page, count: countArg }: OnChangeParams): void => {\n const newParams: RequestParams = cloneDeep(requestParams);\n\n if (typeof countArg === 'number') {\n newParams.count = countArg;\n newParams.offset = 0;\n }\n\n const pageCount = typeof newParams.count === 'number' ? newParams.count : 10;\n if (typeof page === 'number' && page > 0) {\n newParams.count = pageCount;\n newParams.offset = (page - 1) * pageCount;\n }\n\n onRequestParamsChange(newParams);\n };\n\n return {\n isPaging,\n current,\n totalPages,\n onChange: typeof onRequestParamsChange === 'function' ? onChangeHandler : noop,\n };\n};\n", "import { useRef } from 'react';\nimport { isEqual } from 'lodash';\n\n/**\n * This hook evaluates and stores the result of a passed function and only\n * re-evaluates the function when passed dependencies change.\n *\n * It is different from the internal React useMemo in the following aspects:\n * - it only stores the last evaluated result\n * - it uses a deep equality check to determine if dependencies have changed\n *\n * Inspired by apollo-client's useDeepMemo\n *\n * @param fn the function to be executed and\n * @param dependencies an array of dependencies\n */\nexport const useDeepMemo = <FnReturnType, DepType>(\n fn: () => FnReturnType,\n dependencies: DepType\n): FnReturnType => {\n const ref = useRef<{ dependencies: DepType; value: FnReturnType }>();\n if (!ref.current || !isEqual(dependencies, ref.current.dependencies)) {\n ref.current = {\n dependencies,\n value: fn(),\n };\n }\n return ref.current.value;\n};\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/colorUtils\";\nexport * from \"@splunk/visualizations-shared/colorUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/SizeAwareWrapper\";\nexport * from \"@splunk/visualizations-shared/SizeAwareWrapper\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport { toPx } from '@splunk/visualizations-shared/style';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport SizeAwareWrapper from '@splunk/visualizations-shared/SizeAwareWrapper';\n\n// Global provided via webpack\n// eslint-disable-next-line no-underscore-dangle\ndeclare const __VISION_VERSION__: string;\n\ninterface ItemProps {\n backgroundColor?: string;\n width?: string | number;\n}\n\nconst Item = styled.div.attrs<ItemProps>(({ width }) => ({\n style: {\n width: toPx(width),\n },\n}))<ItemProps>`\n position: relative;\n background-color: ${(props): string =>\n (isColor(props.backgroundColor) && props.backgroundColor) || props.theme.defaultBackgroundColor}};\n`;\n\ninterface FixSizeItemProps {\n backgroundColor?: string;\n height?: string | number;\n width?: string | number;\n}\n\n// Use `.attrs()` for highly dynamic styles. Ref: https://github.com/styled-components/styled-components/issues/134#issuecomment-312415291\nconst FixSizeItem = styled.div.attrs<FixSizeItemProps>(({ width, height }): {\n style: { width?: string; height?: string };\n} => ({\n style: {\n ...(width && { width: toPx(width) }),\n ...(height && { height: toPx(height) }),\n },\n}))<FixSizeItemProps>`\n position: relative;\n flex-direction: column;\n flex: 1;\n display: flex;\n background-color: ${(props): string =>\n (isColor(props.backgroundColor) && props.backgroundColor) || props.theme.defaultBackgroundColor}};\n`;\n\nconst ItemContent = styled.div`\n position: relative;\n min-height: 100px;\n width: 100%;\n`;\n\nconst FixSizeItemContent = styled.div`\n min-height: 0px;\n flex: 1;\n position: relative;\n box-sizing: border-box;\n`;\n\ninterface HeightAndWidthProps {\n width?: string | number;\n height?: string | number;\n backgroundColor?: string;\n}\n\nconst withFixedSizeContainer = <P extends HeightAndWidthProps>(\n Viz: React.ComponentType<P>\n): React.ComponentType<P> => {\n const FixedSizeContainer = (props: P): React.ReactElement => {\n const { width, height, backgroundColor } = props;\n const cachedHandleResize = React.useCallback((w, h) => {\n setContainerWidth(w);\n setContainerHeight(h);\n }, []);\n const [containerWidth, setContainerWidth] = React.useState<number>(Number(props.width));\n const [containerHeight, setContainerHeight] = React.useState<number>(Number(props.height));\n if (!height) {\n return (\n <Item data-test=\"item\" width={width} backgroundColor={backgroundColor}>\n <ItemContent>\n <Viz {...props} />\n </ItemContent>\n </Item>\n );\n }\n return (\n <FixSizeItem\n data-test=\"fix-size-item\"\n data-splunk-visualization-version={__VISION_VERSION__}\n width={width}\n height={height}\n backgroundColor={backgroundColor}\n >\n <FixSizeItemContent>\n <SizeAwareWrapper width={width} height={height} onResize={cachedHandleResize} />\n <Viz {...props} width={containerWidth} height={containerHeight} />\n </FixSizeItemContent>\n </FixSizeItem>\n );\n };\n FixedSizeContainer.displayName = 'withFixedSizeContainer';\n return FixedSizeContainer;\n};\n\nexport default withFixedSizeContainer;\n", "import * as React from 'react';\nimport * as T from 'prop-types';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Message from '@splunk/visualizations-shared/Message';\nimport withFixedSizeContainer from '../hocs/FixedSizeContainer';\n\n/**\n * @method isMissing\n * @param {any} v\n * @returns {boolean} true if the input value === null or undefined\n */\nexport const isMissing = (v): boolean => {\n return v === null || v === undefined;\n};\n\n/**\n * @method misskingKeys\n * @param {string[]} keys\n * @param {object} target\n * @returns {string[]} the keys of missing required props\n */\nexport const missingKeys = (keys: string[], target: Record<string, unknown>): string[] =>\n keys.filter(k => isMissing(target[k]));\n\nexport interface MissingPropsProps {\n width?: string | number;\n height?: string | number;\n missingProps: string[];\n backgroundColor?: string;\n}\n\nconst propTypes: Record<keyof MissingPropsProps, T.Validator<any>> = {\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n // eslint-disable-next-line react/no-unused-prop-types\n backgroundColor: T.string,\n missingProps: T.arrayOf(T.string),\n};\n\n/**\n * @method MissingPropsMessage\n * @param {MissingPropsProps} props\n * @returns {React.ReactElement}\n */\nexport const MissingPropsMessage = (props: MissingPropsProps): React.ReactElement => {\n const { width, height, missingProps } = props;\n return (\n <Message\n data-test=\"message\"\n width={width}\n height={height}\n message={_(`Missing property: ${missingProps.join(', ')}`)}\n />\n );\n};\n\nMissingPropsMessage.propTypes = propTypes;\nMissingPropsMessage.defaultProps = {\n width: '100%',\n height: 250,\n};\nexport default withFixedSizeContainer(MissingPropsMessage);\n", "import { DashboardVizProps } from '../interfaces/DashboardVizProps';\n\nexport type DashboardVizType = React.ComponentType<DashboardVizProps>;\n\n/**\n * @method extendStaticWrapperProps\n * @param {Object} props\n * @param {DashboardVizType} props.Wrapper\n * @param {DashboardVizType} props.Visualization\n */\nexport const extendStaticWrapperProps = ({\n Wrapper,\n Visualization,\n}: {\n [key: string]: DashboardVizType;\n}): void => {\n const extendProperties = ['propTypes', 'defaultProps', 'config'];\n extendProperties.forEach((prop: string): void => {\n if (Visualization[prop]) {\n // eslint-disable-next-line no-param-reassign\n Wrapper[prop] = Visualization[prop];\n }\n });\n};\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport { DashboardVizProps } from '../interfaces/DashboardVizProps';\nimport { ExtendedDashViz } from '../interfaces/ExtendedDashViz';\nimport { extendStaticWrapperProps } from '../utils/hocUtils';\n\n// Global provided via webpack\n// eslint-disable-next-line no-underscore-dangle\ndeclare const __VISION_VERSION__: string;\n\nconst Cover = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n`;\n\nconst Blocker = styled.div.attrs({\n 'data-splunk-visualization-version': __VISION_VERSION__,\n})`\n position: relative;\n width: 100%;\n height: 100%;\n`;\n\n/**\n * HOC that renders a cover layer in edit mode\n * @method withEditModeCover\n * @param {ExtendedDashViz} Visualization\n * @returns {ExtendedDashViz} Wrapper\n */\nconst withEditModeCover = (\n Visualization: ExtendedDashViz,\n disableEditModeCover?: boolean\n): ExtendedDashViz => {\n const Wrapper = (props: DashboardVizProps): React.ReactElement<DashboardVizProps> => {\n const { mode } = props;\n const showEditCover = mode === 'edit' && !disableEditModeCover;\n\n return (\n <Blocker>\n <Visualization {...props} />\n {showEditCover && <Cover data-test=\"edit-mode-cover\" />}\n </Blocker>\n );\n };\n extendStaticWrapperProps({ Wrapper, Visualization });\n return Wrapper as ExtendedDashViz;\n};\n\nexport default withEditModeCover;\n", "import * as React from 'react';\nimport * as T from 'prop-types';\nimport { get } from 'lodash';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Message from '@splunk/visualizations-shared/Message';\nimport { DataSource } from '../interfaces/DataSource';\nimport withFixedSizeContainer from '../hocs/FixedSizeContainer';\n\n/**\n * @method shouldShowIconPlaceholder\n * @param {object} dataSources\n * @param {boolean} loading\n * @returns {boolean}\n */\nexport const shouldShowIconPlaceholder = (\n dataSources: { [name: string]: DataSource },\n loading = false\n): boolean => {\n const data = get(dataSources, 'primary.data.columns[0]', undefined);\n const noData = data === undefined;\n const fields = get(dataSources, 'primary.data.fields[0]', undefined);\n const noFields = fields === undefined;\n return loading || noData || noFields;\n};\n\nexport interface IconPlaceholderProps {\n icon?: React.ComponentType<any>;\n width?: string | number;\n height?: string | number;\n backgroundColor?: string;\n iconColor?: string;\n}\n\nconst propTypes: Record<keyof IconPlaceholderProps, T.Validator<any>> = {\n icon: T.func,\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n // eslint-disable-next-line react/no-unused-prop-types\n backgroundColor: T.string,\n iconColor: T.string,\n};\n\n/**\n * @method IconPlaceholder\n * @param {IconPlaceholderProps} props\n * @returns {React.ReactElement}\n */\nconst IconPlaceholder = (props: IconPlaceholderProps): React.ReactElement => {\n const { width, height, icon, iconColor } = props;\n if (icon) {\n return React.createElement(icon, {\n style: {\n left: '50%',\n top: '50%',\n color: iconColor,\n opacity: 0.15,\n position: 'absolute',\n transform: 'translate(-50%, -50%)',\n },\n width: '50%',\n height: '50%',\n 'data-test': 'icon-placeholder',\n });\n }\n\n return <Message width={width} height={height} level=\"warning\" message={_('No DataSource Connected')} />;\n};\n\nIconPlaceholder.propTypes = propTypes;\nIconPlaceholder.defaultProps = {\n width: '100%',\n height: 250,\n};\n\nexport default withFixedSizeContainer(IconPlaceholder);\n", "import * as React from 'react';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport variables from '@splunk/themes/variables';\nimport IconPlaceholder, { shouldShowIconPlaceholder } from '../components/IconPlaceholder';\nimport { VizBehavior } from '../interfaces/VizBehavior';\nimport { DashboardVizProps } from '../interfaces/DashboardVizProps';\nimport { DataSource } from '../interfaces/DataSource';\nimport { ExtendedDashViz } from '../interfaces/ExtendedDashViz';\nimport { extendStaticWrapperProps } from '../utils/hocUtils';\n\ntype useIconPlaceholderType = (\n dataSources: { [name: string]: DataSource },\n loading: boolean,\n options: Record<string, unknown>\n) => boolean;\n\nconst withPlaceholder = (\n Visualization: ExtendedDashViz,\n useIconPlaceholder: useIconPlaceholderType = shouldShowIconPlaceholder\n): ExtendedDashViz => {\n const { config } = Visualization;\n const { themes } = config;\n\n const Wrapper = (props: DashboardVizProps): React.ReactElement<DashboardVizProps> => {\n const { dataSources, loading, options, height, width } = props;\n\n const showPlaceholder = useIconPlaceholder(dataSources, loading, options);\n const bgColorFromTheme = isColor(options?.backgroundColor)\n ? options?.backgroundColor\n : themes?.defaultBackgroundColor?.(props);\n\n const icon = config.placeholderIcon ?? config.icon;\n const iconColor = variables.contentColorActive(props);\n\n if (config.supports.includes(VizBehavior.PLACEHOLDER) && showPlaceholder) {\n return (\n <IconPlaceholder\n data-test=\"icon-placeholder\"\n icon={icon}\n width={width}\n height={height}\n backgroundColor={bgColorFromTheme}\n iconColor={iconColor}\n />\n );\n }\n\n return <Visualization {...props} />;\n };\n extendStaticWrapperProps({ Wrapper, Visualization });\n return Wrapper as ExtendedDashViz;\n};\n\nexport default withPlaceholder;\n", "import { useMemo } from 'react';\nimport { Options as Opts } from '@splunk/visualization-encoding/Options';\nimport type { DashboardVizProps } from '../interfaces';\n\n/**\n * Hook that evaluates the DSL for subset of a viz's options needed to determine\n * its x and y fields as well as the types of all its fields.\n */\nconst useGetXAndYFields = ({\n shouldEvaluateDSL,\n options,\n context,\n dataSources,\n}: Pick<DashboardVizProps, 'dataSources' | 'options' | 'context'> & { shouldEvaluateDSL: boolean }) => {\n const { dataSourcesWithOnlyOnePoint, dataFrameWithOnlyOnePoint } = useMemo(() => {\n if (!shouldEvaluateDSL) {\n return {\n dataSourcesWithOnlyOnePoint: null,\n dataFrameWithOnlyOnePoint: null,\n };\n }\n\n if (!dataSources?.primary?.data?.columns?.length) {\n return {\n dataSourcesWithOnlyOnePoint: null,\n dataFrameWithOnlyOnePoint: null,\n };\n }\n const { primary: primaryDS } = dataSources;\n\n const columnsWithOnlyOnePoint = primaryDS.data.columns.map(column => {\n return [column[0]];\n });\n\n const filteredDataSources = {\n primary: {\n ...primaryDS,\n data: {\n ...primaryDS.data,\n columns: columnsWithOnlyOnePoint,\n },\n },\n };\n\n return {\n dataSourcesWithOnlyOnePoint: filteredDataSources,\n dataFrameWithOnlyOnePoint: Opts.dataFrameFromDataSource(filteredDataSources),\n };\n }, [dataSources, shouldEvaluateDSL]);\n\n const xAndYFieldsWithTypes = useMemo(() => {\n try {\n if (!dataSourcesWithOnlyOnePoint || !dataFrameWithOnlyOnePoint) {\n return options;\n }\n\n if (!options?.x || (!options?.y && !options?.y2)) {\n return options;\n }\n\n const optionsToEvaluate = {\n x: options.x,\n xField: '> x | getField()',\n y: options.y,\n yFields: options.y ? '> y | getField()' : undefined,\n y2: options.y2,\n y2Fields: options.y2 ? '> y2 | getField()' : undefined,\n fieldTypes: '> primary | getType()',\n };\n\n const { xField = '', yFields = [], y2Fields = [], fieldTypes } = Opts.evaluate(\n { options: optionsToEvaluate, context },\n dataSourcesWithOnlyOnePoint,\n () => {},\n dataFrameWithOnlyOnePoint\n );\n return {\n xField,\n yFields: [...yFields, ...y2Fields],\n fieldTypes,\n };\n } catch (e) {\n return {\n xField: undefined,\n yFields: [],\n fieldTypes: [],\n };\n }\n }, [options, context, dataSourcesWithOnlyOnePoint, dataFrameWithOnlyOnePoint]);\n\n return xAndYFieldsWithTypes;\n};\n\nexport default useGetXAndYFields;\n", "import { useRef, useMemo, useEffect, useState } from 'react';\nimport { debounce, isEqual, pick } from 'lodash';\nimport type { DashboardVizProps } from '../interfaces';\nimport type { DownsampleOptions } from '../utils/dataUtils';\nimport { downsampleDataSources } from '../utils/dataUtils';\nimport usePrevious from './usePrevious';\nimport useGetXAndYFields from './useGetXAndYFields';\n\n// Options properties which impact/require re-downsample on change.\nconst downsampleVizOptionProperties = ['nullValueDisplay'];\n\nconst useDownsampleDataSources = ({\n dataSources,\n options,\n context,\n threshold,\n isDownsamplingEnabled,\n}: Pick<DashboardVizProps, 'dataSources' | 'options' | 'context'> & {\n threshold: number;\n isDownsamplingEnabled?: boolean;\n}) => {\n const isFirstUseEffectCall = useRef(true);\n\n const xAndYFieldsWithTypes = useGetXAndYFields({\n shouldEvaluateDSL: isDownsamplingEnabled,\n options,\n context,\n dataSources,\n });\n\n // Extract viz options that impact downsampling.\n const downsampleVizOptions = useMemo(() => pick(options, downsampleVizOptionProperties), [options]);\n const downsampleDSOptions = useMemo(\n () => ({\n ...downsampleVizOptions,\n ...xAndYFieldsWithTypes,\n }),\n [xAndYFieldsWithTypes, downsampleVizOptions]\n );\n\n const previousDownsampleDSOptions = usePrevious(downsampleDSOptions);\n const previousDataSources = usePrevious(dataSources);\n const previousThreshold = usePrevious(threshold);\n\n const [downsampledDataSources, setDownsampledDataSources] = useState(() => {\n return isDownsamplingEnabled\n ? downsampleDataSources({\n dataSources,\n threshold,\n options: downsampleDSOptions,\n })\n : dataSources;\n });\n\n const debouncedDownsampleDataSources = useMemo(() => {\n return debounce(\n (downsampleOptions: DownsampleOptions) => {\n const downsampledResult = downsampleDataSources(downsampleOptions);\n setDownsampledDataSources(downsampledResult);\n },\n 100,\n { trailing: true }\n );\n }, []);\n\n useEffect(() => {\n // don't downsample again on the use effect call that happened due to the initial render\n // this is since we already downsampled as part of the useState call\n if (isFirstUseEffectCall.current) {\n isFirstUseEffectCall.current = false;\n return;\n }\n\n if (!isDownsamplingEnabled) {\n setDownsampledDataSources(dataSources);\n return;\n }\n\n if (\n isEqual(previousDownsampleDSOptions, downsampleDSOptions) &&\n previousDataSources === dataSources &&\n previousThreshold === threshold\n ) {\n return;\n }\n\n // Debounce the downsampling so we don't have to downsample and execute DSL multiple times\n // while the viz is being resized\n debouncedDownsampleDataSources({\n dataSources,\n options: downsampleDSOptions, // Dont want to re-downsample everytime the options change\n threshold,\n });\n\n // need to detect if this runs as part of the initial render\n }, [\n dataSources,\n downsampleDSOptions,\n debouncedDownsampleDataSources,\n xAndYFieldsWithTypes,\n threshold,\n isDownsamplingEnabled,\n previousDataSources,\n previousThreshold,\n previousDownsampleDSOptions,\n ]);\n\n return downsampledDataSources;\n};\n\nexport default useDownsampleDataSources;\n", "\nimport * as defaultImport from \"@splunk/visualization-context/FeatureFlags\";\nexport * from \"@splunk/visualization-context/FeatureFlags\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import * as React from 'react';\nimport FeatureFlags from '@splunk/visualization-context/FeatureFlags';\n\nexport const getFeatureFlag = (context: React.Context<any> | null | undefined, flagName: string): boolean => {\n // look for feature flag in context first\n if (context && Object.keys(context).find(key => key === flagName)) {\n return context[flagName];\n }\n\n // fall back to defaults\n if (Object.keys(FeatureFlags).find(key => key === flagName)) {\n return FeatureFlags[flagName];\n }\n\n // fall back to false\n return false;\n};\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/trellisUtils\";\nexport * from \"@splunk/visualizations-shared/trellisUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { cloneDeep, omit } from 'lodash';\nimport { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport {\n DataSplitMode,\n CHART,\n TIMECHART,\n STATS,\n UNKNOWN,\n extractDataSourceAggregationKeysChart,\n extractDataSourceAggregationKeysStats,\n extractSplitByFieldsChartFields,\n extractSplitByFieldsForStats,\n extractSplitByFieldsForUnknown,\n} from '@splunk/visualizations-shared/trellisUtils';\nimport { DataSource } from '../interfaces/DataSource';\n\nexport type SplitDataSource = { [key: string]: { [name: string]: DataSource } };\nexport interface DataSplitResult {\n splitDataSources: SplitDataSource;\n errorCode: 'UNKNOWN_DATA_SPLIT_MODE' | 'INVALID_SPLIT_BY_FIELD' | 'UNKNOWN';\n}\nexport const AGGREGATIONS = 'aggregations';\n\n/**\n * There can be certain SPL cmds that can produce dataSource without a specific field meta info (like group_by_rank, split_by_field etc),\n * to categorize it,\n * Example1:- `index = \"_internal\" | chart count`\n * Example2:- `index=_internal | chart avg(count), max(count)`\n * Example3:- `index = \"_internal\" | stats count`\n * Example4:- `index=_internal | stats avg(count), max(count)`\n */\nexport const dataSourcesSplitByAggregationsUnknown = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields;\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let errorCode = null;\n\n if (fields && fields.length) {\n splitDataSources = {};\n for (let i = 0; i < fields.length; i += 1) {\n const fieldName = (fields[i] as FieldEntry).name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nconst toFieldEntries = (fields: FieldEntry[] | string[]): FieldEntry[] => {\n return fields.map(field => {\n if (typeof field === 'string') {\n return { name: field };\n }\n return field;\n });\n};\n\nexport const dataSourcesSplitByAggregationsTimechartAndChart = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysChart(fields);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n fields.forEach((field: FieldEntry, idx) => {\n const fieldName = field?.name;\n if (\n fieldName !== '_time' &&\n !fieldName?.startsWith('_') &&\n field.data_source === splitByField\n ) {\n splitDataSources[splitByField].primary.data.fields.push(field);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n });\n } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {\n // handle where data_source doesnot exist in fields\n // example1 :- index=_internal | timechart count\n // example2 :- index=_internal | timechart max(count) avg(count)\n splitDataSources = {};\n for (let i = 1; i < fields.length; i += 1) {\n const fieldName = (fields[i] as FieldEntry).name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[0], fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[0], columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByAggregationsStats = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysStats(fields as FieldEntry[]);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n const idx = fields.findIndex(field => field.name === splitByField);\n if (idx > 0) {\n splitDataSources[splitByField].primary.data.fields.push(fields[idx]);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeTimechart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractSplitByFieldsChartFields(fields as FieldEntry[]);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n // not including internal fields\n if (!fields[i].name?.startsWith('_')) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: fields[0].name },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeChart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractSplitByFieldsChartFields(fields);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const splitByFieldIdx = splitByFields.findIndex(f => f === splitBy);\n const otherSplitBy = splitByFields.filter(f => f !== splitBy);\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const nonDataSourceAggregations = [];\n if (\n !dataSourceKeys.length &&\n fields[0].groupby_rank === '0' &&\n fields.length &&\n !fields[1].groupby_rank\n ) {\n /* check for another aggregation scenario where no key 'data_source' will be returned (applies for both chart and stats cmd)\n For example :-\n index=_internal | chart count by status\n index = \"_internal\" | chart max(count) avg(count) by status\n index = \"_internal\" | stats max(count) avg(count) by status\n where field meta info is in this format -\n \"fields\": [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"max(count)\"\n },\n {\n \"name\": \"avg(count)\"\n }\n ]\n */\n\n for (let i = 1; i < fields.length; i += 1) {\n nonDataSourceAggregations.push(fields[i].name);\n }\n }\n if (splitByFieldIdx === 0) {\n // if splitBy is the first field, split row wise\n const valueKeys = cloneDeep(columns[0]);\n valueKeys.forEach((val, idx) => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [];\n if (otherSplitBy.length) {\n splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }]; // there can only be one otherSplitBy for chart cmd\n }\n if (dataSourceKeys.length) {\n const columnValues = [[]];\n splitDataSources[val].primary.data.fields = [\n ...splitDataSources[val].primary.data.fields,\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n dataSourceKeys.forEach(() => {\n columnValues.push([]);\n });\n /**\n * There can be chart SPL cmd where there are multiple data_source keys in the field meta info.\n * For eg - index = \"_internal\" | chart avg(count) max(count) by status , user) can result in fields and columns as below where \"data_source\" keys are \"avg(count)\" and \"max(count)\"\n * 'fields' : [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"avg(count): userA\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"avg(count): userB\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"avg(count): userC\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n {\n \"name\": \"max(count): userA\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"max(count): userB\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"max(count): userC\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n ]\n 'columns' : [['200','303','304','400'], ['1','2','3','4'], ['10','20','30','40'], ['100','200','300','400'], ['5','6','7','8'], ['50','60','70','80'],['500','600','700','800']]\n\n In this case when we split row wise, the data_source keys for userA appears in indices [1, 4, ..], the data_source keys for userB appears in indices [2, 5, ..]\n The resulting dataSplit for status '200', will have the fields => ['user','avg(count)', 'max(count)'] columns => [['userA', 'userB', 'userC'],['1','10','100'], ['5', '50', '500'] ]\n\n For the example above for..loop below will iterate from i= 1 to 3 (Math.ceil((fields.length - 1) / dataSourceKeys.length)). Exclude i = 0 as first column is the splitBy input.\n Since there are 2 data_source keys 'avg(count)' and 'max(count)', dataSourceKeys.forEach loop will collect individual arrays specific to the columnValues[indx] as below.\n columnValues[0] = ['userA', 'userB', 'userC']\n columnValues[1] = ['1','10','100']\n columnValues[2] = ['5', '50', '500']\n */\n for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {\n columnValues[0].push(\n fields[i].splitby_value ? fields[i].splitby_value : fields[i].name\n );\n dataSourceKeys.forEach((dskey, dsIndx) => {\n const mul = (fields.length - 1) / dataSourceKeys.length; // This line does the index calculation\n columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);\n });\n }\n splitDataSources[val].primary.data.columns = columnValues;\n } else if (nonDataSourceAggregations.length) {\n // There can be SPL where data_source field metainfo is not available and needs special handling\n // For eg :-\n // index=_internal | chart count by status\n // index = \"_internal\" | chart max(count) avg(count) by status\n // index = \"_internal\" | stats max(count) avg(count) by status\n const columnValues = [];\n fields.forEach((aggregationField, fieldIdx) => {\n if (fieldIdx > 0) {\n splitDataSources[val].primary.data.fields.push(aggregationField);\n columnValues.push([columns[fieldIdx][idx]]);\n }\n });\n splitDataSources[val].primary.data.columns = columnValues;\n }\n });\n } else {\n // split column wise\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: otherSplitBy[0] },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (\n field.data_source === dsKey &&\n (field.splitby_value === val || field.name === val)\n ) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\n/**\n * This method does datasplitting for 'stats' and generic cmds('makeresults','table' etc - categoried as 'unknown' splitMode).\n * The main difference is for 'stats' cmd possible splitBy fields have 'group_by_rank' in field meta info, whereas for 'unknown' cmd it can be any fieldnames\n */\nexport const dataSourcesSplitByModeStatsorUnknown = (\n dataSource: { [name: string]: DataSource },\n splitBy: string,\n splitMode?: DataSplitMode\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields;\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields =\n splitMode !== UNKNOWN\n ? extractSplitByFieldsForStats(fields as FieldEntry[])\n : extractSplitByFieldsForUnknown(fields as FieldEntry[]);\n }\n const splitByIndex = fields?.findIndex(\n field => field === splitBy || (field as FieldEntry).name === splitBy\n );\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n const splitByColumn = dataSource?.primary?.data?.columns[splitByIndex];\n splitDataSources = {};\n splitByColumn.forEach((val, idx) => {\n if (!splitDataSources[val]) {\n splitDataSources[val] = [idx];\n } else {\n splitDataSources[val].push(idx);\n }\n });\n const cloneFields = cloneDeep(fields);\n cloneFields.splice(splitByIndex, 1);\n const valueKeys = Object.keys(splitDataSources);\n valueKeys.forEach(val => {\n const valIndices = cloneDeep(splitDataSources[val]);\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = cloneFields;\n splitDataSources[val].primary.data.columns = [];\n columns.forEach((col, idx) => {\n if (idx !== splitByIndex) {\n const newCol = valIndices.map(valIdx => col[valIdx]);\n splitDataSources[val].primary.data.columns.push(newCol);\n }\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const getTrellisDataSourcesBySplitMode = (\n splitMode: DataSplitMode,\n dataSources: { [name: string]: DataSource },\n trellisSplitBy: string\n): DataSplitResult => {\n let result: DataSplitResult = null;\n try {\n if (splitMode === TIMECHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeTimechart(dataSources, trellisSplitBy);\n } else if (splitMode === STATS) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsStats(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, STATS);\n } else if (splitMode === CHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeChart(dataSources, trellisSplitBy);\n } else if (splitMode === UNKNOWN) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsUnknown(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, UNKNOWN);\n }\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error('getTrellisDataSourcesBySplitMode ', ex);\n result = { splitDataSources: null, errorCode: 'UNKNOWN' };\n }\n return result;\n};\n\n/**\n * sets legendDisplay to off when a visualization is in trellis mode and not set by the user\n * @param {Boolean} isTrellisOn\n * @param {DashboardVizOpts} options\n * @param {DashboardVizOpts} defaultOptions\n * @returns { {'legendDisplay', 'off'} or {} }\n */\nexport const turnOffLegendDisplayWhenTrellisIsOn = (\n isTrellisOn: boolean,\n options: Record<string, any>\n): Record<string, string> => {\n if (isTrellisOn && !options.legendDisplay) {\n return {\n legendDisplay: 'off',\n };\n }\n return {};\n};\n\n/**\n * helper fn that calculates shared min and max from the split data in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number>} [min, max]\n */\nconst calculateSharedMinMax = (splitData: SplitDataSource): Array<number> => {\n let max = -Infinity;\n let min = Infinity;\n\n Object.keys(splitData).forEach(splitByKey => {\n const datasources = splitData[splitByKey];\n Object.keys(datasources).forEach(datasourceName => {\n const dataColumns = datasources[datasourceName].data.columns;\n dataColumns.forEach(column => {\n column.forEach(point => {\n // Convert the string to a number. Non-numeric strings are converted to 'nan' and will be ignored.\n const pointNumber = Number(point);\n if (pointNumber > max) {\n max = pointNumber;\n }\n if (pointNumber < min) {\n min = pointNumber;\n }\n });\n });\n });\n });\n\n return [min, max];\n};\n\n/**\n * determines min and max to use in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number | string>} [min, max]\n */\nexport const determineMinMax = (\n splitData: SplitDataSource,\n trellisSharedScale: boolean,\n yAxisMin: number | string,\n yAxisMax: number | string,\n stackMode?: string\n) => {\n if (!trellisSharedScale || stackMode === 'stacked100' || (yAxisMin !== 'auto' && yAxisMax !== 'auto'))\n return [yAxisMin, yAxisMax];\n\n const [sharedMin, sharedMax] = calculateSharedMinMax(splitData);\n\n const shouldUseSharedMax = sharedMax !== -Infinity && yAxisMax === 'auto';\n const shouldUseSharedMin = sharedMin !== Infinity && yAxisMin === 'auto';\n\n return [shouldUseSharedMin ? sharedMin : yAxisMin, shouldUseSharedMax ? sharedMax : yAxisMax];\n};\n", "import * as React from 'react';\nimport { camelCase, has, get, defaultsDeep } from 'lodash';\nimport getSettingsFromThemedProps from '@splunk/themes/getSettingsFromThemedProps';\nimport { Options as Opts } from '@splunk/visualization-encoding/Options';\nimport { withSanitizedProps } from '@splunk/visualizations-shared/SanitizeProps';\nimport type { TimezoneContextInterface } from '@splunk/visualization-context/TimezoneContext';\nimport TimezoneContext from '@splunk/visualization-context/TimezoneContext';\nimport moment from '@splunk/moment';\nimport FeatureFlagContext from '@splunk/visualization-context/FeatureFlagContext';\nimport { withTheme } from 'styled-components';\nimport { deepMergeWithArrayPrimitiveOverrides } from '@splunk/visualizations-shared/hocUtils';\nimport { pickFieldFromJSONSchema } from '@splunk/visualizations-shared/JSONSchemaUtils';\nimport AsyncDynamicOptionsEvaluator, {\n AsyncDynamicOptionsEvaluatorParams,\n} from '@splunk/async-dynamic-options-evaluator';\nimport { createGUID } from '@splunk/ui-utils/id';\nimport type { Frames } from '@splunk/visualization-encoding/EncodingExecutor';\nimport SplunkVisualization from './SplunkVisualization';\nimport type { DashboardVizProps, DataSource, VizConfig, VizProps } from './interfaces';\nimport { VizBehavior } from './interfaces/VizBehavior';\nimport { getSortingParams } from './hooks/getSorting';\nimport { getPaginationParams } from './hooks/getPagination';\nimport { useDeepMemo } from './hooks/useDeepMemo';\nimport MissingPropsMessage, { missingKeys } from './components/MissingPropsMessage';\nimport withEditModeCover from './hocs/withEditModeCover';\nimport withPlaceholder from './hocs/withPlaceholder';\nimport { ChartingProps } from './Charting';\nimport useDownsampleDataSources from './hooks/useDownsampleDataSources';\nimport { isDownsamplingEnabledForViz } from './utils/dataUtils';\nimport { getFeatureFlag } from '../common/utils/featureFlagUtils';\nimport { turnOffLegendDisplayWhenTrellisIsOn } from '../common/utils/trellisUtils';\n\ntype HOC = (props: DashboardVizProps) => React.ReactElement<DashboardVizProps>;\nexport interface DashboardVizOpts {\n ReactViz: React.ComponentType<ChartingProps | VizProps>; // we will wrap this in DashboardViz (see const DashboardViz = ...)\n vizConfig: VizConfig;\n computeVizProps?: (props) => any;\n computeVizPropsBeforeEval?: (props) => any;\n disableEditModeCover?: boolean;\n useIconPlaceholder?: (\n dataSources: { [name: string]: DataSource },\n loading: boolean,\n options: Record<string, unknown>\n ) => boolean;\n}\n\n/**\n * hoc that wraps a pure react visualization in a Dashboard visualization\n * @param {DashboardVizOpts} opts\n * @returns {HOC}\n */\nconst withDashboardViz = (opts: DashboardVizOpts): HOC => {\n const {\n ReactViz,\n vizConfig,\n computeVizProps = () => {},\n computeVizPropsBeforeEval = () => {},\n disableEditModeCover,\n useIconPlaceholder,\n } = opts;\n\n // sanitizing props before sending them to reactviz.\n const SanitizedReactViz = withSanitizedProps(ReactViz);\n const defaultOptions = pickFieldFromJSONSchema(vizConfig.optionsSchema, 'default');\n\n const DashboardViz = (props: DashboardVizProps): React.ReactElement<DashboardVizProps> => {\n const {\n mode,\n hasEventHandlers,\n dataSources, // type of { [key: string]: DataSource }\n options,\n context = {},\n width,\n height,\n onComputedProps,\n onEventTrigger,\n theme,\n onRequestParamsChange,\n } = props;\n const { serializedTimezone } = React.useContext<TimezoneContextInterface>(TimezoneContext);\n if (serializedTimezone) {\n /*\n @splunk/moment currently does not allow us to customize the timezone on a per visualization basis.\n This ensures that if a timezone was provided via TimezoneContext @splunk/moment time formatting\n will use it.\n\n @TODO(pwied):\n - remove when we moved away from @splunk/moment\n - provide timezone context to dynamic option evaluation phase\n */\n if (!moment.getDefaultSplunkTimezone()) {\n moment.setDefaultSplunkTimezone(serializedTimezone);\n }\n }\n\n const themeFunc = themeVar => vizConfig.themes[themeVar]?.(props);\n const bgColorFromTheme = themeFunc('defaultBackgroundColor');\n const {\n family: currentThemeFamily,\n colorScheme: currentThemeColorScheme,\n density: currentThemeDensity,\n } = getSettingsFromThemedProps({ theme });\n let evaluatedOptions: Record<string, unknown> = {}; // evaluatedOptions need to be initialized as an empty object\n const [evaluatedOptionsAsync, setEvaluatedOptionsAsync] = React.useState({}); // evaluatedOptions need to be initialized as an empty object\n const featureFlagContext = React.useContext<FeatureFlagContext>(FeatureFlagContext);\n\n const [visualizationID] = React.useState(`${vizConfig.name} - ${createGUID()}`);\n\n const [dataSourcesInState, setDataSourcesInState] = React.useState({});\n const [dataFramesInState, setDataFramesInState] = React.useState<Frames | undefined>();\n\n const [useAsyncEvaluatedOptions, setUseAsyncEvaluatedOptions] = React.useState(\n Boolean(getFeatureFlag(featureFlagContext, 'visualizations_useWebWorkersForDSL'))\n );\n const isDownsamplingEnabledByFeatureFlag = Boolean(\n featureFlagContext?.visualizations_enableDownsampling\n );\n const isTrellisFeatureFlagOn = Boolean(\n featureFlagContext && featureFlagContext.visualizations_enableTrellis\n );\n const isTrellisOn =\n isTrellisFeatureFlagOn &&\n vizConfig?.supports?.includes(VizBehavior.TRELLIS) &&\n options?.splitByLayout === VizBehavior.TRELLIS;\n const isMounted = React.useRef(true);\n const optionsToEvaluate = React.useMemo(() => {\n const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);\n // computeVizPropsBeforeEval will run before DSL gets evaluated\n const computedOptions = computeVizPropsBeforeEval(options) ?? {};\n return {\n context: defaultsDeep({}, context, vizConfig.defaultContext),\n options: deepMergeWithArrayPrimitiveOverrides(\n {},\n legendDisplay,\n computedOptions,\n options,\n defaultOptions\n ),\n };\n }, [isTrellisOn, options, context]);\n\n const [threshold, setThreshold] = React.useState(Number(width));\n const onDownsamplingThresholdChange = React.useCallback((newThreshold: number) => {\n setThreshold(newThreshold);\n }, []);\n const isDownsamplingEnabled = React.useMemo(() => {\n return isDownsamplingEnabledByFeatureFlag && isDownsamplingEnabledForViz({ vizConfig });\n }, [isDownsamplingEnabledByFeatureFlag]);\n\n const downsamplingProps = React.useMemo(() => {\n if (!isDownsamplingEnabled) {\n return {};\n }\n return {\n onDownsamplingThresholdChange,\n originalDataSources: dataSources,\n };\n }, [dataSources, isDownsamplingEnabled, onDownsamplingThresholdChange]);\n const downsampledDataSources = useDownsampleDataSources({\n options: optionsToEvaluate.options,\n context: optionsToEvaluate.context,\n dataSources,\n threshold,\n isDownsamplingEnabled,\n });\n\n evaluatedOptions = useDeepMemo(() => {\n try {\n if (useAsyncEvaluatedOptions) {\n const asyncDynamicOptionsEvaluatorParams: AsyncDynamicOptionsEvaluatorParams = {\n visualizationID,\n props,\n options: optionsToEvaluate,\n dataSources: downsampledDataSources,\n theme: vizConfig.themes,\n bypassCloneDeepOptionScope: Boolean(\n getFeatureFlag(featureFlagContext, 'visualizations_bypassCloneDeepOptionScope')\n ),\n lazyLoadingDataFrame: Boolean(\n getFeatureFlag(featureFlagContext, 'visualizations_lazyLoadingDataFrame')\n ),\n };\n AsyncDynamicOptionsEvaluator.evaluate(asyncDynamicOptionsEvaluatorParams)\n .then(results => {\n setEvaluatedOptionsAsync(results.results);\n })\n .catch(() => {\n if (isMounted.current) {\n setUseAsyncEvaluatedOptions(false);\n }\n });\n } else {\n let dataFrames: Frames | undefined = dataFramesInState;\n if (downsampledDataSources !== dataSourcesInState) {\n setDataSourcesInState(downsampledDataSources);\n dataFrames = Opts.dataFrameFromDataSource(\n downsampledDataSources,\n getFeatureFlag(featureFlagContext, 'visualizations_lazyLoadingDataFrame')\n );\n setDataFramesInState(dataFrames);\n }\n const result = Opts.evaluate(\n optionsToEvaluate,\n downsampledDataSources,\n themeFunc,\n dataFrames,\n getFeatureFlag(featureFlagContext, 'visualizations_bypassCloneDeepOptionScope')\n );\n return result;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(`unexpected error evaluating options: ${e.message}`);\n return {};\n }\n return {};\n }, [\n currentThemeFamily,\n currentThemeColorScheme,\n currentThemeDensity,\n optionsToEvaluate,\n downsampledDataSources,\n serializedTimezone,\n useAsyncEvaluatedOptions,\n ]);\n\n const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;\n\n // trellis specific backgroundColor update for onComputedProps\n // if trellis is enabled following these three criteria - 1) trellis feature flag is enabled 2) vizConfig supports array has 'trellis' 3) option 'splitByLayout' is set to 'trellis\n // onComputedProps api should return back trellisBackgroundColor value for backgroundColor option to support coloring of sibling panels (for eg:- title/ description on UDF side)\n const clonedEvaluatedOptions: Record<string, unknown> = { ...evaluatedOptionsToUse };\n if (isTrellisOn) {\n clonedEvaluatedOptions.backgroundColor = clonedEvaluatedOptions?.trellisBackgroundColor;\n }\n // useEffect hook needs to be initialized before any early returns\n // this is in accordance with the order of hook calls being the same on each render https://reactjs.org/docs/hooks-rules.html#explanation\n React.useEffect((): void => {\n onComputedProps(clonedEvaluatedOptions);\n });\n\n React.useEffect((): (() => void) => {\n return () => {\n if (useAsyncEvaluatedOptions) {\n isMounted.current = false;\n AsyncDynamicOptionsEvaluator.reset(visualizationID);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // present warning message if any required props are missing\n const { requiredProps = [], supports } = vizConfig;\n const missing = missingKeys(requiredProps, evaluatedOptionsToUse);\n if (\n missing.length > 0 &&\n supports.includes(VizBehavior.PLACEHOLDER) &&\n vizConfig.key !== 'splunk.singlevalue' // For SV missing props msg is not displayed if required props majorValue is missing, instead this will be handled from the component, instead handled within component\n ) {\n return (\n <MissingPropsMessage\n data-test=\"missing-props-message\"\n width={width}\n height={height}\n missingProps={missing}\n backgroundColor={bgColorFromTheme}\n />\n );\n }\n\n // events\n const eventCallbackProps = {};\n if (hasEventHandlers && mode === 'view' && vizConfig.supports.indexOf(VizBehavior.EVENTS) > -1) {\n const supportedEvents = vizConfig.events;\n Object.keys(supportedEvents).forEach((eventName): void => {\n const { parentKeys, payloadKeys } = supportedEvents[eventName];\n const eventCallbackPropName = camelCase(`on.${eventName}`);\n\n // todo: refactor single value and single value icon to send payload from viz\n // then remove these lines\n let payload = {};\n if (Array.isArray(payloadKeys) && payloadKeys.length) {\n payloadKeys.forEach(p => {\n payload[p] = evaluatedOptionsToUse[p];\n });\n }\n\n eventCallbackProps[eventCallbackPropName] = (ev): Record<string, unknown> => {\n if (ev && ev.payload) {\n payload = ev.payload;\n }\n\n return onEventTrigger({ originalEvent: ev, payload, type: eventName });\n };\n\n if (parentKeys) {\n for (let i = parentKeys.length - 1; i >= 0; i -= 1) {\n const newObject = {};\n newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];\n eventCallbackProps[eventCallbackPropName] = newObject;\n }\n }\n });\n }\n\n // compute pure viz props which are not from options\n const computedVizProps = computeVizProps({\n ...props,\n ...evaluatedOptionsToUse,\n ...eventCallbackProps,\n themeFunc,\n });\n\n /**\n * PAGE_AND_SORT behavior\n *\n * Some visualizations, like table, requires metadata about the datasource,\n * like total number of results, current count, offset, and sort, for rendering\n * paginator and sorting direction. In this approach, the visualization\n * allow users to set 'paginateDataSourceKey' to select which datasource\n * should the visualization extract the metadata from. It defaults to 'primary' datasource.\n * The visualization config should set the PAGE_AND_SORT behavior to receive\n * 'requestParams', 'meta' and onRequestParams callback as props.\n *\n * In future, we could automatically detect which all datasources are being used\n * and bind those magically to pagination/sorting behavior.\n */\n let dataSourceMetadata = {};\n const OptionKey = 'paginateDataSourceKey';\n const optsKey = has(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];\n const paginateDataSourceKey = typeof optsKey === 'string' ? optsKey : 'primary';\n if (\n vizConfig.supports.indexOf(VizBehavior.PAGE_AND_SORT) > -1 &&\n has(dataSources, paginateDataSourceKey)\n ) {\n const requestParams = get(dataSources, [paginateDataSourceKey, 'requestParams'], {});\n const meta = get(dataSources, [paginateDataSourceKey, 'meta'], {});\n const handleRequestParamsChange = (payload: Record<string, unknown>): void =>\n onRequestParamsChange(paginateDataSourceKey, payload);\n\n const sortParams = getSortingParams({\n requestParams,\n meta,\n onRequestParamsChange: handleRequestParamsChange,\n });\n\n const paginatorParams = getPaginationParams({\n requestParams,\n meta,\n onRequestParamsChange: handleRequestParamsChange,\n });\n\n dataSourceMetadata = {\n sortParams,\n paginatorParams,\n };\n }\n\n // if were using webworkers and this is the first render we dont want to show a viz with missing data so we return null\n if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {\n return null;\n }\n\n return (\n <SanitizedReactViz\n mode={mode}\n width={width}\n height={height}\n {...downsamplingProps}\n {...evaluatedOptionsToUse}\n {...computedVizProps}\n {...eventCallbackProps}\n {...dataSourceMetadata}\n />\n );\n };\n\n DashboardViz.propTypes = {\n ...SplunkVisualization.propTypes,\n ...ReactViz.propTypes,\n };\n\n DashboardViz.defaultProps = {\n ...SplunkVisualization.defaultProps,\n ...ReactViz.defaultProps,\n // using withTheme requires component to receive theme prop. In case the consumer did not provide ThemeProvider, a default empty object will prevent warnings.\n theme: {},\n };\n // attach viz config\n DashboardViz.config = vizConfig;\n\n // @ts-ignore: TODO fix sc upgrade TS issues\n return withTheme(\n withPlaceholder(withEditModeCover(DashboardViz, disableEditModeCover), useIconPlaceholder)\n );\n};\n\nexport default withDashboardViz;\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/propUtils\";\nexport * from \"@splunk/visualizations-shared/propUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { has, isArray, isUndefined } from 'lodash';\nimport type { JsonColumnData } from './interfaces/DataSource';\n\ninterface ChartOptions {\n [key: string]: any;\n}\n\n/**\n * Get formatted annotations\n * @method getAnnotations\n * @param {Object} options\n * @param {Array} options.annotationX\n * @param {Array} options.annotationColor\n * @param {Array} options.annotationLabel\n * @returns {Array}\n */\nexport const getAnnotations = ({ annotationX, annotationColor, annotationLabel }) =>\n annotationX && annotationX.length\n ? annotationX.map((timestamp, i) => ({\n color: annotationColor && annotationColor[i],\n label: annotationLabel && annotationLabel[i],\n time: timestamp,\n }))\n : [];\n\n/**\n * Truncate the result set to given limit\n * @method truncateData\n * @param {Object} dataSet - dataSources.primary.data\n * @param {Number|String} truncationLimit - options['chart.resultTruncationLimit']\n * @returns {Object}\n */\nexport const truncateData = (dataSet, truncationLimit): Record<string, any[]> => {\n if (!dataSet) {\n return null;\n }\n\n const limit = parseInt(truncationLimit, 10);\n if (!limit || limit <= 0) {\n return dataSet;\n }\n\n const truncatedData: Record<string, Array<string[] | number[]>> = { ...dataSet };\n truncatedData.columns = truncatedData.columns.map(columnData =>\n columnData && Array.isArray(columnData) ? columnData.slice(0, limit) : columnData\n );\n return truncatedData;\n};\n\n/**\n * Helper method to update the option values into the values that SC accepts\n * @method mapToValues\n * @param {Object} options\n * @returns {Object}\n */\nexport const mapToValues = (optionValuesSCMapping: Record<string, any>) => options => {\n const convertedOptions: Record<string, any> = { ...options };\n Object.keys(optionValuesSCMapping).forEach(key => {\n if (has(options, key)) {\n const updatedValue = optionValuesSCMapping[key][options[key]];\n if (!isUndefined(updatedValue)) {\n convertedOptions[key] = updatedValue;\n }\n }\n });\n return convertedOptions;\n};\n\ninterface y2AxisOptions extends ChartOptions {\n y2Fields?: string | string[];\n}\n\n/**\n * Helper method to process options related to y2Fields\n * @method convertY2AxisOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertY2AxisOptions = ({\n y2Fields,\n ...originalOptions\n}: y2AxisOptions): Record<string, any> => {\n const convertedOptions: Record<string, any> = {\n ...originalOptions,\n };\n if (y2Fields) {\n convertedOptions['axisY2.enabled'] = true;\n convertedOptions['axisY2.fields'] = isArray(y2Fields)\n ? y2Fields.filter(name => name).join(',')\n : y2Fields;\n }\n return convertedOptions;\n};\n\n/**\n * Helper method to format value for overlayFields\n * @method convertOverlayFields\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertOverlayFields = (originalOptions: ChartOptions): ChartOptions => {\n const convertedOptions: ChartOptions = {\n ...originalOptions,\n };\n const { overlayFields } = originalOptions;\n if (overlayFields) {\n convertedOptions.overlayFields = Array.isArray(overlayFields)\n ? overlayFields\n .filter(field => field)\n .map(field => field.trim())\n .join(',')\n : overlayFields;\n }\n return convertedOptions;\n};\n\n/**\n * checks whether data is multi series data\n * @param {array} data array\n * @return {Boolean}\n */\nexport const isMultiSeriesData = (data: string[] | string[][]): boolean =>\n Array.isArray(data) && Array.isArray(data[0]);\n/**\n * checks whether data is multi series data and returns value as array\n * @param {array} data array\n * @param {*} value to return as array\n * @return {array}\n */\nexport const toArrayForSeries = (data, value): any[] => (isMultiSeriesData(data) ? value : [value]);\n\ninterface ConstructFieldsAndColumnsParams {\n x: string[];\n y: string[] | string[][];\n xField: string;\n yFields: string | string[];\n y2?: string[] | string[][];\n y2Fields?: string | string[];\n}\nexport const constructFieldsAndColumns = ({\n x = [],\n y = [],\n xField,\n yFields,\n y2,\n y2Fields,\n}: ConstructFieldsAndColumnsParams): JsonColumnData => {\n const columns = [x.map(String), ...toArrayForSeries(y, y).map(series => series.map(String))];\n const yFieldsArray = toArrayForSeries(y, yFields);\n const fields = [{ name: xField }, ...yFieldsArray.map(field => ({ name: field }))];\n // splunk-charting requires y2 to be part of columns\n // when y & y2 options are configured with different (mutually exclusive) series\n // y2 columns need to be added to columns\n if (y2Fields) {\n const y2FieldsArray = toArrayForSeries(y2, y2Fields);\n const y2AsArray = toArrayForSeries(y2, y2).map(series => series?.map(String));\n y2FieldsArray.forEach((y2Field, index) => {\n if (yFieldsArray.indexOf(y2Field) === -1 && y2AsArray[index]) {\n fields.push({\n name: y2Field,\n });\n columns.push(y2AsArray[index]);\n }\n });\n }\n return {\n columns,\n fields,\n };\n};\n\nexport function constructAdditionalTooltipFieldsMap({ fields, columns, additionalTooltipFields }) {\n const map = {};\n\n additionalTooltipFields?.forEach(fieldName => {\n const index = fields.findIndex(f => f.name === fieldName);\n if (index !== -1) {\n map[fieldName] = columns[index];\n }\n });\n\n return map;\n}\n\n// Note: we are making the assumption that attaching a range.select listener means the user wants to enable search zoom\n// This is because we don't know if the time range tokens being updated by the drilldown is used by the current viz.\n// In the future we are considering using a shared context to pass this information from UDF to Viz.\ninterface OptionsProps {\n events?: string[];\n selectedItemId?: string;\n [key: string]: unknown;\n}\ninterface EventHandler {\n type: string;\n options: OptionsProps;\n}\n\nexport const shouldEnableSearchZoom = (eventHandlers: EventHandler[] = [], xField = '') => {\n const rangeSelectEventHandler = eventHandlers.find(eventHandler =>\n eventHandler.options.events?.includes('range.select')\n );\n // Check if xField is _time. This is how splunk-charting distinguishes a time chart from categorical.\n // Note: search zoom will be buggy if the x axis uses timestamp values but is not _time\n const xAxisIsTime = xField === '_time';\n\n return !!rangeSelectEventHandler && xAxisIsTime;\n};\n", "import { mapKeys, chain } from 'lodash';\nimport { convertPropsToString } from '@splunk/visualizations-shared/propUtils';\nimport { mapToValues, convertY2AxisOptions, convertOverlayFields } from '../common/chartingUtils';\n\n// map for key names which are either new or not present in SimpleXML options mapping\nconst columnOptionsSCMapping = {\n dataValuesDisplay: 'showDataLabels',\n showYAxisWithZero: 'yAxisIncludeZero',\n showY2AxisWithZero: 'y2AxisIncludeZero',\n showYAxisExtendedRange: 'yAxisExtendsAxisRange',\n showSplitSeries: 'splitSeries',\n showIndependentYRanges: 'allowIndependentYRanges',\n xAxisLabelRotation: 'xAxisMajorLabelRotation',\n xAxisLabelVisibility: 'xAxisMajorLabelVisibility',\n showOverlayY2Axis: 'enableY2Axis',\n resultLimit: 'resultTruncationLimit',\n seriesColors: 'seriesColors',\n seriesColorsByField: 'fieldColors',\n legendDisplay: 'legendPlacement',\n legendTruncation: 'legendLabelOverflowMode',\n yAxisMajorTickInterval: 'yAxisMajorUnit',\n yAxisLabelVisibility: 'yAxisMajorLabelVisibility',\n showXMajorGridLines: 'showMajorXGridLines',\n showYMajorGridLines: 'showMajorYGridLines',\n showYMinorGridLines: 'showMinorYGridLines',\n showY2MajorGridLines: 'showMajorY2GridLines',\n showY2MinorGridLines: 'showMinorY2GridLines',\n y2AxisLabelVisibility: 'y2AxisMajorLabelVisibility',\n y2AxisMajorTickInterval: 'y2AxisMajorUnit',\n showRoundedY2AxisLabels: 'roundY2AxisLabelsToInteger',\n xAxisLineVisibility: 'xAxisVisibility',\n yAxisLineVisibility: 'yAxisVisibility',\n y2AxisLineVisibility: 'y2AxisVisibility',\n lineDashStylesByField: 'fieldDashStyles',\n};\n\n// key value mapping of what options (and their corresponding values) which we expose in config.ts to property values SC understands\nexport const columnOptionValuesSCMapping = {\n xAxisTitleVisibility: {\n hide: 'collapsed',\n },\n yAxisTitleVisibility: {\n hide: 'collapsed',\n },\n y2AxisTitleVisibility: {\n hide: 'collapsed',\n },\n legendPlacement: {\n off: 'none',\n },\n legendLabelOverflowMode: {\n ellipsisOff: 'ellipsisNone',\n },\n yAxisAbbreviation: {\n off: 'none',\n },\n columnGrouping: {\n auto: 'default',\n },\n showDataLabels: {\n off: 'none',\n },\n y2AxisAbbreviation: {\n off: 'none',\n },\n};\n\n/**\n * Helper function to convert values for legend options\n * @method convertLegendDisplayOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertLegendDisplayOptions = (originalOptions = {}): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n ['legendPlacement', 'legendLabelOverflowMode'].forEach(key => {\n const updatedValue = columnOptionValuesSCMapping[key][originalOptions[key]];\n if (updatedValue) {\n convertedOptions[key] = updatedValue;\n }\n });\n return convertedOptions;\n};\n\n/**\n * Helper function to convert values for Y axis label options\n * @method convertYAxisLabelOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertYAxisLabelOptions = (originalOptions): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n const updatedValue = columnOptionValuesSCMapping.yAxisAbbreviation[originalOptions.yAxisAbbreviation];\n if (updatedValue) {\n convertedOptions.yAxisAbbreviation = updatedValue;\n }\n return convertedOptions;\n};\n\n/**\n * Helper method to process options related to title visibility\n * @method convertTitleVisibilityOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertTitleVisibilityOptions = (originalOptions): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n ['xAxisTitleVisibility', 'yAxisTitleVisibility', 'y2AxisTitleVisibility'].forEach(key => {\n if (convertedOptions[key] === 'hide') {\n convertedOptions[key] = 'collapsed';\n }\n });\n return convertedOptions;\n};\n\n/**\n * Helper method to convert 'auto' to default\n * @method convertAuto\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertAuto = (originalOptions): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n ['stackMode'].forEach(key => {\n if (convertedOptions[key] === 'auto') {\n convertedOptions[key] = 'default';\n }\n });\n return convertedOptions;\n};\n\n/**\n * Converts defined option values to string if present\n * @method convertToStringValues\n * @param {Object} options\n * @returns {Object}\n */\nexport const convertToStringValues = (options): Record<string, unknown> => {\n const updatedOptions = convertPropsToString({\n vizProps: options,\n propNames: ['seriesColors', 'fieldColors', 'legendLabels', 'fieldDashStyles'],\n });\n return { ...options, ...updatedOptions };\n};\n\n/**\n * Helper method to update the option names which can be mapped to SimpleXML options or\n * can be used directly with SC if don't have a 1-1 mapping in SimpleXML\n *\n * @param options\n * @returns\n */\nexport const mapToOldKey = options =>\n mapKeys(options, (val, key) => (columnOptionsSCMapping[key] ? columnOptionsSCMapping[key] : key));\n\n/**\n * Chained helper for mapping the option properties (and values) we expose in config.ts into property values that splunk-charting accepts\n * This is for options that has new key name and can not directly be mapped with SimpleXML or\n * don't have a 1-1 mapping in SimpleXML (i.e. a straightforward name mapping where values are preserved)\n *\n * @param originalOptions\n * @returns\n */\nexport const convertToColumnSCProperties = (\n originalOptions: Record<string, unknown>\n): Record<string, unknown> =>\n chain(mapToOldKey(originalOptions))\n .thru(mapToValues(columnOptionValuesSCMapping))\n .thru(convertY2AxisOptions)\n .thru(convertOverlayFields)\n .thru(convertTitleVisibilityOptions)\n .thru(convertLegendDisplayOptions)\n .thru(convertToStringValues)\n .thru(convertAuto)\n .thru(convertYAxisLabelOptions)\n .value();\n", "\nimport * as defaultImport from \"@splunk/react-ui/Paginator\";\nexport * from \"@splunk/react-ui/Paginator\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes\";\nexport * from \"@splunk/themes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import * as React from 'react';\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { get, pick } from 'lodash';\nimport styled from 'styled-components';\nimport Paginator from '@splunk/react-ui/Paginator';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { getSettingsFromThemedProps } from '@splunk/themes';\nimport useSplunkTheme from '@splunk/themes/useSplunkTheme';\nimport FeatureFlagContext from '@splunk/visualization-context/FeatureFlagContext';\nimport SizeAwareWrapper from '@splunk/visualizations-shared/SizeAwareWrapper';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport Message from '@splunk/visualizations-shared/Message';\nimport {\n getTrellisDataSplitterMode,\n getAllPossibleSplitByFields,\n} from '@splunk/visualizations-shared/trellisUtils';\nimport { deepMergeWithArrayPrimitiveOverrides } from '@splunk/visualizations-shared/hocUtils';\nimport { pickFieldFromJSONSchema } from '@splunk/visualizations-shared/JSONSchemaUtils';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { Options } from '@splunk/visualization-encoding/Options';\nimport { DataSource } from '../interfaces/DataSource';\nimport { KV } from '../interfaces/Object';\nimport { AGGREGATIONS, getTrellisDataSourcesBySplitMode, determineMinMax } from '../utils/trellisUtils';\n\nconst TrellisContainer = styled.div<{\n width: number | string;\n height: number | string;\n backgroundColor: string;\n}>`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n background-color: ${props => props.backgroundColor};\n ${props => toDimension(pick(props, ['width', 'height']))};\n > [data-test='paginator'] {\n align-self: flex-end;\n margin-bottom: 10px;\n }\n`;\n\nconst TrellisContainerGrid = styled.div<{\n height: number;\n colCount: number;\n colMinWidth: number;\n rowHeight: number;\n}>`\n display: grid;\n height: ${props => {\n return `${props.height}px`;\n }};\n gap: 10px 10px;\n grid-template-columns: ${props => {\n return props.colCount\n ? `repeat(${props.colCount}, minmax(${props.colMinWidth}px, 1fr))`\n : `repeat(auto-fit, minmax(${props.colMinWidth}px, 1fr))`;\n }};\n overflow: auto;\n justify-items: stretch;\n grid-auto-rows: ${props => `${props.rowHeight}px`};\n .child {\n height: ${props => `${props.rowHeight}px`};\n }\n`;\n\nconst showErrorMessage = (\n errorCode: string,\n width: string | number,\n height: string | number\n): JSX.Element => {\n if (errorCode === 'INVALID_SPLIT_BY_FIELD') {\n return (\n <Message\n width={width}\n height={height}\n message={_('Select a valid trellis split by field')}\n level=\"info\"\n />\n );\n }\n if (errorCode === 'UNKNOWN_DATA_SPLIT_MODE') {\n return <Message width={width} height={height} message={_('Unknown data split mode')} level=\"info\" />;\n }\n return <Message width={width} height={height} message={_('Error render in trellis')} level=\"info\" />;\n};\n\nexport interface VizWithTrellisProps {\n options?: KV;\n dataSources: { [name: string]: DataSource };\n height: number | string;\n width: number | string;\n theme?: unknown;\n}\n\nconst withTrellis = Viz => {\n const VizWithTrellis = (opts: VizWithTrellisProps): JSX.Element => {\n const cachedHandleResize = React.useCallback((w, h) => {\n setContainerWidth(w);\n setContainerHeight(h);\n }, []);\n const [containerWidth, setContainerWidth] = React.useState<number>(Number(opts.width));\n const [containerHeight, setContainerHeight] = React.useState<number>(Number(opts.height));\n const { options = {}, height, width, ...otherProps } = opts;\n const defaultOptions = pickFieldFromJSONSchema(Viz.config.optionsSchema, 'default');\n const mergedOptions = deepMergeWithArrayPrimitiveOverrides({}, options, defaultOptions);\n const {\n trellisColumns,\n trellisPageCount,\n trellisMinColumnWidth,\n trellisRowHeight,\n splitByLayout,\n trellisSplitBy,\n trellisSharedScale,\n stackMode,\n yAxisMin,\n yAxisMax,\n } = mergedOptions;\n const colCount = trellisColumns > 0 ? trellisColumns : defaultOptions.trellisColumns;\n const pageCount = +trellisPageCount > 0 ? +trellisPageCount : defaultOptions.trellisPageCount;\n const colMinWidth =\n trellisMinColumnWidth > 0 ? trellisMinColumnWidth : defaultOptions.trellisMinColumnWidth;\n const rowHeight = trellisRowHeight > 0 ? trellisRowHeight : defaultOptions.trellisRowHeight;\n const [pageNum, setPageNum] = useState(1);\n const [pagedData, setPagedData] = useState(null);\n let splitByKeys = [];\n let totalPages = 0;\n let showPaginator = false;\n const { dataSources } = otherProps;\n const theme = {\n splunkThemeV1: useSplunkTheme(),\n };\n const {\n family: currentThemeFamily,\n colorScheme: currentThemeColorScheme,\n density: currentThemeDensity,\n } = getSettingsFromThemedProps({ theme });\n const trellisBackgroundColor = useMemo(() => {\n const themeFunc = themeVar =>\n Viz.config.themes[themeVar]?.({\n trellisBackgroundColor: mergedOptions.trellisBackgroundColor,\n theme,\n });\n // trellisBackgroundColor option supports only static coloring and DSL option evaluation derived from the themes level only.\n const evaluated = Options.evaluate(\n {\n context: Viz.config.context,\n options: { trellisBackgroundColor: mergedOptions.trellisBackgroundColor },\n },\n {},\n themeFunc\n );\n\n return evaluated.trellisBackgroundColor;\n }, [\n mergedOptions.trellisBackgroundColor,\n currentThemeFamily,\n currentThemeColorScheme,\n currentThemeDensity,\n ]);\n const columns = get(dataSources, 'primary.data.columns', undefined);\n const fields = get(dataSources, 'primary.data.fields', undefined);\n const noColumns = columns === undefined;\n const noFields = fields === undefined;\n const updateDataDisplay = currPage => {\n if (!showPaginator) {\n setPagedData(splitByKeys);\n setPageNum(1);\n } else {\n const startIdx = pageCount * (currPage - 1);\n const paged = splitByKeys.slice(startIdx, startIdx + pageCount);\n setPagedData(paged);\n }\n };\n useEffect(() => {\n setPageNum(1);\n updateDataDisplay(1);\n }, [pageCount, trellisSplitBy]);\n\n useEffect(() => {\n updateDataDisplay(pageNum);\n }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);\n\n const handlePageChange = useCallback(\n (event, { page }) => {\n setPageNum(page);\n },\n [pageNum, pagedData]\n );\n\n const featureFlagContext = React.useContext<FeatureFlagContext>(FeatureFlagContext);\n const isTrellisFeatureFlagOn = Boolean(\n featureFlagContext && featureFlagContext.visualizations_enableTrellis\n );\n\n if (!isTrellisFeatureFlagOn || !splitByLayout || splitByLayout !== LAYOUT_TYPE.Trellis) {\n return <Viz {...opts} />;\n }\n\n if (splitByLayout === LAYOUT_TYPE.Trellis) {\n if (noColumns || noFields) {\n return <Message width={width} height={height} message={_('Loading')} level=\"info\" />;\n }\n\n // If no trellisSplitBy value is passed in, assign default trellisSplitBy\n // The default value will be the first value in the individual splitBy field list or 'aggregations'\n let currTrellisSplitBy = trellisSplitBy;\n if (!trellisSplitBy || trellisSplitBy.length === 0) {\n const splitByPossibleFields = getAllPossibleSplitByFields(fields);\n currTrellisSplitBy =\n splitByPossibleFields.fields && splitByPossibleFields.fields.length\n ? splitByPossibleFields.fields[0]\n : AGGREGATIONS;\n }\n const splitMode = getTrellisDataSplitterMode(fields);\n const dataSplitResult = getTrellisDataSourcesBySplitMode(\n splitMode,\n dataSources,\n currTrellisSplitBy\n );\n const modifiedDataSourceBySplitBy = dataSplitResult?.splitDataSources;\n const dataSplitErrorCode = dataSplitResult?.errorCode;\n if (\n !modifiedDataSourceBySplitBy ||\n Object.keys(modifiedDataSourceBySplitBy).length === 0 ||\n dataSplitErrorCode\n ) {\n return showErrorMessage(dataSplitErrorCode, width, height);\n }\n\n const splitByKeysModified = modifiedDataSourceBySplitBy\n ? Object.keys(modifiedDataSourceBySplitBy)\n : [];\n if (splitByKeysModified) {\n showPaginator = splitByKeysModified.length > pageCount;\n splitByKeys = splitByKeysModified;\n totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;\n }\n\n const [calculatedMin, calculatedMax] = determineMinMax(\n modifiedDataSourceBySplitBy,\n trellisSharedScale,\n yAxisMin,\n yAxisMax,\n stackMode\n );\n\n return (\n <TrellisContainer height={height} width={width} backgroundColor={trellisBackgroundColor}>\n <TrellisContainerGrid\n height={height as number}\n colCount={colCount}\n colMinWidth={colMinWidth}\n rowHeight={rowHeight}\n >\n {pagedData?.map((splitByKey, idx) => (\n <div\n className=\"child\"\n data-test=\"trellis-child\"\n key={`div-child-${idx.toString()}`}\n >\n <SizeAwareWrapper\n width={width}\n height={height}\n onResize={cachedHandleResize}\n />\n <Viz\n {...otherProps}\n trellisKey={splitByKey}\n trellisSplitBy={currTrellisSplitBy}\n dataSources={modifiedDataSourceBySplitBy[splitByKey]}\n options={{\n ...options,\n yAxisMin: calculatedMin,\n yAxisMax: calculatedMax,\n }}\n key={`viz-${idx.toString()}`}\n height={containerHeight}\n width={containerWidth}\n />\n </div>\n ))}\n </TrellisContainerGrid>\n {showPaginator && totalPages >= pageNum && (\n <Paginator\n onChange={handlePageChange}\n current={pageNum}\n alwaysShowLastPageLink\n totalPages={totalPages}\n />\n )}\n </TrellisContainer>\n );\n }\n return null;\n };\n VizWithTrellis.propTypes = Viz.proptypes;\n VizWithTrellis.defaultProps = Viz.defaultProps;\n VizWithTrellis.config = Viz.config;\n return VizWithTrellis;\n};\n\nexport default withTrellis;\n", "import { chain, omit } from 'lodash';\n// Charting imports i18n which needs to be run to instantiate window globals in the tests\n// eslint-disable-next-line import/order\nimport Charting, { ChartingProps } from '../common/Charting';\nimport jsCharting from '@splunk/charting-bundle';\nimport { getSimpleXMLOptionsForProps } from '@splunk/visualizations-shared/simpleXMLOptions';\nimport config from './config';\nimport withDashboardViz from '../common/withDashboardViz';\nimport { convertToColumnSCProperties } from './columnUtils';\nimport {\n getAnnotations,\n truncateData,\n constructFieldsAndColumns,\n shouldEnableSearchZoom,\n constructAdditionalTooltipFieldsMap,\n} from '../common/chartingUtils';\nimport withTrellis from '../common/hocs/withTrellis';\n\nconst validOptions = Object.keys(config.optionsSchema);\n\nexport const computeVizProps: any = ({\n dataSources,\n onEventTrigger,\n x,\n y,\n xField,\n yFields,\n additionalTooltipFields,\n annotationX,\n annotationLabel,\n annotationColor,\n visualizationApiRef,\n trellisKey,\n trellisSplitBy,\n themeFunc,\n ...otherOptions\n}): Partial<ChartingProps> => {\n // options to be passed as props\n const defaultFontColor = themeFunc('defaultFontColor');\n const computedProps: Record<string, any> = {\n visualizationApiRef,\n onEventTrigger,\n trellisKey,\n trellisSplitBy,\n defaultFontColor,\n };\n const { y2Fields, y2, hasEventHandlers, eventHandlers } = otherOptions;\n\n computedProps.options = chain(otherOptions)\n .pick(validOptions)\n .thru(convertToColumnSCProperties)\n .thru(options => ({\n ...getSimpleXMLOptionsForProps(omit(options, ['y2Fields'])),\n chart: 'column',\n }))\n .value();\n\n const chartingAnnotations = getAnnotations({\n annotationX,\n annotationColor,\n annotationLabel,\n });\n let primaryData = { ...dataSources.primary.data };\n const { columns, fields } = constructFieldsAndColumns({\n x,\n y,\n xField,\n yFields,\n y2,\n y2Fields,\n });\n const additionalTooltipFieldsConstructed = constructAdditionalTooltipFieldsMap({\n ...dataSources.primary.data,\n additionalTooltipFields,\n });\n primaryData.columns = columns;\n primaryData.fields = fields;\n const truncationLimit = computedProps.options['chart.resultTruncationLimit'];\n if (truncationLimit) {\n primaryData = truncateData(primaryData, truncationLimit);\n }\n if (hasEventHandlers) {\n computedProps.onClick = onEventTrigger;\n computedProps.onSelect = onEventTrigger;\n computedProps.onPointMouseOver = onEventTrigger;\n computedProps.onPointMouseOut = onEventTrigger;\n }\n computedProps.chartData = jsCharting.extractChartReadyData(\n {\n ...primaryData,\n annotations: chartingAnnotations,\n },\n {\n removeRangeSelectOnLoad: true,\n enableSearchZoom: shouldEnableSearchZoom(eventHandlers, xField),\n additionalTooltipFields: additionalTooltipFieldsConstructed,\n }\n );\n\n return computedProps;\n};\n\nconst Column = withTrellis(\n withDashboardViz({\n ReactViz: Charting,\n computeVizProps,\n vizConfig: config,\n })\n);\nconst themes = null;\n\nexport { themes, config };\nexport default Column;\n"],
|
|
5
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["src/Column/index.ts", "esm-externals:lodash", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/visualization-color-palettes", "esm-externals:react", "esm-externals:prop-types", "esm-externals:react-event-listener", "esm-externals:@splunk/visualizations-shared/i18n", "esm-externals:@splunk/charting-bundle", "esm-externals:@splunk/visualization-context/TimezoneContext", "esm-externals:@splunk/visualizations-shared/style", "esm-externals:styled-components", "esm-externals:@splunk/visualizations-shared/Message", "esm-externals:@splunk/themes/useSplunkTheme", "esm-externals:@splunk/visualizations-shared/themeUtils", "esm-externals:@splunk/visualization-schemas", "src/common/ChartingApi.ts", "src/common/hooks/usePrevious.ts", "src/common/hooks/useEventCallback.tsx", "esm-externals:@splunk/visualizations-shared/numberUtils", "src/common/interfaces/DataSource.ts", "src/common/interfaces/VizActionHandler.ts", "src/common/utils/dataUtils.ts", "esm-externals:@splunk/visualization-context/FeatureFlagContext", "src/common/hooks/useTrellisEnabled.ts", "src/common/components/TrellisTitle.tsx", "src/common/Charting.tsx", "esm-externals:@splunk/visualizations-shared/simpleXMLOptions", "esm-externals:@splunk/visualization-icons", "esm-externals:@splunk/visualization-icons/placeholders", "esm-externals:@splunk/themes/pick", "esm-externals:@splunk/themes/variables", "esm-externals:@splunk/visualizations-shared/configUtils", "src/common/utils/configUtils.ts", "src/common/editorConfig/AxesChartDataConfig.ts", "src/common/editorConfig/TrellisEditors.ts", "src/common/editorConfig/AxesChartDataDisplay.ts", "src/common/editorConfig/BackgroundColor.ts", "src/common/ThemedDefaults.tsx", "src/common/editorConfig/AxesChartColorAndStyle.ts", "src/common/editorConfig/AxesChartLegend.ts", "src/common/editorConfig/AxesChartXGridAndLabels.ts", "src/common/editorConfig/AxesChartYGridAndLabels.ts", "src/common/editorConfig/AxesChartY2GridAndLabels.ts", "src/Column/config.ts", "esm-externals:@splunk/themes/getSettingsFromThemedProps", "esm-externals:@splunk/visualization-encoding/Options", "esm-externals:@splunk/visualizations-shared/SanitizeProps", "esm-externals:@splunk/moment", "esm-externals:@splunk/visualizations-shared/hocUtils", "esm-externals:@splunk/visualizations-shared/JSONSchemaUtils", "esm-externals:@splunk/async-dynamic-options-evaluator", "esm-externals:@splunk/ui-utils/id", "src/common/SplunkVisualization.tsx", "src/common/hooks/getSorting.ts", "src/common/hooks/getPagination.ts", "src/common/hooks/useDeepMemo.ts", "esm-externals:@splunk/visualizations-shared/colorUtils", "esm-externals:@splunk/visualizations-shared/SizeAwareWrapper", "src/common/hocs/FixedSizeContainer.tsx", "src/common/components/MissingPropsMessage.tsx", "src/common/utils/hocUtils.ts", "src/common/hocs/withEditModeCover.tsx", "src/common/components/IconPlaceholder.tsx", "src/common/hocs/withPlaceholder.tsx", "src/common/hooks/useGetXAndYFields.tsx", "src/common/hooks/useDownsampleDataSources.tsx", "esm-externals:@splunk/visualization-context/FeatureFlags", "src/common/utils/featureFlagUtils.ts", "esm-externals:@splunk/visualizations-shared/trellisUtils", "src/common/utils/trellisUtils.ts", "src/common/withDashboardViz.tsx", "esm-externals:@splunk/visualizations-shared/propUtils", "src/common/chartingUtils.ts", "src/Column/columnUtils.ts", "esm-externals:@splunk/react-ui/Paginator", "esm-externals:@splunk/themes", "src/common/hocs/withTrellis.tsx", "src/Column/Column.tsx"],
|
|
4
|
+
"sourcesContent": ["export * from './Column';\nexport { default } from './Column';\n", "\nimport * as defaultImport from \"lodash\";\nexport * from \"lodash\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-color-palettes\";\nexport * from \"@splunk/visualization-color-palettes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"prop-types\";\nexport * from \"prop-types\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"react-event-listener\";\nexport * from \"react-event-listener\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/i18n\";\nexport * from \"@splunk/visualizations-shared/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/charting-bundle\";\nexport * from \"@splunk/charting-bundle\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-context/TimezoneContext\";\nexport * from \"@splunk/visualization-context/TimezoneContext\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/style\";\nexport * from \"@splunk/visualizations-shared/style\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/Message\";\nexport * from \"@splunk/visualizations-shared/Message\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes/useSplunkTheme\";\nexport * from \"@splunk/themes/useSplunkTheme\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/themeUtils\";\nexport * from \"@splunk/visualizations-shared/themeUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-schemas\";\nexport * from \"@splunk/visualization-schemas\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import jsCharting from '@splunk/charting-bundle';\n\ninterface Point {\n /**\n * Valid xValue of the chart\n *\n * @type {string|number}\n * @memberof Point\n */\n xValue?: string | number;\n\n /**\n * Valid seriesName for a chart\n *\n * @type {string}\n * @memberof Point\n */\n seriesName?: string;\n}\n\nexport class ChartingApiFunctional {\n // eslint-disable-next-line no-useless-constructor\n constructor(private chartRef: any) {}\n\n /**\n * Allows users to programmatically highlight a point on the chart\n *\n * @memberof ChartingApiFunctional\n */\n highlight({ xValue, seriesName }: Point = { xValue: '', seriesName: '' }): void {\n this.getChart().highlight(xValue, seriesName);\n }\n\n /**\n * Allows users to programmatically unhighlight all points on the chart\n *\n * @memberof ChartingApiFunctional\n */\n unHighlight(): void {\n this.getChart().unHighlight();\n }\n\n // returns chart object\n getChart(): jsCharting {\n return this.chartRef?.current;\n }\n}\n", "import { useEffect, useRef } from 'react';\n\nexport default function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n", "import { useRef, useLayoutEffect, useCallback } from 'react';\n\n/**\n * This is an escape hatch for the case where an event handler function depends on some states that changes too often thus the event handle is recreated frequently which causes bugs in some edge cases.\n *\n * For example if an old callback is called, it may not use the most recent props, but the previous props when that callback was created.\n */\n\ntype Fn<ARGS extends any[], R> = (...args: ARGS) => R;\nconst useEventCallback = <A extends any[], R>(fn: Fn<A, R>): Fn<A, R> => {\n const ref = useRef<Fn<A, R>>(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args: A): R => ref.current(...args), []);\n};\n\nexport default useEventCallback;\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/numberUtils\";\nexport * from \"@splunk/visualizations-shared/numberUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { validSegmentationModes } from '@splunk/visualization-schemas';\n\nexport interface JsonColumnData {\n fields: FieldEntry[] | string[];\n columns: (string | number)[][];\n}\n\nexport type HighlightedSourceMap = Record<string, Record<string, boolean>>;\nexport type TagsMap = Record<string, Record<string, string[]>>;\n\nexport interface Meta {\n totalCount: number;\n sid: string;\n app: string;\n highlighted?: HighlightedSourceMap;\n tags?: TagsMap;\n}\n\nexport const validSortDirs = ['asc', 'desc', 'none'] as const;\nexport type SortDirType = (typeof validSortDirs)[number];\nexport type SegmentationType = (typeof validSegmentationModes)[number];\nexport const validOutputModes = ['json_cols', 'json'] as const;\nexport type OutputModeType = (typeof validOutputModes)[number];\n\nexport interface RequestParams {\n count?: number;\n offset?: number;\n sort?: {\n [sortKey: string]: SortDirType;\n };\n segmentation?: SegmentationType;\n // eslint-disable-next-line camelcase\n output_mode?: OutputModeType;\n}\n\nexport interface DataSource {\n requestParams: Partial<RequestParams>;\n onRequestParamsChange?: (p: Record<string, unknown>) => void;\n data: JsonColumnData;\n error?: { level: string; message: string };\n meta: Partial<Meta>;\n}\n\nexport interface DataSourceMeta {\n requestParams: Partial<RequestParams>;\n meta: Partial<Meta>;\n onRequestParamsChange: (payload: RequestParams) => void;\n}\n", "/* eslint-disable class-methods-use-this */\nexport interface VizActionHandler {\n /**\n * put focus on the visualization\n */\n focus(): void;\n\n /**\n * compute snapshot of this visualization\n */\n snapshot(): Record<string, unknown>; // (This is for pdf export)\n}\n\nexport class DefaultVizActionHandler {\n focus(): void {\n // noop\n }\n\n snapshot(): Record<string, unknown> {\n return null; // noop\n }\n}\n", "import type { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { startsWithNumber } from '@splunk/visualizations-shared/numberUtils';\nimport type { DashboardVizProps, DataSource, VizConfig } from '../interfaces';\nimport { VizBehavior } from '../interfaces';\nimport { ChartEvent } from '../interfaces/ChartEvent';\n\n// TODO: utilize this fn in ParallelCoordinates\n\nexport const convertToArrOfObjects = (columns: (string | any[])[], fields: any[]): any[] => {\n if (!columns || !columns[0] || !columns[0].length) return [];\n\n const data = [];\n\n for (let i = 0; i < columns[0].length; i += 1) {\n const newObj = {};\n fields.forEach((field, index) => {\n const fieldName = typeof field === 'string' ? field : field.name;\n if (columns[index][i] === '') {\n newObj[fieldName] = null;\n } else {\n newObj[fieldName] = columns[index][i];\n }\n });\n data.push(newObj);\n }\n\n return data;\n};\n\n// LTTB algorithm which can be used to downsample time series data while striving to maintain\n// the spikes and overall shape of the chart\n// Copied from https://github.com/sveinn-steinarsson/flot-downsample/blob/0815010016fc94b1bbc6a010afb8aad13ada6d0d/jquery.flot.downsample.js\n// Modifications include:\n// 1) Convert to modern JavaScript(use const, let, and use array.push to push to last element of array)\n// 2) Convert to camel case\n// 3) Convert to TS and also return the indices of the points that are in the downsampled result.\n// 4) Add a new parameter preferredDownsampleIndices that correspond to the indices of points\n// that should be used in case of a tie of the max area in a bucket\nconst largestTriangleThreeBuckets = (\n data: [Date | number, number][],\n threshold: number,\n preferredDownsampleIndices: Set<number>\n): {\n downsampledData: [Date | number, number][];\n downsampledIndices: number[];\n} => {\n const dataLength = data.length;\n const downsampledIndices = [];\n if (threshold >= dataLength || threshold === 0) {\n const allIndices = data.map((values, index) => index);\n return { downsampledData: data, downsampledIndices: allIndices }; // Nothing to do\n }\n\n const sampled: [Date | number, number][] = [];\n let sampledIndex = 0;\n\n // Bucket size. Leave room for start and end data points\n const every = (dataLength - 2) / (threshold - 2);\n\n let a = 0; // Initially a is the first point in the triangle\n let maxAreaPoint: [Date | number, number];\n let maxArea: number | undefined;\n let area: number | undefined;\n let nextA: number | undefined;\n\n sampled.push(data[a]); // Always add the first point\n downsampledIndices.push(0);\n\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i < threshold - 2; i++) {\n // Calculate point average for next bucket (containing c)\n let avgX = 0;\n let avgY = 0;\n let avgRangeStart = Math.floor((i + 1) * every) + 1;\n let avgRangeEnd = Math.floor((i + 2) * every) + 1;\n avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;\n\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n // eslint-disable-next-line no-plusplus\n for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {\n avgX += Number(data[avgRangeStart][0]); // * 1 enforces Number (value may be Date)\n avgY += data[avgRangeStart][1] * 1;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n\n // Get the range for this bucket\n let rangeOffs = Math.floor((i + 0) * every) + 1;\n const rangeTo = Math.floor((i + 1) * every) + 1;\n\n // Point a\n const pointAX = Number(data[a][0]); // Enforce Number (value may be Date)\n const pointAY = data[a][1] * 1;\n\n // eslint-disable-next-line no-multi-assign\n maxArea = area = -1;\n let maxAreaIndex = rangeOffs;\n\n // eslint-disable-next-line no-plusplus\n for (; rangeOffs < rangeTo; rangeOffs++) {\n // Calculate triangle area over three buckets\n area =\n Math.abs(\n (pointAX - avgX) * (data[rangeOffs][1] - pointAY) -\n (pointAX - Number(data[rangeOffs][0])) * (avgY - pointAY)\n ) * 0.5;\n // Modification: try to downsample the least amount of points possible when there are multiple series\n // If all points in a bucket have the same area, prioritize the one with an x index\n // that also existed from another series so we don't add another point unnecessarily.\n // By default LTTB picks the leftmost point in the bucket\n if (area > maxArea || (area === maxArea && preferredDownsampleIndices.has(rangeOffs))) {\n maxArea = area;\n maxAreaPoint = data[rangeOffs];\n nextA = rangeOffs; // Next a is this b\n // Modification: save the index of the point with the most area\n maxAreaIndex = rangeOffs;\n }\n }\n\n // eslint-disable-next-line no-plusplus\n sampled[sampledIndex++] = maxAreaPoint; // Pick this point from the bucket\n downsampledIndices.push(maxAreaIndex);\n a = nextA; // This a is the next a (chosen b)\n }\n\n // eslint-disable-next-line no-plusplus\n sampled[sampledIndex++] = data[dataLength - 1]; // Always add last\n downsampledIndices.push(dataLength - 1);\n\n return { downsampledData: sampled, downsampledIndices };\n};\n\nexport type DownsampleOptions = { threshold: number } & Pick<DashboardVizProps, 'dataSources' | 'options'>;\n\ntype CoerceYColumnResult = {\n canDownsampleColumn: boolean;\n canLooselyCoerceSomeValues: boolean;\n coercedColumn: number[];\n};\n\n/**\n * Strictly coerces the entire column to numbers if it only consists of numeric strings or numbers. Also determines\n * if at least one of the values in the column can be loosely coerced to a number.\n * If the column cannot be strictly downsampled (if it contains nulls or non-numeric strings), returns an empty array and\n * returns that it cannot downsample the column.\n */\nconst strictlyCoerceYColumn = (\n column: (string | number)[] | number[],\n options: DownsampleOptions['options']\n): CoerceYColumnResult => {\n const isNullCoercionEnabled = options.nullValueDisplay === 'zero';\n // Splunk charting allows for numbers in formats such as negative hex that\n // Number() does not support and also allows loose coercion of hex numbers (but not other formats)\n // We want to identify columns which contain at least one value that can be loosely coerced\n const canLooselyCoerceSomeValues =\n column.findIndex(\n value => startsWithNumber(`${value}`) || (isNullCoercionEnabled && value === null)\n ) >= 0;\n\n // If not all values in column can be strictly coerced to a number, we do not downsample\n const coercedColumn: number[] = [];\n const canDownsampleColumn = !column.some(value => {\n const coercedValue = Number(value);\n const coerceValueToZero = isNullCoercionEnabled && value === null;\n\n // if it can't be parsed or isn't safe, fail\n if (\n Number.isNaN(coercedValue) ||\n coercedValue <= Number.MIN_SAFE_INTEGER ||\n coercedValue >= Number.MAX_SAFE_INTEGER ||\n (typeof value !== 'string' && typeof value !== 'number' && !coerceValueToZero)\n ) {\n return true;\n }\n // save value and continue to next\n coercedColumn.push(coercedValue);\n return false;\n });\n\n return {\n canDownsampleColumn,\n canLooselyCoerceSomeValues,\n coercedColumn: canDownsampleColumn ? coercedColumn : [],\n };\n};\n\n/**\n * Tries to coerce the x-column to numbers or dates, if it is eligible for downsampling.\n * Only strictly increasing x-columns are eligible for downsampling.\n * If the column is not eligible for downsampling, returns an empty array.\n */\nconst strictlyCoerceXColumn = (column: (string | number)[], fieldType: string): Date[] | number[] => {\n if (fieldType === 'number') {\n const coercedXColumn = column.map(xValue => Number(xValue));\n if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {\n return coercedXColumn;\n }\n } else if (fieldType === 'time') {\n const coercedXColumn = column.map(xValue => new Date(xValue));\n if (isColumnStrictlyIncreasing(coercedXColumn, fieldType)) {\n return coercedXColumn;\n }\n }\n return [];\n};\n\nexport const isDownsamplingEnabledForViz = ({ vizConfig }: { vizConfig: VizConfig }) => {\n return vizConfig.supports?.includes(VizBehavior.DOWNSAMPLING);\n};\n\nexport const calculateThresholdOnRangeSelect = ({\n firstIndex,\n lastIndex,\n dataSources,\n width,\n}: Pick<DashboardVizProps, 'dataSources'> & {\n firstIndex: number;\n lastIndex: number;\n width: number | string;\n}): number => {\n const window = lastIndex - firstIndex + 1;\n // eslint-disable-next-line no-unsafe-optional-chaining\n const ratio = Math.round(Number(dataSources?.primary?.data?.columns[0]?.length / window) * 10) / 10;\n return Math.round(ratio * Number(width));\n};\n\n/**\n * Calculates the downsampling threshold based on the range selection. If search zoom is enabled or there is no selection,\n * then returns the width of the visualization.\n *\n * Otherwise calculates the threshold based on the ratio of the window selected compared to the size of the non-downsampled\n * data sources. Returns null if the chart event's dataset does not match the passed in primary data source or if the chart is zoomed\n * in for a categorical chart.\n */\nexport const calculateDownsamplingThreshold = ({\n enableSearchZoom,\n dataSources,\n selectChartEvent,\n width,\n xField,\n}: {\n enableSearchZoom: boolean;\n dataSources: Record<string, DataSource> | null;\n selectChartEvent: ChartEvent<'chartRangeSelect'> | null;\n width: number;\n xField: string;\n}): number | null => {\n if (enableSearchZoom || !selectChartEvent) {\n return Number(width);\n }\n\n const primaryDataSource = dataSources?.primary;\n if (!primaryDataSource) {\n return null;\n }\n\n const { startXIndex, endXIndex, currentTarget } = selectChartEvent;\n\n try {\n const xFieldIndex = primaryDataSource?.data?.fields.findIndex(field => {\n const name = typeof field === 'string' ? field : field.name;\n return name === xField;\n });\n const downsampledXFieldIndex = currentTarget.dataSet?.fields.findIndex(field => field === xField);\n\n if (xFieldIndex === -1 || downsampledXFieldIndex === -1) {\n return null;\n }\n\n const fullSeries = primaryDataSource?.data?.columns[xFieldIndex];\n const downsampledSeries = currentTarget.dataSet.seriesList[downsampledXFieldIndex];\n\n const firstIndex = fullSeries.findIndex(x => {\n return downsampledSeries[startXIndex] === x;\n });\n const lastIndex = fullSeries.findIndex(x => {\n return downsampledSeries[endXIndex] === x;\n });\n\n if (firstIndex >= 0 && lastIndex >= 0 && firstIndex <= lastIndex) {\n return calculateThresholdOnRangeSelect({\n firstIndex,\n lastIndex,\n dataSources,\n width,\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Error occurred while setting downsample threshold on range select event', e);\n }\n\n return null;\n};\n\nconst isColumnStrictlyIncreasing = (column: (number | Date)[], fieldType: 'number' | 'time') => {\n return column.every((value, index) => {\n if (fieldType === 'number') {\n if (Number.isNaN(value)) {\n return false;\n }\n }\n\n if (fieldType === 'time') {\n if (Number.isNaN((value as Date).getTime())) {\n return false;\n }\n }\n if (index === 0) {\n return true;\n }\n return value > column[index - 1];\n });\n};\n\n/**\n * Verifies that all of the columns that are displayed in a chart can be downsampled. Valid columns that can be\n * displayed are those that contain at least one number. We can only downsample columns that only consist of numbers.\n *\n * If all columns can be downsampled, returns the x column coerced to time/number and y columns coerced to numbers.\n * If not all columns can be downsampled, then returns empty arrays for both x and y\n */\nconst tryToCoerceAllDisplayedFields = (\n ds: DataSource,\n xField: string,\n yFields: Set<string>,\n fieldTypes: string[],\n options: DownsampleOptions['options']\n): { xColumn: Date[] | number[]; yColumns: number[][] } => {\n let xColumn: Date[] | number[] = [];\n const yColumns: number[][] = [];\n\n const canDownsample = !ds.data.fields.some((field, index) => {\n const fieldName = (field as FieldEntry).name ?? field;\n const fieldType = fieldTypes[index] ?? 'unknown';\n const column = ds.data.columns[index];\n let hasDisplayedColumnThatCantBeDownsampled = false;\n\n if (fieldName === xField) {\n xColumn = strictlyCoerceXColumn(column, fieldType);\n } else if (yFields.has(fieldName)) {\n const { coercedColumn, canLooselyCoerceSomeValues, canDownsampleColumn } = strictlyCoerceYColumn(\n ds.data.columns[index],\n options\n );\n // do not perform downsampling if a column can possibly be displayed but cannot\n // be downsampled using LTTB\n hasDisplayedColumnThatCantBeDownsampled = canLooselyCoerceSomeValues && !canDownsampleColumn;\n if (hasDisplayedColumnThatCantBeDownsampled) {\n return true;\n }\n if (canDownsampleColumn) {\n yColumns.push(coercedColumn);\n }\n }\n return false;\n });\n\n if (canDownsample) {\n return { xColumn, yColumns };\n }\n return { xColumn: [], yColumns: [] };\n};\n\nconst pickIndicesFromDataSource = (ds: DataSource, indices: Set<number>): DataSource => {\n const sortedIndices = Array.from(indices).sort((a: number, b: number) => a - b);\n const slicedColumns = [];\n ds.data.columns.forEach(column => {\n const slicedColumn = [];\n sortedIndices.forEach(index => {\n slicedColumn.push(column[index]);\n });\n slicedColumns.push(slicedColumn);\n });\n\n // update data columns with downsampled columns\n return {\n ...ds,\n data: {\n ...ds.data,\n columns: slicedColumns,\n },\n };\n};\n\nexport const downsampleDataSources = ({ dataSources, threshold, options }: DownsampleOptions) => {\n const primaryDS = dataSources?.primary;\n // only downsample time series when number of data points are over threshold\n const numPoints = primaryDS?.data?.columns[0]?.length ?? 0;\n if (Number.isNaN(threshold) || numPoints <= threshold || threshold < 2) {\n return dataSources;\n }\n\n const { xField, yFields, fieldTypes } = options;\n if (!xField || !yFields?.length || !fieldTypes?.length) {\n return dataSources;\n }\n\n const nonInternalYFields = new Set<string>(yFields.filter(yField => !yField.startsWith('_')));\n const maxPointsInDownsample = Math.min(nonInternalYFields.size * threshold, numPoints);\n\n // Do not try to downsample if there are too many downsampled pts\n // At the worst case, each series has non-overlapping downsampled pts\n // which will mean that all points will be included in the downsampled result\n // This will just lead to additional overhead due to coercing each\n // x and y field to number\n if (maxPointsInDownsample >= numPoints) {\n return dataSources;\n }\n\n const { xColumn, yColumns } = tryToCoerceAllDisplayedFields(\n primaryDS,\n xField,\n nonInternalYFields,\n fieldTypes,\n options\n );\n\n if (!yColumns.length || !xColumn.length) {\n return dataSources;\n }\n\n const downsampledDataSources = { ...dataSources };\n const downsampledIndices = new Set<number>();\n\n yColumns.forEach((yColumn, columnIndex) => {\n // perform LTTB downsampling for current series, LTTB takes an [x, y] pair\n const xyPair: [Date | number, number][] = yColumn.map((yValue, index) => {\n return [xColumn[index], yValue];\n });\n\n try {\n const { downsampledIndices: downsampledIndicesForSeries } = largestTriangleThreeBuckets(\n xyPair,\n threshold,\n downsampledIndices\n );\n downsampledIndicesForSeries.forEach(downsampleIndex => downsampledIndices.add(downsampleIndex));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(`Error occurred while downsampling column ${columnIndex}`, e);\n }\n });\n // update data columns with downsampled columns\n downsampledDataSources.primary = pickIndicesFromDataSource(primaryDS, downsampledIndices);\n\n return downsampledDataSources;\n};\n", "\nimport * as defaultImport from \"@splunk/visualization-context/FeatureFlagContext\";\nexport * from \"@splunk/visualization-context/FeatureFlagContext\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { useContext } from 'react';\nimport FeatureFlagContext from '@splunk/visualization-context/FeatureFlagContext';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\n\nexport const useTrellisFeatureFlagOn = (): boolean => {\n const context = useContext(FeatureFlagContext) as Record<string, unknown>;\n return Boolean(context?.visualizations_enableTrellis);\n};\n\nexport const useTrellisEnabled = (layoutType = LAYOUT_TYPE.Off): boolean => {\n const trellisFeatureEnabled = useTrellisFeatureFlagOn();\n return trellisFeatureEnabled && layoutType === LAYOUT_TYPE.Trellis;\n};\n", "import * as React from 'react';\nimport styled from 'styled-components';\n\nexport const TRELLIS_TITLE_HEIGHT = 28;\n\nconst TrellisTitleText = styled.div`\n margin-left: 10px;\n margin-right: 10px;\n padding-top: 8px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n`;\n\nconst TrellisTitleDiv = styled.div<{\n fontColor: string;\n backgroundColor: string;\n}>`\n height: ${TRELLIS_TITLE_HEIGHT}px;\n font-size: 14px;\n font-weight: 700;\n color: ${props => props.fontColor};\n background-color: ${props => props.backgroundColor};\n box-shadow: 0 1px ${props => props.backgroundColor}; // this is added to avoid a 1px gap between title and viz divs that showed up intermittently because of pixel rounding error in chrome.\n`;\n\ninterface TrellisTitleProps {\n fontColor: string;\n backgroundColor: string;\n trellisKey: unknown;\n}\n\nexport const TrellisTitle = (props: TrellisTitleProps) => {\n const titleText = String(props.trellisKey).toString();\n return (\n <TrellisTitleDiv\n fontColor={props.fontColor}\n backgroundColor={props.backgroundColor}\n data-test=\"trellis-title\"\n title={titleText}\n >\n <TrellisTitleText>{titleText}</TrellisTitleText>\n </TrellisTitleDiv>\n );\n};\n", "/* eslint-disable react/no-unused-prop-types */\nimport { pick, debounce, noop } from 'lodash';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport * as T from 'prop-types';\nimport EventListener from 'react-event-listener';\nimport '@splunk/visualizations-shared/i18n'; // fixme, @splunk/charting should be refactor to use locale & timezone instead of i18n functions\nimport jsCharting from '@splunk/charting-bundle';\nimport TimezoneContext, { TimezoneContextInterface } from '@splunk/visualization-context/TimezoneContext';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport styled from 'styled-components';\nimport Message from '@splunk/visualizations-shared/Message';\nimport useSplunkTheme from '@splunk/themes/useSplunkTheme';\nimport { getChartingThemeKey } from '@splunk/visualizations-shared/themeUtils';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { ChartingApiFunctional } from './ChartingApi';\nimport usePrevious from './hooks/usePrevious';\nimport useEventCallback from './hooks/useEventCallback';\nimport { DataSource } from './interfaces';\nimport { calculateDownsamplingThreshold } from './utils/dataUtils';\nimport type { ChartEvent } from './interfaces/ChartEvent';\nimport { useTrellisEnabled } from './hooks/useTrellisEnabled';\nimport { TrellisTitle, TRELLIS_TITLE_HEIGHT } from './components/TrellisTitle';\n\nexport const NO_INPLACE_PROPS = [\n 'chart',\n 'chart.orientation',\n 'layout.splitSeries',\n 'chart.style',\n 'legend.placement',\n];\n\nexport const appendTrellisToPayload = (\n props: ChartingProps,\n payload: Record<string, unknown>\n): Record<string, unknown> => {\n if (props.trellisSplitBy) {\n // eslint-disable-next-line no-param-reassign\n payload['trellis.name'] = props.trellisSplitBy;\n }\n if (props.trellisKey) {\n // eslint-disable-next-line no-param-reassign\n payload['trellis.value'] = props.trellisKey;\n }\n return payload;\n};\n\nexport const changedOptions = (\n curOptions: Record<string, unknown>,\n nextOptions: Record<string, unknown>\n): string[] =>\n Object.keys(curOptions)\n .filter(key => !(key in nextOptions))\n .concat(\n Object.keys(nextOptions).filter(\n key => !(key in curOptions) || curOptions[key] !== nextOptions[key]\n )\n );\n\nexport const canUpdateInPlace = (\n curOptions: Record<string, unknown>,\n nextOptions: Record<string, unknown>\n): boolean => {\n // if either of the options are undefined\n // it cannot update in place.\n if (!curOptions || !nextOptions) {\n return false;\n }\n return (\n !NO_INPLACE_PROPS.some(p => curOptions[p] !== nextOptions[p]) &&\n !changedOptions(curOptions, nextOptions).some(p => p.toLowerCase().endsWith('color'))\n );\n};\n\n// create 'row' payloads from 'rowContext' in the flattened format:\n// row.<fieldname>.value\nexport const updateRowPayload = (\n chartEventRowContext: Record<string, unknown>,\n payload: Record<string, unknown>\n): Record<string, unknown> => {\n Object.keys(chartEventRowContext || {}).forEach(key => {\n // eslint-disable-next-line no-param-reassign\n payload[`${key}.value`] = chartEventRowContext[key];\n });\n\n return payload;\n};\n\nexport interface ContainerProps {\n width: string | number;\n height: string | number;\n}\n\nenum VizChartEventType {\n POINT_CLICK = 'point.click',\n POINT_MOUSE_OUT = 'point.mouseout',\n POINT_MOUSE_OVER = 'point.mouseover',\n LEGEND_CLICK = 'legend.click',\n}\n\n// @TODO(pwied): remove after HC upgrade to 8+\n// .highcharts-a11y-proxy-container rule addresses a HighCharts < 8 bug\n// caused by the accessibility plugin\n// https://github.com/highcharts/highcharts/issues/12883\nconst ChartingContainer = styled.div.attrs((props: ContainerProps) => ({\n 'data-test': 'charting-container',\n width: props.width,\n height: props.height,\n}))`\n & .highcharts-a11y-proxy-container {\n pointer-events: none;\n }\n overflow: hidden;\n position: relative;\n ${props => toDimension(pick(props, ['width', 'height']))};\n`;\n\nexport interface ChartingProps {\n // width in pixel or string, defaults to 100%\n width: string | number;\n // height in pixel or string\n height: string | number;\n // visualization formatting options\n options?: Record<string, any>;\n // charting dataset from jsCharting.extractChartReadyData\n chartData: Record<string, any>;\n // callbacks to trigger event\n onEventTrigger?: (...args: any[]) => void;\n onSelect?: (...args: any[]) => void;\n onClick?: (...args: any[]) => void;\n onPointMouseOver?: (...args: any[]) => void;\n onPointMouseOut?: (...args: any[]) => void;\n // Custom style on visualization\n style?: Record<string, unknown>;\n colorPalette?: Array<string>;\n visualizationApiRef?: (...args: any[]) => void;\n themeKey?: string;\n // The non-downsampled data sources used by this chart. Passed in if downsampling\n // is enabled for this chart.\n originalDataSources?: Record<string, DataSource> | null;\n // Callback for when downsampling threshold changes. Passed in if downsampling\n // is enabled for this chart.\n onDownsamplingThresholdChange?: (threshold: number) => void | null;\n // The xField for this chart if it is an axis chart\n xField?: string;\n // The y2Fields for this chart if it is specified and it is an axis chart\n y2Fields?: string[];\n // The additional tooltip fields for this chart if it is specified and it is an axis chart\n additionalTooltipFields?: string[];\n splitByLayout?: LAYOUT_TYPE;\n trellisKey?: string;\n trellisSplitBy?: string;\n backgroundColor?: string;\n defaultFontColor?: string;\n}\n\nconst propTypes: Record<keyof ChartingProps, T.Validator<any>> = {\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n options: T.object,\n chartData: T.object,\n onEventTrigger: T.func,\n onClick: T.func,\n onSelect: T.func,\n onPointMouseOver: T.func,\n onPointMouseOut: T.func,\n style: T.object,\n colorPalette: T.array,\n visualizationApiRef: T.func,\n themeKey: T.string,\n originalDataSources: T.object,\n onDownsamplingThresholdChange: T.func,\n xField: T.string,\n y2Fields: T.array,\n additionalTooltipFields: T.array,\n splitByLayout: T.oneOf(Object.values(LAYOUT_TYPE)),\n trellisKey: T.string,\n trellisSplitBy: T.string,\n backgroundColor: T.string,\n defaultFontColor: T.string,\n};\n\nconst Charting: React.FC<ChartingProps> = props => {\n const container = useRef<HTMLDivElement>(null);\n const needsInit = useRef<boolean>(true);\n const chart = useRef<jsCharting>();\n const needsRedraw = useRef<boolean>(true);\n const api = useRef(new ChartingApiFunctional(chart));\n const timezone = useContext<TimezoneContextInterface>(TimezoneContext);\n const selectChartEvent = useRef<ChartEvent<'chartRangeSelect'>>(null);\n const trellisEnabled = useTrellisEnabled(props.splitByLayout);\n\n const computeChartingSize = () => {\n if (container.current) {\n const rect = container.current.getBoundingClientRect();\n return {\n height: rect.height,\n width: rect.width,\n };\n }\n return {};\n };\n const splunkTheme = useSplunkTheme();\n const themeKey = props.themeKey ? props.themeKey : getChartingThemeKey({ splunkThemeV1: splunkTheme });\n const {\n width,\n height,\n style,\n chartData,\n options,\n colorPalette,\n onClick,\n onSelect,\n onPointMouseOut,\n onPointMouseOver,\n onEventTrigger,\n originalDataSources,\n onDownsamplingThresholdChange,\n xField,\n backgroundColor,\n defaultFontColor,\n trellisKey,\n additionalTooltipFields,\n } = props;\n const prevOptions = usePrevious(options);\n const prevTimezone = usePrevious(timezone);\n\n const handleClick = (\n chartEvent: ChartEvent<'pointClick' | 'legendClick'>,\n type: VizChartEventType\n ): void => {\n let payload: Partial<ChartEvent<'pointClick' | 'legendClick'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n\n if (type === VizChartEventType.POINT_CLICK) {\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n }\n\n payload = appendTrellisToPayload(props, payload);\n\n onClick({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const destroyChart = (): void => {\n if (chart.current) {\n chart.current.destroy();\n chart.current = null;\n }\n needsRedraw.current = true;\n needsInit.current = true;\n };\n\n const enableSearchZoom = chartData?.chartDataOptions?.enableSearchZoom ?? false;\n const recalculateDownsamplingThreshold = React.useCallback(() => {\n if (!onDownsamplingThresholdChange || !xField) {\n return;\n }\n\n const newThreshold = calculateDownsamplingThreshold({\n enableSearchZoom,\n dataSources: originalDataSources,\n width: Number(width),\n selectChartEvent: selectChartEvent.current,\n xField,\n });\n\n if (Number.isFinite(newThreshold)) {\n onDownsamplingThresholdChange(newThreshold);\n }\n }, [enableSearchZoom, originalDataSources, onDownsamplingThresholdChange, width, xField]);\n\n React.useEffect(() => {\n recalculateDownsamplingThreshold();\n }, [recalculateDownsamplingThreshold]);\n\n // useEventCallback is used for these handlers to make sure that they are a stable reference and\n // we always use the latest version of the callback\n // Since chart drawing is debounced, there is a race condition where a stale callback may be called\n // if a prop changes and the event handler is called before the chart redraws. This means that\n // it will use the old callback rather than the newer one, which can lead to inaccurate results\n const handleSelect = useEventCallback((chartEvent: ChartEvent<'chartRangeSelect'>): void => {\n selectChartEvent.current = chartEvent;\n recalculateDownsamplingThreshold();\n const payload = appendTrellisToPayload(\n props,\n pick(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue')\n );\n\n // todo: need change this after breaking all visualizations\n if (onSelect && typeof onSelect === 'function') {\n onSelect({\n type: 'range.select',\n originalEvent: chartEvent,\n payload,\n });\n\n return;\n }\n\n // the chartEvent here is a jQuery event\n onEventTrigger({\n type: 'range.select',\n originalEvent: chartEvent,\n payload,\n });\n });\n\n const handlePointMouseOut = useEventCallback(\n (chartEvent: ChartEvent<'pointMouseOut'>, type: VizChartEventType): void => {\n let payload: Partial<ChartEvent<'pointMouseOut'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = appendTrellisToPayload(props, updateRowPayload(chartEvent.rowContext, payload));\n\n onPointMouseOut({\n type,\n originalEvent: chartEvent,\n payload,\n });\n }\n );\n\n const handlePointMouseOver = useEventCallback(\n (chartEvent: ChartEvent<'pointMouseOver'>, type: VizChartEventType): void => {\n let payload: Partial<ChartEvent<'pointMouseOver'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = appendTrellisToPayload(props, updateRowPayload(chartEvent.rowContext, payload));\n\n onPointMouseOver({\n type,\n originalEvent: chartEvent,\n payload,\n });\n }\n );\n\n const drawChart = (): void => {\n const updatedOptions = { ...options, shouldColorizeTooltipData: false };\n const computedChartSize = computeChartingSize();\n const computedWidth = computedChartSize.width;\n const computedHeight = computedChartSize.height;\n const serializedTimezone = timezone?.serializedTimezone;\n const ianaTimezone = timezone?.ianaTimezone;\n const utcOffset = timezone?.utcOffset;\n if (!computedWidth || !computedHeight) {\n return;\n }\n if (!chartData || !Object.keys(chartData).length) {\n return;\n }\n\n // splunk-charting layers configuration option updates.\n // when an option is removed it needs to be set to an empty string\n // to override the previous configuration\n if (prevOptions) {\n Object.keys(prevOptions).forEach(key => {\n if (prevOptions[key] && updatedOptions[key] === undefined) {\n updatedOptions[key] = '';\n }\n });\n }\n\n try {\n if (needsInit.current) {\n destroyChart();\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n chart.current = jsCharting.createChart(container.current, {\n ...updatedOptions,\n drilldown: 'all',\n ...(typeof serializedTimezone === 'string' && {\n 'time.serializedTz': serializedTimezone,\n }),\n ...(typeof ianaTimezone === 'string' && {\n 'time.ianaTimezone': ianaTimezone,\n }),\n ...(typeof utcOffset === 'number' && {\n 'time.timezoneOffset': utcOffset,\n }),\n });\n // bind event handlers\n chart.current.on('pointClick', e => {\n handleClick(e, VizChartEventType.POINT_CLICK);\n });\n chart.current.on('pointMouseOver', e => {\n handlePointMouseOver(e, VizChartEventType.POINT_MOUSE_OVER);\n });\n chart.current.on('pointMouseOut', e => {\n handlePointMouseOut(e, VizChartEventType.POINT_MOUSE_OUT);\n });\n chart.current.on('legendClick', e => {\n handleClick(e, VizChartEventType.LEGEND_CLICK);\n });\n chart.current.on('chartRangeSelect', handleSelect);\n }\n if (needsRedraw.current) {\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n const payload = appendTrellisToPayload(props, {\n width,\n height,\n currentTime: new Date().getTime(),\n });\n chart.current.prepareAndDraw(chartData, updatedOptions, () => {\n onEventTrigger({\n type: 'viz.renderedWithData',\n payload,\n });\n });\n }\n if (chart.current) {\n if (\n Math.round(chart.current.height) !== Math.round(computedHeight) ||\n Math.round(chart.current.width) !== Math.round(computedWidth)\n ) {\n chart.current.resize(computedWidth, computedHeight);\n }\n }\n needsInit.current = false;\n needsRedraw.current = false;\n } catch (e) {\n window.console.error('Caught error rendering chart:', e);\n }\n };\n\n const debouncedDrawChart = debounce(drawChart, 5);\n\n const onContainerMount = chartingContainer => {\n container.current = chartingContainer;\n debouncedDrawChart();\n };\n\n const prevTheme = usePrevious(themeKey);\n const prevOnClick = usePrevious(onClick);\n\n useEffect(() => {\n debouncedDrawChart();\n props.visualizationApiRef(api.current);\n return () => {\n props.visualizationApiRef(null);\n destroyChart();\n };\n }, []);\n\n useEffect(() => {\n // TODO: figure out why re-init is needed for functional components (i.e. PlatformViz) when changing theme\n // seems like redraw doesn't suffice to update the background colors\n if (\n !chart.current ||\n !canUpdateInPlace(prevOptions, options) ||\n // timezone is a simple object so this comparison should be fast\n JSON.stringify(prevTimezone) !== JSON.stringify(timezone) ||\n (!props.themeKey && prevTheme !== themeKey) ||\n prevOnClick !== onClick\n ) {\n needsInit.current = true;\n }\n // need to immediately call drawChart upon an option or chartData change\n // otherwise a noop would occur if the onContainerMount drawChart is re-invoked when dimensions change\n needsRedraw.current = true;\n drawChart();\n }, [\n JSON.stringify(options),\n JSON.stringify(chartData.toJSON()),\n JSON.stringify(chartData.annotations),\n timezone?.ianaTimezone,\n timezone?.utcOffset,\n timezone?.serializedTimezone,\n themeKey,\n onClick,\n additionalTooltipFields,\n ]);\n\n return (\n <>\n {trellisEnabled && (\n <TrellisTitle\n trellisKey={trellisKey}\n backgroundColor={backgroundColor}\n fontColor={defaultFontColor}\n />\n )}\n <ChartingContainer\n style={style}\n ref={onContainerMount}\n width={width}\n height={trellisEnabled ? Number(height) - TRELLIS_TITLE_HEIGHT : height}\n >\n <EventListener target={window} onResize={debouncedDrawChart} />\n </ChartingContainer>\n </>\n );\n};\n\nconst defaultProps: Record<keyof ChartingProps, any> = {\n width: '100%',\n height: 250,\n options: {},\n style: {},\n // todo: need remove it\n onEventTrigger: noop,\n onClick: noop,\n onSelect: noop,\n onPointMouseOver: noop,\n onPointMouseOut: noop,\n colorPalette: VIZ_CATEGORICAL,\n visualizationApiRef: noop,\n chartData: null,\n themeKey: null,\n onDownsamplingThresholdChange: null,\n originalDataSources: null,\n xField: null,\n y2Fields: [],\n splitByLayout: undefined,\n trellisKey: undefined,\n trellisSplitBy: undefined,\n backgroundColor: '',\n defaultFontColor: '',\n additionalTooltipFields: [],\n};\n\nCharting.propTypes = propTypes;\nCharting.defaultProps = defaultProps;\n\n// allow for early return in case of empty chartData while still following hook rules\nconst ChartingWrapper: React.FC<ChartingProps> = props => {\n const { chartData } = props;\n\n if (!chartData) {\n return <Message message={_('No DataSource')} level=\"warning\" />;\n }\n\n if (!Object.keys(chartData).length) {\n return <Message message={_('No Result')} level=\"info\" />;\n }\n\n return <Charting {...props} />;\n};\n\nChartingWrapper.propTypes = propTypes;\nChartingWrapper.defaultProps = defaultProps;\nexport default ChartingWrapper;\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/simpleXMLOptions\";\nexport * from \"@splunk/visualizations-shared/simpleXMLOptions\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-icons\";\nexport * from \"@splunk/visualization-icons\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-icons/placeholders\";\nexport * from \"@splunk/visualization-icons/placeholders\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes/pick\";\nexport * from \"@splunk/themes/pick\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes/variables\";\nexport * from \"@splunk/themes/variables\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/configUtils\";\nexport * from \"@splunk/visualizations-shared/configUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { get, range } from 'lodash';\nimport { isDynamicOption } from '@splunk/visualizations-shared/configUtils';\nimport { VizConfig } from '../interfaces/VizConfig';\nimport { EditorLayoutConfig, EditorConfig } from '../interfaces/Editor';\n\n// included for backwards compatibility\nexport { enhanceOptionsSchemaWithDynamicOptions } from '@splunk/visualization-schemas';\n\nexport interface PresetEntry {\n name: string;\n value: any;\n label: string;\n}\n\n/**\n * Helper function to enhance a Visualization Config as needed based on behaviors specified in supports block\n * this function also collapse all editor panels\n * @param vizConfig a Visualization Config\n * @returns an enhanced Visualization Config containing updated config entries based on behaviors it supports\n * and containing `open: false` for all editor panels in editorConfig\n */\nfunction enhanceConfig(vizConfig: VizConfig): VizConfig {\n const enhancedConfig: VizConfig = { ...vizConfig };\n\n enhancedConfig.editorConfig = vizConfig.editorConfig.map((config: EditorConfig): EditorConfig => {\n return { ...config, open: config.open || false };\n });\n return enhancedConfig;\n}\n\n/**\n * Helper function to uncollapse all editor panels by adding `open: true` to the editorConfig\n * Created for editor unit tests\n * @param vizConfig a Visualization Config\n * @returns a Visualization Config containing `open: true` for all editor panels in editorConfig\n */\nfunction uncollapseEditorConfig(vizConfig: VizConfig): VizConfig {\n const editorPanelUncollapsedConfig: VizConfig = { ...vizConfig };\n editorPanelUncollapsedConfig.editorConfig = vizConfig.editorConfig.map(\n (config: EditorConfig): EditorConfig => {\n return { ...config, open: true };\n }\n );\n return editorPanelUncollapsedConfig;\n}\n\n// private helpers to improve readability of getInitialPreset\n// this shouldn't be tested since this util isn't something that we expect to use outside of getInitialPreset\n\n/**\n * this checks to make sure that all values within vizContext are compatible with the given preset's context to determine the initialPreset\n * if a preset has explicitly specified a key as being undefined, the vizContext must also has that key as undefined, or else this CANNOT be the initialPreset\n * the inverse is true; if a preset has key is NOT undefined, it must also be NOT undefined in the corresponding vizContext\n * the internal config contents are irrelevant (as the user could customize them in source), just as long as the presence of `undefined`s match up\n *\n * Since the presetConfigs have explicit undefined keys to override the existing config, we need to explicitly check the undefined values\n */\nfunction hasCompatibleContexts(\n vizContext: { [configKey: string]: any },\n presetContext: { [configKey: string]: any }\n): boolean {\n const presetContextKeys = Object.keys(presetContext);\n return presetContextKeys.every(\n (contextKey): boolean =>\n (presetContext[contextKey] === undefined && vizContext[contextKey] === undefined) ||\n (presetContext[contextKey] !== undefined && vizContext[contextKey] !== undefined)\n );\n}\n\n/**\n * Checks to make sure that dynamic (non-dynamic) options in a given preset are also dynamic (non-dynamic) in the vizOptions\n */\nfunction hasCompatibleOptions(\n vizOptions: { [configKey: string]: any },\n presetOptions: { [configKey: string]: any }\n): boolean {\n const presetOptionKeys = Object.keys(presetOptions);\n return presetOptionKeys.every(\n (optionKey): boolean =>\n isDynamicOption(presetOptions[optionKey]) === isDynamicOption(vizOptions[optionKey])\n );\n}\n\n/**\n * Evaluates whether there is an initialPreset that fits the current state of vizContext + vizOptions\n * This function ignores extraneous vizOptions or vizContext keys, as they could be outside the scope of what the preset is intended to configure\n *\n * @param {Object} vizContext - the current vizContext definition\n * @param {Object} vizOptions - the current vizOptions definition\n * @param {PresetEntry[]} presets - the list of presets, one of which can be considered an initialPreset\n */\nfunction getInitialPreset(\n vizContext: { [configKey: string]: any },\n vizOptions: { [configKey: string]: any },\n presets: PresetEntry[]\n): PresetEntry | null {\n return presets.find((preset): boolean => {\n const presetContext = get(preset, ['value', 'context'], {});\n const presetOptions = get(preset, ['value', 'options'], {});\n const presetContextKeys = Object.keys(presetContext);\n const presetOptionKeys = Object.keys(presetOptions);\n\n // all presets have to explicitly specify which options to reset (i.e. need explicitly undefined keys)\n // if not, then the preset is invalid in config.ts\n if (presetContextKeys.length === 0 || presetOptionKeys.length === 0) return false;\n\n return (\n hasCompatibleContexts(vizContext, presetContext) &&\n hasCompatibleOptions(vizOptions, presetOptions)\n );\n });\n}\n\ninterface PrecisionOption {\n label: string;\n value: number;\n}\n\n/**\n * generates number precision values for a Select editor\n *\n * @param {Number} numPrecisionValues - number of integer precision values to generate\n * @returns {{ label: string; value; string }[]} array of { label, value } tuples\n */\nfunction generatePrecisionValues(numPrecisionValues: number): PrecisionOption[] {\n return range(0, numPrecisionValues + 1).map(\n (i): PrecisionOption => ({\n label: `${i} (0${i > 0 ? '.' : ''}${'0'.repeat(i)})`, // e.g. 0.000 for numPrecisionValues = 3\n value: i,\n })\n );\n}\n\nexport { enhanceConfig, getInitialPreset, generatePrecisionValues, uncollapseEditorConfig, isDynamicOption };\n\n/**\n * insert layout in layout array, return a new layout array instead of updating the original\n *\n * @param {EditorLayoutConfig[][]} layout - editor layout\n * @param {Number} index - the index to insert layout item(s)\n * @param {EditorLayoutConfig[][]} layoutItems - the item(s) to insert\n * @returns {EditorLayoutConfig[][]} new editor layout with insertion\n */\nexport const insertLayout = (\n layout: EditorLayoutConfig[][],\n index: number,\n ...layoutItems: EditorLayoutConfig[][]\n): EditorLayoutConfig[][] => [\n // copy part of the array before the specified index\n ...layout.slice(0, index),\n // inserted layout item\n ...layoutItems,\n // copy part of the array after the specified index\n ...layout.slice(index),\n];\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { insertLayout } from '../utils/configUtils';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisEnabled = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === LAYOUT_TYPE.Trellis;\n};\n\nconst AxesChartDataConfig: EditorConfig = {\n label: _('Data configurations'),\n layout: [\n [\n {\n label: _('X'),\n option: 'x',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Y'),\n option: 'y',\n editor: 'editor.columnMultiSelector',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n supportsDSL: true,\n expectedDataPrimitive: ['series', 'frame'],\n },\n },\n ],\n [\n {\n label: _('Additional tooltip fields'),\n option: 'additionalTooltipFields',\n editor: 'editor.columnMultiSelectionByFieldNameEditor',\n },\n ],\n [\n {\n label: _('Result limit'),\n option: 'resultLimit',\n editor: 'editor.number',\n editorProps: {\n dataSourceKey: 'primary',\n },\n },\n ],\n ],\n};\n\nexport const AxesChartDataConfigBar: EditorConfig = {\n label: AxesChartDataConfig.label,\n // insert Y2 after Y\n layout: insertLayout(AxesChartDataConfig.layout, 2, [\n {\n label: _('Y2'),\n option: 'y2',\n editor: 'editor.columnMultiSelector',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n supportsDSL: true,\n expectedDataPrimitive: ['series', 'frame'],\n },\n isDisabled: isTrellisEnabled,\n },\n ]),\n};\n\nexport const AxesChartDataConfigScatter: EditorConfig = {\n label: AxesChartDataConfig.label,\n layout: [\n [\n {\n label: _('X'),\n option: 'x',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Y'),\n option: 'y',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Category'),\n option: 'category',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Result limit'),\n option: 'resultLimit',\n editor: 'editor.number',\n editorProps: {\n dataSourceKey: 'primary',\n },\n },\n ],\n ],\n};\n\nexport const AxesChartDataConfigBubble: EditorConfig = {\n label: AxesChartDataConfigScatter.label,\n // layout: insert Size after Category\n layout: insertLayout(AxesChartDataConfigScatter.layout, 3, [\n {\n label: _('Size'),\n option: 'size',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'primary',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ]),\n};\n\nexport const AxesChartDataConfigAreaColumnLine: EditorConfig = {\n label: AxesChartDataConfigBar.label,\n layout: [\n ...AxesChartDataConfigBar.layout,\n [\n {\n label: _('Annotation x'),\n option: 'annotationX',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'annotation',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n [\n {\n label: _('Annotation labels'),\n option: 'annotationLabel',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'annotation',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n ],\n};\n\nexport default AxesChartDataConfig;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisEnabled = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === LAYOUT_TYPE.Trellis;\n};\n\nexport const TrellisEditorConfig = [\n [\n {\n label: _('Trellis layout'),\n option: 'splitByLayout',\n editor: 'editor.toggle',\n showEditor: isTrellisFeatureFlagOn,\n },\n ],\n [\n {\n label: _('Split by'),\n option: 'trellisSplitBy',\n editor: 'editor.trellisSplitBy',\n editorProps: {\n dataSourceKey: 'primary',\n },\n showEditor: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Number of columns'),\n option: 'trellisColumns',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Min column width'),\n option: 'trellisMinColumnWidth',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n {\n label: _('Row height'),\n option: 'trellisRowHeight',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Max number of components per page'),\n option: 'trellisPageCount',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n },\n showEditor: isTrellisEnabled,\n },\n ],\n];\n\nexport const TimechartTrellisEditorConfig = [\n [\n {\n label: _('Trellis layout'),\n option: 'splitByLayout',\n editor: 'editor.toggle',\n showEditor: isTrellisFeatureFlagOn,\n // add help text for timecharts\n editorProps: {\n help: _(\n 'Y2-axis and overlay field configurations are not supported when trellis is enabled.'\n ),\n helpFormat: 'under',\n },\n },\n ],\n ...TrellisEditorConfig.slice(1),\n [\n {\n label: _('Shared y-axis scale'),\n option: 'trellisSharedScale',\n editor: 'editor.checkbox',\n showEditor: isTrellisEnabled,\n },\n ],\n];\n\nexport const TrellisBackgroundColorEditor = {\n label: _('Trellis background'),\n option: 'trellisBackgroundColor',\n editor: 'editor.color',\n showEditor: isTrellisEnabled,\n};\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { TimechartTrellisEditorConfig, TrellisEditorConfig } from './TrellisEditors';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisEnabled = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return isTrellisFeatureFlagOn({ featureFlags }) && splitByLayout === LAYOUT_TYPE.Trellis;\n};\n\nconst AxesChartDataDisplayBase: EditorConfig = {\n label: _('Data display'),\n layout: [\n [\n {\n label: _('Stack mode'),\n option: 'stackMode',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('Not stacked'), value: 'auto' },\n { label: _('Stacked'), value: 'stacked' },\n { label: _('Stacked 100%'), value: 'stacked100' },\n ],\n },\n },\n ],\n [\n {\n label: _('Null value display'),\n option: 'nullValueDisplay',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Gaps'), value: 'gaps' },\n { label: _('Zero'), value: 'zero' },\n { label: _('Connect'), value: 'connect' },\n ],\n },\n },\n ],\n [\n {\n label: _('Data value display'),\n option: 'dataValuesDisplay',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Off'), value: 'off' },\n { label: _('All'), value: 'all' },\n { label: _('Min/Max'), value: 'minmax' },\n ],\n },\n },\n ],\n [\n {\n label: _('Overlay fields'),\n option: 'overlayFields',\n editor: 'editor.columnMultiSelectionByFieldNameEditor',\n editorProps: {\n filterByTypes: ['number'],\n },\n isDisabled: isTrellisEnabled,\n },\n ],\n [\n {\n label: _('Split series'),\n option: 'showSplitSeries',\n editor: 'editor.toggle',\n },\n ],\n [\n {\n label: _('Independent y-axis for split series'),\n option: 'showIndependentYRanges',\n editor: 'editor.checkbox',\n showEditor: ({ options }) => options.showSplitSeries,\n },\n ],\n ...TimechartTrellisEditorConfig,\n ],\n};\n\nexport const AxesChartDataDisplayArea: EditorConfig = AxesChartDataDisplayBase;\n\nexport const AxesChartDataDisplayBar: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n AxesChartDataDisplayBase.layout[0],\n // remove null value display editor at index 1\n ...AxesChartDataDisplayBase.layout.slice(2),\n ],\n};\n\nexport const AxesChartDataDisplayScatter: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n ...TrellisEditorConfig,\n [\n {\n label: _('Shared y-axis scale'),\n option: 'trellisSharedScale',\n editor: 'editor.checkbox',\n showEditor: isTrellisEnabled,\n },\n ],\n ],\n};\n\nexport const AxesChartDataDisplayColumn: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n AxesChartDataDisplayBase.layout[0],\n // remove null value display and add data value display\n AxesChartDataDisplayBase.layout[2],\n [\n {\n label: _('Show tooltip on hover'),\n option: 'showTooltip',\n editor: 'editor.checkbox',\n },\n ],\n ...AxesChartDataDisplayBase.layout.slice(3),\n [\n {\n label: _('Column grouping mode'),\n option: 'columnGrouping',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Overlay'), value: 'overlay' },\n ],\n },\n },\n ],\n ],\n};\n\nexport const AxesChartDataDisplayLine: EditorConfig = {\n label: AxesChartDataDisplayBase.label,\n layout: [\n // remove stacked mode editor\n ...AxesChartDataDisplayBase.layout.slice(1),\n ],\n};\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorLayoutConfig } from '../interfaces/Editor';\nimport { ThemedDefaults } from '../interfaces/ThemedDefaults';\n\ninterface backgroundEditorProps {\n label?: string;\n themes: ThemedDefaults;\n labelPosition?: string;\n}\n\nconst background: ({ label, themes, labelPosition }: backgroundEditorProps) => EditorLayoutConfig[] = ({\n label,\n themes,\n labelPosition,\n}) => [\n {\n label: _(label || 'Background color'),\n option: 'backgroundColor',\n editor: 'editor.color',\n editorProps: {\n labelPosition: labelPosition || 'top',\n themes,\n },\n },\n];\n\nexport default background;\n", "import pick from '@splunk/themes/pick';\nimport variables from '@splunk/themes/variables';\n\nexport const defaultBackgroundColor = props =>\n pick({\n enterprise: {\n dark: variables.black(props),\n light: variables.white(props),\n },\n prisma: variables.backgroundColorSection(props),\n })(props);\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { ThemedDefaults } from '../interfaces/ThemedDefaults';\nimport getBackgroundColorEditor from '../editorConfig/BackgroundColor';\nimport { TrellisBackgroundColorEditor } from './TrellisEditors';\nimport { defaultBackgroundColor } from '../ThemedDefaults';\n\nconst themes: ThemedDefaults = {\n defaultBackgroundColor,\n};\n\nconst AxesChartColorAndStyle: EditorConfig = {\n label: _('Color and style'),\n layout: [\n getBackgroundColorEditor({ themes }),\n [\n {\n label: _('Series colors'),\n option: 'seriesColors',\n editor: 'editor.seriesColors',\n },\n ],\n [\n {\n label: _('Series colors by field name'),\n option: 'seriesColorsByField',\n editor: 'editor.seriesColorsByField',\n },\n ],\n ],\n};\n\nexport const AxesChartColorAndStyleWithTrellis: EditorConfig = {\n ...AxesChartColorAndStyle,\n layout: [\n AxesChartColorAndStyle.layout[0],\n [\n {\n ...TrellisBackgroundColorEditor,\n editorProps: {\n themes,\n },\n },\n ],\n ...AxesChartColorAndStyle.layout.slice(1),\n ],\n};\n\nexport default AxesChartColorAndStyle;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\n\nconst AxesChartLegend: EditorConfig = {\n label: _('Legend'),\n layout: [\n [\n {\n label: _('Legend display'),\n option: 'legendDisplay',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('Right'), value: 'right' },\n { label: _('Left'), value: 'left' },\n { label: _('Top'), value: 'top' },\n { label: _('Bottom'), value: 'bottom' },\n { label: _('Off'), value: 'off' },\n ],\n },\n },\n ],\n [\n {\n label: _('Legend truncation'),\n option: 'legendTruncation',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('A...'), value: 'ellipsisEnd' },\n { label: _('A...Z'), value: 'ellipsisMiddle' },\n { label: _('...Z'), value: 'ellipsisStart' },\n { label: _('Off'), value: 'ellipsisOff' },\n ],\n },\n showEditor: ({ options }) =>\n options.legendDisplay === 'left' ||\n options.legendDisplay === 'right' ||\n options.legendDisplay === 'top' ||\n options.legendDisplay === 'bottom' ||\n options.legendDisplay === undefined,\n },\n ],\n ],\n};\n\nexport const AxesChartLegendWithTrellisAndMode = ({\n showLegendTooltip = false,\n hideModeWhenOff = false,\n}): EditorConfig => ({\n label: AxesChartLegend.label,\n layout: [\n [\n {\n label: _('Legend display'),\n option: 'legendDisplay',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('Right'), value: 'right' },\n { label: _('Left'), value: 'left' },\n { label: _('Top'), value: 'top' },\n { label: _('Bottom'), value: 'bottom' },\n { label: _('Off'), value: 'off' },\n ],\n tooltip:\n showLegendTooltip && _('Legend mode must be \"Standard\" to configure legend display'),\n },\n isDisabled: showLegendTooltip\n ? ({ options }) => options.legendMode === 'seriesCompare'\n : undefined,\n overrideDefaultValue: ({ options }) =>\n options?.splitByLayout === 'trellis' ? 'off' : 'right',\n },\n ],\n [\n {\n ...AxesChartLegend.layout[1][0],\n showEditor: ({ options }) =>\n options.legendDisplay === 'left' ||\n options.legendDisplay === 'right' ||\n options.legendDisplay === 'top' ||\n options.legendDisplay === 'bottom' ||\n // when Trellis is on, the default value of legendDisplay is off\n (options.legendDisplay === undefined && options.splitByLayout !== 'trellis'),\n },\n ],\n [\n {\n label: _('Legend mode'),\n option: 'legendMode',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Standard'), value: 'standard' },\n { label: _('Compare series'), value: 'seriesCompare' },\n ],\n },\n showEditor: ({ options }) =>\n hideModeWhenOff\n ? options.legendDisplay === 'left' ||\n options.legendDisplay === 'right' ||\n options.legendDisplay === 'top' ||\n options.legendDisplay === 'bottom' ||\n // when Trellis is on, the default value of legendDisplay is off\n (options.legendDisplay === undefined && options.splitByLayout !== 'trellis')\n : true,\n },\n ],\n ],\n});\n\nexport default AxesChartLegend;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\nimport { insertLayout } from '../utils/configUtils';\n\nexport const AxesChartXGridAndLabelsCommon: EditorConfig = {\n label: _('X-axis grid and labels'),\n layout: [\n [\n {\n label: _('Axis title'),\n option: 'xAxisTitleVisibility',\n editor: 'editor.toggle',\n },\n ],\n [\n {\n label: _('Axis title text'),\n option: 'xAxisTitleText',\n editor: 'editor.text',\n showEditor: ({ options }) =>\n options.xAxisTitleVisibility === 'show' || options.xAxisTitleVisibility === undefined,\n },\n ],\n [\n {\n label: _('Label visibility'),\n option: 'xAxisLabelVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n ],\n};\n\nconst AxesChartXGridAndLabels: EditorConfig = {\n label: AxesChartXGridAndLabelsCommon.label,\n layout: [\n ...AxesChartXGridAndLabelsCommon.layout,\n [\n {\n label: _('Label rotation'),\n option: 'xAxisLabelRotation',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('-90'), value: -90 },\n { label: _('-45'), value: -45 },\n { label: _('0'), value: 0 },\n { label: _('45'), value: 45 },\n { label: _('90'), value: 90 },\n ],\n },\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Number of time label parts'),\n option: 'xAxisMaxLabelParts',\n editor: 'editor.number',\n editorProps: {\n min: 1,\n max: 3,\n },\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'xAxisLineVisibility',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major gridlines'),\n option: 'showXMajorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major tick visibility'),\n option: 'xAxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'xAxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.xAxisMajorTickVisibility === 'show' ||\n options.xAxisMajorTickVisibility === 'auto' ||\n options.xAxisMajorTickVisibility === undefined,\n },\n ],\n ],\n};\n\nexport const AxesChartXGridAndLabelsBubbleScatter: EditorConfig = {\n label: AxesChartXGridAndLabelsCommon.label,\n layout: [\n ...insertLayout(AxesChartXGridAndLabelsCommon.layout, 2, [\n {\n label: _('Axis scale'),\n option: 'xAxisScale',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Linear'), value: 'linear' },\n { label: _('Log'), value: 'log' },\n ],\n },\n },\n ]),\n [\n {\n label: _('Label rotation'),\n option: 'xAxisLabelRotation',\n editor: 'editor.select',\n editorProps: {\n values: [\n { label: _('-90'), value: -90 },\n { label: _('-45'), value: -45 },\n { label: _('0'), value: 0 },\n { label: _('45'), value: 45 },\n { label: _('90'), value: 90 },\n ],\n },\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Round axis labels'),\n option: 'showRoundedXAxisLabels',\n editor: 'editor.checkbox',\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('SI prefix abbreviation for labels'),\n option: 'xAxisAbbreviation',\n editor: 'editor.checkbox',\n showEditor: ({ options }) =>\n options.xAxisLabelVisibility === 'show' ||\n options.xAxisLabelVisibility === 'auto' ||\n options.xAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Include zero'),\n option: 'showXAxisWithZero',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Extend to whole grid'),\n option: 'showXAxisExtendedRange',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minimum axis value'),\n option: 'xAxisMin',\n editor: 'editor.number',\n },\n {\n label: _('Maximum axis value'),\n option: 'xAxisMax',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'xAxisLineVisibility',\n editor: 'editor.checkbox',\n },\n ],\n // this option is disabled for bubble and scatter\n // [\n // {\n // label: _('Major gridlines'),\n // option: 'showXMajorGridLines',\n // editor: 'editor.checkbox',\n // },\n // ],\n [\n {\n label: _('Major tick visibility'),\n option: 'xAxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'xAxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.xAxisMajorTickVisibility === 'show' ||\n options.xAxisMajorTickVisibility === 'auto' ||\n options.xAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Major tick interval spacing'),\n option: 'xAxisMajorTickInterval',\n editor: 'editor.number',\n showEditor: ({ options }) =>\n options.xAxisMajorTickVisibility === 'show' ||\n options.xAxisMajorTickVisibility === 'auto' ||\n options.xAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Minor gridlines'),\n option: 'showXMinorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minor tick visibility'),\n option: 'xAxisMinorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Minor tick size (px)'),\n option: 'xAxisMinorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.xAxisMinorTickVisibility === 'show' ||\n options.xAxisMinorTickVisibility === 'auto' ||\n options.xAxisMinorTickVisibility === undefined,\n },\n ],\n ],\n};\n\nexport default AxesChartXGridAndLabels;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { EditorConfig } from '../interfaces/Editor';\n\nconst AxesChartYGridAndLabels: EditorConfig = {\n label: _('Y-axis grid and labels'),\n layout: [\n [\n {\n label: _('Axis title'),\n option: 'yAxisTitleVisibility',\n editor: 'editor.toggle',\n },\n ],\n [\n {\n label: _('Axis title text'),\n option: 'yAxisTitleText',\n editor: 'editor.text',\n showEditor: ({ options }) =>\n options.yAxisTitleVisibility === 'show' || options.yAxisTitleVisibility === undefined,\n },\n ],\n [\n {\n label: _('Scale'),\n option: 'yAxisScale',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Linear'), value: 'linear' },\n { label: _('Log'), value: 'log' },\n ],\n },\n },\n ],\n [\n {\n label: _('Label visibility'),\n option: 'yAxisLabelVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('SI prefix abbreviation for labels'),\n option: 'yAxisAbbreviation',\n editor: 'editor.checkbox',\n showEditor: ({ options }) =>\n options.yAxisLabelVisibility === 'show' ||\n options.yAxisLabelVisibility === 'auto' ||\n options.yAxisLabelVisibility === undefined,\n },\n ],\n [\n {\n label: _('Include zero'),\n option: 'showYAxisWithZero',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Extend to whole grid'),\n option: 'showYAxisExtendedRange',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minimum axis value'),\n option: 'yAxisMin',\n editor: 'editor.number',\n },\n {\n label: _('Maximum axis value'),\n option: 'yAxisMax',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'yAxisLineVisibility',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major gridlines'),\n option: 'showYMajorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Major tick visibility'),\n option: 'yAxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'yAxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.yAxisMajorTickVisibility === 'show' ||\n options.yAxisMajorTickVisibility === 'auto' ||\n options.yAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Major tick interval spacing'),\n option: 'yAxisMajorTickInterval',\n editor: 'editor.number',\n showEditor: ({ options }) =>\n options.yAxisMajorTickVisibility === 'show' ||\n options.yAxisMajorTickVisibility === 'auto' ||\n options.yAxisMajorTickVisibility === undefined,\n },\n ],\n [\n {\n label: _('Minor gridlines'),\n option: 'showYMinorGridLines',\n editor: 'editor.checkbox',\n },\n ],\n [\n {\n label: _('Minor tick visibility'),\n option: 'yAxisMinorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n },\n ],\n [\n {\n label: _('Minor tick size (px)'),\n option: 'yAxisMinorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options }) =>\n options.yAxisMinorTickVisibility === 'show' ||\n options.yAxisMinorTickVisibility === 'auto' ||\n options.yAxisMinorTickVisibility === undefined,\n },\n ],\n ],\n};\n\nexport default AxesChartYGridAndLabels;\n", "import { _ } from '@splunk/ui-utils/i18n';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { EditorConfig } from '../interfaces/Editor';\n\nexport const isTrellisFeatureFlagOn = ({ featureFlags }): boolean => {\n return Boolean(featureFlags?.visualizations_enableTrellis);\n};\n\nexport const isTrellisOff = ({ options, featureFlags }): boolean => {\n const { splitByLayout = LAYOUT_TYPE.Off } = options;\n return !isTrellisFeatureFlagOn({ featureFlags }) || splitByLayout !== LAYOUT_TYPE.Trellis;\n};\n\nconst axesChartY2GridAndLabels: EditorConfig = {\n label: _('Y2-axis grid and labels'),\n layout: [\n [\n {\n label: _('Axis title'),\n option: 'y2AxisTitleVisibility',\n editor: 'editor.toggle',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Axis title text'),\n option: 'y2AxisTitleText',\n editor: 'editor.text',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisTitleVisibility === 'show' || options.y2AxisTitleVisibility === undefined),\n },\n ],\n [\n {\n label: _('Show overlays on the y2-axis'),\n option: 'showOverlayY2Axis',\n editor: 'editor.checkbox',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n Array.isArray(options.overlayFields) &&\n options.overlayFields.length > 0,\n },\n ],\n [\n {\n label: _('Scale'),\n option: 'y2AxisScale',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Linear'), value: 'linear' },\n { label: _('Log'), value: 'log' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Label visibility'),\n option: 'y2AxisLabelVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Round axis labels'),\n option: 'showRoundedY2AxisLabels',\n editor: 'editor.checkbox',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisLabelVisibility === 'show' ||\n options.y2AxisLabelVisibility === 'auto' ||\n options.y2AxisLabelVisibility === undefined),\n },\n ],\n [\n {\n label: _('SI prefix abbreviation for labels'),\n option: 'y2AxisAbbreviation',\n editor: 'editor.checkbox',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisLabelVisibility === 'show' ||\n options.y2AxisLabelVisibility === 'auto' ||\n options.y2AxisLabelVisibility === undefined),\n },\n ],\n [\n {\n label: _('Include zero'),\n option: 'showY2AxisWithZero',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Minimum axis value'),\n option: 'y2AxisMin',\n editor: 'editor.number',\n showEditor: isTrellisOff,\n },\n {\n label: _('Maximum axis value'),\n option: 'y2AxisMax',\n editor: 'editor.number',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Axis line visibility'),\n option: 'y2AxisLineVisibility',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Major gridlines'),\n option: 'showY2MajorGridLines',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Major tick visibility'),\n option: 'y2AxisMajorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Major tick size (px)'),\n option: 'y2AxisMajorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisMajorTickVisibility === 'show' ||\n options.y2AxisMajorTickVisibility === 'auto' ||\n options.y2AxisMajorTickVisibility === undefined),\n },\n ],\n [\n {\n label: _('Major tick interval spacing'),\n option: 'y2AxisMajorTickInterval',\n editor: 'editor.number',\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisMajorTickVisibility === 'show' ||\n options.y2AxisMajorTickVisibility === 'auto' ||\n options.y2AxisMajorTickVisibility === undefined),\n },\n ],\n [\n {\n label: _('Minor gridlines'),\n option: 'showY2MinorGridLines',\n editor: 'editor.checkbox',\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Minor tick visibility'),\n option: 'y2AxisMinorTickVisibility',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Auto'), value: 'auto' },\n { label: _('Show'), value: 'show' },\n { label: _('Hide'), value: 'hide' },\n ],\n },\n showEditor: isTrellisOff,\n },\n ],\n [\n {\n label: _('Minor tick size (px)'),\n option: 'y2AxisMinorTickSize',\n editor: 'editor.slider',\n editorProps: {\n min: 0,\n max: 10,\n step: 1,\n },\n showEditor: ({ options, featureFlags }) =>\n isTrellisOff({ options, featureFlags }) &&\n (options.y2AxisMinorTickVisibility === 'show' ||\n options.y2AxisMinorTickVisibility === 'auto' ||\n options.y2AxisMinorTickVisibility === undefined),\n },\n ],\n ],\n};\n\nexport default axesChartY2GridAndLabels;\n", "import { Column as ColumnIcon } from '@splunk/visualization-icons';\nimport { Column as ColumnPlaceholderIcon } from '@splunk/visualization-icons/placeholders';\nimport { columnOptionsSchema as optionsSchema } from '@splunk/visualization-schemas';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport pick from '@splunk/themes/pick';\nimport variables from '@splunk/themes/variables';\nimport { DataContract } from '../common/interfaces/DataContract';\nimport { DefaultContext } from '../common/interfaces/DefaultContext';\nimport { EditorConfig } from '../common/interfaces/Editor';\nimport { ThemedDefaults } from '../common/interfaces/ThemedDefaults';\nimport { VizBehavior } from '../common/interfaces/VizBehavior';\nimport { VizCategory } from '../common/interfaces/VizCategory';\nimport { VizConfig } from '../common/interfaces/VizConfig';\nimport { VizSize } from '../common/interfaces/VizSize';\nimport { enhanceConfig } from '../common/utils/configUtils';\nimport { AxesChartDataConfigAreaColumnLine } from '../common/editorConfig/AxesChartDataConfig';\nimport { AxesChartDataDisplayColumn } from '../common/editorConfig/AxesChartDataDisplay';\nimport { AxesChartColorAndStyleWithTrellis } from '../common/editorConfig/AxesChartColorAndStyle';\nimport { AxesChartLegendWithTrellisAndMode } from '../common/editorConfig/AxesChartLegend';\nimport AxesChartXGridAndLabels from '../common/editorConfig/AxesChartXGridAndLabels';\nimport AxesChartYGridAndLabels from '../common/editorConfig/AxesChartYGridAndLabels';\nimport AxesChartY2GridAndLabels from '../common/editorConfig/AxesChartY2GridAndLabels';\nimport { defaultBackgroundColor } from '../common/ThemedDefaults';\n\nconst dataContract: DataContract = {\n requiredDataSources: [\n {\n name: 'primary',\n description: 'DataSource that powers the visualization',\n },\n ],\n optionalDataSources: [\n {\n name: 'annotation',\n description: 'DataSource that populates event annotations',\n },\n ],\n initialRequestParams: {\n primary: { offset: 0, count: 10000 },\n annotation: { offset: 0, count: 10000 },\n },\n};\n\nconst size: VizSize = {\n initialWidth: 300,\n initialHeight: 300,\n};\n\nconst defaultContext: DefaultContext = {};\n\nconst themes: ThemedDefaults = {\n defaultBackgroundColor,\n defaultFontColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorDefault(props),\n })(props),\n};\n\nconst editorConfig: EditorConfig[] = [\n AxesChartDataConfigAreaColumnLine,\n AxesChartDataDisplayColumn,\n {\n label: AxesChartColorAndStyleWithTrellis.label,\n layout: [\n ...AxesChartColorAndStyleWithTrellis.layout,\n [\n {\n label: _('Spacing between column series'),\n option: 'seriesSpacing',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Spacing between columns'),\n option: 'columnSpacing',\n editor: 'editor.number',\n },\n ],\n [\n {\n label: _('Line width'),\n option: 'lineWidth',\n editor: 'editor.slider',\n editorProps: {\n min: 0.5,\n max: 8.0,\n step: 0.5,\n },\n showEditor: ({ options }) =>\n Array.isArray(options.overlayFields) && options.overlayFields.length > 0,\n },\n ],\n [\n {\n label: _('Annotation colors'),\n option: 'annotationColor',\n editor: 'editor.columnSelector',\n editorProps: {\n dataSourceKey: 'annotation',\n supportsDSL: true,\n expectedDataPrimitive: ['series'],\n },\n },\n ],\n ],\n },\n AxesChartLegendWithTrellisAndMode({ showLegendTooltip: false }),\n AxesChartXGridAndLabels,\n AxesChartYGridAndLabels,\n AxesChartY2GridAndLabels,\n];\n\n/**\n * visualization configuration\n */\nconst config: VizConfig = {\n /**\n * unique viz key\n */\n key: 'splunk.column',\n /**\n * viz name\n */\n name: _('Column'),\n category: VizCategory.TRENDS,\n /**\n * viz icon\n */\n icon: ColumnIcon,\n placeholderIcon: ColumnPlaceholderIcon,\n dataContract,\n size,\n defaultContext,\n optionsSchema,\n editorConfig,\n events: {\n 'legend.click': {\n description: 'triggered when user clicks on chart legend',\n },\n 'point.click': {\n description: 'triggered when user clicks on a point in the column chart',\n },\n 'range.select': {\n description: 'triggered when user makes a selection',\n },\n 'point.mouseover': {\n description: 'triggered when user hovers over a data point',\n },\n 'point.mouseout': {\n description: 'triggered when user moves out of a data point',\n },\n },\n supports: [\n VizBehavior.DYNAMIC_OPTIONS,\n VizBehavior.PLACEHOLDER,\n VizBehavior.DOWNSAMPLING,\n VizBehavior.TRELLIS,\n ],\n themes,\n};\n\nexport default enhanceConfig(config);\n", "\nimport * as defaultImport from \"@splunk/themes/getSettingsFromThemedProps\";\nexport * from \"@splunk/themes/getSettingsFromThemedProps\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-encoding/Options\";\nexport * from \"@splunk/visualization-encoding/Options\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/SanitizeProps\";\nexport * from \"@splunk/visualizations-shared/SanitizeProps\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/moment\";\nexport * from \"@splunk/moment\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/hocUtils\";\nexport * from \"@splunk/visualizations-shared/hocUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/JSONSchemaUtils\";\nexport * from \"@splunk/visualizations-shared/JSONSchemaUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/async-dynamic-options-evaluator\";\nexport * from \"@splunk/async-dynamic-options-evaluator\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/id\";\nexport * from \"@splunk/ui-utils/id\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable react/no-unused-prop-types,react/prefer-stateless-function */\nimport * as T from 'prop-types';\nimport { noop } from 'lodash';\nimport { DashboardVizProps } from './interfaces/DashboardVizProps';\nimport { DefaultVizActionHandler } from './interfaces/VizActionHandler';\n\n// this is identical to the initial height and width we use in BaseVisualization in dashboard-visualizations\nexport const INITIAL_WIDTH = 250;\nexport const INITIAL_HEIGHT = 250;\n\n/**\n * A Splunk visualization\n */\nclass SplunkVisualization {\n static propTypes: Record<keyof DashboardVizProps, T.Validator<any>> = {\n /**\n * display mode\n */\n mode: T.oneOf(['view', 'edit', 'export']).isRequired,\n /**\n * width in pixel or string, defaults to 100%\n */\n width: T.oneOfType([T.string, T.number]).isRequired,\n /**\n * height in pixel or string\n */\n height: T.oneOfType([T.string, T.number]).isRequired,\n /**\n * visualization context used for dynamic option evaluation\n */\n context: T.object,\n /**\n * visualization formatting options\n */\n options: T.object,\n /**\n * A callback to update formatting options\n */\n onOptionsChange: T.func,\n /**\n * datasource state which include data and request params, object key indicate the datasource type.\n */\n dataSources: T.objectOf(\n T.shape({\n /**\n * current request params\n */\n requestParams: T.object,\n /**\n * current dataset\n */\n data: T.shape({\n fields: T.array,\n columns: T.array,\n }),\n /**\n * error\n */\n error: T.shape({\n level: T.string,\n message: T.string,\n }),\n /**\n * meta data that came with the dataset\n */\n meta: T.object,\n })\n ),\n /**\n * A callback to trigger event\n */\n onEventTrigger: T.func,\n /**\n * Inform viz if there are handlers listening to events\n */\n hasEventHandlers: T.bool,\n /**\n * A callback to communicate computed props to a consumer\n */\n onComputedProps: T.func,\n /**\n * A callback to obtain visualization api\n */\n vizActionHandlerRef: T.func,\n\n loading: T.bool,\n theme: T.object,\n /**\n * A callback to request new data with updated request params\n */\n onRequestParamsChange: T.func,\n };\n\n /**\n *\n */\n static defaultProps: DashboardVizProps = {\n // BaseVisualization in dashboard-visualizations uses 100% for width but 250 for height\n width: '100%',\n height: INITIAL_HEIGHT,\n dataSources: {},\n onEventTrigger: (): Record<string, unknown> => ({}),\n mode: 'view',\n hasEventHandlers: false,\n options: {},\n context: {},\n onOptionsChange: (): Record<string, unknown> => ({}),\n vizActionHandlerRef: (): DefaultVizActionHandler => new DefaultVizActionHandler(),\n onComputedProps: (): Record<string, unknown> => ({}),\n loading: false,\n onRequestParamsChange: noop,\n };\n}\n\nexport default SplunkVisualization;\n", "import * as T from 'prop-types';\nimport { has } from 'lodash';\nimport { DataSourceMeta, SortDirType, validSortDirs } from '../interfaces/DataSource';\n\nexport interface SortParams {\n currentSortKey?: undefined | string;\n currentSortDir?: undefined | SortDirType;\n onSort?: (e: MouseEvent, { sortKey, sortDir }: { sortKey: string; sortDir: SortDirType }) => void;\n}\n\nexport const SortParamsPropTypes = T.shape({\n currentSortKey: T.string,\n currentSortDir: T.oneOf(validSortDirs),\n onSort: T.func,\n});\n\nexport const getSortingParams = ({ requestParams, onRequestParamsChange }: DataSourceMeta): SortParams => {\n let currentSortKey;\n let currentSortDir;\n\n const nextSortDirMap = {\n asc: 'desc',\n desc: 'asc',\n none: 'asc',\n };\n\n let onSort;\n if (typeof onRequestParamsChange === 'function') {\n if (requestParams && has(requestParams, 'sort')) {\n currentSortKey = Object.keys(requestParams.sort).shift();\n currentSortDir = requestParams.sort[currentSortKey];\n }\n\n // undid memoization since there is a dependency on requestParams, which is a deeply nested object\n onSort = (e, { sortKey, sortDir }): void => {\n if (typeof sortKey === 'string') {\n const nextSortDir = has(nextSortDirMap, sortDir) ? nextSortDirMap[sortDir] : 'none';\n onRequestParamsChange({\n ...requestParams,\n ...{ offset: 0, sort: { [sortKey]: nextSortDir } },\n });\n } else {\n onRequestParamsChange(requestParams);\n }\n };\n }\n\n return {\n currentSortKey,\n currentSortDir,\n onSort,\n };\n};\n", "import * as T from 'prop-types';\nimport { cloneDeep, noop } from 'lodash';\nimport { DataSourceMeta, RequestParams } from '../interfaces/DataSource';\n\nexport interface OnChangeParams {\n page?: number;\n count?: number;\n}\nexport interface PaginatorParams {\n isPaging?: boolean;\n current?: number;\n totalPages?: number;\n onChange?: (e: MouseEvent, x: OnChangeParams) => void;\n}\n\nexport const PaginatorParamsPropTypes = T.shape({\n isPaging: T.bool,\n current: T.number,\n totalPages: T.number,\n onChange: T.func,\n});\n\nexport const getPaginationParams = ({\n requestParams,\n meta,\n onRequestParamsChange,\n}: DataSourceMeta): PaginatorParams => {\n const totalCount = (meta && meta.totalCount) || 0;\n const offset = (requestParams && requestParams.offset) || 0;\n const count = requestParams && requestParams.count;\n const totalPages = typeof count === 'number' && count > 0 ? Math.ceil(totalCount / count) : 0;\n const current = typeof count === 'number' && count > 0 ? Math.floor(offset / count) + 1 : 0;\n const isPaging = totalPages > 1 && typeof onRequestParamsChange === 'function';\n\n const onChangeHandler = (e, { page, count: countArg }: OnChangeParams): void => {\n const newParams: RequestParams = cloneDeep(requestParams);\n\n if (typeof countArg === 'number') {\n newParams.count = countArg;\n newParams.offset = 0;\n }\n\n const pageCount = typeof newParams.count === 'number' ? newParams.count : 10;\n if (typeof page === 'number' && page > 0) {\n newParams.count = pageCount;\n newParams.offset = (page - 1) * pageCount;\n }\n\n onRequestParamsChange(newParams);\n };\n\n return {\n isPaging,\n current,\n totalPages,\n onChange: typeof onRequestParamsChange === 'function' ? onChangeHandler : noop,\n };\n};\n", "import { useRef } from 'react';\nimport { isEqual } from 'lodash';\n\n/**\n * This hook evaluates and stores the result of a passed function and only\n * re-evaluates the function when passed dependencies change.\n *\n * It is different from the internal React useMemo in the following aspects:\n * - it only stores the last evaluated result\n * - it uses a deep equality check to determine if dependencies have changed\n *\n * Inspired by apollo-client's useDeepMemo\n *\n * @param fn the function to be executed and\n * @param dependencies an array of dependencies\n */\nexport const useDeepMemo = <FnReturnType, DepType>(\n fn: () => FnReturnType,\n dependencies: DepType\n): FnReturnType => {\n const ref = useRef<{ dependencies: DepType; value: FnReturnType }>();\n if (!ref.current || !isEqual(dependencies, ref.current.dependencies)) {\n ref.current = {\n dependencies,\n value: fn(),\n };\n }\n return ref.current.value;\n};\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/colorUtils\";\nexport * from \"@splunk/visualizations-shared/colorUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/SizeAwareWrapper\";\nexport * from \"@splunk/visualizations-shared/SizeAwareWrapper\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport { toPx } from '@splunk/visualizations-shared/style';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport SizeAwareWrapper from '@splunk/visualizations-shared/SizeAwareWrapper';\n\n// Global provided via webpack\n// eslint-disable-next-line no-underscore-dangle\ndeclare const __VISION_VERSION__: string;\n\ninterface ItemProps {\n backgroundColor?: string;\n width?: string | number;\n}\n\nconst Item = styled.div.attrs<ItemProps>(({ width }) => ({\n style: {\n width: toPx(width),\n },\n}))<ItemProps>`\n position: relative;\n background-color: ${(props): string =>\n (isColor(props.backgroundColor) && props.backgroundColor) || props.theme.defaultBackgroundColor}};\n`;\n\ninterface FixSizeItemProps {\n backgroundColor?: string;\n height?: string | number;\n width?: string | number;\n}\n\n// Use `.attrs()` for highly dynamic styles. Ref: https://github.com/styled-components/styled-components/issues/134#issuecomment-312415291\nconst FixSizeItem = styled.div.attrs<FixSizeItemProps>(\n ({\n width,\n height,\n }): {\n style: { width?: string; height?: string };\n } => ({\n style: {\n ...(width && { width: toPx(width) }),\n ...(height && { height: toPx(height) }),\n },\n })\n)<FixSizeItemProps>`\n position: relative;\n flex-direction: column;\n flex: 1;\n display: flex;\n background-color: ${(props): string =>\n (isColor(props.backgroundColor) && props.backgroundColor) || props.theme.defaultBackgroundColor}};\n`;\n\nconst ItemContent = styled.div`\n position: relative;\n min-height: 100px;\n width: 100%;\n`;\n\nconst FixSizeItemContent = styled.div`\n min-height: 0px;\n flex: 1;\n position: relative;\n box-sizing: border-box;\n`;\n\ninterface HeightAndWidthProps {\n width?: string | number;\n height?: string | number;\n backgroundColor?: string;\n}\n\nconst withFixedSizeContainer = <P extends HeightAndWidthProps>(\n Viz: React.ComponentType<P>\n): React.ComponentType<P> => {\n const FixedSizeContainer = (props: P): React.ReactElement => {\n const { width, height, backgroundColor } = props;\n const cachedHandleResize = React.useCallback((w, h) => {\n setContainerWidth(w);\n setContainerHeight(h);\n }, []);\n const [containerWidth, setContainerWidth] = React.useState<number>(Number(props.width));\n const [containerHeight, setContainerHeight] = React.useState<number>(Number(props.height));\n if (!height) {\n return (\n <Item data-test=\"item\" width={width} backgroundColor={backgroundColor}>\n <ItemContent>\n <Viz {...props} />\n </ItemContent>\n </Item>\n );\n }\n return (\n <FixSizeItem\n data-test=\"fix-size-item\"\n data-splunk-visualization-version={__VISION_VERSION__}\n width={width}\n height={height}\n backgroundColor={backgroundColor}\n >\n <FixSizeItemContent>\n <SizeAwareWrapper width={width} height={height} onResize={cachedHandleResize} />\n <Viz {...props} width={containerWidth} height={containerHeight} />\n </FixSizeItemContent>\n </FixSizeItem>\n );\n };\n FixedSizeContainer.displayName = 'withFixedSizeContainer';\n return FixedSizeContainer;\n};\n\nexport default withFixedSizeContainer;\n", "import * as React from 'react';\nimport * as T from 'prop-types';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Message from '@splunk/visualizations-shared/Message';\nimport withFixedSizeContainer from '../hocs/FixedSizeContainer';\n\n/**\n * @method isMissing\n * @param {any} v\n * @returns {boolean} true if the input value === null or undefined\n */\nexport const isMissing = (v): boolean => {\n return v === null || v === undefined;\n};\n\n/**\n * @method misskingKeys\n * @param {string[]} keys\n * @param {object} target\n * @returns {string[]} the keys of missing required props\n */\nexport const missingKeys = (keys: string[], target: Record<string, unknown>): string[] =>\n keys.filter(k => isMissing(target[k]));\n\nexport interface MissingPropsProps {\n width?: string | number;\n height?: string | number;\n missingProps: string[];\n backgroundColor?: string;\n}\n\nconst propTypes: Record<keyof MissingPropsProps, T.Validator<any>> = {\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n // eslint-disable-next-line react/no-unused-prop-types\n backgroundColor: T.string,\n missingProps: T.arrayOf(T.string),\n};\n\n/**\n * @method MissingPropsMessage\n * @param {MissingPropsProps} props\n * @returns {React.ReactElement}\n */\nexport const MissingPropsMessage = (props: MissingPropsProps): React.ReactElement => {\n const { width, height, missingProps } = props;\n return (\n <Message\n data-test=\"message\"\n width={width}\n height={height}\n message={_(`Missing property: ${missingProps.join(', ')}`)}\n />\n );\n};\n\nMissingPropsMessage.propTypes = propTypes;\nMissingPropsMessage.defaultProps = {\n width: '100%',\n height: 250,\n};\nexport default withFixedSizeContainer(MissingPropsMessage);\n", "import { DashboardVizProps } from '../interfaces/DashboardVizProps';\n\nexport type DashboardVizType = React.ComponentType<DashboardVizProps>;\n\n/**\n * @method extendStaticWrapperProps\n * @param {Object} props\n * @param {DashboardVizType} props.Wrapper\n * @param {DashboardVizType} props.Visualization\n */\nexport const extendStaticWrapperProps = ({\n Wrapper,\n Visualization,\n}: {\n [key: string]: DashboardVizType;\n}): void => {\n const extendProperties = ['propTypes', 'defaultProps', 'config'];\n extendProperties.forEach((prop: string): void => {\n if (Visualization[prop]) {\n // eslint-disable-next-line no-param-reassign\n Wrapper[prop] = Visualization[prop];\n }\n });\n};\n", "import * as React from 'react';\nimport styled from 'styled-components';\nimport { DashboardVizProps } from '../interfaces/DashboardVizProps';\nimport { ExtendedDashViz } from '../interfaces/ExtendedDashViz';\nimport { extendStaticWrapperProps } from '../utils/hocUtils';\n\n// Global provided via webpack\n// eslint-disable-next-line no-underscore-dangle\ndeclare const __VISION_VERSION__: string;\n\nconst Cover = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n`;\n\nconst Blocker = styled.div.attrs({\n 'data-splunk-visualization-version': __VISION_VERSION__,\n})`\n position: relative;\n width: 100%;\n height: 100%;\n`;\n\n/**\n * HOC that renders a cover layer in edit mode\n * @method withEditModeCover\n * @param {ExtendedDashViz} Visualization\n * @returns {ExtendedDashViz} Wrapper\n */\nconst withEditModeCover = (\n Visualization: ExtendedDashViz,\n disableEditModeCover?: boolean\n): ExtendedDashViz => {\n const Wrapper = (props: DashboardVizProps): React.ReactElement<DashboardVizProps> => {\n const { mode } = props;\n const showEditCover = mode === 'edit' && !disableEditModeCover;\n\n return (\n <Blocker>\n <Visualization {...props} />\n {showEditCover && <Cover data-test=\"edit-mode-cover\" />}\n </Blocker>\n );\n };\n extendStaticWrapperProps({ Wrapper, Visualization });\n return Wrapper as ExtendedDashViz;\n};\n\nexport default withEditModeCover;\n", "import * as React from 'react';\nimport * as T from 'prop-types';\nimport { get } from 'lodash';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Message from '@splunk/visualizations-shared/Message';\nimport { DataSource } from '../interfaces/DataSource';\nimport withFixedSizeContainer from '../hocs/FixedSizeContainer';\n\n/**\n * @method shouldShowIconPlaceholder\n * @param {object} dataSources\n * @param {boolean} loading\n * @returns {boolean}\n */\nexport const shouldShowIconPlaceholder = (\n dataSources: { [name: string]: DataSource },\n loading = false\n): boolean => {\n const data = get(dataSources, 'primary.data.columns[0]', undefined);\n const noData = data === undefined;\n const fields = get(dataSources, 'primary.data.fields[0]', undefined);\n const noFields = fields === undefined;\n return loading || noData || noFields;\n};\n\nexport interface IconPlaceholderProps {\n icon?: React.ComponentType<any>;\n width?: string | number;\n height?: string | number;\n backgroundColor?: string;\n iconColor?: string;\n}\n\nconst propTypes: Record<keyof IconPlaceholderProps, T.Validator<any>> = {\n icon: T.func,\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n // eslint-disable-next-line react/no-unused-prop-types\n backgroundColor: T.string,\n iconColor: T.string,\n};\n\n/**\n * @method IconPlaceholder\n * @param {IconPlaceholderProps} props\n * @returns {React.ReactElement}\n */\nconst IconPlaceholder = (props: IconPlaceholderProps): React.ReactElement => {\n const { width, height, icon, iconColor } = props;\n if (icon) {\n return React.createElement(icon, {\n style: {\n left: '50%',\n top: '50%',\n color: iconColor,\n opacity: 0.15,\n position: 'absolute',\n transform: 'translate(-50%, -50%)',\n },\n width: '50%',\n height: '50%',\n 'data-test': 'icon-placeholder',\n });\n }\n\n return <Message width={width} height={height} level=\"warning\" message={_('No DataSource Connected')} />;\n};\n\nIconPlaceholder.propTypes = propTypes;\nIconPlaceholder.defaultProps = {\n width: '100%',\n height: 250,\n};\n\nexport default withFixedSizeContainer(IconPlaceholder);\n", "import * as React from 'react';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport variables from '@splunk/themes/variables';\nimport IconPlaceholder, { shouldShowIconPlaceholder } from '../components/IconPlaceholder';\nimport { VizBehavior } from '../interfaces/VizBehavior';\nimport { DashboardVizProps } from '../interfaces/DashboardVizProps';\nimport { DataSource } from '../interfaces/DataSource';\nimport { ExtendedDashViz } from '../interfaces/ExtendedDashViz';\nimport { extendStaticWrapperProps } from '../utils/hocUtils';\n\ntype useIconPlaceholderType = (\n dataSources: { [name: string]: DataSource },\n loading: boolean,\n options: Record<string, unknown>\n) => boolean;\n\nconst withPlaceholder = (\n Visualization: ExtendedDashViz,\n useIconPlaceholder: useIconPlaceholderType = shouldShowIconPlaceholder\n): ExtendedDashViz => {\n const { config } = Visualization;\n const { themes } = config;\n\n const Wrapper = (props: DashboardVizProps): React.ReactElement<DashboardVizProps> => {\n const { dataSources, loading, options, height, width } = props;\n\n const showPlaceholder = useIconPlaceholder(dataSources, loading, options);\n const bgColorFromTheme = isColor(options?.backgroundColor)\n ? options?.backgroundColor\n : themes?.defaultBackgroundColor?.(props);\n\n const icon = config.placeholderIcon ?? config.icon;\n const iconColor = variables.contentColorActive(props);\n\n if (config.supports.includes(VizBehavior.PLACEHOLDER) && showPlaceholder) {\n return (\n <IconPlaceholder\n data-test=\"icon-placeholder\"\n icon={icon}\n width={width}\n height={height}\n backgroundColor={bgColorFromTheme}\n iconColor={iconColor}\n />\n );\n }\n\n return <Visualization {...props} />;\n };\n extendStaticWrapperProps({ Wrapper, Visualization });\n return Wrapper as ExtendedDashViz;\n};\n\nexport default withPlaceholder;\n", "import { useMemo } from 'react';\nimport { Options as Opts } from '@splunk/visualization-encoding/Options';\nimport type { DashboardVizProps } from '../interfaces';\n\n/**\n * Hook that evaluates the DSL for subset of a viz's options needed to determine\n * its x and y fields as well as the types of all its fields.\n */\nconst useGetXAndYFields = ({\n shouldEvaluateDSL,\n options,\n context,\n dataSources,\n}: Pick<DashboardVizProps, 'dataSources' | 'options' | 'context'> & {\n shouldEvaluateDSL: boolean;\n}) => {\n const { dataSourcesWithOnlyOnePoint, dataFrameWithOnlyOnePoint } = useMemo(() => {\n if (!shouldEvaluateDSL) {\n return {\n dataSourcesWithOnlyOnePoint: null,\n dataFrameWithOnlyOnePoint: null,\n };\n }\n\n if (!dataSources?.primary?.data?.columns?.length) {\n return {\n dataSourcesWithOnlyOnePoint: null,\n dataFrameWithOnlyOnePoint: null,\n };\n }\n const { primary: primaryDS } = dataSources;\n\n const columnsWithOnlyOnePoint = primaryDS.data.columns.map(column => {\n return [column[0]];\n });\n\n const filteredDataSources = {\n primary: {\n ...primaryDS,\n data: {\n ...primaryDS.data,\n columns: columnsWithOnlyOnePoint,\n },\n },\n };\n\n return {\n dataSourcesWithOnlyOnePoint: filteredDataSources,\n dataFrameWithOnlyOnePoint: Opts.dataFrameFromDataSource(filteredDataSources),\n };\n }, [dataSources, shouldEvaluateDSL]);\n\n const xAndYFieldsWithTypes = useMemo(() => {\n try {\n if (!dataSourcesWithOnlyOnePoint || !dataFrameWithOnlyOnePoint) {\n return options;\n }\n\n if (!options?.x || (!options?.y && !options?.y2)) {\n return options;\n }\n\n const optionsToEvaluate = {\n x: options.x,\n xField: '> x | getField()',\n y: options.y,\n yFields: options.y ? '> y | getField()' : undefined,\n y2: options.y2,\n y2Fields: options.y2 ? '> y2 | getField()' : undefined,\n fieldTypes: '> primary | getType()',\n };\n\n const {\n xField = '',\n yFields = [],\n y2Fields = [],\n fieldTypes,\n } = Opts.evaluate(\n { options: optionsToEvaluate, context },\n dataSourcesWithOnlyOnePoint,\n () => {},\n dataFrameWithOnlyOnePoint\n );\n return {\n xField,\n yFields: [...yFields, ...y2Fields],\n fieldTypes,\n };\n } catch (e) {\n return {\n xField: undefined,\n yFields: [],\n fieldTypes: [],\n };\n }\n }, [options, context, dataSourcesWithOnlyOnePoint, dataFrameWithOnlyOnePoint]);\n\n return xAndYFieldsWithTypes;\n};\n\nexport default useGetXAndYFields;\n", "import { useRef, useMemo, useEffect, useState } from 'react';\nimport { debounce, isEqual, pick } from 'lodash';\nimport type { DashboardVizProps } from '../interfaces';\nimport type { DownsampleOptions } from '../utils/dataUtils';\nimport { downsampleDataSources } from '../utils/dataUtils';\nimport usePrevious from './usePrevious';\nimport useGetXAndYFields from './useGetXAndYFields';\n\n// Options properties which impact/require re-downsample on change.\nconst downsampleVizOptionProperties = ['nullValueDisplay'];\n\nconst useDownsampleDataSources = ({\n dataSources,\n options,\n context,\n threshold,\n isDownsamplingEnabled,\n}: Pick<DashboardVizProps, 'dataSources' | 'options' | 'context'> & {\n threshold: number;\n isDownsamplingEnabled?: boolean;\n}) => {\n const isFirstUseEffectCall = useRef(true);\n\n const xAndYFieldsWithTypes = useGetXAndYFields({\n shouldEvaluateDSL: isDownsamplingEnabled,\n options,\n context,\n dataSources,\n });\n\n // Extract viz options that impact downsampling.\n const downsampleVizOptions = useMemo(() => pick(options, downsampleVizOptionProperties), [options]);\n const downsampleDSOptions = useMemo(\n () => ({\n ...downsampleVizOptions,\n ...xAndYFieldsWithTypes,\n }),\n [xAndYFieldsWithTypes, downsampleVizOptions]\n );\n\n const previousDownsampleDSOptions = usePrevious(downsampleDSOptions);\n const previousDataSources = usePrevious(dataSources);\n const previousThreshold = usePrevious(threshold);\n\n const [downsampledDataSources, setDownsampledDataSources] = useState(() => {\n return isDownsamplingEnabled\n ? downsampleDataSources({\n dataSources,\n threshold,\n options: downsampleDSOptions,\n })\n : dataSources;\n });\n\n const debouncedDownsampleDataSources = useMemo(() => {\n return debounce(\n (downsampleOptions: DownsampleOptions) => {\n const downsampledResult = downsampleDataSources(downsampleOptions);\n setDownsampledDataSources(downsampledResult);\n },\n 100,\n { trailing: true }\n );\n }, []);\n\n useEffect(() => {\n // don't downsample again on the use effect call that happened due to the initial render\n // this is since we already downsampled as part of the useState call\n if (isFirstUseEffectCall.current) {\n isFirstUseEffectCall.current = false;\n return;\n }\n\n if (!isDownsamplingEnabled) {\n setDownsampledDataSources(dataSources);\n return;\n }\n\n if (\n isEqual(previousDownsampleDSOptions, downsampleDSOptions) &&\n previousDataSources === dataSources &&\n previousThreshold === threshold\n ) {\n return;\n }\n\n // Debounce the downsampling so we don't have to downsample and execute DSL multiple times\n // while the viz is being resized\n debouncedDownsampleDataSources({\n dataSources,\n options: downsampleDSOptions, // Dont want to re-downsample everytime the options change\n threshold,\n });\n\n // need to detect if this runs as part of the initial render\n }, [\n dataSources,\n downsampleDSOptions,\n debouncedDownsampleDataSources,\n xAndYFieldsWithTypes,\n threshold,\n isDownsamplingEnabled,\n previousDataSources,\n previousThreshold,\n previousDownsampleDSOptions,\n ]);\n\n return downsampledDataSources;\n};\n\nexport default useDownsampleDataSources;\n", "\nimport * as defaultImport from \"@splunk/visualization-context/FeatureFlags\";\nexport * from \"@splunk/visualization-context/FeatureFlags\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import * as React from 'react';\nimport FeatureFlags from '@splunk/visualization-context/FeatureFlags';\n\nexport const getFeatureFlag = (context: React.Context<any> | null | undefined, flagName: string): boolean => {\n // look for feature flag in context first\n if (context && Object.keys(context).find(key => key === flagName)) {\n return context[flagName];\n }\n\n // fall back to defaults\n if (Object.keys(FeatureFlags).find(key => key === flagName)) {\n return FeatureFlags[flagName];\n }\n\n // fall back to false\n return false;\n};\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/trellisUtils\";\nexport * from \"@splunk/visualizations-shared/trellisUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { cloneDeep, omit } from 'lodash';\nimport { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport {\n DataSplitMode,\n CHART,\n TIMECHART,\n STATS,\n UNKNOWN,\n extractDataSourceAggregationKeysChart,\n extractDataSourceAggregationKeysStats,\n extractSplitByFieldsChartFields,\n extractSplitByFieldsForStats,\n extractSplitByFieldsForUnknown,\n} from '@splunk/visualizations-shared/trellisUtils';\nimport { DataSource } from '../interfaces/DataSource';\n\nexport type SplitDataSource = { [key: string]: { [name: string]: DataSource } };\nexport interface DataSplitResult {\n splitDataSources: SplitDataSource;\n errorCode: 'UNKNOWN_DATA_SPLIT_MODE' | 'INVALID_SPLIT_BY_FIELD' | 'UNKNOWN';\n}\nexport const AGGREGATIONS = 'aggregations';\n\n/**\n * There can be certain SPL cmds that can produce dataSource without a specific field meta info (like group_by_rank, split_by_field etc),\n * to categorize it,\n * Example1:- `index = \"_internal\" | chart count`\n * Example2:- `index=_internal | chart avg(count), max(count)`\n * Example3:- `index = \"_internal\" | stats count`\n * Example4:- `index=_internal | stats avg(count), max(count)`\n */\nexport const dataSourcesSplitByAggregationsUnknown = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields;\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let errorCode = null;\n\n if (fields && fields.length) {\n splitDataSources = {};\n for (let i = 0; i < fields.length; i += 1) {\n const fieldName = (fields[i] as FieldEntry).name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nconst toFieldEntries = (fields: FieldEntry[] | string[]): FieldEntry[] => {\n return fields.map(field => {\n if (typeof field === 'string') {\n return { name: field };\n }\n return field;\n });\n};\n\nexport const dataSourcesSplitByAggregationsTimechartAndChart = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysChart(fields);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n fields.forEach((field: FieldEntry, idx) => {\n const fieldName = field?.name;\n if (\n fieldName !== '_time' &&\n !fieldName?.startsWith('_') &&\n field.data_source === splitByField\n ) {\n splitDataSources[splitByField].primary.data.fields.push(field);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n });\n } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {\n // handle where data_source doesnot exist in fields\n // example1 :- index=_internal | timechart count\n // example2 :- index=_internal | timechart max(count) avg(count)\n splitDataSources = {};\n for (let i = 1; i < fields.length; i += 1) {\n const fieldName = (fields[i] as FieldEntry).name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[0], fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[0], columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByAggregationsStats = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysStats(fields as FieldEntry[]);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n const idx = fields.findIndex(field => field.name === splitByField);\n if (idx > 0) {\n splitDataSources[splitByField].primary.data.fields.push(fields[idx]);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeTimechart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractSplitByFieldsChartFields(fields as FieldEntry[]);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n // not including internal fields\n if (!fields[i].name?.startsWith('_')) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: fields[0].name },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeChart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractSplitByFieldsChartFields(fields);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const splitByFieldIdx = splitByFields.findIndex(f => f === splitBy);\n const otherSplitBy = splitByFields.filter(f => f !== splitBy);\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const nonDataSourceAggregations = [];\n if (\n !dataSourceKeys.length &&\n fields[0].groupby_rank === '0' &&\n fields.length &&\n !fields[1].groupby_rank\n ) {\n /* check for another aggregation scenario where no key 'data_source' will be returned (applies for both chart and stats cmd)\n For example :-\n index=_internal | chart count by status\n index = \"_internal\" | chart max(count) avg(count) by status\n index = \"_internal\" | stats max(count) avg(count) by status\n where field meta info is in this format -\n \"fields\": [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"max(count)\"\n },\n {\n \"name\": \"avg(count)\"\n }\n ]\n */\n\n for (let i = 1; i < fields.length; i += 1) {\n nonDataSourceAggregations.push(fields[i].name);\n }\n }\n if (splitByFieldIdx === 0) {\n // if splitBy is the first field, split row wise\n const valueKeys = cloneDeep(columns[0]);\n valueKeys.forEach((val, idx) => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [];\n if (otherSplitBy.length) {\n splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }]; // there can only be one otherSplitBy for chart cmd\n }\n if (dataSourceKeys.length) {\n const columnValues = [[]];\n splitDataSources[val].primary.data.fields = [\n ...splitDataSources[val].primary.data.fields,\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n dataSourceKeys.forEach(() => {\n columnValues.push([]);\n });\n /**\n * There can be chart SPL cmd where there are multiple data_source keys in the field meta info.\n * For eg - index = \"_internal\" | chart avg(count) max(count) by status , user) can result in fields and columns as below where \"data_source\" keys are \"avg(count)\" and \"max(count)\"\n * 'fields' : [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"avg(count): userA\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"avg(count): userB\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"avg(count): userC\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n {\n \"name\": \"max(count): userA\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"max(count): userB\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"max(count): userC\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n ]\n 'columns' : [['200','303','304','400'], ['1','2','3','4'], ['10','20','30','40'], ['100','200','300','400'], ['5','6','7','8'], ['50','60','70','80'],['500','600','700','800']]\n\n In this case when we split row wise, the data_source keys for userA appears in indices [1, 4, ..], the data_source keys for userB appears in indices [2, 5, ..]\n The resulting dataSplit for status '200', will have the fields => ['user','avg(count)', 'max(count)'] columns => [['userA', 'userB', 'userC'],['1','10','100'], ['5', '50', '500'] ]\n\n For the example above for..loop below will iterate from i= 1 to 3 (Math.ceil((fields.length - 1) / dataSourceKeys.length)). Exclude i = 0 as first column is the splitBy input.\n Since there are 2 data_source keys 'avg(count)' and 'max(count)', dataSourceKeys.forEach loop will collect individual arrays specific to the columnValues[indx] as below.\n columnValues[0] = ['userA', 'userB', 'userC']\n columnValues[1] = ['1','10','100']\n columnValues[2] = ['5', '50', '500']\n */\n for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {\n columnValues[0].push(\n fields[i].splitby_value ? fields[i].splitby_value : fields[i].name\n );\n dataSourceKeys.forEach((dskey, dsIndx) => {\n const mul = (fields.length - 1) / dataSourceKeys.length; // This line does the index calculation\n columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);\n });\n }\n splitDataSources[val].primary.data.columns = columnValues;\n } else if (nonDataSourceAggregations.length) {\n // There can be SPL where data_source field metainfo is not available and needs special handling\n // For eg :-\n // index=_internal | chart count by status\n // index = \"_internal\" | chart max(count) avg(count) by status\n // index = \"_internal\" | stats max(count) avg(count) by status\n const columnValues = [];\n fields.forEach((aggregationField, fieldIdx) => {\n if (fieldIdx > 0) {\n splitDataSources[val].primary.data.fields.push(aggregationField);\n columnValues.push([columns[fieldIdx][idx]]);\n }\n });\n splitDataSources[val].primary.data.columns = columnValues;\n }\n });\n } else {\n // split column wise\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: otherSplitBy[0] },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (\n field.data_source === dsKey &&\n (field.splitby_value === val || field.name === val)\n ) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\n/**\n * This method does datasplitting for 'stats' and generic cmds('makeresults','table' etc - categoried as 'unknown' splitMode).\n * The main difference is for 'stats' cmd possible splitBy fields have 'group_by_rank' in field meta info, whereas for 'unknown' cmd it can be any fieldnames\n */\nexport const dataSourcesSplitByModeStatsorUnknown = (\n dataSource: { [name: string]: DataSource },\n splitBy: string,\n splitMode?: DataSplitMode\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields;\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields =\n splitMode !== UNKNOWN\n ? extractSplitByFieldsForStats(fields as FieldEntry[])\n : extractSplitByFieldsForUnknown(fields as FieldEntry[]);\n }\n const splitByIndex = fields?.findIndex(\n field => field === splitBy || (field as FieldEntry).name === splitBy\n );\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n const splitByColumn = dataSource?.primary?.data?.columns[splitByIndex];\n splitDataSources = {};\n splitByColumn.forEach((val, idx) => {\n if (!splitDataSources[val]) {\n splitDataSources[val] = [idx];\n } else {\n splitDataSources[val].push(idx);\n }\n });\n const cloneFields = cloneDeep(fields);\n cloneFields.splice(splitByIndex, 1);\n const valueKeys = Object.keys(splitDataSources);\n valueKeys.forEach(val => {\n const valIndices = cloneDeep(splitDataSources[val]);\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = cloneFields;\n splitDataSources[val].primary.data.columns = [];\n columns.forEach((col, idx) => {\n if (idx !== splitByIndex) {\n const newCol = valIndices.map(valIdx => col[valIdx]);\n splitDataSources[val].primary.data.columns.push(newCol);\n }\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const getTrellisDataSourcesBySplitMode = (\n splitMode: DataSplitMode,\n dataSources: { [name: string]: DataSource },\n trellisSplitBy: string\n): DataSplitResult => {\n let result: DataSplitResult = null;\n try {\n if (splitMode === TIMECHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeTimechart(dataSources, trellisSplitBy);\n } else if (splitMode === STATS) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsStats(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, STATS);\n } else if (splitMode === CHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeChart(dataSources, trellisSplitBy);\n } else if (splitMode === UNKNOWN) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsUnknown(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, UNKNOWN);\n }\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error('getTrellisDataSourcesBySplitMode ', ex);\n result = { splitDataSources: null, errorCode: 'UNKNOWN' };\n }\n return result;\n};\n\n/**\n * sets legendDisplay to off when a visualization is in trellis mode and not set by the user\n * @param {Boolean} isTrellisOn\n * @param {DashboardVizOpts} options\n * @param {DashboardVizOpts} defaultOptions\n * @returns { {'legendDisplay', 'off'} or {} }\n */\nexport const turnOffLegendDisplayWhenTrellisIsOn = (\n isTrellisOn: boolean,\n options: Record<string, any>\n): Record<string, string> => {\n if (isTrellisOn && !options.legendDisplay) {\n return {\n legendDisplay: 'off',\n };\n }\n return {};\n};\n\n/**\n * helper fn that calculates shared min and max from the split data in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number>} [min, max]\n */\nconst calculateSharedMinMax = (splitData: SplitDataSource): Array<number> => {\n let max = -Infinity;\n let min = Infinity;\n\n Object.keys(splitData).forEach(splitByKey => {\n const datasources = splitData[splitByKey];\n Object.keys(datasources).forEach(datasourceName => {\n const dataColumns = datasources[datasourceName].data.columns;\n dataColumns.forEach(column => {\n column.forEach(point => {\n // Convert the string to a number. Non-numeric strings are converted to 'nan' and will be ignored.\n const pointNumber = Number(point);\n if (pointNumber > max) {\n max = pointNumber;\n }\n if (pointNumber < min) {\n min = pointNumber;\n }\n });\n });\n });\n });\n\n return [min, max];\n};\n\n/**\n * determines min and max to use in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number | string>} [min, max]\n */\nexport const determineMinMax = (\n splitData: SplitDataSource,\n trellisSharedScale: boolean,\n yAxisMin: number | string,\n yAxisMax: number | string,\n stackMode?: string\n) => {\n if (!trellisSharedScale || stackMode === 'stacked100' || (yAxisMin !== 'auto' && yAxisMax !== 'auto'))\n return [yAxisMin, yAxisMax];\n\n const [sharedMin, sharedMax] = calculateSharedMinMax(splitData);\n\n const shouldUseSharedMax = sharedMax !== -Infinity && yAxisMax === 'auto';\n const shouldUseSharedMin = sharedMin !== Infinity && yAxisMin === 'auto';\n\n return [shouldUseSharedMin ? sharedMin : yAxisMin, shouldUseSharedMax ? sharedMax : yAxisMax];\n};\n", "import * as React from 'react';\nimport { camelCase, has, get, defaultsDeep } from 'lodash';\nimport getSettingsFromThemedProps from '@splunk/themes/getSettingsFromThemedProps';\nimport { Options as Opts } from '@splunk/visualization-encoding/Options';\nimport { withSanitizedProps } from '@splunk/visualizations-shared/SanitizeProps';\nimport type { TimezoneContextInterface } from '@splunk/visualization-context/TimezoneContext';\nimport TimezoneContext from '@splunk/visualization-context/TimezoneContext';\nimport moment from '@splunk/moment';\nimport FeatureFlagContext from '@splunk/visualization-context/FeatureFlagContext';\nimport { withTheme } from 'styled-components';\nimport { deepMergeWithArrayPrimitiveOverrides } from '@splunk/visualizations-shared/hocUtils';\nimport { pickFieldFromJSONSchema } from '@splunk/visualizations-shared/JSONSchemaUtils';\nimport AsyncDynamicOptionsEvaluator, {\n AsyncDynamicOptionsEvaluatorParams,\n} from '@splunk/async-dynamic-options-evaluator';\nimport { createGUID } from '@splunk/ui-utils/id';\nimport type { Frames } from '@splunk/visualization-encoding/EncodingExecutor';\nimport SplunkVisualization from './SplunkVisualization';\nimport type { DashboardVizProps, DataSource, VizConfig, VizProps } from './interfaces';\nimport { VizBehavior } from './interfaces/VizBehavior';\nimport { getSortingParams } from './hooks/getSorting';\nimport { getPaginationParams } from './hooks/getPagination';\nimport { useDeepMemo } from './hooks/useDeepMemo';\nimport MissingPropsMessage, { missingKeys } from './components/MissingPropsMessage';\nimport withEditModeCover from './hocs/withEditModeCover';\nimport withPlaceholder from './hocs/withPlaceholder';\nimport { ChartingProps } from './Charting';\nimport useDownsampleDataSources from './hooks/useDownsampleDataSources';\nimport { isDownsamplingEnabledForViz } from './utils/dataUtils';\nimport { getFeatureFlag } from '../common/utils/featureFlagUtils';\nimport { turnOffLegendDisplayWhenTrellisIsOn } from '../common/utils/trellisUtils';\n\ntype HOC = (props: DashboardVizProps) => React.ReactElement<DashboardVizProps>;\nexport interface DashboardVizOpts {\n ReactViz: React.ComponentType<ChartingProps | VizProps>; // we will wrap this in DashboardViz (see const DashboardViz = ...)\n vizConfig: VizConfig;\n computeVizProps?: (props) => any;\n computeVizPropsBeforeEval?: (props) => any;\n disableEditModeCover?: boolean;\n useIconPlaceholder?: (\n dataSources: { [name: string]: DataSource },\n loading: boolean,\n options: Record<string, unknown>\n ) => boolean;\n}\n\n/**\n * hoc that wraps a pure react visualization in a Dashboard visualization\n * @param {DashboardVizOpts} opts\n * @returns {HOC}\n */\nconst withDashboardViz = (opts: DashboardVizOpts): HOC => {\n const {\n ReactViz,\n vizConfig,\n computeVizProps = () => {},\n computeVizPropsBeforeEval = () => {},\n disableEditModeCover,\n useIconPlaceholder,\n } = opts;\n\n // sanitizing props before sending them to reactviz.\n const SanitizedReactViz = withSanitizedProps(ReactViz);\n const defaultOptions = pickFieldFromJSONSchema(vizConfig.optionsSchema, 'default');\n\n const DashboardViz = (props: DashboardVizProps): React.ReactElement<DashboardVizProps> => {\n const {\n mode,\n hasEventHandlers,\n dataSources, // type of { [key: string]: DataSource }\n options,\n context = {},\n width,\n height,\n onComputedProps,\n onEventTrigger,\n theme,\n onRequestParamsChange,\n } = props;\n const { serializedTimezone } = React.useContext<TimezoneContextInterface>(TimezoneContext);\n if (serializedTimezone) {\n /*\n @splunk/moment currently does not allow us to customize the timezone on a per visualization basis.\n This ensures that if a timezone was provided via TimezoneContext @splunk/moment time formatting\n will use it.\n\n @TODO(pwied):\n - remove when we moved away from @splunk/moment\n - provide timezone context to dynamic option evaluation phase\n */\n if (!moment.getDefaultSplunkTimezone()) {\n moment.setDefaultSplunkTimezone(serializedTimezone);\n }\n }\n\n const themeFunc = themeVar => vizConfig.themes[themeVar]?.(props);\n const bgColorFromTheme = themeFunc('defaultBackgroundColor');\n const {\n family: currentThemeFamily,\n colorScheme: currentThemeColorScheme,\n density: currentThemeDensity,\n } = getSettingsFromThemedProps({ theme });\n let evaluatedOptions: Record<string, unknown> = {}; // evaluatedOptions need to be initialized as an empty object\n const [evaluatedOptionsAsync, setEvaluatedOptionsAsync] = React.useState({}); // evaluatedOptions need to be initialized as an empty object\n const featureFlagContext = React.useContext<FeatureFlagContext>(FeatureFlagContext);\n\n const [visualizationID] = React.useState(`${vizConfig.name} - ${createGUID()}`);\n\n const [dataSourcesInState, setDataSourcesInState] = React.useState({});\n const [dataFramesInState, setDataFramesInState] = React.useState<Frames | undefined>();\n\n const [useAsyncEvaluatedOptions, setUseAsyncEvaluatedOptions] = React.useState(\n Boolean(getFeatureFlag(featureFlagContext, 'visualizations_useWebWorkersForDSL'))\n );\n const isDownsamplingEnabledByFeatureFlag = Boolean(\n featureFlagContext?.visualizations_enableDownsampling\n );\n const isTrellisFeatureFlagOn = Boolean(\n featureFlagContext && featureFlagContext.visualizations_enableTrellis\n );\n const isTrellisOn =\n isTrellisFeatureFlagOn &&\n vizConfig?.supports?.includes(VizBehavior.TRELLIS) &&\n options?.splitByLayout === VizBehavior.TRELLIS;\n const isMounted = React.useRef(true);\n const optionsToEvaluate = React.useMemo(() => {\n const legendDisplay = turnOffLegendDisplayWhenTrellisIsOn(isTrellisOn, options);\n // computeVizPropsBeforeEval will run before DSL gets evaluated\n const computedOptions = computeVizPropsBeforeEval(options) ?? {};\n return {\n context: defaultsDeep({}, context, vizConfig.defaultContext),\n options: deepMergeWithArrayPrimitiveOverrides(\n {},\n legendDisplay,\n computedOptions,\n options,\n defaultOptions\n ),\n };\n }, [isTrellisOn, options, context]);\n\n const [threshold, setThreshold] = React.useState(Number(width));\n const onDownsamplingThresholdChange = React.useCallback((newThreshold: number) => {\n setThreshold(newThreshold);\n }, []);\n const isDownsamplingEnabled = React.useMemo(() => {\n return isDownsamplingEnabledByFeatureFlag && isDownsamplingEnabledForViz({ vizConfig });\n }, [isDownsamplingEnabledByFeatureFlag]);\n\n const downsamplingProps = React.useMemo(() => {\n if (!isDownsamplingEnabled) {\n return {};\n }\n return {\n onDownsamplingThresholdChange,\n originalDataSources: dataSources,\n };\n }, [dataSources, isDownsamplingEnabled, onDownsamplingThresholdChange]);\n const downsampledDataSources = useDownsampleDataSources({\n options: optionsToEvaluate.options,\n context: optionsToEvaluate.context,\n dataSources,\n threshold,\n isDownsamplingEnabled,\n });\n\n evaluatedOptions = useDeepMemo(() => {\n try {\n if (useAsyncEvaluatedOptions) {\n const asyncDynamicOptionsEvaluatorParams: AsyncDynamicOptionsEvaluatorParams = {\n visualizationID,\n props,\n options: optionsToEvaluate,\n dataSources: downsampledDataSources,\n theme: vizConfig.themes,\n bypassCloneDeepOptionScope: Boolean(\n getFeatureFlag(featureFlagContext, 'visualizations_bypassCloneDeepOptionScope')\n ),\n lazyLoadingDataFrame: Boolean(\n getFeatureFlag(featureFlagContext, 'visualizations_lazyLoadingDataFrame')\n ),\n };\n AsyncDynamicOptionsEvaluator.evaluate(asyncDynamicOptionsEvaluatorParams)\n .then(results => {\n setEvaluatedOptionsAsync(results.results);\n })\n .catch(() => {\n if (isMounted.current) {\n setUseAsyncEvaluatedOptions(false);\n }\n });\n } else {\n let dataFrames: Frames | undefined = dataFramesInState;\n if (downsampledDataSources !== dataSourcesInState) {\n setDataSourcesInState(downsampledDataSources);\n dataFrames = Opts.dataFrameFromDataSource(\n downsampledDataSources,\n getFeatureFlag(featureFlagContext, 'visualizations_lazyLoadingDataFrame')\n );\n setDataFramesInState(dataFrames);\n }\n const result = Opts.evaluate(\n optionsToEvaluate,\n downsampledDataSources,\n themeFunc,\n dataFrames,\n getFeatureFlag(featureFlagContext, 'visualizations_bypassCloneDeepOptionScope')\n );\n return result;\n }\n } catch (e) {\n if (e instanceof Error) {\n // eslint-disable-next-line no-console\n console.error(`unexpected error evaluating options: ${e.message}`);\n }\n return {};\n }\n return {};\n }, [\n currentThemeFamily,\n currentThemeColorScheme,\n currentThemeDensity,\n optionsToEvaluate,\n downsampledDataSources,\n serializedTimezone,\n useAsyncEvaluatedOptions,\n ]);\n\n const evaluatedOptionsToUse = !useAsyncEvaluatedOptions ? evaluatedOptions : evaluatedOptionsAsync;\n\n // trellis specific backgroundColor update for onComputedProps\n // if trellis is enabled following these three criteria - 1) trellis feature flag is enabled 2) vizConfig supports array has 'trellis' 3) option 'splitByLayout' is set to 'trellis\n // onComputedProps api should return back trellisBackgroundColor value for backgroundColor option to support coloring of sibling panels (for eg:- title/ description on UDF side)\n const clonedEvaluatedOptions: Record<string, unknown> = { ...evaluatedOptionsToUse };\n if (isTrellisOn) {\n clonedEvaluatedOptions.backgroundColor = clonedEvaluatedOptions?.trellisBackgroundColor;\n }\n // useEffect hook needs to be initialized before any early returns\n // this is in accordance with the order of hook calls being the same on each render https://reactjs.org/docs/hooks-rules.html#explanation\n React.useEffect((): void => {\n onComputedProps(clonedEvaluatedOptions);\n });\n\n React.useEffect((): (() => void) => {\n return () => {\n if (useAsyncEvaluatedOptions) {\n isMounted.current = false;\n AsyncDynamicOptionsEvaluator.reset(visualizationID);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // present warning message if any required props are missing\n const { requiredProps = [], supports } = vizConfig;\n const missing = missingKeys(requiredProps, evaluatedOptionsToUse);\n if (\n missing.length > 0 &&\n supports.includes(VizBehavior.PLACEHOLDER) &&\n vizConfig.key !== 'splunk.singlevalue' // For SV missing props msg is not displayed if required props majorValue is missing, instead this will be handled from the component, instead handled within component\n ) {\n return (\n <MissingPropsMessage\n data-test=\"missing-props-message\"\n width={width}\n height={height}\n missingProps={missing}\n backgroundColor={bgColorFromTheme}\n />\n );\n }\n\n // events\n const eventCallbackProps = {};\n if (hasEventHandlers && mode === 'view' && vizConfig.supports.indexOf(VizBehavior.EVENTS) > -1) {\n const supportedEvents = vizConfig.events;\n Object.keys(supportedEvents).forEach((eventName): void => {\n const { parentKeys, payloadKeys } = supportedEvents[eventName];\n const eventCallbackPropName = camelCase(`on.${eventName}`);\n\n // todo: refactor single value and single value icon to send payload from viz\n // then remove these lines\n let payload = {};\n if (Array.isArray(payloadKeys) && payloadKeys.length) {\n payloadKeys.forEach(p => {\n payload[p] = evaluatedOptionsToUse[p];\n });\n }\n\n eventCallbackProps[eventCallbackPropName] = (ev): Record<string, unknown> => {\n if (ev && ev.payload) {\n payload = ev.payload;\n }\n\n return onEventTrigger({\n originalEvent: ev,\n payload,\n type: eventName,\n });\n };\n\n if (parentKeys) {\n for (let i = parentKeys.length - 1; i >= 0; i -= 1) {\n const newObject = {};\n newObject[parentKeys[i]] = eventCallbackProps[eventCallbackPropName];\n eventCallbackProps[eventCallbackPropName] = newObject;\n }\n }\n });\n }\n\n // compute pure viz props which are not from options\n const computedVizProps = computeVizProps({\n ...props,\n ...evaluatedOptionsToUse,\n ...eventCallbackProps,\n themeFunc,\n });\n\n /**\n * PAGE_AND_SORT behavior\n *\n * Some visualizations, like table, requires metadata about the datasource,\n * like total number of results, current count, offset, and sort, for rendering\n * paginator and sorting direction. In this approach, the visualization\n * allow users to set 'paginateDataSourceKey' to select which datasource\n * should the visualization extract the metadata from. It defaults to 'primary' datasource.\n * The visualization config should set the PAGE_AND_SORT behavior to receive\n * 'requestParams', 'meta' and onRequestParams callback as props.\n *\n * In future, we could automatically detect which all datasources are being used\n * and bind those magically to pagination/sorting behavior.\n */\n let dataSourceMetadata = {};\n const OptionKey = 'paginateDataSourceKey';\n const optsKey = has(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey];\n const paginateDataSourceKey = typeof optsKey === 'string' ? optsKey : 'primary';\n if (\n vizConfig.supports.indexOf(VizBehavior.PAGE_AND_SORT) > -1 &&\n has(dataSources, paginateDataSourceKey)\n ) {\n const requestParams = get(dataSources, [paginateDataSourceKey, 'requestParams'], {});\n const meta = get(dataSources, [paginateDataSourceKey, 'meta'], {});\n const handleRequestParamsChange = (payload: Record<string, unknown>): void =>\n onRequestParamsChange(paginateDataSourceKey, payload);\n\n const sortParams = getSortingParams({\n requestParams,\n meta,\n onRequestParamsChange: handleRequestParamsChange,\n });\n\n const paginatorParams = getPaginationParams({\n requestParams,\n meta,\n onRequestParamsChange: handleRequestParamsChange,\n });\n\n dataSourceMetadata = {\n sortParams,\n paginatorParams,\n };\n }\n\n // if were using webworkers and this is the first render we dont want to show a viz with missing data so we return null\n if (useAsyncEvaluatedOptions && Object.keys(evaluatedOptionsToUse).length === 0) {\n return null;\n }\n\n return (\n <SanitizedReactViz\n mode={mode}\n width={width}\n height={height}\n {...downsamplingProps}\n {...evaluatedOptionsToUse}\n {...computedVizProps}\n {...eventCallbackProps}\n {...dataSourceMetadata}\n />\n );\n };\n\n DashboardViz.propTypes = {\n ...SplunkVisualization.propTypes,\n ...ReactViz.propTypes,\n };\n\n DashboardViz.defaultProps = {\n ...SplunkVisualization.defaultProps,\n ...ReactViz.defaultProps,\n // using withTheme requires component to receive theme prop. In case the consumer did not provide ThemeProvider, a default empty object will prevent warnings.\n theme: {},\n };\n // attach viz config\n DashboardViz.config = vizConfig;\n\n // @ts-ignore: TODO fix sc upgrade TS issues\n return withTheme(\n withPlaceholder(withEditModeCover(DashboardViz, disableEditModeCover), useIconPlaceholder)\n );\n};\n\nexport default withDashboardViz;\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/propUtils\";\nexport * from \"@splunk/visualizations-shared/propUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import { has, isArray, isUndefined } from 'lodash';\nimport type { JsonColumnData } from './interfaces/DataSource';\n\ninterface ChartOptions {\n [key: string]: any;\n}\n\n/**\n * Get formatted annotations\n * @method getAnnotations\n * @param {Object} options\n * @param {Array} options.annotationX\n * @param {Array} options.annotationColor\n * @param {Array} options.annotationLabel\n * @returns {Array}\n */\nexport const getAnnotations = ({ annotationX, annotationColor, annotationLabel }) =>\n annotationX && annotationX.length\n ? annotationX.map((timestamp, i) => ({\n color: annotationColor && annotationColor[i],\n label: annotationLabel && annotationLabel[i],\n time: timestamp,\n }))\n : [];\n\n/**\n * Truncate the result set to given limit\n * @method truncateData\n * @param {Object} dataSet - dataSources.primary.data\n * @param {Number|String} truncationLimit - options['chart.resultTruncationLimit']\n * @returns {Object}\n */\nexport const truncateData = (dataSet, truncationLimit): Record<string, any[]> => {\n if (!dataSet) {\n return null;\n }\n\n const limit = parseInt(truncationLimit, 10);\n if (!limit || limit <= 0) {\n return dataSet;\n }\n\n const truncatedData: Record<string, Array<string[] | number[]>> = {\n ...dataSet,\n };\n truncatedData.columns = truncatedData.columns.map(columnData =>\n columnData && Array.isArray(columnData) ? columnData.slice(0, limit) : columnData\n );\n return truncatedData;\n};\n\n/**\n * Helper method to update the option values into the values that SC accepts\n * @method mapToValues\n * @param {Object} options\n * @returns {Object}\n */\nexport const mapToValues = (optionValuesSCMapping: Record<string, any>) => options => {\n const convertedOptions: Record<string, any> = { ...options };\n Object.keys(optionValuesSCMapping).forEach(key => {\n if (has(options, key)) {\n const updatedValue = optionValuesSCMapping[key][options[key]];\n if (!isUndefined(updatedValue)) {\n convertedOptions[key] = updatedValue;\n }\n }\n });\n return convertedOptions;\n};\n\ninterface y2AxisOptions extends ChartOptions {\n y2Fields?: string | string[];\n}\n\n/**\n * Helper method to process options related to y2Fields\n * @method convertY2AxisOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertY2AxisOptions = ({\n y2Fields,\n ...originalOptions\n}: y2AxisOptions): Record<string, any> => {\n const convertedOptions: Record<string, any> = {\n ...originalOptions,\n };\n if (y2Fields) {\n convertedOptions['axisY2.enabled'] = true;\n convertedOptions['axisY2.fields'] = isArray(y2Fields)\n ? y2Fields.filter(name => name).join(',')\n : y2Fields;\n }\n return convertedOptions;\n};\n\n/**\n * Helper method to format value for overlayFields\n * @method convertOverlayFields\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertOverlayFields = (originalOptions: ChartOptions): ChartOptions => {\n const convertedOptions: ChartOptions = {\n ...originalOptions,\n };\n const { overlayFields } = originalOptions;\n if (overlayFields) {\n convertedOptions.overlayFields = Array.isArray(overlayFields)\n ? overlayFields\n .filter(field => field)\n .map(field => field.trim())\n .join(',')\n : overlayFields;\n }\n return convertedOptions;\n};\n\n/**\n * checks whether data is multi series data\n * @param {array} data array\n * @return {Boolean}\n */\nexport const isMultiSeriesData = (data: string[] | string[][]): boolean =>\n Array.isArray(data) && Array.isArray(data[0]);\n/**\n * checks whether data is multi series data and returns value as array\n * @param {array} data array\n * @param {*} value to return as array\n * @return {array}\n */\nexport const toArrayForSeries = (data, value): any[] => (isMultiSeriesData(data) ? value : [value]);\n\ninterface ConstructFieldsAndColumnsParams {\n x: string[];\n y: string[] | string[][];\n xField: string;\n yFields: string | string[];\n y2?: string[] | string[][];\n y2Fields?: string | string[];\n}\nexport const constructFieldsAndColumns = ({\n x = [],\n y = [],\n xField,\n yFields,\n y2,\n y2Fields,\n}: ConstructFieldsAndColumnsParams): JsonColumnData => {\n const columns = [x.map(String), ...toArrayForSeries(y, y).map(series => series.map(String))];\n const yFieldsArray = toArrayForSeries(y, yFields);\n const fields = [{ name: xField }, ...yFieldsArray.map(field => ({ name: field }))];\n // splunk-charting requires y2 to be part of columns\n // when y & y2 options are configured with different (mutually exclusive) series\n // y2 columns need to be added to columns\n if (y2Fields) {\n const y2FieldsArray = toArrayForSeries(y2, y2Fields);\n const y2AsArray = toArrayForSeries(y2, y2).map(series => series?.map(String));\n y2FieldsArray.forEach((y2Field, index) => {\n if (yFieldsArray.indexOf(y2Field) === -1 && y2AsArray[index]) {\n fields.push({\n name: y2Field,\n });\n columns.push(y2AsArray[index]);\n }\n });\n }\n return {\n columns,\n fields,\n };\n};\n\nexport function constructAdditionalTooltipFieldsMap({ fields, columns, additionalTooltipFields }) {\n const map = {};\n\n additionalTooltipFields?.forEach(fieldName => {\n const index = fields.findIndex(f => f.name === fieldName);\n if (index !== -1) {\n map[fieldName] = columns[index];\n }\n });\n\n return map;\n}\n\n// Note: we are making the assumption that attaching a range.select listener means the user wants to enable search zoom\n// This is because we don't know if the time range tokens being updated by the drilldown is used by the current viz.\n// In the future we are considering using a shared context to pass this information from UDF to Viz.\ninterface OptionsProps {\n events?: string[];\n selectedItemId?: string;\n [key: string]: unknown;\n}\ninterface EventHandler {\n type: string;\n options: OptionsProps;\n}\n\nexport const shouldEnableSearchZoom = (eventHandlers: EventHandler[] = [], xField = '') => {\n const rangeSelectEventHandler = eventHandlers.find(eventHandler =>\n eventHandler.options.events?.includes('range.select')\n );\n // Check if xField is _time. This is how splunk-charting distinguishes a time chart from categorical.\n // Note: search zoom will be buggy if the x axis uses timestamp values but is not _time\n const xAxisIsTime = xField === '_time';\n\n return !!rangeSelectEventHandler && xAxisIsTime;\n};\n", "import { mapKeys, chain } from 'lodash';\nimport { convertPropsToString } from '@splunk/visualizations-shared/propUtils';\nimport { mapToValues, convertY2AxisOptions, convertOverlayFields } from '../common/chartingUtils';\n\n// map for key names which are either new or not present in SimpleXML options mapping\nconst columnOptionsSCMapping = {\n dataValuesDisplay: 'showDataLabels',\n showYAxisWithZero: 'yAxisIncludeZero',\n showY2AxisWithZero: 'y2AxisIncludeZero',\n showYAxisExtendedRange: 'yAxisExtendsAxisRange',\n showSplitSeries: 'splitSeries',\n showIndependentYRanges: 'allowIndependentYRanges',\n xAxisLabelRotation: 'xAxisMajorLabelRotation',\n xAxisLabelVisibility: 'xAxisMajorLabelVisibility',\n showOverlayY2Axis: 'enableY2Axis',\n resultLimit: 'resultTruncationLimit',\n seriesColors: 'seriesColors',\n seriesColorsByField: 'fieldColors',\n legendDisplay: 'legendPlacement',\n legendTruncation: 'legendLabelOverflowMode',\n yAxisMajorTickInterval: 'yAxisMajorUnit',\n yAxisLabelVisibility: 'yAxisMajorLabelVisibility',\n showXMajorGridLines: 'showMajorXGridLines',\n showYMajorGridLines: 'showMajorYGridLines',\n showYMinorGridLines: 'showMinorYGridLines',\n showY2MajorGridLines: 'showMajorY2GridLines',\n showY2MinorGridLines: 'showMinorY2GridLines',\n y2AxisLabelVisibility: 'y2AxisMajorLabelVisibility',\n y2AxisMajorTickInterval: 'y2AxisMajorUnit',\n showRoundedY2AxisLabels: 'roundY2AxisLabelsToInteger',\n xAxisLineVisibility: 'xAxisVisibility',\n yAxisLineVisibility: 'yAxisVisibility',\n y2AxisLineVisibility: 'y2AxisVisibility',\n lineDashStylesByField: 'fieldDashStyles',\n};\n\n// key value mapping of what options (and their corresponding values) which we expose in config.ts to property values SC understands\nexport const columnOptionValuesSCMapping = {\n xAxisTitleVisibility: {\n hide: 'collapsed',\n },\n yAxisTitleVisibility: {\n hide: 'collapsed',\n },\n y2AxisTitleVisibility: {\n hide: 'collapsed',\n },\n legendPlacement: {\n off: 'none',\n },\n legendLabelOverflowMode: {\n ellipsisOff: 'ellipsisNone',\n },\n yAxisAbbreviation: {\n off: 'none',\n },\n columnGrouping: {\n auto: 'default',\n },\n showDataLabels: {\n off: 'none',\n },\n y2AxisAbbreviation: {\n off: 'none',\n },\n};\n\n/**\n * Helper function to convert values for legend options\n * @method convertLegendDisplayOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertLegendDisplayOptions = (originalOptions = {}): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n ['legendPlacement', 'legendLabelOverflowMode'].forEach(key => {\n const updatedValue = columnOptionValuesSCMapping[key][originalOptions[key]];\n if (updatedValue) {\n convertedOptions[key] = updatedValue;\n }\n });\n return convertedOptions;\n};\n\n/**\n * Helper function to convert values for Y axis label options\n * @method convertYAxisLabelOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertYAxisLabelOptions = (originalOptions): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n const updatedValue = columnOptionValuesSCMapping.yAxisAbbreviation[originalOptions.yAxisAbbreviation];\n if (updatedValue) {\n convertedOptions.yAxisAbbreviation = updatedValue;\n }\n return convertedOptions;\n};\n\n/**\n * Helper method to process options related to title visibility\n * @method convertTitleVisibilityOptions\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertTitleVisibilityOptions = (originalOptions): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n ['xAxisTitleVisibility', 'yAxisTitleVisibility', 'y2AxisTitleVisibility'].forEach(key => {\n if (convertedOptions[key] === 'hide') {\n convertedOptions[key] = 'collapsed';\n }\n });\n return convertedOptions;\n};\n\n/**\n * Helper method to convert 'auto' to default\n * @method convertAuto\n * @param {Object} originalOptions\n * @returns {Object}\n */\nexport const convertAuto = (originalOptions): Record<string, unknown> => {\n const convertedOptions: Record<string, any> = { ...originalOptions };\n ['stackMode'].forEach(key => {\n if (convertedOptions[key] === 'auto') {\n convertedOptions[key] = 'default';\n }\n });\n return convertedOptions;\n};\n\n/**\n * Converts defined option values to string if present\n * @method convertToStringValues\n * @param {Object} options\n * @returns {Object}\n */\nexport const convertToStringValues = (options): Record<string, unknown> => {\n const updatedOptions = convertPropsToString({\n vizProps: options,\n propNames: ['seriesColors', 'fieldColors', 'legendLabels', 'fieldDashStyles'],\n });\n return { ...options, ...updatedOptions };\n};\n\n/**\n * Helper method to update the option names which can be mapped to SimpleXML options or\n * can be used directly with SC if don't have a 1-1 mapping in SimpleXML\n *\n * @param options\n * @returns\n */\nexport const mapToOldKey = options =>\n mapKeys(options, (val, key) => (columnOptionsSCMapping[key] ? columnOptionsSCMapping[key] : key));\n\n/**\n * Chained helper for mapping the option properties (and values) we expose in config.ts into property values that splunk-charting accepts\n * This is for options that has new key name and can not directly be mapped with SimpleXML or\n * don't have a 1-1 mapping in SimpleXML (i.e. a straightforward name mapping where values are preserved)\n *\n * @param originalOptions\n * @returns\n */\nexport const convertToColumnSCProperties = (\n originalOptions: Record<string, unknown>\n): Record<string, unknown> =>\n chain(mapToOldKey(originalOptions))\n .thru(mapToValues(columnOptionValuesSCMapping))\n .thru(convertY2AxisOptions)\n .thru(convertOverlayFields)\n .thru(convertTitleVisibilityOptions)\n .thru(convertLegendDisplayOptions)\n .thru(convertToStringValues)\n .thru(convertAuto)\n .thru(convertYAxisLabelOptions)\n .value();\n", "\nimport * as defaultImport from \"@splunk/react-ui/Paginator\";\nexport * from \"@splunk/react-ui/Paginator\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes\";\nexport * from \"@splunk/themes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import * as React from 'react';\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { get, pick } from 'lodash';\nimport styled from 'styled-components';\nimport Paginator from '@splunk/react-ui/Paginator';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { getSettingsFromThemedProps } from '@splunk/themes';\nimport useSplunkTheme from '@splunk/themes/useSplunkTheme';\nimport FeatureFlagContext from '@splunk/visualization-context/FeatureFlagContext';\nimport SizeAwareWrapper from '@splunk/visualizations-shared/SizeAwareWrapper';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport Message from '@splunk/visualizations-shared/Message';\nimport {\n getTrellisDataSplitterMode,\n getAllPossibleSplitByFields,\n} from '@splunk/visualizations-shared/trellisUtils';\nimport { deepMergeWithArrayPrimitiveOverrides } from '@splunk/visualizations-shared/hocUtils';\nimport { pickFieldFromJSONSchema } from '@splunk/visualizations-shared/JSONSchemaUtils';\nimport { LAYOUT_TYPE } from '@splunk/visualization-schemas';\nimport { Options } from '@splunk/visualization-encoding/Options';\nimport { DataSource } from '../interfaces/DataSource';\nimport { KV } from '../interfaces/Object';\nimport { AGGREGATIONS, getTrellisDataSourcesBySplitMode, determineMinMax } from '../utils/trellisUtils';\n\nconst TrellisContainer = styled.div<{\n width: number | string;\n height: number | string;\n backgroundColor: string;\n}>`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n background-color: ${props => props.backgroundColor};\n ${props => toDimension(pick(props, ['width', 'height']))};\n > [data-test='paginator'] {\n align-self: flex-end;\n margin-bottom: 10px;\n }\n`;\n\nconst TrellisContainerGrid = styled.div<{\n height: number;\n colCount: number;\n colMinWidth: number;\n rowHeight: number;\n}>`\n display: grid;\n height: ${props => {\n return `${props.height}px`;\n }};\n gap: 10px 10px;\n grid-template-columns: ${props => {\n return props.colCount\n ? `repeat(${props.colCount}, minmax(${props.colMinWidth}px, 1fr))`\n : `repeat(auto-fit, minmax(${props.colMinWidth}px, 1fr))`;\n }};\n overflow: auto;\n justify-items: stretch;\n grid-auto-rows: ${props => `${props.rowHeight}px`};\n .child {\n height: ${props => `${props.rowHeight}px`};\n }\n`;\n\nconst showErrorMessage = (\n errorCode: string,\n width: string | number,\n height: string | number\n): JSX.Element => {\n if (errorCode === 'INVALID_SPLIT_BY_FIELD') {\n return (\n <Message\n width={width}\n height={height}\n message={_('Select a valid trellis split by field')}\n level=\"info\"\n />\n );\n }\n if (errorCode === 'UNKNOWN_DATA_SPLIT_MODE') {\n return <Message width={width} height={height} message={_('Unknown data split mode')} level=\"info\" />;\n }\n return <Message width={width} height={height} message={_('Error render in trellis')} level=\"info\" />;\n};\n\nexport interface VizWithTrellisProps {\n options?: KV;\n dataSources: { [name: string]: DataSource };\n height: number | string;\n width: number | string;\n theme?: unknown;\n}\n\nconst withTrellis = Viz => {\n const VizWithTrellis = (opts: VizWithTrellisProps): JSX.Element => {\n const cachedHandleResize = React.useCallback((w, h) => {\n setContainerWidth(w);\n setContainerHeight(h);\n }, []);\n const [containerWidth, setContainerWidth] = React.useState<number>(Number(opts.width));\n const [containerHeight, setContainerHeight] = React.useState<number>(Number(opts.height));\n const { options = {}, height, width, ...otherProps } = opts;\n const defaultOptions = pickFieldFromJSONSchema(Viz.config.optionsSchema, 'default');\n const mergedOptions = deepMergeWithArrayPrimitiveOverrides({}, options, defaultOptions);\n const {\n trellisColumns,\n trellisPageCount,\n trellisMinColumnWidth,\n trellisRowHeight,\n splitByLayout,\n trellisSplitBy,\n trellisSharedScale,\n stackMode,\n yAxisMin,\n yAxisMax,\n } = mergedOptions;\n const colCount = trellisColumns > 0 ? trellisColumns : defaultOptions.trellisColumns;\n const pageCount = +trellisPageCount > 0 ? +trellisPageCount : defaultOptions.trellisPageCount;\n const colMinWidth =\n trellisMinColumnWidth > 0 ? trellisMinColumnWidth : defaultOptions.trellisMinColumnWidth;\n const rowHeight = trellisRowHeight > 0 ? trellisRowHeight : defaultOptions.trellisRowHeight;\n const [pageNum, setPageNum] = useState(1);\n const [pagedData, setPagedData] = useState(null);\n let splitByKeys = [];\n let totalPages = 0;\n let showPaginator = false;\n const { dataSources } = otherProps;\n const theme = {\n splunkThemeV1: useSplunkTheme(),\n };\n const {\n family: currentThemeFamily,\n colorScheme: currentThemeColorScheme,\n density: currentThemeDensity,\n } = getSettingsFromThemedProps({ theme });\n const trellisBackgroundColor = useMemo(() => {\n const themeFunc = themeVar =>\n Viz.config.themes[themeVar]?.({\n trellisBackgroundColor: mergedOptions.trellisBackgroundColor,\n theme,\n });\n // trellisBackgroundColor option supports only static coloring and DSL option evaluation derived from the themes level only.\n const evaluated = Options.evaluate(\n {\n context: Viz.config.context,\n options: {\n trellisBackgroundColor: mergedOptions.trellisBackgroundColor,\n },\n },\n {},\n themeFunc\n );\n\n return evaluated.trellisBackgroundColor;\n }, [\n mergedOptions.trellisBackgroundColor,\n currentThemeFamily,\n currentThemeColorScheme,\n currentThemeDensity,\n ]);\n const columns = get(dataSources, 'primary.data.columns', undefined);\n const fields = get(dataSources, 'primary.data.fields', undefined);\n const noColumns = columns === undefined;\n const noFields = fields === undefined;\n const updateDataDisplay = currPage => {\n if (!showPaginator) {\n setPagedData(splitByKeys);\n setPageNum(1);\n } else {\n const startIdx = pageCount * (currPage - 1);\n const paged = splitByKeys.slice(startIdx, startIdx + pageCount);\n setPagedData(paged);\n }\n };\n useEffect(() => {\n setPageNum(1);\n updateDataDisplay(1);\n }, [pageCount, trellisSplitBy]);\n\n useEffect(() => {\n updateDataDisplay(pageNum);\n }, [columns, fields, trellisSplitBy, pageNum, splitByLayout]);\n\n const handlePageChange = useCallback(\n (event, { page }) => {\n setPageNum(page);\n },\n [pageNum, pagedData]\n );\n\n const featureFlagContext = React.useContext<FeatureFlagContext>(FeatureFlagContext);\n const isTrellisFeatureFlagOn = Boolean(\n featureFlagContext && featureFlagContext.visualizations_enableTrellis\n );\n\n if (!isTrellisFeatureFlagOn || !splitByLayout || splitByLayout !== LAYOUT_TYPE.Trellis) {\n return <Viz {...opts} />;\n }\n\n if (splitByLayout === LAYOUT_TYPE.Trellis) {\n if (noColumns || noFields) {\n return <Message width={width} height={height} message={_('Loading')} level=\"info\" />;\n }\n\n // If no trellisSplitBy value is passed in, assign default trellisSplitBy\n // The default value will be the first value in the individual splitBy field list or 'aggregations'\n let currTrellisSplitBy = trellisSplitBy;\n if (!trellisSplitBy || trellisSplitBy.length === 0) {\n const splitByPossibleFields = getAllPossibleSplitByFields(fields);\n currTrellisSplitBy =\n splitByPossibleFields.fields && splitByPossibleFields.fields.length\n ? splitByPossibleFields.fields[0]\n : AGGREGATIONS;\n }\n const splitMode = getTrellisDataSplitterMode(fields);\n const dataSplitResult = getTrellisDataSourcesBySplitMode(\n splitMode,\n dataSources,\n currTrellisSplitBy\n );\n const modifiedDataSourceBySplitBy = dataSplitResult?.splitDataSources;\n const dataSplitErrorCode = dataSplitResult?.errorCode;\n if (\n !modifiedDataSourceBySplitBy ||\n Object.keys(modifiedDataSourceBySplitBy).length === 0 ||\n dataSplitErrorCode\n ) {\n return showErrorMessage(dataSplitErrorCode, width, height);\n }\n\n const splitByKeysModified = modifiedDataSourceBySplitBy\n ? Object.keys(modifiedDataSourceBySplitBy)\n : [];\n if (splitByKeysModified) {\n showPaginator = splitByKeysModified.length > pageCount;\n splitByKeys = splitByKeysModified;\n totalPages = splitByKeysModified ? Math.ceil(splitByKeysModified.length / pageCount) : 0;\n }\n\n const [calculatedMin, calculatedMax] = determineMinMax(\n modifiedDataSourceBySplitBy,\n trellisSharedScale,\n yAxisMin,\n yAxisMax,\n stackMode\n );\n\n return (\n <TrellisContainer height={height} width={width} backgroundColor={trellisBackgroundColor}>\n <TrellisContainerGrid\n height={height as number}\n colCount={colCount}\n colMinWidth={colMinWidth}\n rowHeight={rowHeight}\n >\n {pagedData?.map((splitByKey, idx) => (\n <div\n className=\"child\"\n data-test=\"trellis-child\"\n key={`div-child-${idx.toString()}`}\n >\n <SizeAwareWrapper\n width={width}\n height={height}\n onResize={cachedHandleResize}\n />\n <Viz\n {...otherProps}\n trellisKey={splitByKey}\n trellisSplitBy={currTrellisSplitBy}\n dataSources={modifiedDataSourceBySplitBy[splitByKey]}\n options={{\n ...options,\n yAxisMin: calculatedMin,\n yAxisMax: calculatedMax,\n }}\n key={`viz-${idx.toString()}`}\n height={containerHeight}\n width={containerWidth}\n />\n </div>\n ))}\n </TrellisContainerGrid>\n {showPaginator && totalPages >= pageNum && (\n <Paginator\n onChange={handlePageChange}\n current={pageNum}\n alwaysShowLastPageLink\n totalPages={totalPages}\n />\n )}\n </TrellisContainer>\n );\n }\n return null;\n };\n VizWithTrellis.propTypes = Viz.proptypes;\n VizWithTrellis.defaultProps = Viz.defaultProps;\n VizWithTrellis.config = Viz.config;\n return VizWithTrellis;\n};\n\nexport default withTrellis;\n", "import { chain, omit } from 'lodash';\n// Charting imports i18n which needs to be run to instantiate window globals in the tests\n// eslint-disable-next-line import/order\nimport Charting, { ChartingProps } from '../common/Charting';\nimport jsCharting from '@splunk/charting-bundle';\nimport { getSimpleXMLOptionsForProps } from '@splunk/visualizations-shared/simpleXMLOptions';\nimport config from './config';\nimport withDashboardViz from '../common/withDashboardViz';\nimport { convertToColumnSCProperties } from './columnUtils';\nimport {\n getAnnotations,\n truncateData,\n constructFieldsAndColumns,\n shouldEnableSearchZoom,\n constructAdditionalTooltipFieldsMap,\n} from '../common/chartingUtils';\nimport withTrellis from '../common/hocs/withTrellis';\n\nconst validOptions = Object.keys(config.optionsSchema);\n\nexport const computeVizProps: any = ({\n dataSources,\n onEventTrigger,\n x,\n y,\n xField,\n yFields,\n additionalTooltipFields,\n annotationX,\n annotationLabel,\n annotationColor,\n visualizationApiRef,\n trellisKey,\n trellisSplitBy,\n themeFunc,\n ...otherOptions\n}): Partial<ChartingProps> => {\n // options to be passed as props\n const defaultFontColor = themeFunc('defaultFontColor');\n const computedProps: Record<string, any> = {\n visualizationApiRef,\n onEventTrigger,\n trellisKey,\n trellisSplitBy,\n defaultFontColor,\n };\n const { y2Fields, y2, hasEventHandlers, eventHandlers } = otherOptions;\n\n computedProps.options = chain(otherOptions)\n .pick(validOptions)\n .thru(convertToColumnSCProperties)\n .thru(options => ({\n ...getSimpleXMLOptionsForProps(omit(options, ['y2Fields'])),\n chart: 'column',\n }))\n .value();\n\n const chartingAnnotations = getAnnotations({\n annotationX,\n annotationColor,\n annotationLabel,\n });\n let primaryData = { ...dataSources.primary.data };\n const { columns, fields } = constructFieldsAndColumns({\n x,\n y,\n xField,\n yFields,\n y2,\n y2Fields,\n });\n const additionalTooltipFieldsConstructed = constructAdditionalTooltipFieldsMap({\n ...dataSources.primary.data,\n additionalTooltipFields,\n });\n primaryData.columns = columns;\n primaryData.fields = fields;\n const truncationLimit = computedProps.options['chart.resultTruncationLimit'];\n if (truncationLimit) {\n primaryData = truncateData(primaryData, truncationLimit);\n }\n if (hasEventHandlers) {\n computedProps.onClick = onEventTrigger;\n computedProps.onSelect = onEventTrigger;\n computedProps.onPointMouseOver = onEventTrigger;\n computedProps.onPointMouseOut = onEventTrigger;\n }\n computedProps.chartData = jsCharting.extractChartReadyData(\n {\n ...primaryData,\n annotations: chartingAnnotations,\n },\n {\n removeRangeSelectOnLoad: true,\n enableSearchZoom: shouldEnableSearchZoom(eventHandlers, xField),\n additionalTooltipFields: additionalTooltipFieldsConstructed,\n }\n );\n\n return computedProps;\n};\n\nconst Column = withTrellis(\n withDashboardViz({\n ReactViz: Charting,\n computeVizProps,\n vizConfig: config,\n })\n);\nconst themes = null;\n\nexport { themes, config };\nexport default Column;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["themes", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "i18n_exports", "i18n_default", "defaultImport", "i18n_exports", "i18n_default", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "window", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "config", "isTrellisFeatureFlagOn", "isTrellisEnabled", "isTrellisFeatureFlagOn", "isTrellisEnabled", "isTrellisEnabled", "themes", "isTrellisFeatureFlagOn", "themes", "ColumnIcon", "ColumnPlaceholderIcon", "optionsSchema", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "propTypes", "propTypes", "config", "themes", "Opts", "defaultImport", "defaultImport", "computeVizProps", "_a", "isTrellisFeatureFlagOn", "Opts", "defaultImport", "defaultImport", "defaultImport", "_a", "isTrellisFeatureFlagOn", "themes"]
|
|
7
7
|
}
|