Files
discord-decomp/modules/home_drawer/native/useHomeDrawerGesture.tsx
T
2026-11-01 12:12:55 +02:00

566 lines
25 KiB
TypeScript

// Metro module 14931 (f14932).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import { createContext, useCallback, useEffect, useRef, useLayoutEffect, useMemo, useState } from "react";
import HomeDrawerStore, { computeMaxX } from "./HomeDrawerStore";
import HomeDrawerSubtitleStore from "./HomeDrawerSubtitleStore";
import { AnalyticEvents } from "../../../Constants";
import { MobileHomeDrawerExperiment } from "./HomeDrawerExperiment";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import { useSharedValue, useAnimatedReaction, useDerivedValue, useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import { useNavigation, useIsFocused } from "../../../_bundle/Module1481";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import * as _HapticUtils_native from "../../haptics/HapticUtils.native";
import useWindowDimensions_native from "../../screen/useWindowDimensions.native";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import useChatLayout from "../../chat/native/useChatLayout";
import { useHomeDrawerPeekHint } from "./useHomeDrawerPeekHint";
import * as _NavigationRouteUtils_native from "../../main_tabs_v2/helpers/NavigationRouteUtils.native";
import { coerceGuildsRoute } from "../../main_tabs_v2/helpers/NavigationRouteUtils.native";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import { Gesture } from "../../../_bundle/Module5273";
import { createFakeSharedValue } from "../../reanimated/ReanimatedHelperTypes";
const INITIAL_OPEN_WIDTH = 144;
const HOME_GESTURE_DRAG_PHYSICS = {
mass: 0.3,
damping: 30,
stiffness: 400
};
const HOME_DRAWER_FLING_PHYSICS = {
mass: 0.4,
damping: 100,
stiffness: 250
};
const MAX_HOME_DRAWER_ANIMATING_WIDTH = 48;
const ServerDrawerInteractAction = {
PEEK: "PEEK",
OPEN: "OPEN"
};
const __initData = {
code: "function useHomeDrawerGestureTsx1(){const{dragOffsetX,INITIAL_OPEN_WIDTH}=this.__closure;return dragOffsetX.get()>=INITIAL_OPEN_WIDTH;}"
};
const __initData2 = {
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 __initData3 = {
code: "function useHomeDrawerGestureTsx3(){const{panelX,peekX}=this.__closure;return panelX.get()+peekX.get();}"
};
const __initData4 = {
code: "function useHomeDrawerGestureTsx4(){const{isDrawerInitialized,initialPanelX,withSpring,panelX,GestureState,HOME_GESTURE_DRAG_PHYSICS,HOME_DRAWER_FLING_PHYSICS}=this.__closure;if(!isDrawerInitialized.get()){return initialPanelX;}return withSpring(panelX.get(),GestureState.get().active?HOME_GESTURE_DRAG_PHYSICS:HOME_DRAWER_FLING_PHYSICS,'animate-always');}"
};
const __initData5 = {
code: "function useHomeDrawerGestureTsx5(){const{panelGestureSpringX,peekX}=this.__closure;return panelGestureSpringX.get()+peekX.get();}"
};
const __initData6 = {
code: "function useHomeDrawerGestureTsx6(){const{safeAreaInsets,panelSpringTranslateX}=this.__closure;return{flex:1,marginTop:safeAreaInsets.top,transform:[{translateX:panelSpringTranslateX.get()}]};}"
};
const __initData7 = {
code: "function useHomeDrawerGestureTsx7(){const{drawerRevealX,MAX_HOME_DRAWER_ANIMATING_WIDTH,GUILD_DESCRIPTION_ANIMATION_DISTANCE,MIN_HOME_DRAWER_TEXT_OPACITY,MIN_HOME_DRAWER_OPEN_WIDTH,GUILD_LABEL_UNSNAPPED_SCALE,withSpring,HOME_DRAWER_FLING_PHYSICS,clamp}=this.__closure;let x=0;if(drawerRevealX.get()<MAX_HOME_DRAWER_ANIMATING_WIDTH){x=Math.min(GUILD_DESCRIPTION_ANIMATION_DISTANCE,drawerRevealX.get()/MAX_HOME_DRAWER_ANIMATING_WIDTH*GUILD_DESCRIPTION_ANIMATION_DISTANCE);}const opacity=MIN_HOME_DRAWER_TEXT_OPACITY+drawerRevealX.get()/MIN_HOME_DRAWER_OPEN_WIDTH*(1-MIN_HOME_DRAWER_TEXT_OPACITY);const scale=drawerRevealX.get()>=MAX_HOME_DRAWER_ANIMATING_WIDTH?1:GUILD_LABEL_UNSNAPPED_SCALE;return{transform:[{translateX:withSpring(x,HOME_DRAWER_FLING_PHYSICS)},{scale:withSpring(scale,HOME_DRAWER_FLING_PHYSICS)}],opacity:withSpring(clamp(opacity,0,1),HOME_DRAWER_FLING_PHYSICS)};}"
};
const __initData8 = {
code: "function useHomeDrawerGestureTsx8(){const{drawerRevealX,MAX_HOME_DRAWER_ANIMATING_WIDTH,MAX_HOME_DRAWER_ICON_DISTANCE,withSpring,HOME_DRAWER_FLING_PHYSICS}=this.__closure;let x=0;if(drawerRevealX.get()<MAX_HOME_DRAWER_ANIMATING_WIDTH){x=Math.min(MAX_HOME_DRAWER_ICON_DISTANCE,drawerRevealX.get()/MAX_HOME_DRAWER_ANIMATING_WIDTH*MAX_HOME_DRAWER_ICON_DISTANCE);}return{transform:[{translateX:withSpring(x,HOME_DRAWER_FLING_PHYSICS)}]};}"
};
const __initData9 = {
code: "function useHomeDrawerGestureTsx9(){const{drawerRevealX,MAX_HOME_DRAWER_ANIMATING_WIDTH,UNREAD_INDICATOR_ANIMATION_DISTANCE,withSpring,HOME_DRAWER_FLING_PHYSICS}=this.__closure;let left=0;if(drawerRevealX.get()<MAX_HOME_DRAWER_ANIMATING_WIDTH){left=-Math.min(UNREAD_INDICATOR_ANIMATION_DISTANCE,drawerRevealX.get()/MAX_HOME_DRAWER_ANIMATING_WIDTH*UNREAD_INDICATOR_ANIMATION_DISTANCE);}return{transform:[{translateX:withSpring(left,HOME_DRAWER_FLING_PHYSICS)}]};}"
};
const __initData10 = {
code: "function settleDrawer_useHomeDrawerGestureTsx10(shouldOpen){const{panelX,MaxX,runOnJS,setHomeDrawerState}=this.__closure;panelX.set(shouldOpen?MaxX:0);runOnJS(setHomeDrawerState)(shouldOpen);}"
};
const __initData11 = {
code: "function shouldOpenFromPosition_useHomeDrawerGestureTsx11(){const{panelX,FRACTION_OF_WIDTH_FOR_DRAWER_TO_REMAIN_OPEN,MaxX,INITIAL_OPEN_WIDTH,dragOffsetX}=this.__closure;if(panelX.get()===0)return false;if(panelX.get()>FRACTION_OF_WIDTH_FOR_DRAWER_TO_REMAIN_OPEN*MaxX)return true;if(panelX.get()>=INITIAL_OPEN_WIDTH&&dragOffsetX.get()>0)return true;return false;}"
};
const __initData12 = {
code: "function useHomeDrawerGestureTsx12(){const{panelX,MaxX,settleDrawer,shouldOpenFromPosition,isPanelTouchActive,runOnJS,noteInteraction,GestureState,dragOffsetX}=this.__closure;if(panelX.get()>0&&panelX.get()<MaxX){settleDrawer(shouldOpenFromPosition());}isPanelTouchActive.set(false);runOnJS(noteInteraction)();GestureState.set({active:false,initialX:0,initialY:0,panelX:0});dragOffsetX.set(0);}"
};
const __initData13 = {
code: "function useHomeDrawerGestureTsx13(event){const{FLING_MIN_VELOCITY,dragOffsetX,FLING_MIN_DISTANCE,INITIAL_OPEN_WIDTH,runOnJS,triggerHapticFeedback,HapticFeedbackTypes,shouldOpenFromPosition,settleDrawer,GestureState,trackServerDrawerInteract,ServerDrawerInteractAction}=this.__closure;let shouldOpen;if(event.velocityX>FLING_MIN_VELOCITY&&dragOffsetX.get()>FLING_MIN_DISTANCE){shouldOpen=true;if(dragOffsetX.get()<INITIAL_OPEN_WIDTH){runOnJS(triggerHapticFeedback)(HapticFeedbackTypes.IMPACT_MEDIUM);}}else if(event.velocityX<-FLING_MIN_VELOCITY&&dragOffsetX.get()<-FLING_MIN_DISTANCE){shouldOpen=false;runOnJS(triggerHapticFeedback)(HapticFeedbackTypes.SOFT);}else{shouldOpen=shouldOpenFromPosition();}settleDrawer(shouldOpen);const wasOpenAtStart=GestureState.get().panelX>0;if(shouldOpen){runOnJS(trackServerDrawerInteract)(ServerDrawerInteractAction.OPEN);}else if(!wasOpenAtStart){runOnJS(trackServerDrawerInteract)(ServerDrawerInteractAction.PEEK);}}"
};
const __initData14 = {
code: "function useHomeDrawerGestureTsx14(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&&newXOffset<INITIAL_OPEN_WIDTH){panelX.set(Math.max(basePosition/DRAWER_RESISTANCE,0));}else{panelX.set(Math.max(basePosition,0));}}"
};
const __initData15 = {
code: "function useHomeDrawerGestureTsx15(event,manager){const{GestureState,panelX,ACTIVATION_MIN_DISTANCE}=this.__closure;if(GestureState.get().active)return;const touchX=event.changedTouches[0].absoluteX;const touchY=event.changedTouches[0].absoluteY;const absoluteXDiff=Math.abs(touchX-GestureState.get().initialX);const absoluteYDiff=Math.abs(touchY-GestureState.get().initialY);if(absoluteYDiff>absoluteXDiff||panelX.get()===0&&touchX<GestureState.get().initialX||panelX.get()>0&&touchX>GestureState.get().initialX){manager.fail();return;}if(absoluteXDiff<ACTIVATION_MIN_DISTANCE){return;}if(panelX.get()===0&&touchX>GestureState.get().initialX){GestureState.set({...GestureState.get(),active:true,initialX:touchX,panelX:panelX.get()});manager.activate();}else if(touchX<GestureState.get().initialX){GestureState.set({...GestureState.get(),active:true,initialX:touchX,panelX:panelX.get()});manager.activate();}}"
};
const __initData16 = {
code: "function useHomeDrawerGestureTsx16(event){const{isPanelTouchActive,GestureState,panelX}=this.__closure;isPanelTouchActive.set(true);GestureState.set({active:false,initialX:event.absoluteX,initialY:event.absoluteY,panelX:panelX.get()});}"
};
const context = createContext({
gesture: Gesture.Pan(),
panelStyles: {},
GestureState: createFakeSharedValue({
active: false,
initialX: 0,
initialY: 0,
panelX: 0
}),
panelX: createFakeSharedValue(0),
panelSpringTranslateX: createFakeSharedValue(0),
guildsBarLabelDrawerStyle: {},
guildsBarIconDrawerStyle: {},
guildsBarUnreadDrawerStyle: {}
});
exports.HOME_DRAWER_FLING_PHYSICS = HOME_DRAWER_FLING_PHYSICS;
export function useHomeGesture() {
let c21462_11, c21462_12, c21462_13, isFocused, sharedValue3, derivedValue, landOnHome, c21462_18, ref, derivedValue2, derivedValue3, animatedStyle, animatedStyle2, animatedStyle3, animatedStyle4, memo;
const config = MobileHomeDrawerExperiment.useConfig({
location: "gesture"
});
let enableHome = config.enableHome;
const { enablePeekHint, landOnHome: landOnHome2 } = config;
const r40 = HomeDrawerStore();
const { panelX, GestureState, updateMaxX, MaxX, setPanelX, isPanelTouchActive, noteInteraction } = r40;
const sharedValue = useSharedValue(0);
const sharedValue2 = useSharedValue(false);
const navigation = useNavigation();
const callback = useCallback((a0) => {
AnalyticsUtils.track(AnalyticEvents.SERVER_DRAWER_INTERACT, {
action: a0
});
}, []);
const W = () => sharedValue.get() >= INITIAL_OPEN_WIDTH;
W.__closure = {
dragOffsetX: sharedValue,
INITIAL_OPEN_WIDTH
};
W.__workletHash = 2525772891435;
W.__initData = __initData;
const C = function C(a0, a1) {
if (GestureState.get().active && a1 !== null && a0 !== a1) {
const r20 = _ReanimatedRexport.runOnJS(_HapticUtils_native.triggerHapticFeedback);
if (a0) {
r20(_HapticUtils_native.HapticFeedbackTypes.IMPACT_MEDIUM);
} else {
r20(_HapticUtils_native.HapticFeedbackTypes.SOFT);
}
}
};
C.__closure = {
GestureState,
runOnJS: _ReanimatedRexport.runOnJS,
triggerHapticFeedback: _HapticUtils_native.triggerHapticFeedback,
HapticFeedbackTypes: _HapticUtils_native.HapticFeedbackTypes
};
C.__workletHash = 11947599708940;
C.__initData = __initData2;
useAnimatedReaction(W, C);
const windowDimensions_native = useWindowDimensions_native();
c21462_11 = windowDimensions_native;
const safeAreaInsets_native = useSafeAreaInsets_native();
c21462_12 = safeAreaInsets_native;
const isChatBesideChannelList = useChatLayout().isChatBesideChannelList;
if (enableHome) {
enableHome = !isChatBesideChannelList;
}
c21462_13 = enableHome;
const isFocused2 = useIsFocused();
isFocused = enableHome ? isFocused2 : enableHome;
sharedValue3 = useSharedValue(0);
useHomeDrawerPeekHint(enableHome ? enablePeekHint : enableHome, sharedValue3);
const ne = () => panelX.get() + sharedValue3.get();
ne.__closure = {
panelX,
peekX: sharedValue3
};
ne.__workletHash = 4654854314200;
ne.__initData = __initData3;
derivedValue = useDerivedValue(ne);
const state = navigation.getState();
const r4 = state == null;
let r106 = void 0;
if (!r4) {
const routes = state.routes;
const r107 = routes == null;
r106 = void 0;
if (!r107) {
let r32 = state?.index;
if (r32 == null) {
r32 = 0;
}
r106 = routes[r32];
}
}
const r109 = coerceGuildsRoute(r106);
let r110 = enableHome;
if (r110) {
let r112 = r109 == null ? void 0 : r109.params?.drawerOpen;
if (r112 == null) {
r112 = landOnHome2;
}
r110 = r112;
}
landOnHome = r110;
const initialPanelX = landOnHome ? computeMaxX(windowDimensions_native, safeAreaInsets_native) : 0;
c21462_18 = initialPanelX;
useEffect(() => {
if (c21462_13) {
updateMaxX(c21462_11, c21462_12);
} else {
updateMaxX({
width: 0,
height: 0
}, {
top: 0,
bottom: 0,
left: 0,
right: 0
});
}
}, [windowDimensions_native, safeAreaInsets_native, updateMaxX, enableHome]);
useEffect(() => {
if (!c21462_13) {
panelX.set(0);
_NavigationRouteUtils_native.setHomeDrawerState(false);
}
}, [enableHome, panelX]);
useEffect(() => {
const handleStateChange2 = function handleStateChange(a0) {
const state = a0.data.state;
const r3 = state == null;
let r15 = void 0;
if (!r3) {
const routes = state.routes;
const r16 = routes == null;
r15 = void 0;
if (!r16) {
let r8 = state?.index;
if (r8 == null) {
r8 = 0;
}
r15 = routes[r8];
}
}
const r18 = coerceGuildsRoute(r15);
if (r18 != null && c21462_13) {
const r25 = r18.params?.drawerOpen === true;
setPanelX(r25 ? "open" : "closed");
const state2 = HomeDrawerSubtitleStore.getState();
if (r25) {
state2.startTimer();
} else {
state2.stopTimer();
}
}
};
navigation.addListener("state", handleStateChange2);
return () => {
navigation.removeListener("state", handleStateChange2);
HomeDrawerSubtitleStore.getState().stopTimer();
};
}, [navigation, setPanelX, enableHome]);
ref = useRef(false);
useLayoutEffect(() => {
if (c21462_13 && !ref.current) {
panelX.set(c21462_18);
if (landOnHome) {
HomeDrawerSubtitleStore.getState().startTimer();
}
ref.current = true;
}
}, [enableHome, landOnHome, initialPanelX, panelX]);
useEffect(() => {
if (ref.current) {
sharedValue2.set(true);
}
}, [enableHome, sharedValue2]);
const Ie = function Ie() {
return sharedValue2.get() ? _spring.withSpring(panelX.get(), GestureState.get().active ? HOME_GESTURE_DRAG_PHYSICS : HOME_DRAWER_FLING_PHYSICS, "animate-always") : c21462_18;
};
Ie.__closure = {
isDrawerInitialized: sharedValue2,
initialPanelX,
withSpring: _spring.withSpring,
panelX,
GestureState,
HOME_GESTURE_DRAG_PHYSICS,
HOME_DRAWER_FLING_PHYSICS
};
Ie.__workletHash = 11078734703352;
Ie.__initData = __initData4;
derivedValue2 = useDerivedValue(Ie);
const ge = () => derivedValue2.get() + sharedValue3.get();
ge.__closure = {
panelGestureSpringX: derivedValue2,
peekX: sharedValue3
};
ge.__workletHash = 2927026959998;
ge.__initData = __initData5;
derivedValue3 = useDerivedValue(ge);
const Se = () => ({
flex: 1,
marginTop: c21462_12.top,
transform: [{
translateX: derivedValue3.get()
}]
});
Se.__closure = {
safeAreaInsets: safeAreaInsets_native,
panelSpringTranslateX: derivedValue3
};
Se.__workletHash = 13544610996653;
Se.__initData = __initData6;
animatedStyle = useAnimatedStyle(Se);
const Ae = function Ae() {
const r13 = derivedValue.get() < MAX_HOME_DRAWER_ANIMATING_WIDTH ? Math.min(12, derivedValue.get() / MAX_HOME_DRAWER_ANIMATING_WIDTH * 12) : 0;
const r23 = derivedValue.get() / 150;
const r1 = derivedValue.get() >= MAX_HOME_DRAWER_ANIMATING_WIDTH ? 1 : 0.98;
const r29 = 0 + r23 * 1;
return {
transform: [{
translateX: _spring.withSpring(r13, HOME_DRAWER_FLING_PHYSICS)
}, {
scale: _spring.withSpring(r1, HOME_DRAWER_FLING_PHYSICS)
}],
opacity: _spring.withSpring(_ReanimatedRexport.clamp(r29, 0, 1), HOME_DRAWER_FLING_PHYSICS)
};
};
Ae.__closure = {
drawerRevealX: derivedValue,
MAX_HOME_DRAWER_ANIMATING_WIDTH,
GUILD_DESCRIPTION_ANIMATION_DISTANCE: 12,
MIN_HOME_DRAWER_TEXT_OPACITY: 0,
MIN_HOME_DRAWER_OPEN_WIDTH: 150,
GUILD_LABEL_UNSNAPPED_SCALE: 0.98,
withSpring: _spring.withSpring,
HOME_DRAWER_FLING_PHYSICS,
clamp: _ReanimatedRexport.clamp
};
Ae.__workletHash = 11639414708115;
Ae.__initData = __initData7;
animatedStyle2 = useAnimatedStyle(Ae);
const De = function De() {
return {
transform: [{
translateX: _spring.withSpring(derivedValue.get() < MAX_HOME_DRAWER_ANIMATING_WIDTH ? Math.min(8, derivedValue.get() / MAX_HOME_DRAWER_ANIMATING_WIDTH * 8) : 0, HOME_DRAWER_FLING_PHYSICS)
}]
};
};
De.__closure = {
drawerRevealX: derivedValue,
MAX_HOME_DRAWER_ANIMATING_WIDTH,
MAX_HOME_DRAWER_ICON_DISTANCE: 8,
withSpring: _spring.withSpring,
HOME_DRAWER_FLING_PHYSICS
};
De.__workletHash = 16360618332998;
De.__initData = __initData8;
animatedStyle3 = useAnimatedStyle(De);
const pe = function pe() {
return {
transform: [{
translateX: _spring.withSpring(derivedValue.get() < MAX_HOME_DRAWER_ANIMATING_WIDTH ? -Math.min(4, derivedValue.get() / MAX_HOME_DRAWER_ANIMATING_WIDTH * 4) : 0, HOME_DRAWER_FLING_PHYSICS)
}]
};
};
pe.__closure = {
drawerRevealX: derivedValue,
MAX_HOME_DRAWER_ANIMATING_WIDTH,
UNREAD_INDICATOR_ANIMATION_DISTANCE: 4,
withSpring: _spring.withSpring,
HOME_DRAWER_FLING_PHYSICS
};
pe.__workletHash = 8561772429103;
pe.__initData = __initData9;
animatedStyle4 = useAnimatedStyle(pe);
memo = useMemo(() => {
let settleDrawer2, shouldOpenFromPosition2;
const settleDrawer = function settleDrawer(a0) {
panelX.set(a0 ? MaxX : 0);
_ReanimatedRexport.runOnJS(_NavigationRouteUtils_native.setHomeDrawerState)(a0);
};
settleDrawer.__closure = {
panelX,
MaxX,
runOnJS: _ReanimatedRexport.runOnJS,
setHomeDrawerState: _NavigationRouteUtils_native.setHomeDrawerState
};
settleDrawer.__workletHash = 8226756372642;
settleDrawer.__initData = __initData10;
settleDrawer2 = settleDrawer;
const shouldOpenFromPosition = function shouldOpenFromPosition() {
return panelX.get() !== 0 && (panelX.get() > 0.5 * MaxX || panelX.get() >= INITIAL_OPEN_WIDTH && sharedValue.get() > 0);
};
shouldOpenFromPosition.__closure = {
panelX,
FRACTION_OF_WIDTH_FOR_DRAWER_TO_REMAIN_OPEN: 0.5,
MaxX,
INITIAL_OPEN_WIDTH,
dragOffsetX: sharedValue
};
shouldOpenFromPosition.__workletHash = 11654084007114;
shouldOpenFromPosition.__initData = __initData11;
shouldOpenFromPosition2 = shouldOpenFromPosition;
const r44 = Gesture.Pan().enabled(isFocused).manualActivation(true).shouldCancelWhenOutside(false).maxPointers(1);
const _ = function _(a0) {
isPanelTouchActive.set(true);
GestureState.set({
active: false,
initialX: a0.absoluteX,
initialY: a0.absoluteY,
panelX: panelX.get()
});
};
_.__closure = {
isPanelTouchActive,
GestureState,
panelX
};
_.__workletHash = 8825829705900;
_.__initData = __initData16;
const r49 = r44.onBegin(_);
const r51 = function(a0, a1) {
L14: {
if (!GestureState.get().active) {
L13: {
const absoluteX = a0.changedTouches[0].absoluteX;
const absoluteY = a0.changedTouches[0].absoluteY;
const r26 = Math.abs(absoluteX - GestureState.get().initialX);
if (!(Math.abs(absoluteY - GestureState.get().initialY) > r26)) {
if (panelX.get() === 0 && absoluteX < GestureState.get().initialX) {
break L13;
}
if (panelX.get() > 0 && absoluteX > GestureState.get().initialX) {
break L13;
}
if (r26 < 10) {
break L14;
}
if (!(panelX.get() === 0 && absoluteX > GestureState.get().initialX || absoluteX < GestureState.get().initialX)) {
break L14;
}
GestureState.set({
...GestureState.get(),
active: true,
initialX: absoluteX,
panelX: panelX.get()
});
a1.activate();
break L14;
}
}
a1.fail();
}
}
};
r51.__closure = {
GestureState,
panelX,
ACTIVATION_MIN_DISTANCE: 10
};
r51.__workletHash = 7484113391171;
r51.__initData = __initData15;
const r55 = r49.onTouchesMove(r51);
const n = function n(a0) {
L6: {
if (GestureState.get().active) {
const r15 = a0.absoluteX - GestureState.get().initialX;
sharedValue.set(r15);
const r21 = r15 + GestureState.get().panelX;
if (GestureState.get().panelX === 0 && r15 >= 0 && r15 < INITIAL_OPEN_WIDTH) {
panelX.set(Math.max(r21 / 3, 0));
break L6;
}
panelX.set(Math.max(r21, 0));
}
}
};
n.__closure = {
GestureState,
dragOffsetX: sharedValue,
INITIAL_OPEN_WIDTH,
panelX,
DRAWER_RESISTANCE: 3
};
n.__workletHash = 15118338555898;
n.__initData = __initData14;
const r61 = r55.onChange(n);
const t = function t(a0) {
let r3;
L16: {
if (a0.velocityX > 50 && sharedValue.get() > 40) {
const r67 = sharedValue.get() < INITIAL_OPEN_WIDTH;
r3 = true;
if (!r67) {
break L16;
}
_ReanimatedRexport.runOnJS(_HapticUtils_native.triggerHapticFeedback)(_HapticUtils_native.HapticFeedbackTypes.IMPACT_MEDIUM);
r3 = true;
} else if (a0.velocityX < -50 && sharedValue.get() < -40) {
_ReanimatedRexport.runOnJS(_HapticUtils_native.triggerHapticFeedback)(_HapticUtils_native.HapticFeedbackTypes.SOFT);
r3 = false;
} else {
r3 = panelX.get() !== 0 && (panelX.get() > 0.5 * MaxX || panelX.get() >= INITIAL_OPEN_WIDTH && sharedValue.get() > 0);
}
}
panelX.set(r3 ? MaxX : 0);
_ReanimatedRexport.runOnJS(_NavigationRouteUtils_native.setHomeDrawerState)(r3);
const r114 = GestureState.get().panelX > 0;
if (r3) {
_ReanimatedRexport.runOnJS(callback)(ServerDrawerInteractAction.OPEN);
} else if (!r114) {
_ReanimatedRexport.runOnJS(callback)(ServerDrawerInteractAction.PEEK);
}
};
t.__closure = {
FLING_MIN_VELOCITY: 50,
dragOffsetX: sharedValue,
FLING_MIN_DISTANCE: 40,
INITIAL_OPEN_WIDTH,
runOnJS: _ReanimatedRexport.runOnJS,
triggerHapticFeedback: _HapticUtils_native.triggerHapticFeedback,
HapticFeedbackTypes: _HapticUtils_native.HapticFeedbackTypes,
shouldOpenFromPosition: shouldOpenFromPosition2,
settleDrawer: settleDrawer2,
GestureState,
trackServerDrawerInteract: callback,
ServerDrawerInteractAction
};
t.__workletHash = 11139594764616;
t.__initData = __initData13;
const r77 = r61.onEnd(t);
const e = function e() {
if (panelX.get() > 0 && panelX.get() < MaxX) {
const r4 = panelX.get() !== 0 && (panelX.get() > 0.5 * MaxX || panelX.get() >= INITIAL_OPEN_WIDTH && sharedValue.get() > 0);
panelX.set(r4 ? MaxX : 0);
_ReanimatedRexport.runOnJS(_NavigationRouteUtils_native.setHomeDrawerState)(r4);
}
isPanelTouchActive.set(false);
_ReanimatedRexport.runOnJS(noteInteraction)();
GestureState.set({
active: false,
initialX: 0,
initialY: 0,
panelX: 0
});
sharedValue.set(0);
};
e.__closure = {
panelX,
MaxX,
settleDrawer: settleDrawer2,
shouldOpenFromPosition: shouldOpenFromPosition2,
isPanelTouchActive,
runOnJS: _ReanimatedRexport.runOnJS,
noteInteraction,
GestureState,
dragOffsetX: sharedValue
};
e.__workletHash = 15210416953749;
e.__initData = __initData12;
return r77.onFinalize(e);
}, [GestureState, panelX, sharedValue, isFocused, MaxX, isPanelTouchActive, noteInteraction, callback]);
return {
gesture: memo,
panelStyles: animatedStyle,
homeDrawerState: _slicedToArray(useState(() => ({
gesture: memo,
panelStyles: animatedStyle,
GestureState,
panelX,
panelSpringTranslateX: derivedValue3,
guildsBarLabelDrawerStyle: animatedStyle2,
guildsBarIconDrawerStyle: animatedStyle3,
guildsBarUnreadDrawerStyle: animatedStyle4
})), 1)[0]
};
}
export { context as HomeDrawerStateContext };