1.0.0 • Published 5 years ago

@karhu/react v1.0.0

Weekly downloads
55
License
Apache-2.0
Repository
-
Last release
5 years ago

@karhu/react

React bindings and components for Karhu. Expects @karhu/core to be there.

Install

npm install @karhu/core @karhu/react

Usage

import { KarhuProvider, useKarhu, KarhuComponent, AddCommand } from '@karhu/react';

Hooks

useKarhu

A React hook to access Karhu context and Karhu adapter. Expects to find a Karhu instance in application context.

On every property input change the commandsList is updated.

Call exec with a command id to execute the command and get the entry graph back.

Types:

// Props
type Props = {
  input: string;
};

// Returns
type ChildrenProviderObject = {
  commandsList: Command[];
  exec: (id: string) => CommandRunResult;
};

Usage:

function MyKarhu({input}) {
  const { exec, commandsList } = useKarhu(input);
  return 'your-ui'
}

const karhu = new Karhu()

<KarhuProvider value={karhu}>
  <MyKarhu input="" />
</KarhuProvider>

Components

<KarhuProvider>

Provide a Karhu instance in React context.

Props:

type Props = {
  value: Karhu;
};

Usage:

const karhu = new Karhu()

<KarhuProvider value={karhu}>
{
  // application
}
</KarhuProvider>

<KarhuComponent>

A combined React context Consumer and Karhu adapter. Expects to find a Karhu instance in application context.

On every property input change the children get re-rendered and the commandsList is updated.

Call exec with a command id to execute the command and get the entry graph back.

Types:

type Props = {
  children: (obj: ChildrenProviderObject) => {};
  input: string;
};

type ChildrenProviderObject = {
  commandsList: Command[];
  exec: (id: string) => CommandRunResult;
};

Usage:

const karhu = new Karhu()

<KarhuProvider value={karhu}>
  <KarhuComponent input="">
    {({ commandsList, exec }) => {
      // what to render
    }}
  </KarhuComponent>
</KarhuProvider>

<AddCommand>

Component to add a command to a Karhu instance. Expects to find a Karhu instance in application context.

Props:

type AddCommandProps = {
  command: UnregisteredCommand;
};

Usage:

const karhu = new Karhu();
const command = Karhu.createCommand({
  name: 'command',
  keywords: ['command'],
  onExec: () => {},
  render: () => {},
});

<KarhuProvider value={karhu}>
  <AddCommand command={command} />
</KarhuProvider>;
1.0.0

5 years ago

0.7.1

5 years ago

0.7.0

5 years ago

0.6.0

5 years ago

0.5.0

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.1.3-alpha.0

5 years ago