@splunk/visualizations 26.2.0 → 26.3.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 +91 -594
- package/Area.config.js.map +1 -1
- package/Area.js +184 -689
- package/Area.js.map +1 -1
- package/Bar.config.js +92 -561
- package/Bar.config.js.map +1 -1
- package/Bar.js +184 -655
- package/Bar.js.map +1 -1
- package/Bubble.config.js +83 -482
- package/Bubble.config.js.map +1 -1
- package/Bubble.js +177 -578
- package/Bubble.js.map +1 -1
- package/ChoroplethSvg.config.js +76 -201
- package/ChoroplethSvg.config.js.map +1 -1
- package/ChoroplethSvg.js +173 -301
- package/ChoroplethSvg.js.map +1 -1
- package/Column.config.js +92 -599
- package/Column.config.js.map +1 -1
- package/Column.js +184 -693
- package/Column.js.map +1 -1
- package/Ellipse.config.js +82 -200
- package/Ellipse.config.js.map +1 -1
- package/Ellipse.js +137 -262
- package/Ellipse.js.map +1 -1
- package/Events.config.js +61 -282
- package/Events.config.js.map +1 -1
- package/Events.js +222 -428
- package/Events.js.map +1 -1
- package/FillerGauge.config.js +90 -219
- package/FillerGauge.config.js.map +1 -1
- package/FillerGauge.js +163 -299
- package/FillerGauge.js.map +1 -1
- package/Image.config.js +61 -157
- package/Image.config.js.map +1 -1
- package/Image.js +130 -242
- package/Image.js.map +1 -1
- package/Line.config.js +91 -606
- package/Line.config.js.map +1 -1
- package/Line.js +184 -701
- package/Line.js.map +1 -1
- package/LinkGraph.config.js +74 -256
- package/LinkGraph.config.js.map +1 -1
- package/LinkGraph.js +17198 -24224
- package/LinkGraph.js.map +1 -1
- package/Map.config.js +128 -1123
- package/Map.config.js.map +1 -1
- package/Map.js +309 -680
- package/Map.js.map +1 -1
- package/Markdown.config.js +61 -188
- package/Markdown.config.js.map +1 -1
- package/Markdown.js +190 -323
- package/Markdown.js.map +1 -1
- package/MarkerGauge.config.js +137 -297
- package/MarkerGauge.config.js.map +1 -1
- package/MarkerGauge.js +1038 -1203
- package/MarkerGauge.js.map +1 -1
- package/ParallelCoordinates.config.js +71 -191
- package/ParallelCoordinates.config.js.map +1 -1
- package/ParallelCoordinates.js +218 -343
- package/ParallelCoordinates.js.map +1 -1
- package/Pie.config.js +72 -240
- package/Pie.config.js.map +1 -1
- package/Pie.js +214 -381
- package/Pie.js.map +1 -1
- package/Punchcard.config.js +71 -305
- package/Punchcard.config.js.map +1 -1
- package/Punchcard.js +246 -477
- package/Punchcard.js.map +1 -1
- package/Rectangle.config.js +211 -347
- package/Rectangle.config.js.map +1 -1
- package/Rectangle.js +274 -416
- package/Rectangle.js.map +1 -1
- package/Sankey.config.js +71 -213
- package/Sankey.config.js.map +1 -1
- package/Sankey.js +246 -382
- package/Sankey.js.map +1 -1
- package/Scatter.config.js +85 -463
- package/Scatter.config.js.map +1 -1
- package/Scatter.js +825 -1202
- package/Scatter.js.map +1 -1
- package/SingleValue.config.js +114 -409
- package/SingleValue.config.js.map +1 -1
- package/SingleValue.js +287 -582
- package/SingleValue.js.map +1 -1
- package/SingleValueBasic.js +30 -30
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon.config.js +113 -378
- package/SingleValueIcon.config.js.map +1 -1
- package/SingleValueIcon.js +268 -533
- package/SingleValueIcon.js.map +1 -1
- package/SingleValueRadial.config.js +110 -382
- package/SingleValueRadial.config.js.map +1 -1
- package/SingleValueRadial.js +272 -543
- package/SingleValueRadial.js.map +1 -1
- package/SparkLine.js +24 -24
- package/SparkLine.js.map +1 -1
- package/Table.config.js +74 -496
- package/Table.config.js.map +1 -1
- package/Table.js +302 -720
- package/Table.js.map +1 -1
- package/common/Charting.js +22 -34
- package/common/Charting.js.map +1 -1
- package/common/DocExampleWithVizSandbox.js +21 -21
- package/common/DocExampleWithVizSandbox.js.map +1 -1
- package/common/EventsDoc.js +18 -18
- package/common/EventsDoc.js.map +1 -1
- package/common/GaugeMajorTicks.js +4 -4
- package/common/GaugeMajorTicks.js.map +1 -1
- package/common/GaugeValueMarker.js +2 -2
- package/common/GaugeValueMarker.js.map +1 -1
- package/common/OptionsDoc.js +4 -4
- package/common/OptionsDoc.js.map +1 -1
- package/common/OverviewDoc.js +39 -40
- package/common/OverviewDoc.js.map +1 -1
- package/common/SplunkVisualization.js +2 -2
- package/common/SplunkVisualization.js.map +1 -1
- package/common/SplunkVisualizationApi.js +2 -2
- package/common/SplunkVisualizationApi.js.map +1 -1
- package/common/ThemesDoc.js +19 -19
- package/common/ThemesDoc.js.map +1 -1
- package/common/chartingUtils.js +2 -2
- package/common/chartingUtils.js.map +1 -1
- package/common/gaugeUtils.js +10 -10
- package/common/gaugeUtils.js.map +1 -1
- package/common/shapeUtils.js +10 -10
- package/common/shapeUtils.js.map +1 -1
- package/common/utils/configUtils.js +25 -155
- package/common/utils/configUtils.js.map +1 -1
- package/common/utils/dataUtils.js +75 -87
- package/common/utils/dataUtils.js.map +1 -1
- package/common/utils/featureFlagUtils.js +4 -4
- package/common/utils/featureFlagUtils.js.map +1 -1
- package/common/utils/hocUtils.js +2 -2
- package/common/utils/hocUtils.js.map +1 -1
- package/common/utils/mapUtils.js +51 -54
- package/common/utils/mapUtils.js.map +1 -1
- package/common/utils/singleValueUtils.js +7 -7
- package/common/utils/singleValueUtils.js.map +1 -1
- package/common/utils/testHelper.js +7 -36
- package/common/utils/testHelper.js.map +1 -1
- package/common/utils/trellisUtils.js +7 -6
- package/common/utils/trellisUtils.js.map +1 -1
- package/common/utils/urlUtils.js +2 -2
- package/common/utils/urlUtils.js.map +1 -1
- package/common/withDashboardViz.js +65 -77
- package/common/withDashboardViz.js.map +1 -1
- package/package.json +46 -49
- package/common/utils/layoutUtils.js +0 -115
- package/common/utils/layoutUtils.js.map +0 -1
package/Sankey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"prop-types\"","webpack:///external \"@babel/runtime/helpers/classCallCheck\"","webpack:///external \"@babel/runtime/helpers/typeof\"","webpack:///external \"@splunk/visualization-encoding/utils/types\"","webpack:///external \"@splunk/visualizations-shared/numberUtils\"","webpack:///external \"d3-scale\"","webpack:///external \"@splunk/visualizations-shared/Message\"","webpack:///external \"@splunk/visualizations-shared/dataSourceUtils\"","webpack:///external \"@splunk/themes/variables\"","webpack:///./src/Sankey/PureSankey/PureSankey.tsx","webpack:///./src/common/utils/dataUtils.ts","webpack:///external \"@splunk/visualizations-shared/colorUtils\"","webpack:///./src/Sankey/PureSankey/SankeyUtils.ts","webpack:///external \"@splunk/visualization-encoding/Options\"","webpack:///external \"d3-interpolate\"","webpack:///external \"d3-collection\"","webpack:///./src/common/hocs/FixedSizeContainer.tsx","webpack:///external \"@splunk/visualizations-shared/style\"","webpack:///./src/Sankey/Sankey.tsx","webpack:///./src/common/interfaces/DataSource.ts","webpack:///external \"@splunk/ui-utils/i18n\"","webpack:///./src/common/interfaces/VizActionHandler.ts","webpack:///./src/common/interfaces/VizCategory.ts","webpack:///./src/common/utils/hocUtils.ts","webpack:///external \"@splunk/visualizations-shared/schemaUtils\"","webpack:///external \"@babel/runtime/helpers/createClass\"","webpack:///external \"@splunk/visualizations-shared/SizeAwareWrapper\"","webpack:///./src/common/utils/configUtils.ts","webpack:///external \"@splunk/visualization-context/FeatureFlagContext\"","webpack:///external \"@splunk/visualizations-shared/configUtils\"","webpack:///external \"lodash\"","webpack:///external \"@splunk/ui-utils/id\"","webpack:///external \"@splunk/visualization-context/TimezoneContext\"","webpack:///./src/common/hooks/usePrevious.ts","webpack:///external \"@splunk/visualizations-shared/hocUtils\"","webpack:///external \"@splunk/visualizations-shared/JSONSchemaUtils\"","webpack:///./src/common/components/IconPlaceholder.tsx","webpack:///./src/common/hooks/getSorting.ts","webpack:///./src/common/hooks/getPagination.ts","webpack:///external \"styled-components\"","webpack:///./src/common/interfaces/index.ts","webpack:///./src/common/interfaces/DataContract.ts","webpack:///./src/Sankey/index.ts","webpack:///./src/Sankey/PureSankey/lib/sankey.js","webpack:///./src/Sankey/PureSankey/SankeyNode.tsx","webpack:///./src/Sankey/PureSankey/SankeyLink.tsx","webpack:///./src/Sankey/PureSankey/SankeyTooltip.tsx","webpack:///./src/Sankey/config.ts","webpack:///./src/common/editorConfig/DynamicLinkColorsEditor.js","webpack:///./src/common/withDashboardViz.tsx","webpack:///external \"@splunk/themes/getSettingsFromThemedProps\"","webpack:///external \"@splunk/visualizations-shared/SanitizeProps\"","webpack:///external \"@splunk/moment\"","webpack:///./src/common/interfaces/VizBehavior.ts","webpack:///external \"@splunk/async-dynamic-options-evaluator\"","webpack:///./src/common/SplunkVisualization.tsx","webpack:///./src/common/hooks/useDeepMemo.ts","webpack:///./src/common/components/MissingPropsMessage.tsx","webpack:///./src/common/hocs/withEditModeCover.tsx","webpack:///./src/common/hocs/withPlaceholder.tsx","webpack:///./src/common/hooks/useDownsampleDataSources.tsx","webpack:///./src/common/hooks/useGetXAndYFields.tsx","webpack:///./src/common/utils/featureFlagUtils.ts","webpack:///external \"@splunk/visualization-context/FeatureFlags\"","webpack:///external \"@babel/runtime/helpers/slicedToArray\"","webpack:///external \"@splunk/visualization-icons/placeholders\"","webpack:///external \"@splunk/visualization-color-palettes\"","webpack:///external \"@splunk/visualization-icons\"","webpack:///./src/common/editorConfig/BackgroundColor.ts","webpack:///external \"@babel/runtime/helpers/toConsumableArray\"","webpack:///external \"@splunk/themes\"","webpack:///external \"@splunk/visualization-color-palettes/editors/PresetPalettes\"","webpack:///external \"@splunk/react-ui/Popover\"","webpack:///external \"d3-array\"","webpack:///external \"@babel/runtime/helpers/defineProperty\"","webpack:///./src/common/components/VizStyleWrapper.jsx"],"names":["d3_sankey","sankey","nodeWidth","nodePadding","size","nodes","links","components","arguments","computeNodeLinks","computeNodeValues","computeNodeStructure","computeNodeBreadths","computeNodeDepths","computeLinkDepths","curvature","x0","d","x1","xi","d3interpolateNumber","x2","x3","y0","y1","y2","y3","curveExtension","curveDepth","x","dt","getDir","p","forwardLink","backwardLink","link","node","source","target","Math","d3sum","nodeStack","index","connect","sourceLink","component","currentNode","root","scc","layerComponents","bfs","result","max","componentsByBreadth","nextMax","c","outLinks","scaleNodeBreadths","remainingComponents","nextComponents","visitedIndex","n","l","queue","currentCount","nextCount","targets","extractTargets","nodesByBreadth","initializeNodeDepth","resolveCollisions","alpha","iterations","relaxRightToLeft","relaxLeftToRight","ky","d3min","y","center","i","dy","a","b","parallelrendering","sy","ty","getDynamicLinkColorsEditor","defaultContext","defaultPalettesConfig","label","_","option","context","editor","showEditor","options","isDynamicOption","editorProps","labelPosition","flyoutTitle","formatters","value","defaults","linkValues","linkColorRangeConfig","linkColorMatchConfig","dataSelectors","VizStyleWrapper","dataTestKey","props"],"mappings":"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","file":"Sankey.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 479);\n","module.exports = require(\"react\");","module.exports = require(\"prop-types\");","module.exports = require(\"@babel/runtime/helpers/classCallCheck\");","module.exports = require(\"@babel/runtime/helpers/typeof\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@splunk/visualizations-shared/numberUtils\");","module.exports = require(\"d3-scale\");","module.exports = require(\"@splunk/visualizations-shared/Message\");","module.exports = require(\"@splunk/visualizations-shared/dataSourceUtils\");","module.exports = require(\"@splunk/themes/variables\");","import * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport * as T from 'prop-types';\nimport { noop, pick } from 'lodash';\nimport styled from 'styled-components';\nimport Message from '@splunk/visualizations-shared/Message';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport SizeAwareWrapper from '@splunk/visualizations-shared/SizeAwareWrapper';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\n// eslint-disable-next-line camelcase\nimport { d3_sankey } from './lib/sankey';\nimport VizStyleWrapper from '../../common/components/VizStyleWrapper';\nimport {\n checkDigitsOnly,\n computeAllConnectedLinksToNodes,\n convertInputToSankeyDataFormat,\n getAllNodeNames,\n getColorCategoryMapping,\n getLinkId,\n getNodeId,\n} from './SankeyUtils';\nimport SankeyNode from './SankeyNode';\nimport SankeyLink from './SankeyLink';\nimport {\n COLOR_MODE_TYPES,\n NodeConnectionsMap,\n SankeyColors,\n SankeyDataLink,\n SankeyDataNode,\n} from './SankeyModels';\nimport SankeyTooltip from './SankeyTooltip';\n\nexport const DEFAULT_COLORS: SankeyColors = {\n backgroundColor: '#ffffff',\n nodeTextColor: '#2c2c2c',\n tooltip: {\n headerColor: 'rgba(0, 0, 0, 0.54)',\n linkHeaderColor: '#2c2c2c',\n rowColor: '#2c2c2c',\n },\n};\nexport const NODE_TEXT_FONT_SIZE = 10;\nexport const DEFAULT_FONT_FAMILY =\n '\"Splunk Platform Sans\", \"Proxima Nova\", \"Helvetica Neue\", Helvetica, Arial, sans-serif';\nexport const DEFAULT_NODE_COLOR = '#909090';\nexport const DEFAULT_LINK_COLOR = '#909090';\nexport const DEFAULT_SERIES_COLOR = VIZ_CATEGORICAL;\nexport const DEFAULT_LINK_OPACITY = 0.5;\nexport const DEFAULT_NODE_OPACITY = 1;\nexport const INACTIVE_OPACITY = 0.05;\nexport const CHART_MIN_WIDTH = 300;\nexport const CHART_MIN_HEIGHT = 200;\nexport const DEFAULT_CHART_WIDTH = 600;\nexport const DEFAULT_CHART_HEIGHT = 300;\nexport const DEFAULT_SOURCE_INDEX = 0;\nexport const DEFAULT_TARGET_INDEX = 1;\nexport const DEFAULT_LINK_VALUE_INDEX = 2;\n\ninterface PureSankeyProps {\n columns: (string[] | number[])[];\n columnsFromDataSource: (string[] | number[])[];\n fields: string[];\n width: string | number;\n height: string | number;\n mode?: string;\n backgroundColor: string;\n colorMode: COLOR_MODE_TYPES;\n nodeWidth: number;\n nodePadding: number;\n resultLimit: number;\n seriesColors: string[];\n linkColors?: string[];\n linkOpacity: number;\n linkValueField?: string;\n nodeTextColor: string;\n tooltipRowColor: string;\n tooltipLinkHeaderColor: string;\n tooltipHeaderColor: string;\n onNodeClick?: (...args: any) => void;\n onLinkClick?: (...args: any) => void;\n}\n\nconst SankeyContainer = styled.div<{\n width: number | string;\n height: number | string;\n}>`\n overflow: hidden;\n ${props => toDimension(pick(props, ['width', 'height']))};\n`;\n\nconst PureSankey = (props: PureSankeyProps) => {\n const {\n width,\n height,\n columns,\n columnsFromDataSource,\n fields,\n colorMode,\n nodeWidth,\n nodePadding,\n resultLimit,\n seriesColors,\n linkColors,\n linkOpacity,\n linkValueField,\n backgroundColor,\n nodeTextColor,\n tooltipRowColor,\n tooltipLinkHeaderColor,\n tooltipHeaderColor,\n onNodeClick,\n onLinkClick,\n } = props;\n\n const [containerWidth, setContainerWidth] = React.useState(Number(props.width));\n const [containerHeight, setContainerHeight] = React.useState(Number(props.height));\n const cachedHandleResize = React.useCallback((w, h) => {\n setContainerWidth(w);\n setContainerHeight(h);\n }, []);\n\n const margin = {\n top: 17,\n right: 25,\n bottom: 17,\n left: 30,\n };\n // This is to translate the svg's root g based on margin\n // The y position is same as margin top & bottom\n // The x position is an avg of margin right & left\n const translatePos = { x: 28, y: 17 };\n\n const [activeLinks, setActiveLinks] = useState([]);\n const [activeNodes, setActiveNodes] = useState([]);\n const [nodeHovered, setNodeHovered] = useState(null);\n const [hoveredNodeElement, setHoveredNodeElement] = useState(null);\n const [openNodeToolTip, setOpenNodeToolTip] = useState(false);\n const [hoveredLinkElement, setHoveredLinkElement] = useState(null);\n const [openLinkToolTip, setOpenLinkToolTip] = useState(false);\n const sankeyContainerElement = useRef(null);\n const [sankeyWidth, setSankeyWidth] = useState(DEFAULT_CHART_WIDTH - margin.left - margin.right);\n const [sankeyHeight, setSankeyHeight] = useState(DEFAULT_CHART_HEIGHT - margin.top - margin.bottom);\n\n const handleNodeClick = useCallback((node: SankeyDataNode): void => {\n if (node) {\n onNodeClick({\n type: 'node.click',\n payload: {\n nodeValue: node.value,\n nodeName: node.name,\n },\n });\n }\n }, []);\n\n const handleLinkClick = useCallback(\n (link: SankeyDataLink): void => {\n if (link) {\n const payload = { name: linkValueField, value: link.value };\n fields.forEach((field, idx) => {\n const rowToken = `row.${field}.value`;\n payload[rowToken] = columns[idx][link.index];\n });\n onLinkClick({\n type: 'link.click',\n payload,\n });\n }\n },\n [fields, columns, linkValueField]\n );\n\n useEffect(() => {\n if (sankeyContainerElement && sankeyContainerElement.current) {\n const w = sankeyContainerElement.current.getBoundingClientRect().width;\n const h = sankeyContainerElement.current.getBoundingClientRect().height;\n const sWidth = checkDigitsOnly(width as string) ? parseInt(width as string, 10) : w;\n const sHeight = checkDigitsOnly(height as string) ? parseInt(height as string, 10) : h;\n setSankeyWidth(sWidth - margin.left - margin.right);\n setSankeyHeight(sHeight - margin.top - margin.bottom);\n }\n }, [width, height]);\n\n const sankeyData = convertInputToSankeyDataFormat(\n columnsFromDataSource,\n DEFAULT_SOURCE_INDEX,\n DEFAULT_TARGET_INDEX,\n DEFAULT_LINK_VALUE_INDEX,\n resultLimit\n );\n if (\n !sankeyData ||\n !columnsFromDataSource ||\n !Array.isArray(columnsFromDataSource) ||\n columnsFromDataSource.length < 3\n ) {\n return <Message width={width} height={height} message={_('Invalid data to render')} level=\"info\" />;\n }\n const sortAndAssignLinkIds = (links: SankeyDataLink[]): void => {\n links.sort((a, b) => a.dy - b.dy);\n links.forEach(link => {\n // eslint-disable-next-line no-param-reassign\n link.id = `link-${link.source.index}-${link.target.index}`;\n });\n };\n const d3sankey = (d3_sankey() as any)\n .nodeWidth(nodeWidth)\n .nodePadding(nodePadding)\n .size([sankeyWidth, sankeyHeight]);\n const path = d3sankey.reversibleLink();\n d3sankey.nodes(sankeyData.nodes).links(sankeyData.links).layout(500);\n sortAndAssignLinkIds(sankeyData.links);\n const nodeConnectionsMap: NodeConnectionsMap = computeAllConnectedLinksToNodes(\n sankeyData.nodes,\n sankeyData.links\n );\n const uniqCategory = getAllNodeNames(sankeyData);\n const colorCategoryMapping = getColorCategoryMapping({\n category: uniqCategory,\n colorMode,\n seriesColors,\n linkColors,\n });\n\n const resetStates = () => {\n setActiveLinks([]);\n setActiveNodes([]);\n setHoveredLinkElement(null);\n setHoveredNodeElement(null);\n setNodeHovered(null);\n setOpenLinkToolTip(false);\n setOpenNodeToolTip(false);\n };\n\n const renderVisualization = () => {\n if (containerWidth < CHART_MIN_WIDTH || containerHeight < CHART_MIN_HEIGHT) {\n return (\n <Message\n width={containerWidth}\n height={containerHeight}\n message={_('Too small to render content')}\n level=\"info\"\n />\n );\n }\n\n const renderLinks = links => {\n return links.map(link => {\n return (\n <SankeyLink\n link={link}\n activeLinks={activeLinks}\n linkOpacity={linkOpacity}\n path={path}\n key={getLinkId(link)}\n data-test={getLinkId(link)}\n colorCategoryMapping={colorCategoryMapping}\n colorMode={colorMode}\n handleMouseOver={ev => {\n setActiveLinks([link]);\n setActiveNodes([link.source, link.target]);\n setHoveredLinkElement(ev.currentTarget.querySelector('circle'));\n setOpenNodeToolTip(false);\n setOpenLinkToolTip(true);\n }}\n handleMouseLeave={() => {\n resetStates();\n }}\n handleLinkClick={handleLinkClick}\n />\n );\n });\n };\n\n const renderNodes = nodes => {\n const chartWidth = typeof width === 'number' ? width : Number.parseInt(width, 10);\n return nodes.map(node => {\n return (\n <SankeyNode\n node={node}\n key={getNodeId(node)}\n data-test={getNodeId(node)}\n activeNodes={activeNodes}\n nodeWidth={nodeWidth}\n chartWidth={chartWidth}\n colorCategoryMapping={colorCategoryMapping}\n nodeTextColor={nodeTextColor}\n handleMouseOver={ev => {\n const connections = nodeConnectionsMap[node.index];\n setActiveLinks(connections.links);\n setNodeHovered(node);\n setActiveNodes([...connections.sourceNodes, ...connections.targetNodes]);\n setHoveredNodeElement(ev.currentTarget);\n setOpenLinkToolTip(false);\n setOpenNodeToolTip(true);\n }}\n handleMouseLeave={() => resetStates()}\n handleNodeClick={handleNodeClick}\n />\n );\n });\n };\n\n return (\n <VizStyleWrapper\n backgroundColor={backgroundColor}\n dataTestKey=\"SankeyWrapper\"\n onMouseLeave={() => resetStates()}\n >\n <svg height=\"100%\" width=\"100%\" data-test=\"sankey-svg\">\n <g transform={`translate(${translatePos.x},${translatePos.y})`}>\n <g className=\"link-group\" data-test=\"link-group\">\n {renderLinks(sankeyData.links)}\n {openLinkToolTip && (\n <SankeyTooltip\n mode=\"link\"\n open={openLinkToolTip}\n handleTooltipRequestClose={() => resetStates()}\n linkValue={linkValueField}\n connectionsMap={nodeConnectionsMap}\n anchor={hoveredLinkElement}\n link={activeLinks[0]}\n height={sankeyHeight}\n width={sankeyWidth}\n colorCategoryMapping={colorCategoryMapping}\n tooltipRowColor={tooltipRowColor}\n tooltipLinkHeaderColor={tooltipLinkHeaderColor}\n tooltipHeaderColor={tooltipHeaderColor}\n />\n )}\n </g>\n <g className=\"node-group\" data-test=\"node-group\">\n {renderNodes(sankeyData.nodes)}\n {openNodeToolTip && (\n <SankeyTooltip\n mode=\"node\"\n open={openNodeToolTip}\n handleTooltipRequestClose={() => resetStates()}\n linkValue={linkValueField}\n connectionsMap={nodeConnectionsMap}\n anchor={hoveredNodeElement}\n node={nodeHovered}\n height={sankeyHeight}\n width={sankeyWidth}\n colorCategoryMapping={colorCategoryMapping}\n tooltipRowColor={tooltipRowColor}\n tooltipLinkHeaderColor={tooltipLinkHeaderColor}\n tooltipHeaderColor={tooltipHeaderColor}\n />\n )}\n </g>\n </g>\n </svg>\n </VizStyleWrapper>\n );\n };\n\n return (\n <SankeyContainer height={height} width={width} ref={sankeyContainerElement}>\n <SizeAwareWrapper width={width} height={height} onResize={cachedHandleResize} />\n {renderVisualization()}\n </SankeyContainer>\n );\n};\n\nPureSankey.propTypes = {\n columns: T.array,\n columnsFromDataSource: T.array,\n fields: T.array,\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n // need this to satisfy props interface\n // eslint-disable-next-line react/no-unused-prop-types\n mode: T.string,\n colorMode: T.string,\n nodeWidth: T.number,\n nodePadding: T.number,\n resultLimit: T.number,\n seriesColors: T.arrayOf(T.string),\n linkColors: T.arrayOf(T.string),\n linkOpacity: T.number,\n linkValueField: T.string,\n backgroundColor: T.string,\n nodeTextColor: T.string,\n tooltipRowColor: T.string,\n tooltipLinkHeaderColor: T.string,\n tooltipHeaderColor: T.string,\n};\n\nPureSankey.defaultProps = {\n columnsFromDataSource: [],\n columns: [],\n fields: [],\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT,\n mode: 'view',\n colorMode: 'categorical',\n nodeWidth: 12,\n nodePadding: 18,\n resultLimit: 1000,\n seriesColors: DEFAULT_SERIES_COLOR,\n linkColors: [],\n linkOpacity: DEFAULT_LINK_OPACITY,\n linkValueField: 'value',\n backgroundColor: '#0b0c0e',\n nodeTextColor: 'rgba(255, 255, 255, 0.98)',\n tooltipRowColor: 'rgba(255, 255, 255, 0.98)',\n tooltipLinkHeaderColor: 'rgba(255, 255, 255, 0.98)',\n tooltipHeaderColor: 'rgba(255, 255, 255, 0.5)',\n onNodeClick: noop,\n onLinkClick: noop,\n};\n\nexport default PureSankey;\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 = (column: string[] | number[]): CoerceYColumnResult => {\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 = column.findIndex(value => startsWithNumber(`${value}`)) >= 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 // 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')\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[], 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 y2Fields,\n}: {\n enableSearchZoom: boolean;\n dataSources: Record<string, DataSource> | null;\n selectChartEvent: ChartEvent<'chartRangeSelect'> | null;\n width: number;\n xField: string;\n y2Fields?: 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: { name: string }) => {\n return field.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 // For charts with categorical x-axis (charts with an xField that isn't _time), do not support\n // re-calculating downsampling threshold if the chart is zoomed in until SPL-259458 is fixed\n // Also do not support re-calculating downsampling threshold for zoomed-in charts with y2\n // until SPL-259611 is fixed\n if (xField !== '_time' || y2Fields?.length) {\n return firstIndex === 0 && lastIndex === fullSeries.length - 1 ? width : null;\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 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): { 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 );\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 );\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 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","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","/* eslint-disable no-param-reassign */\nimport { ScaleOrdinal, scaleOrdinal } from 'd3-scale';\nimport { isNumber } from '@splunk/visualization-encoding/utils/types';\nimport {\n COLOR_MODE_TYPES,\n Connections,\n Coordinates,\n NodeConnectionsMap,\n SankeyData,\n SankeyDataLink,\n SankeyDataNode,\n} from './SankeyModels';\n\nconst insertNodeIfNotExist = (sankeyData: SankeyData, nodeName: string): void => {\n let { nodes } = sankeyData;\n nodes = nodes || [];\n if (typeof nodeName !== 'string') {\n console.error('Node not created, invalid nodename:', nodeName);\n return;\n }\n nodeName = nodeName.trim();\n if (!nodes.find(node => node.name.toLocaleLowerCase() === nodeName.toLocaleLowerCase())) {\n nodes.push({ name: nodeName });\n }\n};\n\nconst insertLink = (\n sankeyData: SankeyData,\n sourceFieldIdx: number,\n targetFieldIdx: number,\n linkValue: number,\n index: number\n): void => {\n let { links } = sankeyData;\n links = links || [];\n links.push({\n source: (sourceFieldIdx as unknown) as SankeyDataNode,\n target: (targetFieldIdx as unknown) as SankeyDataNode,\n value: linkValue,\n index,\n });\n};\n\nexport const getNodesIndex = (sankeyData: SankeyData, nodeName: string): number => {\n if (!sankeyData || !sankeyData.nodes || !sankeyData.nodes.length) {\n return -1;\n }\n return sankeyData.nodes.findIndex(node => node.name.toLocaleLowerCase() === nodeName.toLocaleLowerCase());\n};\n\nexport const getColorCategoryMapping = ({\n category,\n colorMode,\n seriesColors,\n linkColors,\n}: {\n category: string[];\n colorMode: COLOR_MODE_TYPES;\n seriesColors: string[];\n linkColors?: string[];\n}): ScaleOrdinal<string, unknown, string> | string[] => {\n if (colorMode !== 'categorical') {\n return linkColors;\n }\n return seriesColors ? scaleOrdinal().domain(category).range(seriesColors).unknown(seriesColors[0]) : null;\n};\n\nexport const convertInputToSankeyDataFormat = (\n columns: (string[] | number[])[],\n sourceFieldIdx: number,\n targetFieldIdx: number,\n linkValueFieldIdx: number,\n resultLimit: number\n): SankeyData => {\n if (\n !columns ||\n !Array.isArray(columns) ||\n !columns.length ||\n !columns[sourceFieldIdx] ||\n !columns[targetFieldIdx] ||\n !columns[linkValueFieldIdx] ||\n columns.length < 3 ||\n !Array.isArray(columns[sourceFieldIdx]) ||\n !Array.isArray(columns[targetFieldIdx]) ||\n !Array.isArray(columns[linkValueFieldIdx]) ||\n !columns[sourceFieldIdx] ||\n typeof columns[sourceFieldIdx][0] !== 'string' ||\n !columns[targetFieldIdx] ||\n typeof columns[targetFieldIdx][0] !== 'string'\n ) {\n return null;\n }\n\n const sankeyData: SankeyData = {\n nodes: [],\n links: [],\n };\n\n const maxlen = Math.min(\n columns[sourceFieldIdx].length,\n columns[targetFieldIdx].length,\n columns[linkValueFieldIdx].length,\n resultLimit\n );\n\n for (let i = 0; i < maxlen; i += 1) {\n if (\n typeof columns[sourceFieldIdx][i] === 'string' &&\n typeof columns[targetFieldIdx][i] === 'string' &&\n isNumber(columns[linkValueFieldIdx][i])\n ) {\n const sourceNodeName = (columns[sourceFieldIdx][i] as string).trim();\n const targetNodeName = (columns[targetFieldIdx][i] as string).trim();\n\n insertNodeIfNotExist(sankeyData, sourceNodeName);\n insertNodeIfNotExist(sankeyData, targetNodeName);\n // If same link exists then sum up the value and donot insert new link\n const sourceNodeIdx = getNodesIndex(sankeyData, sourceNodeName);\n const targetNodeIdx = getNodesIndex(sankeyData, targetNodeName);\n const linkExist = sankeyData.links.find(link => {\n return (\n link.source === ((sourceNodeIdx as unknown) as SankeyDataNode) &&\n link.target === ((targetNodeIdx as unknown) as SankeyDataNode)\n );\n });\n const linkValue = +columns[linkValueFieldIdx][i];\n if (linkExist) {\n linkExist.value += linkValue;\n } else {\n insertLink(sankeyData, sourceNodeIdx, targetNodeIdx, linkValue, i);\n }\n } else {\n console.error(\n 'Link excluded. Invalid type in column input, row :- ',\n i,\n `[${columns[sourceFieldIdx][i]}, ${columns[targetFieldIdx][i]}, ${columns[linkValueFieldIdx][i]}]`\n );\n }\n }\n return sankeyData;\n};\n\nexport const getNodeId = (node: SankeyDataNode): string => {\n if (!node) {\n return '';\n }\n return `node-${node.index}`;\n};\n\nexport const getLinkId = (link: SankeyDataLink): string => {\n if (!link) {\n return '';\n }\n return `link-${link.id}`;\n};\n\nexport const getAllNodeNames = (sankeyData: SankeyData): string[] => {\n if (!sankeyData || !sankeyData.nodes || !sankeyData.nodes.length) {\n return [];\n }\n return sankeyData.nodes.map(node => node.name);\n};\n\nexport const extractLinkMidPoint = (pathStr: string): Coordinates => {\n if (!pathStr) {\n return null;\n }\n const mIndex = pathStr.indexOf('M');\n const cIndexFirst = pathStr.indexOf('C');\n const lIndex = pathStr.indexOf('L');\n const cIndexLast = pathStr.lastIndexOf('C');\n const zIndex = pathStr.lastIndexOf('Z');\n if (mIndex < 0 || cIndexLast < 0 || cIndexLast < 0 || zIndex < 0) {\n console.error('Extract link midpoint error. Invalid path -', pathStr);\n return null;\n }\n const section1 = pathStr.slice(mIndex + 1, cIndexFirst).trim();\n const section2 = pathStr.slice(cIndexFirst + 1, lIndex).trim();\n const section3 = pathStr.slice(lIndex + 1, cIndexLast).trim();\n const section4 = pathStr.slice(cIndexLast + 1, zIndex).trim();\n if (!section1.length || !section2.length || !section3.length || !section4.length) {\n console.error('Extract link midpoint error. Invalid path -', pathStr);\n return null;\n }\n const points = [];\n points.push(section1.split(',').map(i => Number.parseFloat(i)));\n const point2Arr = section2.split(' ');\n points.push(point2Arr[point2Arr.length - 1].split(',').map(i => Number.parseFloat(i)));\n points.push(section3.split(',').map(i => Number.parseFloat(i)));\n const point4Arr = section4.split(' ');\n points.push(point4Arr[point4Arr.length - 1].split(',').map(i => Number.parseFloat(i)));\n const width = Math.abs(points[0][0] - points[1][0]) / 2;\n const x = Math.min(points[0][0], points[1][0]) + width;\n const height = Math.abs(points[0][1] - points[2][1]) / 2;\n const y = Math.min(points[0][1], points[2][1]) + height;\n return { x, y };\n};\n\nexport const getAllConnectedLinks = (links: SankeyDataLink[], nodeIdx: number): Connections => {\n const result: Connections = { links: [], sourceNodes: [], targetNodes: [] };\n if (!links || !links.length) {\n return result;\n }\n\n links.forEach(link => {\n if (link.source.index === nodeIdx || link.target.index === nodeIdx) {\n const linkAdded = result.links.find(l => l.id === link.id);\n if (!linkAdded) {\n result.links.push(link);\n }\n\n const sourceNodeAdded = result.sourceNodes.find(n => n.index === link.source.index);\n if (!sourceNodeAdded) {\n result.sourceNodes.push(link.source);\n }\n\n const targetNodeAdded = result.targetNodes.find(n => n.index === link.target.index);\n if (!targetNodeAdded) {\n result.targetNodes.push(link.target);\n }\n }\n });\n return result;\n};\n\nexport const computeAllConnectedLinksToNodes = (\n nodes: SankeyDataNode[],\n links: SankeyDataLink[]\n): NodeConnectionsMap => {\n const connectionsMap: NodeConnectionsMap = {};\n if (!nodes || !links) {\n return connectionsMap;\n }\n\n nodes.forEach(node => {\n const connections = getAllConnectedLinks(links, node.index);\n connectionsMap[node.index] = connections;\n });\n\n return connectionsMap;\n};\n\nexport const checkDigitsOnly = (input: string): boolean => {\n return /^\\d+$/.test(input);\n};\n\n// Truncate the node text and show ellipsis at the end if text string width exceeds the max limit\nexport const truncateSVGTextWithEllipsis = (\n textElement: SVGTextElement,\n textString: string,\n width: number\n): void => {\n if (textElement && textElement.getSubStringLength !== undefined) {\n textElement.textContent = textString;\n // ellipsis is needed\n if (textElement.getSubStringLength(0, textString.length) >= width) {\n for (let x = textString.length - 3; x > 0; x -= 3) {\n if (textElement.getSubStringLength(0, x) <= width) {\n textElement.textContent = `${textString.substring(0, x)}...`;\n return;\n }\n }\n textElement.textContent = '...'; // can't place at all\n }\n }\n};\n","module.exports = require(\"@splunk/visualization-encoding/Options\");","module.exports = require(\"d3-interpolate\");","module.exports = require(\"d3-collection\");","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","module.exports = require(\"@splunk/visualizations-shared/style\");","import { get, isEqual } from 'lodash';\nimport { getDataSourceStateInfo, DataSourceState } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { isArrayOfColors, sanitizeArrayOfColors } from '@splunk/visualizations-shared/colorUtils';\nimport withDashboardViz, { DashboardVizOpts } from '../common/withDashboardViz';\nimport PureSankey from './PureSankey/PureSankey';\nimport config from './config';\nimport { DataSource } from '../common/interfaces/DataSource';\n\n/**\n * @method showPlaceHolderIcon\n * @param {Object} dataSources\n * @returns {Boolean} return true if loading, error, non existent state or without columns in dataSources\n */\nexport const showPlaceHolderIcon = dataSources => {\n const columns = get(dataSources, 'primary.data.columns', undefined);\n const noColumns = columns === undefined;\n const dataSourceState = getDataSourceStateInfo(dataSources);\n return (\n dataSourceState === DataSourceState.ERROR ||\n dataSourceState === DataSourceState.LOADING ||\n dataSourceState === DataSourceState.NONEXISTENT ||\n noColumns\n );\n};\n\nexport const computeVizProps = ({\n themeFunc,\n dataSources,\n linkValues,\n seriesColors,\n linkColors,\n onNodeClick,\n onLinkClick,\n}) => {\n // Compute all themeColor variables needed for PureSankey\n const themeColorVariables = [\n 'defaultBackgroundColor',\n 'nodeTextColor',\n 'tooltipRowColor',\n 'tooltipLinkHeaderColor',\n 'tooltipHeaderColor',\n ];\n const themeColors: Record<string, unknown> = {};\n themeColorVariables.forEach(variable => {\n themeColors[variable] = themeFunc(variable);\n });\n\n // Sanitize linkColors prop\n // eslint-disable-next-line no-param-reassign\n linkColors = sanitizeArrayOfColors(linkColors);\n\n // Sanitize seriesColors prop\n // (Note:- This is handled outside SanitizeProps because it would impact seriesColors option used in splunk-charting viz as the types are different.\n // The type used in splunk-charting viz expects a string of comma separated colors, but here the type is an array of string)\n // eslint-disable-next-line no-param-reassign\n seriesColors = isArrayOfColors(seriesColors) ? seriesColors : undefined;\n\n // Compute the columns props and linkValueField props for pure Sankey\n // The columns props is computed as [primary.data.columns[0], primary.data.columns[1], linkValues].\n // The source and target columns are the default as columns[0] and columns[1] respectively\n // The linkValueField props is the fieldName which is set as the source of linkValues\n const { columns, fields } = dataSources.primary.data;\n let columnsFromDataSource = [];\n let linkValueField = '';\n const fieldNames = [];\n if (\n dataSources?.primary?.data?.columns &&\n dataSources?.primary?.data?.columns?.length >= 2 &&\n Array.isArray(linkValues)\n ) {\n columnsFromDataSource = columns ? [columns[0], columns[1], linkValues] : null;\n const linkIndex = columns.findIndex(col => isEqual(col, linkValues));\n if (fields) {\n fields.forEach((field, idx) => {\n let fieldName = '';\n if (typeof field === 'object' && field !== null) {\n fieldName = field.name;\n } else {\n fieldName = field ?? '';\n }\n if (idx === linkIndex) {\n linkValueField = fieldName;\n }\n fieldNames.push(fieldName);\n });\n }\n }\n return {\n ...themeColors,\n columns,\n fields: fieldNames,\n columnsFromDataSource,\n linkValueField,\n seriesColors,\n linkColors,\n onNodeClick,\n onLinkClick,\n };\n};\n\nconst Sankey = withDashboardViz({\n ReactViz: PureSankey,\n vizConfig: config,\n computeVizProps,\n useIconPlaceholder: (dataSources: { [name: string]: DataSource }) => showPlaceHolderIcon(dataSources),\n} as DashboardVizOpts);\nconst { themes } = config;\nexport default Sankey;\nexport { themes, config, PureSankey };\n","import { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\n\nexport interface JsonColumnData {\n fields: FieldEntry[] | string[];\n columns: string[][];\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 const validSegmentationModes = ['none', 'inner'] as const;\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","module.exports = require(\"@splunk/ui-utils/i18n\");","/* 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","export enum VizCategory {\n SINGLE_VALUE = 'Single Value',\n TRENDS = 'Trends',\n COMPARISONS = 'Comparisons',\n TABLE = 'Table',\n GAUGE = 'Gauge',\n DISTRIBUTIONS = 'Distributions',\n CHOROPLETH = 'Choropleth Maps',\n SHAPES = 'Shapes',\n MISC = 'misc',\n FLOW = 'Flow',\n CORRELATION = 'Correlation',\n SPATIAL = 'Spatial',\n}\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","module.exports = require(\"@splunk/visualizations-shared/schemaUtils\");","module.exports = require(\"@babel/runtime/helpers/createClass\");","module.exports = require(\"@splunk/visualizations-shared/SizeAwareWrapper\");","import { get, range } from 'lodash';\nimport { DYNAMIC_OPTIONS_DSL_PATTERN } from '@splunk/visualizations-shared/schemaUtils';\nimport type { JSONSchema7Definition } from 'json-schema';\nimport { isDynamicOption } from '@splunk/visualizations-shared/configUtils';\nimport { VizBehavior } from '../interfaces/VizBehavior';\nimport { VizConfig } from '../interfaces/VizConfig';\nimport { OptionsSchema } from '../interfaces/OptionsSchema';\nimport { EditorLayoutConfig, EditorConfig } from '../interfaces/Editor';\n\nexport interface PresetEntry {\n name: string;\n value: any;\n label: string;\n}\n\nconst dynamicOptionsDSLType = {\n type: 'string',\n pattern: DYNAMIC_OPTIONS_DSL_PATTERN,\n} as const;\n\n/**\n * Helper function to extend an options schema with dynamic options DSL\n * @param optionsSchema a visualization's options schema\n * @returns an updated options schema that additionally allows strings starting with > for each option\n */\nfunction enhanceOptionsSchemaWithDynamicOptions(\n optionsSchema: OptionsSchema | JSONSchema7Definition\n): OptionsSchema {\n const enhancedOptionsSchema: OptionsSchema = {};\n Object.keys(optionsSchema).forEach((key): void => {\n const {\n // The next a few are schema annotations, we should leave them as is.\n // Note: in reality we don't use `readOnly`, `writeOnly` or `examples`, but they are listed here for completeness.\n // Ref: https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-validation-01\n title,\n description,\n readOnly,\n writeOnly,\n examples,\n default: defaultValue,\n // The next a few need special care\n type,\n properties,\n patternProperties,\n // The rest should be handled together\n ...remainingSchemaEntry\n } = optionsSchema[key];\n\n const annotations = {\n ...(title !== undefined && { title }),\n ...(description !== undefined && { description }),\n ...(readOnly !== undefined && { readOnly }),\n ...(writeOnly !== undefined && { writeOnly }),\n ...(examples !== undefined && { examples }),\n ...(defaultValue !== undefined && { default: defaultValue }),\n };\n\n if (type === 'object') {\n enhancedOptionsSchema[key] = {\n ...remainingSchemaEntry,\n ...annotations,\n type,\n ...(properties && { properties: enhanceOptionsSchemaWithDynamicOptions(properties) }),\n };\n if (patternProperties) {\n let enhancedPatternProperties = {};\n Object.keys(patternProperties).forEach((opt): void => {\n enhancedPatternProperties = {\n ...enhancedPatternProperties,\n ...enhanceOptionsSchemaWithDynamicOptions({ [opt]: patternProperties[opt] }),\n };\n });\n enhancedOptionsSchema[key].patternProperties = enhancedPatternProperties;\n }\n } else {\n enhancedOptionsSchema[key] = {\n ...annotations,\n anyOf: [\n // we can't assume `type` is always there because there are `enum` and `const`.\n { ...(type !== undefined && { type }), ...remainingSchemaEntry },\n dynamicOptionsDSLType,\n ],\n };\n }\n });\n return enhancedOptionsSchema;\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 if (vizConfig.supports.indexOf(VizBehavior.DYNAMIC_OPTIONS) !== -1) {\n enhancedConfig.optionsSchema = enhanceOptionsSchemaWithDynamicOptions(vizConfig.optionsSchema);\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\nfunction isDynamicOption(option?: string): boolean {\n return (option && typeof option === 'string' && option.trim().startsWith('>')) || false;\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 {\n enhanceConfig,\n enhanceOptionsSchemaWithDynamicOptions,\n getInitialPreset,\n generatePrecisionValues,\n uncollapseEditorConfig,\n isDynamicOption,\n};\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","module.exports = require(\"@splunk/visualization-context/FeatureFlagContext\");","module.exports = require(\"@splunk/visualizations-shared/configUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"@splunk/ui-utils/id\");","module.exports = require(\"@splunk/visualization-context/TimezoneContext\");","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","module.exports = require(\"@splunk/visualizations-shared/hocUtils\");","module.exports = require(\"@splunk/visualizations-shared/JSONSchemaUtils\");","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.ComponentClass<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 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","module.exports = require(\"styled-components\");","export * from './DashboardVizProps';\nexport * from './DataContract';\nexport * from './DataSource';\nexport * from './DefaultContext';\nexport * from './Editor';\nexport * from './ExtendedDashViz';\nexport * from './Object';\nexport * from './OptionsSchema';\nexport * from './Overview';\nexport * from './ThemedDefaults';\nexport * from './VizActionHandler';\nexport * from './VizBehavior';\nexport * from './VizCategory';\nexport * from './VizConfig';\nexport * from './VizEvent';\nexport * from './VizProps';\nexport * from './VizRegistry';\nexport * from './VizSize';\nexport * from './VizStatus';\n","/**\n * A data structure used at runtime to wire up a visualization.\n */\n\ninterface InitialRequestParams {\n [key: string]: Record<string, unknown> | ((options?: Record<string, unknown>) => Record<string, unknown>);\n}\nexport interface DataContract {\n requiredDataSources: {\n name: string;\n description: string;\n }[];\n optionalDataSources?: {\n name: string;\n description: string;\n }[];\n initialRequestParams: InitialRequestParams; // TODO define better than object?\n}\n","export * from './Sankey';\nexport { default } from './Sankey';\n","// reference link :- https://github.com/csaladenes/sankey\n/* eslint-disable */\nimport { interpolateNumber as d3interpolateNumber } from 'd3-interpolate';\nimport { sum as d3sum, min as d3min, ascending as d3ascending } from 'd3-array';\nimport { nest as d3nest } from 'd3-collection';\n\nexport const d3_sankey = function () {\n var sankey = {},\n nodeWidth = 24,\n nodePadding = 8,\n size = [1, 1],\n nodes = [],\n links = [],\n components = [];\n\n sankey.nodeWidth = function (_) {\n if (!arguments.length) return nodeWidth;\n nodeWidth = +_;\n return sankey;\n };\n\n sankey.nodePadding = function (_) {\n if (!arguments.length) return nodePadding;\n nodePadding = +_;\n return sankey;\n };\n\n sankey.nodes = function (_) {\n if (!arguments.length) return nodes;\n nodes = _;\n return sankey;\n };\n\n sankey.links = function (_) {\n if (!arguments.length) return links;\n links = _;\n return sankey;\n };\n\n sankey.size = function (_) {\n if (!arguments.length) return size;\n size = _;\n return sankey;\n };\n\n sankey.layout = function (iterations) {\n computeNodeLinks();\n computeNodeValues();\n\n computeNodeStructure();\n computeNodeBreadths();\n\n computeNodeDepths(iterations);\n computeLinkDepths();\n\n return sankey;\n };\n\n sankey.relayout = function () {\n computeLinkDepths();\n return sankey;\n };\n\n // A more involved path generator that requires 3 elements to render --\n // It draws a starting element, intermediate and end element that are useful\n // while drawing reverse links to get an appropriate fill.\n //\n // Each link is now an area and not a basic spline and no longer guarantees\n // fixed width throughout.\n //\n // Sample usage:\n //\n // linkNodes = this._svg.append(\"g\").selectAll(\".link\")\n // .data(this.links)\n // .enter().append(\"g\")\n // .attr(\"fill\", \"none\")\n // .attr(\"class\", \".link\")\n // .sort(function(a, b) { return b.dy - a.dy; });\n //\n // linkNodePieces = [];\n // for (var i = 0; i < 3; i++) {\n // linkNodePieces[i] = linkNodes.append(\"path\")\n // .attr(\"class\", \".linkPiece\")\n // .attr(\"d\", path(i))\n // .attr(\"fill\", ...)\n // }\n sankey.reversibleLink = function () {\n var curvature = 0.5;\n\n // Used when source is behind target, the first and last paths are simple\n // lines at the start and end node while the second path is the spline\n function forwardLink(part, d) {\n var x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = d3interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy,\n y1 = d.target.y + d.ty,\n y2 = d.source.y + d.sy + d.dy,\n y3 = d.target.y + d.ty + d.dy;\n\n switch (part) {\n case 0:\n return 'M' + x0 + ',' + y0 + 'L' + x0 + ',' + (y0 + d.dy);\n\n case 1:\n return (\n 'M' +\n x0 +\n ',' +\n y0 +\n 'C' +\n x2 +\n ',' +\n y0 +\n ' ' +\n x3 +\n ',' +\n y1 +\n ' ' +\n x1 +\n ',' +\n y1 +\n 'L' +\n x1 +\n ',' +\n y3 +\n 'C' +\n x3 +\n ',' +\n y3 +\n ' ' +\n x2 +\n ',' +\n y2 +\n ' ' +\n x0 +\n ',' +\n y2 +\n 'Z'\n );\n\n case 2:\n return 'M' + x1 + ',' + y1 + 'L' + x1 + ',' + (y1 + d.dy);\n }\n }\n\n // Used for self loops and when the source is actually in front of the\n // target; the first element is a turning path from the source to the\n // destination, the second element connects the two twists and the last\n // twists into the target element.\n //\n //\n // /--Target\n // \\----------------------\\\n // Source--/\n //\n function backwardLink(part, d) {\n var curveExtension = 30;\n var curveDepth = 15;\n\n function getDir(d) {\n return d.source.y + d.sy > d.target.y + d.ty ? -1 : 1;\n }\n\n function p(x, y) {\n return x + ',' + y + ' ';\n }\n\n var dt = getDir(d) * curveDepth,\n x0 = d.source.x + d.source.dx,\n y0 = d.source.y + d.sy,\n x1 = d.target.x,\n y1 = d.target.y + d.ty;\n\n switch (part) {\n case 0:\n return (\n 'M' +\n p(x0, y0) +\n 'C' +\n p(x0, y0) +\n p(x0 + curveExtension, y0) +\n p(x0 + curveExtension, y0 + dt) +\n 'L' +\n p(x0 + curveExtension, y0 + dt + d.dy) +\n 'C' +\n p(x0 + curveExtension, y0 + d.dy) +\n p(x0, y0 + d.dy) +\n p(x0, y0 + d.dy) +\n 'Z'\n );\n case 1:\n return (\n 'M' +\n p(x0 + curveExtension, y0 + dt) +\n 'C' +\n p(x0 + curveExtension, y0 + 3 * dt) +\n p(x1 - curveExtension, y1 - 3 * dt) +\n p(x1 - curveExtension, y1 - dt) +\n 'L' +\n p(x1 - curveExtension, y1 - dt + d.dy) +\n 'C' +\n p(x1 - curveExtension, y1 - 3 * dt + d.dy) +\n p(x0 + curveExtension, y0 + 3 * dt + d.dy) +\n p(x0 + curveExtension, y0 + dt + d.dy) +\n 'Z'\n );\n\n case 2:\n return (\n 'M' +\n p(x1 - curveExtension, y1 - dt) +\n 'C' +\n p(x1 - curveExtension, y1) +\n p(x1, y1) +\n p(x1, y1) +\n 'L' +\n p(x1, y1 + d.dy) +\n 'C' +\n p(x1, y1 + d.dy) +\n p(x1 - curveExtension, y1 + d.dy) +\n p(x1 - curveExtension, y1 + d.dy - dt) +\n 'Z'\n );\n }\n }\n\n return function (part) {\n return function (d) {\n if (d.source.x < d.target.x) {\n return forwardLink(part, d);\n } else {\n return backwardLink(part, d);\n }\n };\n };\n };\n\n // The standard link path using a constant width spline that needs a\n // single path element.\n sankey.link = function () {\n var curvature = 0.5;\n\n function link(d) {\n var x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = d3interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy + d.dy / 2,\n y1 = d.target.y + d.ty + d.dy / 2;\n return 'M' + x0 + ',' + y0 + 'C' + x2 + ',' + y0 + ' ' + x3 + ',' + y1 + ' ' + x1 + ',' + y1;\n }\n\n link.curvature = function (_) {\n if (!arguments.length) return curvature;\n curvature = +_;\n return link;\n };\n\n return link;\n };\n\n // Populate the sourceLinks and targetLinks for each node.\n // Also, if the source and target are not objects, assume they are indices.\n function computeNodeLinks() {\n nodes.forEach(function (node) {\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n\n links.forEach(function (link) {\n var source = link.source,\n target = link.target;\n if (typeof source === 'number') source = link.source = nodes[link.source];\n if (typeof target === 'number') target = link.target = nodes[link.target];\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n });\n }\n\n // Compute the value (size) of each node by summing the associated links.\n function computeNodeValues() {\n nodes.forEach(function (node) {\n if (!node.value)\n //if not already given\n node.value = Math.max(d3sum(node.sourceLinks, value), d3sum(node.targetLinks, value));\n });\n }\n\n // Take the list of nodes and create a DAG of supervertices, each consisting\n // of a strongly connected component of the graph\n //\n // Based off:\n // http://en.wikipedia.org/wiki/Tarjan's_strongly_connected_components_algorithm\n function computeNodeStructure() {\n var nodeStack = [],\n index = 0;\n\n nodes.forEach(function (node) {\n if (!node.index) {\n connect(node);\n }\n });\n\n function connect(node) {\n node.index = index++;\n node.lowIndex = node.index;\n node.onStack = true;\n nodeStack.push(node);\n\n if (node.sourceLinks) {\n node.sourceLinks.forEach(function (sourceLink) {\n var target = sourceLink.target;\n if (!target.hasOwnProperty('index')) {\n connect(target);\n node.lowIndex = Math.min(node.lowIndex, target.lowIndex);\n } else if (target.onStack) {\n node.lowIndex = Math.min(node.lowIndex, target.index);\n }\n });\n\n if (node.lowIndex === node.index) {\n var component = [],\n currentNode;\n do {\n currentNode = nodeStack.pop();\n currentNode.onStack = false;\n component.push(currentNode);\n } while (currentNode != node);\n components.push({\n root: node,\n scc: component,\n });\n }\n }\n }\n\n components.forEach(function (component, i) {\n component.index = i;\n component.scc.forEach(function (node) {\n node.component = i;\n });\n });\n }\n\n // Assign the breadth (x-position) for each strongly connected component,\n // followed by assigning breadth within the component.\n function computeNodeBreadths() {\n layerComponents();\n\n components.forEach(function (component, i) {\n bfs(component.root, function (node) {\n var result = node.sourceLinks\n .filter(function (sourceLink) {\n return sourceLink.target.component == i;\n })\n .map(function (sourceLink) {\n return sourceLink.target;\n });\n return result;\n });\n });\n\n var max = 0;\n var componentsByBreadth = d3nest()\n .key(function (d) {\n return d.x;\n })\n .sortKeys(d3ascending)\n .entries(components)\n .map(function (d) {\n return d.values;\n });\n\n var max = -1,\n nextMax = -1;\n componentsByBreadth.forEach(function (c) {\n c.forEach(function (component) {\n component.x = max + 1;\n component.scc.forEach(function (node) {\n if (node.layer) node.x = node.layer;\n else node.x = component.x + node.x;\n nextMax = Math.max(nextMax, node.x);\n });\n });\n max = nextMax;\n });\n\n nodes\n .filter(function (node) {\n var outLinks = node.sourceLinks.filter(function (link) {\n return link.source.name != link.target.name;\n });\n return outLinks.length == 0;\n })\n .forEach(function (node) {\n node.x = node.layer ? node.x : max;\n });\n\n scaleNodeBreadths((size[0] - nodeWidth) / Math.max(max, 1));\n\n function flatten(a) {\n return [].concat.apply([], a);\n }\n\n function layerComponents() {\n var remainingComponents = components,\n nextComponents,\n visitedIndex,\n x = 0;\n\n while (remainingComponents.length) {\n nextComponents = [];\n visitedIndex = {};\n\n remainingComponents.forEach(function (component) {\n component.x = x;\n\n component.scc.forEach(function (n) {\n n.sourceLinks.forEach(function (l) {\n if (\n !visitedIndex.hasOwnProperty(l.target.component) &&\n l.target.component != component.index\n ) {\n nextComponents.push(components[l.target.component]);\n visitedIndex[l.target.component] = true;\n }\n });\n });\n });\n\n remainingComponents = nextComponents;\n ++x;\n }\n }\n\n function bfs(node, extractTargets) {\n var queue = [node],\n currentCount = 1,\n nextCount = 0;\n var x = 0;\n\n while (currentCount > 0) {\n var currentNode = queue.shift();\n currentCount--;\n\n if (!currentNode.hasOwnProperty('x')) {\n currentNode.x = x;\n currentNode.dx = nodeWidth;\n\n var targets = extractTargets(currentNode);\n\n queue = queue.concat(targets);\n nextCount += targets.length;\n }\n\n if (currentCount == 0) {\n // level change\n x++;\n currentCount = nextCount;\n nextCount = 0;\n }\n }\n }\n\n //extra code for fixed layout - x part\n /*\n if (fixedlayout && fixedlayout.length > 0) {\n sankey.nodes().forEach(function (d, i) {\n d.x = fixedlayout[i][0];\n });\n }\n */\n }\n\n function moveSourcesRight() {\n nodes.forEach(function (node) {\n if (!node.targetLinks.length) {\n node.x =\n d3min(node.sourceLinks, function (d) {\n return d.target.x;\n }) - 1;\n }\n });\n }\n\n function moveSinksRight(x) {\n nodes.forEach(function (node) {\n if (!node.sourceLinks.length) {\n node.x = x - 1;\n }\n });\n }\n\n function scaleNodeBreadths(kx) {\n nodes.forEach(function (node) {\n node.x *= kx;\n });\n }\n\n function computeNodeDepths(iterations) {\n var nodesByBreadth = d3nest()\n .key(function (d) {\n return d.x;\n })\n .sortKeys(d3ascending)\n .entries(nodes)\n .map(function (d) {\n return d.values;\n });\n\n initializeNodeDepth();\n resolveCollisions();\n\n for (var alpha = 1; iterations > 0; --iterations) {\n relaxRightToLeft((alpha *= 0.99));\n resolveCollisions();\n relaxLeftToRight(alpha);\n resolveCollisions();\n }\n\n function initializeNodeDepth() {\n var ky = d3min(nodesByBreadth, function (nodes) {\n return (size[1] - (nodes.length - 1) * nodePadding) / d3sum(nodes, value);\n });\n\n nodesByBreadth.forEach(function (nodes) {\n nodes.forEach(function (node, i) {\n node.y = i;\n node.dy = node.value * ky;\n });\n });\n\n links.forEach(function (link) {\n link.dy = link.value * ky;\n });\n }\n\n function relaxLeftToRight(alpha) {\n nodesByBreadth.forEach(function (nodes, breadth) {\n nodes.forEach(function (node) {\n if (node.targetLinks.length) {\n var y = d3sum(node.targetLinks, weightedSource) / d3sum(node.targetLinks, value);\n node.y += (y - center(node)) * alpha;\n }\n });\n });\n\n function weightedSource(link) {\n return center(link.source) * link.value;\n }\n }\n\n function relaxRightToLeft(alpha) {\n nodesByBreadth\n .slice()\n .reverse()\n .forEach(function (nodes) {\n nodes.forEach(function (node) {\n if (node.sourceLinks.length) {\n var y = d3sum(node.sourceLinks, weightedTarget) / d3sum(node.sourceLinks, value);\n node.y += (y - center(node)) * alpha;\n }\n });\n });\n\n function weightedTarget(link) {\n return center(link.target) * link.value;\n }\n }\n\n function resolveCollisions() {\n nodesByBreadth.forEach(function (nodes) {\n var node,\n dy,\n y0 = 0,\n n = nodes.length,\n i;\n\n // Push any overlapping nodes down.\n nodes.sort(ascendingDepth);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node) {\n dy = y0 - node.y;\n if (dy > 0) node.y += dy;\n y0 = node.y + node.dy + nodePadding;\n }\n }\n\n // If the bottommost node goes outside the bounds, push it back up.\n dy = y0 - nodePadding - size[1];\n if (node && dy > 0) {\n y0 = node.y -= dy;\n\n // Push any overlapping nodes back up.\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.y + node.dy + nodePadding - y0;\n if (dy > 0) node.y -= dy;\n y0 = node.y;\n }\n }\n });\n }\n\n function ascendingDepth(a, b) {\n return a.y - b.y;\n }\n\n //extra code for fixed layout - y part\n /*\n if (fixedlayout.length > 0) {\n sankey.nodes().forEach(function (d, i) {\n d.y = fixedlayout[i][1];\n });\n }\n */\n }\n\n function computeLinkDepths() {\n nodes.forEach(function (node) {\n const parallelrendering = false;\n if (parallelrendering) {\n } else node.sourceLinks.sort(ascendingTargetDepth);\n node.targetLinks.sort(ascendingSourceDepth);\n });\n nodes.forEach(function (node) {\n var sy = 0,\n ty = 0;\n node.sourceLinks.forEach(function (link) {\n link.sy = sy;\n sy += link.dy;\n });\n node.targetLinks.forEach(function (link) {\n link.ty = ty;\n ty += link.dy;\n });\n });\n\n function ascendingSourceDepth(a, b) {\n return a.source.y - b.source.y;\n }\n\n function ascendingTargetDepth(a, b) {\n return a.target.y - b.target.y;\n }\n }\n\n function center(node) {\n return node.y + node.dy / 2;\n }\n\n function value(link) {\n return link.value;\n }\n\n return sankey;\n};\n","import * as React from 'react';\nimport * as T from 'prop-types';\nimport { ScaleOrdinal } from 'd3-scale';\nimport styled from 'styled-components';\nimport { useRef, useEffect, useCallback } from 'react';\nimport {\n DEFAULT_FONT_FAMILY,\n DEFAULT_NODE_COLOR,\n DEFAULT_NODE_OPACITY,\n INACTIVE_OPACITY,\n} from './PureSankey';\nimport { SankeyDataNode } from './SankeyModels';\n\nimport { truncateSVGTextWithEllipsis } from './SankeyUtils';\n\nconst MAX_NODE_TEXT_WIDTH = 150;\nexport interface SankeyNodeProps {\n node: SankeyDataNode;\n activeNodes: SankeyDataNode[];\n nodeWidth: number;\n chartWidth: number;\n handleMouseOver: (...args: any[]) => void;\n handleMouseLeave: (...args: any[]) => void;\n handleNodeClick: (node: SankeyDataNode) => void;\n nodeTextColor: string;\n colorCategoryMapping: ScaleOrdinal<string, unknown, string> | string[];\n}\n\nconst getNodeOpacity = (nodeIndex: number, activeNodes: SankeyDataNode[]): number => {\n if (!activeNodes || !activeNodes.length) {\n return DEFAULT_NODE_OPACITY;\n }\n const isActiveNode = activeNodes.find(node => node.index === nodeIndex);\n return isActiveNode ? DEFAULT_NODE_OPACITY : INACTIVE_OPACITY;\n};\n\nconst getNodeHeight = (node): number => {\n return node.dy < 0 ? 1 : node.dy;\n};\n\nconst NodeGroup = styled.g<{ node: SankeyDataNode; activeNodes: SankeyDataNode[] }>`\n opacity: ${props => getNodeOpacity(props.node.index, props.activeNodes)};\n &:hover {\n cursor: pointer;\n }\n`;\nNodeGroup.displayName = 'NodeGroup';\n\nconst NodeRect = styled.rect<{\n node: SankeyDataNode;\n colorCategoryMapping: any;\n}>`\n fill: ${props =>\n typeof props.colorCategoryMapping === 'function'\n ? props.colorCategoryMapping(props.node.name)\n : DEFAULT_NODE_COLOR};\n`;\n\nconst NodeText = styled.text<{ node: SankeyDataNode; chartWidth: number; nodeTextColor: string }>`\n text-anchor: ${props => (props.node.x < props.chartWidth / 2 ? 'start' : 'end')};\n font-size: 12px;\n font-family: ${DEFAULT_FONT_FAMILY};\n letter-spacing: 0.02em;\n fill: ${props => props.nodeTextColor};\n`;\nconst SankeyNode = (props: SankeyNodeProps) => {\n const {\n node,\n activeNodes,\n nodeWidth,\n chartWidth,\n handleMouseOver,\n handleMouseLeave,\n handleNodeClick,\n colorCategoryMapping,\n nodeTextColor,\n } = props;\n\n const nodeTextRef = useRef();\n\n useEffect(() => {\n truncateSVGTextWithEllipsis(nodeTextRef.current, node.name, MAX_NODE_TEXT_WIDTH);\n });\n\n const nodeClickHandler = useCallback(() => handleNodeClick(node), [node]);\n\n return (\n <NodeGroup\n node={node}\n activeNodes={activeNodes}\n className=\"node\"\n key={`node-${node.index}`}\n data-test={`node-${node.index}`}\n transform={`translate(${node.x},${node.y})`}\n onClick={nodeClickHandler}\n >\n <React.Fragment>\n <NodeRect\n node={node}\n height={getNodeHeight(node)}\n width={nodeWidth}\n colorCategoryMapping={colorCategoryMapping}\n onMouseOver={ev => handleMouseOver(ev)}\n onMouseLeave={ev => handleMouseLeave(ev)}\n />\n <NodeText\n ref={nodeTextRef}\n node={node}\n chartWidth={chartWidth}\n x={node.x < (chartWidth as number) / 2 ? 6 + nodeWidth : -6}\n y={node.dy / 2}\n dy=\".35em\"\n nodeTextColor={nodeTextColor}\n >\n {node.name}\n </NodeText>\n </React.Fragment>\n </NodeGroup>\n );\n};\n\nSankeyNode.propTypes = {\n node: T.object,\n activeNodes: T.arrayOf(T.object),\n nodeWidth: T.number,\n chartWidth: T.number,\n handleMouseOver: T.func,\n handleMouseLeave: T.func,\n colorCategoryMapping: T.oneOfType([T.func, T.arrayOf(T.string)]),\n nodeTextColor: T.string,\n};\n\nSankeyNode.defaultProps = {\n handleMouseOver: () => {},\n handleMouseLeave: () => {},\n};\n\nexport default SankeyNode;\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport * as T from 'prop-types';\nimport { ScaleOrdinal } from 'd3-scale';\nimport styled from 'styled-components';\nimport { DEFAULT_LINK_COLOR, INACTIVE_OPACITY } from './PureSankey';\nimport { COLOR_MODE_TYPES, SankeyDataLink } from './SankeyModels';\nimport { extractLinkMidPoint } from './SankeyUtils';\n\nexport interface SankeyLinkProps {\n link: SankeyDataLink;\n activeLinks: SankeyDataLink[];\n linkOpacity: number;\n colorMode: COLOR_MODE_TYPES;\n handleMouseOver: (...args: any[]) => void;\n handleMouseLeave: (...args: any[]) => void;\n handleLinkClick: (link: SankeyDataLink) => void;\n colorCategoryMapping: ScaleOrdinal<string, unknown, string> | string[];\n path: (a: number) => (link: SankeyDataLink) => string;\n}\n\nconst getLinkFill = (link, colorCategoryMapping, colorMode) => {\n if (colorMode === 'categorical') {\n return colorCategoryMapping ? colorCategoryMapping(link.source.name) : DEFAULT_LINK_COLOR;\n }\n return colorCategoryMapping && colorCategoryMapping[link.index]\n ? colorCategoryMapping[link.index]\n : DEFAULT_LINK_COLOR;\n};\n\nconst getLinkOpacity = (link: SankeyDataLink, activeLinks: SankeyDataLink[], linkOpacity: number) => {\n if (!activeLinks || !activeLinks.length) {\n return linkOpacity;\n }\n const isActiveLink = activeLinks.find(l => l.id === link.id);\n return isActiveLink ? linkOpacity : INACTIVE_OPACITY;\n};\n\nconst StyledSankeyLink = styled.g`\n &:hover {\n cursor: pointer;\n }\n`;\n\nconst SankeyLink = (props: SankeyLinkProps): React.ReactElement => {\n const {\n link,\n colorCategoryMapping,\n activeLinks,\n linkOpacity,\n colorMode,\n path,\n handleMouseOver,\n handleMouseLeave,\n handleLinkClick,\n } = props;\n // This is to draw an invisible circle added to the link's path midpoint,\n // which acts as an anchor for the link tooltip\n const circlePoints = extractLinkMidPoint(path(1)(link));\n const linkClickHandler = useCallback(() => handleLinkClick(link), [link]);\n return (\n <StyledSankeyLink\n className=\"link\"\n key={link.id}\n id={link.id}\n data-test={link.id}\n fill={getLinkFill(link, colorCategoryMapping, colorMode)}\n opacity={getLinkOpacity(link, activeLinks, linkOpacity)}\n onClick={linkClickHandler}\n onMouseOver={ev => {\n handleMouseOver(ev);\n }}\n onMouseLeave={ev => {\n const relatedTarget = ev.relatedTarget as HTMLElement;\n let isRelatedTargetPopover = false;\n // This is to verify if the mouseLeave is being triggered because of mouseover on a the popover itself.\n // In that case the relatedTarget will have the popover elements and this logic will check on the class name used.\n // If detects the relatedTarget is a popover, then mouseLeave event handler wont be triggered.\n if (relatedTarget && relatedTarget.classList) {\n const { classList } = relatedTarget;\n classList.forEach(name => {\n if (\n name.toLocaleLowerCase().indexOf('sankeytooltip') > -1 ||\n name.toLocaleLowerCase().indexOf('popoverstyles') > -1\n ) {\n isRelatedTargetPopover = true;\n }\n });\n }\n if (!isRelatedTargetPopover) {\n handleMouseLeave(ev);\n }\n }}\n >\n <path d={path(0)(link)} />\n <path d={path(1)(link)} />\n <path d={path(2)(link)} />\n {circlePoints && <circle cx={circlePoints.x} cy={circlePoints.y} r={5} fill=\"transparent\" />}\n </StyledSankeyLink>\n );\n};\n\nSankeyLink.propTypes = {\n link: T.object,\n activeLinks: T.arrayOf(T.object),\n linkOpacity: T.number,\n path: T.func,\n handleMouseOver: T.func,\n handleMouseLeave: T.func,\n colorCategoryMapping: T.oneOfType([T.func, T.arrayOf(T.string)]),\n};\n\nSankeyLink.defaultProps = {\n handleMouseOver: () => {},\n handleMouseLeave: () => {},\n};\n\nexport default SankeyLink;\n","import * as React from 'react';\nimport * as T from 'prop-types';\nimport { ScaleOrdinal } from 'd3-scale';\nimport Popover from '@splunk/react-ui/Popover';\nimport styled from 'styled-components';\nimport { formatNumber } from '@splunk/visualizations-shared/numberUtils';\nimport { DEFAULT_NODE_COLOR } from './PureSankey';\nimport { Connections, NodeConnectionsMap, SankeyDataLink, SankeyDataNode } from './SankeyModels';\n\nconst DEFAULT_PLACEMENT = 'below';\n\nexport interface SankeyTooltipProps {\n mode: 'node' | 'link';\n node?: SankeyDataNode;\n link?: SankeyDataLink;\n linkValue: string;\n open: boolean;\n connectionsMap: NodeConnectionsMap;\n anchor?: any;\n colorCategoryMapping: ScaleOrdinal<string, unknown, string> | string[];\n width: number;\n height: number;\n tooltipRowColor: string;\n tooltipLinkHeaderColor: string;\n tooltipHeaderColor: string;\n handleTooltipRequestClose: (...args: any[]) => void;\n}\n\nconst StyledTooltipContainer = styled.div`\n display: flex;\n min-width: 200px;\n max-width: 300px;\n padding: 16px;\n flex-direction: column;\n`;\n\nconst StyledTooltipSection = styled.div`\n display: flex;\n flex-direction: column;\n > div:nth-child(1) {\n margin-top: 8px;\n }\n > div:last-child {\n margin-bottom: 8px;\n }\n`;\n\nconst StyledTooltipHeader = styled.div<{ headerColor: string }>`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 14px;\n color: ${props => props.headerColor};\n`;\n\nconst StyledTooltipLinkHeader = styled.div<{ linkHeaderColor: string }>`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 14px;\n margin-bottom: 8px;\n color: ${props => props.linkHeaderColor};\n`;\n\nconst StyledTooltipRow = styled.div<{ rowColor: string }>`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 12px;\n color: ${props => props.rowColor};\n margin-bottom: 6px;\n`;\n\nconst StyledTooltipLeftCell = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n`;\n\nconst StyledTooltipRightCell = styled.div`\n margin-left: 5px;\n`;\n\nconst ColorTile = styled.div<{ node: SankeyDataNode; colorCategoryMapping: any }>`\n width: 6px;\n height: 16px;\n background-color: ${props =>\n typeof props.colorCategoryMapping === 'function'\n ? props.colorCategoryMapping(props.node.name)\n : DEFAULT_NODE_COLOR};}\n`;\n\nconst NodeValue = styled.div`\n margin-left: 8px;\n max-width: 200px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\n\nconst SankeyTooltip = (props: SankeyTooltipProps): React.ReactElement => {\n const {\n mode,\n node,\n link,\n open,\n connectionsMap,\n anchor,\n linkValue,\n colorCategoryMapping,\n width,\n tooltipRowColor,\n tooltipLinkHeaderColor,\n tooltipHeaderColor,\n handleTooltipRequestClose,\n } = props;\n\n const showSection = (\n connection: Connections,\n nodeData: SankeyDataNode,\n section: 'source' | 'target'\n ): boolean => {\n if (!connection) {\n return false;\n }\n const connectionNodes = section === 'source' ? connection.sourceNodes : connection.targetNodes;\n const filteredNodes = connectionNodes.filter(cNode => cNode.index !== nodeData.index);\n return filteredNodes.length > 0;\n };\n\n const getPopoverPlacement = (anchorElement): 'above' | 'below' | 'left' | 'right' => {\n if (!anchorElement) {\n return DEFAULT_PLACEMENT;\n }\n const bBox = anchorElement.getBoundingClientRect();\n\n // TODO: Depending on the testing result in dashboard reg tooltip position, might need further optimization\n // If anchorElement is too close to the left border of the chart, place it to the right side of anchorElement\n if (bBox.x <= 15) {\n return 'right';\n }\n if (bBox.x >= width - 15) {\n // If anchorElement is too close to the right border of the chart, place it to the right side of anchorElement\n return 'left';\n }\n\n return DEFAULT_PLACEMENT;\n };\n\n const renderNodeToolTip = () => {\n if (!node) {\n return null;\n }\n const connections = connectionsMap[node.index];\n return (\n <Popover\n open={open}\n anchor={anchor}\n onRequestClose={() => handleTooltipRequestClose()}\n defaultPlacement={getPopoverPlacement(anchor)}\n >\n <StyledTooltipContainer className=\"sankeyToolTip\">\n <StyledTooltipRow rowColor={tooltipRowColor} data-test=\"main-row\">\n <StyledTooltipLeftCell data-test=\"main-row-name\">\n <ColorTile node={node} colorCategoryMapping={colorCategoryMapping} />\n <NodeValue>{node?.name}</NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"main-row-value\">\n {formatNumber(node?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n {showSection(connections, node, 'source') && (\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Source</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n )}\n <StyledTooltipSection>\n {connections &&\n connections.sourceNodes.map((sNode, idx) => {\n if (\n sNode?.index !== node?.index ||\n connections.sourceNodes[idx]?.index ===\n connections.targetNodes[idx]?.index\n ) {\n return (\n <StyledTooltipRow\n key={sNode.index}\n rowColor={tooltipRowColor}\n data-test=\"source-row\"\n >\n <StyledTooltipLeftCell>\n <ColorTile\n node={sNode}\n colorCategoryMapping={colorCategoryMapping}\n />\n <NodeValue data-test=\"source-row-name\">\n {sNode?.name}\n </NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"source-row-value\">\n {formatNumber(sNode?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n );\n }\n return null;\n })}\n </StyledTooltipSection>\n {showSection(connections, node, 'target') && (\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Target</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n )}\n <StyledTooltipSection>\n {connections &&\n connections.targetNodes.map((tNode, idx) => {\n if (\n tNode?.index !== node?.index ||\n connections.sourceNodes[idx]?.index ===\n connections.targetNodes[idx]?.index\n ) {\n return (\n <StyledTooltipRow\n key={tNode.index}\n rowColor={tooltipRowColor}\n data-test=\"target-row\"\n >\n <StyledTooltipLeftCell>\n <ColorTile\n node={tNode}\n colorCategoryMapping={colorCategoryMapping}\n />\n <NodeValue data-test=\"target-row-name\">\n {tNode?.name}\n </NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"target-row-value\">\n {formatNumber(tNode?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n );\n }\n return null;\n })}\n </StyledTooltipSection>\n </StyledTooltipContainer>\n </Popover>\n );\n };\n\n const renderLinkToolTip = () => {\n if (!link) {\n return null;\n }\n return (\n <Popover open={open} anchor={anchor} onRequestClose={() => handleTooltipRequestClose()}>\n <StyledTooltipContainer className=\"sankeyToolTip\">\n <StyledTooltipLinkHeader linkHeaderColor={tooltipLinkHeaderColor} data-test=\"main-row\">\n <StyledTooltipLeftCell data-test=\"main-row-name\">Link Size</StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"main-row-value\">\n {formatNumber(link?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipLinkHeader>\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Source</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n <StyledTooltipSection>\n <StyledTooltipRow rowColor={tooltipRowColor} data-test=\"source-row\">\n <StyledTooltipLeftCell>\n <ColorTile node={link?.source} colorCategoryMapping={colorCategoryMapping} />\n <NodeValue data-test=\"source-row-name\">{link?.source?.name}</NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"source-row-value\">\n {formatNumber(link?.source?.value, 0, { useTrendUnits: true })}{' '}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n </StyledTooltipSection>\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Target</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n <StyledTooltipSection>\n <StyledTooltipRow rowColor={tooltipRowColor} data-test=\"target-row\">\n <StyledTooltipLeftCell>\n <ColorTile node={link?.target} colorCategoryMapping={colorCategoryMapping} />\n <NodeValue data-test=\"target-row-name\">{link?.target?.name}</NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"target-row-value\">\n {formatNumber(link?.target?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n </StyledTooltipSection>\n </StyledTooltipContainer>\n </Popover>\n );\n };\n\n return mode === 'node' ? renderNodeToolTip() : renderLinkToolTip();\n};\n\nSankeyTooltip.propTypes = {\n mode: T.string,\n node: T.object,\n linkValue: T.string,\n open: T.bool,\n connectionsMap: T.object,\n anchor: T.object,\n colorCategoryMapping: T.oneOfType([T.func, T.arrayOf(T.string)]),\n tooltipRowColor: T.string,\n tooltipLinkHeaderColor: T.string,\n tooltipHeaderColor: T.string,\n width: T.number,\n height: T.number,\n handleTooltipRequestClose: T.func,\n};\n\nSankeyTooltip.defaultProps = {\n handleTooltipRequestClose: () => {},\n};\n\nexport default SankeyTooltip;\n","import { Sankey as SankeyIcon } from '@splunk/visualization-icons';\nimport { Sankey as SankeyPlaceholderIcon } from '@splunk/visualization-icons/placeholders';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport { COLOR_OR_TOKEN_PATTERN_WITH_RGBA, getPattern } from '@splunk/visualizations-shared/schemaUtils';\nimport { defaultPalettesConfig } from '@splunk/visualization-color-palettes/editors/PresetPalettes';\nimport { pick, variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { DataContract } from '../common/interfaces/DataContract';\nimport { DefaultContext } from '../common/interfaces/DefaultContext';\nimport { EditorConfig } from '../common/interfaces/Editor';\nimport { OptionsSchema } from '../common/interfaces/OptionsSchema';\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 { getDynamicLinkColorsEditor } from '../common/editorConfig/DynamicLinkColorsEditor';\nimport getBackgroundColorEditor from '../common/editorConfig/BackgroundColor';\n\nconst defaultContext: DefaultContext = {\n linkColorRangeConfig: [\n { to: 20, value: '#D41F1F' },\n { from: 20, to: 40, value: '#D94E17' },\n { from: 40, to: 60, value: '#CBA700' },\n { from: 60, to: 80, value: '#669922' },\n { from: 80, value: '#118832' },\n ],\n linkColorMatchConfig: [{ match: '', value: '#5C33FF' }],\n};\n\nconst dataContract: DataContract = {\n requiredDataSources: [\n {\n name: 'primary',\n description: 'DataSource that powers the visualization',\n },\n ],\n optionalDataSources: [],\n initialRequestParams: {\n primary: { offset: 0, count: 10000 },\n },\n};\n\nconst size: VizSize = {\n initialWidth: 600,\n initialHeight: 300,\n};\n\nconst optionsSchema: OptionsSchema = {\n backgroundColor: {\n default: '> themes.defaultBackgroundColor',\n description:\n 'Specify the color for the background. You may use a dataSource to apply the color. The default for enterprise light is \"#ffffff\". The default for enterprise dark is \"#000000\". The default for prisma dark is \"#0b0c0e\".',\n pattern: COLOR_OR_TOKEN_PATTERN_WITH_RGBA,\n type: 'string',\n },\n colorMode: {\n default: 'categorical',\n description:\n 'Specify the coloring method used for the links. When set to \"categorical\" the nodes and links will be colored based on the \"seriesColors\". When set to \"dynamic\" the links will be colored based on the dynamic string assigned to \"linkColors\".',\n pattern: getPattern(['categorical', 'dynamic']),\n type: 'string',\n },\n linkColors: {\n default: `> linkValues | rangeValue(linkColorRangeConfig)`,\n description:\n 'Specify the coloring method used for the links when the colorMode “dynamic” is specified.',\n type: 'array',\n items: {\n type: 'string',\n pattern: COLOR_OR_TOKEN_PATTERN_WITH_RGBA,\n },\n },\n linkOpacity: {\n default: 0.5,\n description: 'Specify the opacity of the links. Choose a number in the range of 0 - 1 (inclusive).',\n type: 'number',\n },\n linkValues: {\n default: `> primary | seriesByType('number')`,\n description: 'Specify the dataSource to apply link width.',\n type: 'string',\n },\n resultLimit: {\n default: 1000,\n description: 'Specify the maximum length of link data points rendered.',\n type: 'number',\n },\n seriesColors: {\n default: VIZ_CATEGORICAL,\n description: 'Specify the colors used for a series. For example, [\"#FF0000\", \"#0000FF\", \"#008000\"].',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n};\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 nodeTextColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorActive(props),\n })(props),\n tooltipRowColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorActive(props),\n })(props),\n tooltipLinkHeaderColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorActive(props),\n })(props),\n tooltipHeaderColor: props =>\n pick({\n enterprise: {\n dark: variables.textGray(props),\n light: variables.textGray(props),\n },\n prisma: variables.contentColorMuted(props),\n })(props),\n};\n\nconst editorConfig: EditorConfig[] = [\n {\n label: _('Data configurations'),\n layout: [\n [\n {\n label: 'Link value',\n editor: 'editor.columnSelector',\n option: 'linkValues',\n context: 'linkValuesContext',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n },\n },\n ],\n ],\n },\n {\n label: _('Color and style'),\n layout: [\n [\n {\n label: _('Color mode'),\n option: 'colorMode',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Categorical'), value: 'categorical' },\n { label: _('Dynamic'), value: 'dynamic' },\n ],\n },\n },\n ],\n [\n {\n ...getDynamicLinkColorsEditor({ defaultContext, defaultPalettesConfig }),\n showEditor: ({ options }) => options.colorMode === 'dynamic',\n },\n ],\n getBackgroundColorEditor({ themes }),\n ],\n },\n];\n\n/**\n * visualization configuration\n */\nconst config: VizConfig = {\n /**\n * unique viz key\n */\n key: 'splunk.sankey',\n /**\n * viz name\n */\n name: _('Sankey'),\n category: VizCategory.FLOW,\n status: 'preview',\n /**\n * viz icon\n */\n icon: SankeyIcon,\n placeholderIcon: SankeyPlaceholderIcon,\n dataContract,\n size,\n defaultContext,\n optionsSchema,\n editorConfig,\n events: {\n 'node.click': {\n description: 'Triggered when user clicks on a node',\n },\n 'link.click': {\n description: 'Triggered when user clicks on a link',\n },\n },\n supports: [VizBehavior.DYNAMIC_OPTIONS, VizBehavior.EVENTS, VizBehavior.PLACEHOLDER],\n themes,\n requiredProps: [],\n};\n\nexport default enhanceConfig(config);\n","import { _ } from '@splunk/ui-utils/i18n';\nimport { isDynamicOption } from '@splunk/visualizations-shared/configUtils';\n\nexport const getDynamicLinkColorsEditor = ({ defaultContext, defaultPalettesConfig }) => ({\n label: _('Link'),\n option: 'linkColors',\n context: 'linkColorRangeConfig',\n editor: 'editor.dynamicColor',\n showEditor: ({ options }) => isDynamicOption(options.linkColors),\n editorProps: {\n labelPosition: 'top',\n flyoutTitle: _('Dynamic coloring: link'),\n formatters: [\n {\n label: _('Ranges'),\n value: 'rangeValue',\n defaults: {\n linkValues: defaultContext.linkColorRangeConfig,\n },\n },\n {\n label: _('Matches'),\n value: 'matchValue',\n defaults: {\n linkValues: defaultContext.linkColorMatchConfig,\n },\n },\n ],\n dataSelectors: [\n {\n label: _('Link'),\n value: 'linkValues',\n },\n ],\n defaultPalettesConfig,\n },\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 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';\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 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 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: Opts = {}; // 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();\n\n const [useAsyncEvaluatedOptions, setUseAsyncEvaluatedOptions] = React.useState(\n Boolean(getFeatureFlag(featureFlagContext, 'visualizations_useWebWorkersForDSL'))\n );\n const isDownsamplingEnabledByFeatureFlag = Boolean(\n featureFlagContext?.visualizations_enableDownsampling\n );\n\n const isMounted = React.useRef(true);\n const optionsToEvaluate = React.useMemo(\n () => ({\n context: defaultsDeep({}, context, vizConfig.defaultContext),\n options: deepMergeWithArrayPrimitiveOverrides({}, options, defaultOptions),\n }),\n [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((): Record<string, unknown> => {\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 = 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 isTrellisFeatureFlagOn = Boolean(\n featureFlagContext && featureFlagContext.visualizations_enableTrellis\n );\n let clonedEvaluatedOptions = evaluatedOptionsToUse;\n if (\n isTrellisFeatureFlagOn &&\n vizConfig?.supports?.includes(VizBehavior.TRELLIS) &&\n clonedEvaluatedOptions?.splitByLayout === VizBehavior.TRELLIS\n ) {\n clonedEvaluatedOptions = {\n ...evaluatedOptionsToUse,\n backgroundColor: clonedEvaluatedOptions?.trellisBackgroundColor,\n };\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 paginateDataSourceKey =\n (has(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey]) || '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","module.exports = require(\"@splunk/themes/getSettingsFromThemedProps\");","module.exports = require(\"@splunk/visualizations-shared/SanitizeProps\");","module.exports = require(\"@splunk/moment\");","export enum VizBehavior {\n /**\n * Dynamic Options Behavior.\n * This allows visualization options to be powered by data\n *\n * **Example**\n *\n * sparklineValues: \">primary|seriesByIndex(0)\"\n * would configure sparklineValues with an array of data points\n * coming from the first series in the primary datasource\n *\n */\n DYNAMIC_OPTIONS = 'dynamic-options',\n EVENTS = 'events',\n DOWNSAMPLING = 'downsampling',\n /**\n * Placeholder behavior: visualization will display a placeholder rather than fail if any of the `requiredProps` is\n * missing.\n * @type {string}\n */\n PLACEHOLDER = 'placeholder',\n PAGE_AND_SORT = 'page-and-sort',\n TRELLIS = 'trellis',\n}\n","module.exports = require(\"@splunk/async-dynamic-options-evaluator\");","/* 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 { 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","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 * 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 { 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 { useRef, useMemo, useEffect, useState } from 'react';\nimport { debounce, isEqual } 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\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 const previousXAndYFieldsWithTypes = usePrevious(xAndYFieldsWithTypes);\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: xAndYFieldsWithTypes,\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(previousXAndYFieldsWithTypes, xAndYFieldsWithTypes) &&\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: xAndYFieldsWithTypes,\n threshold,\n });\n\n // need to detect if this runs as part of the initial render\n }, [\n dataSources,\n debouncedDownsampleDataSources,\n xAndYFieldsWithTypes,\n threshold,\n isDownsamplingEnabled,\n previousXAndYFieldsWithTypes,\n previousDataSources,\n previousThreshold,\n ]);\n\n return downsampledDataSources;\n};\n\nexport default useDownsampleDataSources;\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 * 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","module.exports = require(\"@splunk/visualization-context/FeatureFlags\");","module.exports = require(\"@babel/runtime/helpers/slicedToArray\");","module.exports = require(\"@splunk/visualization-icons/placeholders\");","module.exports = require(\"@splunk/visualization-color-palettes\");","module.exports = require(\"@splunk/visualization-icons\");","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'),\n option: 'backgroundColor',\n editor: 'editor.color',\n editorProps: {\n labelPosition: labelPosition || 'top',\n themes,\n },\n },\n];\n\nexport default background;\n","module.exports = require(\"@babel/runtime/helpers/toConsumableArray\");","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/visualization-color-palettes/editors/PresetPalettes\");","module.exports = require(\"@splunk/react-ui/Popover\");","module.exports = require(\"d3-array\");","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","import styled from 'styled-components';\n\nconst VizStyleWrapper = styled.div.attrs(({ dataTestKey }) => ({\n 'data-test': dataTestKey,\n 'data-testid': dataTestKey,\n}))`\n display: flex;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: ${props => props.backgroundColor};\n`;\n\nVizStyleWrapper.displayName = 'VizStyleWrapper';\n\nexport default VizStyleWrapper;\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"prop-types\"","webpack:///external \"@splunk/visualization-schemas\"","webpack:///external \"@babel/runtime/helpers/typeof\"","webpack:///external \"@splunk/visualization-encoding/utils/types\"","webpack:///external \"@splunk/visualizations-shared/numberUtils\"","webpack:///external \"d3-scale\"","webpack:///external \"@splunk/visualizations-shared/dataSourceUtils\"","webpack:///external \"@splunk/visualizations-shared/Message\"","webpack:///external \"@babel/runtime/helpers/defineProperty\"","webpack:///./src/Sankey/PureSankey/PureSankey.tsx","webpack:///external \"@splunk/themes/variables\"","webpack:///./src/common/utils/dataUtils.ts","webpack:///./src/Sankey/PureSankey/SankeyUtils.ts","webpack:///external \"d3-interpolate\"","webpack:///external \"@splunk/visualizations-shared/colorUtils\"","webpack:///external \"d3-collection\"","webpack:///external \"@splunk/visualization-encoding/Options\"","webpack:///./src/common/hocs/FixedSizeContainer.tsx","webpack:///./src/Sankey/Sankey.tsx","webpack:///external \"@splunk/visualizations-shared/style\"","webpack:///external \"@splunk/ui-utils/i18n\"","webpack:///./src/common/interfaces/DataSource.ts","webpack:///./src/common/interfaces/VizActionHandler.ts","webpack:///./src/common/interfaces/VizCategory.ts","webpack:///./src/common/utils/hocUtils.ts","webpack:///external \"@babel/runtime/helpers/createClass\"","webpack:///external \"@splunk/visualizations-shared/SizeAwareWrapper\"","webpack:///./src/common/utils/configUtils.ts","webpack:///external \"@splunk/visualization-context/FeatureFlagContext\"","webpack:///external \"@splunk/visualizations-shared/configUtils\"","webpack:///external \"lodash\"","webpack:///external \"@splunk/ui-utils/id\"","webpack:///external \"@splunk/visualization-context/TimezoneContext\"","webpack:///./src/common/hooks/usePrevious.ts","webpack:///external \"@splunk/visualizations-shared/hocUtils\"","webpack:///external \"@splunk/visualizations-shared/JSONSchemaUtils\"","webpack:///./src/common/components/IconPlaceholder.tsx","webpack:///./src/common/hooks/getSorting.ts","webpack:///./src/common/hooks/getPagination.ts","webpack:///external \"styled-components\"","webpack:///./src/common/interfaces/index.ts","webpack:///./src/common/interfaces/DataContract.ts","webpack:///./src/Sankey/index.ts","webpack:///./src/Sankey/PureSankey/lib/sankey.js","webpack:///./src/Sankey/PureSankey/SankeyNode.tsx","webpack:///./src/Sankey/PureSankey/SankeyLink.tsx","webpack:///./src/Sankey/PureSankey/SankeyTooltip.tsx","webpack:///./src/Sankey/config.ts","webpack:///./src/common/editorConfig/DynamicLinkColorsEditor.js","webpack:///./src/common/withDashboardViz.tsx","webpack:///external \"@splunk/themes/getSettingsFromThemedProps\"","webpack:///external \"@splunk/visualizations-shared/SanitizeProps\"","webpack:///external \"@splunk/moment\"","webpack:///external \"@splunk/async-dynamic-options-evaluator\"","webpack:///external \"@babel/runtime/helpers/slicedToArray\"","webpack:///./src/common/SplunkVisualization.tsx","webpack:///./src/common/hooks/useDeepMemo.ts","webpack:///./src/common/components/MissingPropsMessage.tsx","webpack:///./src/common/hocs/withEditModeCover.tsx","webpack:///./src/common/hocs/withPlaceholder.tsx","webpack:///./src/common/hooks/useDownsampleDataSources.tsx","webpack:///./src/common/hooks/useGetXAndYFields.tsx","webpack:///./src/common/utils/featureFlagUtils.ts","webpack:///external \"@splunk/visualization-context/FeatureFlags\"","webpack:///external \"@babel/runtime/helpers/toConsumableArray\"","webpack:///external \"@splunk/visualization-icons/placeholders\"","webpack:///external \"@splunk/visualization-icons\"","webpack:///./src/common/editorConfig/BackgroundColor.ts","webpack:///external \"@splunk/visualization-color-palettes\"","webpack:///./src/common/interfaces/VizBehavior.ts","webpack:///external \"@splunk/themes\"","webpack:///external \"@splunk/visualization-color-palettes/editors/PresetPalettes\"","webpack:///external \"@splunk/react-ui/Popover\"","webpack:///external \"d3-array\"","webpack:///external \"@babel/runtime/helpers/classCallCheck\"","webpack:///./src/common/components/VizStyleWrapper.jsx"],"names":["d3_sankey","sankey","nodeWidth","nodePadding","size","nodes","links","components","arguments","computeNodeLinks","computeNodeValues","computeNodeStructure","computeNodeBreadths","computeNodeDepths","computeLinkDepths","curvature","x0","d","x1","xi","d3interpolateNumber","x2","x3","y0","y1","y2","y3","curveExtension","curveDepth","x","dt","getDir","p","forwardLink","backwardLink","link","node","source","target","Math","d3sum","nodeStack","index","connect","sourceLink","component","currentNode","root","scc","layerComponents","bfs","result","max","componentsByBreadth","nextMax","c","outLinks","scaleNodeBreadths","remainingComponents","nextComponents","visitedIndex","n","l","queue","currentCount","nextCount","targets","extractTargets","nodesByBreadth","initializeNodeDepth","resolveCollisions","alpha","iterations","relaxRightToLeft","relaxLeftToRight","ky","d3min","y","center","i","dy","a","b","parallelrendering","sy","ty","getDynamicLinkColorsEditor","defaultContext","defaultPalettesConfig","label","_","option","context","editor","showEditor","options","isDynamicOption","editorProps","labelPosition","flyoutTitle","formatters","value","defaults","linkValues","linkColorRangeConfig","linkColorMatchConfig","dataSelectors","VizStyleWrapper","dataTestKey","props"],"mappings":"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","file":"Sankey.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 475);\n","module.exports = require(\"react\");","module.exports = require(\"prop-types\");","module.exports = require(\"@splunk/visualization-schemas\");","module.exports = require(\"@babel/runtime/helpers/typeof\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@splunk/visualizations-shared/numberUtils\");","module.exports = require(\"d3-scale\");","module.exports = require(\"@splunk/visualizations-shared/dataSourceUtils\");","module.exports = require(\"@splunk/visualizations-shared/Message\");","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","import * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport * as T from 'prop-types';\nimport { noop, pick } from 'lodash';\nimport styled from 'styled-components';\nimport Message from '@splunk/visualizations-shared/Message';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport SizeAwareWrapper from '@splunk/visualizations-shared/SizeAwareWrapper';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\n// eslint-disable-next-line camelcase\nimport { d3_sankey } from './lib/sankey';\nimport VizStyleWrapper from '../../common/components/VizStyleWrapper';\nimport {\n checkDigitsOnly,\n computeAllConnectedLinksToNodes,\n convertInputToSankeyDataFormat,\n getAllNodeNames,\n getColorCategoryMapping,\n getLinkId,\n getNodeId,\n} from './SankeyUtils';\nimport SankeyNode from './SankeyNode';\nimport SankeyLink from './SankeyLink';\nimport {\n COLOR_MODE_TYPES,\n NodeConnectionsMap,\n SankeyColors,\n SankeyDataLink,\n SankeyDataNode,\n} from './SankeyModels';\nimport SankeyTooltip from './SankeyTooltip';\n\nexport const DEFAULT_COLORS: SankeyColors = {\n backgroundColor: '#ffffff',\n nodeTextColor: '#2c2c2c',\n tooltip: {\n headerColor: 'rgba(0, 0, 0, 0.54)',\n linkHeaderColor: '#2c2c2c',\n rowColor: '#2c2c2c',\n },\n};\nexport const NODE_TEXT_FONT_SIZE = 10;\nexport const DEFAULT_FONT_FAMILY =\n '\"Splunk Platform Sans\", \"Proxima Nova\", \"Helvetica Neue\", Helvetica, Arial, sans-serif';\nexport const DEFAULT_NODE_COLOR = '#909090';\nexport const DEFAULT_LINK_COLOR = '#909090';\nexport const DEFAULT_SERIES_COLOR = VIZ_CATEGORICAL;\nexport const DEFAULT_LINK_OPACITY = 0.5;\nexport const DEFAULT_NODE_OPACITY = 1;\nexport const INACTIVE_OPACITY = 0.05;\nexport const CHART_MIN_WIDTH = 300;\nexport const CHART_MIN_HEIGHT = 200;\nexport const DEFAULT_CHART_WIDTH = 600;\nexport const DEFAULT_CHART_HEIGHT = 300;\nexport const DEFAULT_SOURCE_INDEX = 0;\nexport const DEFAULT_TARGET_INDEX = 1;\nexport const DEFAULT_LINK_VALUE_INDEX = 2;\n\ninterface PureSankeyProps {\n columns: (string[] | number[])[];\n columnsFromDataSource: (string[] | number[])[];\n fields: string[];\n width: string | number;\n height: string | number;\n mode?: string;\n backgroundColor: string;\n colorMode: COLOR_MODE_TYPES;\n nodeWidth: number;\n nodePadding: number;\n resultLimit: number;\n seriesColors: string[];\n linkColors?: string[];\n linkOpacity: number;\n linkValueField?: string;\n nodeTextColor: string;\n tooltipRowColor: string;\n tooltipLinkHeaderColor: string;\n tooltipHeaderColor: string;\n onNodeClick?: (...args: any) => void;\n onLinkClick?: (...args: any) => void;\n}\n\nconst SankeyContainer = styled.div<{\n width: number | string;\n height: number | string;\n}>`\n overflow: hidden;\n ${props => toDimension(pick(props, ['width', 'height']))};\n`;\n\nconst PureSankey = (props: PureSankeyProps) => {\n const {\n width,\n height,\n columns,\n columnsFromDataSource,\n fields,\n colorMode,\n nodeWidth,\n nodePadding,\n resultLimit,\n seriesColors,\n linkColors,\n linkOpacity,\n linkValueField,\n backgroundColor,\n nodeTextColor,\n tooltipRowColor,\n tooltipLinkHeaderColor,\n tooltipHeaderColor,\n onNodeClick,\n onLinkClick,\n } = props;\n\n const [containerWidth, setContainerWidth] = React.useState(Number(props.width));\n const [containerHeight, setContainerHeight] = React.useState(Number(props.height));\n const cachedHandleResize = React.useCallback((w, h) => {\n setContainerWidth(w);\n setContainerHeight(h);\n }, []);\n\n const margin = {\n top: 17,\n right: 25,\n bottom: 17,\n left: 30,\n };\n // This is to translate the svg's root g based on margin\n // The y position is same as margin top & bottom\n // The x position is an avg of margin right & left\n const translatePos = { x: 28, y: 17 };\n\n const [activeLinks, setActiveLinks] = useState([]);\n const [activeNodes, setActiveNodes] = useState([]);\n const [nodeHovered, setNodeHovered] = useState(null);\n const [hoveredNodeElement, setHoveredNodeElement] = useState(null);\n const [openNodeToolTip, setOpenNodeToolTip] = useState(false);\n const [hoveredLinkElement, setHoveredLinkElement] = useState(null);\n const [openLinkToolTip, setOpenLinkToolTip] = useState(false);\n const sankeyContainerElement = useRef(null);\n const [sankeyWidth, setSankeyWidth] = useState(DEFAULT_CHART_WIDTH - margin.left - margin.right);\n const [sankeyHeight, setSankeyHeight] = useState(DEFAULT_CHART_HEIGHT - margin.top - margin.bottom);\n\n const handleNodeClick = useCallback((node: SankeyDataNode): void => {\n if (node) {\n onNodeClick({\n type: 'node.click',\n payload: {\n nodeValue: node.value,\n nodeName: node.name,\n },\n });\n }\n }, []);\n\n const handleLinkClick = useCallback(\n (link: SankeyDataLink): void => {\n if (link) {\n const payload = { name: linkValueField, value: link.value };\n fields.forEach((field, idx) => {\n const rowToken = `row.${field}.value`;\n payload[rowToken] = columns[idx][link.index];\n });\n onLinkClick({\n type: 'link.click',\n payload,\n });\n }\n },\n [fields, columns, linkValueField]\n );\n\n useEffect(() => {\n if (sankeyContainerElement && sankeyContainerElement.current) {\n const w = sankeyContainerElement.current.getBoundingClientRect().width;\n const h = sankeyContainerElement.current.getBoundingClientRect().height;\n const sWidth = checkDigitsOnly(width as string) ? parseInt(width as string, 10) : w;\n const sHeight = checkDigitsOnly(height as string) ? parseInt(height as string, 10) : h;\n setSankeyWidth(sWidth - margin.left - margin.right);\n setSankeyHeight(sHeight - margin.top - margin.bottom);\n }\n }, [width, height]);\n\n const sankeyData = convertInputToSankeyDataFormat(\n columnsFromDataSource,\n DEFAULT_SOURCE_INDEX,\n DEFAULT_TARGET_INDEX,\n DEFAULT_LINK_VALUE_INDEX,\n resultLimit\n );\n if (\n !sankeyData ||\n !columnsFromDataSource ||\n !Array.isArray(columnsFromDataSource) ||\n columnsFromDataSource.length < 3\n ) {\n return <Message width={width} height={height} message={_('Invalid data to render')} level=\"info\" />;\n }\n const sortAndAssignLinkIds = (links: SankeyDataLink[]): void => {\n links.sort((a, b) => a.dy - b.dy);\n links.forEach(link => {\n // eslint-disable-next-line no-param-reassign\n link.id = `link-${link.source.index}-${link.target.index}`;\n });\n };\n const d3sankey = (d3_sankey() as any)\n .nodeWidth(nodeWidth)\n .nodePadding(nodePadding)\n .size([sankeyWidth, sankeyHeight]);\n const path = d3sankey.reversibleLink();\n d3sankey.nodes(sankeyData.nodes).links(sankeyData.links).layout(500);\n sortAndAssignLinkIds(sankeyData.links);\n const nodeConnectionsMap: NodeConnectionsMap = computeAllConnectedLinksToNodes(\n sankeyData.nodes,\n sankeyData.links\n );\n const uniqCategory = getAllNodeNames(sankeyData);\n const colorCategoryMapping = getColorCategoryMapping({\n category: uniqCategory,\n colorMode,\n seriesColors,\n linkColors,\n });\n\n const resetStates = () => {\n setActiveLinks([]);\n setActiveNodes([]);\n setHoveredLinkElement(null);\n setHoveredNodeElement(null);\n setNodeHovered(null);\n setOpenLinkToolTip(false);\n setOpenNodeToolTip(false);\n };\n\n const renderVisualization = () => {\n if (containerWidth < CHART_MIN_WIDTH || containerHeight < CHART_MIN_HEIGHT) {\n return (\n <Message\n width={containerWidth}\n height={containerHeight}\n message={_('Too small to render content')}\n level=\"info\"\n />\n );\n }\n\n const renderLinks = links => {\n return links.map(link => {\n return (\n <SankeyLink\n link={link}\n activeLinks={activeLinks}\n linkOpacity={linkOpacity}\n path={path}\n key={getLinkId(link)}\n data-test={getLinkId(link)}\n colorCategoryMapping={colorCategoryMapping}\n colorMode={colorMode}\n handleMouseOver={ev => {\n setActiveLinks([link]);\n setActiveNodes([link.source, link.target]);\n setHoveredLinkElement(ev.currentTarget.querySelector('circle'));\n setOpenNodeToolTip(false);\n setOpenLinkToolTip(true);\n }}\n handleMouseLeave={() => {\n resetStates();\n }}\n handleLinkClick={handleLinkClick}\n />\n );\n });\n };\n\n const renderNodes = nodes => {\n const chartWidth = typeof width === 'number' ? width : Number.parseInt(width, 10);\n return nodes.map(node => {\n return (\n <SankeyNode\n node={node}\n key={getNodeId(node)}\n data-test={getNodeId(node)}\n activeNodes={activeNodes}\n nodeWidth={nodeWidth}\n chartWidth={chartWidth}\n colorCategoryMapping={colorCategoryMapping}\n nodeTextColor={nodeTextColor}\n handleMouseOver={ev => {\n const connections = nodeConnectionsMap[node.index];\n setActiveLinks(connections.links);\n setNodeHovered(node);\n setActiveNodes([...connections.sourceNodes, ...connections.targetNodes]);\n setHoveredNodeElement(ev.currentTarget);\n setOpenLinkToolTip(false);\n setOpenNodeToolTip(true);\n }}\n handleMouseLeave={() => resetStates()}\n handleNodeClick={handleNodeClick}\n />\n );\n });\n };\n\n return (\n <VizStyleWrapper\n backgroundColor={backgroundColor}\n dataTestKey=\"SankeyWrapper\"\n onMouseLeave={() => resetStates()}\n >\n <svg height=\"100%\" width=\"100%\" data-test=\"sankey-svg\">\n <g transform={`translate(${translatePos.x},${translatePos.y})`}>\n <g className=\"link-group\" data-test=\"link-group\">\n {renderLinks(sankeyData.links)}\n {openLinkToolTip && (\n <SankeyTooltip\n mode=\"link\"\n open={openLinkToolTip}\n handleTooltipRequestClose={() => resetStates()}\n linkValue={linkValueField}\n connectionsMap={nodeConnectionsMap}\n anchor={hoveredLinkElement}\n link={activeLinks[0]}\n height={sankeyHeight}\n width={sankeyWidth}\n colorCategoryMapping={colorCategoryMapping}\n tooltipRowColor={tooltipRowColor}\n tooltipLinkHeaderColor={tooltipLinkHeaderColor}\n tooltipHeaderColor={tooltipHeaderColor}\n />\n )}\n </g>\n <g className=\"node-group\" data-test=\"node-group\">\n {renderNodes(sankeyData.nodes)}\n {openNodeToolTip && (\n <SankeyTooltip\n mode=\"node\"\n open={openNodeToolTip}\n handleTooltipRequestClose={() => resetStates()}\n linkValue={linkValueField}\n connectionsMap={nodeConnectionsMap}\n anchor={hoveredNodeElement}\n node={nodeHovered}\n height={sankeyHeight}\n width={sankeyWidth}\n colorCategoryMapping={colorCategoryMapping}\n tooltipRowColor={tooltipRowColor}\n tooltipLinkHeaderColor={tooltipLinkHeaderColor}\n tooltipHeaderColor={tooltipHeaderColor}\n />\n )}\n </g>\n </g>\n </svg>\n </VizStyleWrapper>\n );\n };\n\n return (\n <SankeyContainer height={height} width={width} ref={sankeyContainerElement}>\n <SizeAwareWrapper width={width} height={height} onResize={cachedHandleResize} />\n {renderVisualization()}\n </SankeyContainer>\n );\n};\n\nPureSankey.propTypes = {\n columns: T.array,\n columnsFromDataSource: T.array,\n fields: T.array,\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n // need this to satisfy props interface\n // eslint-disable-next-line react/no-unused-prop-types\n mode: T.string,\n colorMode: T.string,\n nodeWidth: T.number,\n nodePadding: T.number,\n resultLimit: T.number,\n seriesColors: T.arrayOf(T.string),\n linkColors: T.arrayOf(T.string),\n linkOpacity: T.number,\n linkValueField: T.string,\n backgroundColor: T.string,\n nodeTextColor: T.string,\n tooltipRowColor: T.string,\n tooltipLinkHeaderColor: T.string,\n tooltipHeaderColor: T.string,\n};\n\nPureSankey.defaultProps = {\n columnsFromDataSource: [],\n columns: [],\n fields: [],\n width: DEFAULT_CHART_WIDTH,\n height: DEFAULT_CHART_HEIGHT,\n mode: 'view',\n colorMode: 'categorical',\n nodeWidth: 12,\n nodePadding: 18,\n resultLimit: 1000,\n seriesColors: DEFAULT_SERIES_COLOR,\n linkColors: [],\n linkOpacity: DEFAULT_LINK_OPACITY,\n linkValueField: 'value',\n backgroundColor: '#0b0c0e',\n nodeTextColor: 'rgba(255, 255, 255, 0.98)',\n tooltipRowColor: 'rgba(255, 255, 255, 0.98)',\n tooltipLinkHeaderColor: 'rgba(255, 255, 255, 0.98)',\n tooltipHeaderColor: 'rgba(255, 255, 255, 0.5)',\n onNodeClick: noop,\n onLinkClick: noop,\n};\n\nexport default PureSankey;\n","module.exports = require(\"@splunk/themes/variables\");","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 = (column: string[] | number[]): CoerceYColumnResult => {\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 = column.findIndex(value => startsWithNumber(`${value}`)) >= 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 // 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')\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[], 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 y2Fields,\n}: {\n enableSearchZoom: boolean;\n dataSources: Record<string, DataSource> | null;\n selectChartEvent: ChartEvent<'chartRangeSelect'> | null;\n width: number;\n xField: string;\n y2Fields?: 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: { name: string }) => {\n return field.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 // For charts with categorical x-axis (charts with an xField that isn't _time), do not support\n // re-calculating downsampling threshold if the chart is zoomed in until SPL-259458 is fixed\n // Also do not support re-calculating downsampling threshold for zoomed-in charts with y2\n // until SPL-259611 is fixed\n if (xField !== '_time' || y2Fields?.length) {\n return firstIndex === 0 && lastIndex === fullSeries.length - 1 ? width : null;\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): { 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 );\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 );\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","/* eslint-disable no-param-reassign */\nimport { ScaleOrdinal, scaleOrdinal } from 'd3-scale';\nimport { isNumber } from '@splunk/visualization-encoding/utils/types';\nimport {\n COLOR_MODE_TYPES,\n Connections,\n Coordinates,\n NodeConnectionsMap,\n SankeyData,\n SankeyDataLink,\n SankeyDataNode,\n} from './SankeyModels';\n\nconst insertNodeIfNotExist = (sankeyData: SankeyData, nodeName: string): void => {\n let { nodes } = sankeyData;\n nodes = nodes || [];\n if (typeof nodeName !== 'string') {\n // eslint-disable-next-line no-console\n console.error('Node not created, invalid nodename:', nodeName);\n return;\n }\n nodeName = nodeName.trim();\n if (!nodes.find(node => node.name.toLocaleLowerCase() === nodeName.toLocaleLowerCase())) {\n nodes.push({ name: nodeName });\n }\n};\n\nconst insertLink = (\n sankeyData: SankeyData,\n sourceFieldIdx: number,\n targetFieldIdx: number,\n linkValue: number,\n index: number\n): void => {\n let { links } = sankeyData;\n links = links || [];\n links.push({\n source: (sourceFieldIdx as unknown) as SankeyDataNode,\n target: (targetFieldIdx as unknown) as SankeyDataNode,\n value: linkValue,\n index,\n });\n};\n\nexport const getNodesIndex = (sankeyData: SankeyData, nodeName: string): number => {\n if (!sankeyData || !sankeyData.nodes || !sankeyData.nodes.length) {\n return -1;\n }\n return sankeyData.nodes.findIndex(node => node.name.toLocaleLowerCase() === nodeName.toLocaleLowerCase());\n};\n\nexport const getColorCategoryMapping = ({\n category,\n colorMode,\n seriesColors,\n linkColors,\n}: {\n category: string[];\n colorMode: COLOR_MODE_TYPES;\n seriesColors: string[];\n linkColors?: string[];\n}): ScaleOrdinal<string, unknown, string> | string[] => {\n if (colorMode !== 'categorical') {\n return linkColors;\n }\n return seriesColors ? scaleOrdinal().domain(category).range(seriesColors).unknown(seriesColors[0]) : null;\n};\n\nexport const convertInputToSankeyDataFormat = (\n columns: (string[] | number[])[],\n sourceFieldIdx: number,\n targetFieldIdx: number,\n linkValueFieldIdx: number,\n resultLimit: number\n): SankeyData => {\n if (\n !columns ||\n !Array.isArray(columns) ||\n !columns.length ||\n !columns[sourceFieldIdx] ||\n !columns[targetFieldIdx] ||\n !columns[linkValueFieldIdx] ||\n columns.length < 3 ||\n !Array.isArray(columns[sourceFieldIdx]) ||\n !Array.isArray(columns[targetFieldIdx]) ||\n !Array.isArray(columns[linkValueFieldIdx]) ||\n !columns[sourceFieldIdx] ||\n typeof columns[sourceFieldIdx][0] !== 'string' ||\n !columns[targetFieldIdx] ||\n typeof columns[targetFieldIdx][0] !== 'string'\n ) {\n return null;\n }\n\n const sankeyData: SankeyData = {\n nodes: [],\n links: [],\n };\n\n const maxlen = Math.min(\n columns[sourceFieldIdx].length,\n columns[targetFieldIdx].length,\n columns[linkValueFieldIdx].length,\n resultLimit\n );\n\n for (let i = 0; i < maxlen; i += 1) {\n if (\n typeof columns[sourceFieldIdx][i] === 'string' &&\n typeof columns[targetFieldIdx][i] === 'string' &&\n isNumber(columns[linkValueFieldIdx][i])\n ) {\n const sourceNodeName = (columns[sourceFieldIdx][i] as string).trim();\n const targetNodeName = (columns[targetFieldIdx][i] as string).trim();\n\n insertNodeIfNotExist(sankeyData, sourceNodeName);\n insertNodeIfNotExist(sankeyData, targetNodeName);\n // If same link exists then sum up the value and donot insert new link\n const sourceNodeIdx = getNodesIndex(sankeyData, sourceNodeName);\n const targetNodeIdx = getNodesIndex(sankeyData, targetNodeName);\n const linkExist = sankeyData.links.find(link => {\n return (\n link.source === ((sourceNodeIdx as unknown) as SankeyDataNode) &&\n link.target === ((targetNodeIdx as unknown) as SankeyDataNode)\n );\n });\n const linkValue = +columns[linkValueFieldIdx][i];\n if (linkExist) {\n linkExist.value += linkValue;\n } else {\n insertLink(sankeyData, sourceNodeIdx, targetNodeIdx, linkValue, i);\n }\n } else {\n // eslint-disable-next-line no-console\n console.error(\n 'Link excluded. Invalid type in column input, row :- ',\n i,\n `[${columns[sourceFieldIdx][i]}, ${columns[targetFieldIdx][i]}, ${columns[linkValueFieldIdx][i]}]`\n );\n }\n }\n return sankeyData;\n};\n\nexport const getNodeId = (node: SankeyDataNode): string => {\n if (!node) {\n return '';\n }\n return `node-${node.index}`;\n};\n\nexport const getLinkId = (link: SankeyDataLink): string => {\n if (!link) {\n return '';\n }\n return `link-${link.id}`;\n};\n\nexport const getAllNodeNames = (sankeyData: SankeyData): string[] => {\n if (!sankeyData || !sankeyData.nodes || !sankeyData.nodes.length) {\n return [];\n }\n return sankeyData.nodes.map(node => node.name);\n};\n\nexport const extractLinkMidPoint = (pathStr: string): Coordinates => {\n if (!pathStr) {\n return null;\n }\n const mIndex = pathStr.indexOf('M');\n const cIndexFirst = pathStr.indexOf('C');\n const lIndex = pathStr.indexOf('L');\n const cIndexLast = pathStr.lastIndexOf('C');\n const zIndex = pathStr.lastIndexOf('Z');\n if (mIndex < 0 || cIndexLast < 0 || cIndexLast < 0 || zIndex < 0) {\n // eslint-disable-next-line no-console\n console.error('Extract link midpoint error. Invalid path -', pathStr);\n return null;\n }\n const section1 = pathStr.slice(mIndex + 1, cIndexFirst).trim();\n const section2 = pathStr.slice(cIndexFirst + 1, lIndex).trim();\n const section3 = pathStr.slice(lIndex + 1, cIndexLast).trim();\n const section4 = pathStr.slice(cIndexLast + 1, zIndex).trim();\n if (!section1.length || !section2.length || !section3.length || !section4.length) {\n // eslint-disable-next-line no-console\n console.error('Extract link midpoint error. Invalid path -', pathStr);\n return null;\n }\n const points = [];\n points.push(section1.split(',').map(i => Number.parseFloat(i)));\n const point2Arr = section2.split(' ');\n points.push(point2Arr[point2Arr.length - 1].split(',').map(i => Number.parseFloat(i)));\n points.push(section3.split(',').map(i => Number.parseFloat(i)));\n const point4Arr = section4.split(' ');\n points.push(point4Arr[point4Arr.length - 1].split(',').map(i => Number.parseFloat(i)));\n const width = Math.abs(points[0][0] - points[1][0]) / 2;\n const x = Math.min(points[0][0], points[1][0]) + width;\n const height = Math.abs(points[0][1] - points[2][1]) / 2;\n const y = Math.min(points[0][1], points[2][1]) + height;\n return { x, y };\n};\n\nexport const getAllConnectedLinks = (links: SankeyDataLink[], nodeIdx: number): Connections => {\n const result: Connections = { links: [], sourceNodes: [], targetNodes: [] };\n if (!links || !links.length) {\n return result;\n }\n\n links.forEach(link => {\n if (link.source.index === nodeIdx || link.target.index === nodeIdx) {\n const linkAdded = result.links.find(l => l.id === link.id);\n if (!linkAdded) {\n result.links.push(link);\n }\n\n const sourceNodeAdded = result.sourceNodes.find(n => n.index === link.source.index);\n if (!sourceNodeAdded) {\n result.sourceNodes.push(link.source);\n }\n\n const targetNodeAdded = result.targetNodes.find(n => n.index === link.target.index);\n if (!targetNodeAdded) {\n result.targetNodes.push(link.target);\n }\n }\n });\n return result;\n};\n\nexport const computeAllConnectedLinksToNodes = (\n nodes: SankeyDataNode[],\n links: SankeyDataLink[]\n): NodeConnectionsMap => {\n const connectionsMap: NodeConnectionsMap = {};\n if (!nodes || !links) {\n return connectionsMap;\n }\n\n nodes.forEach(node => {\n const connections = getAllConnectedLinks(links, node.index);\n connectionsMap[node.index] = connections;\n });\n\n return connectionsMap;\n};\n\nexport const checkDigitsOnly = (input: string): boolean => {\n return /^\\d+$/.test(input);\n};\n\n// Truncate the node text and show ellipsis at the end if text string width exceeds the max limit\nexport const truncateSVGTextWithEllipsis = (\n textElement: SVGTextElement,\n textString: string,\n width: number\n): void => {\n if (textElement && textElement.getSubStringLength !== undefined) {\n textElement.textContent = textString;\n // ellipsis is needed\n if (textElement.getSubStringLength(0, textString.length) >= width) {\n for (let x = textString.length - 3; x > 0; x -= 3) {\n if (textElement.getSubStringLength(0, x) <= width) {\n textElement.textContent = `${textString.substring(0, x)}...`;\n return;\n }\n }\n textElement.textContent = '...'; // can't place at all\n }\n }\n};\n","module.exports = require(\"d3-interpolate\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","module.exports = require(\"d3-collection\");","module.exports = require(\"@splunk/visualization-encoding/Options\");","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 { get, isEqual } from 'lodash';\nimport { getDataSourceStateInfo, DataSourceState } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { isArrayOfColors, sanitizeArrayOfColors } from '@splunk/visualizations-shared/colorUtils';\nimport withDashboardViz, { DashboardVizOpts } from '../common/withDashboardViz';\nimport PureSankey from './PureSankey/PureSankey';\nimport config from './config';\nimport { DataSource } from '../common/interfaces/DataSource';\n\n/**\n * @method showPlaceHolderIcon\n * @param {Object} dataSources\n * @returns {Boolean} return true if loading, error, non existent state or without columns in dataSources\n */\nexport const showPlaceHolderIcon = dataSources => {\n const columns = get(dataSources, 'primary.data.columns', undefined);\n const noColumns = columns === undefined;\n const dataSourceState = getDataSourceStateInfo(dataSources);\n return (\n dataSourceState === DataSourceState.ERROR ||\n dataSourceState === DataSourceState.LOADING ||\n dataSourceState === DataSourceState.NONEXISTENT ||\n noColumns\n );\n};\n\nexport const computeVizProps = ({\n themeFunc,\n dataSources,\n linkValues,\n seriesColors,\n linkColors,\n onNodeClick,\n onLinkClick,\n}) => {\n // Compute all themeColor variables needed for PureSankey\n const themeColorVariables = [\n 'defaultBackgroundColor',\n 'nodeTextColor',\n 'tooltipRowColor',\n 'tooltipLinkHeaderColor',\n 'tooltipHeaderColor',\n ];\n const themeColors: Record<string, unknown> = {};\n themeColorVariables.forEach(variable => {\n themeColors[variable] = themeFunc(variable);\n });\n\n // Sanitize linkColors prop\n // eslint-disable-next-line no-param-reassign\n linkColors = sanitizeArrayOfColors(linkColors);\n\n // Sanitize seriesColors prop\n // (Note:- This is handled outside SanitizeProps because it would impact seriesColors option used in splunk-charting viz as the types are different.\n // The type used in splunk-charting viz expects a string of comma separated colors, but here the type is an array of string)\n // eslint-disable-next-line no-param-reassign\n seriesColors = isArrayOfColors(seriesColors) ? seriesColors : undefined;\n\n // Compute the columns props and linkValueField props for pure Sankey\n // The columns props is computed as [primary.data.columns[0], primary.data.columns[1], linkValues].\n // The source and target columns are the default as columns[0] and columns[1] respectively\n // The linkValueField props is the fieldName which is set as the source of linkValues\n const { columns, fields } = dataSources.primary.data;\n let columnsFromDataSource = [];\n let linkValueField = '';\n const fieldNames = [];\n if (\n dataSources?.primary?.data?.columns &&\n dataSources?.primary?.data?.columns?.length >= 2 &&\n Array.isArray(linkValues)\n ) {\n columnsFromDataSource = columns ? [columns[0], columns[1], linkValues] : null;\n const linkIndex = columns.findIndex(col => isEqual(col, linkValues));\n if (fields) {\n fields.forEach((field, idx) => {\n let fieldName = '';\n if (typeof field === 'object' && field !== null) {\n fieldName = field.name;\n } else {\n fieldName = field ?? '';\n }\n if (idx === linkIndex) {\n linkValueField = fieldName;\n }\n fieldNames.push(fieldName);\n });\n }\n }\n return {\n ...themeColors,\n columns,\n fields: fieldNames,\n columnsFromDataSource,\n linkValueField,\n seriesColors,\n linkColors,\n onNodeClick,\n onLinkClick,\n };\n};\n\nconst Sankey = withDashboardViz({\n ReactViz: PureSankey,\n vizConfig: config,\n computeVizProps,\n useIconPlaceholder: (dataSources: { [name: string]: DataSource }) => showPlaceHolderIcon(dataSources),\n} as DashboardVizOpts);\nconst { themes } = config;\nexport default Sankey;\nexport { themes, config, PureSankey };\n","module.exports = require(\"@splunk/visualizations-shared/style\");","module.exports = require(\"@splunk/ui-utils/i18n\");","import { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport { validSegmentationModes } from '@splunk/visualization-schemas';\n\nexport interface JsonColumnData {\n fields: FieldEntry[] | string[];\n columns: string[][];\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","export enum VizCategory {\n SINGLE_VALUE = 'Single Value',\n TRENDS = 'Trends',\n COMPARISONS = 'Comparisons',\n TABLE = 'Table',\n GAUGE = 'Gauge',\n DISTRIBUTIONS = 'Distributions',\n CHOROPLETH = 'Choropleth Maps',\n SHAPES = 'Shapes',\n MISC = 'misc',\n FLOW = 'Flow',\n CORRELATION = 'Correlation',\n SPATIAL = 'Spatial',\n}\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","module.exports = require(\"@babel/runtime/helpers/createClass\");","module.exports = require(\"@splunk/visualizations-shared/SizeAwareWrapper\");","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\nfunction isDynamicOption(option?: string): boolean {\n return (option && typeof option === 'string' && option.trim().startsWith('>')) || false;\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","module.exports = require(\"@splunk/visualization-context/FeatureFlagContext\");","module.exports = require(\"@splunk/visualizations-shared/configUtils\");","module.exports = require(\"lodash\");","module.exports = require(\"@splunk/ui-utils/id\");","module.exports = require(\"@splunk/visualization-context/TimezoneContext\");","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","module.exports = require(\"@splunk/visualizations-shared/hocUtils\");","module.exports = require(\"@splunk/visualizations-shared/JSONSchemaUtils\");","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.ComponentClass<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 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","module.exports = require(\"styled-components\");","export * from './DashboardVizProps';\nexport * from './DataContract';\nexport * from './DataSource';\nexport * from './DefaultContext';\nexport * from './Editor';\nexport * from './ExtendedDashViz';\nexport * from './Object';\nexport * from './Overview';\nexport * from './ThemedDefaults';\nexport * from './VizActionHandler';\nexport * from './VizBehavior';\nexport * from './VizCategory';\nexport * from './VizConfig';\nexport * from './VizEvent';\nexport * from './VizProps';\nexport * from './VizRegistry';\nexport * from './VizSize';\nexport * from './VizStatus';\n","/**\n * A data structure used at runtime to wire up a visualization.\n */\n\ninterface InitialRequestParams {\n [key: string]: Record<string, unknown> | ((options?: Record<string, unknown>) => Record<string, unknown>);\n}\nexport interface DataContract {\n requiredDataSources: {\n name: string;\n description: string;\n }[];\n optionalDataSources?: {\n name: string;\n description: string;\n }[];\n initialRequestParams: InitialRequestParams; // TODO define better than object?\n}\n","export * from './Sankey';\nexport { default } from './Sankey';\n","// reference link :- https://github.com/csaladenes/sankey\n/* eslint-disable */\nimport { interpolateNumber as d3interpolateNumber } from 'd3-interpolate';\nimport { sum as d3sum, min as d3min, ascending as d3ascending } from 'd3-array';\nimport { nest as d3nest } from 'd3-collection';\n\nexport const d3_sankey = function () {\n var sankey = {},\n nodeWidth = 24,\n nodePadding = 8,\n size = [1, 1],\n nodes = [],\n links = [],\n components = [];\n\n sankey.nodeWidth = function (_) {\n if (!arguments.length) return nodeWidth;\n nodeWidth = +_;\n return sankey;\n };\n\n sankey.nodePadding = function (_) {\n if (!arguments.length) return nodePadding;\n nodePadding = +_;\n return sankey;\n };\n\n sankey.nodes = function (_) {\n if (!arguments.length) return nodes;\n nodes = _;\n return sankey;\n };\n\n sankey.links = function (_) {\n if (!arguments.length) return links;\n links = _;\n return sankey;\n };\n\n sankey.size = function (_) {\n if (!arguments.length) return size;\n size = _;\n return sankey;\n };\n\n sankey.layout = function (iterations) {\n computeNodeLinks();\n computeNodeValues();\n\n computeNodeStructure();\n computeNodeBreadths();\n\n computeNodeDepths(iterations);\n computeLinkDepths();\n\n return sankey;\n };\n\n sankey.relayout = function () {\n computeLinkDepths();\n return sankey;\n };\n\n // A more involved path generator that requires 3 elements to render --\n // It draws a starting element, intermediate and end element that are useful\n // while drawing reverse links to get an appropriate fill.\n //\n // Each link is now an area and not a basic spline and no longer guarantees\n // fixed width throughout.\n //\n // Sample usage:\n //\n // linkNodes = this._svg.append(\"g\").selectAll(\".link\")\n // .data(this.links)\n // .enter().append(\"g\")\n // .attr(\"fill\", \"none\")\n // .attr(\"class\", \".link\")\n // .sort(function(a, b) { return b.dy - a.dy; });\n //\n // linkNodePieces = [];\n // for (var i = 0; i < 3; i++) {\n // linkNodePieces[i] = linkNodes.append(\"path\")\n // .attr(\"class\", \".linkPiece\")\n // .attr(\"d\", path(i))\n // .attr(\"fill\", ...)\n // }\n sankey.reversibleLink = function () {\n var curvature = 0.5;\n\n // Used when source is behind target, the first and last paths are simple\n // lines at the start and end node while the second path is the spline\n function forwardLink(part, d) {\n var x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = d3interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy,\n y1 = d.target.y + d.ty,\n y2 = d.source.y + d.sy + d.dy,\n y3 = d.target.y + d.ty + d.dy;\n\n switch (part) {\n case 0:\n return 'M' + x0 + ',' + y0 + 'L' + x0 + ',' + (y0 + d.dy);\n\n case 1:\n return (\n 'M' +\n x0 +\n ',' +\n y0 +\n 'C' +\n x2 +\n ',' +\n y0 +\n ' ' +\n x3 +\n ',' +\n y1 +\n ' ' +\n x1 +\n ',' +\n y1 +\n 'L' +\n x1 +\n ',' +\n y3 +\n 'C' +\n x3 +\n ',' +\n y3 +\n ' ' +\n x2 +\n ',' +\n y2 +\n ' ' +\n x0 +\n ',' +\n y2 +\n 'Z'\n );\n\n case 2:\n return 'M' + x1 + ',' + y1 + 'L' + x1 + ',' + (y1 + d.dy);\n }\n }\n\n // Used for self loops and when the source is actually in front of the\n // target; the first element is a turning path from the source to the\n // destination, the second element connects the two twists and the last\n // twists into the target element.\n //\n //\n // /--Target\n // \\----------------------\\\n // Source--/\n //\n function backwardLink(part, d) {\n var curveExtension = 30;\n var curveDepth = 15;\n\n function getDir(d) {\n return d.source.y + d.sy > d.target.y + d.ty ? -1 : 1;\n }\n\n function p(x, y) {\n return x + ',' + y + ' ';\n }\n\n var dt = getDir(d) * curveDepth,\n x0 = d.source.x + d.source.dx,\n y0 = d.source.y + d.sy,\n x1 = d.target.x,\n y1 = d.target.y + d.ty;\n\n switch (part) {\n case 0:\n return (\n 'M' +\n p(x0, y0) +\n 'C' +\n p(x0, y0) +\n p(x0 + curveExtension, y0) +\n p(x0 + curveExtension, y0 + dt) +\n 'L' +\n p(x0 + curveExtension, y0 + dt + d.dy) +\n 'C' +\n p(x0 + curveExtension, y0 + d.dy) +\n p(x0, y0 + d.dy) +\n p(x0, y0 + d.dy) +\n 'Z'\n );\n case 1:\n return (\n 'M' +\n p(x0 + curveExtension, y0 + dt) +\n 'C' +\n p(x0 + curveExtension, y0 + 3 * dt) +\n p(x1 - curveExtension, y1 - 3 * dt) +\n p(x1 - curveExtension, y1 - dt) +\n 'L' +\n p(x1 - curveExtension, y1 - dt + d.dy) +\n 'C' +\n p(x1 - curveExtension, y1 - 3 * dt + d.dy) +\n p(x0 + curveExtension, y0 + 3 * dt + d.dy) +\n p(x0 + curveExtension, y0 + dt + d.dy) +\n 'Z'\n );\n\n case 2:\n return (\n 'M' +\n p(x1 - curveExtension, y1 - dt) +\n 'C' +\n p(x1 - curveExtension, y1) +\n p(x1, y1) +\n p(x1, y1) +\n 'L' +\n p(x1, y1 + d.dy) +\n 'C' +\n p(x1, y1 + d.dy) +\n p(x1 - curveExtension, y1 + d.dy) +\n p(x1 - curveExtension, y1 + d.dy - dt) +\n 'Z'\n );\n }\n }\n\n return function (part) {\n return function (d) {\n if (d.source.x < d.target.x) {\n return forwardLink(part, d);\n } else {\n return backwardLink(part, d);\n }\n };\n };\n };\n\n // The standard link path using a constant width spline that needs a\n // single path element.\n sankey.link = function () {\n var curvature = 0.5;\n\n function link(d) {\n var x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = d3interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy + d.dy / 2,\n y1 = d.target.y + d.ty + d.dy / 2;\n return 'M' + x0 + ',' + y0 + 'C' + x2 + ',' + y0 + ' ' + x3 + ',' + y1 + ' ' + x1 + ',' + y1;\n }\n\n link.curvature = function (_) {\n if (!arguments.length) return curvature;\n curvature = +_;\n return link;\n };\n\n return link;\n };\n\n // Populate the sourceLinks and targetLinks for each node.\n // Also, if the source and target are not objects, assume they are indices.\n function computeNodeLinks() {\n nodes.forEach(function (node) {\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n\n links.forEach(function (link) {\n var source = link.source,\n target = link.target;\n if (typeof source === 'number') source = link.source = nodes[link.source];\n if (typeof target === 'number') target = link.target = nodes[link.target];\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n });\n }\n\n // Compute the value (size) of each node by summing the associated links.\n function computeNodeValues() {\n nodes.forEach(function (node) {\n if (!node.value)\n //if not already given\n node.value = Math.max(d3sum(node.sourceLinks, value), d3sum(node.targetLinks, value));\n });\n }\n\n // Take the list of nodes and create a DAG of supervertices, each consisting\n // of a strongly connected component of the graph\n //\n // Based off:\n // http://en.wikipedia.org/wiki/Tarjan's_strongly_connected_components_algorithm\n function computeNodeStructure() {\n var nodeStack = [],\n index = 0;\n\n nodes.forEach(function (node) {\n if (!node.index) {\n connect(node);\n }\n });\n\n function connect(node) {\n node.index = index++;\n node.lowIndex = node.index;\n node.onStack = true;\n nodeStack.push(node);\n\n if (node.sourceLinks) {\n node.sourceLinks.forEach(function (sourceLink) {\n var target = sourceLink.target;\n if (!target.hasOwnProperty('index')) {\n connect(target);\n node.lowIndex = Math.min(node.lowIndex, target.lowIndex);\n } else if (target.onStack) {\n node.lowIndex = Math.min(node.lowIndex, target.index);\n }\n });\n\n if (node.lowIndex === node.index) {\n var component = [],\n currentNode;\n do {\n currentNode = nodeStack.pop();\n currentNode.onStack = false;\n component.push(currentNode);\n } while (currentNode != node);\n components.push({\n root: node,\n scc: component,\n });\n }\n }\n }\n\n components.forEach(function (component, i) {\n component.index = i;\n component.scc.forEach(function (node) {\n node.component = i;\n });\n });\n }\n\n // Assign the breadth (x-position) for each strongly connected component,\n // followed by assigning breadth within the component.\n function computeNodeBreadths() {\n layerComponents();\n\n components.forEach(function (component, i) {\n bfs(component.root, function (node) {\n var result = node.sourceLinks\n .filter(function (sourceLink) {\n return sourceLink.target.component == i;\n })\n .map(function (sourceLink) {\n return sourceLink.target;\n });\n return result;\n });\n });\n\n var max = 0;\n var componentsByBreadth = d3nest()\n .key(function (d) {\n return d.x;\n })\n .sortKeys(d3ascending)\n .entries(components)\n .map(function (d) {\n return d.values;\n });\n\n var max = -1,\n nextMax = -1;\n componentsByBreadth.forEach(function (c) {\n c.forEach(function (component) {\n component.x = max + 1;\n component.scc.forEach(function (node) {\n if (node.layer) node.x = node.layer;\n else node.x = component.x + node.x;\n nextMax = Math.max(nextMax, node.x);\n });\n });\n max = nextMax;\n });\n\n nodes\n .filter(function (node) {\n var outLinks = node.sourceLinks.filter(function (link) {\n return link.source.name != link.target.name;\n });\n return outLinks.length == 0;\n })\n .forEach(function (node) {\n node.x = node.layer ? node.x : max;\n });\n\n scaleNodeBreadths((size[0] - nodeWidth) / Math.max(max, 1));\n\n function flatten(a) {\n return [].concat.apply([], a);\n }\n\n function layerComponents() {\n var remainingComponents = components,\n nextComponents,\n visitedIndex,\n x = 0;\n\n while (remainingComponents.length) {\n nextComponents = [];\n visitedIndex = {};\n\n remainingComponents.forEach(function (component) {\n component.x = x;\n\n component.scc.forEach(function (n) {\n n.sourceLinks.forEach(function (l) {\n if (\n !visitedIndex.hasOwnProperty(l.target.component) &&\n l.target.component != component.index\n ) {\n nextComponents.push(components[l.target.component]);\n visitedIndex[l.target.component] = true;\n }\n });\n });\n });\n\n remainingComponents = nextComponents;\n ++x;\n }\n }\n\n function bfs(node, extractTargets) {\n var queue = [node],\n currentCount = 1,\n nextCount = 0;\n var x = 0;\n\n while (currentCount > 0) {\n var currentNode = queue.shift();\n currentCount--;\n\n if (!currentNode.hasOwnProperty('x')) {\n currentNode.x = x;\n currentNode.dx = nodeWidth;\n\n var targets = extractTargets(currentNode);\n\n queue = queue.concat(targets);\n nextCount += targets.length;\n }\n\n if (currentCount == 0) {\n // level change\n x++;\n currentCount = nextCount;\n nextCount = 0;\n }\n }\n }\n\n //extra code for fixed layout - x part\n /*\n if (fixedlayout && fixedlayout.length > 0) {\n sankey.nodes().forEach(function (d, i) {\n d.x = fixedlayout[i][0];\n });\n }\n */\n }\n\n function moveSourcesRight() {\n nodes.forEach(function (node) {\n if (!node.targetLinks.length) {\n node.x =\n d3min(node.sourceLinks, function (d) {\n return d.target.x;\n }) - 1;\n }\n });\n }\n\n function moveSinksRight(x) {\n nodes.forEach(function (node) {\n if (!node.sourceLinks.length) {\n node.x = x - 1;\n }\n });\n }\n\n function scaleNodeBreadths(kx) {\n nodes.forEach(function (node) {\n node.x *= kx;\n });\n }\n\n function computeNodeDepths(iterations) {\n var nodesByBreadth = d3nest()\n .key(function (d) {\n return d.x;\n })\n .sortKeys(d3ascending)\n .entries(nodes)\n .map(function (d) {\n return d.values;\n });\n\n initializeNodeDepth();\n resolveCollisions();\n\n for (var alpha = 1; iterations > 0; --iterations) {\n relaxRightToLeft((alpha *= 0.99));\n resolveCollisions();\n relaxLeftToRight(alpha);\n resolveCollisions();\n }\n\n function initializeNodeDepth() {\n var ky = d3min(nodesByBreadth, function (nodes) {\n return (size[1] - (nodes.length - 1) * nodePadding) / d3sum(nodes, value);\n });\n\n nodesByBreadth.forEach(function (nodes) {\n nodes.forEach(function (node, i) {\n node.y = i;\n node.dy = node.value * ky;\n });\n });\n\n links.forEach(function (link) {\n link.dy = link.value * ky;\n });\n }\n\n function relaxLeftToRight(alpha) {\n nodesByBreadth.forEach(function (nodes, breadth) {\n nodes.forEach(function (node) {\n if (node.targetLinks.length) {\n var y = d3sum(node.targetLinks, weightedSource) / d3sum(node.targetLinks, value);\n node.y += (y - center(node)) * alpha;\n }\n });\n });\n\n function weightedSource(link) {\n return center(link.source) * link.value;\n }\n }\n\n function relaxRightToLeft(alpha) {\n nodesByBreadth\n .slice()\n .reverse()\n .forEach(function (nodes) {\n nodes.forEach(function (node) {\n if (node.sourceLinks.length) {\n var y = d3sum(node.sourceLinks, weightedTarget) / d3sum(node.sourceLinks, value);\n node.y += (y - center(node)) * alpha;\n }\n });\n });\n\n function weightedTarget(link) {\n return center(link.target) * link.value;\n }\n }\n\n function resolveCollisions() {\n nodesByBreadth.forEach(function (nodes) {\n var node,\n dy,\n y0 = 0,\n n = nodes.length,\n i;\n\n // Push any overlapping nodes down.\n nodes.sort(ascendingDepth);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node) {\n dy = y0 - node.y;\n if (dy > 0) node.y += dy;\n y0 = node.y + node.dy + nodePadding;\n }\n }\n\n // If the bottommost node goes outside the bounds, push it back up.\n dy = y0 - nodePadding - size[1];\n if (node && dy > 0) {\n y0 = node.y -= dy;\n\n // Push any overlapping nodes back up.\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.y + node.dy + nodePadding - y0;\n if (dy > 0) node.y -= dy;\n y0 = node.y;\n }\n }\n });\n }\n\n function ascendingDepth(a, b) {\n return a.y - b.y;\n }\n\n //extra code for fixed layout - y part\n /*\n if (fixedlayout.length > 0) {\n sankey.nodes().forEach(function (d, i) {\n d.y = fixedlayout[i][1];\n });\n }\n */\n }\n\n function computeLinkDepths() {\n nodes.forEach(function (node) {\n const parallelrendering = false;\n if (parallelrendering) {\n } else node.sourceLinks.sort(ascendingTargetDepth);\n node.targetLinks.sort(ascendingSourceDepth);\n });\n nodes.forEach(function (node) {\n var sy = 0,\n ty = 0;\n node.sourceLinks.forEach(function (link) {\n link.sy = sy;\n sy += link.dy;\n });\n node.targetLinks.forEach(function (link) {\n link.ty = ty;\n ty += link.dy;\n });\n });\n\n function ascendingSourceDepth(a, b) {\n return a.source.y - b.source.y;\n }\n\n function ascendingTargetDepth(a, b) {\n return a.target.y - b.target.y;\n }\n }\n\n function center(node) {\n return node.y + node.dy / 2;\n }\n\n function value(link) {\n return link.value;\n }\n\n return sankey;\n};\n","import * as React from 'react';\nimport * as T from 'prop-types';\nimport { ScaleOrdinal } from 'd3-scale';\nimport styled from 'styled-components';\nimport { useRef, useEffect, useCallback } from 'react';\nimport {\n DEFAULT_FONT_FAMILY,\n DEFAULT_NODE_COLOR,\n DEFAULT_NODE_OPACITY,\n INACTIVE_OPACITY,\n} from './PureSankey';\nimport { SankeyDataNode } from './SankeyModels';\n\nimport { truncateSVGTextWithEllipsis } from './SankeyUtils';\n\nconst MAX_NODE_TEXT_WIDTH = 150;\nexport interface SankeyNodeProps {\n node: SankeyDataNode;\n activeNodes: SankeyDataNode[];\n nodeWidth: number;\n chartWidth: number;\n handleMouseOver: (...args: any[]) => void;\n handleMouseLeave: (...args: any[]) => void;\n handleNodeClick: (node: SankeyDataNode) => void;\n nodeTextColor: string;\n colorCategoryMapping: ScaleOrdinal<string, unknown, string> | string[];\n}\n\nconst getNodeOpacity = (nodeIndex: number, activeNodes: SankeyDataNode[]): number => {\n if (!activeNodes || !activeNodes.length) {\n return DEFAULT_NODE_OPACITY;\n }\n const isActiveNode = activeNodes.find(node => node.index === nodeIndex);\n return isActiveNode ? DEFAULT_NODE_OPACITY : INACTIVE_OPACITY;\n};\n\nconst getNodeHeight = (node): number => {\n return node.dy < 0 ? 1 : node.dy;\n};\n\nconst NodeGroup = styled.g<{ node: SankeyDataNode; activeNodes: SankeyDataNode[] }>`\n opacity: ${props => getNodeOpacity(props.node.index, props.activeNodes)};\n &:hover {\n cursor: pointer;\n }\n`;\nNodeGroup.displayName = 'NodeGroup';\n\nconst NodeRect = styled.rect<{\n node: SankeyDataNode;\n colorCategoryMapping: any;\n}>`\n fill: ${props =>\n typeof props.colorCategoryMapping === 'function'\n ? props.colorCategoryMapping(props.node.name)\n : DEFAULT_NODE_COLOR};\n`;\n\nconst NodeText = styled.text<{ node: SankeyDataNode; chartWidth: number; nodeTextColor: string }>`\n text-anchor: ${props => (props.node.x < props.chartWidth / 2 ? 'start' : 'end')};\n font-size: 12px;\n font-family: ${DEFAULT_FONT_FAMILY};\n letter-spacing: 0.02em;\n fill: ${props => props.nodeTextColor};\n`;\nconst SankeyNode = (props: SankeyNodeProps) => {\n const {\n node,\n activeNodes,\n nodeWidth,\n chartWidth,\n handleMouseOver,\n handleMouseLeave,\n handleNodeClick,\n colorCategoryMapping,\n nodeTextColor,\n } = props;\n\n const nodeTextRef = useRef();\n\n useEffect(() => {\n truncateSVGTextWithEllipsis(nodeTextRef.current, node.name, MAX_NODE_TEXT_WIDTH);\n });\n\n const nodeClickHandler = useCallback(() => handleNodeClick(node), [node]);\n\n return (\n <NodeGroup\n node={node}\n activeNodes={activeNodes}\n className=\"node\"\n key={`node-${node.index}`}\n data-test={`node-${node.index}`}\n transform={`translate(${node.x},${node.y})`}\n onClick={nodeClickHandler}\n >\n <React.Fragment>\n <NodeRect\n node={node}\n height={getNodeHeight(node)}\n width={nodeWidth}\n colorCategoryMapping={colorCategoryMapping}\n onMouseOver={ev => handleMouseOver(ev)}\n onMouseLeave={ev => handleMouseLeave(ev)}\n />\n <NodeText\n ref={nodeTextRef}\n node={node}\n chartWidth={chartWidth}\n x={node.x < (chartWidth as number) / 2 ? 6 + nodeWidth : -6}\n y={node.dy / 2}\n dy=\".35em\"\n nodeTextColor={nodeTextColor}\n >\n {node.name}\n </NodeText>\n </React.Fragment>\n </NodeGroup>\n );\n};\n\nSankeyNode.propTypes = {\n node: T.object,\n activeNodes: T.arrayOf(T.object),\n nodeWidth: T.number,\n chartWidth: T.number,\n handleMouseOver: T.func,\n handleMouseLeave: T.func,\n colorCategoryMapping: T.oneOfType([T.func, T.arrayOf(T.string)]),\n nodeTextColor: T.string,\n};\n\nSankeyNode.defaultProps = {\n handleMouseOver: () => {},\n handleMouseLeave: () => {},\n};\n\nexport default SankeyNode;\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport * as T from 'prop-types';\nimport { ScaleOrdinal } from 'd3-scale';\nimport styled from 'styled-components';\nimport { DEFAULT_LINK_COLOR, INACTIVE_OPACITY } from './PureSankey';\nimport { COLOR_MODE_TYPES, SankeyDataLink } from './SankeyModels';\nimport { extractLinkMidPoint } from './SankeyUtils';\n\nexport interface SankeyLinkProps {\n link: SankeyDataLink;\n activeLinks: SankeyDataLink[];\n linkOpacity: number;\n colorMode: COLOR_MODE_TYPES;\n handleMouseOver: (...args: any[]) => void;\n handleMouseLeave: (...args: any[]) => void;\n handleLinkClick: (link: SankeyDataLink) => void;\n colorCategoryMapping: ScaleOrdinal<string, unknown, string> | string[];\n path: (a: number) => (link: SankeyDataLink) => string;\n}\n\nconst getLinkFill = (link, colorCategoryMapping, colorMode) => {\n if (colorMode === 'categorical') {\n return colorCategoryMapping ? colorCategoryMapping(link.source.name) : DEFAULT_LINK_COLOR;\n }\n return colorCategoryMapping && colorCategoryMapping[link.index]\n ? colorCategoryMapping[link.index]\n : DEFAULT_LINK_COLOR;\n};\n\nconst getLinkOpacity = (link: SankeyDataLink, activeLinks: SankeyDataLink[], linkOpacity: number) => {\n if (!activeLinks || !activeLinks.length) {\n return linkOpacity;\n }\n const isActiveLink = activeLinks.find(l => l.id === link.id);\n return isActiveLink ? linkOpacity : INACTIVE_OPACITY;\n};\n\nconst StyledSankeyLink = styled.g`\n &:hover {\n cursor: pointer;\n }\n`;\n\nconst SankeyLink = (props: SankeyLinkProps): React.ReactElement => {\n const {\n link,\n colorCategoryMapping,\n activeLinks,\n linkOpacity,\n colorMode,\n path,\n handleMouseOver,\n handleMouseLeave,\n handleLinkClick,\n } = props;\n // This is to draw an invisible circle added to the link's path midpoint,\n // which acts as an anchor for the link tooltip\n const circlePoints = extractLinkMidPoint(path(1)(link));\n const linkClickHandler = useCallback(() => handleLinkClick(link), [link]);\n return (\n <StyledSankeyLink\n className=\"link\"\n key={link.id}\n id={link.id}\n data-test={link.id}\n fill={getLinkFill(link, colorCategoryMapping, colorMode)}\n opacity={getLinkOpacity(link, activeLinks, linkOpacity)}\n onClick={linkClickHandler}\n onMouseOver={ev => {\n handleMouseOver(ev);\n }}\n onMouseLeave={ev => {\n const relatedTarget = ev.relatedTarget as HTMLElement;\n let isRelatedTargetPopover = false;\n // This is to verify if the mouseLeave is being triggered because of mouseover on a the popover itself.\n // In that case the relatedTarget will have the popover elements and this logic will check on the class name used.\n // If detects the relatedTarget is a popover, then mouseLeave event handler wont be triggered.\n if (relatedTarget && relatedTarget.classList) {\n const { classList } = relatedTarget;\n classList.forEach(name => {\n if (\n name.toLocaleLowerCase().indexOf('sankeytooltip') > -1 ||\n name.toLocaleLowerCase().indexOf('popoverstyles') > -1\n ) {\n isRelatedTargetPopover = true;\n }\n });\n }\n if (!isRelatedTargetPopover) {\n handleMouseLeave(ev);\n }\n }}\n >\n <path d={path(0)(link)} />\n <path d={path(1)(link)} />\n <path d={path(2)(link)} />\n {circlePoints && <circle cx={circlePoints.x} cy={circlePoints.y} r={5} fill=\"transparent\" />}\n </StyledSankeyLink>\n );\n};\n\nSankeyLink.propTypes = {\n link: T.object,\n activeLinks: T.arrayOf(T.object),\n linkOpacity: T.number,\n path: T.func,\n handleMouseOver: T.func,\n handleMouseLeave: T.func,\n colorCategoryMapping: T.oneOfType([T.func, T.arrayOf(T.string)]),\n};\n\nSankeyLink.defaultProps = {\n handleMouseOver: () => {},\n handleMouseLeave: () => {},\n};\n\nexport default SankeyLink;\n","import * as React from 'react';\nimport * as T from 'prop-types';\nimport { ScaleOrdinal } from 'd3-scale';\nimport Popover from '@splunk/react-ui/Popover';\nimport styled from 'styled-components';\nimport { formatNumber } from '@splunk/visualizations-shared/numberUtils';\nimport { DEFAULT_NODE_COLOR } from './PureSankey';\nimport { Connections, NodeConnectionsMap, SankeyDataLink, SankeyDataNode } from './SankeyModels';\n\nconst DEFAULT_PLACEMENT = 'below';\n\nexport interface SankeyTooltipProps {\n mode: 'node' | 'link';\n node?: SankeyDataNode;\n link?: SankeyDataLink;\n linkValue: string;\n open: boolean;\n connectionsMap: NodeConnectionsMap;\n anchor?: any;\n colorCategoryMapping: ScaleOrdinal<string, unknown, string> | string[];\n width: number;\n height: number;\n tooltipRowColor: string;\n tooltipLinkHeaderColor: string;\n tooltipHeaderColor: string;\n handleTooltipRequestClose: (...args: any[]) => void;\n}\n\nconst StyledTooltipContainer = styled.div`\n display: flex;\n min-width: 200px;\n max-width: 300px;\n padding: 16px;\n flex-direction: column;\n`;\n\nconst StyledTooltipSection = styled.div`\n display: flex;\n flex-direction: column;\n > div:nth-child(1) {\n margin-top: 8px;\n }\n > div:last-child {\n margin-bottom: 8px;\n }\n`;\n\nconst StyledTooltipHeader = styled.div<{ headerColor: string }>`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 14px;\n color: ${props => props.headerColor};\n`;\n\nconst StyledTooltipLinkHeader = styled.div<{ linkHeaderColor: string }>`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 14px;\n margin-bottom: 8px;\n color: ${props => props.linkHeaderColor};\n`;\n\nconst StyledTooltipRow = styled.div<{ rowColor: string }>`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 12px;\n color: ${props => props.rowColor};\n margin-bottom: 6px;\n`;\n\nconst StyledTooltipLeftCell = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n`;\n\nconst StyledTooltipRightCell = styled.div`\n margin-left: 5px;\n`;\n\nconst ColorTile = styled.div<{ node: SankeyDataNode; colorCategoryMapping: any }>`\n width: 6px;\n height: 16px;\n background-color: ${props =>\n typeof props.colorCategoryMapping === 'function'\n ? props.colorCategoryMapping(props.node.name)\n : DEFAULT_NODE_COLOR};}\n`;\n\nconst NodeValue = styled.div`\n margin-left: 8px;\n max-width: 200px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\n\nconst SankeyTooltip = (props: SankeyTooltipProps): React.ReactElement => {\n const {\n mode,\n node,\n link,\n open,\n connectionsMap,\n anchor,\n linkValue,\n colorCategoryMapping,\n width,\n tooltipRowColor,\n tooltipLinkHeaderColor,\n tooltipHeaderColor,\n handleTooltipRequestClose,\n } = props;\n\n const showSection = (\n connection: Connections,\n nodeData: SankeyDataNode,\n section: 'source' | 'target'\n ): boolean => {\n if (!connection) {\n return false;\n }\n const connectionNodes = section === 'source' ? connection.sourceNodes : connection.targetNodes;\n const filteredNodes = connectionNodes.filter(cNode => cNode.index !== nodeData.index);\n return filteredNodes.length > 0;\n };\n\n const getPopoverPlacement = (anchorElement): 'above' | 'below' | 'left' | 'right' => {\n if (!anchorElement) {\n return DEFAULT_PLACEMENT;\n }\n const bBox = anchorElement.getBoundingClientRect();\n\n // TODO: Depending on the testing result in dashboard reg tooltip position, might need further optimization\n // If anchorElement is too close to the left border of the chart, place it to the right side of anchorElement\n if (bBox.x <= 15) {\n return 'right';\n }\n if (bBox.x >= width - 15) {\n // If anchorElement is too close to the right border of the chart, place it to the right side of anchorElement\n return 'left';\n }\n\n return DEFAULT_PLACEMENT;\n };\n\n const renderNodeToolTip = () => {\n if (!node) {\n return null;\n }\n const connections = connectionsMap[node.index];\n return (\n <Popover\n open={open}\n anchor={anchor}\n onRequestClose={() => handleTooltipRequestClose()}\n defaultPlacement={getPopoverPlacement(anchor)}\n >\n <StyledTooltipContainer className=\"sankeyToolTip\">\n <StyledTooltipRow rowColor={tooltipRowColor} data-test=\"main-row\">\n <StyledTooltipLeftCell data-test=\"main-row-name\">\n <ColorTile node={node} colorCategoryMapping={colorCategoryMapping} />\n <NodeValue>{node?.name}</NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"main-row-value\">\n {formatNumber(node?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n {showSection(connections, node, 'source') && (\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Source</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n )}\n <StyledTooltipSection>\n {connections &&\n connections.sourceNodes.map((sNode, idx) => {\n if (\n sNode?.index !== node?.index ||\n connections.sourceNodes[idx]?.index ===\n connections.targetNodes[idx]?.index\n ) {\n return (\n <StyledTooltipRow\n key={sNode.index}\n rowColor={tooltipRowColor}\n data-test=\"source-row\"\n >\n <StyledTooltipLeftCell>\n <ColorTile\n node={sNode}\n colorCategoryMapping={colorCategoryMapping}\n />\n <NodeValue data-test=\"source-row-name\">\n {sNode?.name}\n </NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"source-row-value\">\n {formatNumber(sNode?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n );\n }\n return null;\n })}\n </StyledTooltipSection>\n {showSection(connections, node, 'target') && (\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Target</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n )}\n <StyledTooltipSection>\n {connections &&\n connections.targetNodes.map((tNode, idx) => {\n if (\n tNode?.index !== node?.index ||\n connections.sourceNodes[idx]?.index ===\n connections.targetNodes[idx]?.index\n ) {\n return (\n <StyledTooltipRow\n key={tNode.index}\n rowColor={tooltipRowColor}\n data-test=\"target-row\"\n >\n <StyledTooltipLeftCell>\n <ColorTile\n node={tNode}\n colorCategoryMapping={colorCategoryMapping}\n />\n <NodeValue data-test=\"target-row-name\">\n {tNode?.name}\n </NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"target-row-value\">\n {formatNumber(tNode?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n );\n }\n return null;\n })}\n </StyledTooltipSection>\n </StyledTooltipContainer>\n </Popover>\n );\n };\n\n const renderLinkToolTip = () => {\n if (!link) {\n return null;\n }\n return (\n <Popover open={open} anchor={anchor} onRequestClose={() => handleTooltipRequestClose()}>\n <StyledTooltipContainer className=\"sankeyToolTip\" data-test=\"sankey-tooltip\">\n <StyledTooltipLinkHeader linkHeaderColor={tooltipLinkHeaderColor} data-test=\"main-row\">\n <StyledTooltipLeftCell data-test=\"main-row-name\">Link Size</StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"main-row-value\">\n {formatNumber(link?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipLinkHeader>\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Source</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n <StyledTooltipSection>\n <StyledTooltipRow rowColor={tooltipRowColor} data-test=\"source-row\">\n <StyledTooltipLeftCell>\n <ColorTile node={link?.source} colorCategoryMapping={colorCategoryMapping} />\n <NodeValue data-test=\"source-row-name\">{link?.source?.name}</NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"source-row-value\">\n {formatNumber(link?.source?.value, 0, { useTrendUnits: true })}{' '}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n </StyledTooltipSection>\n <StyledTooltipHeader headerColor={tooltipHeaderColor}>\n <StyledTooltipLeftCell>Target</StyledTooltipLeftCell>\n <StyledTooltipRightCell>{linkValue}</StyledTooltipRightCell>\n </StyledTooltipHeader>\n <StyledTooltipSection>\n <StyledTooltipRow rowColor={tooltipRowColor} data-test=\"target-row\">\n <StyledTooltipLeftCell>\n <ColorTile node={link?.target} colorCategoryMapping={colorCategoryMapping} />\n <NodeValue data-test=\"target-row-name\">{link?.target?.name}</NodeValue>\n </StyledTooltipLeftCell>\n <StyledTooltipRightCell data-test=\"target-row-value\">\n {formatNumber(link?.target?.value, 0, { useTrendUnits: true })}\n </StyledTooltipRightCell>\n </StyledTooltipRow>\n </StyledTooltipSection>\n </StyledTooltipContainer>\n </Popover>\n );\n };\n\n return mode === 'node' ? renderNodeToolTip() : renderLinkToolTip();\n};\n\nSankeyTooltip.propTypes = {\n mode: T.string,\n node: T.object,\n linkValue: T.string,\n open: T.bool,\n connectionsMap: T.object,\n anchor: T.object,\n colorCategoryMapping: T.oneOfType([T.func, T.arrayOf(T.string)]),\n tooltipRowColor: T.string,\n tooltipLinkHeaderColor: T.string,\n tooltipHeaderColor: T.string,\n width: T.number,\n height: T.number,\n handleTooltipRequestClose: T.func,\n};\n\nSankeyTooltip.defaultProps = {\n handleTooltipRequestClose: () => {},\n};\n\nexport default SankeyTooltip;\n","import { Sankey as SankeyIcon } from '@splunk/visualization-icons';\nimport { Sankey as SankeyPlaceholderIcon } from '@splunk/visualization-icons/placeholders';\nimport { sankeyOptionsSchema as optionsSchema } from '@splunk/visualization-schemas';\nimport { defaultPalettesConfig } from '@splunk/visualization-color-palettes/editors/PresetPalettes';\nimport { pick, variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\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 { getDynamicLinkColorsEditor } from '../common/editorConfig/DynamicLinkColorsEditor';\nimport getBackgroundColorEditor from '../common/editorConfig/BackgroundColor';\n\nconst defaultContext: DefaultContext = {\n linkColorRangeConfig: [\n { to: 20, value: '#D41F1F' },\n { from: 20, to: 40, value: '#D94E17' },\n { from: 40, to: 60, value: '#CBA700' },\n { from: 60, to: 80, value: '#669922' },\n { from: 80, value: '#118832' },\n ],\n linkColorMatchConfig: [{ match: '', value: '#5C33FF' }],\n};\n\nconst dataContract: DataContract = {\n requiredDataSources: [\n {\n name: 'primary',\n description: 'DataSource that powers the visualization',\n },\n ],\n optionalDataSources: [],\n initialRequestParams: {\n primary: { offset: 0, count: 10000 },\n },\n};\n\nconst size: VizSize = {\n initialWidth: 600,\n initialHeight: 300,\n};\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 nodeTextColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorActive(props),\n })(props),\n tooltipRowColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorActive(props),\n })(props),\n tooltipLinkHeaderColor: props =>\n pick({\n enterprise: {\n dark: variables.textColor(props),\n light: variables.textColor(props),\n },\n prisma: variables.contentColorActive(props),\n })(props),\n tooltipHeaderColor: props =>\n pick({\n enterprise: {\n dark: variables.textGray(props),\n light: variables.textGray(props),\n },\n prisma: variables.contentColorMuted(props),\n })(props),\n};\n\nconst editorConfig: EditorConfig[] = [\n {\n label: _('Data configurations'),\n layout: [\n [\n {\n label: 'Link value',\n editor: 'editor.columnSelector',\n option: 'linkValues',\n context: 'linkValuesContext',\n editorProps: {\n dataSourceKey: 'primary',\n filterByTypes: ['number'],\n },\n },\n ],\n ],\n },\n {\n label: _('Color and style'),\n layout: [\n [\n {\n label: _('Color mode'),\n option: 'colorMode',\n editor: 'editor.radioBar',\n editorProps: {\n values: [\n { label: _('Categorical'), value: 'categorical' },\n { label: _('Dynamic'), value: 'dynamic' },\n ],\n },\n },\n ],\n [\n {\n ...getDynamicLinkColorsEditor({ defaultContext, defaultPalettesConfig }),\n showEditor: ({ options }) => options.colorMode === 'dynamic',\n },\n ],\n getBackgroundColorEditor({ themes }),\n ],\n },\n];\n\n/**\n * visualization configuration\n */\nconst config: VizConfig = {\n /**\n * unique viz key\n */\n key: 'splunk.sankey',\n /**\n * viz name\n */\n name: _('Sankey'),\n category: VizCategory.FLOW,\n status: 'preview',\n /**\n * viz icon\n */\n icon: SankeyIcon,\n placeholderIcon: SankeyPlaceholderIcon,\n dataContract,\n size,\n defaultContext,\n optionsSchema,\n editorConfig,\n events: {\n 'node.click': {\n description: 'Triggered when user clicks on a node',\n },\n 'link.click': {\n description: 'Triggered when user clicks on a link',\n },\n },\n supports: [VizBehavior.DYNAMIC_OPTIONS, VizBehavior.EVENTS, VizBehavior.PLACEHOLDER],\n themes,\n requiredProps: [],\n};\n\nexport default enhanceConfig(config);\n","import { _ } from '@splunk/ui-utils/i18n';\nimport { isDynamicOption } from '@splunk/visualizations-shared/configUtils';\n\nexport const getDynamicLinkColorsEditor = ({ defaultContext, defaultPalettesConfig }) => ({\n label: _('Link'),\n option: 'linkColors',\n context: 'linkColorRangeConfig',\n editor: 'editor.dynamicColor',\n showEditor: ({ options }) => isDynamicOption(options.linkColors),\n editorProps: {\n labelPosition: 'top',\n flyoutTitle: _('Dynamic coloring: link'),\n formatters: [\n {\n label: _('Ranges'),\n value: 'rangeValue',\n defaults: {\n linkValues: defaultContext.linkColorRangeConfig,\n },\n },\n {\n label: _('Matches'),\n value: 'matchValue',\n defaults: {\n linkValues: defaultContext.linkColorMatchConfig,\n },\n },\n ],\n dataSelectors: [\n {\n label: _('Link'),\n value: 'linkValues',\n },\n ],\n defaultPalettesConfig,\n },\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 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';\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 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 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: Opts = {}; // 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();\n\n const [useAsyncEvaluatedOptions, setUseAsyncEvaluatedOptions] = React.useState(\n Boolean(getFeatureFlag(featureFlagContext, 'visualizations_useWebWorkersForDSL'))\n );\n const isDownsamplingEnabledByFeatureFlag = Boolean(\n featureFlagContext?.visualizations_enableDownsampling\n );\n\n const isMounted = React.useRef(true);\n const optionsToEvaluate = React.useMemo(\n () => ({\n context: defaultsDeep({}, context, vizConfig.defaultContext),\n options: deepMergeWithArrayPrimitiveOverrides({}, options, defaultOptions),\n }),\n [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((): Record<string, unknown> => {\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 = 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 isTrellisFeatureFlagOn = Boolean(\n featureFlagContext && featureFlagContext.visualizations_enableTrellis\n );\n let clonedEvaluatedOptions = evaluatedOptionsToUse;\n if (\n isTrellisFeatureFlagOn &&\n vizConfig?.supports?.includes(VizBehavior.TRELLIS) &&\n clonedEvaluatedOptions?.splitByLayout === VizBehavior.TRELLIS\n ) {\n clonedEvaluatedOptions = {\n ...evaluatedOptionsToUse,\n backgroundColor: clonedEvaluatedOptions?.trellisBackgroundColor,\n };\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 paginateDataSourceKey =\n (has(evaluatedOptionsToUse, OptionKey) && evaluatedOptionsToUse[OptionKey]) || '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","module.exports = require(\"@splunk/themes/getSettingsFromThemedProps\");","module.exports = require(\"@splunk/visualizations-shared/SanitizeProps\");","module.exports = require(\"@splunk/moment\");","module.exports = require(\"@splunk/async-dynamic-options-evaluator\");","module.exports = require(\"@babel/runtime/helpers/slicedToArray\");","/* 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 { 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","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 * 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 { 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 { useRef, useMemo, useEffect, useState } from 'react';\nimport { debounce, isEqual } 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\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 const previousXAndYFieldsWithTypes = usePrevious(xAndYFieldsWithTypes);\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: xAndYFieldsWithTypes,\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(previousXAndYFieldsWithTypes, xAndYFieldsWithTypes) &&\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: xAndYFieldsWithTypes,\n threshold,\n });\n\n // need to detect if this runs as part of the initial render\n }, [\n dataSources,\n debouncedDownsampleDataSources,\n xAndYFieldsWithTypes,\n threshold,\n isDownsamplingEnabled,\n previousXAndYFieldsWithTypes,\n previousDataSources,\n previousThreshold,\n ]);\n\n return downsampledDataSources;\n};\n\nexport default useDownsampleDataSources;\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 * 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","module.exports = require(\"@splunk/visualization-context/FeatureFlags\");","module.exports = require(\"@babel/runtime/helpers/toConsumableArray\");","module.exports = require(\"@splunk/visualization-icons/placeholders\");","module.exports = require(\"@splunk/visualization-icons\");","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'),\n option: 'backgroundColor',\n editor: 'editor.color',\n editorProps: {\n labelPosition: labelPosition || 'top',\n themes,\n },\n },\n];\n\nexport default background;\n","module.exports = require(\"@splunk/visualization-color-palettes\");","export enum VizBehavior {\n /**\n * Dynamic Options Behavior.\n * This allows visualization options to be powered by data\n *\n * **Example**\n *\n * sparklineValues: \">primary|seriesByIndex(0)\"\n * would configure sparklineValues with an array of data points\n * coming from the first series in the primary datasource\n *\n */\n DYNAMIC_OPTIONS = 'dynamic-options',\n EVENTS = 'events',\n DOWNSAMPLING = 'downsampling',\n /**\n * Placeholder behavior: visualization will display a placeholder rather than fail if any of the `requiredProps` is\n * missing.\n * @type {string}\n */\n PLACEHOLDER = 'placeholder',\n PAGE_AND_SORT = 'page-and-sort',\n TRELLIS = 'trellis',\n}\n","module.exports = require(\"@splunk/themes\");","module.exports = require(\"@splunk/visualization-color-palettes/editors/PresetPalettes\");","module.exports = require(\"@splunk/react-ui/Popover\");","module.exports = require(\"d3-array\");","module.exports = require(\"@babel/runtime/helpers/classCallCheck\");","import styled from 'styled-components';\n\nconst VizStyleWrapper = styled.div.attrs(({ dataTestKey }) => ({\n 'data-test': dataTestKey,\n 'data-testid': dataTestKey,\n}))`\n display: flex;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: ${props => props.backgroundColor};\n`;\n\nVizStyleWrapper.displayName = 'VizStyleWrapper';\n\nexport default VizStyleWrapper;\n"],"sourceRoot":""}
|