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