UNPKG

@spaced-out/ui-design-system

Version:
100 lines (99 loc) 3.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SankeyChart = void 0; var React = _interopRequireWildcard(require("react")); var _highcharts = _interopRequireDefault(require("highcharts")); var _sankey = _interopRequireDefault(require("highcharts/modules/sankey")); var _highchartsReactOfficial = _interopRequireDefault(require("highcharts-react-official")); var _charts = require("../../../utils/charts"); var _classify = _interopRequireDefault(require("../../../utils/classify")); var _ChartWrapper = require("../ChartWrapper"); var _SankeyChartModule = _interopRequireDefault(require("./SankeyChart.module.css")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } if (typeof window !== 'undefined') { (0, _sankey.default)(_highcharts.default); } const SankeyChart = _ref => { let { series, emptyText, drilldown, cardTitle, isLoading, nodeWidth = 20, showLegend = true, classNames, nodePadding = 10, hasEmptyData, headerActions, customExportOptions, testId, ...userOptions } = _ref; const chartRef = React.useRef(null); const defaultSankeyChartOptions = (0, _charts.getSankeyChartOptions)({ nodeWidth, showLegend, nodePadding }); const mapNodes = nodes => nodes?.map((node, index) => ({ ...node, color: node.color || (0, _charts.getDataVizColor)(index) })); const mapData = dataPoints => (dataPoints ?? []).map((dataPoint, index) => ({ ...dataPoint, color: dataPoint.color || (0, _charts.getDataVizColor)(index), weight: dataPoint.weight || 1 })); const addSankeyDefaults = seriesItem => ({ ...seriesItem, keys: seriesItem.keys || ['from', 'to', 'weight'], nodes: mapNodes(seriesItem.nodes), data: mapData(seriesItem.data), nodeAlignment: seriesItem.nodeAlignment ?? 'center', showInLegend: showLegend, type: 'sankey' }); const sankeyChartSeries = series?.map(addSankeyDefaults); const sankeyDrilldownSeries = drilldown?.series?.map(addSankeyDefaults); const sankeyDrilldown = drilldown ? { ...drilldown, series: sankeyDrilldownSeries, breadcrumbs: { floating: false } } : {}; const chartOptions = (0, _charts.mergeChartUserOptions)(defaultSankeyChartOptions, { series: sankeyChartSeries, drilldown: sankeyDrilldown, ...userOptions }); const { highChart, ...wrapperClassNames } = classNames || {}; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartWrapper.ChartWrapper, { isLoading: isLoading, title: cardTitle, ref: chartRef, classNames: wrapperClassNames, customExportOptions: customExportOptions, headerActions: headerActions, hasEmptyData: hasEmptyData, emptyText: emptyText, testId: testId, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_highchartsReactOfficial.default, { highcharts: _highcharts.default, containerProps: { className: (0, _classify.default)(_SankeyChartModule.default.sankeyChartContainer, highChart) }, ref: chartRef, options: chartOptions }) }); }; exports.SankeyChart = SankeyChart;