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

54 lines
1.7 KiB
TypeScript

// Metro module 13627 (f13628).
import { createContext, useState, useCallback, useMemo, useContext, useEffect } from "react";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module13628 from "../../../_bundle/Module13628";
const useStyles = createStyles({
viewDefaults: {
flex: 1
}
});
const context = createContext({
keyCommands: [],
addKeyCommand: () => {},
removeKeyCommand: () => {}
});
export default function KeyCommandsView(props) {
let callback2;
const { style, ...props2 } = props;
callback2 = void 0;
const styles = useStyles();
const [state, setState] = useState([]);
const callback = useCallback((c27543_0) => {
setState((prevState) => [...prevState, c27543_0]);
}, []);
callback2 = useCallback((c27544_0) => {
setState((prevState) => prevState.filter((item) => item.eventName !== c27544_0));
}, []);
return <context.Provider value={useMemo(() => ({
keyCommands: state,
addKeyCommand: callback,
removeKeyCommand: callback2
}), [state, callback, callback2])}>
<Module13628 {...props2} style={[styles.viewDefaults, style]} keyCommands={state} onKeyCommand={({ nativeEvent }) => {
const r8 = state.find((item) => item.eventName === nativeEvent.eventName);
if (r8 != null) {
r8.onKeyCommand(nativeEvent);
}
}} />
</context.Provider>;
};
export function useKeyCommands(a0) {
const context2 = useContext(context);
const { addKeyCommand: addKeyCommand2, removeKeyCommand: removeKeyCommand2 } = context2;
useEffect(() => {
for (const item of a0) {
addKeyCommand2(item);
}
return () => {
for (const item of a0) {
removeKeyCommand2(item.eventName);
}
};
}, [addKeyCommand2, removeKeyCommand2, a0]);
}