54 lines
1.7 KiB
TypeScript
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]);
|
|
}
|