@oxyhq/bloom 1.0.6 → 1.2.0

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 (220) hide show
  1. package/docs/level-picker.mdx +105 -0
  2. package/docs/media-flight.mdx +272 -0
  3. package/docs/migrating-the-media-gallery.mdx +103 -0
  4. package/docs/migrating-to-1.0.mdx +1 -1
  5. package/docs/slider.mdx +3 -1
  6. package/docs/zoomable-media-gallery.mdx +116 -0
  7. package/lib/commonjs/floating/index.js.map +1 -1
  8. package/lib/commonjs/image-aspect-ratio-cache/aspect-ratio-cache.js +1 -1
  9. package/lib/commonjs/index.js +8 -0
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/index.web.js +33 -25
  12. package/lib/commonjs/index.web.js.map +1 -1
  13. package/lib/commonjs/level-picker/LevelPicker.js +349 -0
  14. package/lib/commonjs/level-picker/LevelPicker.js.map +1 -0
  15. package/lib/commonjs/level-picker/LevelPicker.web.js +346 -0
  16. package/lib/commonjs/level-picker/LevelPicker.web.js.map +1 -0
  17. package/lib/commonjs/level-picker/constants.js +137 -0
  18. package/lib/commonjs/level-picker/constants.js.map +1 -0
  19. package/lib/commonjs/level-picker/index.js +13 -0
  20. package/lib/commonjs/level-picker/index.js.map +1 -0
  21. package/lib/commonjs/level-picker/index.web.js +13 -0
  22. package/lib/commonjs/level-picker/index.web.js.map +1 -0
  23. package/lib/commonjs/level-picker/types.js +6 -0
  24. package/lib/commonjs/level-picker/types.js.map +1 -0
  25. package/lib/commonjs/media-flight/MediaFlightLayer.js +151 -0
  26. package/lib/commonjs/media-flight/MediaFlightLayer.js.map +1 -0
  27. package/lib/commonjs/media-flight/MediaSurface.js +188 -0
  28. package/lib/commonjs/media-flight/MediaSurface.js.map +1 -0
  29. package/lib/commonjs/media-flight/constants.js +39 -0
  30. package/lib/commonjs/media-flight/constants.js.map +1 -0
  31. package/lib/commonjs/media-flight/expo-video-module.js +148 -0
  32. package/lib/commonjs/media-flight/expo-video-module.js.map +1 -0
  33. package/lib/commonjs/media-flight/index.js +102 -0
  34. package/lib/commonjs/media-flight/index.js.map +1 -0
  35. package/lib/commonjs/media-flight/store.js +457 -0
  36. package/lib/commonjs/media-flight/store.js.map +1 -0
  37. package/lib/commonjs/media-flight/types.js +6 -0
  38. package/lib/commonjs/media-flight/types.js.map +1 -0
  39. package/lib/commonjs/media-flight/use-media-flight.js +41 -0
  40. package/lib/commonjs/media-flight/use-media-flight.js.map +1 -0
  41. package/lib/commonjs/tab-bar/TabBarBase.js +1 -1
  42. package/lib/commonjs/{zoomable-image-gallery/ZoomableImageGallery.js → zoomable-media-gallery/ZoomableMediaGallery.js} +185 -131
  43. package/lib/commonjs/zoomable-media-gallery/ZoomableMediaGallery.js.map +1 -0
  44. package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.js.map +1 -1
  45. package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/index.js +5 -5
  46. package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/index.js.map +1 -1
  47. package/lib/commonjs/zoomable-media-gallery/types.js +6 -0
  48. package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/types.js.map +1 -1
  49. package/lib/module/floating/index.js +5 -0
  50. package/lib/module/floating/index.js.map +1 -1
  51. package/lib/module/image-aspect-ratio-cache/aspect-ratio-cache.js +1 -1
  52. package/lib/module/index.js +3 -1
  53. package/lib/module/index.js.map +1 -1
  54. package/lib/module/index.web.js +3 -1
  55. package/lib/module/index.web.js.map +1 -1
  56. package/lib/module/level-picker/LevelPicker.js +343 -0
  57. package/lib/module/level-picker/LevelPicker.js.map +1 -0
  58. package/lib/module/level-picker/LevelPicker.web.js +340 -0
  59. package/lib/module/level-picker/LevelPicker.web.js.map +1 -0
  60. package/lib/module/level-picker/constants.js +131 -0
  61. package/lib/module/level-picker/constants.js.map +1 -0
  62. package/lib/module/level-picker/index.js +4 -0
  63. package/lib/module/level-picker/index.js.map +1 -0
  64. package/lib/module/level-picker/index.web.js +4 -0
  65. package/lib/module/level-picker/index.web.js.map +1 -0
  66. package/lib/module/level-picker/types.js +4 -0
  67. package/lib/module/level-picker/types.js.map +1 -0
  68. package/lib/module/media-flight/MediaFlightLayer.js +146 -0
  69. package/lib/module/media-flight/MediaFlightLayer.js.map +1 -0
  70. package/lib/module/media-flight/MediaSurface.js +180 -0
  71. package/lib/module/media-flight/MediaSurface.js.map +1 -0
  72. package/lib/module/media-flight/constants.js +35 -0
  73. package/lib/module/media-flight/constants.js.map +1 -0
  74. package/lib/module/media-flight/expo-video-module.js +142 -0
  75. package/lib/module/media-flight/expo-video-module.js.map +1 -0
  76. package/lib/module/media-flight/index.js +9 -0
  77. package/lib/module/media-flight/index.js.map +1 -0
  78. package/lib/module/media-flight/store.js +439 -0
  79. package/lib/module/media-flight/store.js.map +1 -0
  80. package/lib/module/media-flight/types.js +4 -0
  81. package/lib/module/media-flight/types.js.map +1 -0
  82. package/lib/module/media-flight/use-media-flight.js +36 -0
  83. package/lib/module/media-flight/use-media-flight.js.map +1 -0
  84. package/lib/module/tab-bar/TabBarBase.js +1 -1
  85. package/lib/module/{zoomable-image-gallery/ZoomableImageGallery.js → zoomable-media-gallery/ZoomableMediaGallery.js} +184 -130
  86. package/lib/module/zoomable-media-gallery/ZoomableMediaGallery.js.map +1 -0
  87. package/lib/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.js.map +1 -1
  88. package/lib/module/zoomable-media-gallery/index.js +5 -0
  89. package/lib/module/zoomable-media-gallery/index.js.map +1 -0
  90. package/lib/module/zoomable-media-gallery/types.js +4 -0
  91. package/lib/module/{zoomable-image-gallery → zoomable-media-gallery}/types.js.map +1 -1
  92. package/lib/typescript/commonjs/floating/index.d.ts +5 -0
  93. package/lib/typescript/commonjs/floating/index.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/index.d.ts +2 -0
  95. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/index.web.d.ts +2 -0
  97. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/level-picker/LevelPicker.d.ts +6 -0
  99. package/lib/typescript/commonjs/level-picker/LevelPicker.d.ts.map +1 -0
  100. package/lib/typescript/commonjs/level-picker/LevelPicker.web.d.ts +6 -0
  101. package/lib/typescript/commonjs/level-picker/LevelPicker.web.d.ts.map +1 -0
  102. package/lib/typescript/commonjs/level-picker/constants.d.ts +93 -0
  103. package/lib/typescript/commonjs/level-picker/constants.d.ts.map +1 -0
  104. package/lib/typescript/commonjs/level-picker/index.d.ts +3 -0
  105. package/lib/typescript/commonjs/level-picker/index.d.ts.map +1 -0
  106. package/lib/typescript/commonjs/level-picker/index.web.d.ts +3 -0
  107. package/lib/typescript/commonjs/level-picker/index.web.d.ts.map +1 -0
  108. package/lib/typescript/commonjs/level-picker/types.d.ts +63 -0
  109. package/lib/typescript/commonjs/level-picker/types.d.ts.map +1 -0
  110. package/lib/typescript/commonjs/media-flight/MediaFlightLayer.d.ts +11 -0
  111. package/lib/typescript/commonjs/media-flight/MediaFlightLayer.d.ts.map +1 -0
  112. package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts +106 -0
  113. package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts.map +1 -0
  114. package/lib/typescript/commonjs/media-flight/constants.d.ts +18 -0
  115. package/lib/typescript/commonjs/media-flight/constants.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/media-flight/expo-video-module.d.ts +103 -0
  117. package/lib/typescript/commonjs/media-flight/expo-video-module.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/media-flight/index.d.ts +9 -0
  119. package/lib/typescript/commonjs/media-flight/index.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/media-flight/store.d.ts +132 -0
  121. package/lib/typescript/commonjs/media-flight/store.d.ts.map +1 -0
  122. package/lib/typescript/commonjs/media-flight/types.d.ts +195 -0
  123. package/lib/typescript/commonjs/media-flight/types.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/media-flight/use-media-flight.d.ts +4 -0
  125. package/lib/typescript/commonjs/media-flight/use-media-flight.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/zoomable-media-gallery/ZoomableMediaGallery.d.ts +5 -0
  127. package/lib/typescript/commonjs/zoomable-media-gallery/ZoomableMediaGallery.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/zoomable-media-gallery/index.d.ts +4 -0
  130. package/lib/typescript/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/index.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/zoomable-media-gallery/types.d.ts +90 -0
  132. package/lib/typescript/commonjs/zoomable-media-gallery/types.d.ts.map +1 -0
  133. package/lib/typescript/module/floating/index.d.ts +5 -0
  134. package/lib/typescript/module/floating/index.d.ts.map +1 -1
  135. package/lib/typescript/module/index.d.ts +2 -0
  136. package/lib/typescript/module/index.d.ts.map +1 -1
  137. package/lib/typescript/module/index.web.d.ts +2 -0
  138. package/lib/typescript/module/index.web.d.ts.map +1 -1
  139. package/lib/typescript/module/level-picker/LevelPicker.d.ts +6 -0
  140. package/lib/typescript/module/level-picker/LevelPicker.d.ts.map +1 -0
  141. package/lib/typescript/module/level-picker/LevelPicker.web.d.ts +6 -0
  142. package/lib/typescript/module/level-picker/LevelPicker.web.d.ts.map +1 -0
  143. package/lib/typescript/module/level-picker/constants.d.ts +93 -0
  144. package/lib/typescript/module/level-picker/constants.d.ts.map +1 -0
  145. package/lib/typescript/module/level-picker/index.d.ts +3 -0
  146. package/lib/typescript/module/level-picker/index.d.ts.map +1 -0
  147. package/lib/typescript/module/level-picker/index.web.d.ts +3 -0
  148. package/lib/typescript/module/level-picker/index.web.d.ts.map +1 -0
  149. package/lib/typescript/module/level-picker/types.d.ts +63 -0
  150. package/lib/typescript/module/level-picker/types.d.ts.map +1 -0
  151. package/lib/typescript/module/media-flight/MediaFlightLayer.d.ts +11 -0
  152. package/lib/typescript/module/media-flight/MediaFlightLayer.d.ts.map +1 -0
  153. package/lib/typescript/module/media-flight/MediaSurface.d.ts +106 -0
  154. package/lib/typescript/module/media-flight/MediaSurface.d.ts.map +1 -0
  155. package/lib/typescript/module/media-flight/constants.d.ts +18 -0
  156. package/lib/typescript/module/media-flight/constants.d.ts.map +1 -0
  157. package/lib/typescript/module/media-flight/expo-video-module.d.ts +103 -0
  158. package/lib/typescript/module/media-flight/expo-video-module.d.ts.map +1 -0
  159. package/lib/typescript/module/media-flight/index.d.ts +9 -0
  160. package/lib/typescript/module/media-flight/index.d.ts.map +1 -0
  161. package/lib/typescript/module/media-flight/store.d.ts +132 -0
  162. package/lib/typescript/module/media-flight/store.d.ts.map +1 -0
  163. package/lib/typescript/module/media-flight/types.d.ts +195 -0
  164. package/lib/typescript/module/media-flight/types.d.ts.map +1 -0
  165. package/lib/typescript/module/media-flight/use-media-flight.d.ts +4 -0
  166. package/lib/typescript/module/media-flight/use-media-flight.d.ts.map +1 -0
  167. package/lib/typescript/module/zoomable-media-gallery/ZoomableMediaGallery.d.ts +5 -0
  168. package/lib/typescript/module/zoomable-media-gallery/ZoomableMediaGallery.d.ts.map +1 -0
  169. package/lib/typescript/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts.map +1 -1
  170. package/lib/typescript/module/zoomable-media-gallery/index.d.ts +4 -0
  171. package/lib/typescript/module/{zoomable-image-gallery → zoomable-media-gallery}/index.d.ts.map +1 -1
  172. package/lib/typescript/module/zoomable-media-gallery/types.d.ts +90 -0
  173. package/lib/typescript/module/zoomable-media-gallery/types.d.ts.map +1 -0
  174. package/package.json +61 -8
  175. package/src/floating/index.ts +5 -0
  176. package/src/image-aspect-ratio-cache/aspect-ratio-cache.ts +1 -1
  177. package/src/index.ts +4 -1
  178. package/src/index.web.ts +4 -1
  179. package/src/level-picker/LevelPicker.tsx +365 -0
  180. package/src/level-picker/LevelPicker.web.tsx +374 -0
  181. package/src/level-picker/constants.ts +131 -0
  182. package/src/level-picker/index.ts +2 -0
  183. package/src/level-picker/index.web.ts +2 -0
  184. package/src/level-picker/types.ts +63 -0
  185. package/src/media-flight/MediaFlightLayer.tsx +144 -0
  186. package/src/media-flight/MediaSurface.tsx +233 -0
  187. package/src/media-flight/constants.ts +32 -0
  188. package/src/media-flight/expo-video-module.ts +181 -0
  189. package/src/media-flight/index.ts +33 -0
  190. package/src/media-flight/store.ts +497 -0
  191. package/src/media-flight/types.ts +210 -0
  192. package/src/media-flight/use-media-flight.ts +42 -0
  193. package/src/tab-bar/TabBarBase.tsx +1 -1
  194. package/src/{zoomable-image-gallery/ZoomableImageGallery.tsx → zoomable-media-gallery/ZoomableMediaGallery.tsx} +192 -117
  195. package/src/zoomable-media-gallery/index.ts +11 -0
  196. package/src/zoomable-media-gallery/types.ts +100 -0
  197. package/docs/zoomable-image-gallery.mdx +0 -66
  198. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js.map +0 -1
  199. package/lib/commonjs/zoomable-image-gallery/types.js +0 -2
  200. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js.map +0 -1
  201. package/lib/module/zoomable-image-gallery/index.js +0 -5
  202. package/lib/module/zoomable-image-gallery/index.js.map +0 -1
  203. package/lib/module/zoomable-image-gallery/types.js +0 -2
  204. package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts +0 -5
  205. package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +0 -1
  206. package/lib/typescript/commonjs/zoomable-image-gallery/index.d.ts +0 -4
  207. package/lib/typescript/commonjs/zoomable-image-gallery/types.d.ts +0 -56
  208. package/lib/typescript/commonjs/zoomable-image-gallery/types.d.ts.map +0 -1
  209. package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts +0 -5
  210. package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +0 -1
  211. package/lib/typescript/module/zoomable-image-gallery/index.d.ts +0 -4
  212. package/lib/typescript/module/zoomable-image-gallery/types.d.ts +0 -56
  213. package/lib/typescript/module/zoomable-image-gallery/types.d.ts.map +0 -1
  214. package/src/zoomable-image-gallery/index.ts +0 -9
  215. package/src/zoomable-image-gallery/types.ts +0 -59
  216. /package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.js +0 -0
  217. /package/lib/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.js +0 -0
  218. /package/lib/typescript/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts +0 -0
  219. /package/lib/typescript/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts +0 -0
  220. /package/src/{zoomable-image-gallery → zoomable-media-gallery}/constants.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","Animated","PanResponder","ROW_ICON_SIZE","cx","MenuRowChevron","MenuRowShell","SUB_TRIGGER_CLASS","useControllableState","ChevronRight_Stroke2_Corner0_Rounded","ChevronRightIcon","StyledText","StyledView","animation","useTheme","LEVEL_CAPTION_CLASS","LEVEL_FILL_CLASS","LEVEL_ROW_INSET","LEVEL_SEPARATOR_CLASS","LEVEL_SLIDER_ROW_HEIGHT","LEVEL_STOP_CLASS","LEVEL_STOP_REACHED_CLASS","LEVEL_STOP_SIZE","LEVEL_THUMB_CLASS","LEVEL_THUMB_SIZE","LEVEL_TRACK_CLASS","LEVEL_TRACK_HEIGHT","levelFromOffset","levelStopPosition","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AnimatedStyledView","createAnimatedComponent","useRevealProgress","on","progress","Value","current","spring","toValue","useNativeDriver","gentle","start","ADJUST_ACTIONS","name","LevelPicker","levels","value","onValueChange","accessibilityLabel","minLabel","maxLabel","detailsLabel","expanded","defaultExpanded","onExpandedChange","children","className","style","testID","theme","isExpanded","setExpanded","defaultValue","onChange","trackWidth","setTrackWidth","detailsHeight","setDetailsHeight","dragging","setDragging","reveal","active","stateRef","count","length","onValueChangeRef","grantOffsetRef","commitOffset","offsetX","width","next","step","delta","Math","max","min","panResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","event","nativeEvent","locationX","onPanResponderMove","_event","gesture","dx","onPanResponderRelease","onPanResponderTerminate","onTrackLayout","layout","prev","abs","onDetailsLayout","height","onAccessibilityAction","actionName","offsetOf","index","percent","offset","hasCaptions","undefined","childTestId","part","pointerEvents","overflow","opacity","interpolate","inputRange","outputRange","maxHeight","justifyContent","paddingHorizontal","accessibilityRole","accessibilityActions","onLayout","panHandlers","top","bottom","map","label","left","role","disabled","title","trailing","transform","rotate","fill","colors","textSecondary","onPress","position","right","flexDirection","alignItems","marginHorizontal","marginBottom","displayName"],"sourceRoot":"../../../src","sources":["level-picker/LevelPicker.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * `LevelPicker` — WEB. The same control as `LevelPicker.tsx`, built out of the
5
+ * three things a browser has and React Native does not, which is what makes
6
+ * this a fork rather than a branch:
7
+ *
8
+ * 1. **Pointer capture.** `setPointerCapture` keeps the drag on the rail once
9
+ * the pointer leaves it, so a user can slam left or right past the end of
10
+ * the track and still be steering. Nothing in the RN responder system is
11
+ * equivalent on the platform where a pointer exists at all.
12
+ * 2. **`inert` and a real focus model.** A collapsed region is `inert` — its
13
+ * rows leave the tab order and the accessibility tree together — and the
14
+ * rail is a focusable `role="slider"` with arrow, Home and End keys, which
15
+ * an `adjustable` on native exposes as increment/decrement ACTIONS instead.
16
+ * 3. **`calc()`.** A stop's position is a percentage of the rail plus a pixel
17
+ * inset, which CSS resolves per frame; the native fork has to measure the
18
+ * rail with `onLayout` and multiply. Both read {@link levelStopPosition}, so
19
+ * the formula is one thing rendered two ways rather than two formulas.
20
+ *
21
+ * The rows themselves are NOT forked: the summary row is `floating/shared`'s
22
+ * `MenuRowShell`, the same one the sub-menu triggers in the details region are
23
+ * built from, so the disclosure and the rows it reveals cannot disagree about a
24
+ * row's inset, highlight or height.
25
+ */
26
+ import React, { useCallback, useRef, useState } from 'react';
27
+ import { PANEL_MOTION_DURATION, PANEL_MOTION_EASING, ROW_ICON_SIZE } from "../floating/constants.js";
28
+ import { cx, MenuRowChevron, MenuRowShell, SUB_TRIGGER_CLASS } from "../floating/shared.js";
29
+ import { useControllableState } from "../hooks/use-controllable-state.js";
30
+ import { useInteractionState } from "../hooks/use-interaction-state.js";
31
+ import { ChevronRight_Stroke2_Corner0_Rounded as ChevronRightIcon } from "../icons/Chevron.js";
32
+ import { flattenWebStyle } from "../styles/flatten-web-style.js";
33
+ import { useTheme } from "../theme/use-theme.js";
34
+ import { LEVEL_CAPTION_CLASS, LEVEL_FILL_CLASS, LEVEL_ROW_INSET, LEVEL_SEPARATOR_CLASS, LEVEL_SLIDER_ROW_HEIGHT, LEVEL_STOP_CLASS, LEVEL_STOP_REACHED_CLASS, LEVEL_STOP_SIZE, LEVEL_THUMB_CLASS, LEVEL_THUMB_SIZE, LEVEL_TRACK_CLASS, LEVEL_TRACK_HEIGHT, levelFromOffset, levelStopPosition } from "./constants.js";
35
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
36
+ /**
37
+ * The menu's own motion, as CSS. `FloatingPanel` runs its enter and exit on the
38
+ * same duration and curve, so a picker changing shape inside a panel reads as
39
+ * one surface moving rather than two things animating at each other.
40
+ *
41
+ * Spelled inline from the constants rather than as `duration-200 ease-out`
42
+ * classes: a class would be a second copy of the number, free to drift from the
43
+ * one the panel uses.
44
+ */
45
+ const MOTION = {
46
+ transitionDuration: `${PANEL_MOTION_DURATION}ms`,
47
+ transitionTimingFunction: `cubic-bezier(${PANEL_MOTION_EASING.join(', ')})`
48
+ };
49
+
50
+ /** The rail's own chrome — everything about it that is not a colour role. */
51
+ const TRACK_CLASS = 'w-full touch-none cursor-pointer outline-none ' + 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-popover';
52
+ export function LevelPicker({
53
+ levels,
54
+ value,
55
+ onValueChange,
56
+ accessibilityLabel,
57
+ minLabel,
58
+ maxLabel,
59
+ detailsLabel = 'Details',
60
+ expanded,
61
+ defaultExpanded = false,
62
+ onExpandedChange,
63
+ children,
64
+ className,
65
+ style,
66
+ testID
67
+ }) {
68
+ const theme = useTheme();
69
+ const [isExpanded, setExpanded] = useControllableState({
70
+ value: expanded,
71
+ defaultValue: defaultExpanded,
72
+ onChange: onExpandedChange
73
+ });
74
+ const {
75
+ state: pointerOver,
76
+ onIn: enterPointer,
77
+ onOut: leavePointer
78
+ } = useInteractionState();
79
+ const {
80
+ state: focused,
81
+ onIn: focusTrack,
82
+ onOut: blurTrack
83
+ } = useInteractionState();
84
+ const [dragging, setDragging] = useState(false);
85
+ const [detailsHeight, setDetailsHeight] = useState(0);
86
+ const trackRef = useRef(null);
87
+
88
+ /** The slider is being WORKED — hovered, focused or dragged. */
89
+ const active = pointerOver || focused || dragging;
90
+
91
+ /**
92
+ * The details region's natural height, observed rather than read once: a
93
+ * sub-menu row inside it can change size after the reveal has already run,
94
+ * and a height measured only on mount would clip it.
95
+ *
96
+ * `ResizeObserver` is guarded because this fork also runs where there is no
97
+ * layout to observe — an SSR pass, and jsdom under jest. There the region
98
+ * falls back to its natural height (`maxHeight: undefined` below), which is
99
+ * the safe direction: unclipped rather than collapsed.
100
+ */
101
+ const measureDetails = useCallback(node => {
102
+ if (node === null) return;
103
+ const read = () => {
104
+ const next = node.offsetHeight;
105
+ setDetailsHeight(prev => Math.abs(prev - next) > 0.5 ? next : prev);
106
+ };
107
+ read();
108
+ if (typeof ResizeObserver === 'undefined') return;
109
+ const observer = new ResizeObserver(read);
110
+ observer.observe(node);
111
+ return () => observer.disconnect();
112
+ }, []);
113
+ const commitPointer = useCallback(event => {
114
+ const rect = trackRef.current?.getBoundingClientRect();
115
+ if (rect === undefined) return;
116
+ const next = levelFromOffset(event.clientX - rect.left, rect.width, levels.length);
117
+ if (next !== value) onValueChange(next);
118
+ }, [levels.length, onValueChange, value]);
119
+ const step = useCallback(to => {
120
+ const next = Math.max(0, Math.min(levels.length - 1, to));
121
+ if (next !== value) onValueChange(next);
122
+ }, [levels.length, onValueChange, value]);
123
+ const onKeyDown = useCallback(event => {
124
+ switch (event.key) {
125
+ case 'ArrowRight':
126
+ case 'ArrowUp':
127
+ event.preventDefault();
128
+ step(value + 1);
129
+ break;
130
+ case 'ArrowLeft':
131
+ case 'ArrowDown':
132
+ event.preventDefault();
133
+ step(value - 1);
134
+ break;
135
+ case 'Home':
136
+ event.preventDefault();
137
+ step(0);
138
+ break;
139
+ case 'End':
140
+ event.preventDefault();
141
+ step(levels.length - 1);
142
+ break;
143
+ default:
144
+ break;
145
+ }
146
+ }, [levels.length, step, value]);
147
+
148
+ /** A stop's centre: a share of the rail, plus the inset that keeps the knob on it. */
149
+ const positionOf = index => {
150
+ const {
151
+ percent,
152
+ offset
153
+ } = levelStopPosition(index, levels.length);
154
+ return `calc(${percent}% + ${offset}px)`;
155
+ };
156
+ const hasCaptions = minLabel !== undefined || maxLabel !== undefined;
157
+ /**
158
+ * The row's fade, on the ROW rather than on a wrapper around it: an inline
159
+ * style outranks a class on web whatever the order, so this is the one place
160
+ * the opacity can live without competing with `MenuRowShell`'s own chrome —
161
+ * and it is one fewer node between the caller's layout and the row.
162
+ *
163
+ * `pointerEvents` follows the POINTER, not `active`, and the difference is not
164
+ * a nicety. A rail keeps focus after it is clicked, so a row that stopped
165
+ * taking clicks whenever `active` was true would be unclickable for as long as
166
+ * the rail was focused — measured: the click falls through to the container,
167
+ * which blurs the rail, and only the SECOND click reaches the row. Fading a
168
+ * row the pointer is nowhere near is worth it; swallowing its click is not.
169
+ */
170
+ const pointerEngaged = pointerOver || dragging;
171
+ const summaryStyle = {
172
+ ...MOTION,
173
+ transitionProperty: 'opacity',
174
+ opacity: active ? 0 : 1,
175
+ pointerEvents: pointerEngaged ? 'none' : 'auto'
176
+ };
177
+ const childTestId = part => testID === undefined ? undefined : `${testID}-${part}`;
178
+ return /*#__PURE__*/_jsxs("div", {
179
+ className: cx('flex w-full flex-col', className),
180
+ style: flattenWebStyle(style),
181
+ "data-testid": testID,
182
+ children: [/*#__PURE__*/_jsx("div", {
183
+ inert: isExpanded,
184
+ "aria-hidden": isExpanded,
185
+ className: "overflow-hidden",
186
+ style: {
187
+ ...MOTION,
188
+ transitionProperty: 'max-height, opacity',
189
+ maxHeight: isExpanded ? 0 : LEVEL_SLIDER_ROW_HEIGHT,
190
+ opacity: isExpanded ? 0 : 1
191
+ },
192
+ "data-testid": childTestId('slider'),
193
+ children: /*#__PURE__*/_jsx("div", {
194
+ className: "flex items-center",
195
+ style: {
196
+ height: LEVEL_SLIDER_ROW_HEIGHT,
197
+ paddingLeft: LEVEL_ROW_INSET,
198
+ paddingRight: LEVEL_ROW_INSET
199
+ },
200
+ children: /*#__PURE__*/_jsxs("div", {
201
+ ref: trackRef,
202
+ role: "slider",
203
+ tabIndex: isExpanded ? -1 : 0,
204
+ "aria-label": accessibilityLabel,
205
+ "aria-valuemin": 0,
206
+ "aria-valuemax": levels.length - 1,
207
+ "aria-valuenow": value,
208
+ "aria-valuetext": levels[value],
209
+ onPointerEnter: enterPointer,
210
+ onPointerLeave: () => {
211
+ if (!dragging) leavePointer();
212
+ },
213
+ onPointerDown: event => {
214
+ event.currentTarget.setPointerCapture(event.pointerId);
215
+ setDragging(true);
216
+ enterPointer();
217
+ commitPointer(event);
218
+ },
219
+ onPointerMove: event => {
220
+ if (dragging) commitPointer(event);
221
+ },
222
+ onPointerUp: event => {
223
+ if (event.currentTarget.hasPointerCapture(event.pointerId)) {
224
+ event.currentTarget.releasePointerCapture(event.pointerId);
225
+ }
226
+ setDragging(false);
227
+ },
228
+ onPointerCancel: () => setDragging(false),
229
+ onFocus: focusTrack,
230
+ onBlur: blurTrack,
231
+ onKeyDown: onKeyDown,
232
+ className: cx(LEVEL_TRACK_CLASS, TRACK_CLASS),
233
+ style: {
234
+ height: LEVEL_TRACK_HEIGHT
235
+ },
236
+ "data-testid": childTestId('track'),
237
+ children: [/*#__PURE__*/_jsx("span", {
238
+ "aria-hidden": "true",
239
+ className: LEVEL_FILL_CLASS,
240
+ style: {
241
+ top: 0,
242
+ bottom: 0,
243
+ width: positionOf(value)
244
+ }
245
+ }), levels.map((label, index) => /*#__PURE__*/_jsx("span", {
246
+ "aria-hidden": "true",
247
+ className: index <= value ? LEVEL_STOP_REACHED_CLASS : LEVEL_STOP_CLASS,
248
+ style: {
249
+ width: LEVEL_STOP_SIZE,
250
+ height: LEVEL_STOP_SIZE,
251
+ top: '50%',
252
+ left: positionOf(index),
253
+ transform: 'translate(-50%, -50%)'
254
+ }
255
+ }, label)), /*#__PURE__*/_jsx("span", {
256
+ "aria-hidden": "true",
257
+ className: LEVEL_THUMB_CLASS,
258
+ style: {
259
+ width: LEVEL_THUMB_SIZE,
260
+ height: LEVEL_THUMB_SIZE,
261
+ top: '50%',
262
+ left: positionOf(value),
263
+ transform: 'translate(-50%, -50%)'
264
+ },
265
+ "data-testid": childTestId('thumb')
266
+ })]
267
+ })
268
+ })
269
+ }), /*#__PURE__*/_jsxs("div", {
270
+ className: "relative",
271
+ children: [/*#__PURE__*/_jsx(MenuRowShell, {
272
+ role: "menuitem",
273
+ expanded: isExpanded,
274
+ disabled: false,
275
+ title: detailsLabel,
276
+ trailing: /*#__PURE__*/_jsx(MenuRowChevron, {
277
+ children: /*#__PURE__*/_jsx("span", {
278
+ className: "flex items-center justify-center",
279
+ style: {
280
+ ...MOTION,
281
+ transitionProperty: 'transform',
282
+ transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)'
283
+ },
284
+ children: /*#__PURE__*/_jsx(ChevronRightIcon, {
285
+ width: ROW_ICON_SIZE,
286
+ height: ROW_ICON_SIZE,
287
+ fill: theme.colors.textSecondary
288
+ })
289
+ })
290
+ }),
291
+ onPress: () => setExpanded(!isExpanded),
292
+ className: SUB_TRIGGER_CLASS,
293
+ style: summaryStyle,
294
+ testID: childTestId('summary')
295
+ }), hasCaptions ? /*#__PURE__*/_jsxs("div", {
296
+ "aria-hidden": "true",
297
+ className: "pointer-events-none absolute inset-0 flex flex-row items-center justify-between",
298
+ style: {
299
+ ...MOTION,
300
+ transitionProperty: 'opacity',
301
+ opacity: active ? 1 : 0,
302
+ paddingLeft: LEVEL_ROW_INSET,
303
+ paddingRight: LEVEL_ROW_INSET
304
+ },
305
+ "data-testid": childTestId('captions'),
306
+ children: [/*#__PURE__*/_jsx("span", {
307
+ className: LEVEL_CAPTION_CLASS,
308
+ children: minLabel
309
+ }), /*#__PURE__*/_jsx("span", {
310
+ className: LEVEL_CAPTION_CLASS,
311
+ children: maxLabel
312
+ })]
313
+ }) : null]
314
+ }), /*#__PURE__*/_jsx("div", {
315
+ inert: !isExpanded,
316
+ "aria-hidden": !isExpanded,
317
+ className: "overflow-hidden",
318
+ style: {
319
+ ...MOTION,
320
+ transitionProperty: 'max-height, opacity',
321
+ maxHeight: isExpanded ? detailsHeight === 0 ? undefined : detailsHeight : 0,
322
+ opacity: isExpanded ? 1 : 0
323
+ },
324
+ "data-testid": childTestId('details'),
325
+ children: /*#__PURE__*/_jsxs("div", {
326
+ ref: measureDetails,
327
+ children: [/*#__PURE__*/_jsx("div", {
328
+ className: LEVEL_SEPARATOR_CLASS,
329
+ style: {
330
+ marginLeft: LEVEL_ROW_INSET,
331
+ marginRight: LEVEL_ROW_INSET,
332
+ marginBottom: 4
333
+ }
334
+ }), children]
335
+ })
336
+ })]
337
+ });
338
+ }
339
+ LevelPicker.displayName = 'LevelPicker';
340
+ //# sourceMappingURL=LevelPicker.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useRef","useState","PANEL_MOTION_DURATION","PANEL_MOTION_EASING","ROW_ICON_SIZE","cx","MenuRowChevron","MenuRowShell","SUB_TRIGGER_CLASS","useControllableState","useInteractionState","ChevronRight_Stroke2_Corner0_Rounded","ChevronRightIcon","flattenWebStyle","useTheme","LEVEL_CAPTION_CLASS","LEVEL_FILL_CLASS","LEVEL_ROW_INSET","LEVEL_SEPARATOR_CLASS","LEVEL_SLIDER_ROW_HEIGHT","LEVEL_STOP_CLASS","LEVEL_STOP_REACHED_CLASS","LEVEL_STOP_SIZE","LEVEL_THUMB_CLASS","LEVEL_THUMB_SIZE","LEVEL_TRACK_CLASS","LEVEL_TRACK_HEIGHT","levelFromOffset","levelStopPosition","jsx","_jsx","jsxs","_jsxs","MOTION","transitionDuration","transitionTimingFunction","join","TRACK_CLASS","LevelPicker","levels","value","onValueChange","accessibilityLabel","minLabel","maxLabel","detailsLabel","expanded","defaultExpanded","onExpandedChange","children","className","style","testID","theme","isExpanded","setExpanded","defaultValue","onChange","state","pointerOver","onIn","enterPointer","onOut","leavePointer","focused","focusTrack","blurTrack","dragging","setDragging","detailsHeight","setDetailsHeight","trackRef","active","measureDetails","node","read","next","offsetHeight","prev","Math","abs","ResizeObserver","observer","observe","disconnect","commitPointer","event","rect","current","getBoundingClientRect","undefined","clientX","left","width","length","step","to","max","min","onKeyDown","key","preventDefault","positionOf","index","percent","offset","hasCaptions","pointerEngaged","summaryStyle","transitionProperty","opacity","pointerEvents","childTestId","part","inert","maxHeight","height","paddingLeft","paddingRight","ref","role","tabIndex","onPointerEnter","onPointerLeave","onPointerDown","currentTarget","setPointerCapture","pointerId","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","onPointerCancel","onFocus","onBlur","top","bottom","map","label","transform","disabled","title","trailing","fill","colors","textSecondary","onPress","marginLeft","marginRight","marginBottom","displayName"],"sourceRoot":"../../../src","sources":["level-picker/LevelPicker.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The level picker's SPEC: the geometry both forks lay out from, the colour
5
+ * roles as Tailwind classes, and the two functions that map a stop to a
6
+ * position and a pointer back to a stop.
7
+ *
8
+ * ── WHY GEOMETRY IS NUMBERS HERE AND COLOUR IS CLASSES ───────────────────────
9
+ *
10
+ * `floating/constants.ts` states the menu vocabulary as class strings, so a
11
+ * consumer can restyle a row with a utility. That reasoning applies to the
12
+ * parts a consumer addresses — and none of these are: the rail, its stops and
13
+ * its knob are one control's internals, and the caller's `className` lands on
14
+ * the picker's ROOT.
15
+ *
16
+ * What it buys instead is the property that matters most for a two-fork
17
+ * component: the web fork positions a stop with `calc()` and the native fork
18
+ * with a measured pixel offset, and BOTH read the numbers below and call
19
+ * {@link levelStopPosition}. Two forks that agreed only by having the same
20
+ * literals typed into them is exactly the drift `MENU_SUB_SIDE_OFFSET` and
21
+ * `SUB_TRIGGER_CLASS` exist to prevent one level up.
22
+ *
23
+ * Colour stays in classes, because that is what the surrounding menu rows are
24
+ * painted with and because a token is never derived from — `bg-muted-foreground/25`
25
+ * is the opacity UTILITY (`color-mix`, resolved by the build), never an alpha
26
+ * appended to a resolved `rgb(...)`, which parses back opaque.
27
+ */
28
+
29
+ /* -------------------------------------------------------------------------- */
30
+ /* Geometry — numbers, because both forks compute with them */
31
+ /* -------------------------------------------------------------------------- */
32
+
33
+ /** The rail: a 24px pill, tall enough to read as a track rather than a line. */
34
+ export const LEVEL_TRACK_HEIGHT = 24;
35
+
36
+ /**
37
+ * The knob, LARGER than the rail on purpose (30 against 24), so it reads as a
38
+ * control riding the track rather than a dot inside it. It therefore overhangs
39
+ * the rail by 3px top and bottom, and by 2px past each end once
40
+ * {@link LEVEL_STOP_INSET} is applied — which is why nothing between the rail
41
+ * and the picker's root may clip.
42
+ */
43
+ export const LEVEL_THUMB_SIZE = 30;
44
+
45
+ /** A stop: a 4px dot, drawn under the knob. */
46
+ export const LEVEL_STOP_SIZE = 4;
47
+
48
+ /**
49
+ * How far the FIRST and LAST stop sit in from the rail's ends.
50
+ *
51
+ * Not a cosmetic margin: it is what stops the knob from hanging half off the
52
+ * rail at either extreme, so it is also the value {@link levelFromOffset} has
53
+ * to subtract before it can read a fraction — a hit map that ignores it snaps
54
+ * to the wrong stop for the first and last {@link LEVEL_STOP_INSET} pixels,
55
+ * which is precisely where a user aiming for "least" or "most" clicks.
56
+ */
57
+ export const LEVEL_STOP_INSET = 13;
58
+
59
+ /** The row the rail sits in — one Bloom row taller than the rail itself. */
60
+ export const LEVEL_SLIDER_ROW_HEIGHT = 40;
61
+
62
+ /**
63
+ * The horizontal inset of everything in the picker that is not a menu row,
64
+ * matching `floating/constants`' `ROW_CLASS` (`px-space-8`) so the rail and the
65
+ * end captions line up with the rows above and below them.
66
+ */
67
+ export const LEVEL_ROW_INSET = 8;
68
+
69
+ /* -------------------------------------------------------------------------- */
70
+ /* Colour roles — classes, as the surrounding menu rows are */
71
+ /* -------------------------------------------------------------------------- */
72
+
73
+ /** The unfilled rail. */
74
+ export const LEVEL_TRACK_CLASS = 'relative rounded-full bg-muted-foreground/25';
75
+
76
+ /** The filled part, which ends under the knob rather than at the rail's end. */
77
+ export const LEVEL_FILL_CLASS = 'absolute left-0 rounded-full bg-primary';
78
+
79
+ /** A stop the level has NOT reached: a dot on the bare rail. */
80
+ export const LEVEL_STOP_CLASS = 'absolute rounded-full bg-muted-foreground/65';
81
+
82
+ /** A stop the level HAS reached: the same dot, on the fill, in its on-colour. */
83
+ export const LEVEL_STOP_REACHED_CLASS = 'absolute rounded-full bg-primary-foreground/35';
84
+
85
+ /** The knob. `shadow-s` is Bloom's control-raise role, the same one `Slider` takes. */
86
+ export const LEVEL_THUMB_CLASS = 'absolute rounded-full bg-background shadow-s';
87
+
88
+ /** The two end captions, one de-emphasis step back, as a menu shortcut is. */
89
+ export const LEVEL_CAPTION_CLASS = 'text-xs text-muted-foreground';
90
+
91
+ /** The hairline between the summary row and the details region. */
92
+ export const LEVEL_SEPARATOR_CLASS = 'h-px bg-border';
93
+
94
+ /* -------------------------------------------------------------------------- */
95
+ /* The two mappings, written once for both forks */
96
+ /* -------------------------------------------------------------------------- */
97
+
98
+ /**
99
+ * Where a stop sits along the rail, as a PERCENTAGE of the rail plus a pixel
100
+ * OFFSET — the one form both forks can render from.
101
+ *
102
+ * The web fork spells it `calc(P% + Opx)` and never measures; the native fork
103
+ * multiplies the percentage by a laid-out width. Returning the pair rather than
104
+ * a finished value is what lets one formula serve both: a shared function that
105
+ * returned pixels would force the web fork to measure, and one that returned a
106
+ * CSS string would be unusable on native.
107
+ */
108
+ export function levelStopPosition(index, count) {
109
+ const fraction = count <= 1 ? 0 : index / (count - 1);
110
+ return {
111
+ percent: fraction * 100,
112
+ offset: LEVEL_STOP_INSET - fraction * 2 * LEVEL_STOP_INSET
113
+ };
114
+ }
115
+
116
+ /**
117
+ * Which stop a pointer at `offsetX` from the rail's left edge is asking for.
118
+ *
119
+ * The inverse of {@link levelStopPosition}, and it undoes the inset for the
120
+ * reason spelled out there. `trackWidth` is the rail's own width — the caller
121
+ * measures it (`getBoundingClientRect().width` on web, `onLayout` on native),
122
+ * so this stays pure and testable.
123
+ */
124
+ export function levelFromOffset(offsetX, trackWidth, count) {
125
+ if (count <= 1) return 0;
126
+ const usable = trackWidth - 2 * LEVEL_STOP_INSET;
127
+ const fraction = usable <= 0 ? 0 : (offsetX - LEVEL_STOP_INSET) / usable;
128
+ const index = Math.round(fraction * (count - 1));
129
+ return Math.max(0, Math.min(count - 1, index));
130
+ }
131
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LEVEL_TRACK_HEIGHT","LEVEL_THUMB_SIZE","LEVEL_STOP_SIZE","LEVEL_STOP_INSET","LEVEL_SLIDER_ROW_HEIGHT","LEVEL_ROW_INSET","LEVEL_TRACK_CLASS","LEVEL_FILL_CLASS","LEVEL_STOP_CLASS","LEVEL_STOP_REACHED_CLASS","LEVEL_THUMB_CLASS","LEVEL_CAPTION_CLASS","LEVEL_SEPARATOR_CLASS","levelStopPosition","index","count","fraction","percent","offset","levelFromOffset","offsetX","trackWidth","usable","Math","round","max","min"],"sourceRoot":"../../../src","sources":["level-picker/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO,MAAMA,kBAAkB,GAAG,EAAE;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG,EAAE;;AAElC;AACA,OAAO,MAAMC,eAAe,GAAG,CAAC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG,EAAE;;AAElC;AACA,OAAO,MAAMC,uBAAuB,GAAG,EAAE;;AAEzC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAG,CAAC;;AAEhC;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,iBAAiB,GAAG,8CAA8C;;AAE/E;AACA,OAAO,MAAMC,gBAAgB,GAAG,yCAAyC;;AAEzE;AACA,OAAO,MAAMC,gBAAgB,GAAG,8CAA8C;;AAE9E;AACA,OAAO,MAAMC,wBAAwB,GAAG,gDAAgD;;AAExF;AACA,OAAO,MAAMC,iBAAiB,GAAG,8CAA8C;;AAE/E;AACA,OAAO,MAAMC,mBAAmB,GAAG,+BAA+B;;AAElE;AACA,OAAO,MAAMC,qBAAqB,GAAG,gBAAgB;;AAErD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,KAAa,EACbC,KAAa,EACwB;EACrC,MAAMC,QAAQ,GAAGD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAGD,KAAK,IAAIC,KAAK,GAAG,CAAC,CAAC;EACrD,OAAO;IACLE,OAAO,EAAED,QAAQ,GAAG,GAAG;IACvBE,MAAM,EAAEf,gBAAgB,GAAGa,QAAQ,GAAG,CAAC,GAAGb;EAC5C,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASgB,eAAeA,CAACC,OAAe,EAAEC,UAAkB,EAAEN,KAAa,EAAU;EAC1F,IAAIA,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC;EACxB,MAAMO,MAAM,GAAGD,UAAU,GAAG,CAAC,GAAGlB,gBAAgB;EAChD,MAAMa,QAAQ,GAAGM,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAACF,OAAO,GAAGjB,gBAAgB,IAAImB,MAAM;EACxE,MAAMR,KAAK,GAAGS,IAAI,CAACC,KAAK,CAACR,QAAQ,IAAID,KAAK,GAAG,CAAC,CAAC,CAAC;EAChD,OAAOQ,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACG,GAAG,CAACX,KAAK,GAAG,CAAC,EAAED,KAAK,CAAC,CAAC;AAChD","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { LevelPicker } from './LevelPicker';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LevelPicker"],"sourceRoot":"../../../src","sources":["level-picker/index.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,eAAe","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { LevelPicker } from "./LevelPicker.web.js";
4
+ //# sourceMappingURL=index.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LevelPicker"],"sourceRoot":"../../../src","sources":["level-picker/index.web.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,sBAAmB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["level-picker/types.ts"],"mappings":"","ignoreList":[]}