Skip to content

Commit 58ec7ed

Browse files
authored
Make React ProseMirror optional for Presence (#43)
Exposes two plugins, one using vanilla ProseMirror View decorations and one using React-based ones. The React plugin is exported via @pitter-patter/presence-client/react, and so will be ignored if that path is never imported. This allows clients that are not using React ProseMirror to use Presence, without needing to install the (now optional) React, React DOM, and React ProseMirror peer dependencies.
1 parent 19a9494 commit 58ec7ed

31 files changed

Lines changed: 434 additions & 268 deletions

.yarn/versions/30636284.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
releases:
2+
"@pitter-patter/presence-client": minor

packages/demo/src/editor/Editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ import {
1515
collab,
1616
} from "@pitter-patter/collab-client";
1717
import {
18-
presence,
1918
PresenceClient,
2019
receivePresenceTransaction,
2120
LongPollListener as PresenceLongPollListener,
2221
PresenceClientConfig,
2322
} from "@pitter-patter/presence-client";
23+
import { presence } from "@pitter-patter/presence-client/react";
2424
import {
2525
Snapshot,
2626
VersionHistoryClient,

packages/docs/content/docs/presence/quick-start.md renamed to packages/docs/content/docs/presence/quick-start.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ app.post("/api/docs/:docId/presence", async (req, res) => {
6565

6666
## Configure your frontend
6767

68+
<Callout title="Using React?" type="idea">
69+
If you’re using `@handlewithcare/react-prosemirror` to render your ProseMirror editor with React,
70+
you should import the `presence` plugin from `@pitter-patter/presence-client/react`, instead of
71+
`@pitter-patter/presence-client`!
72+
</Callout>
73+
6874
```npm
6975
npm i @pitter-patter/presence-client
7076
```

packages/docs/content/docs/presence/reference/presence-client/README.md

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,7 @@ title: "@pitter-patter/presence-client"
44

55
# @pitter-patter/presence-client
66

7-
## Classes
7+
## Modules
88

9-
- [LongPollListener](/docs/presence/reference/presence-client/classes/LongPollListener)
10-
- [PresenceClient](/docs/presence/reference/presence-client/classes/PresenceClient)
11-
12-
## Interfaces
13-
14-
- [IndicatorListener](/docs/presence/reference/presence-client/interfaces/IndicatorListener)
15-
- [LongPollListenerOptions](/docs/presence/reference/presence-client/interfaces/LongPollListenerOptions)
16-
- [PresenceClientConfig](/docs/presence/reference/presence-client/interfaces/PresenceClientConfig)
17-
- [PresenceIndicator](/docs/presence/reference/presence-client/interfaces/PresenceIndicator)
18-
19-
## Variables
20-
21-
- [presenceKey](/docs/presence/reference/presence-client/variables/presenceKey)
22-
23-
## Functions
24-
25-
- [presence](/docs/presence/reference/presence-client/functions/presence)
26-
- [receivePresenceTransaction](/docs/presence/reference/presence-client/functions/receivePresenceTransaction)
9+
- [index](/docs/presence/reference/presence-client/index/README)
10+
- [react](/docs/presence/reference/presence-client/react/README)

packages/docs/content/docs/presence/reference/presence-client/functions/presence.md

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: index
3+
---
4+
5+
# index
6+
7+
## Classes
8+
9+
- [LongPollListener](/docs/presence/reference/presence-client/index/classes/LongPollListener)
10+
- [PresenceClient](/docs/presence/reference/presence-client/index/classes/PresenceClient)
11+
12+
## Interfaces
13+
14+
- [IndicatorListener](/docs/presence/reference/presence-client/index/interfaces/IndicatorListener)
15+
- [LongPollListenerOptions](/docs/presence/reference/presence-client/index/interfaces/LongPollListenerOptions)
16+
- [PresenceClientConfig](/docs/presence/reference/presence-client/index/interfaces/PresenceClientConfig)
17+
- [PresenceIndicator](/docs/presence/reference/presence-client/index/interfaces/PresenceIndicator)
18+
- [PresenceState](/docs/presence/reference/presence-client/index/interfaces/PresenceState)
19+
20+
## Variables
21+
22+
- [presence](/docs/presence/reference/presence-client/index/variables/presence)
23+
- [presenceKey](/docs/presence/reference/presence-client/index/variables/presenceKey)
24+
25+
## Functions
26+
27+
- [receivePresenceTransaction](/docs/presence/reference/presence-client/index/functions/receivePresenceTransaction)

packages/docs/content/docs/presence/reference/presence-client/classes/LongPollListener.md renamed to packages/docs/content/docs/presence/reference/presence-client/index/classes/LongPollListener.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ title: LongPollListener
55
# Class: LongPollListener
66

77
Defined in:
8-
[index.ts:121](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L121)
8+
[index.ts:116](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L116)
99

10-
An [IndicatorListener](/docs/presence/reference/presence-client/interfaces/IndicatorListener) that
11-
polls an endpoint for remote updates to a document's presence state. Intended to be used with an
12-
remote long polling endpoint that call a Presence Authority's
10+
An [IndicatorListener](/docs/presence/reference/presence-client/index/interfaces/IndicatorListener)
11+
that polls an endpoint for remote updates to a document's presence state. Intended to be used with
12+
an remote long polling endpoint that call a Presence Authority's
1313
[listenForPresence](https://pitter-patter.dev/docs/presence/reference/presence-server/classes/PresenceAuthority#listenforpresence)
1414
function to efficiently listen for updates.
1515

@@ -22,7 +22,7 @@ new LongPollListener(url: URL, options?: LongPollListenerOptions): LongPollListe
2222
```
2323

2424
Defined in:
25-
[index.ts:128](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L128)
25+
[index.ts:123](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L123)
2626

2727
#### Parameters
2828

@@ -34,7 +34,7 @@ the url that polling requests will be sent to
3434

3535
##### options?
3636

37-
[`LongPollListenerOptions`](/docs/presence/reference/presence-client/interfaces/LongPollListenerOptions)
37+
[`LongPollListenerOptions`](/docs/presence/reference/presence-client/index/interfaces/LongPollListenerOptions)
3838
= `{}`
3939

4040
#### Returns
@@ -52,7 +52,7 @@ listen(clientId: string, options?: {
5252
```
5353

5454
Defined in:
55-
[index.ts:143](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L143)
55+
[index.ts:138](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L138)
5656

5757
#### Parameters
5858

@@ -69,7 +69,7 @@ Defined in:
6969
#### Returns
7070

7171
`AsyncGenerator`\<`Record`\<`string`,
72-
[`PresenceIndicator`](/docs/presence/reference/presence-client/interfaces/PresenceIndicator)\>,
72+
[`PresenceIndicator`](/docs/presence/reference/presence-client/index/interfaces/PresenceIndicator)\>,
7373
`void`, `unknown`\>
7474

7575
---
@@ -81,7 +81,7 @@ update(headers: Record<string, string>): void;
8181
```
8282

8383
Defined in:
84-
[index.ts:139](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L139)
84+
[index.ts:134](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L134)
8585

8686
Update the headers sent with long polling requests.
8787

packages/docs/content/docs/presence/reference/presence-client/classes/PresenceClient.md renamed to packages/docs/content/docs/presence/reference/presence-client/index/classes/PresenceClient.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ title: PresenceClient
55
# Class: PresenceClient
66

77
Defined in:
8-
[index.ts:24](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L24)
8+
[index.ts:19](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L19)
99

1010
The client that manages sending local presence state to the remote server and listening for remote
1111
changes to presence state.
@@ -19,13 +19,13 @@ new PresenceClient(config: PresenceClientConfig): PresenceClient;
1919
```
2020

2121
Defined in:
22-
[index.ts:33](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L33)
22+
[index.ts:28](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L28)
2323

2424
#### Parameters
2525

2626
##### config
2727

28-
[`PresenceClientConfig`](/docs/presence/reference/presence-client/interfaces/PresenceClientConfig)
28+
[`PresenceClientConfig`](/docs/presence/reference/presence-client/index/interfaces/PresenceClientConfig)
2929

3030
#### Returns
3131

@@ -40,7 +40,7 @@ listen(signal?: AbortSignal): Promise<void>;
4040
```
4141

4242
Defined in:
43-
[index.ts:93](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L93)
43+
[index.ts:88](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L88)
4444

4545
Start listening for remote presence changes. This function should only be called once.
4646

@@ -63,7 +63,7 @@ send(editorState: EditorState): Promise<void>;
6363
```
6464

6565
Defined in:
66-
[index.ts:44](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L44)
66+
[index.ts:39](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L39)
6767

6868
Send updated presence state to the remote PresenceAuthority.
6969

@@ -86,7 +86,7 @@ update(config: Partial<Omit<PresenceClientConfig, "listener">>): void;
8686
```
8787

8888
Defined in:
89-
[index.ts:85](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L85)
89+
[index.ts:80](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/index.ts#L80)
9090

9191
Updates the desired portion of the client's `PresenceClientConfig`. For example, this can be used to
9292
update the auth headers used by `send`.
@@ -95,7 +95,7 @@ update the auth headers used by `send`.
9595

9696
##### config
9797

98-
`Partial`\<`Omit`\<[`PresenceClientConfig`](/docs/presence/reference/presence-client/interfaces/PresenceClientConfig),
98+
`Partial`\<`Omit`\<[`PresenceClientConfig`](/docs/presence/reference/presence-client/index/interfaces/PresenceClientConfig),
9999
`"listener"`\>\>
100100

101101
#### Returns

packages/docs/content/docs/presence/reference/presence-client/functions/receivePresenceTransaction.md renamed to packages/docs/content/docs/presence/reference/presence-client/index/functions/receivePresenceTransaction.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ function receivePresenceTransaction(
1111
): Transaction;
1212
```
1313

14-
Defined in:
15-
[plugin.ts:23](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/plugin.ts#L23)
14+
Defined in: basePlugin.ts:19
1615

1716
Merges updated presence indicators into an editor state.
1817

@@ -25,7 +24,7 @@ Merges updated presence indicators into an editor state.
2524
### presence
2625

2726
`Record`\<`string`,
28-
[`PresenceIndicator`](/docs/presence/reference/presence-client/interfaces/PresenceIndicator)\>
27+
[`PresenceIndicator`](/docs/presence/reference/presence-client/index/interfaces/PresenceIndicator)\>
2928

3029
## Returns
3130

packages/docs/content/docs/presence/reference/presence-client/interfaces/IndicatorListener.md renamed to packages/docs/content/docs/presence/reference/presence-client/index/interfaces/IndicatorListener.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ title: IndicatorListener
55
# Interface: IndicatorListener
66

77
Defined in:
8-
[index.ts:13](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L13)
8+
[config.ts:3](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/config.ts#L3)
99

1010
## Properties
1111

@@ -21,7 +21,7 @@ listen: (
2121
```
2222

2323
Defined in:
24-
[index.ts:14](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/presence-client/src/index.ts#L14)
24+
[config.ts:4](https://github.com/handlewithcarecollective/pitter-patter/blob/5d0afded00b080a66ff242336c2afe1d7fdbb5a7/packages/presence-client/src/config.ts#L4)
2525

2626
#### Parameters
2727

@@ -38,4 +38,4 @@ Defined in:
3838
#### Returns
3939

4040
`AsyncIterableIterator`\<`Record`\<`string`,
41-
[`PresenceIndicator`](/docs/presence/reference/presence-client/interfaces/PresenceIndicator)\>\>
41+
[`PresenceIndicator`](/docs/presence/reference/presence-client/index/interfaces/PresenceIndicator)\>\>

0 commit comments

Comments
 (0)