191c81973S猫头猫import {GlobalState} from '@/utils/stateMapper'; 2ec4205c4S猫头猫import {DeviceEventEmitter} from 'react-native'; 3378a6099S猫头猫import panels from './types'; 4378a6099S猫头猫 5378a6099S猫头猫type IPanel = typeof panels; 6378a6099S猫头猫type IPanelkeys = keyof IPanel; 7378a6099S猫头猫 891c81973S猫头猫interface IPanelInfo { 991c81973S猫头猫 name: IPanelkeys | null; 1091c81973S猫头猫 payload: any; 1191c81973S猫头猫} 12378a6099S猫头猫 1391c81973S猫头猫/** 浮层信息 */ 1491c81973S猫头猫export const panelInfoStore = new GlobalState<IPanelInfo>({ 1591c81973S猫头猫 name: null, 1691c81973S猫头猫 payload: null, 1791c81973S猫头猫}); 18378a6099S猫头猫 19*c15039e2S猫头猫export function showPanel<T extends IPanelkeys>( 20378a6099S猫头猫 name: T, 21378a6099S猫头猫 payload?: Parameters<IPanel[T]>[0], 22378a6099S猫头猫) { 23ec4205c4S猫头猫 if (panelInfoStore.getValue().name) { 24ec4205c4S猫头猫 DeviceEventEmitter.emit('hidePanel', () => { 2591c81973S猫头猫 panelInfoStore.setValue({ 2691c81973S猫头猫 name, 2791c81973S猫头猫 payload, 2891c81973S猫头猫 }); 29ec4205c4S猫头猫 }); 30ec4205c4S猫头猫 } else { 31ec4205c4S猫头猫 panelInfoStore.setValue({ 32ec4205c4S猫头猫 name, 33ec4205c4S猫头猫 payload, 34ec4205c4S猫头猫 }); 35ec4205c4S猫头猫 } 36*c15039e2S猫头猫} 37378a6099S猫头猫 38*c15039e2S猫头猫export function hidePanel() { 39ec4205c4S猫头猫 DeviceEventEmitter.emit('hidePanel'); 40378a6099S猫头猫} 41