@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.
- package/docs/level-picker.mdx +105 -0
- package/docs/media-flight.mdx +272 -0
- package/docs/migrating-the-media-gallery.mdx +103 -0
- package/docs/migrating-to-1.0.mdx +1 -1
- package/docs/slider.mdx +3 -1
- package/docs/zoomable-media-gallery.mdx +116 -0
- package/lib/commonjs/floating/index.js.map +1 -1
- package/lib/commonjs/image-aspect-ratio-cache/aspect-ratio-cache.js +1 -1
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +33 -25
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/level-picker/LevelPicker.js +349 -0
- package/lib/commonjs/level-picker/LevelPicker.js.map +1 -0
- package/lib/commonjs/level-picker/LevelPicker.web.js +346 -0
- package/lib/commonjs/level-picker/LevelPicker.web.js.map +1 -0
- package/lib/commonjs/level-picker/constants.js +137 -0
- package/lib/commonjs/level-picker/constants.js.map +1 -0
- package/lib/commonjs/level-picker/index.js +13 -0
- package/lib/commonjs/level-picker/index.js.map +1 -0
- package/lib/commonjs/level-picker/index.web.js +13 -0
- package/lib/commonjs/level-picker/index.web.js.map +1 -0
- package/lib/commonjs/level-picker/types.js +6 -0
- package/lib/commonjs/level-picker/types.js.map +1 -0
- package/lib/commonjs/media-flight/MediaFlightLayer.js +151 -0
- package/lib/commonjs/media-flight/MediaFlightLayer.js.map +1 -0
- package/lib/commonjs/media-flight/MediaSurface.js +188 -0
- package/lib/commonjs/media-flight/MediaSurface.js.map +1 -0
- package/lib/commonjs/media-flight/constants.js +39 -0
- package/lib/commonjs/media-flight/constants.js.map +1 -0
- package/lib/commonjs/media-flight/expo-video-module.js +148 -0
- package/lib/commonjs/media-flight/expo-video-module.js.map +1 -0
- package/lib/commonjs/media-flight/index.js +102 -0
- package/lib/commonjs/media-flight/index.js.map +1 -0
- package/lib/commonjs/media-flight/store.js +457 -0
- package/lib/commonjs/media-flight/store.js.map +1 -0
- package/lib/commonjs/media-flight/types.js +6 -0
- package/lib/commonjs/media-flight/types.js.map +1 -0
- package/lib/commonjs/media-flight/use-media-flight.js +41 -0
- package/lib/commonjs/media-flight/use-media-flight.js.map +1 -0
- package/lib/commonjs/tab-bar/TabBarBase.js +1 -1
- package/lib/commonjs/{zoomable-image-gallery/ZoomableImageGallery.js → zoomable-media-gallery/ZoomableMediaGallery.js} +185 -131
- package/lib/commonjs/zoomable-media-gallery/ZoomableMediaGallery.js.map +1 -0
- package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.js.map +1 -1
- package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/index.js +5 -5
- package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/index.js.map +1 -1
- package/lib/commonjs/zoomable-media-gallery/types.js +6 -0
- package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/types.js.map +1 -1
- package/lib/module/floating/index.js +5 -0
- package/lib/module/floating/index.js.map +1 -1
- package/lib/module/image-aspect-ratio-cache/aspect-ratio-cache.js +1 -1
- package/lib/module/index.js +3 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +3 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/level-picker/LevelPicker.js +343 -0
- package/lib/module/level-picker/LevelPicker.js.map +1 -0
- package/lib/module/level-picker/LevelPicker.web.js +340 -0
- package/lib/module/level-picker/LevelPicker.web.js.map +1 -0
- package/lib/module/level-picker/constants.js +131 -0
- package/lib/module/level-picker/constants.js.map +1 -0
- package/lib/module/level-picker/index.js +4 -0
- package/lib/module/level-picker/index.js.map +1 -0
- package/lib/module/level-picker/index.web.js +4 -0
- package/lib/module/level-picker/index.web.js.map +1 -0
- package/lib/module/level-picker/types.js +4 -0
- package/lib/module/level-picker/types.js.map +1 -0
- package/lib/module/media-flight/MediaFlightLayer.js +146 -0
- package/lib/module/media-flight/MediaFlightLayer.js.map +1 -0
- package/lib/module/media-flight/MediaSurface.js +180 -0
- package/lib/module/media-flight/MediaSurface.js.map +1 -0
- package/lib/module/media-flight/constants.js +35 -0
- package/lib/module/media-flight/constants.js.map +1 -0
- package/lib/module/media-flight/expo-video-module.js +142 -0
- package/lib/module/media-flight/expo-video-module.js.map +1 -0
- package/lib/module/media-flight/index.js +9 -0
- package/lib/module/media-flight/index.js.map +1 -0
- package/lib/module/media-flight/store.js +439 -0
- package/lib/module/media-flight/store.js.map +1 -0
- package/lib/module/media-flight/types.js +4 -0
- package/lib/module/media-flight/types.js.map +1 -0
- package/lib/module/media-flight/use-media-flight.js +36 -0
- package/lib/module/media-flight/use-media-flight.js.map +1 -0
- package/lib/module/tab-bar/TabBarBase.js +1 -1
- package/lib/module/{zoomable-image-gallery/ZoomableImageGallery.js → zoomable-media-gallery/ZoomableMediaGallery.js} +184 -130
- package/lib/module/zoomable-media-gallery/ZoomableMediaGallery.js.map +1 -0
- package/lib/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.js.map +1 -1
- package/lib/module/zoomable-media-gallery/index.js +5 -0
- package/lib/module/zoomable-media-gallery/index.js.map +1 -0
- package/lib/module/zoomable-media-gallery/types.js +4 -0
- package/lib/module/{zoomable-image-gallery → zoomable-media-gallery}/types.js.map +1 -1
- package/lib/typescript/commonjs/floating/index.d.ts +5 -0
- package/lib/typescript/commonjs/floating/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.web.d.ts +2 -0
- package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/level-picker/LevelPicker.d.ts +6 -0
- package/lib/typescript/commonjs/level-picker/LevelPicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/level-picker/LevelPicker.web.d.ts +6 -0
- package/lib/typescript/commonjs/level-picker/LevelPicker.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/level-picker/constants.d.ts +93 -0
- package/lib/typescript/commonjs/level-picker/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/level-picker/index.d.ts +3 -0
- package/lib/typescript/commonjs/level-picker/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/level-picker/index.web.d.ts +3 -0
- package/lib/typescript/commonjs/level-picker/index.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/level-picker/types.d.ts +63 -0
- package/lib/typescript/commonjs/level-picker/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/MediaFlightLayer.d.ts +11 -0
- package/lib/typescript/commonjs/media-flight/MediaFlightLayer.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts +106 -0
- package/lib/typescript/commonjs/media-flight/MediaSurface.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/constants.d.ts +18 -0
- package/lib/typescript/commonjs/media-flight/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/expo-video-module.d.ts +103 -0
- package/lib/typescript/commonjs/media-flight/expo-video-module.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/index.d.ts +9 -0
- package/lib/typescript/commonjs/media-flight/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/store.d.ts +132 -0
- package/lib/typescript/commonjs/media-flight/store.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/types.d.ts +195 -0
- package/lib/typescript/commonjs/media-flight/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/media-flight/use-media-flight.d.ts +4 -0
- package/lib/typescript/commonjs/media-flight/use-media-flight.d.ts.map +1 -0
- package/lib/typescript/commonjs/zoomable-media-gallery/ZoomableMediaGallery.d.ts +5 -0
- package/lib/typescript/commonjs/zoomable-media-gallery/ZoomableMediaGallery.d.ts.map +1 -0
- package/lib/typescript/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts.map +1 -1
- package/lib/typescript/commonjs/zoomable-media-gallery/index.d.ts +4 -0
- package/lib/typescript/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/zoomable-media-gallery/types.d.ts +90 -0
- package/lib/typescript/commonjs/zoomable-media-gallery/types.d.ts.map +1 -0
- package/lib/typescript/module/floating/index.d.ts +5 -0
- package/lib/typescript/module/floating/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/index.web.d.ts +2 -0
- package/lib/typescript/module/index.web.d.ts.map +1 -1
- package/lib/typescript/module/level-picker/LevelPicker.d.ts +6 -0
- package/lib/typescript/module/level-picker/LevelPicker.d.ts.map +1 -0
- package/lib/typescript/module/level-picker/LevelPicker.web.d.ts +6 -0
- package/lib/typescript/module/level-picker/LevelPicker.web.d.ts.map +1 -0
- package/lib/typescript/module/level-picker/constants.d.ts +93 -0
- package/lib/typescript/module/level-picker/constants.d.ts.map +1 -0
- package/lib/typescript/module/level-picker/index.d.ts +3 -0
- package/lib/typescript/module/level-picker/index.d.ts.map +1 -0
- package/lib/typescript/module/level-picker/index.web.d.ts +3 -0
- package/lib/typescript/module/level-picker/index.web.d.ts.map +1 -0
- package/lib/typescript/module/level-picker/types.d.ts +63 -0
- package/lib/typescript/module/level-picker/types.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/MediaFlightLayer.d.ts +11 -0
- package/lib/typescript/module/media-flight/MediaFlightLayer.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/MediaSurface.d.ts +106 -0
- package/lib/typescript/module/media-flight/MediaSurface.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/constants.d.ts +18 -0
- package/lib/typescript/module/media-flight/constants.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/expo-video-module.d.ts +103 -0
- package/lib/typescript/module/media-flight/expo-video-module.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/index.d.ts +9 -0
- package/lib/typescript/module/media-flight/index.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/store.d.ts +132 -0
- package/lib/typescript/module/media-flight/store.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/types.d.ts +195 -0
- package/lib/typescript/module/media-flight/types.d.ts.map +1 -0
- package/lib/typescript/module/media-flight/use-media-flight.d.ts +4 -0
- package/lib/typescript/module/media-flight/use-media-flight.d.ts.map +1 -0
- package/lib/typescript/module/zoomable-media-gallery/ZoomableMediaGallery.d.ts +5 -0
- package/lib/typescript/module/zoomable-media-gallery/ZoomableMediaGallery.d.ts.map +1 -0
- package/lib/typescript/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts.map +1 -1
- package/lib/typescript/module/zoomable-media-gallery/index.d.ts +4 -0
- package/lib/typescript/module/{zoomable-image-gallery → zoomable-media-gallery}/index.d.ts.map +1 -1
- package/lib/typescript/module/zoomable-media-gallery/types.d.ts +90 -0
- package/lib/typescript/module/zoomable-media-gallery/types.d.ts.map +1 -0
- package/package.json +61 -8
- package/src/floating/index.ts +5 -0
- package/src/image-aspect-ratio-cache/aspect-ratio-cache.ts +1 -1
- package/src/index.ts +4 -1
- package/src/index.web.ts +4 -1
- package/src/level-picker/LevelPicker.tsx +365 -0
- package/src/level-picker/LevelPicker.web.tsx +374 -0
- package/src/level-picker/constants.ts +131 -0
- package/src/level-picker/index.ts +2 -0
- package/src/level-picker/index.web.ts +2 -0
- package/src/level-picker/types.ts +63 -0
- package/src/media-flight/MediaFlightLayer.tsx +144 -0
- package/src/media-flight/MediaSurface.tsx +233 -0
- package/src/media-flight/constants.ts +32 -0
- package/src/media-flight/expo-video-module.ts +181 -0
- package/src/media-flight/index.ts +33 -0
- package/src/media-flight/store.ts +497 -0
- package/src/media-flight/types.ts +210 -0
- package/src/media-flight/use-media-flight.ts +42 -0
- package/src/tab-bar/TabBarBase.tsx +1 -1
- package/src/{zoomable-image-gallery/ZoomableImageGallery.tsx → zoomable-media-gallery/ZoomableMediaGallery.tsx} +192 -117
- package/src/zoomable-media-gallery/index.ts +11 -0
- package/src/zoomable-media-gallery/types.ts +100 -0
- package/docs/zoomable-image-gallery.mdx +0 -66
- package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js.map +0 -1
- package/lib/commonjs/zoomable-image-gallery/types.js +0 -2
- package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js.map +0 -1
- package/lib/module/zoomable-image-gallery/index.js +0 -5
- package/lib/module/zoomable-image-gallery/index.js.map +0 -1
- package/lib/module/zoomable-image-gallery/types.js +0 -2
- package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts +0 -5
- package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +0 -1
- package/lib/typescript/commonjs/zoomable-image-gallery/index.d.ts +0 -4
- package/lib/typescript/commonjs/zoomable-image-gallery/types.d.ts +0 -56
- package/lib/typescript/commonjs/zoomable-image-gallery/types.d.ts.map +0 -1
- package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts +0 -5
- package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +0 -1
- package/lib/typescript/module/zoomable-image-gallery/index.d.ts +0 -4
- package/lib/typescript/module/zoomable-image-gallery/types.d.ts +0 -56
- package/lib/typescript/module/zoomable-image-gallery/types.d.ts.map +0 -1
- package/src/zoomable-image-gallery/index.ts +0 -9
- package/src/zoomable-image-gallery/types.ts +0 -59
- /package/lib/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.js +0 -0
- /package/lib/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.js +0 -0
- /package/lib/typescript/commonjs/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts +0 -0
- /package/lib/typescript/module/{zoomable-image-gallery → zoomable-media-gallery}/constants.d.ts +0 -0
- /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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAA2B,OAAO;AAE/E,SAASC,qBAAqB,EAAEC,mBAAmB,EAAEC,aAAa,QAAQ,0BAAuB;AACjG,SAASC,EAAE,EAAEC,cAAc,EAAEC,YAAY,EAAEC,iBAAiB,QAAQ,uBAAoB;AACxF,SAASC,oBAAoB,QAAQ,oCAAiC;AACtE,SAASC,mBAAmB,QAAQ,mCAAgC;AACpE,SAASC,oCAAoC,IAAIC,gBAAgB,QAAQ,qBAAkB;AAC3F,SAASC,eAAe,QAAQ,gCAA6B;AAE7D,SAASC,QAAQ,QAAQ,uBAAoB;AAC7C,SACEC,mBAAmB,EACnBC,gBAAgB,EAChBC,eAAe,EACfC,qBAAqB,EACrBC,uBAAuB,EACvBC,gBAAgB,EAChBC,wBAAwB,EACxBC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,EACjBC,kBAAkB,EAClBC,eAAe,EACfC,iBAAiB,QACZ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,MAAM,GAAG;EACbC,kBAAkB,EAAE,GAAGhC,qBAAqB,IAAI;EAChDiC,wBAAwB,EAAE,gBAAgBhC,mBAAmB,CAACiC,IAAI,CAAC,IAAI,CAAC;AAC1E,CAAU;;AAEV;AACA,MAAMC,WAAW,GACf,gDAAgD,GAChD,4GAA4G;AAE9G,OAAO,SAASC,WAAWA,CAAC;EAC1BC,MAAM;EACNC,KAAK;EACLC,aAAa;EACbC,kBAAkB;EAClBC,QAAQ;EACRC,QAAQ;EACRC,YAAY,GAAG,SAAS;EACxBC,QAAQ;EACRC,eAAe,GAAG,KAAK;EACvBC,gBAAgB;EAChBC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC;AACgB,CAAC,EAAE;EACnB,MAAMC,KAAK,GAAGvC,QAAQ,CAAC,CAAC;EACxB,MAAM,CAACwC,UAAU,EAAEC,WAAW,CAAC,GAAG9C,oBAAoB,CAAU;IAC9D+B,KAAK,EAAEM,QAAQ;IACfU,YAAY,EAAET,eAAe;IAC7BU,QAAQ,EAAET;EACZ,CAAC,CAAC;EACF,MAAM;IAAEU,KAAK,EAAEC,WAAW;IAAEC,IAAI,EAAEC,YAAY;IAAEC,KAAK,EAAEC;EAAa,CAAC,GAAGrD,mBAAmB,CAAC,CAAC;EAC7F,MAAM;IAAEgD,KAAK,EAAEM,OAAO;IAAEJ,IAAI,EAAEK,UAAU;IAAEH,KAAK,EAAEI;EAAU,CAAC,GAAGxD,mBAAmB,CAAC,CAAC;EACpF,MAAM,CAACyD,QAAQ,EAAEC,WAAW,CAAC,GAAGnE,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM,CAACoE,aAAa,EAAEC,gBAAgB,CAAC,GAAGrE,QAAQ,CAAC,CAAC,CAAC;EACrD,MAAMsE,QAAQ,GAAGvE,MAAM,CAAwB,IAAI,CAAC;;EAEpD;EACA,MAAMwE,MAAM,GAAGb,WAAW,IAAIK,OAAO,IAAIG,QAAQ;;EAEjD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMM,cAAc,GAAG1E,WAAW,CAAE2E,IAA2B,IAAK;IAClE,IAAIA,IAAI,KAAK,IAAI,EAAE;IACnB,MAAMC,IAAI,GAAGA,CAAA,KAAY;MACvB,MAAMC,IAAI,GAAGF,IAAI,CAACG,YAAY;MAC9BP,gBAAgB,CAAEQ,IAAI,IAAMC,IAAI,CAACC,GAAG,CAACF,IAAI,GAAGF,IAAI,CAAC,GAAG,GAAG,GAAGA,IAAI,GAAGE,IAAK,CAAC;IACzE,CAAC;IACDH,IAAI,CAAC,CAAC;IACN,IAAI,OAAOM,cAAc,KAAK,WAAW,EAAE;IAC3C,MAAMC,QAAQ,GAAG,IAAID,cAAc,CAACN,IAAI,CAAC;IACzCO,QAAQ,CAACC,OAAO,CAACT,IAAI,CAAC;IACtB,OAAO,MAAMQ,QAAQ,CAACE,UAAU,CAAC,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,aAAa,GAAGtF,WAAW,CAC9BuF,KAAmC,IAAK;IACvC,MAAMC,IAAI,GAAGhB,QAAQ,CAACiB,OAAO,EAAEC,qBAAqB,CAAC,CAAC;IACtD,IAAIF,IAAI,KAAKG,SAAS,EAAE;IACxB,MAAMd,IAAI,GAAGjD,eAAe,CAAC2D,KAAK,CAACK,OAAO,GAAGJ,IAAI,CAACK,IAAI,EAAEL,IAAI,CAACM,KAAK,EAAEtD,MAAM,CAACuD,MAAM,CAAC;IAClF,IAAIlB,IAAI,KAAKpC,KAAK,EAAEC,aAAa,CAACmC,IAAI,CAAC;EACzC,CAAC,EACD,CAACrC,MAAM,CAACuD,MAAM,EAAErD,aAAa,EAAED,KAAK,CACtC,CAAC;EAED,MAAMuD,IAAI,GAAGhG,WAAW,CACrBiG,EAAU,IAAK;IACd,MAAMpB,IAAI,GAAGG,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAElB,IAAI,CAACmB,GAAG,CAAC3D,MAAM,CAACuD,MAAM,GAAG,CAAC,EAAEE,EAAE,CAAC,CAAC;IACzD,IAAIpB,IAAI,KAAKpC,KAAK,EAAEC,aAAa,CAACmC,IAAI,CAAC;EACzC,CAAC,EACD,CAACrC,MAAM,CAACuD,MAAM,EAAErD,aAAa,EAAED,KAAK,CACtC,CAAC;EAED,MAAM2D,SAAS,GAAGpG,WAAW,CAC1BuF,KAA0C,IAAK;IAC9C,QAAQA,KAAK,CAACc,GAAG;MACf,KAAK,YAAY;MACjB,KAAK,SAAS;QACZd,KAAK,CAACe,cAAc,CAAC,CAAC;QACtBN,IAAI,CAACvD,KAAK,GAAG,CAAC,CAAC;QACf;MACF,KAAK,WAAW;MAChB,KAAK,WAAW;QACd8C,KAAK,CAACe,cAAc,CAAC,CAAC;QACtBN,IAAI,CAACvD,KAAK,GAAG,CAAC,CAAC;QACf;MACF,KAAK,MAAM;QACT8C,KAAK,CAACe,cAAc,CAAC,CAAC;QACtBN,IAAI,CAAC,CAAC,CAAC;QACP;MACF,KAAK,KAAK;QACRT,KAAK,CAACe,cAAc,CAAC,CAAC;QACtBN,IAAI,CAACxD,MAAM,CAACuD,MAAM,GAAG,CAAC,CAAC;QACvB;MACF;QACE;IACJ;EACF,CAAC,EACD,CAACvD,MAAM,CAACuD,MAAM,EAAEC,IAAI,EAAEvD,KAAK,CAC7B,CAAC;;EAED;EACA,MAAM8D,UAAU,GAAIC,KAAa,IAAa;IAC5C,MAAM;MAAEC,OAAO;MAAEC;IAAO,CAAC,GAAG7E,iBAAiB,CAAC2E,KAAK,EAAEhE,MAAM,CAACuD,MAAM,CAAC;IACnE,OAAO,QAAQU,OAAO,OAAOC,MAAM,KAAK;EAC1C,CAAC;EAED,MAAMC,WAAW,GAAG/D,QAAQ,KAAK+C,SAAS,IAAI9C,QAAQ,KAAK8C,SAAS;EACpE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMiB,cAAc,GAAGhD,WAAW,IAAIQ,QAAQ;EAC9C,MAAMyC,YAAyB,GAAG;IAChC,GAAG3E,MAAM;IACT4E,kBAAkB,EAAE,SAAS;IAC7BC,OAAO,EAAEtC,MAAM,GAAG,CAAC,GAAG,CAAC;IACvBuC,aAAa,EAAEJ,cAAc,GAAG,MAAM,GAAG;EAC3C,CAAC;EACD,MAAMK,WAAW,GAAIC,IAAY,IAC/B7D,MAAM,KAAKsC,SAAS,GAAGA,SAAS,GAAG,GAAGtC,MAAM,IAAI6D,IAAI,EAAE;EAExD,oBACEjF,KAAA;IACEkB,SAAS,EAAE7C,EAAE,CAAC,sBAAsB,EAAE6C,SAAS,CAAE;IACjDC,KAAK,EAAEtC,eAAe,CAACsC,KAAK,CAAE;IAC9B,eAAaC,MAAO;IAAAH,QAAA,gBAEpBnB,IAAA;MACEoF,KAAK,EAAE5D,UAAW;MAClB,eAAaA,UAAW;MACxBJ,SAAS,EAAC,iBAAiB;MAC3BC,KAAK,EAAE;QACL,GAAGlB,MAAM;QACT4E,kBAAkB,EAAE,qBAAqB;QACzCM,SAAS,EAAE7D,UAAU,GAAG,CAAC,GAAGnC,uBAAuB;QACnD2F,OAAO,EAAExD,UAAU,GAAG,CAAC,GAAG;MAC5B,CAAE;MACF,eAAa0D,WAAW,CAAC,QAAQ,CAAE;MAAA/D,QAAA,eACnCnB,IAAA;QACEoB,SAAS,EAAC,mBAAmB;QAC7BC,KAAK,EAAE;UACLiE,MAAM,EAAEjG,uBAAuB;UAC/BkG,WAAW,EAAEpG,eAAe;UAC5BqG,YAAY,EAAErG;QAChB,CAAE;QAAAgC,QAAA,eACFjB,KAAA;UACEuF,GAAG,EAAEhD,QAAS;UACdiD,IAAI,EAAC,QAAQ;UACbC,QAAQ,EAAEnE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAE;UAC9B,cAAYZ,kBAAmB;UAC/B,iBAAe,CAAE;UACjB,iBAAeH,MAAM,CAACuD,MAAM,GAAG,CAAE;UACjC,iBAAetD,KAAM;UACrB,kBAAgBD,MAAM,CAACC,KAAK,CAAE;UAC9BkF,cAAc,EAAE7D,YAAa;UAC7B8D,cAAc,EAAEA,CAAA,KAAM;YACpB,IAAI,CAACxD,QAAQ,EAAEJ,YAAY,CAAC,CAAC;UAC/B,CAAE;UACF6D,aAAa,EAAGtC,KAAK,IAAK;YACxBA,KAAK,CAACuC,aAAa,CAACC,iBAAiB,CAACxC,KAAK,CAACyC,SAAS,CAAC;YACtD3D,WAAW,CAAC,IAAI,CAAC;YACjBP,YAAY,CAAC,CAAC;YACdwB,aAAa,CAACC,KAAK,CAAC;UACtB,CAAE;UACF0C,aAAa,EAAG1C,KAAK,IAAK;YACxB,IAAInB,QAAQ,EAAEkB,aAAa,CAACC,KAAK,CAAC;UACpC,CAAE;UACF2C,WAAW,EAAG3C,KAAK,IAAK;YACtB,IAAIA,KAAK,CAACuC,aAAa,CAACK,iBAAiB,CAAC5C,KAAK,CAACyC,SAAS,CAAC,EAAE;cAC1DzC,KAAK,CAACuC,aAAa,CAACM,qBAAqB,CAAC7C,KAAK,CAACyC,SAAS,CAAC;YAC5D;YACA3D,WAAW,CAAC,KAAK,CAAC;UACpB,CAAE;UACFgE,eAAe,EAAEA,CAAA,KAAMhE,WAAW,CAAC,KAAK,CAAE;UAC1CiE,OAAO,EAAEpE,UAAW;UACpBqE,MAAM,EAAEpE,SAAU;UAClBiC,SAAS,EAAEA,SAAU;UACrBjD,SAAS,EAAE7C,EAAE,CAACoB,iBAAiB,EAAEY,WAAW,CAAE;UAC9Cc,KAAK,EAAE;YAAEiE,MAAM,EAAE1F;UAAmB,CAAE;UACtC,eAAasF,WAAW,CAAC,OAAO,CAAE;UAAA/D,QAAA,gBAClCnB,IAAA;YACE,eAAY,MAAM;YAClBoB,SAAS,EAAElC,gBAAiB;YAC5BmC,KAAK,EAAE;cAAEoF,GAAG,EAAE,CAAC;cAAEC,MAAM,EAAE,CAAC;cAAE3C,KAAK,EAAES,UAAU,CAAC9D,KAAK;YAAE;UAAE,CACxD,CAAC,EACDD,MAAM,CAACkG,GAAG,CAAC,CAACC,KAAK,EAAEnC,KAAK,kBACvBzE,IAAA;YAEE,eAAY,MAAM;YAClBoB,SAAS,EAAEqD,KAAK,IAAI/D,KAAK,GAAGnB,wBAAwB,GAAGD,gBAAiB;YACxE+B,KAAK,EAAE;cACL0C,KAAK,EAAEvE,eAAe;cACtB8F,MAAM,EAAE9F,eAAe;cACvBiH,GAAG,EAAE,KAAK;cACV3C,IAAI,EAAEU,UAAU,CAACC,KAAK,CAAC;cACvBoC,SAAS,EAAE;YACb;UAAE,GATGD,KAUN,CACF,CAAC,eACF5G,IAAA;YACE,eAAY,MAAM;YAClBoB,SAAS,EAAE3B,iBAAkB;YAC7B4B,KAAK,EAAE;cACL0C,KAAK,EAAErE,gBAAgB;cACvB4F,MAAM,EAAE5F,gBAAgB;cACxB+G,GAAG,EAAE,KAAK;cACV3C,IAAI,EAAEU,UAAU,CAAC9D,KAAK,CAAC;cACvBmG,SAAS,EAAE;YACb,CAAE;YACF,eAAa3B,WAAW,CAAC,OAAO;UAAE,CACnC,CAAC;QAAA,CACC;MAAC,CACH;IAAC,CACH,CAAC,eAMNhF,KAAA;MAAKkB,SAAS,EAAC,UAAU;MAAAD,QAAA,gBACvBnB,IAAA,CAACvB,YAAY;QACXiH,IAAI,EAAC,UAAU;QACf1E,QAAQ,EAAEQ,UAAW;QACrBsF,QAAQ,EAAE,KAAM;QAChBC,KAAK,EAAEhG,YAAa;QACpBiG,QAAQ,eACNhH,IAAA,CAACxB,cAAc;UAAA2C,QAAA,eACbnB,IAAA;YACEoB,SAAS,EAAC,kCAAkC;YAC5CC,KAAK,EAAE;cACL,GAAGlB,MAAM;cACT4E,kBAAkB,EAAE,WAAW;cAC/B8B,SAAS,EAAErF,UAAU,GAAG,eAAe,GAAG;YAC5C,CAAE;YAAAL,QAAA,eACFnB,IAAA,CAAClB,gBAAgB;cACfiF,KAAK,EAAEzF,aAAc;cACrBgH,MAAM,EAAEhH,aAAc;cACtB2I,IAAI,EAAE1F,KAAK,CAAC2F,MAAM,CAACC;YAAc,CAClC;UAAC,CACE;QAAC,CACO,CACjB;QACDC,OAAO,EAAEA,CAAA,KAAM3F,WAAW,CAAC,CAACD,UAAU,CAAE;QACxCJ,SAAS,EAAE1C,iBAAkB;QAC7B2C,KAAK,EAAEyD,YAAa;QACpBxD,MAAM,EAAE4D,WAAW,CAAC,SAAS;MAAE,CAChC,CAAC,EACDN,WAAW,gBACV1E,KAAA;QACE,eAAY,MAAM;QAClBkB,SAAS,EAAC,iFAAiF;QAC3FC,KAAK,EAAE;UACL,GAAGlB,MAAM;UACT4E,kBAAkB,EAAE,SAAS;UAC7BC,OAAO,EAAEtC,MAAM,GAAG,CAAC,GAAG,CAAC;UACvB6C,WAAW,EAAEpG,eAAe;UAC5BqG,YAAY,EAAErG;QAChB,CAAE;QACF,eAAa+F,WAAW,CAAC,UAAU,CAAE;QAAA/D,QAAA,gBACrCnB,IAAA;UAAMoB,SAAS,EAAEnC,mBAAoB;UAAAkC,QAAA,EAAEN;QAAQ,CAAO,CAAC,eACvDb,IAAA;UAAMoB,SAAS,EAAEnC,mBAAoB;UAAAkC,QAAA,EAAEL;QAAQ,CAAO,CAAC;MAAA,CACpD,CAAC,GACJ,IAAI;IAAA,CACL,CAAC,eAINd,IAAA;MACEoF,KAAK,EAAE,CAAC5D,UAAW;MACnB,eAAa,CAACA,UAAW;MACzBJ,SAAS,EAAC,iBAAiB;MAC3BC,KAAK,EAAE;QACL,GAAGlB,MAAM;QACT4E,kBAAkB,EAAE,qBAAqB;QACzCM,SAAS,EAAE7D,UAAU,GAAIe,aAAa,KAAK,CAAC,GAAGqB,SAAS,GAAGrB,aAAa,GAAI,CAAC;QAC7EyC,OAAO,EAAExD,UAAU,GAAG,CAAC,GAAG;MAC5B,CAAE;MACF,eAAa0D,WAAW,CAAC,SAAS,CAAE;MAAA/D,QAAA,eACpCjB,KAAA;QAAKuF,GAAG,EAAE9C,cAAe;QAAAxB,QAAA,gBACvBnB,IAAA;UACEoB,SAAS,EAAEhC,qBAAsB;UACjCiC,KAAK,EAAE;YACLgG,UAAU,EAAElI,eAAe;YAC3BmI,WAAW,EAAEnI,eAAe;YAC5BoI,YAAY,EAAE;UAChB;QAAE,CACH,CAAC,EACDpG,QAAQ;MAAA,CACN;IAAC,CACH,CAAC;EAAA,CACH,CAAC;AAEV;AAEAX,WAAW,CAACgH,WAAW,GAAG,aAAa","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 @@
|
|
|
1
|
+
{"version":3,"names":["LevelPicker"],"sourceRoot":"../../../src","sources":["level-picker/index.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,eAAe","ignoreList":[]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["level-picker/types.ts"],"mappings":"","ignoreList":[]}
|