@neo4j-ndl/react 3.0.26 → 3.0.28

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.
Files changed (80) hide show
  1. package/lib/cjs/index.js +0 -1
  2. package/lib/cjs/index.js.map +1 -1
  3. package/lib/cjs/loading-spinner/LoadingSpinner.js +2 -2
  4. package/lib/cjs/loading-spinner/LoadingSpinner.js.map +1 -1
  5. package/lib/esm/index.js +0 -1
  6. package/lib/esm/index.js.map +1 -1
  7. package/lib/esm/loading-spinner/LoadingSpinner.js +2 -2
  8. package/lib/esm/loading-spinner/LoadingSpinner.js.map +1 -1
  9. package/lib/types/index.d.ts +0 -1
  10. package/package.json +1 -5
  11. package/lib/cjs/charts/CartesianGrid.js +0 -107
  12. package/lib/cjs/charts/CartesianGrid.js.map +0 -1
  13. package/lib/cjs/charts/Chart.js +0 -761
  14. package/lib/cjs/charts/Chart.js.map +0 -1
  15. package/lib/cjs/charts/ChartTooltip.js +0 -60
  16. package/lib/cjs/charts/ChartTooltip.js.map +0 -1
  17. package/lib/cjs/charts/Charts.js +0 -124
  18. package/lib/cjs/charts/Charts.js.map +0 -1
  19. package/lib/cjs/charts/Dot.js +0 -31
  20. package/lib/cjs/charts/Dot.js.map +0 -1
  21. package/lib/cjs/charts/HollowDot.js +0 -54
  22. package/lib/cjs/charts/HollowDot.js.map +0 -1
  23. package/lib/cjs/charts/Legend.js +0 -180
  24. package/lib/cjs/charts/Legend.js.map +0 -1
  25. package/lib/cjs/charts/Line.js +0 -132
  26. package/lib/cjs/charts/Line.js.map +0 -1
  27. package/lib/cjs/charts/axis/XAxis.js +0 -205
  28. package/lib/cjs/charts/axis/XAxis.js.map +0 -1
  29. package/lib/cjs/charts/axis/YAxis.js +0 -170
  30. package/lib/cjs/charts/axis/YAxis.js.map +0 -1
  31. package/lib/cjs/charts/axis/chart-axis-utils.js +0 -42
  32. package/lib/cjs/charts/axis/chart-axis-utils.js.map +0 -1
  33. package/lib/cjs/charts/axis/chart-tick-generation.js +0 -245
  34. package/lib/cjs/charts/axis/chart-tick-generation.js.map +0 -1
  35. package/lib/cjs/charts/index.js +0 -38
  36. package/lib/cjs/charts/index.js.map +0 -1
  37. package/lib/cjs/charts/utils.js +0 -40
  38. package/lib/cjs/charts/utils.js.map +0 -1
  39. package/lib/esm/charts/CartesianGrid.js +0 -100
  40. package/lib/esm/charts/CartesianGrid.js.map +0 -1
  41. package/lib/esm/charts/Chart.js +0 -734
  42. package/lib/esm/charts/Chart.js.map +0 -1
  43. package/lib/esm/charts/ChartTooltip.js +0 -54
  44. package/lib/esm/charts/ChartTooltip.js.map +0 -1
  45. package/lib/esm/charts/Charts.js +0 -121
  46. package/lib/esm/charts/Charts.js.map +0 -1
  47. package/lib/esm/charts/Dot.js +0 -28
  48. package/lib/esm/charts/Dot.js.map +0 -1
  49. package/lib/esm/charts/HollowDot.js +0 -28
  50. package/lib/esm/charts/HollowDot.js.map +0 -1
  51. package/lib/esm/charts/Legend.js +0 -174
  52. package/lib/esm/charts/Legend.js.map +0 -1
  53. package/lib/esm/charts/Line.js +0 -106
  54. package/lib/esm/charts/Line.js.map +0 -1
  55. package/lib/esm/charts/axis/XAxis.js +0 -176
  56. package/lib/esm/charts/axis/XAxis.js.map +0 -1
  57. package/lib/esm/charts/axis/YAxis.js +0 -164
  58. package/lib/esm/charts/axis/YAxis.js.map +0 -1
  59. package/lib/esm/charts/axis/chart-axis-utils.js +0 -38
  60. package/lib/esm/charts/axis/chart-axis-utils.js.map +0 -1
  61. package/lib/esm/charts/axis/chart-tick-generation.js +0 -217
  62. package/lib/esm/charts/axis/chart-tick-generation.js.map +0 -1
  63. package/lib/esm/charts/index.js +0 -22
  64. package/lib/esm/charts/index.js.map +0 -1
  65. package/lib/esm/charts/utils.js +0 -37
  66. package/lib/esm/charts/utils.js.map +0 -1
  67. package/lib/types/charts/CartesianGrid.d.ts +0 -32
  68. package/lib/types/charts/Chart.d.ts +0 -109
  69. package/lib/types/charts/ChartTooltip.d.ts +0 -69
  70. package/lib/types/charts/Charts.d.ts +0 -104
  71. package/lib/types/charts/Dot.d.ts +0 -27
  72. package/lib/types/charts/HollowDot.d.ts +0 -28
  73. package/lib/types/charts/Legend.d.ts +0 -25
  74. package/lib/types/charts/Line.d.ts +0 -44
  75. package/lib/types/charts/axis/XAxis.d.ts +0 -28
  76. package/lib/types/charts/axis/YAxis.d.ts +0 -28
  77. package/lib/types/charts/axis/chart-axis-utils.d.ts +0 -33
  78. package/lib/types/charts/axis/chart-tick-generation.d.ts +0 -33
  79. package/lib/types/charts/index.d.ts +0 -21
  80. package/lib/types/charts/utils.d.ts +0 -23
@@ -1,176 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- *
4
- * Copyright (c) "Neo4j"
5
- * Neo4j Sweden AB [http://neo4j.com]
6
- *
7
- * This file is part of Neo4j.
8
- *
9
- * Neo4j is free software: you can redistribute it and/or modify
10
- * it under the terms of the GNU General Public License as published by
11
- * the Free Software Foundation, either version 3 of the License, or
12
- * (at your option) any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- * GNU General Public License for more details.
18
- *
19
- * You should have received a copy of the GNU General Public License
20
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
- */
22
- import React, { forwardRef, useContext, useEffect, useMemo, useRef, useState, useImperativeHandle, } from 'react';
23
- import classNames from 'classnames';
24
- import { useDebounceCallback, useResizeObserver } from 'usehooks-ts';
25
- import { Typography } from '../../typography';
26
- import { ChartsChartContext } from '../Chart';
27
- import * as d3 from 'd3';
28
- import { generateAxisTicks } from './chart-axis-utils';
29
- import { getTickLabelFormatterForDate } from './chart-tick-generation';
30
- import { ChartsContext } from '../Charts';
31
- const domainStrokeWidth = 2;
32
- const tickLength = domainStrokeWidth + 8;
33
- const marginBetweenTickAndLabel = tickLength + 8;
34
- const height = '2';
35
- const XAxisComponent = forwardRef(function XAxis({ position, title, labelFormat: labelFormatProp, scale: scaleId, shouldRotateTicks, }, ref) {
36
- var _a, _b, _c, _d, _e;
37
- const classes = useMemo(() => classNames('ndl-charts-chart-axis', 'ndl-charts-chart-axis-x', {
38
- 'ndl-charts-chart-axis-top': position === 'top',
39
- 'ndl-charts-chart-axis-bottom': position === 'bottom',
40
- }), [position]);
41
- const svgRef = useRef(null);
42
- const chartsChartContextValue = useContext(ChartsChartContext);
43
- const setScalerGridLines = useContext(ChartsContext).setScalerGridLines;
44
- const xAxisRef = useRef(null);
45
- const [largestTextWidth, setLargestTextWidth] = useState(50);
46
- const prevDomain = useRef([0, 1]);
47
- const prevRange = useRef([0, 1]);
48
- const containerRef = useRef(null);
49
- const scale = (_a = chartsChartContextValue === null || chartsChartContextValue === void 0 ? void 0 : chartsChartContextValue.scales) === null || _a === void 0 ? void 0 : _a[scaleId];
50
- const [ticks, setTicks] = useState([]);
51
- useImperativeHandle(ref, () => {
52
- const svgChart = containerRef.current;
53
- if (!svgChart) {
54
- return null;
55
- }
56
- return svgChart;
57
- });
58
- const onResize = useDebounceCallback(() => {
59
- var _a;
60
- // Get text element widths
61
- const textElements = (_a = svgRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('text');
62
- if (!textElements || textElements.length === 0)
63
- return;
64
- // Calculate largest text width
65
- const textWidths = Array.from(textElements).map((current) => {
66
- const currentWidth = Math.ceil(current.getBoundingClientRect().width);
67
- return currentWidth;
68
- });
69
- setLargestTextWidth(Math.max(...textWidths));
70
- // Check for overlapping text elements
71
- const hasOverlap = Array.from(textElements)
72
- .slice(0, -1)
73
- .some((current, i) => {
74
- const next = textElements[i + 1];
75
- // Temporarily remove transforms to check raw positions
76
- const currentTransform = current.style.transform;
77
- const nextTransform = next.style.transform;
78
- current.style.transform = '';
79
- next.style.transform = '';
80
- // Get bounding boxes
81
- const currentBox = current.getBoundingClientRect();
82
- const nextBox = next.getBoundingClientRect();
83
- // Restore transforms
84
- current.style.transform = currentTransform;
85
- next.style.transform = nextTransform;
86
- // Check for overlap with padding
87
- const padding = 12;
88
- return !(currentBox.right < nextBox.left - padding ||
89
- currentBox.left > nextBox.right + padding ||
90
- currentBox.bottom < nextBox.top ||
91
- currentBox.top > nextBox.bottom);
92
- });
93
- // Apply rotated or normal styles based on overlap
94
- const transform = hasOverlap || shouldRotateTicks
95
- ? 'rotate(315deg) translate(-10px, -10px)'
96
- : 'none';
97
- const anchor = hasOverlap || shouldRotateTicks ? 'end' : 'middle';
98
- Array.from(textElements).forEach((el) => {
99
- el.style.transform = transform;
100
- el.style.textAnchor = anchor;
101
- });
102
- // Update SVG height to fit rotated text
103
- if (svgRef.current) {
104
- const maxHeight = Math.max(...Array.from(textElements).map((el) => el.getBoundingClientRect().height));
105
- svgRef.current.setAttribute('height', `${maxHeight + 12}px`);
106
- }
107
- }, 200);
108
- useResizeObserver({
109
- ref: containerRef,
110
- onResize: () => onResize(),
111
- });
112
- const xScale = scale === null || scale === void 0 ? void 0 : scale.functionWithContentWidthAsRange;
113
- /* @ts-expect-error we don't have the correct type for the tick values */
114
- const labelFormat = useMemo(() => {
115
- if (labelFormatProp) {
116
- return labelFormatProp;
117
- }
118
- else if (xScale.domain()[0] instanceof Date &&
119
- xScale.domain()[1] instanceof Date) {
120
- return getTickLabelFormatterForDate(xScale.domain()[0], xScale.domain()[1]);
121
- }
122
- else if (xScale === undefined) {
123
- return (dataPoint) => dataPoint.toString();
124
- }
125
- return xScale.tickFormat();
126
- }, [labelFormatProp, xScale]);
127
- useEffect(() => {
128
- const AxisRefCurrent = xAxisRef.current;
129
- if (AxisRefCurrent === null || xScale === undefined) {
130
- return;
131
- }
132
- const xAxis = d3
133
- .axisBottom(xScale)
134
- .tickValues([xScale.domain()[0], ...xScale.ticks(), xScale.domain()[1]]); // Ensure the start and end ticks
135
- xAxis.tickPadding(8);
136
- d3.select(AxisRefCurrent).call(xAxis);
137
- return () => {
138
- d3.select(AxisRefCurrent).selectAll('*').remove();
139
- };
140
- }, [xScale]);
141
- const pixelsAvailable = (_c = (_b = chartsChartContextValue.contentSize) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 0;
142
- useEffect(() => {
143
- const currentDomain = xScale.domain();
144
- const currentRange = xScale.range();
145
- const isDomainEqual = prevDomain.current[0] === currentDomain[0] &&
146
- prevDomain.current[1] === currentDomain[1];
147
- const isRangeEqual = prevRange.current[0] === currentRange[0] &&
148
- prevRange.current[1] === currentRange[1];
149
- if (!isDomainEqual || !isRangeEqual) {
150
- const newTicks = generateAxisTicks({
151
- scale: xScale,
152
- pixelsAvailable,
153
- largestTickSize: largestTextWidth,
154
- });
155
- setScalerGridLines(scaleId, newTicks);
156
- setTicks(newTicks);
157
- }
158
- prevDomain.current = currentDomain;
159
- prevRange.current = currentRange;
160
- }, [scale, prevDomain, prevRange]);
161
- if (xScale === undefined) {
162
- return null;
163
- }
164
- return (_jsxs("div", { ref: containerRef, className: classes, children: [position === 'top' && (_jsx(Typography, { className: "ndl-charts-chart-axis-title", variant: "body-medium", children: title })), _jsx("svg", { ref: svgRef, height: 31, children: _jsxs("g", { children: [_jsx("line", { x1: 0, x2: (_e = (_d = svgRef.current) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect().width) !== null && _e !== void 0 ? _e : 0, y1: 0, y2: height, className: "domain" }), ticks.map((tick, index) => {
165
- const x = xScale(tick);
166
- return (_jsxs("g", { className: "tick", transform: `translate(${x} 0)`, children: [_jsx("text", { y: position === 'bottom'
167
- ? marginBetweenTickAndLabel + tickLength
168
- : 0, textAnchor: "middle", fill: "currentColor", children: labelFormat(tick) }), _jsx("line", { y1: position === 'bottom'
169
- ? 0
170
- : marginBetweenTickAndLabel + tickLength, y2: position === 'bottom'
171
- ? tickLength
172
- : marginBetweenTickAndLabel, stroke: "currentColor" })] }, index));
173
- })] }) }), position === 'bottom' && (_jsx(Typography, { className: "ndl-charts-chart-axis-title", variant: "body-medium", children: title }))] }));
174
- });
175
- export const XAxis = React.memo(XAxisComponent);
176
- //# sourceMappingURL=XAxis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XAxis.js","sourceRoot":"","sources":["../../../../src/charts/axis/XAxis.tsx"],"names":[],"mappings":"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"}
@@ -1,164 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- *
4
- * Copyright (c) "Neo4j"
5
- * Neo4j Sweden AB [http://neo4j.com]
6
- *
7
- * This file is part of Neo4j.
8
- *
9
- * Neo4j is free software: you can redistribute it and/or modify
10
- * it under the terms of the GNU General Public License as published by
11
- * the Free Software Foundation, either version 3 of the License, or
12
- * (at your option) any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- * GNU General Public License for more details.
18
- *
19
- * You should have received a copy of the GNU General Public License
20
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
- */
22
- import { forwardRef, useContext, useMemo, useRef, useState, useImperativeHandle, useEffect, } from 'react';
23
- import classNames from 'classnames';
24
- import { useResizeObserver } from 'usehooks-ts';
25
- import { Typography } from '../../typography';
26
- import { ChartsChartContext } from '../Chart';
27
- import { generateAxisTicks } from './chart-axis-utils';
28
- import { ChartsContext } from '../Charts';
29
- export const YAxis = forwardRef(function YAxis({ position, title, labelFormat: labelFormatProp, scale: scaleId, shouldRotateTicks, }, ref) {
30
- var _a, _b, _c;
31
- const [largestTextWidth, setLargestTextWidth] = useState(0);
32
- const chartsChartContextValue = useContext(ChartsChartContext);
33
- const scale = (_a = chartsChartContextValue === null || chartsChartContextValue === void 0 ? void 0 : chartsChartContextValue.scales) === null || _a === void 0 ? void 0 : _a[scaleId];
34
- const svgRef = useRef(null);
35
- const prevDomain = useRef([0, 1]);
36
- const prevRange = useRef([0, 1]);
37
- const [ticks, setTicks] = useState([]);
38
- const setScalerGridLines = useContext(ChartsContext).setScalerGridLines;
39
- const classes = useMemo(() => classNames('ndl-charts-chart-axis', 'ndl-charts-chart-axis-y', {
40
- 'ndl-charts-chart-axis-left': position === 'left',
41
- 'ndl-charts-chart-axis-right': position === 'right',
42
- }), [position]);
43
- const containerRef = useRef(null);
44
- useImperativeHandle(ref, () => {
45
- // console.info('Axis.tsx - useImperativeHandle');
46
- const svgChart = containerRef.current;
47
- if (!svgChart) {
48
- return null;
49
- }
50
- return svgChart;
51
- });
52
- const onResize = () => {
53
- var _a;
54
- if (svgRef.current === null) {
55
- return;
56
- }
57
- const textElements = (_a = svgRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('text');
58
- if (!textElements) {
59
- return;
60
- }
61
- if (shouldRotateTicks) {
62
- Array.from(textElements).forEach((element) => {
63
- element.style.transform = `rotate(315deg)`;
64
- element.style.textAnchor = position === 'left' ? 'end' : 'start';
65
- });
66
- }
67
- else {
68
- Array.from(textElements).forEach((element) => {
69
- element.style.transform = '';
70
- element.style.textAnchor = position === 'left' ? 'end' : 'start';
71
- });
72
- }
73
- // Wait for the rotation transform to be applied
74
- requestAnimationFrame(() => {
75
- // Now measure the rotated text widths
76
- const textWidths = Array.from(textElements).map((element) => {
77
- const bbox = element.getBoundingClientRect();
78
- // For rotated text, we need to account for both width and height
79
- return shouldRotateTicks
80
- ? Math.sqrt(Math.pow(bbox.width, 2) + Math.pow(bbox.height, 2))
81
- : bbox.width;
82
- });
83
- if (textWidths.length === 0) {
84
- return;
85
- }
86
- setLargestTextWidth(Math.max(...textWidths));
87
- });
88
- };
89
- useResizeObserver({
90
- ref: containerRef,
91
- onResize,
92
- });
93
- useEffect(() => {
94
- onResize();
95
- }, [ticks]);
96
- // the 14 is the height of the tick label, the 8 is the padding
97
- const pixelsPerTick = 14 * (shouldRotateTicks ? 2 : 1) + 8;
98
- const pixelsAvailable = (_c = (_b = chartsChartContextValue.contentSize) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 0;
99
- useEffect(() => {
100
- const currentDomain = yScale.domain();
101
- const currentRange = yScale.range();
102
- const isDomainEqual = prevDomain.current[0] === currentDomain[0] &&
103
- prevDomain.current[1] === currentDomain[1];
104
- const isRangeEqual = prevRange.current[0] === currentRange[0] &&
105
- prevRange.current[1] === currentRange[1];
106
- if (pixelsAvailable === 0) {
107
- return;
108
- }
109
- if (!isDomainEqual || !isRangeEqual) {
110
- const newTicks = generateAxisTicks({
111
- scale: yScale,
112
- pixelsAvailable,
113
- largestTickSize: pixelsPerTick,
114
- });
115
- setScalerGridLines(scaleId, newTicks);
116
- setTicks(newTicks);
117
- prevDomain.current = currentDomain;
118
- prevRange.current = currentRange;
119
- }
120
- }, [scale, prevDomain, prevRange, pixelsAvailable]);
121
- //const yScale = scale?.function.copy().range(range);
122
- const yScale = scale === null || scale === void 0 ? void 0 : scale.functionWithContentHeightAsRange;
123
- //@ts-expect-error - this is a hack to get the yScale to work
124
- const labelFormat = useMemo(() => {
125
- var _a;
126
- if (labelFormatProp) {
127
- return labelFormatProp;
128
- }
129
- return (_a = yScale === null || yScale === void 0 ? void 0 : yScale.tickFormat()) !== null && _a !== void 0 ? _a : (() => '');
130
- }, [labelFormatProp, yScale]);
131
- /*useEffect(() => {
132
- requestAnimationFrame(() => {
133
- const newTicks = generateAxisTicks({
134
- scale: yScale,
135
- pixelsAvailable,
136
- largestTickSize: pixelsPerTick,
137
- });
138
- setTicks(newTicks);
139
- chartsContextValue.setScalerGridLines(scaleId, newTicks);
140
- });
141
- }, [
142
- yScale,
143
- pixelsAvailable,
144
- pixelsPerTick,
145
- position,
146
- labelFormat,
147
- chartsContextValue.setScalerGridLines,
148
- scaleId,
149
- ]);*/
150
- if (yScale === undefined) {
151
- return null;
152
- }
153
- return (_jsxs("div", { ref: containerRef, className: classes, style: { paddingLeft: '8px', paddingRight: '8px' }, children: [position === 'left' && (_jsx(Typography, { className: "ndl-charts-chart-axis-title", variant: "body-medium", children: title })), _jsx("svg", { style: {
154
- position: 'relative',
155
- width: largestTextWidth,
156
- overflow: 'visible',
157
- }, ref: svgRef, children: ticks.map((tick) => {
158
- const y = yScale(tick);
159
- return (_jsx("g", { className: "tick", transform: `translate(0 ${y})`, children: _jsx("text", { textAnchor: position === 'left' ? 'end' : 'start', x: position === 'left' ? '100%' : 0, dy: shouldRotateTicks ? '2.4em' : 0, dx: shouldRotateTicks ? '-1.6em' : 0, style: {
160
- alignmentBaseline: 'middle',
161
- }, children: labelFormat(tick) }) }, labelFormat(tick)));
162
- }) }), position === 'right' && (_jsx(Typography, { className: "ndl-charts-chart-axis-title", variant: "body-medium", children: title }))] }));
163
- });
164
- //# sourceMappingURL=YAxis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"YAxis.js","sourceRoot":"","sources":["../../../../src/charts/axis/YAxis.tsx"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- *
3
- * Copyright (c) "Neo4j"
4
- * Neo4j Sweden AB [http://neo4j.com]
5
- *
6
- * This file is part of Neo4j.
7
- *
8
- * Neo4j is free software: you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation, either version 3 of the License, or
11
- * (at your option) any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License
19
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
20
- */
21
- import { ExtendedWilkinsonDate, ExtendedWilkinson, } from './chart-tick-generation';
22
- export const generateAxisTicks = ({ scale, pixelsAvailable, largestTickSize, }) => {
23
- var _a;
24
- let tickCount = Math.floor(pixelsAvailable / largestTickSize); // Adjust the number of ticks based on width (example logic)
25
- if (tickCount <= 0) {
26
- tickCount = 1;
27
- }
28
- const domain = scale.domain();
29
- if (domain[0] instanceof Date || domain[1] instanceof Date) {
30
- const wilkinsonResult = ExtendedWilkinsonDate([domain[0], domain[1]], tickCount, true);
31
- return wilkinsonResult.ticks;
32
- }
33
- else {
34
- const wilkinsonResult = ExtendedWilkinson([domain[0], domain[1]], tickCount, true);
35
- return (_a = wilkinsonResult.ticks) !== null && _a !== void 0 ? _a : [];
36
- }
37
- };
38
- //# sourceMappingURL=chart-axis-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-axis-utils.js","sourceRoot":"","sources":["../../../../src/charts/axis/chart-axis-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAUjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,KAAK,EACL,eAAe,EACf,eAAe,GAKhB,EAAE,EAAE;;IACH,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,4DAA4D;IAC3H,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,SAAS,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,qBAAqB,CAC3C,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,MAAM,CAAC,CAAC,CAAS,CAAC,EACtC,SAAS,EACT,IAAI,CACL,CAAC;QACF,OAAO,eAAe,CAAC,KAAK,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,iBAAiB,CACvC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACtB,SAAS,EACT,IAAI,CACL,CAAC;QACF,OAAO,MAAA,eAAe,CAAC,KAAK,mCAAI,EAAE,CAAC;IACrC,CAAC;AACH,CAAC,CAAC"}
@@ -1,217 +0,0 @@
1
- /**
2
- *
3
- * Copyright (c) "Neo4j"
4
- * Neo4j Sweden AB [http://neo4j.com]
5
- *
6
- * This file is part of Neo4j.
7
- *
8
- * Neo4j is free software: you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation, either version 3 of the License, or
11
- * (at your option) any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License
19
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
20
- */
21
- /* This file implements the Extended Wilkinson algorithm for tick generation.
22
- * It is based on the original implementation by @d3.
23
- * https://github.com/d3/d3-axis/blob/main/src/tick.js
24
- *
25
- * The extended algorithm is described in "An Extension of Wilkinson’s Algorithm
26
- * for Positioning Tick Labels on Axes" by Justin Talbot, Sharon Lin, Pat Hanrahan
27
- *
28
- * http://vis.stanford.edu/files/2010-TickLabels-InfoVis.pdf
29
- */
30
- import * as d3 from 'd3';
31
- function match(a, b) {
32
- if (Array.isArray(a)) {
33
- return a.map((d) => b.indexOf(d)).map((d) => (d > -1 ? d : null));
34
- }
35
- else {
36
- const index = b.indexOf(a);
37
- return index > -1 ? [index + 1] : [null];
38
- }
39
- }
40
- function simplicity(q, Q, j, lmin, lmax, lstep) {
41
- var _a;
42
- const eps = Number.EPSILON * 100;
43
- const n = Q.length;
44
- const i = (_a = match(q, Q)[0]) !== null && _a !== void 0 ? _a : 0;
45
- const v = (lmin % lstep < eps || lstep - (lmin % lstep) < eps) &&
46
- lmin <= 0 &&
47
- lmin >= 0
48
- ? 1
49
- : 0;
50
- return 1 - (i - 1) / (n - 1) - j + v;
51
- }
52
- simplicity.max = (q, Q, j) => {
53
- var _a;
54
- const n = Q.length;
55
- const i = (_a = match(q, Q)[0]) !== null && _a !== void 0 ? _a : 0;
56
- const v = 1;
57
- return 1 - (i - 1) / (n - 1) - j + v;
58
- };
59
- function coverage(dmin, dmax, lmin, lmax) {
60
- const range = dmax - dmin;
61
- return (1 -
62
- (0.5 * (Math.pow(dmax - lmax, 2) + Math.pow(dmin - lmin, 2))) /
63
- Math.pow(0.1 * range, 2));
64
- }
65
- coverage.max = (dmin, dmax, span) => {
66
- const range = dmax - dmin;
67
- if (span > range) {
68
- const half = (span - range) / 2;
69
- return (1 -
70
- (0.5 * (Math.pow(half, 2) + Math.pow(half, 2))) / Math.pow(0.1 * range, 2));
71
- }
72
- else {
73
- return 1;
74
- }
75
- };
76
- function density(k, m, dmin, dmax, lmin, lmax) {
77
- const r = (k - 1) / (lmax - lmin);
78
- const rt = (m - 1) / (Math.max(lmax, dmax) - Math.min(dmin, lmin));
79
- return 2 - Math.max(r / rt, rt / r);
80
- }
81
- density.max = (k, m) => {
82
- return k >= m ? 2 - (k - 1) / (m - 1) : 1;
83
- };
84
- // the arguments are not used, but they are kept for consistency with the original implementation
85
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
86
- const legibility = (lmin, lmax, lstep) => 1;
87
- export function ExtendedWilkinson([dmin, dmax], m, onlyLoose = false, Q = [1, 5, 2, 2.5, 4, 3], w = [0.25, 0.2, 0.5, 0.05], nice = true) {
88
- const eps = Number.EPSILON * 100;
89
- if (m <= 0) {
90
- throw new Error('m must be greater than 0');
91
- }
92
- if (dmin > dmax) {
93
- const temp = dmin;
94
- dmin = dmax;
95
- dmax = temp;
96
- }
97
- if (dmax - dmin < eps) {
98
- return {
99
- score: -2,
100
- ticks: d3.range(dmin, dmax, (dmax - dmin) / m),
101
- };
102
- }
103
- const best = { score: -2 };
104
- let j = 1;
105
- while (j < Infinity) {
106
- for (const q of Q) {
107
- const sm = simplicity.max(q, Q, j);
108
- if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {
109
- j = Infinity;
110
- break;
111
- }
112
- let k = 2;
113
- while (k < Infinity) {
114
- const dm = density.max(k, m);
115
- if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {
116
- break;
117
- }
118
- const delta = (dmax - dmin) / (k + 1) / j / q;
119
- let z = Math.ceil(Math.log10(delta));
120
- while (z < Infinity) {
121
- const step = j * q * Math.pow(10, z);
122
- const cm = coverage.max(dmin, dmax, step * (k - 1));
123
- if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {
124
- break;
125
- }
126
- const min_start = Math.floor(dmax / step) * j - (k - 1) * j;
127
- const max_start = Math.ceil(dmin / step) * j;
128
- if (min_start > max_start) {
129
- z += 1;
130
- continue;
131
- }
132
- for (let start = min_start; start <= max_start; start++) {
133
- const lmin = start * (step / j);
134
- const lmax = lmin + step * (k - 1);
135
- const lstep = step;
136
- const s = simplicity(q, Q, j, lmin, lmax, lstep);
137
- const c = coverage(dmin, dmax, lmin, lmax);
138
- const g = density(k, m, dmin, dmax, lmin, lmax);
139
- const l = legibility(lmin, lmax, lstep);
140
- const score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;
141
- if (score > best.score &&
142
- (!onlyLoose || (lmin <= dmin && lmax >= dmax))) {
143
- best.lmin = lmin;
144
- best.lmax = lmax;
145
- if (nice) {
146
- best.lmin =
147
- lmin < lmax
148
- ? Math.floor(dmin / lstep) * lstep
149
- : Math.ceil(dmin / lstep) * lstep;
150
- best.lmax =
151
- lmax > lmin
152
- ? Math.ceil(dmax / lstep) * lstep
153
- : Math.floor(dmax / lstep) * lstep;
154
- }
155
- best.lstep = lstep;
156
- best.score = score;
157
- }
158
- }
159
- z += 1;
160
- }
161
- k += 1;
162
- }
163
- }
164
- j += 1;
165
- }
166
- best.ticks = d3.range(best.lmin, best.lmax, best.lstep).concat(best.lmax);
167
- best.ticks = best.ticks.filter((t) => t < dmax && t > dmin);
168
- return best;
169
- }
170
- export function ExtendedWilkinsonDate([dminDate, dmaxDate], m, onlyLoose = false, Q = [1, 5, 2, 2.5, 4, 3], w = [0.25, 0.2, 0.5, 0.05], nice = true) {
171
- var _a;
172
- // Convert dates to timestamps
173
- const dmin = dminDate.getTime();
174
- const dmax = dmaxDate.getTime();
175
- // Get numeric results
176
- const result = ExtendedWilkinson([dmin, dmax], m, onlyLoose, Q, w, nice);
177
- // Convert numeric ticks back to dates
178
- return Object.assign(Object.assign({}, result), { ticks: ((_a = result.ticks) === null || _a === void 0 ? void 0 : _a.map((t) => new Date(t))) || [] });
179
- }
180
- export function getTickLabelFormatterForDate(minDate, maxDate) {
181
- const timeSpanMs = maxDate.getTime() - minDate.getTime();
182
- const minuteMs = 1000 * 60;
183
- const hourMs = minuteMs * 60;
184
- const dayMs = hourMs * 24;
185
- const weekMs = dayMs * 7;
186
- const monthMs = dayMs * 30;
187
- const yearMs = dayMs * 365;
188
- let dateTimeFormatOptions;
189
- if (timeSpanMs <= hourMs) {
190
- // If the time span is less than or equal to 1 hour, show minutes and seconds
191
- dateTimeFormatOptions = { minute: '2-digit', second: '2-digit' };
192
- }
193
- else if (timeSpanMs <= dayMs) {
194
- // If less than or equal to 1 day, show hours and minutes
195
- dateTimeFormatOptions = { hour: '2-digit', minute: '2-digit' };
196
- }
197
- else if (timeSpanMs <= weekMs) {
198
- // If less than or equal to 1 week, show weekday and hour
199
- dateTimeFormatOptions = { weekday: 'short', hour: '2-digit' };
200
- }
201
- else if (timeSpanMs <= monthMs) {
202
- // If less than or equal to 1 month, show day and month
203
- dateTimeFormatOptions = { month: 'short', day: 'numeric' };
204
- }
205
- else if (timeSpanMs <= yearMs) {
206
- // If less than or equal to 1 year, show month
207
- dateTimeFormatOptions = { month: 'short' };
208
- }
209
- else {
210
- // If over a year, show year and month
211
- dateTimeFormatOptions = { year: 'numeric', month: 'short' };
212
- }
213
- return (date) => {
214
- return date.toLocaleDateString([], dateTimeFormatOptions);
215
- };
216
- }
217
- //# sourceMappingURL=chart-tick-generation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-tick-generation.js","sourceRoot":"","sources":["../../../../src/charts/axis/chart-tick-generation.ts"],"names":[],"mappings":"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"}