@protostr/componentex

0.9.17 • Public • Published

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
  • 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
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

Readme

Keywords

none

Package Sidebar

Install

npm i @protostr/componentex

Weekly Downloads

14

Version

0.9.17

License

UNLICENSED

Unpacked Size

4.33 MB

Total Files

742

Last publish

Collaborators

  • protostr