@cdx-ui/components 0.3.5 → 0.3.6
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/README.md +1 -1
- package/coverage.svg +1 -1
- package/docs/components/bar-chart/content.md +703 -0
- package/docs/components/content.md +9 -1
- package/docs/components/line-chart/content.md +567 -0
- package/docs/components/pie-chart/content.md +493 -0
- package/docs/components/progress-segmented/content.md +1 -1
- package/docs/components/stepper/content.md +599 -0
- package/docs/components/system-alert/content.md +533 -0
- package/docs/foundations/styles/tokens/all-tokens/content.md +2 -1
- package/docs/llms.txt +9 -0
- package/docs/patterns/content.md +1 -0
- package/docs/patterns/dashboard/content.md +423 -19
- package/docs/patterns/insights/content.md +590 -0
- package/docs/resources/release-notes/0.3.5/content.md +7 -0
- package/docs/resources/release-notes/content.md +1 -0
- package/lib/commonjs/components/BarChart/geometry.js +1130 -0
- package/lib/commonjs/components/BarChart/geometry.js.map +1 -0
- package/lib/commonjs/components/BarChart/index.js +942 -0
- package/lib/commonjs/components/BarChart/index.js.map +1 -0
- package/lib/commonjs/components/BarChart/styles.js +26 -0
- package/lib/commonjs/components/BarChart/styles.js.map +1 -0
- package/lib/commonjs/components/Button/index.js +2 -2
- package/lib/commonjs/components/Button/index.js.map +1 -1
- package/lib/commonjs/components/LineChart/geometry.js +698 -0
- package/lib/commonjs/components/LineChart/geometry.js.map +1 -0
- package/lib/commonjs/components/LineChart/index.js +747 -0
- package/lib/commonjs/components/LineChart/index.js.map +1 -0
- package/lib/commonjs/components/LineChart/styles.js +25 -0
- package/lib/commonjs/components/LineChart/styles.js.map +1 -0
- package/lib/commonjs/components/PieChart/geometry.js +216 -0
- package/lib/commonjs/components/PieChart/geometry.js.map +1 -0
- package/lib/commonjs/components/PieChart/index.js +476 -0
- package/lib/commonjs/components/PieChart/index.js.map +1 -0
- package/lib/commonjs/components/PieChart/styles.js +88 -0
- package/lib/commonjs/components/PieChart/styles.js.map +1 -0
- package/lib/commonjs/components/ProgressCircle/ProgressCircleRing.js +9 -31
- package/lib/commonjs/components/ProgressCircle/ProgressCircleRing.js.map +1 -1
- package/lib/commonjs/components/ProgressCircle/ProgressRing.js +52 -0
- package/lib/commonjs/components/ProgressCircle/ProgressRing.js.map +1 -0
- package/lib/commonjs/components/ScrollShadow/useScrollShadow.js +8 -7
- package/lib/commonjs/components/ScrollShadow/useScrollShadow.js.map +1 -1
- package/lib/commonjs/components/Stepper/index.js +369 -0
- package/lib/commonjs/components/Stepper/index.js.map +1 -0
- package/lib/commonjs/components/Stepper/styles.js +211 -0
- package/lib/commonjs/components/Stepper/styles.js.map +1 -0
- package/lib/commonjs/components/Stepper/useStepperLabelFit.js +22 -0
- package/lib/commonjs/components/Stepper/useStepperLabelFit.js.map +1 -0
- package/lib/commonjs/components/Stepper/useStepperLabelFit.web.js +52 -0
- package/lib/commonjs/components/Stepper/useStepperLabelFit.web.js.map +1 -0
- package/lib/commonjs/components/Stepper/useStepperRingColors.js +31 -0
- package/lib/commonjs/components/Stepper/useStepperRingColors.js.map +1 -0
- package/lib/commonjs/components/SystemAlert/animation.js +218 -0
- package/lib/commonjs/components/SystemAlert/animation.js.map +1 -0
- package/lib/commonjs/components/SystemAlert/index.js +525 -0
- package/lib/commonjs/components/SystemAlert/index.js.map +1 -0
- package/lib/commonjs/components/SystemAlert/styles.js +178 -0
- package/lib/commonjs/components/SystemAlert/styles.js.map +1 -0
- package/lib/commonjs/components/SystemAlert/useSystemAlertStatusBarStyle.js +53 -0
- package/lib/commonjs/components/SystemAlert/useSystemAlertStatusBarStyle.js.map +1 -0
- package/lib/commonjs/components/Tabs/index.js +4 -0
- package/lib/commonjs/components/Tabs/index.js.map +1 -1
- package/lib/commonjs/components/Tabs/styles.js +1 -1
- package/lib/commonjs/components/Tabs/styles.js.map +1 -1
- package/lib/commonjs/components/chart/ChartInspector.js +610 -0
- package/lib/commonjs/components/chart/ChartInspector.js.map +1 -0
- package/lib/commonjs/components/chart/format.js +93 -0
- package/lib/commonjs/components/chart/format.js.map +1 -0
- package/lib/commonjs/components/chart/index.js +2 -0
- package/lib/commonjs/components/chart/index.js.map +1 -0
- package/lib/commonjs/components/chart/motion.js +97 -0
- package/lib/commonjs/components/chart/motion.js.map +1 -0
- package/lib/commonjs/components/chart/palette.js +178 -0
- package/lib/commonjs/components/chart/palette.js.map +1 -0
- package/lib/commonjs/components/chart/size.js +34 -0
- package/lib/commonjs/components/chart/size.js.map +1 -0
- package/lib/commonjs/components/chart/ticks.js +59 -0
- package/lib/commonjs/components/chart/ticks.js.map +1 -0
- package/lib/commonjs/components/chart/types.js +6 -0
- package/lib/commonjs/components/chart/types.js.map +1 -0
- package/lib/commonjs/components/chart/useChartHostWidth.js +27 -0
- package/lib/commonjs/components/chart/useChartHostWidth.js.map +1 -0
- package/lib/commonjs/components/index.js +60 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/figma/SystemAlert.Button.figma.js +28 -0
- package/lib/commonjs/figma/SystemAlert.Button.figma.js.map +1 -0
- package/lib/commonjs/figma/SystemAlert.Close.figma.js +22 -0
- package/lib/commonjs/figma/SystemAlert.Close.figma.js.map +1 -0
- package/lib/commonjs/figma/SystemAlert.Description.figma.js +20 -0
- package/lib/commonjs/figma/SystemAlert.Description.figma.js.map +1 -0
- package/lib/commonjs/figma/SystemAlert.IconButton.figma.js +31 -0
- package/lib/commonjs/figma/SystemAlert.IconButton.figma.js.map +1 -0
- package/lib/commonjs/figma/SystemAlert.figma.js +48 -0
- package/lib/commonjs/figma/SystemAlert.figma.js.map +1 -0
- package/lib/module/components/BarChart/geometry.js +1110 -0
- package/lib/module/components/BarChart/geometry.js.map +1 -0
- package/lib/module/components/BarChart/index.js +936 -0
- package/lib/module/components/BarChart/index.js.map +1 -0
- package/lib/module/components/BarChart/styles.js +22 -0
- package/lib/module/components/BarChart/styles.js.map +1 -0
- package/lib/module/components/Button/index.js +2 -2
- package/lib/module/components/Button/index.js.map +1 -1
- package/lib/module/components/LineChart/geometry.js +685 -0
- package/lib/module/components/LineChart/geometry.js.map +1 -0
- package/lib/module/components/LineChart/index.js +741 -0
- package/lib/module/components/LineChart/index.js.map +1 -0
- package/lib/module/components/LineChart/styles.js +21 -0
- package/lib/module/components/LineChart/styles.js.map +1 -0
- package/lib/module/components/PieChart/geometry.js +209 -0
- package/lib/module/components/PieChart/geometry.js.map +1 -0
- package/lib/module/components/PieChart/index.js +471 -0
- package/lib/module/components/PieChart/index.js.map +1 -0
- package/lib/module/components/PieChart/styles.js +84 -0
- package/lib/module/components/PieChart/styles.js.map +1 -0
- package/lib/module/components/ProgressCircle/ProgressCircleRing.js +10 -32
- package/lib/module/components/ProgressCircle/ProgressCircleRing.js.map +1 -1
- package/lib/module/components/ProgressCircle/ProgressRing.js +48 -0
- package/lib/module/components/ProgressCircle/ProgressRing.js.map +1 -0
- package/lib/module/components/ScrollShadow/useScrollShadow.js +8 -7
- package/lib/module/components/ScrollShadow/useScrollShadow.js.map +1 -1
- package/lib/module/components/Stepper/index.js +360 -0
- package/lib/module/components/Stepper/index.js.map +1 -0
- package/lib/module/components/Stepper/styles.js +206 -0
- package/lib/module/components/Stepper/styles.js.map +1 -0
- package/lib/module/components/Stepper/useStepperLabelFit.js +18 -0
- package/lib/module/components/Stepper/useStepperLabelFit.js.map +1 -0
- package/lib/module/components/Stepper/useStepperLabelFit.web.js +48 -0
- package/lib/module/components/Stepper/useStepperLabelFit.web.js.map +1 -0
- package/lib/module/components/Stepper/useStepperRingColors.js +28 -0
- package/lib/module/components/Stepper/useStepperRingColors.js.map +1 -0
- package/lib/module/components/SystemAlert/animation.js +213 -0
- package/lib/module/components/SystemAlert/animation.js.map +1 -0
- package/lib/module/components/SystemAlert/index.js +515 -0
- package/lib/module/components/SystemAlert/index.js.map +1 -0
- package/lib/module/components/SystemAlert/styles.js +174 -0
- package/lib/module/components/SystemAlert/styles.js.map +1 -0
- package/lib/module/components/SystemAlert/useSystemAlertStatusBarStyle.js +49 -0
- package/lib/module/components/SystemAlert/useSystemAlertStatusBarStyle.js.map +1 -0
- package/lib/module/components/Tabs/index.js +4 -0
- package/lib/module/components/Tabs/index.js.map +1 -1
- package/lib/module/components/Tabs/styles.js +1 -1
- package/lib/module/components/Tabs/styles.js.map +1 -1
- package/lib/module/components/chart/ChartInspector.js +600 -0
- package/lib/module/components/chart/ChartInspector.js.map +1 -0
- package/lib/module/components/chart/format.js +84 -0
- package/lib/module/components/chart/format.js.map +1 -0
- package/lib/module/components/chart/index.js +2 -0
- package/lib/module/components/chart/index.js.map +1 -0
- package/lib/module/components/chart/motion.js +89 -0
- package/lib/module/components/chart/motion.js.map +1 -0
- package/lib/module/components/chart/palette.js +168 -0
- package/lib/module/components/chart/palette.js.map +1 -0
- package/lib/module/components/chart/size.js +29 -0
- package/lib/module/components/chart/size.js.map +1 -0
- package/lib/module/components/chart/ticks.js +55 -0
- package/lib/module/components/chart/ticks.js.map +1 -0
- package/lib/module/components/chart/types.js +4 -0
- package/lib/module/components/chart/types.js.map +1 -0
- package/lib/module/components/chart/useChartHostWidth.js +23 -0
- package/lib/module/components/chart/useChartHostWidth.js.map +1 -0
- package/lib/module/components/index.js +5 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/figma/SystemAlert.Button.figma.js +22 -0
- package/lib/module/figma/SystemAlert.Button.figma.js.map +1 -0
- package/lib/module/figma/SystemAlert.Close.figma.js +18 -0
- package/lib/module/figma/SystemAlert.Close.figma.js.map +1 -0
- package/lib/module/figma/SystemAlert.Description.figma.js +14 -0
- package/lib/module/figma/SystemAlert.Description.figma.js.map +1 -0
- package/lib/module/figma/SystemAlert.IconButton.figma.js +25 -0
- package/lib/module/figma/SystemAlert.IconButton.figma.js.map +1 -0
- package/lib/module/figma/SystemAlert.figma.js +42 -0
- package/lib/module/figma/SystemAlert.figma.js.map +1 -0
- package/lib/typescript/components/BarChart/geometry.d.ts +236 -0
- package/lib/typescript/components/BarChart/geometry.d.ts.map +1 -0
- package/lib/typescript/components/BarChart/index.d.ts +193 -0
- package/lib/typescript/components/BarChart/index.d.ts.map +1 -0
- package/lib/typescript/components/BarChart/styles.d.ts +32 -0
- package/lib/typescript/components/BarChart/styles.d.ts.map +1 -0
- package/lib/typescript/components/LineChart/geometry.d.ts +248 -0
- package/lib/typescript/components/LineChart/geometry.d.ts.map +1 -0
- package/lib/typescript/components/LineChart/index.d.ts +105 -0
- package/lib/typescript/components/LineChart/index.d.ts.map +1 -0
- package/lib/typescript/components/LineChart/styles.d.ts +12 -0
- package/lib/typescript/components/LineChart/styles.d.ts.map +1 -0
- package/lib/typescript/components/PieChart/geometry.d.ts +43 -0
- package/lib/typescript/components/PieChart/geometry.d.ts.map +1 -0
- package/lib/typescript/components/PieChart/index.d.ts +147 -0
- package/lib/typescript/components/PieChart/index.d.ts.map +1 -0
- package/lib/typescript/components/PieChart/styles.d.ts +27 -0
- package/lib/typescript/components/PieChart/styles.d.ts.map +1 -0
- package/lib/typescript/components/ProgressCircle/ProgressCircleRing.d.ts.map +1 -1
- package/lib/typescript/components/ProgressCircle/ProgressRing.d.ts +17 -0
- package/lib/typescript/components/ProgressCircle/ProgressRing.d.ts.map +1 -0
- package/lib/typescript/components/ScrollShadow/useScrollShadow.d.ts.map +1 -1
- package/lib/typescript/components/Stepper/index.d.ts +68 -0
- package/lib/typescript/components/Stepper/index.d.ts.map +1 -0
- package/lib/typescript/components/Stepper/styles.d.ts +46 -0
- package/lib/typescript/components/Stepper/styles.d.ts.map +1 -0
- package/lib/typescript/components/Stepper/useStepperLabelFit.d.ts +15 -0
- package/lib/typescript/components/Stepper/useStepperLabelFit.d.ts.map +1 -0
- package/lib/typescript/components/Stepper/useStepperLabelFit.web.d.ts +10 -0
- package/lib/typescript/components/Stepper/useStepperLabelFit.web.d.ts.map +1 -0
- package/lib/typescript/components/Stepper/useStepperRingColors.d.ts +6 -0
- package/lib/typescript/components/Stepper/useStepperRingColors.d.ts.map +1 -0
- package/lib/typescript/components/SystemAlert/animation.d.ts +56 -0
- package/lib/typescript/components/SystemAlert/animation.d.ts.map +1 -0
- package/lib/typescript/components/SystemAlert/index.d.ts +110 -0
- package/lib/typescript/components/SystemAlert/index.d.ts.map +1 -0
- package/lib/typescript/components/SystemAlert/styles.d.ts +38 -0
- package/lib/typescript/components/SystemAlert/styles.d.ts.map +1 -0
- package/lib/typescript/components/SystemAlert/useSystemAlertStatusBarStyle.d.ts +14 -0
- package/lib/typescript/components/SystemAlert/useSystemAlertStatusBarStyle.d.ts.map +1 -0
- package/lib/typescript/components/Tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/chart/ChartInspector.d.ts +101 -0
- package/lib/typescript/components/chart/ChartInspector.d.ts.map +1 -0
- package/lib/typescript/components/chart/format.d.ts +16 -0
- package/lib/typescript/components/chart/format.d.ts.map +1 -0
- package/lib/typescript/components/chart/index.d.ts +3 -0
- package/lib/typescript/components/chart/index.d.ts.map +1 -0
- package/lib/typescript/components/chart/motion.d.ts +27 -0
- package/lib/typescript/components/chart/motion.d.ts.map +1 -0
- package/lib/typescript/components/chart/palette.d.ts +44 -0
- package/lib/typescript/components/chart/palette.d.ts.map +1 -0
- package/lib/typescript/components/chart/size.d.ts +25 -0
- package/lib/typescript/components/chart/size.d.ts.map +1 -0
- package/lib/typescript/components/chart/ticks.d.ts +3 -0
- package/lib/typescript/components/chart/ticks.d.ts.map +1 -0
- package/lib/typescript/components/chart/types.d.ts +163 -0
- package/lib/typescript/components/chart/types.d.ts.map +1 -0
- package/lib/typescript/components/chart/useChartHostWidth.d.ts +9 -0
- package/lib/typescript/components/chart/useChartHostWidth.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +5 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/figma/SystemAlert.Button.figma.d.ts +11 -0
- package/lib/typescript/figma/SystemAlert.Button.figma.d.ts.map +1 -0
- package/lib/typescript/figma/SystemAlert.Close.figma.d.ts +11 -0
- package/lib/typescript/figma/SystemAlert.Close.figma.d.ts.map +1 -0
- package/lib/typescript/figma/SystemAlert.Description.figma.d.ts +8 -0
- package/lib/typescript/figma/SystemAlert.Description.figma.d.ts.map +1 -0
- package/lib/typescript/figma/SystemAlert.IconButton.figma.d.ts +11 -0
- package/lib/typescript/figma/SystemAlert.IconButton.figma.d.ts.map +1 -0
- package/lib/typescript/figma/SystemAlert.figma.d.ts +8 -0
- package/lib/typescript/figma/SystemAlert.figma.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/components/BarChart/geometry.ts +1469 -0
- package/src/components/BarChart/index.tsx +1424 -0
- package/src/components/BarChart/styles.ts +31 -0
- package/src/components/Button/index.tsx +1 -1
- package/src/components/LineChart/geometry.ts +957 -0
- package/src/components/LineChart/index.tsx +1109 -0
- package/src/components/LineChart/styles.ts +26 -0
- package/src/components/PieChart/geometry.ts +295 -0
- package/src/components/PieChart/index.tsx +715 -0
- package/src/components/PieChart/styles.ts +101 -0
- package/src/components/ProgressCircle/ProgressCircleRing.tsx +10 -39
- package/src/components/ProgressCircle/ProgressRing.tsx +60 -0
- package/src/components/ScrollShadow/useScrollShadow.ts +12 -11
- package/src/components/Stepper/index.tsx +452 -0
- package/src/components/Stepper/styles.ts +234 -0
- package/src/components/Stepper/useStepperLabelFit.ts +21 -0
- package/src/components/Stepper/useStepperLabelFit.web.ts +53 -0
- package/src/components/Stepper/useStepperRingColors.ts +29 -0
- package/src/components/SystemAlert/animation.ts +252 -0
- package/src/components/SystemAlert/index.tsx +684 -0
- package/src/components/SystemAlert/styles.ts +212 -0
- package/src/components/SystemAlert/useSystemAlertStatusBarStyle.ts +57 -0
- package/src/components/Tabs/index.tsx +4 -0
- package/src/components/Tabs/styles.ts +1 -1
- package/src/components/chart/ChartInspector.tsx +726 -0
- package/src/components/chart/format.ts +95 -0
- package/src/components/chart/index.ts +24 -0
- package/src/components/chart/motion.ts +98 -0
- package/src/components/chart/palette.tsx +247 -0
- package/src/components/chart/size.ts +21 -0
- package/src/components/chart/ticks.ts +53 -0
- package/src/components/chart/types.ts +183 -0
- package/src/components/chart/useChartHostWidth.ts +26 -0
- package/src/components/index.ts +5 -0
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CHART_SCRUB_HOLD_MS = void 0;
|
|
7
|
+
exports.ChartInspector = ChartInspector;
|
|
8
|
+
exports.ChartTooltipLayer = ChartTooltipLayer;
|
|
9
|
+
exports.MIN_POINTER_TARGET_PX = void 0;
|
|
10
|
+
exports.chartValueText = chartValueText;
|
|
11
|
+
exports.expandHitBox = expandHitBox;
|
|
12
|
+
exports.placeChartTooltip = placeChartTooltip;
|
|
13
|
+
var _react = require("react");
|
|
14
|
+
var _reactNative = require("react-native");
|
|
15
|
+
var _primitives = require("@cdx-ui/primitives");
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
const TOOLTIP_GAP = 8;
|
|
18
|
+
const TOOLTIP_MAX_WIDTH = 192;
|
|
19
|
+
/** WCAG 2.5.8 (AA) is 24px; 44px matches Apple HIG / WCAG 2.5.5 for touch. */
|
|
20
|
+
const MIN_POINTER_TARGET_PX = exports.MIN_POINTER_TARGET_PX = 44;
|
|
21
|
+
/** Hold before scrubbing a scrollable plot, so a flick can still scroll (Apple Health). */
|
|
22
|
+
const CHART_SCRUB_HOLD_MS = exports.CHART_SCRUB_HOLD_MS = 250;
|
|
23
|
+
const SCRUB_MOVE_SLOP_PX = 10;
|
|
24
|
+
function touchPoint(event) {
|
|
25
|
+
const touch = event.nativeEvent.touches?.[0];
|
|
26
|
+
const locationX = touch?.locationX ?? event.nativeEvent.locationX ?? 0;
|
|
27
|
+
const locationY = touch?.locationY ?? event.nativeEvent.locationY ?? 0;
|
|
28
|
+
return {
|
|
29
|
+
locationX,
|
|
30
|
+
locationY,
|
|
31
|
+
pageX: touch?.pageX ?? event.nativeEvent.pageX ?? locationX,
|
|
32
|
+
pageY: touch?.pageY ?? event.nativeEvent.pageY ?? locationY
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function expandHitBox(left, top, width, height, minSize = MIN_POINTER_TARGET_PX) {
|
|
36
|
+
const nextWidth = Math.max(width, minSize);
|
|
37
|
+
const nextHeight = Math.max(height, minSize);
|
|
38
|
+
return {
|
|
39
|
+
left: left - (nextWidth - width) / 2,
|
|
40
|
+
top: top - (nextHeight - height) / 2,
|
|
41
|
+
width: nextWidth,
|
|
42
|
+
height: nextHeight
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function targetIndexAt(targets, x, y) {
|
|
46
|
+
const hit = targets.findIndex(target => x >= target.left && x <= target.left + target.width && y >= target.top && y <= target.top + target.height);
|
|
47
|
+
return hit >= 0 ? hit : null;
|
|
48
|
+
}
|
|
49
|
+
function chartValueText(item) {
|
|
50
|
+
return item.label.length > 0 ? `${item.label} ${item.formattedValue}` : item.formattedValue;
|
|
51
|
+
}
|
|
52
|
+
function clampInto(value, min, max) {
|
|
53
|
+
// Wider than the frame: center it so it overflows both edges equally.
|
|
54
|
+
if (max < min) {
|
|
55
|
+
return (min + max) / 2;
|
|
56
|
+
}
|
|
57
|
+
return Math.min(Math.max(value, min), max);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Top-left of a tooltip in frame coordinates. Beside the anchor on the roomier side when it
|
|
62
|
+
* fits, otherwise above or below it; always clamped inside the frame so a clipping ancestor
|
|
63
|
+
* (a `Card`, a `ScrollView`) cannot cut it off.
|
|
64
|
+
*/
|
|
65
|
+
function placeChartTooltip(anchor, tip, frame) {
|
|
66
|
+
const gap = TOOLTIP_GAP + (anchor.radius ?? 0);
|
|
67
|
+
const rightOf = anchor.x + gap;
|
|
68
|
+
const leftOf = anchor.x - gap - tip.width;
|
|
69
|
+
const fitsRight = rightOf + tip.width <= frame.width;
|
|
70
|
+
const fitsLeft = leftOf >= 0;
|
|
71
|
+
const maxLeft = frame.width - tip.width;
|
|
72
|
+
const maxTop = frame.height - tip.height;
|
|
73
|
+
if (fitsLeft || fitsRight) {
|
|
74
|
+
const useLeft = anchor.x > frame.width / 2 ? fitsLeft : !fitsRight;
|
|
75
|
+
const top = anchor.y > frame.height / 2 ? anchor.y - tip.height : anchor.y;
|
|
76
|
+
return {
|
|
77
|
+
left: useLeft ? leftOf : rightOf,
|
|
78
|
+
top: clampInto(top, 0, maxTop)
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const above = anchor.y - TOOLTIP_GAP - tip.height;
|
|
82
|
+
const top = above >= 0 ? above : anchor.y + TOOLTIP_GAP;
|
|
83
|
+
return {
|
|
84
|
+
left: clampInto(anchor.x - tip.width / 2, 0, maxLeft),
|
|
85
|
+
top: clampInto(top, 0, maxTop)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Renders only from `content`, so a consumer tooltip slot can replace it later. */
|
|
90
|
+
function ChartTooltip({
|
|
91
|
+
content,
|
|
92
|
+
noValueText,
|
|
93
|
+
slot,
|
|
94
|
+
onSize
|
|
95
|
+
}) {
|
|
96
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
97
|
+
className: "gap-1 rounded-md bg-surface-neutral-strong px-3 py-2 shadow-lg",
|
|
98
|
+
onLayout: event => {
|
|
99
|
+
const {
|
|
100
|
+
width,
|
|
101
|
+
height
|
|
102
|
+
} = event.nativeEvent.layout;
|
|
103
|
+
onSize({
|
|
104
|
+
width,
|
|
105
|
+
height
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
"aria-hidden": true,
|
|
109
|
+
accessibilityElementsHidden: true,
|
|
110
|
+
importantForAccessibility: "no-hide-descendants",
|
|
111
|
+
...(0, _primitives.dataAttributes)({
|
|
112
|
+
slot: `${slot}-tooltip`
|
|
113
|
+
}),
|
|
114
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
115
|
+
className: "body-sm font-medium text-content-neutral-on-strong",
|
|
116
|
+
children: content.title
|
|
117
|
+
}), content.items.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
118
|
+
className: "body-sm text-content-neutral-on-strong",
|
|
119
|
+
children: noValueText
|
|
120
|
+
}) : content.items.map(item => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
121
|
+
className: "flex-row items-center gap-1.5",
|
|
122
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
123
|
+
className: "size-2 rounded-full",
|
|
124
|
+
style: {
|
|
125
|
+
backgroundColor: item.color
|
|
126
|
+
}
|
|
127
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
128
|
+
className: "body-sm text-content-neutral-on-strong",
|
|
129
|
+
children: chartValueText(item)
|
|
130
|
+
})]
|
|
131
|
+
}, item.seriesId))]
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Chart tooltip, measured and clamped inside `width` × `height`. Mount it in the chart's
|
|
137
|
+
* outer plot frame, never inside the plot `ScrollView`, which clips its content.
|
|
138
|
+
*/
|
|
139
|
+
function ChartTooltipLayer({
|
|
140
|
+
content,
|
|
141
|
+
noValueText,
|
|
142
|
+
slot,
|
|
143
|
+
anchorX,
|
|
144
|
+
anchorY,
|
|
145
|
+
anchorRadius,
|
|
146
|
+
width,
|
|
147
|
+
height
|
|
148
|
+
}) {
|
|
149
|
+
const [size, setSize] = (0, _react.useState)(null);
|
|
150
|
+
const position = size === null ? {
|
|
151
|
+
left: 0,
|
|
152
|
+
top: 0
|
|
153
|
+
} : placeChartTooltip({
|
|
154
|
+
x: anchorX,
|
|
155
|
+
y: anchorY,
|
|
156
|
+
radius: anchorRadius
|
|
157
|
+
}, size, {
|
|
158
|
+
width,
|
|
159
|
+
height
|
|
160
|
+
});
|
|
161
|
+
// A fixed-width box at the frame origin lets the tooltip take its natural width wherever it
|
|
162
|
+
// lands; `left`/`right` offsets shrink it to the space left before the frame edge.
|
|
163
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
164
|
+
pointerEvents: "none",
|
|
165
|
+
className: "absolute left-0 top-0 z-20 items-start",
|
|
166
|
+
style: {
|
|
167
|
+
width: TOOLTIP_MAX_WIDTH,
|
|
168
|
+
opacity: size === null ? 0 : 1,
|
|
169
|
+
transform: [{
|
|
170
|
+
translateX: position.left
|
|
171
|
+
}, {
|
|
172
|
+
translateY: position.top
|
|
173
|
+
}]
|
|
174
|
+
},
|
|
175
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartTooltip, {
|
|
176
|
+
content: content,
|
|
177
|
+
noValueText: noValueText,
|
|
178
|
+
slot: slot,
|
|
179
|
+
onSize: next => {
|
|
180
|
+
setSize(prev => prev?.width === next.width && prev.height === next.height ? prev : next);
|
|
181
|
+
}
|
|
182
|
+
})
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Host-element hit targets over an SVG plot. SVG nodes are poor focus and hover targets under
|
|
188
|
+
* React Native Web, so each target is a `Pressable` with roving focus: one tab stop per chart.
|
|
189
|
+
* Web: native `mousemove` (RN Web `Pressable` has no hover). Native: press-and-drag on the
|
|
190
|
+
* overlay; the tooltip tracks the finger and clears on lift. When the plot itself scrolls,
|
|
191
|
+
* scrubbing waits for a short hold so a flick can still pan. Keyboard and VoiceOver still use
|
|
192
|
+
* the buttons (Escape / two-finger Z).
|
|
193
|
+
*/
|
|
194
|
+
function ChartInspector({
|
|
195
|
+
targets,
|
|
196
|
+
summary,
|
|
197
|
+
selectable,
|
|
198
|
+
activeIndex,
|
|
199
|
+
selectedIndex,
|
|
200
|
+
slot,
|
|
201
|
+
holdToScrub = false,
|
|
202
|
+
onActivate,
|
|
203
|
+
onDeactivate,
|
|
204
|
+
onDismiss,
|
|
205
|
+
onSelectIndex,
|
|
206
|
+
hitTest,
|
|
207
|
+
neighborIndex,
|
|
208
|
+
onScrubLockChange
|
|
209
|
+
}) {
|
|
210
|
+
const refs = (0, _react.useRef)([]);
|
|
211
|
+
const overlayRef = (0, _react.useRef)(null);
|
|
212
|
+
const [keyboardFocus, setKeyboardFocus] = (0, _react.useState)(false);
|
|
213
|
+
const pointerRef = (0, _react.useRef)({
|
|
214
|
+
targets,
|
|
215
|
+
hitTest,
|
|
216
|
+
selectable,
|
|
217
|
+
holdToScrub,
|
|
218
|
+
onActivate,
|
|
219
|
+
onDeactivate,
|
|
220
|
+
onDismiss,
|
|
221
|
+
onSelectIndex,
|
|
222
|
+
activeIndex,
|
|
223
|
+
neighborIndex,
|
|
224
|
+
onScrubLockChange
|
|
225
|
+
});
|
|
226
|
+
pointerRef.current = {
|
|
227
|
+
targets,
|
|
228
|
+
hitTest,
|
|
229
|
+
selectable,
|
|
230
|
+
holdToScrub,
|
|
231
|
+
onActivate,
|
|
232
|
+
onDeactivate,
|
|
233
|
+
onDismiss,
|
|
234
|
+
onSelectIndex,
|
|
235
|
+
activeIndex,
|
|
236
|
+
neighborIndex,
|
|
237
|
+
onScrubLockChange
|
|
238
|
+
};
|
|
239
|
+
const scrubRef = (0, _react.useRef)({
|
|
240
|
+
locked: false,
|
|
241
|
+
holdTimer: null,
|
|
242
|
+
startPageX: 0,
|
|
243
|
+
startPageY: 0,
|
|
244
|
+
lastX: 0,
|
|
245
|
+
lastY: 0
|
|
246
|
+
});
|
|
247
|
+
const hitAtPoint = (x, y) => {
|
|
248
|
+
const {
|
|
249
|
+
targets: nextTargets,
|
|
250
|
+
hitTest: test
|
|
251
|
+
} = pointerRef.current;
|
|
252
|
+
return test ? test(x, y) : targetIndexAt(nextTargets, x, y);
|
|
253
|
+
};
|
|
254
|
+
const activateAtPoint = (x, y) => {
|
|
255
|
+
const next = hitAtPoint(x, y);
|
|
256
|
+
const {
|
|
257
|
+
onActivate: activate,
|
|
258
|
+
activeIndex: index,
|
|
259
|
+
onDeactivate: deactivate
|
|
260
|
+
} = pointerRef.current;
|
|
261
|
+
if (next === null) {
|
|
262
|
+
if (index !== null) {
|
|
263
|
+
deactivate(index);
|
|
264
|
+
}
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
activate(next);
|
|
268
|
+
};
|
|
269
|
+
const clearHoldTimer = () => {
|
|
270
|
+
if (scrubRef.current.holdTimer != null) {
|
|
271
|
+
clearTimeout(scrubRef.current.holdTimer);
|
|
272
|
+
scrubRef.current.holdTimer = null;
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
const clearPointer = () => {
|
|
276
|
+
const {
|
|
277
|
+
activeIndex: index,
|
|
278
|
+
onDeactivate: deactivate,
|
|
279
|
+
onDismiss: dismiss
|
|
280
|
+
} = pointerRef.current;
|
|
281
|
+
dismiss();
|
|
282
|
+
if (index !== null) {
|
|
283
|
+
deactivate(index);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
const finishScrub = () => {
|
|
287
|
+
const wasLocked = scrubRef.current.locked;
|
|
288
|
+
// A tap that never passed the scroll slop still selects. A move that cancelled the
|
|
289
|
+
// hold is a scroll and leaves the chart alone.
|
|
290
|
+
const wasTap = pointerRef.current.holdToScrub && !wasLocked && scrubRef.current.holdTimer != null;
|
|
291
|
+
clearHoldTimer();
|
|
292
|
+
const shouldFinish = wasLocked || wasTap || !pointerRef.current.holdToScrub;
|
|
293
|
+
scrubRef.current.locked = false;
|
|
294
|
+
if (wasLocked) {
|
|
295
|
+
pointerRef.current.onScrubLockChange?.(false);
|
|
296
|
+
}
|
|
297
|
+
if (!shouldFinish) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const {
|
|
301
|
+
activeIndex: index,
|
|
302
|
+
selectable: canSelect,
|
|
303
|
+
onSelectIndex: select,
|
|
304
|
+
onActivate: activate
|
|
305
|
+
} = pointerRef.current;
|
|
306
|
+
const hit = wasTap ? hitAtPoint(scrubRef.current.lastX, scrubRef.current.lastY) : index;
|
|
307
|
+
if (wasTap && hit !== null) {
|
|
308
|
+
activate(hit);
|
|
309
|
+
}
|
|
310
|
+
if (canSelect && hit !== null) {
|
|
311
|
+
select(hit);
|
|
312
|
+
}
|
|
313
|
+
clearPointer();
|
|
314
|
+
};
|
|
315
|
+
const beginHold = event => {
|
|
316
|
+
if (_reactNative.Platform.OS === 'web') {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const point = touchPoint(event);
|
|
320
|
+
clearHoldTimer();
|
|
321
|
+
scrubRef.current.locked = false;
|
|
322
|
+
scrubRef.current.startPageX = point.pageX;
|
|
323
|
+
scrubRef.current.startPageY = point.pageY;
|
|
324
|
+
scrubRef.current.lastX = point.locationX;
|
|
325
|
+
scrubRef.current.lastY = point.locationY;
|
|
326
|
+
if (!pointerRef.current.holdToScrub) {
|
|
327
|
+
activateAtPoint(point.locationX, point.locationY);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
scrubRef.current.holdTimer = setTimeout(() => {
|
|
331
|
+
scrubRef.current.holdTimer = null;
|
|
332
|
+
scrubRef.current.locked = true;
|
|
333
|
+
pointerRef.current.onScrubLockChange?.(true);
|
|
334
|
+
activateAtPoint(scrubRef.current.lastX, scrubRef.current.lastY);
|
|
335
|
+
}, CHART_SCRUB_HOLD_MS);
|
|
336
|
+
};
|
|
337
|
+
const noteHoldMove = event => {
|
|
338
|
+
const point = touchPoint(event);
|
|
339
|
+
scrubRef.current.lastX = point.locationX;
|
|
340
|
+
scrubRef.current.lastY = point.locationY;
|
|
341
|
+
if (!pointerRef.current.holdToScrub) {
|
|
342
|
+
activateAtPoint(point.locationX, point.locationY);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (scrubRef.current.locked || scrubRef.current.holdTimer == null) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
const dist = Math.hypot(point.pageX - scrubRef.current.startPageX, point.pageY - scrubRef.current.startPageY);
|
|
349
|
+
if (dist > SCRUB_MOVE_SLOP_PX) {
|
|
350
|
+
clearHoldTimer();
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
const panResponder = (0, _react.useRef)(_reactNative.PanResponder.create({
|
|
354
|
+
onStartShouldSetPanResponder: () => false,
|
|
355
|
+
onMoveShouldSetPanResponder: () => {
|
|
356
|
+
if (_reactNative.Platform.OS === 'web') {
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
return pointerRef.current.holdToScrub && scrubRef.current.locked;
|
|
360
|
+
},
|
|
361
|
+
onPanResponderTerminationRequest: () => !scrubRef.current.locked,
|
|
362
|
+
onPanResponderGrant: event => {
|
|
363
|
+
activateAtPoint(event.nativeEvent.locationX, event.nativeEvent.locationY);
|
|
364
|
+
},
|
|
365
|
+
onPanResponderMove: event => {
|
|
366
|
+
activateAtPoint(event.nativeEvent.locationX, event.nativeEvent.locationY);
|
|
367
|
+
},
|
|
368
|
+
onPanResponderRelease: finishScrub,
|
|
369
|
+
onPanResponderTerminate: finishScrub
|
|
370
|
+
})).current;
|
|
371
|
+
const count = targets.length;
|
|
372
|
+
const rovingIndex = Math.min(activeIndex ?? selectedIndex ?? 0, Math.max(count - 1, 0));
|
|
373
|
+
|
|
374
|
+
// RN Web Pressable does not emit hover. Bind the DOM node directly so mousemove
|
|
375
|
+
// along the line (and across category bands) opens the tooltip.
|
|
376
|
+
(0, _react.useEffect)(() => {
|
|
377
|
+
const node = overlayRef.current;
|
|
378
|
+
if (node == null || typeof node.addEventListener !== 'function') {
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
const hitAt = event => {
|
|
382
|
+
const {
|
|
383
|
+
targets: nextTargets,
|
|
384
|
+
hitTest: test
|
|
385
|
+
} = pointerRef.current;
|
|
386
|
+
const rect = node.getBoundingClientRect();
|
|
387
|
+
const x = event.clientX - rect.left;
|
|
388
|
+
const y = event.clientY - rect.top;
|
|
389
|
+
return test ? test(x, y) : targetIndexAt(nextTargets, x, y);
|
|
390
|
+
};
|
|
391
|
+
const clearActive = () => {
|
|
392
|
+
const {
|
|
393
|
+
activeIndex: index,
|
|
394
|
+
onDeactivate: deactivate,
|
|
395
|
+
onDismiss: dismiss
|
|
396
|
+
} = pointerRef.current;
|
|
397
|
+
dismiss();
|
|
398
|
+
if (index !== null) {
|
|
399
|
+
deactivate(index);
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
const move = event => {
|
|
403
|
+
setKeyboardFocus(false);
|
|
404
|
+
const next = hitAt(event);
|
|
405
|
+
const {
|
|
406
|
+
onActivate: activate,
|
|
407
|
+
activeIndex: index,
|
|
408
|
+
onDeactivate: deactivate
|
|
409
|
+
} = pointerRef.current;
|
|
410
|
+
if (next === null) {
|
|
411
|
+
if (index !== null) {
|
|
412
|
+
deactivate(index);
|
|
413
|
+
}
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
activate(next);
|
|
417
|
+
};
|
|
418
|
+
const down = event => {
|
|
419
|
+
if (event.button !== 0) {
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
setKeyboardFocus(false);
|
|
423
|
+
const next = hitAt(event);
|
|
424
|
+
const {
|
|
425
|
+
onActivate: activate,
|
|
426
|
+
selectable: canSelect,
|
|
427
|
+
onSelectIndex: select
|
|
428
|
+
} = pointerRef.current;
|
|
429
|
+
if (next === null) {
|
|
430
|
+
clearActive();
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
activate(next);
|
|
434
|
+
if (canSelect) {
|
|
435
|
+
select(next);
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
const leave = event => {
|
|
439
|
+
if (node.contains(event.relatedTarget)) {
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
const {
|
|
443
|
+
activeIndex: index,
|
|
444
|
+
onDeactivate: deactivate
|
|
445
|
+
} = pointerRef.current;
|
|
446
|
+
if (index !== null) {
|
|
447
|
+
deactivate(index);
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
const docDown = event => {
|
|
451
|
+
if (node.contains(event.target)) {
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
clearActive();
|
|
455
|
+
};
|
|
456
|
+
node.addEventListener('mousemove', move);
|
|
457
|
+
node.addEventListener('mousedown', down);
|
|
458
|
+
node.addEventListener('mouseleave', leave);
|
|
459
|
+
document.addEventListener('mousedown', docDown);
|
|
460
|
+
return () => {
|
|
461
|
+
node.removeEventListener('mousemove', move);
|
|
462
|
+
node.removeEventListener('mousedown', down);
|
|
463
|
+
node.removeEventListener('mouseleave', leave);
|
|
464
|
+
document.removeEventListener('mousedown', docDown);
|
|
465
|
+
if (scrubRef.current.holdTimer != null) {
|
|
466
|
+
clearTimeout(scrubRef.current.holdTimer);
|
|
467
|
+
scrubRef.current.holdTimer = null;
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
}, []);
|
|
471
|
+
const handleKeyDown = (index, event) => {
|
|
472
|
+
const key = event.nativeEvent.key ?? event.key ?? '';
|
|
473
|
+
const shiftKey = event.shiftKey === true || event.nativeEvent.shiftKey === true;
|
|
474
|
+
if (key === 'Escape' || key === 'Enter' || key === ' ' || key === 'Tab' || key === 'ArrowRight' || key === 'ArrowLeft' || key === 'ArrowUp' || key === 'ArrowDown' || key === 'Home' || key === 'End') {
|
|
475
|
+
setKeyboardFocus(true);
|
|
476
|
+
}
|
|
477
|
+
if (key === 'Escape') {
|
|
478
|
+
event.preventDefault?.();
|
|
479
|
+
onDismiss();
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
if (key === 'Enter' || key === ' ') {
|
|
483
|
+
event.preventDefault?.();
|
|
484
|
+
onActivate(index);
|
|
485
|
+
if (selectable) {
|
|
486
|
+
onSelectIndex(index);
|
|
487
|
+
}
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
if (key === 'Tab') {
|
|
491
|
+
const next = neighborIndex?.(index, shiftKey ? 'Shift+Tab' : 'Tab');
|
|
492
|
+
if (next === undefined || next === null || next === index) {
|
|
493
|
+
return;
|
|
494
|
+
}
|
|
495
|
+
event.preventDefault?.();
|
|
496
|
+
onActivate(next);
|
|
497
|
+
refs.current[next]?.focus();
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
let next = neighborIndex?.(index, key) ?? null;
|
|
501
|
+
if (next === null) {
|
|
502
|
+
if (key === 'ArrowRight' || key === 'ArrowDown') {
|
|
503
|
+
next = Math.min(index + 1, count - 1);
|
|
504
|
+
} else if (key === 'ArrowLeft' || key === 'ArrowUp') {
|
|
505
|
+
next = Math.max(index - 1, 0);
|
|
506
|
+
} else if (key === 'Home') {
|
|
507
|
+
next = 0;
|
|
508
|
+
} else if (key === 'End') {
|
|
509
|
+
next = count - 1;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
if (next === null) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
event.preventDefault?.();
|
|
516
|
+
onActivate(next);
|
|
517
|
+
refs.current[next]?.focus();
|
|
518
|
+
};
|
|
519
|
+
const blurInspector = event => {
|
|
520
|
+
const related = event?.nativeEvent?.relatedTarget ?? event?.relatedTarget;
|
|
521
|
+
const node = overlayRef.current;
|
|
522
|
+
if (node?.contains?.(related) === true) {
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
setKeyboardFocus(false);
|
|
526
|
+
if (activeIndex !== null) {
|
|
527
|
+
onDeactivate(activeIndex);
|
|
528
|
+
}
|
|
529
|
+
};
|
|
530
|
+
const outline = keyboardFocus && activeIndex !== null ? targets.at(activeIndex)?.outline ?? targets.at(activeIndex) : undefined;
|
|
531
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
532
|
+
ref: overlayRef,
|
|
533
|
+
className: "absolute inset-0 z-10",
|
|
534
|
+
role: "group",
|
|
535
|
+
"aria-label": summary,
|
|
536
|
+
accessibilityLabel: summary,
|
|
537
|
+
onAccessibilityEscape: onDismiss,
|
|
538
|
+
...(_reactNative.Platform.OS === 'web' ? {} : {
|
|
539
|
+
...panResponder.panHandlers,
|
|
540
|
+
onTouchStart: beginHold,
|
|
541
|
+
onTouchMove: noteHoldMove,
|
|
542
|
+
onTouchEnd: finishScrub,
|
|
543
|
+
onTouchCancel: finishScrub
|
|
544
|
+
}),
|
|
545
|
+
...(0, _primitives.dataAttributes)({
|
|
546
|
+
slot: `${slot}-inspector`
|
|
547
|
+
}),
|
|
548
|
+
children: [outline !== undefined ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
549
|
+
pointerEvents: "none",
|
|
550
|
+
className: "absolute rounded-sm border-2 border-[var(--color-stroke-ring)]",
|
|
551
|
+
style: {
|
|
552
|
+
left: outline.left,
|
|
553
|
+
top: outline.top,
|
|
554
|
+
width: outline.width,
|
|
555
|
+
height: outline.height
|
|
556
|
+
},
|
|
557
|
+
accessibilityElementsHidden: true,
|
|
558
|
+
importantForAccessibility: "no-hide-descendants",
|
|
559
|
+
...(0, _primitives.dataAttributes)({
|
|
560
|
+
slot: `${slot}-focus`
|
|
561
|
+
})
|
|
562
|
+
}) : null, targets.map((target, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
563
|
+
ref: node => {
|
|
564
|
+
refs.current[index] = node;
|
|
565
|
+
},
|
|
566
|
+
className: "absolute rounded-sm web:outline-none",
|
|
567
|
+
style: {
|
|
568
|
+
left: target.left,
|
|
569
|
+
top: target.top,
|
|
570
|
+
width: target.width,
|
|
571
|
+
height: target.height
|
|
572
|
+
},
|
|
573
|
+
accessibilityRole: "button",
|
|
574
|
+
accessibilityLabel: target.accessibilityLabel,
|
|
575
|
+
accessibilityState: selectable && _reactNative.Platform.OS !== 'web' ? {
|
|
576
|
+
selected: target.selected
|
|
577
|
+
} : undefined,
|
|
578
|
+
"aria-pressed": selectable && _reactNative.Platform.OS === 'web' ? target.selected : undefined,
|
|
579
|
+
pointerEvents: "none",
|
|
580
|
+
focusable: _reactNative.Platform.OS !== 'web' || index === rovingIndex,
|
|
581
|
+
tabIndex: index === rovingIndex ? 0 : -1,
|
|
582
|
+
onHoverIn: () => {
|
|
583
|
+
onActivate(index);
|
|
584
|
+
},
|
|
585
|
+
onHoverOut: () => {
|
|
586
|
+
onDeactivate(index);
|
|
587
|
+
},
|
|
588
|
+
onFocus: () => {
|
|
589
|
+
setKeyboardFocus(true);
|
|
590
|
+
onActivate(index);
|
|
591
|
+
},
|
|
592
|
+
onBlur: event => blurInspector(event),
|
|
593
|
+
onPress: () => {
|
|
594
|
+
onActivate(index);
|
|
595
|
+
if (selectable) {
|
|
596
|
+
onSelectIndex(index);
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
onAccessibilityEscape: onDismiss,
|
|
600
|
+
onKeyDown: event => {
|
|
601
|
+
handleKeyDown(index, event);
|
|
602
|
+
},
|
|
603
|
+
...(0, _primitives.dataAttributes)({
|
|
604
|
+
slot: `${slot}-point`,
|
|
605
|
+
selected: target.selected
|
|
606
|
+
})
|
|
607
|
+
}, target.key))]
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
//# sourceMappingURL=ChartInspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_primitives","_jsxRuntime","TOOLTIP_GAP","TOOLTIP_MAX_WIDTH","MIN_POINTER_TARGET_PX","exports","CHART_SCRUB_HOLD_MS","SCRUB_MOVE_SLOP_PX","touchPoint","event","touch","nativeEvent","touches","locationX","locationY","pageX","pageY","expandHitBox","left","top","width","height","minSize","nextWidth","Math","max","nextHeight","targetIndexAt","targets","x","y","hit","findIndex","target","chartValueText","item","label","length","formattedValue","clampInto","value","min","placeChartTooltip","anchor","tip","frame","gap","radius","rightOf","leftOf","fitsRight","fitsLeft","maxLeft","maxTop","useLeft","above","ChartTooltip","content","noValueText","slot","onSize","jsxs","View","className","onLayout","layout","accessibilityElementsHidden","importantForAccessibility","dataAttributes","children","jsx","Text","title","items","map","style","backgroundColor","color","seriesId","ChartTooltipLayer","anchorX","anchorY","anchorRadius","size","setSize","useState","position","pointerEvents","opacity","transform","translateX","translateY","next","prev","ChartInspector","summary","selectable","activeIndex","selectedIndex","holdToScrub","onActivate","onDeactivate","onDismiss","onSelectIndex","hitTest","neighborIndex","onScrubLockChange","refs","useRef","overlayRef","keyboardFocus","setKeyboardFocus","pointerRef","current","scrubRef","locked","holdTimer","startPageX","startPageY","lastX","lastY","hitAtPoint","nextTargets","test","activateAtPoint","activate","index","deactivate","clearHoldTimer","clearTimeout","clearPointer","dismiss","finishScrub","wasLocked","wasTap","shouldFinish","canSelect","select","beginHold","Platform","OS","point","setTimeout","noteHoldMove","dist","hypot","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderTerminationRequest","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onPanResponderTerminate","count","rovingIndex","useEffect","node","addEventListener","hitAt","rect","getBoundingClientRect","clientX","clientY","clearActive","move","down","button","leave","contains","relatedTarget","docDown","document","removeEventListener","handleKeyDown","key","shiftKey","preventDefault","undefined","focus","blurInspector","related","outline","at","ref","role","accessibilityLabel","onAccessibilityEscape","panHandlers","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","Pressable","accessibilityRole","accessibilityState","selected","focusable","tabIndex","onHoverIn","onHoverOut","onFocus","onBlur","onPress","onKeyDown"],"sourceRoot":"../../../../src","sources":["components/chart/ChartInspector.tsx"],"mappings":"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","ignoreList":[]}
|