repoweaver
Version:
A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies
1 lines • 61.3 kB
JSON
{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nimport * as React from 'react';\nimport Animated from \"react-native-web/dist/exports/Animated\";\nimport Dimensions from \"react-native-web/dist/exports/Dimensions\";\nimport Easing from \"react-native-web/dist/exports/Easing\";\nimport I18nManager from \"react-native-web/dist/exports/I18nManager\";\nimport Keyboard from \"react-native-web/dist/exports/Keyboard\";\nimport Platform from \"react-native-web/dist/exports/Platform\";\nimport ScrollView from \"react-native-web/dist/exports/ScrollView\";\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport View from \"react-native-web/dist/exports/View\";\nimport Pressable from \"react-native-web/dist/exports/Pressable\";\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport MenuItem from \"./MenuItem\";\nimport { useInternalTheme } from \"../../core/theming\";\nimport { ElevationLevels } from \"../../types\";\nimport { addEventListener } from \"../../utils/addEventListener\";\nimport { BackHandler } from \"../../utils/BackHandler/BackHandler\";\nimport Portal from \"../Portal/Portal\";\nimport Surface from \"../Surface\";\nvar SCREEN_INDENT = 8;\nvar ANIMATION_DURATION = 250;\nvar EASING = Easing.bezier(0.4, 0, 0.2, 1);\nvar WINDOW_LAYOUT = Dimensions.get('window');\nvar DEFAULT_ELEVATION = 2;\nexport var ELEVATION_LEVELS_MAP = Object.values(ElevationLevels);\nvar DEFAULT_MODE = 'elevated';\nvar focusFirstDOMNode = function focusFirstDOMNode(el) {\n if (el && Platform.OS === 'web') {\n if (el instanceof HTMLElement) {\n var _el$querySelector;\n (_el$querySelector = el.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')) === null || _el$querySelector === void 0 || _el$querySelector.focus();\n }\n }\n};\nvar isCoordinate = function isCoordinate(anchor) {\n return !React.isValidElement(anchor) && typeof (anchor === null || anchor === void 0 ? void 0 : anchor.x) === 'number' && typeof (anchor === null || anchor === void 0 ? void 0 : anchor.y) === 'number';\n};\nvar isBrowser = function isBrowser() {\n return Platform.OS === 'web' && 'document' in global;\n};\nvar Menu = function Menu(_ref) {\n var visible = _ref.visible,\n statusBarHeight = _ref.statusBarHeight,\n _ref$overlayAccessibi = _ref.overlayAccessibilityLabel,\n overlayAccessibilityLabel = _ref$overlayAccessibi === void 0 ? 'Close menu' : _ref$overlayAccessibi,\n _ref$testID = _ref.testID,\n testID = _ref$testID === void 0 ? 'menu' : _ref$testID,\n anchor = _ref.anchor,\n onDismiss = _ref.onDismiss,\n anchorPosition = _ref.anchorPosition,\n contentStyle = _ref.contentStyle,\n style = _ref.style,\n _ref$elevation = _ref.elevation,\n elevation = _ref$elevation === void 0 ? DEFAULT_ELEVATION : _ref$elevation,\n _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? DEFAULT_MODE : _ref$mode,\n children = _ref.children,\n themeOverrides = _ref.theme,\n keyboardShouldPersistTaps = _ref.keyboardShouldPersistTaps;\n var theme = useInternalTheme(themeOverrides);\n var insets = useSafeAreaInsets();\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n rendered = _React$useState2[0],\n setRendered = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n left = _React$useState4[0],\n setLeft = _React$useState4[1];\n var _React$useState5 = React.useState(0),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n top = _React$useState6[0],\n setTop = _React$useState6[1];\n var _React$useState7 = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n menuLayout = _React$useState8[0],\n setMenuLayout = _React$useState8[1];\n var _React$useState9 = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState0 = _slicedToArray(_React$useState9, 2),\n anchorLayout = _React$useState0[0],\n setAnchorLayout = _React$useState0[1];\n var _React$useState1 = React.useState({\n width: WINDOW_LAYOUT.width,\n height: WINDOW_LAYOUT.height\n }),\n _React$useState10 = _slicedToArray(_React$useState1, 2),\n windowLayout = _React$useState10[0],\n setWindowLayout = _React$useState10[1];\n var opacityAnimationRef = React.useRef(new Animated.Value(0));\n var scaleAnimationRef = React.useRef(new Animated.ValueXY({\n x: 0,\n y: 0\n }));\n var keyboardHeightRef = React.useRef(0);\n var prevVisible = React.useRef(null);\n var anchorRef = React.useRef(null);\n var menuRef = React.useRef(null);\n var prevRendered = React.useRef(false);\n var keyboardDidShow = React.useCallback(function (e) {\n var keyboardHeight = e.endCoordinates.height;\n keyboardHeightRef.current = keyboardHeight;\n }, []);\n var keyboardDidHide = React.useCallback(function () {\n keyboardHeightRef.current = 0;\n }, []);\n var keyboardDidShowListenerRef = React.useRef(undefined);\n var keyboardDidHideListenerRef = React.useRef(undefined);\n var backHandlerSubscriptionRef = React.useRef(undefined);\n var dimensionsSubscriptionRef = React.useRef(undefined);\n var handleDismiss = React.useCallback(function () {\n if (visible) {\n onDismiss === null || onDismiss === void 0 || onDismiss();\n }\n }, [onDismiss, visible]);\n var handleKeypress = React.useCallback(function (e) {\n if (e.key === 'Escape') {\n onDismiss === null || onDismiss === void 0 || onDismiss();\n }\n }, [onDismiss]);\n var removeListeners = React.useCallback(function () {\n var _backHandlerSubscript, _dimensionsSubscripti;\n (_backHandlerSubscript = backHandlerSubscriptionRef.current) === null || _backHandlerSubscript === void 0 || _backHandlerSubscript.remove();\n (_dimensionsSubscripti = dimensionsSubscriptionRef.current) === null || _dimensionsSubscripti === void 0 || _dimensionsSubscripti.remove();\n isBrowser() && document.removeEventListener('keyup', handleKeypress);\n }, [handleKeypress]);\n var attachListeners = React.useCallback(function () {\n backHandlerSubscriptionRef.current = addEventListener(BackHandler, 'hardwareBackPress', handleDismiss);\n dimensionsSubscriptionRef.current = addEventListener(Dimensions, 'change', handleDismiss);\n Platform.OS === 'web' && document.addEventListener('keyup', handleKeypress);\n }, [handleDismiss, handleKeypress]);\n var measureMenuLayout = function measureMenuLayout() {\n return new Promise(function (resolve) {\n if (menuRef.current) {\n menuRef.current.measureInWindow(function (x, y, width, height) {\n resolve({\n x: x,\n y: y,\n width: width,\n height: height\n });\n });\n }\n });\n };\n var measureAnchorLayout = React.useCallback(function () {\n return new Promise(function (resolve) {\n if (isCoordinate(anchor)) {\n resolve({\n x: anchor.x,\n y: anchor.y,\n width: 0,\n height: 0\n });\n return;\n }\n if (anchorRef.current) {\n anchorRef.current.measureInWindow(function (x, y, width, height) {\n resolve({\n x: x,\n y: y,\n width: width,\n height: height\n });\n });\n }\n });\n }, [anchor]);\n var show = React.useCallback(_asyncToGenerator(function* () {\n var windowLayoutResult = Dimensions.get('window');\n var _yield$Promise$all = yield Promise.all([measureMenuLayout(), measureAnchorLayout()]),\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2),\n menuLayoutResult = _yield$Promise$all2[0],\n anchorLayoutResult = _yield$Promise$all2[1];\n if (!windowLayoutResult.width || !windowLayoutResult.height || !menuLayoutResult.width || !menuLayoutResult.height || !anchorLayoutResult.width && !isCoordinate(anchor) || !anchorLayoutResult.height && !isCoordinate(anchor)) {\n requestAnimationFrame(show);\n return;\n }\n setLeft(anchorLayoutResult.x);\n setTop(anchorLayoutResult.y);\n setAnchorLayout({\n height: anchorLayoutResult.height,\n width: anchorLayoutResult.width\n });\n setMenuLayout({\n height: menuLayoutResult.height,\n width: menuLayoutResult.width\n });\n setWindowLayout({\n height: windowLayoutResult.height - keyboardHeightRef.current,\n width: windowLayoutResult.width\n });\n attachListeners();\n var animation = theme.animation;\n Animated.parallel([Animated.timing(scaleAnimationRef.current, {\n toValue: {\n x: menuLayoutResult.width,\n y: menuLayoutResult.height\n },\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true\n }), Animated.timing(opacityAnimationRef.current, {\n toValue: 1,\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true\n })]).start(function (_ref3) {\n var finished = _ref3.finished;\n if (finished) {\n focusFirstDOMNode(menuRef.current);\n prevRendered.current = true;\n }\n });\n }), [anchor, attachListeners, measureAnchorLayout, theme]);\n var hide = React.useCallback(function () {\n removeListeners();\n var animation = theme.animation;\n Animated.timing(opacityAnimationRef.current, {\n toValue: 0,\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true\n }).start(function (_ref4) {\n var finished = _ref4.finished;\n if (finished) {\n setMenuLayout({\n width: 0,\n height: 0\n });\n setRendered(false);\n prevRendered.current = false;\n focusFirstDOMNode(anchorRef.current);\n }\n });\n }, [removeListeners, theme]);\n var updateVisibility = React.useCallback(function () {\n var _ref5 = _asyncToGenerator(function* (display) {\n yield Promise.resolve().then(function () {\n if (display && !prevRendered.current) {\n show();\n return;\n }\n if (!display && prevRendered.current) {\n hide();\n }\n return;\n });\n });\n return function (_x) {\n return _ref5.apply(this, arguments);\n };\n }(), [hide, show]);\n React.useEffect(function () {\n var opacityAnimation = opacityAnimationRef.current;\n var scaleAnimation = scaleAnimationRef.current;\n keyboardDidShowListenerRef.current = Keyboard.addListener('keyboardDidShow', keyboardDidShow);\n keyboardDidHideListenerRef.current = Keyboard.addListener('keyboardDidHide', keyboardDidHide);\n return function () {\n var _keyboardDidShowListe, _keyboardDidHideListe;\n removeListeners();\n (_keyboardDidShowListe = keyboardDidShowListenerRef.current) === null || _keyboardDidShowListe === void 0 || _keyboardDidShowListe.remove();\n (_keyboardDidHideListe = keyboardDidHideListenerRef.current) === null || _keyboardDidHideListe === void 0 || _keyboardDidHideListe.remove();\n scaleAnimation.removeAllListeners();\n opacityAnimation === null || opacityAnimation === void 0 || opacityAnimation.removeAllListeners();\n };\n }, [removeListeners, keyboardDidHide, keyboardDidShow]);\n React.useEffect(function () {\n if (prevVisible.current !== visible) {\n prevVisible.current = visible;\n if (visible !== rendered) {\n setRendered(visible);\n }\n }\n }, [visible, rendered]);\n React.useEffect(function () {\n updateVisibility(rendered);\n }, [rendered, updateVisibility]);\n var additionalVerticalValue = Platform.select({\n android: statusBarHeight != null ? statusBarHeight : insets.top,\n default: 0\n });\n var positionTransforms = [];\n var leftTransformation = left;\n var topTransformation = !isCoordinate(anchorRef.current) && anchorPosition === 'bottom' ? top + anchorLayout.height : top;\n if (left <= windowLayout.width - menuLayout.width - SCREEN_INDENT) {\n positionTransforms.push({\n translateX: scaleAnimationRef.current.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [-(menuLayout.width / 2), 0]\n })\n });\n if (leftTransformation < SCREEN_INDENT) {\n leftTransformation = SCREEN_INDENT;\n }\n } else {\n positionTransforms.push({\n translateX: scaleAnimationRef.current.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [menuLayout.width / 2, 0]\n })\n });\n leftTransformation += anchorLayout.width - menuLayout.width;\n var right = leftTransformation + menuLayout.width;\n if (right > windowLayout.width - SCREEN_INDENT) {\n leftTransformation = windowLayout.width - SCREEN_INDENT - menuLayout.width;\n }\n }\n var scrollableMenuHeight = 0;\n if (topTransformation >= windowLayout.height - menuLayout.height - SCREEN_INDENT - additionalVerticalValue && topTransformation <= windowLayout.height - topTransformation) {\n scrollableMenuHeight = windowLayout.height - topTransformation - SCREEN_INDENT - additionalVerticalValue;\n } else if (topTransformation >= windowLayout.height - menuLayout.height - SCREEN_INDENT - additionalVerticalValue && topTransformation >= windowLayout.height - top && topTransformation <= menuLayout.height - anchorLayout.height + SCREEN_INDENT - additionalVerticalValue) {\n scrollableMenuHeight = topTransformation + anchorLayout.height - SCREEN_INDENT + additionalVerticalValue;\n }\n scrollableMenuHeight = scrollableMenuHeight > windowLayout.height - 2 * SCREEN_INDENT ? windowLayout.height - 2 * SCREEN_INDENT : scrollableMenuHeight;\n if (topTransformation <= windowLayout.height - menuLayout.height - SCREEN_INDENT - additionalVerticalValue || topTransformation >= windowLayout.height - menuLayout.height - SCREEN_INDENT - additionalVerticalValue && topTransformation <= windowLayout.height - topTransformation) {\n positionTransforms.push({\n translateY: scaleAnimationRef.current.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [-((scrollableMenuHeight || menuLayout.height) / 2), 0]\n })\n });\n if (topTransformation < SCREEN_INDENT) {\n topTransformation = SCREEN_INDENT;\n }\n } else {\n positionTransforms.push({\n translateY: scaleAnimationRef.current.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [(scrollableMenuHeight || menuLayout.height) / 2, 0]\n })\n });\n topTransformation += anchorLayout.height - (scrollableMenuHeight || menuLayout.height);\n var bottom = topTransformation + (scrollableMenuHeight || menuLayout.height) + additionalVerticalValue;\n if (bottom > windowLayout.height - SCREEN_INDENT) {\n topTransformation = scrollableMenuHeight === windowLayout.height - 2 * SCREEN_INDENT ? -SCREEN_INDENT * 2 : windowLayout.height - menuLayout.height - SCREEN_INDENT - additionalVerticalValue;\n }\n }\n var shadowMenuContainerStyle = _objectSpread(_objectSpread({\n opacity: opacityAnimationRef.current,\n transform: [{\n scaleX: scaleAnimationRef.current.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [0, 1]\n })\n }, {\n scaleY: scaleAnimationRef.current.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [0, 1]\n })\n }],\n borderRadius: theme.roundness\n }, !theme.isV3 && {\n elevation: 8\n }), scrollableMenuHeight ? {\n height: scrollableMenuHeight\n } : {});\n var positionStyle = _objectSpread({\n top: isCoordinate(anchor) ? topTransformation : topTransformation + additionalVerticalValue\n }, I18nManager.getConstants().isRTL ? {\n right: leftTransformation\n } : {\n left: leftTransformation\n });\n var pointerEvents = visible ? 'box-none' : 'none';\n return React.createElement(View, {\n ref: function ref(_ref6) {\n anchorRef.current = _ref6;\n },\n collapsable: false\n }, isCoordinate(anchor) ? null : anchor, rendered ? React.createElement(Portal, null, React.createElement(Pressable, {\n accessibilityLabel: overlayAccessibilityLabel,\n accessibilityRole: \"button\",\n onPress: onDismiss,\n style: styles.pressableOverlay\n }), React.createElement(View, {\n ref: function ref(_ref7) {\n menuRef.current = _ref7;\n },\n collapsable: false,\n accessibilityViewIsModal: visible,\n style: [styles.wrapper, positionStyle, style],\n pointerEvents: pointerEvents,\n onAccessibilityEscape: onDismiss,\n testID: `${testID}-view`\n }, React.createElement(Animated.View, {\n pointerEvents: pointerEvents,\n style: {\n transform: positionTransforms\n }\n }, React.createElement(Surface, _extends({\n mode: mode,\n pointerEvents: pointerEvents,\n style: [styles.shadowMenuContainer, shadowMenuContainerStyle, theme.isV3 && {\n backgroundColor: theme.colors.elevation[ELEVATION_LEVELS_MAP[elevation]]\n }, contentStyle]\n }, theme.isV3 && {\n elevation: elevation\n }, {\n testID: `${testID}-surface`,\n theme: theme,\n container: true\n }), scrollableMenuHeight && React.createElement(ScrollView, {\n keyboardShouldPersistTaps: keyboardShouldPersistTaps\n }, children) || React.createElement(React.Fragment, null, children))))) : null);\n};\nMenu.Item = MenuItem;\nvar styles = StyleSheet.create({\n wrapper: {\n position: 'absolute'\n },\n shadowMenuContainer: {\n opacity: 0,\n paddingVertical: 8\n },\n pressableOverlay: _objectSpread(_objectSpread(_objectSpread({}, Platform.select({\n web: {\n cursor: 'auto'\n }\n })), StyleSheet.absoluteFillObject), {}, {\n width: '100%'\n })\n});\nexport default Menu;","map":{"version":3,"names":["React","Animated","Dimensions","Easing","I18nManager","Keyboard","Platform","ScrollView","StyleSheet","View","Pressable","useSafeAreaInsets","MenuItem","useInternalTheme","ElevationLevels","addEventListener","BackHandler","Portal","Surface","SCREEN_INDENT","ANIMATION_DURATION","EASING","bezier","WINDOW_LAYOUT","get","DEFAULT_ELEVATION","ELEVATION_LEVELS_MAP","Object","values","DEFAULT_MODE","focusFirstDOMNode","el","OS","HTMLElement","_el$querySelector","querySelector","focus","isCoordinate","anchor","isValidElement","x","y","isBrowser","global","Menu","_ref","visible","statusBarHeight","_ref$overlayAccessibi","overlayAccessibilityLabel","_ref$testID","testID","onDismiss","anchorPosition","contentStyle","style","_ref$elevation","elevation","_ref$mode","mode","children","themeOverrides","theme","keyboardShouldPersistTaps","insets","_React$useState","useState","_React$useState2","_slicedToArray","rendered","setRendered","_React$useState3","_React$useState4","left","setLeft","_React$useState5","_React$useState6","top","setTop","_React$useState7","width","height","_React$useState8","menuLayout","setMenuLayout","_React$useState9","_React$useState0","anchorLayout","setAnchorLayout","_React$useState1","_React$useState10","windowLayout","setWindowLayout","opacityAnimationRef","useRef","Value","scaleAnimationRef","ValueXY","keyboardHeightRef","prevVisible","anchorRef","menuRef","prevRendered","keyboardDidShow","useCallback","e","keyboardHeight","endCoordinates","current","keyboardDidHide","keyboardDidShowListenerRef","undefined","keyboardDidHideListenerRef","backHandlerSubscriptionRef","dimensionsSubscriptionRef","handleDismiss","handleKeypress","key","removeListeners","_backHandlerSubscript","_dimensionsSubscripti","remove","document","removeEventListener","attachListeners","measureMenuLayout","Promise","resolve","measureInWindow","measureAnchorLayout","show","_asyncToGenerator","windowLayoutResult","_yield$Promise$all","all","_yield$Promise$all2","menuLayoutResult","anchorLayoutResult","requestAnimationFrame","animation","parallel","timing","toValue","duration","scale","easing","useNativeDriver","start","_ref3","finished","hide","_ref4","updateVisibility","_ref5","display","then","_x","apply","arguments","useEffect","opacityAnimation","scaleAnimation","addListener","_keyboardDidShowListe","_keyboardDidHideListe","removeAllListeners","additionalVerticalValue","select","android","default","positionTransforms","leftTransformation","topTransformation","push","translateX","interpolate","inputRange","outputRange","right","scrollableMenuHeight","translateY","bottom","shadowMenuContainerStyle","_objectSpread","opacity","transform","scaleX","scaleY","borderRadius","roundness","isV3","positionStyle","getConstants","isRTL","pointerEvents","createElement","ref","collapsable","accessibilityLabel","accessibilityRole","onPress","styles","pressableOverlay","accessibilityViewIsModal","wrapper","onAccessibilityEscape","_extends","shadowMenuContainer","backgroundColor","colors","container","Fragment","Item","create","position","paddingVertical","web","cursor","absoluteFillObject"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/react-native-paper/src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Dimensions,\n Easing,\n EmitterSubscription,\n I18nManager,\n Keyboard,\n KeyboardEvent as RNKeyboardEvent,\n LayoutRectangle,\n NativeEventSubscription,\n Platform,\n ScrollView,\n ScrollViewProps,\n StyleProp,\n StyleSheet,\n View,\n ViewStyle,\n Pressable,\n} from 'react-native';\n\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport MenuItem from './MenuItem';\nimport { useInternalTheme } from '../../core/theming';\nimport type { MD3Elevation, ThemeProp } from '../../types';\nimport { ElevationLevels } from '../../types';\nimport { addEventListener } from '../../utils/addEventListener';\nimport { BackHandler } from '../../utils/BackHandler/BackHandler';\nimport Portal from '../Portal/Portal';\nimport Surface from '../Surface';\n\nexport type Props = {\n /**\n * Whether the Menu is currently visible.\n */\n visible: boolean;\n /**\n * The anchor to open the menu from. In most cases, it will be a button that opens the menu.\n */\n anchor: React.ReactNode | { x: number; y: number };\n /**\n * Whether the menu should open at the top of the anchor or at its bottom.\n * Applied only when anchor is a node, not an x/y position.\n */\n anchorPosition?: 'top' | 'bottom';\n /**\n * Extra margin to add at the top of the menu to account for translucent status bar on Android.\n * If you are using Expo, we assume translucent status bar and set a height for status bar automatically.\n * Pass `0` or a custom value to and customize it.\n * This is automatically handled on iOS.\n */\n statusBarHeight?: number;\n /**\n * Callback called when Menu is dismissed. The `visible` prop needs to be updated when this is called.\n */\n onDismiss?: () => void;\n /**\n * Accessibility label for the overlay. This is read by the screen reader when the user taps outside the menu.\n */\n overlayAccessibilityLabel?: string;\n /**\n * Content of the `Menu`.\n */\n children: React.ReactNode;\n /**\n * Style of menu's inner content.\n */\n contentStyle?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n style?: StyleProp<ViewStyle>;\n /**\n * Elevation level of the menu's content. Shadow styles are calculated based on this value. Default `backgroundColor` is taken from the corresponding `theme.colors.elevation` property. By default equals `2`.\n * @supported Available in v5.x with theme version 3\n */\n elevation?: MD3Elevation;\n /**\n * Mode of the menu's content.\n * - `elevated` - Surface with a shadow and background color corresponding to set `elevation` value.\n * - `flat` - Surface without a shadow, with the background color corresponding to set `elevation` value.\n *\n * @supported Available in v5.x with theme version 3\n */\n mode?: 'flat' | 'elevated';\n /**\n * @optional\n */\n theme?: ThemeProp;\n /**\n * Inner ScrollView prop\n */\n keyboardShouldPersistTaps?: ScrollViewProps['keyboardShouldPersistTaps'];\n /**\n * testID to be used on tests.\n */\n testID?: string;\n};\n\n// Minimum padding between the edge of the screen and the menu\nconst SCREEN_INDENT = 8;\n// From https://material.io/design/motion/speed.html#duration\nconst ANIMATION_DURATION = 250;\n// From the 'Standard easing' section of https://material.io/design/motion/speed.html#easing\nconst EASING = Easing.bezier(0.4, 0, 0.2, 1);\n\nconst WINDOW_LAYOUT = Dimensions.get('window');\n\nconst DEFAULT_ELEVATION: MD3Elevation = 2;\nexport const ELEVATION_LEVELS_MAP = Object.values(\n ElevationLevels\n) as ElevationLevels[];\n\nconst DEFAULT_MODE = 'elevated';\n\nconst focusFirstDOMNode = (el: View | null | undefined) => {\n if (el && Platform.OS === 'web') {\n // When in the browser, we want to focus the first focusable item on toggle\n // For example, when menu is shown, focus the first item in the menu\n // And when menu is dismissed, send focus back to the button to resume tabbing\n if (el instanceof HTMLElement) {\n el.querySelector<HTMLElement>(\n // This is a rough list of selectors that can be focused\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )?.focus();\n }\n }\n};\n\nconst isCoordinate = (anchor: any): anchor is { x: number; y: number } =>\n !React.isValidElement(anchor) &&\n typeof anchor?.x === 'number' &&\n typeof anchor?.y === 'number';\n\nconst isBrowser = () => Platform.OS === 'web' && 'document' in global;\n\n/**\n * Menus display a list of choices on temporary elevated surfaces. Their placement varies based on the element that opens them.\n *\n * ## Usage\n * ```js\n * import * as React from 'react';\n * import { View } from 'react-native';\n * import { Button, Menu, Divider, PaperProvider } from 'react-native-paper';\n *\n * const MyComponent = () => {\n * const [visible, setVisible] = React.useState(false);\n *\n * const openMenu = () => setVisible(true);\n *\n * const closeMenu = () => setVisible(false);\n *\n * return (\n * <PaperProvider>\n * <View\n * style={{\n * paddingTop: 50,\n * flexDirection: 'row',\n * justifyContent: 'center',\n * }}>\n * <Menu\n * visible={visible}\n * onDismiss={closeMenu}\n * anchor={<Button onPress={openMenu}>Show menu</Button>}>\n * <Menu.Item onPress={() => {}} title=\"Item 1\" />\n * <Menu.Item onPress={() => {}} title=\"Item 2\" />\n * <Divider />\n * <Menu.Item onPress={() => {}} title=\"Item 3\" />\n * </Menu>\n * </View>\n * </PaperProvider>\n * );\n * };\n *\n * export default MyComponent;\n * ```\n *\n * ### Note\n * When using `Menu` within a React Native's `Modal` component, you need to wrap all\n * `Modal` contents within a `PaperProvider` in order for the menu to show. This\n * wrapping is not necessary if you use Paper's `Modal` instead.\n */\n\nconst Menu = ({\n visible,\n statusBarHeight,\n overlayAccessibilityLabel = 'Close menu',\n testID = 'menu',\n anchor,\n onDismiss,\n anchorPosition,\n contentStyle,\n style,\n elevation = DEFAULT_ELEVATION,\n mode = DEFAULT_MODE,\n children,\n theme: themeOverrides,\n keyboardShouldPersistTaps,\n}: Props) => {\n const theme = useInternalTheme(themeOverrides);\n const insets = useSafeAreaInsets();\n const [rendered, setRendered] = React.useState(visible);\n const [left, setLeft] = React.useState(0);\n const [top, setTop] = React.useState(0);\n const [menuLayout, setMenuLayout] = React.useState({ width: 0, height: 0 });\n const [anchorLayout, setAnchorLayout] = React.useState({\n width: 0,\n height: 0,\n });\n const [windowLayout, setWindowLayout] = React.useState({\n width: WINDOW_LAYOUT.width,\n height: WINDOW_LAYOUT.height,\n });\n\n const opacityAnimationRef = React.useRef(new Animated.Value(0));\n const scaleAnimationRef = React.useRef(new Animated.ValueXY({ x: 0, y: 0 }));\n const keyboardHeightRef = React.useRef(0);\n const prevVisible = React.useRef<boolean | null>(null);\n const anchorRef = React.useRef<View | null>(null);\n const menuRef = React.useRef<View | null>(null);\n const prevRendered = React.useRef(false);\n\n const keyboardDidShow = React.useCallback((e: RNKeyboardEvent) => {\n const keyboardHeight = e.endCoordinates.height;\n keyboardHeightRef.current = keyboardHeight;\n }, []);\n\n const keyboardDidHide = React.useCallback(() => {\n keyboardHeightRef.current = 0;\n }, []);\n\n const keyboardDidShowListenerRef: React.RefObject<\n EmitterSubscription | undefined\n > = React.useRef(undefined);\n const keyboardDidHideListenerRef: React.RefObject<\n EmitterSubscription | undefined\n > = React.useRef(undefined);\n\n const backHandlerSubscriptionRef: React.RefObject<\n NativeEventSubscription | undefined\n > = React.useRef(undefined);\n const dimensionsSubscriptionRef: React.RefObject<\n NativeEventSubscription | undefined\n > = React.useRef(undefined);\n\n const handleDismiss = React.useCallback(() => {\n if (visible) {\n onDismiss?.();\n }\n }, [onDismiss, visible]);\n\n const handleKeypress = React.useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onDismiss?.();\n }\n },\n [onDismiss]\n );\n\n const removeListeners = React.useCallback(() => {\n backHandlerSubscriptionRef.current?.remove();\n dimensionsSubscriptionRef.current?.remove();\n isBrowser() && document.removeEventListener('keyup', handleKeypress);\n }, [handleKeypress]);\n\n const attachListeners = React.useCallback(() => {\n backHandlerSubscriptionRef.current = addEventListener(\n BackHandler,\n 'hardwareBackPress',\n handleDismiss\n );\n dimensionsSubscriptionRef.current = addEventListener(\n Dimensions,\n 'change',\n handleDismiss\n );\n Platform.OS === 'web' && document.addEventListener('keyup', handleKeypress);\n }, [handleDismiss, handleKeypress]);\n\n const measureMenuLayout = () =>\n new Promise<LayoutRectangle>((resolve) => {\n if (menuRef.current) {\n menuRef.current.measureInWindow((x, y, width, height) => {\n resolve({ x, y, width, height });\n });\n }\n });\n\n const measureAnchorLayout = React.useCallback(\n () =>\n new Promise<LayoutRectangle>((resolve) => {\n if (isCoordinate(anchor)) {\n resolve({ x: anchor.x, y: anchor.y, width: 0, height: 0 });\n return;\n }\n\n if (anchorRef.current) {\n anchorRef.current.measureInWindow((x, y, width, height) => {\n resolve({ x, y, width, height });\n });\n }\n }),\n [anchor]\n );\n\n const show = React.useCallback(async () => {\n const windowLayoutResult = Dimensions.get('window');\n const [menuLayoutResult, anchorLayoutResult] = await Promise.all([\n measureMenuLayout(),\n measureAnchorLayout(),\n ]);\n\n // When visible is true for first render\n // native views can be still not rendered and\n // measureMenuLayout/measureAnchorLayout functions\n // return wrong values e.g { x:0, y: 0, width: 0, height: 0 }\n // so we have to wait until views are ready\n // and rerun this function to show menu\n if (\n !windowLayoutResult.width ||\n !windowLayoutResult.height ||\n !menuLayoutResult.width ||\n !menuLayoutResult.height ||\n (!anchorLayoutResult.width && !isCoordinate(anchor)) ||\n (!anchorLayoutResult.height && !isCoordinate(anchor))\n ) {\n requestAnimationFrame(show);\n return;\n }\n\n setLeft(anchorLayoutResult.x);\n setTop(anchorLayoutResult.y);\n setAnchorLayout({\n height: anchorLayoutResult.height,\n width: anchorLayoutResult.width,\n });\n\n setMenuLayout({\n height: menuLayoutResult.height,\n width: menuLayoutResult.width,\n });\n\n setWindowLayout({\n height: windowLayoutResult.height - keyboardHeightRef.current,\n width: windowLayoutResult.width,\n });\n\n attachListeners();\n const { animation } = theme;\n Animated.parallel([\n Animated.timing(scaleAnimationRef.current, {\n toValue: { x: menuLayoutResult.width, y: menuLayoutResult.height },\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true,\n }),\n Animated.timing(opacityAnimationRef.current, {\n toValue: 1,\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n focusFirstDOMNode(menuRef.current);\n prevRendered.current = true;\n }\n });\n }, [anchor, attachListeners, measureAnchorLayout, theme]);\n\n const hide = React.useCallback(() => {\n removeListeners();\n\n const { animation } = theme;\n\n Animated.timing(opacityAnimationRef.current, {\n toValue: 0,\n duration: ANIMATION_DURATION * animation.scale,\n easing: EASING,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished) {\n setMenuLayout({ width: 0, height: 0 });\n setRendered(false);\n prevRendered.current = false;\n focusFirstDOMNode(anchorRef.current);\n }\n });\n }, [removeListeners, theme]);\n\n const updateVisibility = React.useCallback(\n async (display: boolean) => {\n // Menu is rendered in Portal, which updates items asynchronously\n // We need to do the same here so that the ref is up-to-date\n await Promise.resolve().then(() => {\n if (display && !prevRendered.current) {\n show();\n return;\n }\n\n if (!display && prevRendered.current) {\n hide();\n }\n\n return;\n });\n },\n [hide, show]\n );\n\n React.useEffect(() => {\n const opacityAnimation = opacityAnimationRef.current;\n const scaleAnimation = scaleAnimationRef.current;\n keyboardDidShowListenerRef.current = Keyboard.addListener(\n 'keyboardDidShow',\n keyboardDidShow\n );\n keyboardDidHideListenerRef.current = Keyboard.addListener(\n 'keyboardDidHide',\n keyboardDidHide\n );\n\n return () => {\n removeListeners();\n keyboardDidShowListenerRef.current?.remove();\n keyboardDidHideListenerRef.current?.remove();\n scaleAnimation.removeAllListeners();\n opacityAnimation?.removeAllListeners();\n };\n }, [removeListeners, keyboardDidHide, keyboardDidShow]);\n\n React.useEffect(() => {\n if (prevVisible.current !== visible) {\n prevVisible.current = visible;\n\n if (visible !== rendered) {\n setRendered(visible);\n }\n }\n }, [visible, rendered]);\n\n React.useEffect(() => {\n updateVisibility(rendered);\n }, [rendered, updateVisibility]);\n\n // I don't know why but on Android measure function is wrong by 24\n const additionalVerticalValue = Platform.select({\n android: statusBarHeight ?? insets.top,\n default: 0,\n });\n\n // We need to translate menu while animating scale to imitate transform origin for scale animation\n const positionTransforms = [];\n let leftTransformation = left;\n let topTransformation =\n !isCoordinate(anchorRef.current) && anchorPosition === 'bottom'\n ? top + anchorLayout.height\n : top;\n\n // Check if menu fits horizontally and if not align it to right.\n if (left <= windowLayout.width - menuLayout.width - SCREEN_INDENT) {\n positionTransforms.push({\n translateX: scaleAnimationRef.current.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [-(menuLayout.width / 2), 0],\n }),\n });\n\n // Check if menu position has enough space from left side\n if (leftTransformation < SCREEN_INDENT) {\n leftTransformation = SCREEN_INDENT;\n }\n } else {\n positionTransforms.push({\n translateX: scaleAnimationRef.current.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [menuLayout.width / 2, 0],\n }),\n });\n\n leftTransformation += anchorLayout.width - menuLayout.width;\n\n const right = leftTransformation + menuLayout.width;\n // Check if menu position has enough space from right side\n if (right > windowLayout.width - SCREEN_INDENT) {\n leftTransformation =\n windowLayout.width - SCREEN_INDENT - menuLayout.width;\n }\n }\n\n // If the menu is larger than available vertical space,\n // calculate the height of scrollable view\n let scrollableMenuHeight = 0;\n\n // Check if the menu should be scrollable\n if (\n // Check if the menu overflows from bottom side\n topTransformation >=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue &&\n // And bottom side of the screen has more space than top side\n topTransformation <= windowLayout.height - topTransformation\n ) {\n // Scrollable menu should be below the anchor (expands downwards)\n scrollableMenuHeight =\n windowLayout.height -\n topTransformation -\n SCREEN_INDENT -\n additionalVerticalValue;\n } else if (\n // Check if the menu overflows from bottom side\n topTransformation >=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue &&\n // And top side of the screen has more space than bottom side\n topTransformation >= windowLayout.height - top &&\n // And menu overflows from top side\n topTransformation <=\n menuLayout.height -\n anchorLayout.height +\n SCREEN_INDENT -\n additionalVerticalValue\n ) {\n // Scrollable menu should be above the anchor (expands upwards)\n scrollableMenuHeight =\n topTransformation +\n anchorLayout.height -\n SCREEN_INDENT +\n additionalVerticalValue;\n }\n\n // Scrollable menu max height\n scrollableMenuHeight =\n scrollableMenuHeight > windowLayout.height - 2 * SCREEN_INDENT\n ? windowLayout.height - 2 * SCREEN_INDENT\n : scrollableMenuHeight;\n\n // Menu is typically positioned below the element that generates it\n // So first check if it fits below the anchor (expands downwards)\n if (\n // Check if menu fits vertically\n topTransformation <=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue ||\n // Or if the menu overflows from bottom side\n (topTransformation >=\n windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue &&\n // And bottom side of the screen has more space than top side\n topTransformation <= windowLayout.height - topTransformation)\n ) {\n positionTransforms.push({\n translateY: scaleAnimationRef.current.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [-((scrollableMenuHeight || menuLayout.height) / 2), 0],\n }),\n });\n\n // Check if menu position has enough space from top side\n if (topTransformation < SCREEN_INDENT) {\n topTransformation = SCREEN_INDENT;\n }\n } else {\n positionTransforms.push({\n translateY: scaleAnimationRef.current.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [(scrollableMenuHeight || menuLayout.height) / 2, 0],\n }),\n });\n\n topTransformation +=\n anchorLayout.height - (scrollableMenuHeight || menuLayout.height);\n\n const bottom =\n topTransformation +\n (scrollableMenuHeight || menuLayout.height) +\n additionalVerticalValue;\n\n // Check if menu position has enough space from bottom side\n if (bottom > windowLayout.height - SCREEN_INDENT) {\n topTransformation =\n scrollableMenuHeight === windowLayout.height - 2 * SCREEN_INDENT\n ? -SCREEN_INDENT * 2\n : windowLayout.height -\n menuLayout.height -\n SCREEN_INDENT -\n additionalVerticalValue;\n }\n }\n\n const shadowMenuContainerStyle = {\n opacity: opacityAnimationRef.current,\n transform: [\n {\n scaleX: scaleAnimationRef.current.x.interpolate({\n inputRange: [0, menuLayout.width],\n outputRange: [0, 1],\n }),\n },\n {\n scaleY: scaleAnimationRef.current.y.interpolate({\n inputRange: [0, menuLayout.height],\n outputRange: [0, 1],\n }),\n },\n ],\n borderRadius: theme.roundness,\n ...(!theme.isV3 && { elevation: 8 }),\n ...(scrollableMenuHeight ? { height: scrollableMenuHeight } : {}),\n };\n\n const positionStyle = {\n top: isCoordinate(anchor)\n ? topTransformation\n : topTransformation + additionalVerticalValue,\n ...(I18nManager.getConstants().isRTL\n ? { right: leftTransformation }\n : { left: leftTransformation }),\n };\n\n const pointerEvents = visible ? 'box-none' : 'none';\n\n return (\n <View\n ref={(ref) => {\n anchorRef.current = ref;\n }}\n collapsable={false}\n >\n {isCoordinate(anchor) ? null : anchor}\n {rendered ? (\n <Portal>\n <Pressable\n accessibilityLabel={overlayAccessibilityLabel}\n accessibilityRole=\"button\"\n onPress={onDismiss}\n style={styles.pressableOverlay}\n />\n <View\n ref={(ref) => {\n menuRef.current = ref;\n }}\n collapsable={false}\n accessibilityViewIsModal={visible}\n style={[styles.wrapper, positionStyle, style]}\n pointerEvents={pointerEvents}\n onAccessibilityEscape={onDismiss}\n testID={`${testID}-view`}\n >\n <Animated.View\n pointerEvents={pointerEvents}\n style={{\n transform: positionTransforms,\n }}\n >\n <Surface\n mode={mode}\n pointerEvents={pointerEvents}\n style={[\n styles.shadowMenuContainer,\n shadowMenuContainerStyle,\n theme.isV3 && {\n backgroundColor:\n theme.colors.elevation[ELEVATION_LEVELS_MAP[elevation]],\n },\n contentStyle,\n ]}\n {...(theme.isV3 && { elevation })}\n testID={`${testID}-surface`}\n theme={theme}\n container\n >\n {(scrollableMenuHeight && (\n <ScrollView\n keyboardShouldPersistTaps={keyboardShouldPersistTaps}\n >\n {children}\n </ScrollView>\n )) || <React.Fragment>{children}</React.Fragment>}\n </Surface>\n </Animated.View>\n </View>\n </Portal>\n ) : null}\n </View>\n );\n};\n\nMenu.Item = MenuItem;\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: 'absolute',\n },\n shadowMenuContainer: {\n opacity: 0,\n paddingVertical: 8,\n },\n pressableOverlay: {\n ...Platform.select({\n web: {\n cursor: 'auto',\n },\n }),\n ...StyleSheet.absoluteFillObject,\n width: '100%',\n },\n});\n\nexport default Menu;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}