@protostr/componentex
v0.9.17
Published
<p align="center"> <img src="./src/panel/assets/neko-awake.gif"> </p>
Downloads
563
Readme
ComponentEx
We've got:
- Fancy component lifecycle callbacks
interface ComponentLifecycleCallbacks<Shared, Private, Props> {
onComponentRegister(): ComponentRegistrationInfo<Shared>;
onComponentWake?(component: IComponent<Shared>): void;
onInstanceCreate(component: IComponent<Shared>, props: Props): ComponentInstatiationInfo<Private>;
onInstanceRender(self: IComponentInstance<Shared, Private>, props: Props, children: ReadonlyArray<MaxWhere.Node>): Promise<MaxWhere.Node>;
onInstanceRendered?(self: IComponentInstance<Shared, Private>): Promise<void>;
onInstanceDestroy(self: IComponentInstance<Shared, Private>): unknown | Promise<unknown>;
onComponentSleep?(component: IComponent<Shared>): unknown | Promise<unknown>;
}
- Hot reloadable webviews and overlays
- Intermediary "host" JS module between the component and the web content
- Handles messages, runs in the main process
- Automatically reloaded when it changes on the disk; webview is also recreated
- Intermediary "host" JS module between the component and the web content
- Communication channels
- Built-in support for
- Component <=> Webview channels over Electron IPC
- Webview <=> Webview channels over BroadcastChannels
- Negotiation (head waits for terminals to initialize and assigns them unique IDs)
- Waiting for specific messages
- Built-in support for
async function waitForUsedToPressButtonOnTheOverlay(channel: ICommHead<Message>) {
await channel.waitForMessage((subchannel, msg) => msg.kind === 'user-pressed-button');
}
- Raw mesh utils
- Raw mesh managers: refcounting, arena
- ThreeJS geometry -> raw mesh converter
- Audio API
- XR toolkit
- Resource cleanup utilities that generate compile-time errors if u forget to free something!!
<form>
s that automatically send a message when they change