@fluentui/react-charting 5.19.20 → 5.19.22
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/CHANGELOG.json +43 -1
- package/CHANGELOG.md +22 -2
- package/dist/react-charting.js +1 -1
- package/dist/react-charting.min.js +1 -1
- package/lib/components/AreaChart/AreaChart.base.js +1 -1
- package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.styles.js +2 -2
- package/lib/components/DonutChart/Arc/Arc.styles.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.styles.js +1 -1
- package/lib/components/GaugeChart/GaugeChart.styles.js.map +1 -1
- package/lib/components/Legends/Legends.base.js +2 -3
- package/lib/components/Legends/Legends.base.js.map +1 -1
- package/lib/components/Legends/Legends.styles.js +8 -4
- package/lib/components/Legends/Legends.styles.js.map +1 -1
- package/lib/components/LineChart/LineChart.base.js +7 -7
- package/lib/components/LineChart/LineChart.base.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/LabelLink.js +1 -1
- package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.base.js +2 -8
- package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib/components/Sparkline/Sparkline.styles.js +1 -1
- package/lib/components/Sparkline/Sparkline.styles.js.map +1 -1
- package/lib/components/TreeChart/TreeChart.styles.js +5 -5
- package/lib/components/TreeChart/TreeChart.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.base.js +2 -2
- package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +2 -2
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/lib-amd/components/AreaChart/AreaChart.base.js +1 -1
- package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib-amd/components/DonutChart/Arc/Arc.styles.js +1 -1
- package/lib-amd/components/DonutChart/Arc/Arc.styles.js.map +1 -1
- package/lib-amd/components/GaugeChart/GaugeChart.styles.js +1 -1
- package/lib-amd/components/GaugeChart/GaugeChart.styles.js.map +1 -1
- package/lib-amd/components/Legends/Legends.base.js +2 -3
- package/lib-amd/components/Legends/Legends.base.js.map +1 -1
- package/lib-amd/components/Legends/Legends.styles.js +8 -4
- package/lib-amd/components/Legends/Legends.styles.js.map +1 -1
- package/lib-amd/components/LineChart/LineChart.base.js +7 -7
- package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-amd/components/LineChart/eventAnnotation/LabelLink.js +1 -1
- package/lib-amd/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib-amd/components/SankeyChart/SankeyChart.base.js +2 -8
- package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib-amd/components/Sparkline/Sparkline.styles.js +1 -1
- package/lib-amd/components/Sparkline/Sparkline.styles.js.map +1 -1
- package/lib-amd/components/TreeChart/TreeChart.styles.js +5 -5
- package/lib-amd/components/TreeChart/TreeChart.styles.js.map +1 -1
- package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +2 -2
- package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +2 -2
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-amd/version.js +1 -1
- package/lib-amd/version.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.base.js +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.styles.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.styles.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.styles.js +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.base.js +2 -3
- package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.styles.js +8 -4
- package/lib-commonjs/components/Legends/Legends.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.base.js +7 -7
- package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +2 -8
- package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.styles.js +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.styles.js.map +1 -1
- package/lib-commonjs/components/TreeChart/TreeChart.styles.js +5 -5
- package/lib-commonjs/components/TreeChart/TreeChart.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +2 -2
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +2 -2
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/version.js +1 -1
- package/lib-commonjs/version.js.map +1 -1
- package/package.json +3 -3
|
@@ -368,12 +368,7 @@ define(["require", "exports", "tslib", "@fluentui/react-focus", "@fluentui/react
|
|
|
368
368
|
React.createElement("linearGradient", { id: "gradient-".concat(linkId_1, "-").concat(index), x1: "0%", y1: "0%", x2: "100%", y2: "0%" },
|
|
369
369
|
React.createElement("stop", { offset: "0", stopColor: singleLink.source.color }),
|
|
370
370
|
React.createElement("stop", { offset: "100%", stopColor: singleLink.target.color }))),
|
|
371
|
-
React.createElement("path", { d: linkArea(dataPoints), id: (0, Utilities_1.getId)('link'), fill: _this._fillStreamColors(singleLink, gradientUrl), stroke: _this._fillStreamBorder(singleLink, gradientUrl), strokeWidth: "2", strokeOpacity: _this._getOpacityStreamBorder(singleLink), onMouseOver: _this._onStreamHover.bind(_this, singleLink), onMouseOut: onMouseOut, onFocus: _this._onFocusLink.bind(_this, singleLink), onBlur: _this._onBlur, fillOpacity: _this._getOpacityStream(singleLink), "data-is-focusable": true, "aria-label":
|
|
372
|
-
singleLink.source.name +
|
|
373
|
-
'to' +
|
|
374
|
-
singleLink.target.name +
|
|
375
|
-
'with weight' +
|
|
376
|
-
singleLink.unnormalizedValue, role: "img" })));
|
|
371
|
+
React.createElement("path", { d: linkArea(dataPoints), id: (0, Utilities_1.getId)('link'), fill: _this._fillStreamColors(singleLink, gradientUrl), stroke: _this._fillStreamBorder(singleLink, gradientUrl), strokeWidth: "2", strokeOpacity: _this._getOpacityStreamBorder(singleLink), onMouseOver: _this._onStreamHover.bind(_this, singleLink), onMouseOut: onMouseOut, onFocus: _this._onFocusLink.bind(_this, singleLink), onBlur: _this._onBlur, fillOpacity: _this._getOpacityStream(singleLink), "data-is-focusable": true, "aria-label": "link from ".concat(singleLink.source.name, " to ").concat(singleLink.target.name, " with weight ").concat(singleLink.unnormalizedValue), role: "img" })));
|
|
377
372
|
links.push(link);
|
|
378
373
|
});
|
|
379
374
|
}
|
|
@@ -412,9 +407,8 @@ define(["require", "exports", "tslib", "@fluentui/react-focus", "@fluentui/react
|
|
|
412
407
|
var id = (0, Utilities_1.getId)('tooltip');
|
|
413
408
|
var div = (0, d3_selection_1.select)('body').append('div').attr('id', id).attr('class', classNames.toolTip).style('opacity', 0);
|
|
414
409
|
var nodeId = (0, Utilities_1.getId)('nodeBar');
|
|
415
|
-
// TODO: Should the `aria-label` be localized?
|
|
416
410
|
var node = (React.createElement("g", { key: index, id: (0, Utilities_1.getId)('nodeGElement') },
|
|
417
|
-
React.createElement("rect", { x: singleNode.x0, y: singleNode.y0, height: height, width: singleNode.x1 - singleNode.x0, fill: _this._fillNodeColors(singleNode), id: nodeId, onMouseOver: _this._onHover.bind(_this, singleNode), onMouseOut: onMouseOut, onFocus: _this._onCloseCallout.bind(_this), stroke: _this._fillNodeBorder(singleNode), strokeWidth: "2", opacity: "1", "data-is-focusable": true, "aria-label":
|
|
411
|
+
React.createElement("rect", { x: singleNode.x0, y: singleNode.y0, height: height, width: singleNode.x1 - singleNode.x0, fill: _this._fillNodeColors(singleNode), id: nodeId, onMouseOver: _this._onHover.bind(_this, singleNode), onMouseOut: onMouseOut, onFocus: _this._onCloseCallout.bind(_this), stroke: _this._fillNodeBorder(singleNode), strokeWidth: "2", opacity: "1", "data-is-focusable": true, "aria-label": "node ".concat(singleNode.name, " with weight ").concat(singleNode.actualValue), role: "img" }),
|
|
418
412
|
singleNode.y1 - singleNode.y0 > MIN_HEIGHT_FOR_TYPE && (React.createElement("g", { className: classNames.nodeTextContainer },
|
|
419
413
|
React.createElement("g", { className: "nodeName" },
|
|
420
414
|
React.createElement("text", { id: "".concat(nodeId, "-name"), x: singleNode.x0, y: singleNode.y0, dy: '1.2em', dx: '0.4em', textAnchor: _this._isRtl ? 'end' : 'start', fontWeight: "regular", "aria-hidden": "true", fill: !(!state_1.selectedState ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SankeyChart.base.js","sourceRoot":"../src/","sources":["components/SankeyChart/SankeyChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FocusZone, FocusZoneDirection, FocusZoneTabbableElements } from '@fluentui/react-focus';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { classNamesFunction, getId, getRTL, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { sum as d3Sum } from 'd3-array';\nimport { SankeyGraph, SankeyLayout, sankey as d3Sankey, sankeyJustify, sankeyRight } from 'd3-sankey';\nimport { select, selectAll } from 'd3-selection';\nimport { area as d3Area, curveBumpX as d3CurveBasis } from 'd3-shape';\nimport * as React from 'react';\nimport { ChartHoverCard, IBasestate, IChartHoverCardProps, SLink, SNode } from '../../index';\nimport { IMargins } from '../../utilities/utilities';\nimport { ISankeyChartData, ISankeyChartProps, ISankeyChartStyleProps, ISankeyChartStyles } from './SankeyChart.types';\n\nconst getClassNames = classNamesFunction<ISankeyChartStyleProps, ISankeyChartStyles>();\nconst PADDING_PERCENTAGE = 0.3;\n\ntype NodesInColumns = { [key: number]: SNode[] };\ntype NodeColors = { fillColor: string; borderColor: string };\n\nexport interface ISankeyChartState extends IBasestate, IChartHoverCardProps {\n containerWidth: number;\n containerHeight: number;\n selectedState: boolean;\n selectedLinks: Set<Number>;\n selectedNodes: Set<Number>;\n selectedNode?: SNode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected?: any;\n selectedLink?: SLink;\n shouldOverflow: boolean;\n}\n\nconst NON_SELECTED_NODE_AND_STREAM_COLOR: string = '#757575';\nconst DEFAULT_NODE_COLORS: NodeColors[] = [\n { fillColor: '#00758F', borderColor: '#002E39' },\n { fillColor: '#77004D', borderColor: '#43002C' },\n { fillColor: '#4F6BED', borderColor: '#3B52B4' },\n { fillColor: '#937600', borderColor: '#6D5700' },\n { fillColor: '#286EA8', borderColor: '#00457E' },\n { fillColor: '#A43FB1', borderColor: '#7C158A' },\n { fillColor: '#CC3595', borderColor: '#7F215D' },\n { fillColor: '#0E7878', borderColor: '#004E4E' },\n { fillColor: '#8764B8', borderColor: '#4B3867' },\n { fillColor: '#9C663F', borderColor: '#6D4123' },\n];\n\nconst MIN_HEIGHT_FOR_DOUBLINE_TYPE = 36;\nconst MIN_HEIGHT_FOR_TYPE = 24;\nconst REST_STREAM_OPACITY: number = 1;\nconst NON_SELECTED_OPACITY: number = 1;\nconst SELECTED_STREAM_OPACITY: number = 0.3;\nconst NON_SELECTED_STREAM_BORDER_OPACITY: number = 0.5;\nconst DEFAULT_TEXT_COLOR: string = '#323130';\nconst NON_SELECTED_TEXT_COLOR: string = '#FFFFFF';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getSelectedNodes(selectedLinks: Set<SLink>): any[] {\n const nodes: SNode[] = [];\n selectedLinks.forEach(link => {\n nodes.push(link.target as SNode);\n\n if (nodes.indexOf(link.source as SNode) === -1) {\n nodes.push(link.source as SNode);\n }\n });\n return nodes;\n}\n\nfunction getSelectedLinks(singleNode: SNode): Set<SLink> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-array-constructor\n const q: any = new Array<any>();\n const finalLinks: Set<SLink> = new Set<SLink>();\n\n singleNode.sourceLinks!.forEach((link: SLink) => {\n q.push(link);\n finalLinks.add(link);\n });\n\n while (q.length > 0) {\n const poppedLink: SLink = q.shift();\n const node: SNode = poppedLink.target as SNode;\n if (node && node.sourceLinks) {\n node.sourceLinks.forEach((link: SLink) => {\n finalLinks.add(link);\n q.push(link);\n });\n }\n }\n\n if (singleNode.targetLinks) {\n singleNode.targetLinks.forEach((link: SLink) => {\n q.push(link);\n finalLinks.add(link);\n });\n }\n\n while (q.length > 0) {\n const poppedLink: SLink = q.shift();\n const node: SNode = poppedLink.source as SNode;\n if (node && node.targetLinks) {\n node.targetLinks.forEach((link: SLink) => {\n finalLinks.add(link);\n q.push(link);\n });\n }\n }\n\n return finalLinks;\n}\n\nfunction getSelectedLinksforStreamHover(singleLink: SLink): { selectedLinks: Set<SLink>; selectedNodes: Set<SNode> } {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-array-constructor\n const q: any = new Array<any>();\n const finalLinks: Set<SLink> = new Set<SLink>();\n const finalNodes: Set<SNode> = new Set<SNode>();\n\n q.push(singleLink.source);\n finalLinks.add(singleLink);\n while (q.length > 0) {\n const poppedNode: SNode = q.shift();\n finalNodes.add(poppedNode);\n if (poppedNode.targetLinks && poppedNode.targetLinks.length > 0) {\n poppedNode.targetLinks.forEach((link: SLink) => {\n q.push(link.source);\n finalLinks.add(link);\n });\n }\n }\n\n q.push(singleLink.target);\n\n while (q.length > 0) {\n const poppedNode: SNode = q.shift();\n finalNodes.add(poppedNode);\n if (poppedNode.sourceLinks && poppedNode.sourceLinks.length > 0) {\n poppedNode.sourceLinks.forEach((link: SLink) => {\n q.push(link.target);\n finalLinks.add(link);\n });\n }\n }\n\n return {\n selectedLinks: finalLinks,\n selectedNodes: finalNodes,\n };\n}\n\n/**\n * This is used to group nodes by column index.\n */\nfunction populateNodeInColumns(graph: ISankeyChartData, sankey: SankeyLayout<SankeyGraph<{}, {}>, {}, {}>) {\n sankey(graph);\n const nodesInColumn: NodesInColumns = {};\n graph.nodes.forEach((node: SNode) => {\n const columnId = node.layer!;\n if (nodesInColumn[columnId]) {\n nodesInColumn[columnId].push(node);\n } else {\n nodesInColumn[columnId] = [node];\n }\n });\n return nodesInColumn;\n}\n\n/**\n * This is used to normalize the nodes value whose value is less than 1% of the total column value.\n */\nfunction adjustOnePercentHeightNodes(nodesInColumn: NodesInColumns) {\n const totalColumnValue = Object.values(nodesInColumn).map((column: SNode[]) => {\n return d3Sum(column, (node: SNode) => node.value);\n });\n totalColumnValue.forEach((columnValue: number, index: number) => {\n let totalPercentage = 0;\n nodesInColumn[index].forEach((node: SNode) => {\n const nodePercentage = (node.value! / columnValue) * 100;\n node.actualValue = node.value;\n //if the value is less than 1% then we are making it as 1% of total .\n if (nodePercentage < 1) {\n node.value = 0.01 * columnValue;\n totalPercentage = totalPercentage + 1;\n } else {\n totalPercentage = totalPercentage + nodePercentage;\n }\n });\n //since we have adjusted the value to be 1% but we need to keep the sum of the percentage value under 100.\n const scalingRatio = totalPercentage !== 0 ? totalPercentage / 100 : 1;\n if (scalingRatio > 1) {\n nodesInColumn[index].forEach((node: SNode) => {\n node.value = node.value! / scalingRatio;\n changeColumnValue(node, node.actualValue!, node.value);\n });\n }\n });\n}\n\n/**\n * This is used for normalizing each links value for reflecting the normalized node value.\n */\nfunction changeColumnValue(node: SNode, originalValue: number, normalizedValue: number) {\n node.sourceLinks!.forEach((link: SLink) => {\n link.unnormalizedValue = link.value;\n const linkRatio = link.value / originalValue;\n link.value = normalizedValue * linkRatio;\n });\n node.targetLinks!.forEach((link: SLink) => {\n link.unnormalizedValue = link.value;\n const linkRatio = link.value / originalValue;\n link.value = normalizedValue * linkRatio;\n });\n}\n\n/**\n * This is used for calculating the node non normalized value based on link non normalized value.\n */\nfunction populateNodeActualValue(data: ISankeyChartData) {\n data.links.forEach((link: SLink) => {\n if (!link.unnormalizedValue) {\n link.unnormalizedValue = link.value;\n }\n });\n data.nodes.forEach((node: SNode) => {\n node.actualValue = Math.max(\n d3Sum(node.sourceLinks!, (link: SLink) => link.unnormalizedValue),\n d3Sum(node.targetLinks!, (link: SLink) => link.unnormalizedValue),\n );\n });\n}\n\nexport class SankeyChartBase extends React.Component<ISankeyChartProps, ISankeyChartState> {\n private chartContainer: HTMLDivElement;\n private _reqID: number;\n private _calloutId: string;\n private _linkId: string;\n private _nodesInColumn: NodesInColumns;\n private _sankey: SankeyLayout<SankeyGraph<{}, {}>, {}, {}>;\n private _margins: IMargins;\n private _isRtl: boolean = getRTL();\n private _normalizeData: (data: ISankeyChartData) => void;\n private _emptyChartId: string;\n\n constructor(props: ISankeyChartProps) {\n super(props);\n this.state = {\n containerHeight: 468,\n containerWidth: 912,\n selectedState: false,\n selectedLinks: new Set<number>(),\n selectedNodes: new Set<number>(),\n shouldOverflow: false,\n isCalloutVisible: false,\n };\n this._calloutId = getId('callout');\n this._linkId = getId('link');\n this._margins = { top: 36, right: 48, bottom: 32, left: 48 };\n this._preRenderLayout();\n this._normalizeData = memoizeFunction((data: ISankeyChartData) => this._normalizeSankeyData(data));\n this._emptyChartId = getId('_SankeyChart_empty');\n }\n\n public componentDidMount(): void {\n this._fitParentContainer();\n }\n\n public componentDidUpdate(prevProps: ISankeyChartProps): void {\n if (prevProps.shouldResize !== this.props.shouldResize) {\n this._fitParentContainer();\n }\n }\n\n public componentWillUnmount(): void {\n cancelAnimationFrame(this._reqID);\n }\n\n public render(): React.ReactNode {\n if (!this._isChartEmpty()) {\n const { theme, className, styles, pathColor } = this.props;\n const state = this.state;\n const classNames: IProcessedStyleSet<ISankeyChartStyles> = getClassNames(styles!, {\n theme: theme!,\n width: state.containerWidth,\n height: state.containerHeight,\n pathColor,\n className,\n });\n // We are using the this._margins.left and this._margins.top in sankey extent while constructing the layout\n const { height, width } = this._preRenderLayout();\n const sankeyChartData = this.props.data.SankeyChartData!;\n this._normalizeData(sankeyChartData);\n let nodePadding = 8;\n nodePadding = this._adjustPadding(this._sankey, height - 6, this._nodesInColumn);\n\n this._sankey.nodePadding(nodePadding);\n this._sankey(sankeyChartData);\n populateNodeActualValue(sankeyChartData);\n this._assignNodeColors();\n const nodeData = this._createNodes(classNames);\n const linkData = this._createLinks();\n const calloutProps = {\n isCalloutVisible: state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n target: state.refSelected,\n color: state.color,\n XValue: state.xCalloutValue,\n YValue: state.yCalloutValue ? state.yCalloutValue : state.dataForHoverCard,\n descriptionMessage: state.descriptionMessage,\n isBeakVisible: false,\n gapSpace: 15,\n onDismiss: this._onCloseCallout,\n className: classNames.calloutContentRoot,\n preventDismissOnLostFocus: true,\n };\n return (\n <div\n className={classNames.root}\n role={'presentation'}\n ref={(rootElem: HTMLDivElement) => (this.chartContainer = rootElem)}\n onMouseLeave={this._onCloseCallout}\n >\n <FocusZone\n direction={FocusZoneDirection.bidirectional}\n isCircularNavigation={true}\n handleTabKey={FocusZoneTabbableElements.all}\n >\n <svg width={width} height={height} id={getId('sankeyChart')}>\n <g className={classNames.links} strokeOpacity={1}>\n {linkData}\n </g>\n <g className={classNames.nodes}>{nodeData}</g>\n {calloutProps.isCalloutVisible && (\n <Callout {...calloutProps}>\n <ChartHoverCard\n XValue={calloutProps.XValue}\n YValue={calloutProps.YValue}\n color={calloutProps.color}\n descriptionMessage={calloutProps.descriptionMessage ? calloutProps.descriptionMessage : ''}\n />\n </Callout>\n )}\n </svg>\n </FocusZone>\n </div>\n );\n }\n return (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n private _preRenderLayout(): { height: number; width: number } {\n const { containerHeight, containerWidth } = this.state;\n const { left, right, top, bottom } = this._margins;\n const width = containerWidth - right!;\n const height = containerHeight - bottom! > 0 ? containerHeight - bottom! : 0;\n\n this._sankey = d3Sankey()\n .nodeWidth(124)\n .extent([\n [left!, top!],\n [width - 1, height - 6],\n ])\n .nodeAlign(this._isRtl ? sankeyRight : sankeyJustify);\n\n return { height, width };\n }\n\n private _normalizeSankeyData(data: ISankeyChartData): void {\n const nodesInColumn = (this._nodesInColumn = populateNodeInColumns(data, this._sankey));\n adjustOnePercentHeightNodes(nodesInColumn);\n }\n\n /**\n * This is used to introduce dynamic padding for cases where the number of nodes in a column is huge\n * so that we maintain a node to space ratio for such columns as if we fail to do so the\n * chart is devoid of nodes and only shows links.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _adjustPadding(sankey: any, height: number, nodesInColumn: NodesInColumns) {\n let padding = this._sankey.nodePadding();\n Object.values(nodesInColumn).forEach((column: SNode[]) => {\n const minPadding = PADDING_PERCENTAGE * height;\n const toatlPaddingInColumn = height - d3Sum(column, (node: SNode) => node.y1! - node.y0!);\n if (minPadding < toatlPaddingInColumn) {\n //Here we are calculating the min of default and calculated padding, we will not increase the padding\n //in any scenario.\n padding = Math.min(padding, minPadding / (column.length - 1));\n }\n });\n return padding;\n }\n\n private _createLinks(): React.ReactNode[] | undefined {\n const links: React.ReactNode[] = [];\n\n const sankeyChartData = this.props.data.SankeyChartData;\n if (sankeyChartData) {\n const linkId = this._linkId;\n sankeyChartData.links.forEach((singleLink: SLink, index: number) => {\n const onMouseOut = () => {\n this._onStreamLeave(singleLink);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = (d: any) => {\n return [\n { x: d.source.x1, y0: d.y0 + d.width / 2, y1: d.y0 - d.width / 2 },\n { x: d.target.x0, y0: d.y1 + d.width / 2, y1: d.y1 - d.width / 2 },\n ];\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataPoints: Array<any> = data(singleLink);\n const linkArea = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((p: any) => p.x)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((p: any) => p.y0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((p: any) => p.y1)\n .curve(d3CurveBasis);\n const gradientUrl = `url(#gradient-${linkId}-${index})`;\n const link = (\n <g key={`${linkId}-${index}`}>\n <defs>\n <linearGradient id={`gradient-${linkId}-${index}`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0\" stopColor={(singleLink.source as SNode).color} />\n <stop offset=\"100%\" stopColor={(singleLink.target as SNode).color} />\n </linearGradient>\n </defs>\n <path\n d={linkArea(dataPoints)!}\n id={getId('link')}\n fill={this._fillStreamColors(singleLink, gradientUrl)}\n stroke={this._fillStreamBorder(singleLink, gradientUrl)}\n strokeWidth=\"2\"\n strokeOpacity={this._getOpacityStreamBorder(singleLink)}\n onMouseOver={this._onStreamHover.bind(this, singleLink)}\n onMouseOut={onMouseOut}\n onFocus={this._onFocusLink.bind(this, singleLink)}\n onBlur={this._onBlur}\n fillOpacity={this._getOpacityStream(singleLink)}\n data-is-focusable={true}\n aria-label={\n 'link from' +\n (singleLink.source as SNode).name +\n 'to' +\n (singleLink.target as SNode).name +\n 'with weight' +\n singleLink!.unnormalizedValue\n }\n role=\"img\"\n />\n </g>\n );\n links.push(link);\n });\n }\n return links;\n }\n\n private _createNodes(classNames: IProcessedStyleSet<ISankeyChartStyles>): React.ReactNode[] | undefined {\n const nodes: React.ReactNode[] = [];\n\n const sankeyChartData = this.props.data.SankeyChartData;\n if (sankeyChartData) {\n const state = this.state;\n sankeyChartData.nodes.forEach((singleNode: SNode, index: number) => {\n const onMouseOut = () => {\n this._onLeave(singleNode);\n };\n const height = singleNode.y1! - singleNode.y0! > 0 ? singleNode.y1! - singleNode.y0! : 0;\n let padding = 8;\n let textLengthForNodeWeight = 0;\n\n // If the nodeWeight is in the same line as node description an extra padding\n // of 6 px is required between node description and node weight.\n if (height < MIN_HEIGHT_FOR_DOUBLINE_TYPE) {\n padding = padding + 6;\n const tspan = select('.nodeName').append('text').attr('class', 'tempText').append('tspan').text(null);\n tspan.text(singleNode.actualValue!);\n if (tspan.node() !== null) {\n textLengthForNodeWeight = tspan.node()!.getComputedTextLength();\n padding = padding + textLengthForNodeWeight;\n }\n tspan.text(null);\n selectAll('.tempText').remove();\n }\n // Since the total width of the node is 124 and we are giving margin of 8px from the left .\n //So the actual value on which it will be truncated is 124-8=116.\n const truncatedname: string = this._truncateText(singleNode.name, 116, padding);\n const isTruncated: boolean = truncatedname.slice(-3) === '...';\n const id = getId('tooltip');\n const div = select('body').append('div').attr('id', id).attr('class', classNames.toolTip!).style('opacity', 0);\n const nodeId = getId('nodeBar');\n // TODO: Should the `aria-label` be localized?\n const node = (\n <g key={index} id={getId('nodeGElement')}>\n <rect\n x={singleNode.x0}\n y={singleNode.y0}\n height={height}\n width={singleNode.x1! - singleNode.x0!}\n fill={this._fillNodeColors(singleNode)}\n id={nodeId}\n onMouseOver={this._onHover.bind(this, singleNode)}\n onMouseOut={onMouseOut}\n onFocus={this._onCloseCallout.bind(this)}\n stroke={this._fillNodeBorder(singleNode)}\n strokeWidth=\"2\"\n opacity=\"1\"\n data-is-focusable={true}\n aria-label={'node' + `${singleNode.name}` + 'with weight' + `${singleNode.actualValue}`}\n role=\"img\"\n />\n {singleNode.y1! - singleNode.y0! > MIN_HEIGHT_FOR_TYPE && (\n <g className={classNames.nodeTextContainer}>\n <g className=\"nodeName\">\n <text\n id={`${nodeId}-name`}\n x={singleNode.x0}\n y={singleNode.y0}\n dy={'1.2em'}\n dx={'0.4em'}\n textAnchor={this._isRtl ? 'end' : 'start'}\n fontWeight=\"regular\"\n aria-hidden=\"true\"\n fill={\n !(\n !state.selectedState ||\n (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) ||\n (state.selectedState && !state.selectedNode)\n )\n ? DEFAULT_TEXT_COLOR\n : NON_SELECTED_TEXT_COLOR\n }\n fontSize={10}\n onMouseOver={this._showTooltip.bind(this, singleNode.name, isTruncated, div)}\n onMouseOut={this._hideTooltip.bind(this, div)}\n >\n {truncatedname}\n </text>\n </g>\n\n <text\n x={\n height > MIN_HEIGHT_FOR_DOUBLINE_TYPE ? singleNode.x0 : singleNode.x1! - textLengthForNodeWeight - 8\n }\n y={singleNode.y0}\n dy={height > MIN_HEIGHT_FOR_DOUBLINE_TYPE ? '2em' : '1em'}\n dx={height > MIN_HEIGHT_FOR_DOUBLINE_TYPE ? '0.4em' : '0em'}\n textAnchor={this._isRtl ? 'end' : 'start'}\n fontWeight=\"bold\"\n aria-hidden=\"true\"\n fill={\n !(\n !state.selectedState ||\n (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) ||\n (state.selectedState && !state.selectedNode)\n )\n ? DEFAULT_TEXT_COLOR\n : NON_SELECTED_TEXT_COLOR\n }\n fontSize={14}\n >\n {singleNode.actualValue}\n </text>\n </g>\n )}\n </g>\n );\n nodes.push(node);\n });\n return nodes;\n }\n }\n\n private _onLeave(singleNode: SNode) {\n if (this.state.selectedState) {\n this.setState({\n selectedState: false,\n selectedNodes: new Set<number>(),\n selectedLinks: new Set<number>(),\n selectedNode: undefined,\n });\n }\n }\n\n private _onHover(singleNode: SNode, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n this._onCloseCallout();\n if (!this.state.selectedState) {\n const selectedLinks = getSelectedLinks(singleNode);\n const selectedNodes = getSelectedNodes(selectedLinks);\n selectedNodes.push(singleNode);\n this.setState({\n selectedState: true,\n selectedNodes: new Set<number>(Array.from(selectedNodes).map(node => node.index)),\n selectedLinks: new Set<number>(Array.from(selectedLinks).map(link => link.index!)),\n selectedNode: singleNode,\n refSelected: mouseEvent, //this._refArray.get(index),\n isCalloutVisible: singleNode.y1! - singleNode.y0! < MIN_HEIGHT_FOR_TYPE,\n color: singleNode.color,\n xCalloutValue: singleNode.name,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yCalloutValue: singleNode.actualValue! as any as string,\n });\n }\n }\n\n private _onStreamHover(singleLink: SLink, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n this._onCloseCallout();\n if (!this.state.selectedState) {\n const { selectedLinks, selectedNodes } = getSelectedLinksforStreamHover(singleLink);\n this.setState({\n selectedState: true,\n selectedNodes: new Set<number>(Array.from(selectedNodes).map(node => node.index!)),\n selectedLinks: new Set<number>(Array.from(selectedLinks).map(link => link.index!)),\n refSelected: mouseEvent,\n selectedLink: singleLink,\n isCalloutVisible: true,\n color: (singleLink.source as SNode).color,\n xCalloutValue: (singleLink.target as SNode).name,\n yCalloutValue: singleLink.unnormalizedValue!.toString(),\n descriptionMessage: 'from ' + (singleLink.source as SNode).name, // TODO: Does this need to be localized?\n });\n }\n }\n\n private _onStreamLeave(singleLink: SLink) {\n if (this.state.selectedState) {\n this.setState({\n selectedState: false,\n selectedNodes: new Set<number>(),\n selectedLinks: new Set<number>(),\n selectedLink: undefined,\n });\n }\n }\n\n private _onFocusLink(singleLink: SLink, element: React.FocusEvent<SVGElement>): void {\n element.persist();\n this._onCloseCallout();\n this.setState({\n refSelected: element.currentTarget,\n selectedLink: singleLink,\n isCalloutVisible: true,\n color: (singleLink.source as SNode).color,\n xCalloutValue: (singleLink.target as SNode).name,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yCalloutValue: (singleLink.source as SNode).actualValue! as any as string,\n descriptionMessage: 'from ' + (singleLink.source as SNode).name, // TODO: Does this need to be localized?\n });\n }\n\n private _onCloseCallout = () => {\n this.setState({\n isCalloutVisible: false,\n refSelected: undefined,\n descriptionMessage: '',\n });\n };\n\n private _onBlur = (): void => {\n /**/\n };\n\n private _fillNodeColors = (singleNode: SNode): string | undefined => {\n const state = this.state;\n if (!state.selectedState) {\n return singleNode.color;\n } else if (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) {\n return state.selectedNode.color;\n } else if (state.selectedState && !state.selectedNode) {\n return singleNode.color;\n }\n };\n\n /**\n * This is used to assign node fillcolors and borderColor cyclically when the user doesnt\n * provide color to individual node.\n */\n private _assignNodeColors() {\n let colors: string[];\n let borders: string[];\n const { colorsForNodes, borderColorsForNodes } = this.props;\n if (colorsForNodes && borderColorsForNodes) {\n colors = colorsForNodes;\n borders = borderColorsForNodes;\n } else {\n colors = DEFAULT_NODE_COLORS.map(color => color.fillColor);\n borders = DEFAULT_NODE_COLORS.map(color => color.borderColor);\n }\n let currentIndex = 0;\n this.props.data.SankeyChartData!.nodes.forEach((node: SNode) => {\n if (!node.color && !node.borderColor) {\n node.color = colors[currentIndex];\n node.borderColor = borders[currentIndex];\n } else if (node.color && !node.borderColor) {\n node.borderColor = '#757575';\n } else if (node.borderColor && !node.color) {\n node.color = '#F5F5F5';\n }\n currentIndex = (currentIndex + 1) % colors.length;\n });\n }\n\n private _fillStreamColors(singleLink: SLink, gradientUrl: string): string | undefined {\n const state = this.state;\n if (state.selectedState && state.selectedLinks.has(singleLink.index!) && state.selectedNode) {\n return state.selectedNode.color;\n } else if (state.selectedState && state.selectedLinks.has(singleLink.index!)) {\n return gradientUrl;\n }\n }\n\n private _fillStreamBorder(singleLink: SLink, gradientUrl: string): string {\n const state = this.state;\n if (!state.selectedState) {\n return NON_SELECTED_NODE_AND_STREAM_COLOR;\n } else if (state.selectedState && state.selectedLinks.has(singleLink.index!) && state.selectedNode) {\n return state.selectedNode.borderColor!;\n } else if (state.selectedState && state.selectedLinks.has(singleLink.index!)) {\n return gradientUrl;\n }\n return NON_SELECTED_NODE_AND_STREAM_COLOR;\n }\n\n private _fillNodeBorder = (singleNode: SNode): string => {\n const state = this.state;\n if (!state.selectedState) {\n return singleNode.borderColor!;\n } else if (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) {\n return state.selectedNode.borderColor!;\n } else if (state.selectedState && state.selectedNodes.has(singleNode.index!)) {\n return singleNode.borderColor!;\n }\n return singleNode.borderColor!;\n };\n\n private _getOpacityStream(singleLink: SLink): number {\n const state = this.state;\n if (state.selectedState) {\n if (!state.selectedLinks.has(singleLink.index!)) {\n return NON_SELECTED_OPACITY;\n } else if (state.selectedLinks.has(singleLink.index!) && !state.selectedNode) {\n return SELECTED_STREAM_OPACITY;\n }\n }\n return REST_STREAM_OPACITY;\n }\n\n private _getOpacityStreamBorder(singleLink: SLink): number {\n const state = this.state;\n if (state.selectedState && !state.selectedLinks.has(singleLink.index!) && !state.selectedNode) {\n return NON_SELECTED_STREAM_BORDER_OPACITY;\n }\n\n return NON_SELECTED_OPACITY;\n }\n\n private _fitParentContainer(): void {\n const { containerWidth, containerHeight } = this.state;\n this._reqID = requestAnimationFrame(() => {\n const container = this.props.parentRef ? this.props.parentRef : this.chartContainer;\n const currentContainerWidth = container && container.getBoundingClientRect().width;\n const currentContainerHeight = container && container.getBoundingClientRect().height;\n const shouldResize = containerWidth !== currentContainerWidth || containerHeight !== currentContainerHeight;\n if (shouldResize) {\n this.setState({\n containerWidth: currentContainerWidth,\n containerHeight: currentContainerHeight,\n });\n }\n });\n }\n\n /**\n * @param text is the text which we are trying to truncate\n * @param rectangleWidth is the width of the rectangle which will contain the text\n * @param padding is the space we need to leave between the rect lines and other text\n * @param nodeWeight is the text if present needs to be accomodate in the same line as text.\n * @returns the truncated text , if truncated given the above parameters.\n */\n private _truncateText(text: string, rectangleWidth: number, padding: number) {\n const textLengthForNodeName = rectangleWidth - padding;\n let elipsisLength = 0;\n const tspan = select('.nodeName')\n .append('text')\n .attr('class', 'tempText')\n .attr('font-size', '10')\n .append('tspan')\n .text(null);\n tspan.text(text);\n if (tspan.node() !== null && tspan.node()!.getComputedTextLength() <= textLengthForNodeName) {\n return text;\n }\n tspan.text(null);\n tspan.text('...');\n if (tspan.node() !== null) {\n elipsisLength = tspan.node()!.getComputedTextLength();\n }\n tspan.text(null);\n let line: string = '';\n for (let i = 0; i < text.length; i++) {\n line += text[i];\n tspan.text(line);\n if (tspan.node() !== null) {\n const w = tspan.node()!.getComputedTextLength();\n if (w >= textLengthForNodeName - elipsisLength) {\n line = line.slice(0, -1);\n line += '...';\n break;\n }\n }\n }\n tspan.text(null);\n selectAll('.tempText').remove();\n return line;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _showTooltip(text: string, checkTrcuncated: boolean, div: any, evt: any) {\n if (checkTrcuncated) {\n //Fixing tooltip position by attaching it to the element rather than page\n div.style('opacity', 0.9);\n div\n .html(text)\n .style('left', evt.pageX + 'px')\n .style('top', evt.pageY - 28 + 'px');\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _hideTooltip(div: any) {\n div.style('opacity', 0);\n }\n\n private _isChartEmpty() {\n const sankeyChartData = this.props.data?.SankeyChartData;\n return !(sankeyChartData && sankeyChartData.nodes.length > 0 && sankeyChartData.links.length > 0);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SankeyChart.base.js","sourceRoot":"../src/","sources":["components/SankeyChart/SankeyChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FocusZone, FocusZoneDirection, FocusZoneTabbableElements } from '@fluentui/react-focus';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { classNamesFunction, getId, getRTL, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { sum as d3Sum } from 'd3-array';\nimport { SankeyGraph, SankeyLayout, sankey as d3Sankey, sankeyJustify, sankeyRight } from 'd3-sankey';\nimport { select, selectAll } from 'd3-selection';\nimport { area as d3Area, curveBumpX as d3CurveBasis } from 'd3-shape';\nimport * as React from 'react';\nimport { ChartHoverCard, IBasestate, IChartHoverCardProps, SLink, SNode } from '../../index';\nimport { IMargins } from '../../utilities/utilities';\nimport { ISankeyChartData, ISankeyChartProps, ISankeyChartStyleProps, ISankeyChartStyles } from './SankeyChart.types';\n\nconst getClassNames = classNamesFunction<ISankeyChartStyleProps, ISankeyChartStyles>();\nconst PADDING_PERCENTAGE = 0.3;\n\ntype NodesInColumns = { [key: number]: SNode[] };\ntype NodeColors = { fillColor: string; borderColor: string };\n\nexport interface ISankeyChartState extends IBasestate, IChartHoverCardProps {\n containerWidth: number;\n containerHeight: number;\n selectedState: boolean;\n selectedLinks: Set<Number>;\n selectedNodes: Set<Number>;\n selectedNode?: SNode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected?: any;\n selectedLink?: SLink;\n shouldOverflow: boolean;\n}\n\nconst NON_SELECTED_NODE_AND_STREAM_COLOR: string = '#757575';\nconst DEFAULT_NODE_COLORS: NodeColors[] = [\n { fillColor: '#00758F', borderColor: '#002E39' },\n { fillColor: '#77004D', borderColor: '#43002C' },\n { fillColor: '#4F6BED', borderColor: '#3B52B4' },\n { fillColor: '#937600', borderColor: '#6D5700' },\n { fillColor: '#286EA8', borderColor: '#00457E' },\n { fillColor: '#A43FB1', borderColor: '#7C158A' },\n { fillColor: '#CC3595', borderColor: '#7F215D' },\n { fillColor: '#0E7878', borderColor: '#004E4E' },\n { fillColor: '#8764B8', borderColor: '#4B3867' },\n { fillColor: '#9C663F', borderColor: '#6D4123' },\n];\n\nconst MIN_HEIGHT_FOR_DOUBLINE_TYPE = 36;\nconst MIN_HEIGHT_FOR_TYPE = 24;\nconst REST_STREAM_OPACITY: number = 1;\nconst NON_SELECTED_OPACITY: number = 1;\nconst SELECTED_STREAM_OPACITY: number = 0.3;\nconst NON_SELECTED_STREAM_BORDER_OPACITY: number = 0.5;\nconst DEFAULT_TEXT_COLOR: string = '#323130';\nconst NON_SELECTED_TEXT_COLOR: string = '#FFFFFF';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getSelectedNodes(selectedLinks: Set<SLink>): any[] {\n const nodes: SNode[] = [];\n selectedLinks.forEach(link => {\n nodes.push(link.target as SNode);\n\n if (nodes.indexOf(link.source as SNode) === -1) {\n nodes.push(link.source as SNode);\n }\n });\n return nodes;\n}\n\nfunction getSelectedLinks(singleNode: SNode): Set<SLink> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-array-constructor\n const q: any = new Array<any>();\n const finalLinks: Set<SLink> = new Set<SLink>();\n\n singleNode.sourceLinks!.forEach((link: SLink) => {\n q.push(link);\n finalLinks.add(link);\n });\n\n while (q.length > 0) {\n const poppedLink: SLink = q.shift();\n const node: SNode = poppedLink.target as SNode;\n if (node && node.sourceLinks) {\n node.sourceLinks.forEach((link: SLink) => {\n finalLinks.add(link);\n q.push(link);\n });\n }\n }\n\n if (singleNode.targetLinks) {\n singleNode.targetLinks.forEach((link: SLink) => {\n q.push(link);\n finalLinks.add(link);\n });\n }\n\n while (q.length > 0) {\n const poppedLink: SLink = q.shift();\n const node: SNode = poppedLink.source as SNode;\n if (node && node.targetLinks) {\n node.targetLinks.forEach((link: SLink) => {\n finalLinks.add(link);\n q.push(link);\n });\n }\n }\n\n return finalLinks;\n}\n\nfunction getSelectedLinksforStreamHover(singleLink: SLink): { selectedLinks: Set<SLink>; selectedNodes: Set<SNode> } {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-array-constructor\n const q: any = new Array<any>();\n const finalLinks: Set<SLink> = new Set<SLink>();\n const finalNodes: Set<SNode> = new Set<SNode>();\n\n q.push(singleLink.source);\n finalLinks.add(singleLink);\n while (q.length > 0) {\n const poppedNode: SNode = q.shift();\n finalNodes.add(poppedNode);\n if (poppedNode.targetLinks && poppedNode.targetLinks.length > 0) {\n poppedNode.targetLinks.forEach((link: SLink) => {\n q.push(link.source);\n finalLinks.add(link);\n });\n }\n }\n\n q.push(singleLink.target);\n\n while (q.length > 0) {\n const poppedNode: SNode = q.shift();\n finalNodes.add(poppedNode);\n if (poppedNode.sourceLinks && poppedNode.sourceLinks.length > 0) {\n poppedNode.sourceLinks.forEach((link: SLink) => {\n q.push(link.target);\n finalLinks.add(link);\n });\n }\n }\n\n return {\n selectedLinks: finalLinks,\n selectedNodes: finalNodes,\n };\n}\n\n/**\n * This is used to group nodes by column index.\n */\nfunction populateNodeInColumns(graph: ISankeyChartData, sankey: SankeyLayout<SankeyGraph<{}, {}>, {}, {}>) {\n sankey(graph);\n const nodesInColumn: NodesInColumns = {};\n graph.nodes.forEach((node: SNode) => {\n const columnId = node.layer!;\n if (nodesInColumn[columnId]) {\n nodesInColumn[columnId].push(node);\n } else {\n nodesInColumn[columnId] = [node];\n }\n });\n return nodesInColumn;\n}\n\n/**\n * This is used to normalize the nodes value whose value is less than 1% of the total column value.\n */\nfunction adjustOnePercentHeightNodes(nodesInColumn: NodesInColumns) {\n const totalColumnValue = Object.values(nodesInColumn).map((column: SNode[]) => {\n return d3Sum(column, (node: SNode) => node.value);\n });\n totalColumnValue.forEach((columnValue: number, index: number) => {\n let totalPercentage = 0;\n nodesInColumn[index].forEach((node: SNode) => {\n const nodePercentage = (node.value! / columnValue) * 100;\n node.actualValue = node.value;\n //if the value is less than 1% then we are making it as 1% of total .\n if (nodePercentage < 1) {\n node.value = 0.01 * columnValue;\n totalPercentage = totalPercentage + 1;\n } else {\n totalPercentage = totalPercentage + nodePercentage;\n }\n });\n //since we have adjusted the value to be 1% but we need to keep the sum of the percentage value under 100.\n const scalingRatio = totalPercentage !== 0 ? totalPercentage / 100 : 1;\n if (scalingRatio > 1) {\n nodesInColumn[index].forEach((node: SNode) => {\n node.value = node.value! / scalingRatio;\n changeColumnValue(node, node.actualValue!, node.value);\n });\n }\n });\n}\n\n/**\n * This is used for normalizing each links value for reflecting the normalized node value.\n */\nfunction changeColumnValue(node: SNode, originalValue: number, normalizedValue: number) {\n node.sourceLinks!.forEach((link: SLink) => {\n link.unnormalizedValue = link.value;\n const linkRatio = link.value / originalValue;\n link.value = normalizedValue * linkRatio;\n });\n node.targetLinks!.forEach((link: SLink) => {\n link.unnormalizedValue = link.value;\n const linkRatio = link.value / originalValue;\n link.value = normalizedValue * linkRatio;\n });\n}\n\n/**\n * This is used for calculating the node non normalized value based on link non normalized value.\n */\nfunction populateNodeActualValue(data: ISankeyChartData) {\n data.links.forEach((link: SLink) => {\n if (!link.unnormalizedValue) {\n link.unnormalizedValue = link.value;\n }\n });\n data.nodes.forEach((node: SNode) => {\n node.actualValue = Math.max(\n d3Sum(node.sourceLinks!, (link: SLink) => link.unnormalizedValue),\n d3Sum(node.targetLinks!, (link: SLink) => link.unnormalizedValue),\n );\n });\n}\n\nexport class SankeyChartBase extends React.Component<ISankeyChartProps, ISankeyChartState> {\n private chartContainer: HTMLDivElement;\n private _reqID: number;\n private _calloutId: string;\n private _linkId: string;\n private _nodesInColumn: NodesInColumns;\n private _sankey: SankeyLayout<SankeyGraph<{}, {}>, {}, {}>;\n private _margins: IMargins;\n private _isRtl: boolean = getRTL();\n private _normalizeData: (data: ISankeyChartData) => void;\n private _emptyChartId: string;\n\n constructor(props: ISankeyChartProps) {\n super(props);\n this.state = {\n containerHeight: 468,\n containerWidth: 912,\n selectedState: false,\n selectedLinks: new Set<number>(),\n selectedNodes: new Set<number>(),\n shouldOverflow: false,\n isCalloutVisible: false,\n };\n this._calloutId = getId('callout');\n this._linkId = getId('link');\n this._margins = { top: 36, right: 48, bottom: 32, left: 48 };\n this._preRenderLayout();\n this._normalizeData = memoizeFunction((data: ISankeyChartData) => this._normalizeSankeyData(data));\n this._emptyChartId = getId('_SankeyChart_empty');\n }\n\n public componentDidMount(): void {\n this._fitParentContainer();\n }\n\n public componentDidUpdate(prevProps: ISankeyChartProps): void {\n if (prevProps.shouldResize !== this.props.shouldResize) {\n this._fitParentContainer();\n }\n }\n\n public componentWillUnmount(): void {\n cancelAnimationFrame(this._reqID);\n }\n\n public render(): React.ReactNode {\n if (!this._isChartEmpty()) {\n const { theme, className, styles, pathColor } = this.props;\n const state = this.state;\n const classNames: IProcessedStyleSet<ISankeyChartStyles> = getClassNames(styles!, {\n theme: theme!,\n width: state.containerWidth,\n height: state.containerHeight,\n pathColor,\n className,\n });\n // We are using the this._margins.left and this._margins.top in sankey extent while constructing the layout\n const { height, width } = this._preRenderLayout();\n const sankeyChartData = this.props.data.SankeyChartData!;\n this._normalizeData(sankeyChartData);\n let nodePadding = 8;\n nodePadding = this._adjustPadding(this._sankey, height - 6, this._nodesInColumn);\n\n this._sankey.nodePadding(nodePadding);\n this._sankey(sankeyChartData);\n populateNodeActualValue(sankeyChartData);\n this._assignNodeColors();\n const nodeData = this._createNodes(classNames);\n const linkData = this._createLinks();\n const calloutProps = {\n isCalloutVisible: state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n target: state.refSelected,\n color: state.color,\n XValue: state.xCalloutValue,\n YValue: state.yCalloutValue ? state.yCalloutValue : state.dataForHoverCard,\n descriptionMessage: state.descriptionMessage,\n isBeakVisible: false,\n gapSpace: 15,\n onDismiss: this._onCloseCallout,\n className: classNames.calloutContentRoot,\n preventDismissOnLostFocus: true,\n };\n return (\n <div\n className={classNames.root}\n role={'presentation'}\n ref={(rootElem: HTMLDivElement) => (this.chartContainer = rootElem)}\n onMouseLeave={this._onCloseCallout}\n >\n <FocusZone\n direction={FocusZoneDirection.bidirectional}\n isCircularNavigation={true}\n handleTabKey={FocusZoneTabbableElements.all}\n >\n <svg width={width} height={height} id={getId('sankeyChart')}>\n <g className={classNames.links} strokeOpacity={1}>\n {linkData}\n </g>\n <g className={classNames.nodes}>{nodeData}</g>\n {calloutProps.isCalloutVisible && (\n <Callout {...calloutProps}>\n <ChartHoverCard\n XValue={calloutProps.XValue}\n YValue={calloutProps.YValue}\n color={calloutProps.color}\n descriptionMessage={calloutProps.descriptionMessage ? calloutProps.descriptionMessage : ''}\n />\n </Callout>\n )}\n </svg>\n </FocusZone>\n </div>\n );\n }\n return (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'} // TODO: Localize this string\n />\n );\n }\n\n private _preRenderLayout(): { height: number; width: number } {\n const { containerHeight, containerWidth } = this.state;\n const { left, right, top, bottom } = this._margins;\n const width = containerWidth - right!;\n const height = containerHeight - bottom! > 0 ? containerHeight - bottom! : 0;\n\n this._sankey = d3Sankey()\n .nodeWidth(124)\n .extent([\n [left!, top!],\n [width - 1, height - 6],\n ])\n .nodeAlign(this._isRtl ? sankeyRight : sankeyJustify);\n\n return { height, width };\n }\n\n private _normalizeSankeyData(data: ISankeyChartData): void {\n const nodesInColumn = (this._nodesInColumn = populateNodeInColumns(data, this._sankey));\n adjustOnePercentHeightNodes(nodesInColumn);\n }\n\n /**\n * This is used to introduce dynamic padding for cases where the number of nodes in a column is huge\n * so that we maintain a node to space ratio for such columns as if we fail to do so the\n * chart is devoid of nodes and only shows links.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _adjustPadding(sankey: any, height: number, nodesInColumn: NodesInColumns) {\n let padding = this._sankey.nodePadding();\n Object.values(nodesInColumn).forEach((column: SNode[]) => {\n const minPadding = PADDING_PERCENTAGE * height;\n const toatlPaddingInColumn = height - d3Sum(column, (node: SNode) => node.y1! - node.y0!);\n if (minPadding < toatlPaddingInColumn) {\n //Here we are calculating the min of default and calculated padding, we will not increase the padding\n //in any scenario.\n padding = Math.min(padding, minPadding / (column.length - 1));\n }\n });\n return padding;\n }\n\n private _createLinks(): React.ReactNode[] | undefined {\n const links: React.ReactNode[] = [];\n\n const sankeyChartData = this.props.data.SankeyChartData;\n if (sankeyChartData) {\n const linkId = this._linkId;\n sankeyChartData.links.forEach((singleLink: SLink, index: number) => {\n const onMouseOut = () => {\n this._onStreamLeave(singleLink);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = (d: any) => {\n return [\n { x: d.source.x1, y0: d.y0 + d.width / 2, y1: d.y0 - d.width / 2 },\n { x: d.target.x0, y0: d.y1 + d.width / 2, y1: d.y1 - d.width / 2 },\n ];\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dataPoints: Array<any> = data(singleLink);\n const linkArea = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((p: any) => p.x)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((p: any) => p.y0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((p: any) => p.y1)\n .curve(d3CurveBasis);\n const gradientUrl = `url(#gradient-${linkId}-${index})`;\n const link = (\n <g key={`${linkId}-${index}`}>\n <defs>\n <linearGradient id={`gradient-${linkId}-${index}`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0\" stopColor={(singleLink.source as SNode).color} />\n <stop offset=\"100%\" stopColor={(singleLink.target as SNode).color} />\n </linearGradient>\n </defs>\n <path\n d={linkArea(dataPoints)!}\n id={getId('link')}\n fill={this._fillStreamColors(singleLink, gradientUrl)}\n stroke={this._fillStreamBorder(singleLink, gradientUrl)}\n strokeWidth=\"2\"\n strokeOpacity={this._getOpacityStreamBorder(singleLink)}\n onMouseOver={this._onStreamHover.bind(this, singleLink)}\n onMouseOut={onMouseOut}\n onFocus={this._onFocusLink.bind(this, singleLink)}\n onBlur={this._onBlur}\n fillOpacity={this._getOpacityStream(singleLink)}\n data-is-focusable={true}\n aria-label={`link from ${(singleLink.source as SNode).name} to ${\n (singleLink.target as SNode).name\n } with weight ${singleLink!.unnormalizedValue}`} // TODO: localize this string\n role=\"img\"\n />\n </g>\n );\n links.push(link);\n });\n }\n return links;\n }\n\n private _createNodes(classNames: IProcessedStyleSet<ISankeyChartStyles>): React.ReactNode[] | undefined {\n const nodes: React.ReactNode[] = [];\n\n const sankeyChartData = this.props.data.SankeyChartData;\n if (sankeyChartData) {\n const state = this.state;\n sankeyChartData.nodes.forEach((singleNode: SNode, index: number) => {\n const onMouseOut = () => {\n this._onLeave(singleNode);\n };\n const height = singleNode.y1! - singleNode.y0! > 0 ? singleNode.y1! - singleNode.y0! : 0;\n let padding = 8;\n let textLengthForNodeWeight = 0;\n\n // If the nodeWeight is in the same line as node description an extra padding\n // of 6 px is required between node description and node weight.\n if (height < MIN_HEIGHT_FOR_DOUBLINE_TYPE) {\n padding = padding + 6;\n const tspan = select('.nodeName').append('text').attr('class', 'tempText').append('tspan').text(null);\n tspan.text(singleNode.actualValue!);\n if (tspan.node() !== null) {\n textLengthForNodeWeight = tspan.node()!.getComputedTextLength();\n padding = padding + textLengthForNodeWeight;\n }\n tspan.text(null);\n selectAll('.tempText').remove();\n }\n // Since the total width of the node is 124 and we are giving margin of 8px from the left .\n //So the actual value on which it will be truncated is 124-8=116.\n const truncatedname: string = this._truncateText(singleNode.name, 116, padding);\n const isTruncated: boolean = truncatedname.slice(-3) === '...';\n const id = getId('tooltip');\n const div = select('body').append('div').attr('id', id).attr('class', classNames.toolTip!).style('opacity', 0);\n const nodeId = getId('nodeBar');\n const node = (\n <g key={index} id={getId('nodeGElement')}>\n <rect\n x={singleNode.x0}\n y={singleNode.y0}\n height={height}\n width={singleNode.x1! - singleNode.x0!}\n fill={this._fillNodeColors(singleNode)}\n id={nodeId}\n onMouseOver={this._onHover.bind(this, singleNode)}\n onMouseOut={onMouseOut}\n onFocus={this._onCloseCallout.bind(this)}\n stroke={this._fillNodeBorder(singleNode)}\n strokeWidth=\"2\"\n opacity=\"1\"\n data-is-focusable={true}\n aria-label={`node ${singleNode.name} with weight ${singleNode.actualValue}`} // TODO: localize this string\n role=\"img\"\n />\n {singleNode.y1! - singleNode.y0! > MIN_HEIGHT_FOR_TYPE && (\n <g className={classNames.nodeTextContainer}>\n <g className=\"nodeName\">\n <text\n id={`${nodeId}-name`}\n x={singleNode.x0}\n y={singleNode.y0}\n dy={'1.2em'}\n dx={'0.4em'}\n textAnchor={this._isRtl ? 'end' : 'start'}\n fontWeight=\"regular\"\n aria-hidden=\"true\"\n fill={\n !(\n !state.selectedState ||\n (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) ||\n (state.selectedState && !state.selectedNode)\n )\n ? DEFAULT_TEXT_COLOR\n : NON_SELECTED_TEXT_COLOR\n }\n fontSize={10}\n onMouseOver={this._showTooltip.bind(this, singleNode.name, isTruncated, div)}\n onMouseOut={this._hideTooltip.bind(this, div)}\n >\n {truncatedname}\n </text>\n </g>\n\n <text\n x={\n height > MIN_HEIGHT_FOR_DOUBLINE_TYPE ? singleNode.x0 : singleNode.x1! - textLengthForNodeWeight - 8\n }\n y={singleNode.y0}\n dy={height > MIN_HEIGHT_FOR_DOUBLINE_TYPE ? '2em' : '1em'}\n dx={height > MIN_HEIGHT_FOR_DOUBLINE_TYPE ? '0.4em' : '0em'}\n textAnchor={this._isRtl ? 'end' : 'start'}\n fontWeight=\"bold\"\n aria-hidden=\"true\"\n fill={\n !(\n !state.selectedState ||\n (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) ||\n (state.selectedState && !state.selectedNode)\n )\n ? DEFAULT_TEXT_COLOR\n : NON_SELECTED_TEXT_COLOR\n }\n fontSize={14}\n >\n {singleNode.actualValue}\n </text>\n </g>\n )}\n </g>\n );\n nodes.push(node);\n });\n return nodes;\n }\n }\n\n private _onLeave(singleNode: SNode) {\n if (this.state.selectedState) {\n this.setState({\n selectedState: false,\n selectedNodes: new Set<number>(),\n selectedLinks: new Set<number>(),\n selectedNode: undefined,\n });\n }\n }\n\n private _onHover(singleNode: SNode, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n this._onCloseCallout();\n if (!this.state.selectedState) {\n const selectedLinks = getSelectedLinks(singleNode);\n const selectedNodes = getSelectedNodes(selectedLinks);\n selectedNodes.push(singleNode);\n this.setState({\n selectedState: true,\n selectedNodes: new Set<number>(Array.from(selectedNodes).map(node => node.index)),\n selectedLinks: new Set<number>(Array.from(selectedLinks).map(link => link.index!)),\n selectedNode: singleNode,\n refSelected: mouseEvent, //this._refArray.get(index),\n isCalloutVisible: singleNode.y1! - singleNode.y0! < MIN_HEIGHT_FOR_TYPE,\n color: singleNode.color,\n xCalloutValue: singleNode.name,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yCalloutValue: singleNode.actualValue! as any as string,\n });\n }\n }\n\n private _onStreamHover(singleLink: SLink, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n this._onCloseCallout();\n if (!this.state.selectedState) {\n const { selectedLinks, selectedNodes } = getSelectedLinksforStreamHover(singleLink);\n this.setState({\n selectedState: true,\n selectedNodes: new Set<number>(Array.from(selectedNodes).map(node => node.index!)),\n selectedLinks: new Set<number>(Array.from(selectedLinks).map(link => link.index!)),\n refSelected: mouseEvent,\n selectedLink: singleLink,\n isCalloutVisible: true,\n color: (singleLink.source as SNode).color,\n xCalloutValue: (singleLink.target as SNode).name,\n yCalloutValue: singleLink.unnormalizedValue!.toString(),\n descriptionMessage: 'from ' + (singleLink.source as SNode).name, // TODO: Does this need to be localized?\n });\n }\n }\n\n private _onStreamLeave(singleLink: SLink) {\n if (this.state.selectedState) {\n this.setState({\n selectedState: false,\n selectedNodes: new Set<number>(),\n selectedLinks: new Set<number>(),\n selectedLink: undefined,\n });\n }\n }\n\n private _onFocusLink(singleLink: SLink, element: React.FocusEvent<SVGElement>): void {\n element.persist();\n this._onCloseCallout();\n this.setState({\n refSelected: element.currentTarget,\n selectedLink: singleLink,\n isCalloutVisible: true,\n color: (singleLink.source as SNode).color,\n xCalloutValue: (singleLink.target as SNode).name,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yCalloutValue: (singleLink.source as SNode).actualValue! as any as string,\n descriptionMessage: 'from ' + (singleLink.source as SNode).name, // TODO: Does this need to be localized?\n });\n }\n\n private _onCloseCallout = () => {\n this.setState({\n isCalloutVisible: false,\n refSelected: undefined,\n descriptionMessage: '',\n });\n };\n\n private _onBlur = (): void => {\n /**/\n };\n\n private _fillNodeColors = (singleNode: SNode): string | undefined => {\n const state = this.state;\n if (!state.selectedState) {\n return singleNode.color;\n } else if (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) {\n return state.selectedNode.color;\n } else if (state.selectedState && !state.selectedNode) {\n return singleNode.color;\n }\n };\n\n /**\n * This is used to assign node fillcolors and borderColor cyclically when the user doesnt\n * provide color to individual node.\n */\n private _assignNodeColors() {\n let colors: string[];\n let borders: string[];\n const { colorsForNodes, borderColorsForNodes } = this.props;\n if (colorsForNodes && borderColorsForNodes) {\n colors = colorsForNodes;\n borders = borderColorsForNodes;\n } else {\n colors = DEFAULT_NODE_COLORS.map(color => color.fillColor);\n borders = DEFAULT_NODE_COLORS.map(color => color.borderColor);\n }\n let currentIndex = 0;\n this.props.data.SankeyChartData!.nodes.forEach((node: SNode) => {\n if (!node.color && !node.borderColor) {\n node.color = colors[currentIndex];\n node.borderColor = borders[currentIndex];\n } else if (node.color && !node.borderColor) {\n node.borderColor = '#757575';\n } else if (node.borderColor && !node.color) {\n node.color = '#F5F5F5';\n }\n currentIndex = (currentIndex + 1) % colors.length;\n });\n }\n\n private _fillStreamColors(singleLink: SLink, gradientUrl: string): string | undefined {\n const state = this.state;\n if (state.selectedState && state.selectedLinks.has(singleLink.index!) && state.selectedNode) {\n return state.selectedNode.color;\n } else if (state.selectedState && state.selectedLinks.has(singleLink.index!)) {\n return gradientUrl;\n }\n }\n\n private _fillStreamBorder(singleLink: SLink, gradientUrl: string): string {\n const state = this.state;\n if (!state.selectedState) {\n return NON_SELECTED_NODE_AND_STREAM_COLOR;\n } else if (state.selectedState && state.selectedLinks.has(singleLink.index!) && state.selectedNode) {\n return state.selectedNode.borderColor!;\n } else if (state.selectedState && state.selectedLinks.has(singleLink.index!)) {\n return gradientUrl;\n }\n return NON_SELECTED_NODE_AND_STREAM_COLOR;\n }\n\n private _fillNodeBorder = (singleNode: SNode): string => {\n const state = this.state;\n if (!state.selectedState) {\n return singleNode.borderColor!;\n } else if (state.selectedState && state.selectedNodes.has(singleNode.index!) && state.selectedNode) {\n return state.selectedNode.borderColor!;\n } else if (state.selectedState && state.selectedNodes.has(singleNode.index!)) {\n return singleNode.borderColor!;\n }\n return singleNode.borderColor!;\n };\n\n private _getOpacityStream(singleLink: SLink): number {\n const state = this.state;\n if (state.selectedState) {\n if (!state.selectedLinks.has(singleLink.index!)) {\n return NON_SELECTED_OPACITY;\n } else if (state.selectedLinks.has(singleLink.index!) && !state.selectedNode) {\n return SELECTED_STREAM_OPACITY;\n }\n }\n return REST_STREAM_OPACITY;\n }\n\n private _getOpacityStreamBorder(singleLink: SLink): number {\n const state = this.state;\n if (state.selectedState && !state.selectedLinks.has(singleLink.index!) && !state.selectedNode) {\n return NON_SELECTED_STREAM_BORDER_OPACITY;\n }\n\n return NON_SELECTED_OPACITY;\n }\n\n private _fitParentContainer(): void {\n const { containerWidth, containerHeight } = this.state;\n this._reqID = requestAnimationFrame(() => {\n const container = this.props.parentRef ? this.props.parentRef : this.chartContainer;\n const currentContainerWidth = container && container.getBoundingClientRect().width;\n const currentContainerHeight = container && container.getBoundingClientRect().height;\n const shouldResize = containerWidth !== currentContainerWidth || containerHeight !== currentContainerHeight;\n if (shouldResize) {\n this.setState({\n containerWidth: currentContainerWidth,\n containerHeight: currentContainerHeight,\n });\n }\n });\n }\n\n /**\n * @param text is the text which we are trying to truncate\n * @param rectangleWidth is the width of the rectangle which will contain the text\n * @param padding is the space we need to leave between the rect lines and other text\n * @param nodeWeight is the text if present needs to be accomodate in the same line as text.\n * @returns the truncated text , if truncated given the above parameters.\n */\n private _truncateText(text: string, rectangleWidth: number, padding: number) {\n const textLengthForNodeName = rectangleWidth - padding;\n let elipsisLength = 0;\n const tspan = select('.nodeName')\n .append('text')\n .attr('class', 'tempText')\n .attr('font-size', '10')\n .append('tspan')\n .text(null);\n tspan.text(text);\n if (tspan.node() !== null && tspan.node()!.getComputedTextLength() <= textLengthForNodeName) {\n return text;\n }\n tspan.text(null);\n tspan.text('...');\n if (tspan.node() !== null) {\n elipsisLength = tspan.node()!.getComputedTextLength();\n }\n tspan.text(null);\n let line: string = '';\n for (let i = 0; i < text.length; i++) {\n line += text[i];\n tspan.text(line);\n if (tspan.node() !== null) {\n const w = tspan.node()!.getComputedTextLength();\n if (w >= textLengthForNodeName - elipsisLength) {\n line = line.slice(0, -1);\n line += '...';\n break;\n }\n }\n }\n tspan.text(null);\n selectAll('.tempText').remove();\n return line;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _showTooltip(text: string, checkTrcuncated: boolean, div: any, evt: any) {\n if (checkTrcuncated) {\n //Fixing tooltip position by attaching it to the element rather than page\n div.style('opacity', 0.9);\n div\n .html(text)\n .style('left', evt.pageX + 'px')\n .style('top', evt.pageY - 28 + 'px');\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _hideTooltip(div: any) {\n div.style('opacity', 0);\n }\n\n private _isChartEmpty() {\n const sankeyChartData = this.props.data?.SankeyChartData;\n return !(sankeyChartData && sankeyChartData.nodes.length > 0 && sankeyChartData.links.length > 0);\n }\n}\n"]}
|
|
@@ -7,7 +7,7 @@ define(["require", "exports", "tslib"], function (require, exports, tslib_1) {
|
|
|
7
7
|
inlineBlock: {
|
|
8
8
|
display: 'inline',
|
|
9
9
|
},
|
|
10
|
-
valueText: tslib_1.__assign(tslib_1.__assign({}, props.theme.fonts.smallPlus), { fill: props.theme.
|
|
10
|
+
valueText: tslib_1.__assign(tslib_1.__assign({}, props.theme.fonts.smallPlus), { fill: props.theme.semanticColors.messageText }),
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
exports.getStyles = getStyles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.styles.js","sourceRoot":"../src/","sources":["components/Sparkline/Sparkline.styles.ts"],"names":[],"mappings":";;;;IAEO,IAAM,SAAS,GAAG,UAAC,KAA2B;QACnD,OAAO;YACL,WAAW,EAAE;gBACX,OAAO,EAAE,QAAQ;aAClB;YACD,SAAS,wCACJ,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,SAAS,KAC/B,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Sparkline.styles.js","sourceRoot":"../src/","sources":["components/Sparkline/Sparkline.styles.ts"],"names":[],"mappings":";;;;IAEO,IAAM,SAAS,GAAG,UAAC,KAA2B;QACnD,OAAO;YACL,WAAW,EAAE;gBACX,OAAO,EAAE,QAAQ;aAClB;YACD,SAAS,wCACJ,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,SAAS,KAC/B,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,cAAc,CAAC,WAAW,GAC9C;SACF,CAAC;IACJ,CAAC,CAAC;IAVW,QAAA,SAAS,aAUpB","sourcesContent":["import { ISparklineStyleProps, ISparklineStyles } from './Sparkline.types';\n\nexport const getStyles = (props: ISparklineStyleProps): ISparklineStyles => {\n return {\n inlineBlock: {\n display: 'inline',\n },\n valueText: {\n ...props.theme!.fonts.smallPlus,\n fill: props.theme!.semanticColors.messageText,\n },\n };\n};\n"]}
|
|
@@ -19,14 +19,14 @@ define(["require", "exports", "tslib"], function (require, exports, tslib_1) {
|
|
|
19
19
|
},
|
|
20
20
|
rectNode: {
|
|
21
21
|
strokeWidth: '2px',
|
|
22
|
-
fill:
|
|
22
|
+
fill: props.theme.semanticColors.bodyBackground,
|
|
23
23
|
padding: '10px',
|
|
24
24
|
rx: '2px',
|
|
25
25
|
},
|
|
26
|
-
rectText: tslib_1.__assign({ fill:
|
|
27
|
-
rectSubText: tslib_1.__assign({ fill:
|
|
28
|
-
rectBodyText: tslib_1.__assign({ fill:
|
|
29
|
-
rectMetricText: tslib_1.__assign({ fill:
|
|
26
|
+
rectText: tslib_1.__assign({ fill: props.theme.palette.neutralDark }, props.theme.fonts.large),
|
|
27
|
+
rectSubText: tslib_1.__assign({ fill: props.theme.palette.neutralPrimary }, props.theme.fonts.medium),
|
|
28
|
+
rectBodyText: tslib_1.__assign({ fill: props.theme.palette.neutralPrimaryAlt }, props.theme.fonts.xSmall),
|
|
29
|
+
rectMetricText: tslib_1.__assign({ fill: props.theme.palette.neutralDark }, props.theme.fonts.xLarge),
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
exports.getStyles = getStyles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeChart.styles.js","sourceRoot":"../src/","sources":["components/TreeChart/TreeChart.styles.ts"],"names":[],"mappings":";;;;IAEO,IAAM,SAAS,GAAG,UAAC,KAAsB;QAC9C,OAAO;YACL,IAAI,EAAE;gBACJ,KAAK,CAAC,KAAK,CAAC,OAAO;gBACnB,cAAc;gBACd,KAAK,CAAC,SAAS;gBACf;oBACE,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,KAAK;aACnB;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"TreeChart.styles.js","sourceRoot":"../src/","sources":["components/TreeChart/TreeChart.styles.ts"],"names":[],"mappings":";;;;IAEO,IAAM,SAAS,GAAG,UAAC,KAAsB;QAC9C,OAAO;YACL,IAAI,EAAE;gBACJ,KAAK,CAAC,KAAK,CAAC,OAAO;gBACnB,cAAc;gBACd,KAAK,CAAC,SAAS;gBACf;oBACE,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,KAAK;aACnB;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,cAAc,CAAC,cAAc;gBAChD,OAAO,EAAE,MAAM;gBACf,EAAE,EAAE,KAAK;aACV;YACD,QAAQ,qBACN,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,OAAO,CAAC,WAAW,IACnC,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,KAAK,CAC5B;YACD,WAAW,qBACT,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,OAAO,CAAC,cAAc,IACtC,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,MAAM,CAC7B;YACD,YAAY,qBACV,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,OAAO,CAAC,iBAAiB,IACzC,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,MAAM,CAC7B;YACD,cAAc,qBACZ,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,OAAO,CAAC,WAAW,IACnC,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,MAAM,CAC7B;SACF,CAAC;IACJ,CAAC,CAAC;IAtCW,QAAA,SAAS,aAsCpB","sourcesContent":["import { ITreeStyleProps, ITreeStyles } from './TreeChart.types';\n\nexport const getStyles = (props: ITreeStyleProps): ITreeStyles => {\n return {\n root: [\n props.theme.spacing,\n 'ms-TreeChart',\n props.className,\n {\n overflow: 'scroll',\n },\n ],\n link: {\n fill: 'none',\n stroke: '#A1A1A1',\n strokeWidth: '2px',\n },\n rectNode: {\n strokeWidth: '2px',\n fill: props.theme!.semanticColors.bodyBackground,\n padding: '10px',\n rx: '2px',\n },\n rectText: {\n fill: props.theme!.palette.neutralDark,\n ...props.theme!.fonts.large,\n },\n rectSubText: {\n fill: props.theme!.palette.neutralPrimary,\n ...props.theme!.fonts.medium,\n },\n rectBodyText: {\n fill: props.theme!.palette.neutralPrimaryAlt,\n ...props.theme!.fonts.xSmall,\n },\n rectMetricText: {\n fill: props.theme!.palette.neutralDark,\n ...props.theme!.fonts.xLarge,\n },\n };\n};\n"]}
|
|
@@ -55,12 +55,12 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-shape", "d3-sele
|
|
|
55
55
|
? Number.parseFloat(_this.props.lineOptions.lineBorderWidth.toString())
|
|
56
56
|
: 0;
|
|
57
57
|
if (lineBorderWidth > 0) {
|
|
58
|
-
line.push(React.createElement("path", { key: (0, Utilities_1.getId)('_VBC_line_'), id: (0, Utilities_1.getId)('_VBC_line_'), opacity: shouldHighlight ? 1 : 0.1, d: linePath(lineData), fill: "transparent", strokeLinecap: "square", strokeWidth: 3 + lineBorderWidth * 2, stroke: theme.
|
|
58
|
+
line.push(React.createElement("path", { key: (0, Utilities_1.getId)('_VBC_line_'), id: (0, Utilities_1.getId)('_VBC_line_'), opacity: shouldHighlight ? 1 : 0.1, d: linePath(lineData), fill: "transparent", strokeLinecap: "square", strokeWidth: 3 + lineBorderWidth * 2, stroke: theme.semanticColors.bodyBackground }));
|
|
59
59
|
}
|
|
60
60
|
line.push(React.createElement("path", { key: (0, Utilities_1.getId)('_VBC_line_'), id: (0, Utilities_1.getId)('_VBC_line_'), opacity: shouldHighlight ? 1 : 0.1, d: linePath(lineData), fill: "transparent", strokeLinecap: "square", strokeWidth: 3, stroke: lineLegendColor }));
|
|
61
61
|
var dots = lineData.map(function (item, index) {
|
|
62
62
|
var _a;
|
|
63
|
-
return (React.createElement("circle", { key: index, id: (0, Utilities_1.getId)('_VBC_point_'), cx: isStringAxis ? xBarScale(item.x) + 0.5 * xBarScale.bandwidth() : xScale(item.x), cy: item.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(item.y) : yScale(item.y), onMouseOver: _this._onBarHover.bind(_this, item.point, colorScale(item.y)), onMouseOut: _this._onBarLeave, r: 8, stroke: lineLegendColor, fill: _this.props.theme.
|
|
63
|
+
return (React.createElement("circle", { key: index, id: (0, Utilities_1.getId)('_VBC_point_'), cx: isStringAxis ? xBarScale(item.x) + 0.5 * xBarScale.bandwidth() : xScale(item.x), cy: item.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(item.y) : yScale(item.y), onMouseOver: _this._onBarHover.bind(_this, item.point, colorScale(item.y)), onMouseOut: _this._onBarLeave, r: 8, stroke: lineLegendColor, fill: _this.props.theme.semanticColors.bodyBackground, strokeWidth: 3, visibility: _this.state.activeXdataPoint === item.x ? CircleVisbility.show : CircleVisbility.hide, onClick: (_a = item.point.lineData) === null || _a === void 0 ? void 0 : _a.onClick }));
|
|
64
64
|
});
|
|
65
65
|
return (React.createElement(React.Fragment, null,
|
|
66
66
|
line,
|