/* Metro module 14374; source: modules/home_drawer/native/useHomeDrawerGesture.tsx; dependencies: [57, 31, 14375, 14376, 4013, 4017, 1485, 4081, 1478, 1585, 4010, 14377, 4007, 4577, 5321, 8142, 2] */ function _fun108770(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#108770, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:6, offset: 0x0232d55b, size: 599 bytes, params: 8, frame: 24 const env0_0 = require; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_3 = importDefault(57) /* metro dependency 57 */; let value = importAll(31) /* metro dependency 31 */; const homeDrawerStore = importDefault(14375) /* metro dependency 14375: HomeDrawerStore */; const homeDrawerSubtitleStore = importDefault(14376) /* metro dependency 14376: HomeDrawerSubtitleStore */; const env0_7 = {'mass': 0.3, 'damping': 30, 'stiffness': 400}; const env0_9 = {code: 'function useHomeDrawerGestureTsx1(){const{dragOffsetX,INITIAL_OPEN_WIDTH}=this.__closure;return dragOffsetX.get()>=INITIAL_OPEN_WIDTH;}'}; const env0_10 = {code: 'function useHomeDrawerGestureTsx2(isOpen,wasOpen){const{gestureState,runOnJS,triggerHapticFeedback,HapticFeedbackTypes}=this.__closure;if(!gestureState.get().active||wasOpen===null){return;}if(isOpen===wasOpen){return;}if(isOpen){runOnJS(triggerHapticFeedback)(HapticFeedbackTypes.IMPACT_MEDIUM);}else{runOnJS(triggerHapticFeedback)(HapticFeedbackTypes.SOFT);}}'}; const env0_11 = {code: 'function useHomeDrawerGestureTsx3(){const{panelX,peekX}=this.__closure;return panelX.get()+peekX.get();}'}; const env0_12 = {code: "function useHomeDrawerGestureTsx4(){const{withSpring,panelX,gestureState,HOME_GESTURE_DRAG_PHYSICS,HOME_DRAWER_FLING_PHYSICS}=this.__closure;return withSpring(panelX.get(),gestureState.get().active?HOME_GESTURE_DRAG_PHYSICS:HOME_DRAWER_FLING_PHYSICS,'animate-always');}"}; const env0_13 = {code: 'function useHomeDrawerGestureTsx5(){const{panelGestureSpringX,peekX}=this.__closure;return panelGestureSpringX.get()+peekX.get();}'}; const env0_14 = {code: 'function useHomeDrawerGestureTsx6(){const{safeAreaInsets,panelSpringTranslateX}=this.__closure;return{flex:1,marginTop:safeAreaInsets.top,transform:[{translateX:panelSpringTranslateX.get()}]};}'}; const env0_15 = {code: 'function useHomeDrawerGestureTsx7(){const{drawerRevealX,MAX_HOME_DRAWER_ANIMATING_WIDTH,GUILD_DESCRIPTION_ANIMATION_DISTANCE,MIN_HOME_DRAWER_TEXT_OPACITY,MIN_HOME_DRAWER_OPEN_WIDTH,withSpring,HOME_DRAWER_FLING_PHYSICS,clamp}=this.__closure;let x=0;if(drawerRevealX.get()50){runOnJS(setHomeDrawerState)(true);if(dragOffsetX.get()FRACTION_OF_WIDTH_FOR_DRAWER_TO_REMAIN_OPEN*maxX){runOnJS(setHomeDrawerState)(true);}else if(panelX.get()>=INITIAL_OPEN_WIDTH&&event.absoluteX-gestureState.get().initialX>0){runOnJS(setHomeDrawerState)(true);}else{runOnJS(setHomeDrawerState)(false);}}}'}; const env0_20 = {code: 'function useHomeDrawerGestureTsx12(event){const{gestureState,dragOffsetX,INITIAL_OPEN_WIDTH,panelX,DRAWER_RESISTANCE}=this.__closure;if(!gestureState.get().active)return;const newXOffset=event.absoluteX-gestureState.get().initialX;dragOffsetX.set(newXOffset);const basePosition=newXOffset+gestureState.get().panelX;if(gestureState.get().panelX===0&&newXOffset>=0&&newXOffsetabsoluteXDiff||panelX.get()===0&&touchX0&&touchX>gestureState.get().initialX){manager.fail();}if(panelX.get()===0&&touchX>gestureState.get().initialX){gestureState.set({...gestureState.get(),active:true,initialX:touchX,panelX:panelX.get()});manager.activate();}else if(touchX= 144; } function useHomeGestureM(a0, a1) { // fn#108773, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:6799, owner: useHomeGesture.M, offset: 0x0232dd3d, size: 146 bytes, params: 3, frame: 16 var HapticFeedbackTypes; var value; const gestureStateBinding = gestureState; const get = gestureStateBinding.get; if (Reflect.apply(get, gestureStateBinding, []).active && a1 !== null && a0 !== a1) { value = environment.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS((require(4081) /* metro dependency 4081: HapticUtilsNative */).triggerHapticFeedback); HapticFeedbackTypes = (require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes; if (a0) { value(HapticFeedbackTypes.IMPACT_MEDIUM); } else { value(HapticFeedbackTypes.SOFT); } } } function useHomeGestureZ() { // fn#108774, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:7399, owner: useHomeGesture.z, offset: 0x0232ddcf, size: 35 bytes, params: 1, frame: 10 const panelXBinding = panelX; let get = panelXBinding.get; const value2 = Reflect.apply(get, panelXBinding, []); const binding = env0_12; get = binding.get; return value2 + Reflect.apply(get, binding, []); } function _fun108775() { // fn#108775, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:7511, offset: 0x0232ddf2, size: 64 bytes, params: 1, frame: 14 const binding = env0_11; const updateMaxXBinding = updateMaxX; if (binding) { updateMaxXBinding(env0_9, env0_10); } else { updateMaxXBinding({'width': 0, 'height': 0}, {'top': 0, 'bottom': 0, 'left': 0, 'right': 0}); } } function _fun108776() { // fn#108776, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:7605, offset: 0x0232de32, size: 45 bytes, params: 1, frame: 14 env0_8.addListener('state', handleStateChange_108777); return _fun108778; } function useHomeGestureK() { // fn#108779, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:8095, owner: useHomeGesture.K, offset: 0x0232df6b, size: 93 bytes, params: 1, frame: 16 const springModule = require(4577) /* metro dependency 4577: spring */; const withSpring = springModule.withSpring; const panelXBinding = panelX; let get = panelXBinding.get; const value3 = Reflect.apply(get, panelXBinding, []); const gestureStateBinding = gestureState; get = gestureStateBinding.get; return Reflect.apply(withSpring, springModule, [value3, Reflect.apply(get, gestureStateBinding, []).active ? env1_7 : env1_8, 'animate-always']); } function useHomeGestureQ() { // fn#108780, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:8368, owner: useHomeGesture.Q, offset: 0x0232dfc8, size: 35 bytes, params: 1, frame: 10 let binding = env0_14; let get = binding.get; const value2 = Reflect.apply(get, binding, []); binding = env0_12; get = binding.get; return value2 + Reflect.apply(get, binding, []); } function useHomeGestureZ_108781() { // fn#108781, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:8514, owner: useHomeGesture.Z, offset: 0x0232dfeb, size: 59 bytes, params: 1, frame: 11 const object3 = {flex: 1}; object3.marginTop = env0_10.top; const object4 = {}; object4.translateX = env0_15.get(); object3.transform = [object4]; return object3; } function useHomeGesture$() { // fn#108782, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:8715, owner: useHomeGesture.$, offset: 0x0232e026, size: 236 bytes, params: 1, frame: 22 let binding = env0_13; const value2 = binding.get(); const value3 = 0; const r11 = value2 < 48 ? global.Math.min(18, env0_13.get() / 48 * 18) : value3; let value = env0_13.get(); value /= 150; const object2 = {}; const springModule = require(4577) /* metro dependency 4577: spring */; let withSpring = springModule.withSpring; binding = env1_8; object2.transform = [{translateX: Reflect.apply(withSpring, springModule, [r11, binding])}]; const moduleValue2 = springModule; withSpring = moduleValue2.withSpring; const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; object2.opacity = Reflect.apply(withSpring, moduleValue2, [reanimatedRexportModule.clamp(0.1 + value * 0.9, value3, 1), binding]); return object2; } function useHomeGestureEe() { // fn#108783, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:9237, owner: useHomeGesture.ee, offset: 0x0232e112, size: 134 bytes, params: 1, frame: 16 var r5; var Math; var min; var value; let binding = env0_13; if (binding.get() < 48) { Math = global.Math; min = Math.min; binding = env0_13; value = binding.get() / 48; value = Reflect.apply(min, Math, [12, value * 12]); r5 = value; } else { r5 = 0; } const object = {}; value = environment.__proto__; object.translateX = (require(4577) /* metro dependency 4577: spring */).withSpring(r5, env1_8); return {transform: [object]}; } function useHomeGestureTe() { // fn#108784, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:9597, owner: useHomeGesture.te, offset: 0x0232e198, size: 137 bytes, params: 1, frame: 16 var r5; var Math; var min; var value; let binding = env0_13; if (binding.get() < 48) { Math = global.Math; min = Math.min; binding = env0_13; value = binding.get() / 48; value = -Reflect.apply(min, Math, [6, value * 6]); r5 = value; } else { r5 = 0; } const object = {}; value = environment.__proto__; object.translateX = (require(4577) /* metro dependency 4577: spring */).withSpring(r5, env1_8); return {transform: [object]}; } function _fun108785() { // fn#108785, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:9942, offset: 0x0232e221, size: 611 bytes, params: 1, frame: 25 var object2; const Gesture = (require(5321) /* metro dependency 5321 */).Gesture; const value6 = Gesture.Pan().enabled(env0_11).manualActivation(true).shouldCancelWhenOutside(false).maxPointers(1); const onBegin = value6.onBegin; let closure = function(a0) { isPanelTouchActive.set(true); var gestureStateBinding = gestureState; var object = {active: false, initialX: a0.absoluteX, initialY: a0.absoluteY}; object.panelX = panelX.get(); gestureStateBinding.set(object); }; const isPanelTouchActiveBinding = isPanelTouchActive; let gestureStateBinding = gestureState; const panelXBinding = panelX; closure.__closure = {isPanelTouchActive: isPanelTouchActiveBinding, gestureState: gestureStateBinding, panelX: panelXBinding}; closure.__workletHash = 16505445202158; closure.__initData = env1_22; const value7 = Reflect.apply(onBegin, value6, [closure]); const onTouchesMove = value7.onTouchesMove; closure = s_108787; closure.__closure = {gestureState: gestureStateBinding, panelX: panelXBinding}; closure.__workletHash = 14569763728735; closure.__initData = env1_21; const value8 = Reflect.apply(onTouchesMove, value7, [closure]); const onChange = value8.onChange; closure = n_108788; const binding = env0_7; closure.__closure = {gestureState: gestureStateBinding, dragOffsetX: binding, INITIAL_OPEN_WIDTH: 144, panelX: panelXBinding, DRAWER_RESISTANCE: 3}; closure.__workletHash = 14987365733436; closure.__initData = env1_20; const value9 = Reflect.apply(onChange, value8, [closure]); const onEnd = value9.onEnd; closure = t_108789; object2 = {}; const runOnJS = (require(4017) /* metro dependency 4017: ReanimatedRexport */).runOnJS; object2.runOnJS = runOnJS; object2.setHomeDrawerState = (require(4007) /* metro dependency 4007: NavigationRouteUtilsNative */).setHomeDrawerState; object2.dragOffsetX = binding; object2.INITIAL_OPEN_WIDTH = 144; object2.triggerHapticFeedback = (require(4081) /* metro dependency 4081: HapticUtilsNative */).triggerHapticFeedback; const HapticFeedbackTypes = (require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes; object2.HapticFeedbackTypes = HapticFeedbackTypes; object2.panelX = panelXBinding; object2.FRACTION_OF_WIDTH_FOR_DRAWER_TO_REMAIN_OPEN = 0.5; object2.maxX = maxX; object2.gestureState = gestureStateBinding; closure.__closure = object2; closure.__workletHash = 14661579894802; closure.__initData = env1_19; const value10 = Reflect.apply(onEnd, value9, [closure]); const onFinalize = value10.onFinalize; closure = e_108790; closure.__closure = {isPanelTouchActive: isPanelTouchActiveBinding, runOnJS: runOnJS, noteInteraction: noteInteraction, gestureState: gestureStateBinding, dragOffsetX: binding}; closure.__workletHash = 4660810514744; closure.__initData = env1_18; return Reflect.apply(onFinalize, value10, [closure]); } function _fun108791() { // fn#108791, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:12289, offset: 0x0232ea32, size: 79 bytes, params: 1, frame: 3 return {gesture: env0_20, panelStyles: env0_16, gestureState: gestureState, panelX: panelX, panelSpringTranslateX: env0_15, guildsBarLabelDrawerStyle: env0_17, guildsBarIconDrawerStyle: env0_18, guildsBarUnreadDrawerStyle: env0_19}; } function handleStateChange_108777({data}) { // fn#108777, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:7610, offset: 0x0232de5f, size: 207 bytes, params: 2, frame: 18 var value5; var value6; const state = data.state; let value = environment.__proto__.__proto__; const navigationRouteUtilsNativeModule = require(4007) /* metro dependency 4007: NavigationRouteUtilsNative */; const value4 = navigationRouteUtilsNativeModule.coerceGuildsRoute(state == null || state.routes == null ? undefined : state.routes[state?.index ?? 0]); if (value4 != null) { value5 = environment.__proto__; if (env1_11) { value6 = value4.params?.drawerOpen === true; setPanelX(value6 ? 'open' : 'closed'); value = HomeDrawerSubtitleStore.getState(); if (value6) { value.startTimer(); } else { value.stopTimer(); } } } } function _fun108778() { // fn#108778, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:7960, offset: 0x0232df2e, size: 61 bytes, params: 1, frame: 13 let value = environment.__proto__; const binding = env1_8; binding.removeListener('state', handleStateChange_108777); value = environment.__proto__.__proto__; HomeDrawerSubtitleStore.getState().stopTimer(); } function s_108787(a0, a1) { // fn#108787, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:10287, offset: 0x0232e4dd, size: 421 bytes, params: 3, frame: 19 var r0; var changedTouches; var absoluteX; var absoluteY; var Math; var abs; var value2; var panelXBinding; var gestureStateBinding6; var set; var object2; const value = environment.__proto__; let get = gestureState.get; if (!Reflect.apply(get, gestureStateBinding, []).active) { changedTouches = a0.changedTouches; absoluteX = changedTouches[0].absoluteX; changedTouches = a0.changedTouches; absoluteY = changedTouches[0].absoluteY; Math = global.Math; abs = Math.abs; gestureStateBinding = gestureState; get = gestureStateBinding.get; value2 = Reflect.apply(abs, Math, [absoluteX - Reflect.apply(get, gestureStateBinding, []).initialX]); Math = global.Math; abs = Math.abs; get = gestureStateBinding.get; r0 = Reflect.apply(abs, Math, [absoluteY - Reflect.apply(get, gestureStateBinding, []).initialY]) > value2 || panelX.get() === 0 && absoluteX < gestureState.get().initialX; r0 = !r0 ? panelX.get() > 0 && absoluteX > gestureState.get().initialX : r0; if (r0) { a1.fail(); } panelXBinding = panelX; get = panelXBinding.get; r0 = Reflect.apply(get, panelXBinding, []) === 0 && absoluteX > gestureState.get().initialX; r0 = !r0 ? absoluteX < gestureState.get().initialX : r0; if (r0) { gestureStateBinding6 = gestureState; set = gestureStateBinding6.set; object2 = {}; copyDataProperties(object2, gestureStateBinding6.get(), gestureStateBinding); object2['active'] = true; object2['initialX'] = absoluteX; object2['panelX'] = panelX.get(); Reflect.apply(set, gestureStateBinding6, [object2]); a1.activate(); } } } function n_108788(a0) { // fn#108788, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:10754, offset: 0x0232e682, size: 204 bytes, params: 2, frame: 16 var absoluteX; var value2; var set; var value3; var panelXBinding; var Math; let get = gestureState.get; if (Reflect.apply(get, gestureStateBinding, []).active) { absoluteX = a0.absoluteX; gestureStateBinding = gestureState; get = gestureStateBinding.get; value2 = absoluteX - Reflect.apply(get, gestureStateBinding, []).initialX; env1_7.set(value2); get = gestureStateBinding.get; value3 = value2 + Reflect.apply(get, gestureStateBinding, []).panelX; get = gestureStateBinding.get; if (Reflect.apply(get, gestureStateBinding, []).panelX !== 0) { panelXBinding = panelX; set = panelXBinding.set; Math = global.Math; Reflect.apply(set, panelXBinding, [Math.max(value3, 0)]); } else if (value2 >= 0) { if (value2 < 144) { panelXBinding = panelX; set = panelXBinding.set; Math = global.Math; Reflect.apply(set, panelXBinding, [Math.max(value3 / 3, 0)]); } else { panelXBinding = panelX; set = panelXBinding.set; Math = global.Math; Reflect.apply(set, panelXBinding, [Math.max(value3, 0)]); } } else { panelXBinding = panelX; set = panelXBinding.set; Math = global.Math; Reflect.apply(set, panelXBinding, [Math.max(value3, 0)]); } } } function t_108789(a0) { // fn#108789, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:11079, offset: 0x0232e74e, size: 632 bytes, params: 2, frame: 16 var value; var absoluteX; var gestureStateBinding; const setHomeDrawerState = (require(4007) /* metro dependency 4007: NavigationRouteUtilsNative */).setHomeDrawerState; const triggerHapticFeedback = (require(4081) /* metro dependency 4081: HapticUtilsNative */).triggerHapticFeedback; const HapticFeedbackTypes = (require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes; var value6; if (a0.velocityX > 50) { value = environment.__proto__.__proto__; (require(4017) /* metro dependency 4017: ReanimatedRexport */).runOnJS(setHomeDrawerState)(true); value6 = environment.__proto__; if (env1_7.get() < 144) { value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(triggerHapticFeedback); value(HapticFeedbackTypes.IMPACT_MEDIUM); } } else if (a0.velocityX < -50) { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(setHomeDrawerState); value(false); value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(triggerHapticFeedback); value(HapticFeedbackTypes.SOFT); } else { value = environment.__proto__; if (panelX.get() === 0) { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(setHomeDrawerState); value(false); } else if (panelX.get() > 0.5 * maxX) { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(setHomeDrawerState); value(true); } else if (panelX.get() >= 144) { absoluteX = a0.absoluteX; gestureStateBinding = gestureState; if (absoluteX - gestureStateBinding.get().initialX > 0) { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(setHomeDrawerState); value(true); } else { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(setHomeDrawerState); value(false); } } else { value = environment.__proto__.__proto__; value = require(4017) /* metro dependency 4017: ReanimatedRexport */; value = value.runOnJS(setHomeDrawerState); value(false); } } } function e_108790() { // fn#108790, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14571:11985, offset: 0x0232e9c6, size: 108 bytes, params: 1, frame: 14 isPanelTouchActive.set(false); const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; reanimatedRexportModule.runOnJS(noteInteraction)(); gestureState.set({'active': false, 'initialX': 0, 'initialY': 0, 'panelX': 0}); env1_7.set(0); }