@buoy-gg/shared-ui 7.0.28 → 7.0.29
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/lib/commonjs/JsModal.js +12 -2
- package/lib/commonjs/dataViewer/DataTreeActionDock.js +1 -0
- package/lib/commonjs/dataViewer/DataViewer.js +6 -3
- package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +13 -4
- package/lib/commonjs/hooks/safe-area-impl.js +1 -1
- package/lib/commonjs/license/FeatureGate.js +9 -0
- package/lib/commonjs/ui/backgrounds/registry.js +3 -2
- package/lib/commonjs/ui/backgrounds/variants/meteors.js +222 -78
- package/lib/commonjs/ui/components/Badge.js +3 -1
- package/lib/commonjs/ui/components/CompactRow.js +10 -1
- package/lib/commonjs/ui/components/CopyButton.js +3 -1
- package/lib/commonjs/ui/components/DraggableHeader.js +5 -1
- package/lib/commonjs/ui/components/DynamicFilterView.js +23 -4
- package/lib/commonjs/ui/components/EventStepperFooter.js +8 -0
- package/lib/commonjs/ui/components/FilterComponents.js +18 -2
- package/lib/commonjs/ui/components/ModalHeader.js +12 -3
- package/lib/commonjs/ui/components/PowerToggleButton.js +2 -0
- package/lib/commonjs/ui/components/SearchBar.js +6 -1
- package/lib/commonjs/ui/components/SectionHeader.js +3 -1
- package/lib/commonjs/ui/components/TabSelector.js +15 -4
- package/lib/commonjs/ui/components/WindowControls.js +68 -96
- package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +12 -8
- package/lib/module/JsModal.js +12 -2
- package/lib/module/dataViewer/DataTreeActionDock.js +1 -0
- package/lib/module/dataViewer/DataViewer.js +6 -3
- package/lib/module/dataViewer/VirtualizedDataExplorer.js +13 -4
- package/lib/module/hooks/safe-area-impl.js +1 -1
- package/lib/module/license/FeatureGate.js +9 -0
- package/lib/module/ui/backgrounds/registry.js +3 -2
- package/lib/module/ui/backgrounds/variants/meteors.js +224 -80
- package/lib/module/ui/components/Badge.js +3 -1
- package/lib/module/ui/components/CompactRow.js +10 -1
- package/lib/module/ui/components/CopyButton.js +3 -1
- package/lib/module/ui/components/DraggableHeader.js +5 -1
- package/lib/module/ui/components/DynamicFilterView.js +23 -4
- package/lib/module/ui/components/EventStepperFooter.js +8 -0
- package/lib/module/ui/components/FilterComponents.js +18 -2
- package/lib/module/ui/components/ModalHeader.js +12 -3
- package/lib/module/ui/components/PowerToggleButton.js +2 -0
- package/lib/module/ui/components/SearchBar.js +6 -1
- package/lib/module/ui/components/SectionHeader.js +3 -1
- package/lib/module/ui/components/TabSelector.js +15 -4
- package/lib/module/ui/components/WindowControls.js +69 -97
- package/lib/module/ui/gameUI/constants/gameUIColors.js +12 -8
- package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts +2 -0
- package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts +9 -0
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts +22 -6
- package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/Badge.d.ts +3 -1
- package/lib/typescript/commonjs/ui/components/Badge.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts +5 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/CopyButton.d.ts +5 -0
- package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts +2 -0
- package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts +10 -2
- package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts +16 -2
- package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/PowerToggleButton.d.ts +4 -1
- package/lib/typescript/commonjs/ui/components/PowerToggleButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SearchBar.d.ts +7 -1
- package/lib/typescript/commonjs/ui/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SectionHeader.d.ts +7 -1
- package/lib/typescript/commonjs/ui/components/SectionHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/TabSelector.d.ts +20 -1
- package/lib/typescript/commonjs/ui/components/TabSelector.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/WindowControls.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +5 -0
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
- package/lib/typescript/module/JsModal.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/DataViewer.d.ts +2 -0
- package/lib/typescript/module/dataViewer/DataViewer.d.ts.map +1 -1
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts +9 -0
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +1 -1
- package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts +22 -6
- package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/Badge.d.ts +3 -1
- package/lib/typescript/module/ui/components/Badge.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts +5 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/CopyButton.d.ts +5 -0
- package/lib/typescript/module/ui/components/CopyButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/DraggableHeader.d.ts +2 -0
- package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FilterComponents.d.ts +10 -2
- package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ModalHeader.d.ts +16 -2
- package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/PowerToggleButton.d.ts +4 -1
- package/lib/typescript/module/ui/components/PowerToggleButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SearchBar.d.ts +7 -1
- package/lib/typescript/module/ui/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SectionHeader.d.ts +7 -1
- package/lib/typescript/module/ui/components/SectionHeader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/TabSelector.d.ts +20 -1
- package/lib/typescript/module/ui/components/TabSelector.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/WindowControls.d.ts.map +1 -1
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +5 -0
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -48,6 +48,9 @@ export const EventStepperFooter = /*#__PURE__*/memo(function EventStepperFooter(
|
|
|
48
48
|
children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
49
49
|
onPress: onPrevious,
|
|
50
50
|
disabled: isFirstItem,
|
|
51
|
+
testID: "tool-stepper-previous",
|
|
52
|
+
accessibilityRole: "button",
|
|
53
|
+
accessibilityLabel: "Previous",
|
|
51
54
|
style: [styles.navButton, isNight && styles.nightNavButton, isFirstItem && styles.navButtonDisabled],
|
|
52
55
|
activeOpacity: 0.7,
|
|
53
56
|
children: [/*#__PURE__*/_jsx(ChevronLeft, {
|
|
@@ -60,15 +63,20 @@ export const EventStepperFooter = /*#__PURE__*/memo(function EventStepperFooter(
|
|
|
60
63
|
}), /*#__PURE__*/_jsxs(View, {
|
|
61
64
|
style: styles.counterContainer,
|
|
62
65
|
children: [/*#__PURE__*/_jsxs(Text, {
|
|
66
|
+
testID: "tool-stepper-counter",
|
|
63
67
|
style: [styles.counterText, isNight && styles.nightCounterText],
|
|
64
68
|
children: [itemLabel, " ", currentIndex + 1, " of ", totalItems]
|
|
65
69
|
}), subtitle && /*#__PURE__*/_jsx(Text, {
|
|
70
|
+
testID: "tool-stepper-subtitle",
|
|
66
71
|
style: [styles.subtitleText, isNight && styles.nightSubtitleText],
|
|
67
72
|
children: subtitle
|
|
68
73
|
})]
|
|
69
74
|
}), /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
70
75
|
onPress: onNext,
|
|
71
76
|
disabled: isLastItem,
|
|
77
|
+
testID: "tool-stepper-next",
|
|
78
|
+
accessibilityRole: "button",
|
|
79
|
+
accessibilityLabel: "Next",
|
|
72
80
|
style: [styles.navButton, isNight && styles.nightNavButton, isLastItem && styles.navButtonDisabled],
|
|
73
81
|
activeOpacity: 0.7,
|
|
74
82
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
@@ -59,13 +59,16 @@ export function AddFilterInput({
|
|
|
59
59
|
onSubmit,
|
|
60
60
|
onCancel,
|
|
61
61
|
placeholder = "Add filter...",
|
|
62
|
-
color = "#E5E7EB"
|
|
62
|
+
color = "#E5E7EB",
|
|
63
|
+
testID = "buoy-filter-input"
|
|
63
64
|
}) {
|
|
64
65
|
return /*#__PURE__*/_jsxs(View, {
|
|
65
66
|
style: [styles.inputContainer, {
|
|
66
67
|
borderColor: `${color}40`
|
|
67
68
|
}],
|
|
68
69
|
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
70
|
+
testID: testID,
|
|
71
|
+
accessibilityLabel: placeholder,
|
|
69
72
|
value: value,
|
|
70
73
|
onChangeText: onChange,
|
|
71
74
|
onSubmitEditing: onSubmit,
|
|
@@ -84,6 +87,9 @@ export function AddFilterInput({
|
|
|
84
87
|
style: styles.inputButtons,
|
|
85
88
|
children: [value.trim() && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
86
89
|
onPress: onSubmit,
|
|
90
|
+
testID: `${testID}-add`,
|
|
91
|
+
accessibilityLabel: "Add filter",
|
|
92
|
+
accessibilityRole: "button",
|
|
87
93
|
style: [styles.inlineAddButton, {
|
|
88
94
|
backgroundColor: `${color}15`,
|
|
89
95
|
borderColor: `${color}40`
|
|
@@ -96,6 +102,9 @@ export function AddFilterInput({
|
|
|
96
102
|
})
|
|
97
103
|
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
98
104
|
onPress: onCancel,
|
|
105
|
+
testID: `${testID}-cancel`,
|
|
106
|
+
accessibilityLabel: "Cancel adding filter",
|
|
107
|
+
accessibilityRole: "button",
|
|
99
108
|
style: styles.cancelButton,
|
|
100
109
|
children: /*#__PURE__*/_jsx(X, {
|
|
101
110
|
size: 16,
|
|
@@ -111,13 +120,17 @@ export function AddFilterInput({
|
|
|
111
120
|
export function AddFilterButton({
|
|
112
121
|
onPress,
|
|
113
122
|
color = "#E5E7EB",
|
|
114
|
-
label = "Add Filter"
|
|
123
|
+
label = "Add Filter",
|
|
124
|
+
testID = "buoy-filter-add-open"
|
|
115
125
|
}) {
|
|
116
126
|
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
117
127
|
style: [styles.addButton, {
|
|
118
128
|
borderColor: `${color}40`
|
|
119
129
|
}],
|
|
120
130
|
onPress: onPress,
|
|
131
|
+
testID: testID,
|
|
132
|
+
accessibilityLabel: label,
|
|
133
|
+
accessibilityRole: "button",
|
|
121
134
|
children: [/*#__PURE__*/_jsx(Plus, {
|
|
122
135
|
size: 14,
|
|
123
136
|
color: color
|
|
@@ -146,6 +159,9 @@ export function FilterList({
|
|
|
146
159
|
style: styles.filterItemRow,
|
|
147
160
|
onPress: () => onRemoveFilter?.(filter),
|
|
148
161
|
activeOpacity: 0.8,
|
|
162
|
+
testID: `buoy-filter-active-${filter}`,
|
|
163
|
+
accessibilityLabel: `Remove filter ${filter}`,
|
|
164
|
+
accessibilityRole: "button",
|
|
149
165
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
150
166
|
style: [styles.filterItemText, {
|
|
151
167
|
color
|
|
@@ -86,7 +86,8 @@ export function Content({
|
|
|
86
86
|
subtitle,
|
|
87
87
|
children,
|
|
88
88
|
centered,
|
|
89
|
-
noMargin
|
|
89
|
+
noMargin,
|
|
90
|
+
testID
|
|
90
91
|
}) {
|
|
91
92
|
if (children) {
|
|
92
93
|
return /*#__PURE__*/_jsx(View, {
|
|
@@ -99,10 +100,12 @@ export function Content({
|
|
|
99
100
|
children: [title && /*#__PURE__*/_jsx(Text, {
|
|
100
101
|
style: [styles.headerTitle, centered && styles.headerTitleCentered],
|
|
101
102
|
numberOfLines: 1,
|
|
103
|
+
testID: testID,
|
|
102
104
|
children: title
|
|
103
105
|
}), subtitle && /*#__PURE__*/_jsx(Text, {
|
|
104
106
|
style: [styles.headerSubtitle, centered && styles.headerSubtitleCentered],
|
|
105
107
|
numberOfLines: 1,
|
|
108
|
+
testID: testID ? `${testID}-subtitle` : undefined,
|
|
106
109
|
children: subtitle
|
|
107
110
|
})]
|
|
108
111
|
});
|
|
@@ -130,7 +133,8 @@ export function HeaderSearch({
|
|
|
130
133
|
onChangeText,
|
|
131
134
|
onCancel,
|
|
132
135
|
placeholder = "Search...",
|
|
133
|
-
autoFocus = true
|
|
136
|
+
autoFocus = true,
|
|
137
|
+
testID
|
|
134
138
|
}) {
|
|
135
139
|
const inputRef = useRef(null);
|
|
136
140
|
useEffect(() => {
|
|
@@ -149,10 +153,15 @@ export function HeaderSearch({
|
|
|
149
153
|
value: value,
|
|
150
154
|
onChangeText: onChangeText,
|
|
151
155
|
autoCorrect: false,
|
|
152
|
-
autoCapitalize: "none"
|
|
156
|
+
autoCapitalize: "none",
|
|
157
|
+
testID: testID,
|
|
158
|
+
accessibilityLabel: placeholder
|
|
153
159
|
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
154
160
|
onPress: onCancel,
|
|
155
161
|
style: styles.searchCancelButton,
|
|
162
|
+
accessibilityRole: "button",
|
|
163
|
+
accessibilityLabel: "Clear search",
|
|
164
|
+
testID: testID ? `${testID}-clear` : undefined,
|
|
156
165
|
children: /*#__PURE__*/_jsx(X, {
|
|
157
166
|
size: 12,
|
|
158
167
|
color: night.color.textSecondary
|
|
@@ -28,6 +28,7 @@ export function PowerToggleButton({
|
|
|
28
28
|
onToggle,
|
|
29
29
|
size = "medium",
|
|
30
30
|
accessibilityLabel,
|
|
31
|
+
testID,
|
|
31
32
|
disabled = false
|
|
32
33
|
}) {
|
|
33
34
|
const buttonSize = size === "small" ? 28 : 32;
|
|
@@ -36,6 +37,7 @@ export function PowerToggleButton({
|
|
|
36
37
|
onPress: onToggle,
|
|
37
38
|
disabled: disabled,
|
|
38
39
|
accessibilityLabel: accessibilityLabel,
|
|
40
|
+
testID: testID,
|
|
39
41
|
accessibilityRole: "button",
|
|
40
42
|
style: [styles.button, {
|
|
41
43
|
width: buttonSize,
|
|
@@ -18,6 +18,7 @@ export function SearchBar({
|
|
|
18
18
|
containerStyle,
|
|
19
19
|
autoFocus = false,
|
|
20
20
|
onSubmitEditing,
|
|
21
|
+
testID,
|
|
21
22
|
returnKeyType
|
|
22
23
|
}) {
|
|
23
24
|
const [isFocused, setIsFocused] = useState(false);
|
|
@@ -75,10 +76,14 @@ export function SearchBar({
|
|
|
75
76
|
autoCapitalize: "none",
|
|
76
77
|
autoCorrect: false,
|
|
77
78
|
onSubmitEditing: onSubmitEditing,
|
|
78
|
-
returnKeyType: returnKeyType
|
|
79
|
+
returnKeyType: returnKeyType,
|
|
80
|
+
testID: testID
|
|
79
81
|
}), value.length > 0 && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
80
82
|
onPress: handleClear,
|
|
81
83
|
style: styles.clearButton,
|
|
84
|
+
testID: testID ? `${testID}-clear` : undefined,
|
|
85
|
+
accessibilityLabel: "Clear search",
|
|
86
|
+
accessibilityRole: "button",
|
|
82
87
|
children: /*#__PURE__*/_jsx(X, {
|
|
83
88
|
size: 14,
|
|
84
89
|
color: gameUIColors.secondary
|
|
@@ -50,7 +50,8 @@ function Title({
|
|
|
50
50
|
function Badge({
|
|
51
51
|
count,
|
|
52
52
|
color = buoyColors.primary,
|
|
53
|
-
children
|
|
53
|
+
children,
|
|
54
|
+
testID
|
|
54
55
|
}) {
|
|
55
56
|
const backgroundColor = `${color}15`;
|
|
56
57
|
const borderColor = `${color}33`;
|
|
@@ -60,6 +61,7 @@ function Badge({
|
|
|
60
61
|
borderColor
|
|
61
62
|
}],
|
|
62
63
|
children: count !== undefined ? /*#__PURE__*/_jsx(Text, {
|
|
64
|
+
testID: testID,
|
|
63
65
|
style: [styles.badgeText, {
|
|
64
66
|
color
|
|
65
67
|
}],
|
|
@@ -15,24 +15,29 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
export function TabSelector({
|
|
16
16
|
tabs,
|
|
17
17
|
activeTab,
|
|
18
|
-
onTabChange
|
|
18
|
+
onTabChange,
|
|
19
|
+
testIDPrefix
|
|
19
20
|
}) {
|
|
20
21
|
return /*#__PURE__*/_jsx(View, {
|
|
21
22
|
style: styles.container,
|
|
22
23
|
children: tabs.map(tab => {
|
|
23
24
|
const active = activeTab === tab.key;
|
|
25
|
+
const disabled = !!tab.disabled && !active;
|
|
24
26
|
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
25
27
|
"sentry-label": "ignore user interaction",
|
|
28
|
+
testID: testIDPrefix ? `${testIDPrefix}-${tab.key}` : undefined,
|
|
26
29
|
accessibilityRole: "tab",
|
|
27
30
|
accessibilityState: {
|
|
28
|
-
selected: active
|
|
31
|
+
selected: active,
|
|
32
|
+
disabled
|
|
29
33
|
},
|
|
30
34
|
accessibilityLabel: tab.label,
|
|
31
35
|
accessibilityHint: `View ${tab.label.toLowerCase()}`,
|
|
36
|
+
disabled: disabled,
|
|
32
37
|
onPress: () => onTabChange(tab.key),
|
|
33
|
-
style: [styles.tabButton, active && styles.tabButtonActive],
|
|
38
|
+
style: [styles.tabButton, active && styles.tabButtonActive, disabled && styles.tabButtonDisabled],
|
|
34
39
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
35
|
-
style: [styles.tabButtonText, active && styles.tabButtonTextActive],
|
|
40
|
+
style: [styles.tabButtonText, active && styles.tabButtonTextActive, disabled && styles.tabButtonTextDisabled],
|
|
36
41
|
children: tab.label
|
|
37
42
|
}), active ? /*#__PURE__*/_jsx(View, {
|
|
38
43
|
style: styles.underline
|
|
@@ -69,6 +74,12 @@ const styles = StyleSheet.create({
|
|
|
69
74
|
fontWeight: "600",
|
|
70
75
|
color: night.color.text
|
|
71
76
|
},
|
|
77
|
+
tabButtonDisabled: {
|
|
78
|
+
opacity: 0.45
|
|
79
|
+
},
|
|
80
|
+
tabButtonTextDisabled: {
|
|
81
|
+
color: night.color.textTertiary
|
|
82
|
+
},
|
|
72
83
|
underline: {
|
|
73
84
|
position: "absolute",
|
|
74
85
|
bottom: 1.5,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useState, useRef, useCallback, useEffect } from "react";
|
|
4
|
-
import { View, TouchableOpacity,
|
|
4
|
+
import { View, TouchableOpacity, StyleSheet, Animated, Platform } from "react-native";
|
|
5
5
|
import { X, Minus, DockBottom, FloatWindow } from "../../icons/index.js";
|
|
6
6
|
import { buoyColors } from "../gameUI/constants/gameUIColors.js";
|
|
7
7
|
import { night } from "../night/nightTheme.js";
|
|
@@ -108,6 +108,7 @@ export function WindowControls({
|
|
|
108
108
|
style: [styles.dot, styles.closeDot],
|
|
109
109
|
activeOpacity: 0.8,
|
|
110
110
|
accessibilityLabel: "Close modal",
|
|
111
|
+
testID: "tool-window-close",
|
|
111
112
|
accessibilityRole: "button",
|
|
112
113
|
children: /*#__PURE__*/_jsx(X, {
|
|
113
114
|
size: ICON_SIZE,
|
|
@@ -136,10 +137,8 @@ function ExpandableWindowControls({
|
|
|
136
137
|
}) {
|
|
137
138
|
const isNight = variant === "night";
|
|
138
139
|
const [expanded, setExpanded] = useState(false);
|
|
139
|
-
const [triggerLayout, setTriggerLayout] = useState(null);
|
|
140
140
|
const expandAnim = useRef(new Animated.Value(0)).current;
|
|
141
141
|
const dismissTimeout = useRef(null);
|
|
142
|
-
const triggerRef = useRef(null);
|
|
143
142
|
const ToggleModeIcon = mode === "floating" ? DockBottom : FloatWindow;
|
|
144
143
|
const toggleModeLabel = mode === "floating" ? "Dock to bottom sheet" : "Make floating window";
|
|
145
144
|
const clearDismissTimer = useCallback(() => {
|
|
@@ -148,38 +147,34 @@ function ExpandableWindowControls({
|
|
|
148
147
|
dismissTimeout.current = null;
|
|
149
148
|
}
|
|
150
149
|
}, []);
|
|
150
|
+
|
|
151
|
+
// JS driver on purpose: native-driven animations on this node silently
|
|
152
|
+
// never run inside JsModal's subtree (the panel sat at opacity 0 forever,
|
|
153
|
+
// making the expanded controls unreachable). The popover is tiny and the
|
|
154
|
+
// animation is 150ms — the JS driver is fine.
|
|
151
155
|
const collapse = useCallback(() => {
|
|
152
156
|
clearDismissTimer();
|
|
153
157
|
Animated.spring(expandAnim, {
|
|
154
158
|
toValue: 0,
|
|
155
159
|
tension: 200,
|
|
156
160
|
friction: 20,
|
|
157
|
-
useNativeDriver:
|
|
161
|
+
useNativeDriver: false
|
|
158
162
|
}).start(() => {
|
|
159
163
|
setExpanded(false);
|
|
160
164
|
});
|
|
161
165
|
}, [expandAnim, clearDismissTimer]);
|
|
162
166
|
const expand = useCallback(() => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
});
|
|
171
|
-
setExpanded(true);
|
|
172
|
-
Animated.spring(expandAnim, {
|
|
173
|
-
toValue: 1,
|
|
174
|
-
tension: 180,
|
|
175
|
-
friction: 18,
|
|
176
|
-
useNativeDriver: true
|
|
177
|
-
}).start();
|
|
167
|
+
setExpanded(true);
|
|
168
|
+
Animated.spring(expandAnim, {
|
|
169
|
+
toValue: 1,
|
|
170
|
+
tension: 180,
|
|
171
|
+
friction: 18,
|
|
172
|
+
useNativeDriver: false
|
|
173
|
+
}).start();
|
|
178
174
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
});
|
|
175
|
+
// Auto-dismiss
|
|
176
|
+
clearDismissTimer();
|
|
177
|
+
dismissTimeout.current = setTimeout(collapse, AUTO_DISMISS_MS);
|
|
183
178
|
}, [expandAnim, collapse, clearDismissTimer]);
|
|
184
179
|
useEffect(() => {
|
|
185
180
|
return clearDismissTimer;
|
|
@@ -198,17 +193,12 @@ function ExpandableWindowControls({
|
|
|
198
193
|
inputRange: [0, 0.5, 1],
|
|
199
194
|
outputRange: [0, 0.8, 1]
|
|
200
195
|
});
|
|
201
|
-
|
|
202
|
-
// Count visible buttons for layout calculation
|
|
203
|
-
const buttonCount = 1 + (onMinimize ? 1 : 0) + (onToggleMode ? 1 : 0);
|
|
204
|
-
const expandedWidth = buttonCount * EXPANDED_BUTTON_SIZE + (buttonCount - 1) * EXPANDED_BUTTON_SPACING + EXPANDED_PADDING * 2;
|
|
205
|
-
const expandedHeight = EXPANDED_BUTTON_SIZE + EXPANDED_PADDING * 2;
|
|
206
196
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
207
197
|
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
208
|
-
ref: triggerRef,
|
|
209
198
|
onPress: expand,
|
|
210
199
|
activeOpacity: 0.7,
|
|
211
200
|
accessibilityLabel: "Open window controls",
|
|
201
|
+
testID: "tool-window-controls",
|
|
212
202
|
accessibilityRole: "button",
|
|
213
203
|
style: styles.trigger,
|
|
214
204
|
hitSlop: {
|
|
@@ -242,71 +232,52 @@ function ExpandableWindowControls({
|
|
|
242
232
|
})
|
|
243
233
|
})]
|
|
244
234
|
})
|
|
245
|
-
}), expanded && /*#__PURE__*/_jsx(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
0) : 0,
|
|
266
|
-
// Position using left instead, anchored to trigger's right edge
|
|
267
|
-
left: triggerLayout ? triggerLayout.x + triggerLayout.width - expandedWidth : undefined
|
|
268
|
-
}],
|
|
269
|
-
children: /*#__PURE__*/_jsx(TouchableWithoutFeedback, {
|
|
270
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
271
|
-
style: [styles.expandedContainer, isNight && styles.nightExpandedContainer],
|
|
272
|
-
children: [onMinimize && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
273
|
-
onPress: () => handleAction(onMinimize),
|
|
274
|
-
style: [styles.expandedButton, isNight ? styles.nightMinimizeButton : styles.minimizeButtonExpanded],
|
|
275
|
-
activeOpacity: 0.7,
|
|
276
|
-
accessibilityLabel: "Minimize modal",
|
|
277
|
-
accessibilityRole: "button",
|
|
278
|
-
children: /*#__PURE__*/_jsx(Minus, {
|
|
279
|
-
size: EXPANDED_ICON_SIZE,
|
|
280
|
-
color: isNight ? night.color.warning : "#7A5A00",
|
|
281
|
-
strokeWidth: 2
|
|
282
|
-
})
|
|
283
|
-
}), onToggleMode && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
284
|
-
onPress: () => handleAction(onToggleMode),
|
|
285
|
-
style: [styles.expandedButton, isNight ? styles.nightToggleButton : styles.expandButtonExpanded],
|
|
286
|
-
activeOpacity: 0.7,
|
|
287
|
-
accessibilityLabel: toggleModeLabel,
|
|
288
|
-
accessibilityRole: "button",
|
|
289
|
-
children: /*#__PURE__*/_jsx(ToggleModeIcon, {
|
|
290
|
-
size: EXPANDED_ICON_SIZE,
|
|
291
|
-
color: isNight ? night.color.accent : "#004A1A",
|
|
292
|
-
strokeWidth: 2
|
|
293
|
-
})
|
|
294
|
-
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
295
|
-
onPress: () => handleAction(onClose),
|
|
296
|
-
style: [styles.expandedButton, isNight ? styles.nightCloseButton : styles.closeButtonExpanded],
|
|
297
|
-
activeOpacity: 0.7,
|
|
298
|
-
accessibilityLabel: "Close modal",
|
|
299
|
-
accessibilityRole: "button",
|
|
300
|
-
children: /*#__PURE__*/_jsx(X, {
|
|
301
|
-
size: EXPANDED_ICON_SIZE,
|
|
302
|
-
color: isNight ? night.color.danger : "#4A0000",
|
|
303
|
-
strokeWidth: 2
|
|
304
|
-
})
|
|
305
|
-
})]
|
|
306
|
-
})
|
|
307
|
-
})
|
|
235
|
+
}), expanded && /*#__PURE__*/_jsx(Animated.View, {
|
|
236
|
+
style: [styles.expandedPanelInline, {
|
|
237
|
+
transform: [{
|
|
238
|
+
scale
|
|
239
|
+
}],
|
|
240
|
+
opacity
|
|
241
|
+
}],
|
|
242
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
243
|
+
style: [styles.expandedContainer, isNight && styles.nightExpandedContainer],
|
|
244
|
+
children: [onMinimize && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
245
|
+
onPress: () => handleAction(onMinimize),
|
|
246
|
+
style: [styles.expandedButton, isNight ? styles.nightMinimizeButton : styles.minimizeButtonExpanded],
|
|
247
|
+
activeOpacity: 0.7,
|
|
248
|
+
accessibilityLabel: "Minimize modal",
|
|
249
|
+
testID: "tool-window-minimize",
|
|
250
|
+
accessibilityRole: "button",
|
|
251
|
+
children: /*#__PURE__*/_jsx(Minus, {
|
|
252
|
+
size: EXPANDED_ICON_SIZE,
|
|
253
|
+
color: isNight ? night.color.warning : "#7A5A00",
|
|
254
|
+
strokeWidth: 2
|
|
308
255
|
})
|
|
309
|
-
})
|
|
256
|
+
}), onToggleMode && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
257
|
+
onPress: () => handleAction(onToggleMode),
|
|
258
|
+
style: [styles.expandedButton, isNight ? styles.nightToggleButton : styles.expandButtonExpanded],
|
|
259
|
+
activeOpacity: 0.7,
|
|
260
|
+
accessibilityLabel: toggleModeLabel,
|
|
261
|
+
testID: "tool-window-mode",
|
|
262
|
+
accessibilityRole: "button",
|
|
263
|
+
children: /*#__PURE__*/_jsx(ToggleModeIcon, {
|
|
264
|
+
size: EXPANDED_ICON_SIZE,
|
|
265
|
+
color: isNight ? night.color.accent : "#004A1A",
|
|
266
|
+
strokeWidth: 2
|
|
267
|
+
})
|
|
268
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
269
|
+
onPress: () => handleAction(onClose),
|
|
270
|
+
style: [styles.expandedButton, isNight ? styles.nightCloseButton : styles.closeButtonExpanded],
|
|
271
|
+
activeOpacity: 0.7,
|
|
272
|
+
accessibilityLabel: "Close modal",
|
|
273
|
+
testID: "tool-window-close",
|
|
274
|
+
accessibilityRole: "button",
|
|
275
|
+
children: /*#__PURE__*/_jsx(X, {
|
|
276
|
+
size: EXPANDED_ICON_SIZE,
|
|
277
|
+
color: isNight ? night.color.danger : "#4A0000",
|
|
278
|
+
strokeWidth: 2
|
|
279
|
+
})
|
|
280
|
+
})]
|
|
310
281
|
})
|
|
311
282
|
})]
|
|
312
283
|
});
|
|
@@ -341,11 +312,12 @@ const styles = StyleSheet.create({
|
|
|
341
312
|
expandDot: {
|
|
342
313
|
backgroundColor: COLORS.toggleMode
|
|
343
314
|
},
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
expandedPanel: {
|
|
315
|
+
// Anchored to the windowControlsContainer (absolute top-right of the
|
|
316
|
+
// modal chrome); grows leftward/downward over the header.
|
|
317
|
+
expandedPanelInline: {
|
|
348
318
|
position: "absolute",
|
|
319
|
+
top: -EXPANDED_PADDING,
|
|
320
|
+
right: -EXPANDED_PADDING,
|
|
349
321
|
zIndex: 9999
|
|
350
322
|
},
|
|
351
323
|
expandedContainer: {
|
|
@@ -202,13 +202,17 @@ export const buoyColors = {
|
|
|
202
202
|
// Red
|
|
203
203
|
info: "#00B8E6" // Cyan for info/devices
|
|
204
204
|
};
|
|
205
|
-
|
|
205
|
+
/**
|
|
206
|
+
* LEGACY copy of the dial palette — the source of truth is `dialColors` in
|
|
207
|
+
* @buoy-gg/floating-tools-core (`src/dial.ts`); keep the two in sync.
|
|
208
|
+
* Values mirror the night theme (see `ui/night/nightTheme.ts`).
|
|
209
|
+
*/
|
|
206
210
|
export const dialColors = {
|
|
207
|
-
dialBackground:
|
|
208
|
-
dialGradient1:
|
|
209
|
-
dialGradient2:
|
|
210
|
-
dialGradient3:
|
|
211
|
-
dialBorder:
|
|
212
|
-
dialShadow:
|
|
213
|
-
dialGridLine:
|
|
211
|
+
dialBackground: "#050505",
|
|
212
|
+
dialGradient1: "rgba(255, 255, 255, 0.05)",
|
|
213
|
+
dialGradient2: "rgba(255, 255, 255, 0.03)",
|
|
214
|
+
dialGradient3: "rgba(255, 255, 255, 0.06)",
|
|
215
|
+
dialBorder: "rgba(255, 255, 255, 0.12)",
|
|
216
|
+
dialShadow: "#000000",
|
|
217
|
+
dialGridLine: "rgba(255, 255, 255, 0.08)"
|
|
214
218
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsModal.d.ts","sourceRoot":"","sources":["../../../src/JsModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,SAAS,EAEV,MAAM,OAAO,CAAC;AACf,OAAO,EAML,QAAQ,EAGR,SAAS,EAEV,MAAM,cAAc,CAAC;AA+GtB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/C,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChC;;;+BAG2B;IAC3B,WAAW,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAErD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gIAAgI;IAChI,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"JsModal.d.ts","sourceRoot":"","sources":["../../../src/JsModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAUL,SAAS,EAEV,MAAM,OAAO,CAAC;AACf,OAAO,EAML,QAAQ,EAGR,SAAS,EAEV,MAAM,cAAc,CAAC;AA+GtB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/C,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IAChC;;;+BAG2B;IAC3B,WAAW,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uBAAuB,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAErD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gIAAgI;IAChI,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAuxDD,eAAO,MAAM,OAAO,oDAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTreeActionDock.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/DataTreeActionDock.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAIL,KAAK,iBAAiB,EAGvB,MAAM,eAAe,CAAC;AAqCvB,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,IAAI,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,iCAAiC;IACjC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,sEAAsE;IACtE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"DataTreeActionDock.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/DataTreeActionDock.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAIL,KAAK,iBAAiB,EAGvB,MAAM,eAAe,CAAC;AAqCvB,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,IAAI,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,iCAAiC;IACjC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,sEAAsE;IACtE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAqCD,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,SAAS,EACT,MAAM,EACN,YAAY,EACZ,WAAW,EACX,kBAAyB,GAC1B,EAAE,uBAAuB,+BAwCzB"}
|
|
@@ -22,6 +22,8 @@ interface DataViewerProps {
|
|
|
22
22
|
inlineEditPath?: string[] | null;
|
|
23
23
|
renderInlineEditor?: (selection: DataTreeSelection) => ReactElement | null;
|
|
24
24
|
selectPath?: string[] | null;
|
|
25
|
+
/** Root of each tree row's testID — see `VirtualizedDataExplorer`. */
|
|
26
|
+
testIDPrefix?: string;
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
29
|
* DataViewer component that combines VirtualizedDataExplorer with TypeLegend
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataViewer.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/DataViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,YAAY,GAAG,IAAI,CAAC;IAC3E,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"DataViewer.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/DataViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,YAAY,GAAG,IAAI,CAAC;IAC3E,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA8J1C,CAAC"}
|
|
@@ -37,6 +37,15 @@ interface VirtualizedDataExplorerProps {
|
|
|
37
37
|
* taps, and only re-syncs when this path CHANGES.
|
|
38
38
|
*/
|
|
39
39
|
selectPath?: string[] | null;
|
|
40
|
+
/**
|
|
41
|
+
* Root of each row's testID: `${testIDPrefix}-${item.id}` (item.id is the
|
|
42
|
+
* dotted path from the root).
|
|
43
|
+
*
|
|
44
|
+
* Configurable because two trees can be on screen at once — the storage
|
|
45
|
+
* editor overlays the expanded card that opened it, and both render the same
|
|
46
|
+
* value — which would otherwise give every row a twin.
|
|
47
|
+
*/
|
|
48
|
+
testIDPrefix?: string;
|
|
40
49
|
}
|
|
41
50
|
export declare const VirtualizedDataExplorer: FC<VirtualizedDataExplorerProps>;
|
|
42
51
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedDataExplorer.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/VirtualizedDataExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAOL,EAAE,EACF,YAAY,EACb,MAAM,OAAO,CAAC;AAcf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"VirtualizedDataExplorer.d.ts","sourceRoot":"","sources":["../../../../src/dataViewer/VirtualizedDataExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAOL,EAAE,EACF,YAAY,EACb,MAAM,OAAO,CAAC;AAcf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAmpC7D,UAAU,4BAA4B;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7D,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,YAAY,GAAG,IAAI,CAAC;IAC3E;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,4BAA4B,CAuUpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureGate.d.ts","sourceRoot":"","sources":["../../../../src/license/FeatureGate.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAC;AAQhE,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAGjD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,sBAUrD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,GAAI,8CAK7B,oBAAoB,sBAiBtB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,qDAK3B;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,sBA6FA,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GAAI,mEAMzB,gBAAgB,sBAiClB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,2DAA2D;IAC3D,UAAU,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAeA;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,GAAI,yCAI9B,qBAAqB,sBA+DvB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,eAAO,MAAM,YAAY,GAAI,qEAO1B,iBAAiB,
|
|
1
|
+
{"version":3,"file":"FeatureGate.d.ts","sourceRoot":"","sources":["../../../../src/license/FeatureGate.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAC;AAQhE,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAGjD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,sBAUrD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,GAAI,8CAK7B,oBAAoB,sBAiBtB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,qDAK3B;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,sBA6FA,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GAAI,mEAMzB,gBAAgB,sBAiClB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,2DAA2D;IAC3D,UAAU,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAeA;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,GAAI,yCAI9B,qBAAqB,sBA+DvB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,eAAO,MAAM,YAAY,GAAI,qEAO1B,iBAAiB,6BAiJnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/ui/backgrounds/registry.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;CACzD;AAED,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/ui/backgrounds/registry.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;CACzD;AAED,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EA2DhD,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,YAAoB,CAAC;AAEtD,wBAAgB,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAGpD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAGxD;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,gBAAgB,CAE5D"}
|
|
@@ -2,12 +2,28 @@
|
|
|
2
2
|
* MeteorShower — shooting stars that slam into the walls.
|
|
3
3
|
*
|
|
4
4
|
* Each meteor streaks in from off-screen, hits an EDGE of the surface, and
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* blows out like a firework: a flash, then a fan of streak RAYS that shoot
|
|
6
|
+
* back into the room — each ray grows out of the impact point while its tail
|
|
7
|
+
* chases the head, so it reads as a burning trail rather than a ring — with
|
|
8
|
+
* ember dots at the tips that decelerate, droop under gravity and gutter out.
|
|
9
|
+
* The whole life cycle — parked invisible, streak, impact, decay — is
|
|
10
|
+
* keyframed into interpolate stops on ONE plain native loop per meteor;
|
|
11
|
+
* `Animated.sequence([timing, loop])` silently fails to drive natively, so
|
|
12
|
+
* nothing here sequences.
|
|
13
|
+
*
|
|
14
|
+
* Each meteor also rolls WHAT IT'S MADE OF once per mount — a weighted draw
|
|
15
|
+
* over the real emission-line palette (sodium orange-yellow, iron yellow,
|
|
16
|
+
* magnesium blue-green, calcium violet, shocked atmospheric N₂/O₂ red,
|
|
17
|
+
* ionized-air blue-white) — and that mineral tints streak, trail, flash,
|
|
18
|
+
* rays and embers as one. See `MINERALS`.
|
|
19
|
+
*
|
|
20
|
+
* The ray trick, since there is no `transformOrigin`: a bar of full length
|
|
21
|
+
* `dist` is CENTERED on the impact point, rotated to its heading, then driven
|
|
22
|
+
* with `[{rotate}, {translateX}, {scaleX}]`. Rotate is outermost, so the
|
|
23
|
+
* translate runs along the ray's own axis; scaleX squashes about the bar's
|
|
24
|
+
* center, and translating by the midpoint of (head, tail) while scaling by
|
|
25
|
+
* (head − tail) puts the visible segment exactly between the two — a line
|
|
26
|
+
* growing out of the burst with both endpoints scripted.
|
|
11
27
|
*
|
|
12
28
|
* This used to be a standalone "Meteors" preset with its own 40-star sky;
|
|
13
29
|
* that scene was folded into Deep Field (which supplies the far better sky),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meteors.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/backgrounds/variants/meteors.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"meteors.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/backgrounds/variants/meteors.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAOH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AA+YvD;;;GAGG;AACH,eAAO,MAAM,YAAY,8DAQvB,CAAC"}
|