@buoy-gg/shared-ui 7.0.26 → 7.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/lib/commonjs/JsModal.js +156 -20
  2. package/lib/commonjs/JsModal.web.js +85 -39
  3. package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +14 -4
  4. package/lib/commonjs/dataViewer/diffThemes.js +20 -18
  5. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +8 -8
  6. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  7. package/lib/commonjs/icons/lucide-icons.js +74 -15
  8. package/lib/commonjs/index.js +86 -0
  9. package/lib/commonjs/ui/backgrounds/BackgroundSwitcher.js +248 -74
  10. package/lib/commonjs/ui/backgrounds/README.md +102 -20
  11. package/lib/commonjs/ui/backgrounds/backgroundStore.js +20 -6
  12. package/lib/commonjs/ui/backgrounds/index.js +91 -1
  13. package/lib/commonjs/ui/backgrounds/primitives.js +50 -14
  14. package/lib/commonjs/ui/backgrounds/registry.js +41 -64
  15. package/lib/commonjs/ui/backgrounds/rng.js +21 -0
  16. package/lib/commonjs/ui/backgrounds/skyClock.js +45 -0
  17. package/lib/commonjs/ui/backgrounds/variants/daylight.js +453 -0
  18. package/lib/commonjs/ui/backgrounds/variants/deepField.js +60 -30
  19. package/lib/commonjs/ui/backgrounds/variants/hyperspace.js +218 -0
  20. package/lib/commonjs/ui/backgrounds/variants/liveSky.js +898 -0
  21. package/lib/commonjs/ui/backgrounds/variants/meteors.js +257 -0
  22. package/lib/commonjs/ui/backgrounds/variants/moonlight.js +472 -0
  23. package/lib/commonjs/ui/backgrounds/variants/underwater.js +757 -0
  24. package/lib/commonjs/ui/components/Badge.js +11 -10
  25. package/lib/commonjs/ui/components/CompactRow.js +35 -18
  26. package/lib/commonjs/ui/components/CopyButton.js +6 -4
  27. package/lib/commonjs/ui/components/DevToolsCard.js +16 -9
  28. package/lib/commonjs/ui/components/DynamicFilterView.js +43 -41
  29. package/lib/commonjs/ui/components/EventStepperFooter.js +38 -10
  30. package/lib/commonjs/ui/components/FilterComponents.js +11 -11
  31. package/lib/commonjs/ui/components/ModalHeader.js +28 -15
  32. package/lib/commonjs/ui/components/SectionHeader.js +3 -1
  33. package/lib/commonjs/ui/components/StorageTypeBadge.js +3 -2
  34. package/lib/commonjs/ui/components/TabSelector.js +56 -38
  35. package/lib/commonjs/ui/components/ValueTypeBadge.js +7 -6
  36. package/lib/commonjs/ui/components/WindowControls.js +37 -10
  37. package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +8 -0
  38. package/lib/commonjs/ui/night/nightTheme.js +120 -0
  39. package/lib/commonjs/ui/night/primitives.js +498 -0
  40. package/lib/module/JsModal.js +156 -20
  41. package/lib/module/JsModal.web.js +83 -39
  42. package/lib/module/dataViewer/VirtualizedDataExplorer.js +14 -4
  43. package/lib/module/dataViewer/diffThemes.js +20 -18
  44. package/lib/module/dataViewer/tree/TreeDiffViewer.js +9 -9
  45. package/lib/module/hooks/safe-area-impl.js +1 -1
  46. package/lib/module/icons/lucide-icons.js +74 -15
  47. package/lib/module/index.js +4 -0
  48. package/lib/module/ui/backgrounds/BackgroundSwitcher.js +250 -76
  49. package/lib/module/ui/backgrounds/README.md +102 -20
  50. package/lib/module/ui/backgrounds/backgroundStore.js +19 -5
  51. package/lib/module/ui/backgrounds/index.js +11 -2
  52. package/lib/module/ui/backgrounds/primitives.js +53 -16
  53. package/lib/module/ui/backgrounds/registry.js +41 -64
  54. package/lib/module/ui/backgrounds/rng.js +20 -0
  55. package/lib/module/ui/backgrounds/skyClock.js +39 -0
  56. package/lib/module/ui/backgrounds/variants/daylight.js +449 -0
  57. package/lib/module/ui/backgrounds/variants/deepField.js +62 -31
  58. package/lib/module/ui/backgrounds/variants/hyperspace.js +214 -0
  59. package/lib/module/ui/backgrounds/variants/liveSky.js +893 -0
  60. package/lib/module/ui/backgrounds/variants/meteors.js +253 -0
  61. package/lib/module/ui/backgrounds/variants/moonlight.js +468 -0
  62. package/lib/module/ui/backgrounds/variants/underwater.js +753 -0
  63. package/lib/module/ui/components/Badge.js +11 -10
  64. package/lib/module/ui/components/CompactRow.js +35 -18
  65. package/lib/module/ui/components/CopyButton.js +6 -4
  66. package/lib/module/ui/components/DevToolsCard.js +16 -9
  67. package/lib/module/ui/components/DynamicFilterView.js +43 -41
  68. package/lib/module/ui/components/EventStepperFooter.js +38 -10
  69. package/lib/module/ui/components/FilterComponents.js +11 -11
  70. package/lib/module/ui/components/ModalHeader.js +28 -15
  71. package/lib/module/ui/components/SectionHeader.js +3 -1
  72. package/lib/module/ui/components/StorageTypeBadge.js +3 -2
  73. package/lib/module/ui/components/TabSelector.js +57 -39
  74. package/lib/module/ui/components/ValueTypeBadge.js +7 -6
  75. package/lib/module/ui/components/WindowControls.js +37 -10
  76. package/lib/module/ui/gameUI/constants/gameUIColors.js +8 -0
  77. package/lib/module/ui/night/nightTheme.js +116 -0
  78. package/lib/module/ui/night/primitives.js +485 -0
  79. package/lib/typescript/commonjs/JsModal.d.ts +18 -0
  80. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/JsModal.web.d.ts +13 -0
  82. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts +3 -1
  85. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  88. package/lib/typescript/commonjs/icons/lucide-icons.d.ts +12 -1
  89. package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/index.d.ts +3 -0
  91. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/ui/backgrounds/BackgroundSwitcher.d.ts +26 -6
  93. package/lib/typescript/commonjs/ui/backgrounds/BackgroundSwitcher.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/ui/backgrounds/backgroundStore.d.ts +3 -0
  95. package/lib/typescript/commonjs/ui/backgrounds/backgroundStore.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts +7 -1
  97. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/ui/backgrounds/primitives.d.ts +18 -3
  99. package/lib/typescript/commonjs/ui/backgrounds/primitives.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts +8 -0
  101. package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/ui/backgrounds/rng.d.ts +6 -0
  103. package/lib/typescript/commonjs/ui/backgrounds/rng.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/ui/backgrounds/skyClock.d.ts +17 -0
  105. package/lib/typescript/commonjs/ui/backgrounds/skyClock.d.ts.map +1 -0
  106. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts +1 -1
  107. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/ui/backgrounds/variants/daylight.d.ts +30 -0
  109. package/lib/typescript/commonjs/ui/backgrounds/variants/daylight.d.ts.map +1 -0
  110. package/lib/typescript/commonjs/ui/backgrounds/variants/deepField.d.ts +19 -4
  111. package/lib/typescript/commonjs/ui/backgrounds/variants/deepField.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/ui/backgrounds/variants/hyperspace.d.ts +39 -0
  113. package/lib/typescript/commonjs/ui/backgrounds/variants/hyperspace.d.ts.map +1 -0
  114. package/lib/typescript/commonjs/ui/backgrounds/variants/liveSky.d.ts +41 -0
  115. package/lib/typescript/commonjs/ui/backgrounds/variants/liveSky.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts +26 -0
  117. package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/ui/backgrounds/variants/moonlight.d.ts +35 -0
  119. package/lib/typescript/commonjs/ui/backgrounds/variants/moonlight.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/ui/backgrounds/variants/underwater.d.ts +51 -0
  121. package/lib/typescript/commonjs/ui/backgrounds/variants/underwater.d.ts.map +1 -0
  122. package/lib/typescript/commonjs/ui/components/Badge.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts +3 -1
  124. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts +3 -1
  127. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts +2 -0
  130. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/ui/components/StorageTypeBadge.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/ui/components/TabSelector.d.ts +9 -0
  134. package/lib/typescript/commonjs/ui/components/TabSelector.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/ui/components/ValueTypeBadge.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts +4 -2
  137. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +8 -0
  139. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts +113 -0
  141. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/ui/night/primitives.d.ts +111 -0
  143. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -0
  144. package/lib/typescript/module/JsModal.d.ts +18 -0
  145. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  146. package/lib/typescript/module/JsModal.web.d.ts +13 -0
  147. package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
  148. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  149. package/lib/typescript/module/dataViewer/diffThemes.d.ts +3 -1
  150. package/lib/typescript/module/dataViewer/diffThemes.d.ts.map +1 -1
  151. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  152. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  153. package/lib/typescript/module/icons/lucide-icons.d.ts +12 -1
  154. package/lib/typescript/module/icons/lucide-icons.d.ts.map +1 -1
  155. package/lib/typescript/module/index.d.ts +3 -0
  156. package/lib/typescript/module/index.d.ts.map +1 -1
  157. package/lib/typescript/module/ui/backgrounds/BackgroundSwitcher.d.ts +26 -6
  158. package/lib/typescript/module/ui/backgrounds/BackgroundSwitcher.d.ts.map +1 -1
  159. package/lib/typescript/module/ui/backgrounds/backgroundStore.d.ts +3 -0
  160. package/lib/typescript/module/ui/backgrounds/backgroundStore.d.ts.map +1 -1
  161. package/lib/typescript/module/ui/backgrounds/index.d.ts +7 -1
  162. package/lib/typescript/module/ui/backgrounds/index.d.ts.map +1 -1
  163. package/lib/typescript/module/ui/backgrounds/primitives.d.ts +18 -3
  164. package/lib/typescript/module/ui/backgrounds/primitives.d.ts.map +1 -1
  165. package/lib/typescript/module/ui/backgrounds/registry.d.ts +8 -0
  166. package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +1 -1
  167. package/lib/typescript/module/ui/backgrounds/rng.d.ts +6 -0
  168. package/lib/typescript/module/ui/backgrounds/rng.d.ts.map +1 -1
  169. package/lib/typescript/module/ui/backgrounds/skyClock.d.ts +17 -0
  170. package/lib/typescript/module/ui/backgrounds/skyClock.d.ts.map +1 -0
  171. package/lib/typescript/module/ui/backgrounds/types.d.ts +1 -1
  172. package/lib/typescript/module/ui/backgrounds/types.d.ts.map +1 -1
  173. package/lib/typescript/module/ui/backgrounds/variants/daylight.d.ts +30 -0
  174. package/lib/typescript/module/ui/backgrounds/variants/daylight.d.ts.map +1 -0
  175. package/lib/typescript/module/ui/backgrounds/variants/deepField.d.ts +19 -4
  176. package/lib/typescript/module/ui/backgrounds/variants/deepField.d.ts.map +1 -1
  177. package/lib/typescript/module/ui/backgrounds/variants/hyperspace.d.ts +39 -0
  178. package/lib/typescript/module/ui/backgrounds/variants/hyperspace.d.ts.map +1 -0
  179. package/lib/typescript/module/ui/backgrounds/variants/liveSky.d.ts +41 -0
  180. package/lib/typescript/module/ui/backgrounds/variants/liveSky.d.ts.map +1 -0
  181. package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts +26 -0
  182. package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts.map +1 -0
  183. package/lib/typescript/module/ui/backgrounds/variants/moonlight.d.ts +35 -0
  184. package/lib/typescript/module/ui/backgrounds/variants/moonlight.d.ts.map +1 -0
  185. package/lib/typescript/module/ui/backgrounds/variants/underwater.d.ts +51 -0
  186. package/lib/typescript/module/ui/backgrounds/variants/underwater.d.ts.map +1 -0
  187. package/lib/typescript/module/ui/components/Badge.d.ts.map +1 -1
  188. package/lib/typescript/module/ui/components/CompactRow.d.ts +3 -1
  189. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  190. package/lib/typescript/module/ui/components/CopyButton.d.ts.map +1 -1
  191. package/lib/typescript/module/ui/components/DevToolsCard.d.ts +3 -1
  192. package/lib/typescript/module/ui/components/DevToolsCard.d.ts.map +1 -1
  193. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -1
  194. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts +2 -0
  195. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -1
  196. package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +1 -1
  197. package/lib/typescript/module/ui/components/StorageTypeBadge.d.ts.map +1 -1
  198. package/lib/typescript/module/ui/components/TabSelector.d.ts +9 -0
  199. package/lib/typescript/module/ui/components/TabSelector.d.ts.map +1 -1
  200. package/lib/typescript/module/ui/components/ValueTypeBadge.d.ts.map +1 -1
  201. package/lib/typescript/module/ui/components/WindowControls.d.ts +4 -2
  202. package/lib/typescript/module/ui/components/WindowControls.d.ts.map +1 -1
  203. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +8 -0
  204. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  205. package/lib/typescript/module/ui/night/nightTheme.d.ts +113 -0
  206. package/lib/typescript/module/ui/night/nightTheme.d.ts.map +1 -0
  207. package/lib/typescript/module/ui/night/primitives.d.ts +111 -0
  208. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -0
  209. package/package.json +4 -4
  210. package/lib/commonjs/ui/backgrounds/variants/lattice.js +0 -579
  211. package/lib/commonjs/ui/backgrounds/variants/starfield.js +0 -210
  212. package/lib/module/ui/backgrounds/variants/lattice.js +0 -575
  213. package/lib/module/ui/backgrounds/variants/starfield.js +0 -206
  214. package/lib/typescript/commonjs/ui/backgrounds/variants/lattice.d.ts +0 -33
  215. package/lib/typescript/commonjs/ui/backgrounds/variants/lattice.d.ts.map +0 -1
  216. package/lib/typescript/commonjs/ui/backgrounds/variants/starfield.d.ts +0 -12
  217. package/lib/typescript/commonjs/ui/backgrounds/variants/starfield.d.ts.map +0 -1
  218. package/lib/typescript/module/ui/backgrounds/variants/lattice.d.ts +0 -33
  219. package/lib/typescript/module/ui/backgrounds/variants/lattice.d.ts.map +0 -1
  220. package/lib/typescript/module/ui/backgrounds/variants/starfield.d.ts +0 -12
  221. package/lib/typescript/module/ui/backgrounds/variants/starfield.d.ts.map +0 -1
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MeteorShower = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _absoluteFill = require("../../../utils/absoluteFill.js");
10
+ var _primitives = require("../primitives.js");
11
+ var _rng = require("../rng.js");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * MeteorShower — shooting stars that slam into the walls.
15
+ *
16
+ * Each meteor streaks in from off-screen, hits an EDGE of the surface, and
17
+ * bursts: a flash, an expanding shockwave ring (half-clipped by the wall,
18
+ * which is what sells the impact), and a handful of sparks ricocheting back
19
+ * into the room. The whole life cycle — parked invisible, streak, impact,
20
+ * decay — is keyframed into interpolate stops on ONE plain native loop per
21
+ * meteor; `Animated.sequence([timing, loop])` silently fails to drive
22
+ * natively, so nothing here sequences.
23
+ *
24
+ * This used to be a standalone "Meteors" preset with its own 40-star sky;
25
+ * that scene was folded into Deep Field (which supplies the far better sky),
26
+ * so what remains is just the meteor LAYER — transparent, composed on top of
27
+ * a host scene by `deepField.tsx`.
28
+ *
29
+ * Same contract as ../README.md: keyframes on module-load constants, no
30
+ * `transformOrigin`.
31
+ */
32
+
33
+ /**
34
+ * `to` is ON a wall — that's the impact point. `sparkArc` is the hemisphere
35
+ * (in degrees) sparks scatter into, pointed back away from the wall the
36
+ * meteor just hit. Different periods keep the two impacts from syncing up.
37
+ */
38
+ const METEORS = [{
39
+ from: [0.08, -0.06],
40
+ to: [0.99, 0.36],
41
+ periodMs: 11000,
42
+ window: [0.05, 0.15],
43
+ sparkArc: [110, 250] // right wall → sparks fly left
44
+ }, {
45
+ from: [0.92, -0.08],
46
+ to: [0.01, 0.62],
47
+ periodMs: 15500,
48
+ window: [0.56, 0.66],
49
+ sparkArc: [-70, 70] // left wall → sparks fly right
50
+ }];
51
+ const SPARKS_PER_IMPACT = 6;
52
+ const SHOCKWAVE_DIA = 92;
53
+ const Meteor = /*#__PURE__*/(0, _react.memo)(function Meteor({
54
+ index,
55
+ width,
56
+ height,
57
+ animated
58
+ }) {
59
+ const m = METEORS[index];
60
+ const t = (0, _primitives.useLoop)(m.periodMs, animated);
61
+ const [a, b] = m.window;
62
+ const x0 = m.from[0] * width;
63
+ const y0 = m.from[1] * height;
64
+ const x1 = m.to[0] * width;
65
+ const y1 = m.to[1] * height;
66
+ const angleRad = Math.atan2(y1 - y0, x1 - x0);
67
+ const angle = angleRad * 180 / Math.PI;
68
+ // The 108x16 box rotates about its center (54, 8) and the bright head sits
69
+ // at local (96, 8), so the head leads the box's top-left corner by this
70
+ // much in world space. Translations must anchor the HEAD to the path, or it
71
+ // crosses the wall long before t=b and the burst lands off the flight line.
72
+ const headDx = 54 + 42 * Math.cos(angleRad);
73
+ const headDy = 8 + 42 * Math.sin(angleRad);
74
+
75
+ // --- The streak ---------------------------------------------------------
76
+ const translateX = t.interpolate({
77
+ inputRange: [0, a, b, 1],
78
+ outputRange: [x0 - headDx, x0 - headDx, x1 - headDx, x1 - headDx]
79
+ });
80
+ const translateY = t.interpolate({
81
+ inputRange: [0, a, b, 1],
82
+ outputRange: [y0 - headDy, y0 - headDy, y1 - headDy, y1 - headDy]
83
+ });
84
+ const streakOpacity = t.interpolate({
85
+ inputRange: [0, a, a + (b - a) * 0.15, b - (b - a) * 0.1, b, 1],
86
+ outputRange: [0, 0, 1, 1, 0, 0]
87
+ });
88
+ const trail = [];
89
+ for (let i = 0; i < 8; i++) {
90
+ const d = 2.4 - i * 0.24;
91
+ trail.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
92
+ style: {
93
+ position: "absolute",
94
+ left: 96 - (i + 1) * 11,
95
+ top: 8 - d / 2,
96
+ width: d,
97
+ height: d,
98
+ borderRadius: d / 2,
99
+ backgroundColor: (0, _rng.withAlpha)("#C9D9F0", 0.68 - i * 0.08)
100
+ }
101
+ }, i));
102
+ }
103
+
104
+ // --- The impact ---------------------------------------------------------
105
+ // Everything below reads the SAME loop value; the burst simply lives in the
106
+ // slice of the timeline right after the streak arrives at the wall.
107
+ const flashOpacity = t.interpolate({
108
+ inputRange: [0, b, Math.min(b + 0.012, 0.999), Math.min(b + 0.07, 0.9995), 1],
109
+ outputRange: [0, 0, 1, 0, 0]
110
+ });
111
+ const flashScale = t.interpolate({
112
+ inputRange: [0, b, Math.min(b + 0.07, 0.999), 1],
113
+ outputRange: [0.4, 0.4, 1.4, 1.4]
114
+ });
115
+ const waveOpacity = t.interpolate({
116
+ inputRange: [0, b, Math.min(b + 0.02, 0.999), Math.min(b + 0.11, 0.9995), 1],
117
+ outputRange: [0, 0, 0.85, 0, 0]
118
+ });
119
+ const waveScale = t.interpolate({
120
+ inputRange: [0, b, Math.min(b + 0.11, 0.999), 1],
121
+ outputRange: [0.12, 0.12, 1, 1]
122
+ });
123
+ const sparks = [];
124
+ for (let i = 0; i < SPARKS_PER_IMPACT; i++) {
125
+ // Deterministic fan across the arc, alternating reach so the burst reads
126
+ // as debris rather than a perfect star.
127
+ const frac = i / (SPARKS_PER_IMPACT - 1);
128
+ const deg = m.sparkArc[0] + (m.sparkArc[1] - m.sparkArc[0]) * frac;
129
+ const rad = deg * Math.PI / 180;
130
+ const dist = 30 + i % 3 * 14;
131
+ const sx = t.interpolate({
132
+ inputRange: [0, b, Math.min(b + 0.09, 0.999), 1],
133
+ outputRange: [0, 0, Math.cos(rad) * dist, Math.cos(rad) * dist]
134
+ });
135
+ const sy = t.interpolate({
136
+ inputRange: [0, b, Math.min(b + 0.09, 0.999), 1],
137
+ outputRange: [0, 0, Math.sin(rad) * dist, Math.sin(rad) * dist]
138
+ });
139
+ const so = t.interpolate({
140
+ inputRange: [0, b, Math.min(b + 0.02, 0.999), Math.min(b + 0.09, 0.9995), 1],
141
+ outputRange: [0, 0, 0.9, 0, 0]
142
+ });
143
+ const d = 2.2 - i % 3 * 0.4;
144
+ sparks.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
145
+ style: {
146
+ position: "absolute",
147
+ left: x1 - d / 2,
148
+ top: y1 - d / 2,
149
+ width: d,
150
+ height: d,
151
+ borderRadius: d / 2,
152
+ backgroundColor: (0, _rng.withAlpha)("#E5EEFC", 1),
153
+ opacity: so,
154
+ transform: [{
155
+ translateX: sx
156
+ }, {
157
+ translateY: sy
158
+ }]
159
+ },
160
+ pointerEvents: "none"
161
+ }, i));
162
+ }
163
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
164
+ style: _absoluteFill.absoluteFill,
165
+ pointerEvents: "none",
166
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
167
+ style: {
168
+ position: "absolute",
169
+ left: 0,
170
+ top: 0,
171
+ width: 108,
172
+ height: 16,
173
+ opacity: streakOpacity,
174
+ transform: [{
175
+ translateX
176
+ }, {
177
+ translateY
178
+ }, {
179
+ rotate: `${angle}deg`
180
+ }]
181
+ },
182
+ pointerEvents: "none",
183
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
184
+ style: {
185
+ position: "absolute",
186
+ left: 86,
187
+ top: -2,
188
+ width: 20,
189
+ height: 20,
190
+ borderRadius: 10,
191
+ backgroundColor: (0, _rng.withAlpha)("#E5EEFC", 0.16)
192
+ }
193
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
194
+ style: {
195
+ position: "absolute",
196
+ left: 94.5,
197
+ top: 6.5,
198
+ width: 3,
199
+ height: 3,
200
+ borderRadius: 1.5,
201
+ backgroundColor: (0, _rng.withAlpha)("#F5F9FF", 1)
202
+ }
203
+ }), trail]
204
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
205
+ style: {
206
+ position: "absolute",
207
+ left: x1 - 32,
208
+ top: y1 - 32,
209
+ width: 64,
210
+ height: 64,
211
+ opacity: flashOpacity,
212
+ transform: [{
213
+ scale: flashScale
214
+ }]
215
+ },
216
+ pointerEvents: "none",
217
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.RadialGlow, {
218
+ size: 64,
219
+ color: "#EDF3FC",
220
+ alpha: 0.6,
221
+ rings: 6,
222
+ falloff: 1.6
223
+ })
224
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
225
+ style: {
226
+ position: "absolute",
227
+ left: x1 - SHOCKWAVE_DIA / 2,
228
+ top: y1 - SHOCKWAVE_DIA / 2,
229
+ width: SHOCKWAVE_DIA,
230
+ height: SHOCKWAVE_DIA,
231
+ borderRadius: SHOCKWAVE_DIA / 2,
232
+ borderWidth: 1.5,
233
+ borderColor: (0, _rng.withAlpha)("#BBE5FA", 0.9),
234
+ opacity: waveOpacity,
235
+ transform: [{
236
+ scale: waveScale
237
+ }]
238
+ },
239
+ pointerEvents: "none"
240
+ }), sparks]
241
+ });
242
+ });
243
+
244
+ /**
245
+ * The transparent meteor layer — just the streaks and their wall impacts,
246
+ * ready to compose over any host sky (Deep Field is the shipping mount).
247
+ */
248
+ const MeteorShower = exports.MeteorShower = /*#__PURE__*/(0, _react.memo)(function MeteorShower(props) {
249
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
250
+ style: _absoluteFill.absoluteFill,
251
+ pointerEvents: "none",
252
+ children: METEORS.map((_, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Meteor, {
253
+ index: i,
254
+ ...props
255
+ }, i))
256
+ });
257
+ });