Files
discord-decomp/sources/design/components/ContextMenu/native/ContextMenuState.native.tsx
T
2026-07-27 16:20:00 +03:00

152 lines
8.4 KiB
TypeScript

/* Metro module 8812; source: design/components/ContextMenu/native/ContextMenuState.native.tsx; dependencies: [31, 629, 690, 4017, 4081, 2] */
function _fun68896(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#68896, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:6, offset: 0x01c611b8, size: 277 bytes, params: 8, frame: 20
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_2 = importAll(31) /* metro dependency 31 */;
let value = require(629) /* metro dependency 629 */;
value = value.create(function() {
return {menu: null};
});
object = {code: 'function updateContextMenuState_ContextMenuStateNativeTsx1(absoluteX,absoluteY,state){const{INDEX_BOUNDS_WIDTH_OFFSET,INDEX_BOUNDS_HEIGHT_OFFSET,INDEX_BOUNDS_PAGE_Y_OFFSET,INDEX_BOUNDS_PAGE_X_OFFSET,INDEX_BOUNDS_OFFSET,runOnJS,triggerHapticFeedback,HapticFeedbackTypes}=this.__closure;const{pan:pan,itemMeasurements:itemMeasurements,activeIndex:activeIndex}=state;pan.set(absoluteY);const bounds=itemMeasurements.get();let offset=0;while(offset<bounds.length){const width=bounds[offset+INDEX_BOUNDS_WIDTH_OFFSET];const height=bounds[offset+INDEX_BOUNDS_HEIGHT_OFFSET];const pageY=bounds[offset+INDEX_BOUNDS_PAGE_Y_OFFSET];const pageX=bounds[offset+INDEX_BOUNDS_PAGE_X_OFFSET];const lowerY=pageY;const upperY=pageY+height;const lowerX=pageX;const upperX=pageX+width;if(absoluteY>=lowerY&&absoluteY<=upperY&&absoluteX>=lowerX&&absoluteX<=upperX){const index=offset/INDEX_BOUNDS_OFFSET;if(activeIndex.get()!==index){activeIndex.set(index);runOnJS(triggerHapticFeedback)(HapticFeedbackTypes.IMPACT_LIGHT);}return;}offset+=INDEX_BOUNDS_OFFSET;}activeIndex.set(-1);}'};
const value2 = _fun68898();
(require(2) /* metro dependency 2 */).fileFinishedImporting('design/components/ContextMenu/native/ContextMenuState.native.tsx');
exports.INDEX_BOUNDS_OFFSET = 4;
exports.INDEX_BOUNDS_PAGE_X_OFFSET = 0;
exports.INDEX_BOUNDS_PAGE_Y_OFFSET = 1;
exports.INDEX_BOUNDS_WIDTH_OFFSET = 2;
exports.INDEX_BOUNDS_HEIGHT_OFFSET = 3;
exports.ContextMenuStore = value;
exports.showContextMenu = showContextMenu;
exports.hideContextMenu = hideContextMenu;
exports.useActiveContextMenu = useActiveContextMenu;
exports.updateContextMenuState = value2;
exports.useContextMenuState = useContextMenuState;
exports.resetContextMenuState = function({activeIndex, pan, itemMeasurements}) {
activeIndex.set(-1);
pan.set(-1);
if (itemMeasurements.get().length > 0) {
itemMeasurements.set([]);
}
};
}
function _fun68898() { // fn#68898, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:1226, offset: 0x01c612d8, size: 134 bytes, params: 1, frame: 16
const closure = updateContextMenuState;
const object2 = {'INDEX_BOUNDS_WIDTH_OFFSET': 2, 'INDEX_BOUNDS_HEIGHT_OFFSET': 3, 'INDEX_BOUNDS_PAGE_Y_OFFSET': 1,
'INDEX_BOUNDS_PAGE_X_OFFSET': 0, 'INDEX_BOUNDS_OFFSET': 4};
object2.runOnJS = (require(4017) /* metro dependency 4017: ReanimatedRexport */).runOnJS;
object2.triggerHapticFeedback = (require(4081) /* metro dependency 4081: HapticUtilsNative */).triggerHapticFeedback;
const HapticFeedbackTypes = (require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes;
object2.HapticFeedbackTypes = HapticFeedbackTypes;
closure.__closure = object2;
closure.__workletHash = 10158111154044;
closure.__initData = env0_4;
return closure;
}
function showContextMenu(a0) { // fn#68900, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2296, offset: 0x01c6146f, size: 54 bytes, params: 2, frame: 12
const env0_0 = a0;
(require(690) /* metro dependency 690: ReactBatchUpdatesNative */).batchUpdates(_fun68901);
}
function hideContextMenu() { // fn#68902, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2392, offset: 0x01c614c7, size: 47 bytes, params: 1, frame: 12
(require(690) /* metro dependency 690: ReactBatchUpdatesNative */).batchUpdates(_fun68903);
}
function useActiveContextMenu() { // fn#68905, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2517, offset: 0x01c61530, size: 25 bytes, params: 1, frame: 11
return env0_3(function(a0) {
return a0.menu;
});
}
function useContextMenuState() { // fn#68907, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2621, offset: 0x01c61554, size: 140 bytes, params: 1, frame: 20
const value2 = (require(4017) /* metro dependency 4017: ReanimatedRexport */).useSharedValue(-1);
const value3 = (require(4017) /* metro dependency 4017: ReanimatedRexport */).useSharedValue([]);
const value4 = (require(4017) /* metro dependency 4017: ReanimatedRexport */).useSharedValue(-1);
return value4.useMemo(_fun68908, [value2, value3, value4]);
}
function updateContextMenuState(a0, a1, {pan, itemMeasurements, activeIndex}) { // fn#68899, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:1264, offset: 0x01c6135e, size: 273 bytes, params: 4, frame: 24
var r3;
var property;
var property2;
var property3;
var property4;
var value3;
var runOnJS;
var triggerHapticFeedback;
var HapticFeedbackTypes;
var IMPACT_LIGHT;
pan.set(a1);
let value = itemMeasurements.get();
let length = value.length;
if (0 < length) {
r3 = 0;
reducibleLoop1: while (true) {
property = value[r3 + 2];
property2 = value[r3 + 3];
property3 = value[r3 + 1];
property4 = value[r3 + 0];
if (a1 >= property3) {
reducibleJoin5: while (true) {
if (a1 <= property3 + property2) {
if (a0 >= property4) {
if (a0 <= property4 + property) {
break reducibleLoop1;
}
break reducibleJoin5;
}
break reducibleJoin5;
}
break reducibleJoin5;
}
}
value3 = r3 + 4;
length = value.length;
if (!(value3 < length)) {
activeIndex.set(-1);
return undefined;
}
r3 = value3;
continue reducibleLoop1;
}
value = r3 / 4;
reducibleJoin9: while (true) {
if (activeIndex.get() !== value) {
activeIndex.set(value);
value = environment.__proto__;
value = require(4017) /* metro dependency 4017: ReanimatedRexport */;
runOnJS = value.runOnJS;
triggerHapticFeedback = (require(4081) /* metro dependency 4081: HapticUtilsNative */).triggerHapticFeedback;
value = Reflect.apply(runOnJS, value, [triggerHapticFeedback]);
HapticFeedbackTypes = (require(4081) /* metro dependency 4081: HapticUtilsNative */).HapticFeedbackTypes;
IMPACT_LIGHT = HapticFeedbackTypes.IMPACT_LIGHT;
value(IMPACT_LIGHT);
break reducibleJoin9;
}
break reducibleJoin9;
}
} else {
activeIndex.set(-1);
}
}
function _fun68901() { // fn#68901, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2346, offset: 0x01c614a5, size: 34 bytes, params: 1, frame: 12
return env1_3.setState({menu: env0_0});
}
function _fun68903() { // fn#68903, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2441, offset: 0x01c614f6, size: 31 bytes, params: 1, frame: 11
var environment;
let value = environment.__proto__;
env1_3.setState(function(a0) {
var value = a0;
return value.menu == null ? value : {menu: null};
});
}
function _fun68908() { // fn#68908, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8997:2761, offset: 0x01c615e0, size: 34 bytes, params: 1, frame: 3
return {pan: env0_0, itemMeasurements: env0_1, activeIndex: env0_2};
}