@adonis-agora/collaboration-client 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/excalidraw_board.d.ts +29 -0
- package/dist/src/components/excalidraw_board.d.ts.map +1 -0
- package/dist/src/components/excalidraw_board.js +47 -0
- package/dist/src/components/excalidraw_board.js.map +1 -0
- package/dist/src/hooks/use_excalidraw_sync.d.ts +36 -0
- package/dist/src/hooks/use_excalidraw_sync.d.ts.map +1 -0
- package/dist/src/hooks/use_excalidraw_sync.js +63 -0
- package/dist/src/hooks/use_excalidraw_sync.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import '@excalidraw/excalidraw/index.css';
|
|
2
|
+
export interface ExcalidrawBoardProps {
|
|
3
|
+
/** Nome do doc Yjs (ex.: `whiteboards/:id/canvas`). */
|
|
4
|
+
docName: string;
|
|
5
|
+
/** Modo somente leitura. */
|
|
6
|
+
readOnly?: boolean;
|
|
7
|
+
/** Código do idioma (default `'pt-BR'`). */
|
|
8
|
+
langCode?: string;
|
|
9
|
+
/** Base URL do servidor (ex.: `https://api.app`). */
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
/** Retorna cabeçalhos de auth (ex.: `() => ({ cookie })`). */
|
|
12
|
+
getHeaders: () => Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Componente pronto para edição colaborativa de lousa Excalidraw.
|
|
16
|
+
*
|
|
17
|
+
* Faz tudo: conecta ao doc Yjs, sincroniza desenho ↔ WebSocket, restaura
|
|
18
|
+
* estado salvo ao recarregar.
|
|
19
|
+
*
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <ExcalidrawBoard
|
|
22
|
+
* docName="whiteboards/meu-id/canvas"
|
|
23
|
+
* baseUrl="https://api.app"
|
|
24
|
+
* getHeaders={() => ({ cookie: document.cookie })}
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function ExcalidrawBoard({ docName, readOnly, langCode, baseUrl, getHeaders, }: ExcalidrawBoardProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=excalidraw_board.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excalidraw_board.d.ts","sourceRoot":"","sources":["../../../src/components/excalidraw_board.tsx"],"names":[],"mappings":"AAMA,OAAO,kCAAkC,CAAC;AAmD1C,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAgB,EAChB,QAAkB,EAClB,OAAO,EACP,UAAU,GACX,EAAE,oBAAoB,2CAWtB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState, Suspense, lazy } from 'react';
|
|
3
|
+
import { CollaborationProvider, useCollabDoc } from '../index.js';
|
|
4
|
+
import { useExcalidrawSync } from '../hooks/use_excalidraw_sync.js';
|
|
5
|
+
import { YjsCollabDoc } from '../docs/index.js';
|
|
6
|
+
// CSS do Excalidraw — bundler (Vite) resolve para o pacote instalado no app.
|
|
7
|
+
import '@excalidraw/excalidraw/index.css';
|
|
8
|
+
const ExcalidrawLazy = lazy(async () => {
|
|
9
|
+
const mod = await import('@excalidraw/excalidraw');
|
|
10
|
+
return { default: mod.Excalidraw };
|
|
11
|
+
});
|
|
12
|
+
function BoardLoading() {
|
|
13
|
+
return (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-stone-50", children: _jsx("p", { className: "text-sm text-muted-foreground", children: "Carregando lousa\u2026" }) }));
|
|
14
|
+
}
|
|
15
|
+
function ExcalidrawBoardInner({ docName, readOnly = false, langCode = 'pt-BR', }) {
|
|
16
|
+
const { doc } = useCollabDoc({ docName });
|
|
17
|
+
const collabDoc = useMemo(() => (doc ? new YjsCollabDoc(doc) : null), [doc]);
|
|
18
|
+
const [api, setApi] = useState(null);
|
|
19
|
+
const [mounted, setMounted] = useState(false);
|
|
20
|
+
useEffect(() => setMounted(true), []);
|
|
21
|
+
useExcalidrawSync({ doc: collabDoc, excalidrawAPI: api, editorId: docName });
|
|
22
|
+
if (!mounted || !collabDoc)
|
|
23
|
+
return _jsx(BoardLoading, {});
|
|
24
|
+
return (_jsx("div", { className: "relative h-full w-full overflow-hidden bg-stone-50", children: _jsx(Suspense, { fallback: _jsx(BoardLoading, {}), children: _jsx(ExcalidrawLazy, { excalidrawAPI: setApi, langCode: langCode, viewModeEnabled: readOnly, initialData: { appState: { viewBackgroundColor: '#fafaf9' } } }) }) }));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Componente pronto para edição colaborativa de lousa Excalidraw.
|
|
28
|
+
*
|
|
29
|
+
* Faz tudo: conecta ao doc Yjs, sincroniza desenho ↔ WebSocket, restaura
|
|
30
|
+
* estado salvo ao recarregar.
|
|
31
|
+
*
|
|
32
|
+
* ```tsx
|
|
33
|
+
* <ExcalidrawBoard
|
|
34
|
+
* docName="whiteboards/meu-id/canvas"
|
|
35
|
+
* baseUrl="https://api.app"
|
|
36
|
+
* getHeaders={() => ({ cookie: document.cookie })}
|
|
37
|
+
* />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export function ExcalidrawBoard({ docName, readOnly = false, langCode = 'pt-BR', baseUrl, getHeaders, }) {
|
|
41
|
+
const [mounted, setMounted] = useState(false);
|
|
42
|
+
useEffect(() => setMounted(true), []);
|
|
43
|
+
if (!mounted)
|
|
44
|
+
return _jsx(BoardLoading, {});
|
|
45
|
+
return (_jsx(CollaborationProvider, { baseUrl: baseUrl, getHeaders: getHeaders, children: _jsx(ExcalidrawBoardInner, { docName: docName, readOnly: readOnly, langCode: langCode }) }));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=excalidraw_board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excalidraw_board.js","sourceRoot":"","sources":["../../../src/components/excalidraw_board.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,6EAA6E;AAC7E,OAAO,kCAAkC,CAAC;AAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IACrC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,SAAS,YAAY;IACnB,OAAO,CACL,cAAK,SAAS,EAAC,4DAA4D,YACzE,YAAG,SAAS,EAAC,+BAA+B,uCAAsB,GAC9D,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,oBAAoB,CAAC,EAC5B,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,OAAO,GACQ;IAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtC,iBAAiB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAEtF,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IAEpD,OAAO,CACL,cAAK,SAAS,EAAC,oDAAoD,YACjE,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,YAAY,KAAG,YAClC,KAAC,cAAc,IACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,QAAQ,EACzB,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,GAC7D,GACO,GACP,CACP,CAAC;AACJ,CAAC;AAeD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,OAAO,EAClB,OAAO,EACP,UAAU,GACW;IACrB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IAEtC,OAAO,CACL,KAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,YAC7D,KAAC,oBAAoB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,GAC5D,CACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { CollabDoc } from '../docs/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Minimal imperative API that Excalidraw exposes for programmatic control.
|
|
4
|
+
* We avoid a hard dependency on `@excalidraw/excalidraw` types — the app
|
|
5
|
+
* passes the real `ExcalidrawImperativeAPI` from its own install.
|
|
6
|
+
*/
|
|
7
|
+
export interface ExcalidrawAPIHandle {
|
|
8
|
+
onChange(cb: (elements: readonly Record<string, unknown>[]) => void): () => void;
|
|
9
|
+
updateScene(scene: {
|
|
10
|
+
elements: readonly Record<string, unknown>[];
|
|
11
|
+
}): void;
|
|
12
|
+
}
|
|
13
|
+
export interface UseExcalidrawSyncOptions {
|
|
14
|
+
/** Documento colaborativo (do `useCollabDoc`). Pode ser `null` enquanto conecta. */
|
|
15
|
+
doc: CollabDoc | null;
|
|
16
|
+
/** API imperativa do Excalidraw (`excalidrawAPI` do componente). */
|
|
17
|
+
excalidrawAPI: ExcalidrawAPIHandle | null;
|
|
18
|
+
/** Chave do editor no doc (default `'excalidraw'`). */
|
|
19
|
+
editorId?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Liga um documento colaborativo à API imperativa do Excalidraw.
|
|
23
|
+
*
|
|
24
|
+
* - **Desenho local** → grava os elements no Y.Doc (replica via WebSocket).
|
|
25
|
+
* - **Mudança remota** → `updateScene` no canvas.
|
|
26
|
+
* - **Ao montar** → restaura o estado salvo do doc.
|
|
27
|
+
*
|
|
28
|
+
* ```tsx
|
|
29
|
+
* const [api, setApi] = useState(null)
|
|
30
|
+
* const { doc } = useCollabDoc({ docName: 'lousas/1' })
|
|
31
|
+
* useExcalidrawSync({ doc, excalidrawAPI: api })
|
|
32
|
+
* <Excalidraw excalidrawAPI={setApi} />
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function useExcalidrawSync({ doc, excalidrawAPI, editorId, }: UseExcalidrawSyncOptions): void;
|
|
36
|
+
//# sourceMappingURL=use_excalidraw_sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use_excalidraw_sync.d.ts","sourceRoot":"","sources":["../../../src/hooks/use_excalidraw_sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACjF,WAAW,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5E;AAED,MAAM,WAAW,wBAAwB;IACvC,oFAAoF;IACpF,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,oEAAoE;IACpE,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,QAAuB,GACxB,EAAE,wBAAwB,QA4C1B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { createExcalidrawAdapter } from '../editors/excalidraw.js';
|
|
3
|
+
/**
|
|
4
|
+
* Liga um documento colaborativo à API imperativa do Excalidraw.
|
|
5
|
+
*
|
|
6
|
+
* - **Desenho local** → grava os elements no Y.Doc (replica via WebSocket).
|
|
7
|
+
* - **Mudança remota** → `updateScene` no canvas.
|
|
8
|
+
* - **Ao montar** → restaura o estado salvo do doc.
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const [api, setApi] = useState(null)
|
|
12
|
+
* const { doc } = useCollabDoc({ docName: 'lousas/1' })
|
|
13
|
+
* useExcalidrawSync({ doc, excalidrawAPI: api })
|
|
14
|
+
* <Excalidraw excalidrawAPI={setApi} />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function useExcalidrawSync({ doc, excalidrawAPI, editorId = 'excalidraw', }) {
|
|
18
|
+
const adapter = useMemo(() => createExcalidrawAdapter(), []);
|
|
19
|
+
const view = useMemo(() => (doc ? adapter.create(doc, editorId) : null), [adapter, doc, editorId]);
|
|
20
|
+
const localFlag = useRef(null);
|
|
21
|
+
// Ao montar, carrega o estado inicial do doc no canvas.
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (!excalidrawAPI || !view)
|
|
24
|
+
return;
|
|
25
|
+
const scene = view.state;
|
|
26
|
+
if (scene.elements.length > 0) {
|
|
27
|
+
excalidrawAPI.updateScene({
|
|
28
|
+
elements: scene.elements,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}, [excalidrawAPI, view]);
|
|
32
|
+
// Desenho local → escreve no doc.
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (!excalidrawAPI || !view)
|
|
35
|
+
return;
|
|
36
|
+
const unsub = excalidrawAPI.onChange((els) => {
|
|
37
|
+
const plain = els.map((e) => ({ ...e }));
|
|
38
|
+
localFlag.current = Symbol('local');
|
|
39
|
+
view.update({ elements: plain });
|
|
40
|
+
queueMicrotask(() => {
|
|
41
|
+
localFlag.current = null;
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
return () => unsub?.();
|
|
45
|
+
}, [excalidrawAPI, view]);
|
|
46
|
+
// Mudança remota → atualiza o canvas.
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!doc || !excalidrawAPI || !view)
|
|
49
|
+
return;
|
|
50
|
+
const unsub = doc.onUpdate(() => {
|
|
51
|
+
if (localFlag.current || !excalidrawAPI)
|
|
52
|
+
return;
|
|
53
|
+
const scene = view.state;
|
|
54
|
+
if (scene.elements.length > 0) {
|
|
55
|
+
excalidrawAPI.updateScene({
|
|
56
|
+
elements: scene.elements,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return () => unsub();
|
|
61
|
+
}, [doc, excalidrawAPI, view]);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=use_excalidraw_sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use_excalidraw_sync.js","sourceRoot":"","sources":["../../../src/hooks/use_excalidraw_sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAsBnE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,QAAQ,GAAG,YAAY,GACE;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAE9C,wDAAwD;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,WAAW,CAAC;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAA8C;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,kCAAkC;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAI,GAA0C,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACjC,cAAc,CAAC,GAAG,EAAE;gBAClB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,sCAAsC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI;YAAE,OAAO;QAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC9B,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,aAAa;gBAAE,OAAO;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,aAAa,CAAC,WAAW,CAAC;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAA8C;iBAC/D,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export type { UseVersionsResult } from './hooks/use_versions.js';
|
|
|
17
17
|
export type { CollabComment, CollabPeer, CollabStatus, CollabTokenInfo, CollabTransport, CollabVersion, CollaborationClientConfig, TransportFactory, } from './types.js';
|
|
18
18
|
export { useAutomergeDoc } from './hooks/use_automerge_doc.js';
|
|
19
19
|
export type { UseAutomergeDocResult } from './hooks/use_automerge_doc.js';
|
|
20
|
+
export { useExcalidrawSync } from './hooks/use_excalidraw_sync.js';
|
|
21
|
+
export type { UseExcalidrawSyncOptions, ExcalidrawAPIHandle } from './hooks/use_excalidraw_sync.js';
|
|
22
|
+
export { ExcalidrawBoard } from './components/excalidraw_board.js';
|
|
23
|
+
export type { ExcalidrawBoardProps } from './components/excalidraw_board.js';
|
|
20
24
|
export { createExcalidrawAdapter, createTldrawAdapter, createTextAdapter, } from './editors/index.js';
|
|
21
25
|
export type { CollabEditorAdapter, CollabEditorView, ExcalidrawScene, TldrawScene, } from './editors/index.js';
|
|
22
26
|
export { useCollabEditor } from './hooks/use_collab_editor.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -10,6 +10,8 @@ export { useAwareness } from './hooks/use_awareness.js';
|
|
|
10
10
|
export { useComments } from './hooks/use_comments.js';
|
|
11
11
|
export { useVersions } from './hooks/use_versions.js';
|
|
12
12
|
export { useAutomergeDoc } from './hooks/use_automerge_doc.js';
|
|
13
|
+
export { useExcalidrawSync } from './hooks/use_excalidraw_sync.js';
|
|
14
|
+
export { ExcalidrawBoard } from './components/excalidraw_board.js';
|
|
13
15
|
export { createExcalidrawAdapter, createTldrawAdapter, createTextAdapter, } from './editors/index.js';
|
|
14
16
|
export { useCollabEditor } from './hooks/use_collab_editor.js';
|
|
15
17
|
export { YjsCollabDoc, AutomergeCollabDoc } from './docs/index.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAYtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAYtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonis-agora/collaboration-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Client-side React hooks for @adonis-agora/collaboration — collaborative docs, presence, comments and versions. Part of the Agora ecosystem.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"yjs": "^13.6.27"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"react": "^18.0.0 || ^19.0.0"
|
|
36
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
37
|
+
"@excalidraw/excalidraw": "^0.17.6 || ^0.18.0"
|
|
37
38
|
},
|
|
38
39
|
"peerDependenciesMeta": {
|
|
39
40
|
"react": {
|