- [ToDesktop Client Core](#todesktop-client-core)
  - [Installation](#installation)
  - [Example Usage](#example-usage)
  - [More Docs](#more-docs)

# ToDesktop Client Core

ToDesktop Client Core is now `1.x`. This library exposes type-safe APIs for programmatically managing ToDesktop Builder Applications.

> To continue using the legacy package, you can run `npm install --save @todesktop/client-core@legacy`. Otherwise, visit our docs on [breaking changes](https://www.todesktop.com/docs/recipes/v1-breaking-changes).

## Installation

```bash
npm install --save @todesktop/client-core
```

## Example Usage

You can use `@todesktop/client-core` to manage Trays that are created via ToDesktop Builder.

```js
import { object, tray } from "@todesktop/client-core";

const trayIdFromToDesktopBuilder = "JWJ3pS82Oe-6IA7beIAhm";

const trayRef = await object.retrieve({ id: trayIdFromToDesktopBuilder });
await tray.setTitle({ ref: trayRef, title: "Title" });

const title = await tray.getTitle({ ref: trayRef });
console.log(title); // Title
```

As another example, we can subscribe to custom menu events through the `appMenu` listener:

```js
import { appMenu } from "@todesktop/client-core";

const unsubscribe = appMenu.on("new-draft", () => {
  // ...
});

await unsubscribe();
```

## More Docs

Visit our [docs](https://www.todesktop.com/docs) for more usage examples.
