🆙 Init V3

This commit is contained in:
DuckieTM
2026-01-31 09:10:52 +01:00
commit 7feb10ab15
1733 changed files with 53405 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
export * from './useEventDispatcher';
export * from './useMessageEvent';
export * from './useNitroEvent';
export * from './useUiEvent';
+31
View File
@@ -0,0 +1,31 @@
import { IEventDispatcher, NitroEvent } from '@nitrots/nitro-renderer';
import { useEffect } from 'react';
export const useEventDispatcher = <T extends NitroEvent>(type: string | string[], eventDispatcher: IEventDispatcher, handler: (event: T) => void, enabled: boolean = true) =>
{
useEffect(() =>
{
if(!enabled) return;
if(Array.isArray(type))
{
type.map(name => eventDispatcher.addEventListener(name, handler));
}
else
{
eventDispatcher.addEventListener(type, handler);
}
return () =>
{
if(Array.isArray(type))
{
type.map(name => eventDispatcher.removeEventListener(name, handler));
}
else
{
eventDispatcher.removeEventListener(type, handler);
}
};
}, [ type, eventDispatcher, enabled, handler ]);
};
+22
View File
@@ -0,0 +1,22 @@
import {
GetCommunication,
IMessageEvent,
MessageEvent,
} from '@nitrots/nitro-renderer';
import { useEffect } from 'react';
export const useMessageEvent = <T extends IMessageEvent>(
eventType: typeof MessageEvent,
handler: (event: T) => void
) =>
{
useEffect(() =>
{
//@ts-ignore
const event = new eventType(handler);
GetCommunication().registerMessageEvent(event);
return () => GetCommunication().removeMessageEvent(event);
}, [eventType, handler]);
};
+8
View File
@@ -0,0 +1,8 @@
import { GetEventDispatcher, NitroEvent } from '@nitrots/nitro-renderer';
import { useEventDispatcher } from './useEventDispatcher';
export const useNitroEvent = <T extends NitroEvent>(
type: string | string[],
handler: (event: T) => void,
enabled = true
) => useEventDispatcher(type, GetEventDispatcher(), handler, enabled);
+5
View File
@@ -0,0 +1,5 @@
import { NitroEvent } from '@nitrots/nitro-renderer';
import { UI_EVENT_DISPATCHER } from '../../api';
import { useEventDispatcher } from './useEventDispatcher';
export const useUiEvent = <T extends NitroEvent>(type: string | string[], handler: (event: T) => void, enabled: boolean = true) => useEventDispatcher<T>(type, UI_EVENT_DISPATCHER, handler, enabled);