// Module ID: 14216 // Function ID: 14217 // Name: Menu // Dependencies: [32, 19, 17, 1074, 21, 14206, 4636, 576, 4373, 4357, 1611, 1477, 1150, 4348, 1114, 5052, 4637, 14210, 14204, 5055, 2] // Exports: Menu // Module 14216 (Menu) import nativeDefault from "native" /* 576 */; import PlatformUtils from "PlatformUtils" /* 1150 */; import ReanimatedRexport from "ReanimatedRexport" /* 4373 */; import timing from "timing" /* 4637 */; import setAccessibilityFocus from "setAccessibilityFocus" /* 5052 */; import spring from "spring" /* 5055 */; import _slicedToArray from "module_32" /* 32 */; import noop from "module_19" /* 19 */; require = fn; get_ActivityIndicator = fn(17); ({ ScrollView: hasOwnProperty, StyleSheet } = get_ActivityIndicator); const NOOP = fn(1074).NOOP; const jsx = fn(21).jsx; let closure_8 = { mass: 1, stiffness: 300, damping: 25, restSpeedThreshold: 0.01, restDisplacementThreshold: 0.01 }; let __closure = { duration: 250, easing: fn(14206).STANDARD_EASING }; const createStyles = fn(4636); let obj2 = { backdrop: null, menu: null }; let obj4 = {}; const merged = Object.assign(StyleSheet.absoluteFillObject); obj4.zIndex = 1; obj2.backdrop = obj4; obj2.menu = { position: "absolute", backgroundColor: nativeDefault.colors.BACKGROUND_SURFACE_HIGH, borderRadius: nativeDefault.radii.sm, width: 220 }; let closure_10 = createStyles.createStyles(obj2); const context = noop.createContext({ menuClose: NOOP, menuDismiss: NOOP }); function measureButtonRef(arg0, arg1) { const measureResult = ReanimatedRexport.measure(arg0); if (null != measureResult) { ReanimatedRexport.runOnJS(arg1)(measureResult); const tmpResult = ReanimatedRexport; } } let obj5 = { position: "absolute", backgroundColor: nativeDefault.colors.BACKGROUND_SURFACE_HIGH, borderRadius: nativeDefault.radii.sm, width: 220 }; measureButtonRef.__closure = { measure: fn(4373).measure, runOnJS: fn(4373).runOnJS }; measureButtonRef.__workletHash = 15651320687527; measureButtonRef.__initData = { code: "function measureButtonRef_MenuTsx1(ref,setDimensions){const{measure,runOnJS}=this.__closure;const measurements=measure(ref);if(measurements==null)return;runOnJS(setDimensions)(measurements);}" }; let closure_13 = { code: "function MenuTsx2(){const{runOnJS,openMenuCallback}=this.__closure;return runOnJS(openMenuCallback)();}" }; let closure_14 = { code: "function MenuTsx3(){const{runOnJS,closeMenuCallback}=this.__closure;return runOnJS(closeMenuCallback)();}" }; const __initData = { code: "function MenuTsx4(){const{visible,useReducedMotion,interpolate,dirX,size,offsetAnimated,dirY}=this.__closure;var _offsetAnimated,_offsetAnimated$get,_offsetAnimated2,_offsetAnimated$get2;return{opacity:visible.get(),transform:useReducedMotion?[]:[{translateX:interpolate(visible.get(),[0,1],[(dirX==='left'?-1:1)*size.get().width/4,((_offsetAnimated=offsetAnimated)===null||_offsetAnimated===void 0||(_offsetAnimated=_offsetAnimated.get())===null||_offsetAnimated===void 0?void 0:_offsetAnimated.x)!=null?(_offsetAnimated$get=offsetAnimated.get())===null||_offsetAnimated$get===void 0?void 0:_offsetAnimated$get.x:0])},{translateY:interpolate(visible.get(),[0,1],[(dirY==='top'?-1:1)*size.get().height/4,((_offsetAnimated2=offsetAnimated)===null||_offsetAnimated2===void 0||(_offsetAnimated2=_offsetAnimated2.get())===null||_offsetAnimated2===void 0?void 0:_offsetAnimated2.y)!=null?(_offsetAnimated$get2=offsetAnimated.get())===null||_offsetAnimated$get2===void 0?void 0:_offsetAnimated$get2.y:0])},{scale:visible.get()/2+0.5}]};}" }; let size = fn(2); let result = size.fileFinishedImporting("design/components/Menu/native/Menu.tsx"); export const MENU_OFFSET = 10; export const MenuContext = context; export const Menu = function Menu(toggleButtonRef) { toggleButtonRef = toggleButtonRef.toggleButtonRef; ({ onClose, position } = toggleButtonRef); if (position === undefined) { position = "right"; } let str = toggleButtonRef.align; if (str === undefined) { str = "start"; } ({ offset, offsetAnimated } = toggleButtonRef); let enabled; size2 = undefined; closure_5 = undefined; onClose = undefined; closure_10 = undefined; redux = undefined; function openMenuCallback() { if (obj.isAndroid()) { const AccessibilityAnnouncer = tmp(4348).AccessibilityAnnouncer; const intl = tmp(1114).intl; AccessibilityAnnouncer.announce(intl.string(tmp(1114).t.ZqK0uI)); } obj = PlatformUtils; const result = setAccessibilityFocus.setAccessibilityFocus({ ref }); } ({ style, children } = toggleButtonRef); let tmp = closure_10(); enabled = size2.useContext(toggleButtonRef(enabled[9]).AccessibilityPreferencesContext).reducedMotion.enabled; const rect = offsetAnimated(enabled[10])(); let size = offsetAnimated(enabled[11])(); _slicedToArray = size2.useRef(null); [size2, closure_5] = size2.useState(null); const sharedValue = toggleButtonRef(enabled[8]).useSharedValue(0); let obj = toggleButtonRef(enabled[8]); const tmp2 = size2; const tmp6 = _slicedToArray; const sharedValue1 = toggleButtonRef(enabled[8]).useSharedValue({ width: 0, height: 0 }); let items = [toggleButtonRef, size2]; const layoutEffect = size2.useLayoutEffect(() => { let current; if (toggleButtonRef != null) { current = tmp.current; } let tmp3 = null != current; if (tmp3) { tmp3 = null == size2; } if (tmp3) { ReanimatedRexport.runOnUI(measureButtonRef)(tmp, closure_5); } }, items); if (onClose == null) { onClose = sharedValue; } let obj2 = toggleButtonRef(enabled[8]); const boxShadowStyle = toggleButtonRef(enabled[17]).generateBoxShadowStyle(tmp3(tmp4[17]).EIGHT_DP_ELEVATION_SHADOW_PARAMS); if ("left" === position) { let str2 = "column"; } else { str2 = "row"; } if (null == size2) { let point = { x: 0, y: 0 }; } else { let num = 0; ({ pageX, pageY } = size2); if ("right" === position) { num = size2.width; } const sum = pageX + num; let num2 = 0; if ("bottom" === position) { num2 = size2.height; } const sum1 = pageY + num2; let sum3 = sum1; let tmp16 = sum; if ("end" === str) { let num3 = 0; if ("row" === str2) { num3 = size2.width; } let num4 = 0; const sum2 = sum + num3; if ("column" === str2) { num4 = size2.height; } sum3 = sum1 + num4; tmp16 = sum2; } point = { x: tmp16, y: sum3 }; } const height = size.height; if ("left" === position) { let str9 = "right"; } else { str9 = "left"; if ("row" === str2) { str9 = "left"; } } if ("top" === position) { let str12 = "bottom"; } else { str12 = "top"; if ("column" === str2) { str12 = "top"; } } if ("left" === str9) { let x = point.x; } else { x = size.width - point.x; } let y = point.y; const tmp19 = "top" === str12 ? y : height - y; if (null != offset) { let sum4 = x + offset.x; let sum5 = tmp19 + offset.y; } else { let num5 = 0; if ("column" === str2) { num5 = 10; } sum4 = x + num5; let num6 = 0; if ("row" === str2) { num6 = 10; } sum5 = tmp19 + num6; } function handleDismiss() { const obj = setAccessibilityFocus; const result = obj.setAccessibilityFocus({ ref: toggleButtonRef }); const fn = function t() { return toggleButtonRef(enabled[8]).runOnJS(onClose)(); }; const obj2 = { ref: toggleButtonRef }; const obj3 = timing; fn.__closure = { runOnJS: ReanimatedRexport.runOnJS, closeMenuCallback: onClose }; fn.__workletHash = 5879184549724; fn.__initData = __initData2; const result1 = sharedValue.set(obj3.withTiming(0, obj, "respect-motion-settings", fn)); } let obj3 = {}; obj3[str9] = sum4; obj3[str12] = sum5; obj3.maxHeight = height - sum5 - ("top" === str12 ? rect.bottom : rect.top) - 12; let items1 = [obj3, str9, str12]; function handleClose() { const obj = timing; const fn = function t() { return toggleButtonRef(enabled[8]).runOnJS(onClose)(); }; fn.__closure = { runOnJS: ReanimatedRexport.runOnJS, closeMenuCallback: onClose }; fn.__workletHash = 5879184549724; fn.__initData = __initData2; const result = sharedValue.set(obj.withTiming(0, obj, "respect-motion-settings", fn)); } const tmp6Result = tmp6(items1, 3); closure_10 = tmp23; redux = tmp24; const tmp3Result = toggleButtonRef(enabled[17]); class P { constructor() { obj = { opacity: closure_6.get(), transform: null }; obj2 = closure_6; if (enabled) { items = []; } else { tmp = closure_0; tmp2 = closure_2; obj3 = closure_0(closure_2[8]); tmp4 = closure_10; num = 1; str = "left"; num2 = 1; value = obj2.get(); if ("left" === closure_10) { num2 = -1; } obj4 = closure_7; items1 = [, ]; num3 = 4; items1[0] = num2 * closure_7.get().width / 4; obj5 = offsetAnimated; tmp5 = null; x = undefined; if (offsetAnimated != null) { value1 = obj5.get(); if (value1 != null) { x = value1.x; } } num4 = 0; if (null != x) { value2 = obj5.get(); x1 = undefined; if (value2 != null) { x1 = value2.x; } num4 = x1; } obj1 = { translateX: null }; items1[1] = num4; obj1.translateX = obj3.interpolate(value, [0, 1], items1); items = [, , ]; items[0] = obj1; tmpResult = tmp(tmp2[8]); tmp11 = closure_11; str2 = "top"; value3 = obj2.get(); if ("top" === closure_11) { num = -1; } items2 = [, ]; items2[0] = num * obj4.get().height / 4; y = undefined; if (obj5 != null) { value4 = obj5.get(); if (value4 != null) { y = value4.y; } } num5 = 0; if (null != y) { value5 = obj5.get(); y1 = undefined; if (value5 != null) { y1 = value5.y; } num5 = y1; } obj10 = { translateY: null }; items2[1] = num5; obj10.translateY = tmpResult.interpolate(value3, [0, 1], items2); items[1] = obj10; obj11 = { scale: null }; num6 = 2; num7 = 0.5; obj11.scale = obj2.get() / 2 + 0.5; items[2] = obj11; } obj.transform = items; return obj; } } const tmp3Result2 = toggleButtonRef(enabled[8]); P.__closure = { visible: sharedValue, useReducedMotion: enabled, interpolate: toggleButtonRef(enabled[8]).interpolate, dirX: tmp6Result[1], size: sharedValue1, offsetAnimated, dirY: tmp6Result[2] }; P.__workletHash = 7884133597410; P.__initData = __initData; const animatedStyle = tmp3Result2.useAnimatedStyle(P); const obj5 = { style: null, accessibilityViewIsModal: true, importantForAccessibility: "yes", onTouchDown: handleDismiss, onAccessibilityEscape: handleDismiss, children: null }; let items2 = [tmp.backdrop]; obj5.style = items2; let obj4 = { visible: sharedValue, useReducedMotion: enabled, interpolate: toggleButtonRef(enabled[8]).interpolate, dirX: tmp6Result[1], size: sharedValue1, offsetAnimated, dirY: tmp6Result[2] }; let obj6 = { accessibilityRole: "list", style: null, onLayout(nativeEvent) { const size = { width: nativeEvent.nativeEvent.layout.width, height: nativeEvent.nativeEvent.layout.height }; const result = sharedValue1.set(size); const fn = function n() { return toggleButtonRef(enabled[8]).runOnJS(openMenuCallback)(); }; __closure = { runOnJS: ReanimatedRexport.runOnJS, openMenuCallback }; fn.__closure = __closure; fn.__workletHash = 14966618105405; fn.__initData = __initData; const result1 = sharedValue.set(spring.withSpring(1, closure_8, "respect-motion-settings", fn)); }, children: null }; const items3 = [tmp.menu, boxShadowStyle, tmp6Result[0], animatedStyle, style]; obj6.style = items3; let obj7 = { children: null }; let obj8 = { value: { menuClose: handleClose, menuDismiss: handleDismiss }, children: null }; const Children = tmp2.Children; obj8.children = Children.map(children, (icon, arg1) => { let cloneElementResult = icon; if (0 === arg1) { cloneElementResult = icon; if (noop.isValidElement(icon)) { const obj2 = { ref }; cloneElementResult = obj.cloneElement(icon, obj2); } obj = noop; } return cloneElementResult; }); obj7.children = sharedValue1(redux.Provider, obj8); obj6.children = sharedValue1(closure_5, obj7); obj5.children = sharedValue1(offsetAnimated(enabled[8]).View, obj6); return sharedValue1(offsetAnimated(enabled[18]), obj5); };