@powerhousedao/reactor-browser 4.0.0-staging.6 → 4.0.1
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/package.json +1 -1
- package/dist/src/hooks/document-state.d.ts.map +1 -1
- package/dist/src/hooks/document-state.js +2 -2
- package/dist/src/hooks/document-state.js.map +1 -1
- package/dist/src/hooks/index.d.ts +2 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +2 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAddDebouncedOperations.d.ts +2 -1
- package/dist/src/hooks/useAddDebouncedOperations.d.ts.map +1 -1
- package/dist/src/hooks/useAddDebouncedOperations.js +15 -8
- package/dist/src/hooks/useAddDebouncedOperations.js.map +1 -1
- package/dist/src/hooks/useDocument.d.ts +1 -0
- package/dist/src/hooks/useDocument.d.ts.map +1 -1
- package/dist/src/hooks/useDocument.js +14 -8
- package/dist/src/hooks/useDocument.js.map +1 -1
- package/dist/src/hooks/useDocumentEditor.d.ts +3 -3
- package/dist/src/hooks/useDocumentEditor.d.ts.map +1 -1
- package/dist/src/hooks/useDocumentEditor.js +6 -8
- package/dist/src/hooks/useDocumentEditor.js.map +1 -1
- package/dist/src/hooks/useDriveActions.d.ts +4 -1
- package/dist/src/hooks/useDriveActions.d.ts.map +1 -1
- package/dist/src/hooks/useDriveActions.js +22 -4
- package/dist/src/hooks/useDriveActions.js.map +1 -1
- package/dist/src/hooks/useDriveActionsWithUiNodes.d.ts +17 -0
- package/dist/src/hooks/useDriveActionsWithUiNodes.d.ts.map +1 -0
- package/dist/src/hooks/useDriveActionsWithUiNodes.js +72 -0
- package/dist/src/hooks/useDriveActionsWithUiNodes.js.map +1 -0
- package/dist/src/hooks/useDriveContext.d.ts +95 -1
- package/dist/src/hooks/useDriveContext.d.ts.map +1 -1
- package/dist/src/hooks/useDriveContext.js.map +1 -1
- package/dist/src/hooks/useUiNodesContext.d.ts +25 -0
- package/dist/src/hooks/useUiNodesContext.d.ts.map +1 -0
- package/dist/src/hooks/useUiNodesContext.js +168 -0
- package/dist/src/hooks/useUiNodesContext.js.map +1 -0
- package/dist/src/reactor.js +1 -1
- package/dist/src/reactor.js.map +1 -1
- package/dist/src/types/drive-editor.d.ts +69 -83
- package/dist/src/types/drive-editor.d.ts.map +1 -1
- package/dist/src/uiNodes/constants.d.ts +17 -0
- package/dist/src/uiNodes/constants.d.ts.map +1 -0
- package/dist/src/uiNodes/constants.js +24 -0
- package/dist/src/uiNodes/constants.js.map +1 -0
- package/dist/src/uiNodes/types.d.ts +61 -0
- package/dist/src/uiNodes/types.d.ts.map +1 -0
- package/dist/src/uiNodes/types.js +2 -0
- package/dist/src/uiNodes/types.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +3 -3
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-state.d.ts","sourceRoot":"","sources":["../../../src/hooks/document-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxE,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GACzC,IAAI,CACF,gBAAgB,EAChB,cAAc,GAAG,UAAU,GAAG,iBAAiB,GAAG,sBAAsB,CACzE,CAAC;AAEJ,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"document-state.d.ts","sourceRoot":"","sources":["../../../src/hooks/document-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxE,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GACzC,IAAI,CACF,gBAAgB,EAChB,cAAc,GAAG,UAAU,GAAG,iBAAiB,GAAG,sBAAsB,CACzE,CAAC;AAEJ,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAgE5B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,UAGvC;IACL,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,+BAaJ;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,UAGvC;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,eAYpE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB,aASA"}
|
|
@@ -14,7 +14,7 @@ export function useDocumentsState(args) {
|
|
|
14
14
|
const ids = documentIds ?? (await reactor.getDocuments(driveId));
|
|
15
15
|
const statesByDocumentId = {};
|
|
16
16
|
for (const id of ids) {
|
|
17
|
-
const document = await reactor.getDocument(id, options);
|
|
17
|
+
const document = await reactor.getDocument(driveId, id, options);
|
|
18
18
|
statesByDocumentId[id] = {
|
|
19
19
|
...document.state,
|
|
20
20
|
documentType: document.header.documentType,
|
|
@@ -37,7 +37,7 @@ export function useDocumentsState(args) {
|
|
|
37
37
|
if (update.driveId !== driveId ||
|
|
38
38
|
(documentIds && !documentIds.includes(update.documentId)))
|
|
39
39
|
return;
|
|
40
|
-
const updatedDocument = await reactor.getDocument(update.documentId, options);
|
|
40
|
+
const updatedDocument = await reactor.getDocument(driveId, update.documentId, options);
|
|
41
41
|
setStatesByDocumentId((prev) => {
|
|
42
42
|
const newStatesByDocumentId = { ...prev };
|
|
43
43
|
newStatesByDocumentId[update.documentId] = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-state.js","sourceRoot":"","sources":["../../../src/hooks/document-state.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQ1E,MAAM,UAAU,iBAAiB,CAAC,IAKjC;IACC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACxD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAE1D,EAAE,CAAC,CAAC;IACN,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,UAAU,UAAU;YACvB,IAAI,aAAa,CAAC,OAAO;gBAAE,OAAO;YAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO;YACjC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;YAE7B,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAA8B,EAAE,CAAC;YACzD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"document-state.js","sourceRoot":"","sources":["../../../src/hooks/document-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ export * from "./useDocument.js";
|
|
|
3
3
|
export * from "./useDocumentDrives.js";
|
|
4
4
|
export * from "./useDocumentEditor.js";
|
|
5
5
|
export * from "./useDriveActions.js";
|
|
6
|
+
export * from "./useDriveActionsWithUiNodes.js";
|
|
6
7
|
export * from "./useDriveContext.js";
|
|
8
|
+
export * from "./useUiNodesContext.js";
|
|
7
9
|
export * from "./useUserPermissions.js";
|
|
8
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -3,6 +3,8 @@ export * from "./useDocument.js";
|
|
|
3
3
|
export * from "./useDocumentDrives.js";
|
|
4
4
|
export * from "./useDocumentEditor.js";
|
|
5
5
|
export * from "./useDriveActions.js";
|
|
6
|
+
export * from "./useDriveActionsWithUiNodes.js";
|
|
6
7
|
export * from "./useDriveContext.js";
|
|
8
|
+
export * from "./useUiNodesContext.js";
|
|
7
9
|
export * from "./useUserPermissions.js";
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type Operation, type PHDocument } from "document-model";
|
|
2
2
|
import { type IDocumentDriveServer } from "document-drive";
|
|
3
3
|
export type UseAddDebouncedOperationsProps = {
|
|
4
|
-
|
|
4
|
+
driveId: string;
|
|
5
|
+
documentId: string;
|
|
5
6
|
};
|
|
6
7
|
export declare function useAddDebouncedOperations(reactor: IDocumentDriveServer | undefined, props: UseAddDebouncedOperationsProps): (operation: Operation) => Promise<PHDocument | undefined>;
|
|
7
8
|
//# sourceMappingURL=useAddDebouncedOperations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAddDebouncedOperations.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAddDebouncedOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAddDebouncedOperations.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAddDebouncedOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AA2C3D,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,KAAK,EAAE,8BAA8B,eAxClB,SAAS,qCA0F7B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { useCallback, useMemo } from "react";
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
2
|
+
import { useDocumentDrives } from "./useDocumentDrives.js";
|
|
2
3
|
import { useUserPermissions } from "./useUserPermissions.js";
|
|
3
4
|
function debounceOperations(callback, timeout = 50) {
|
|
4
5
|
let timer;
|
|
@@ -27,27 +28,33 @@ function debounceOperations(callback, timeout = 50) {
|
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
export function useAddDebouncedOperations(reactor, props) {
|
|
30
|
-
const { documentId } = props;
|
|
31
|
+
const { driveId, documentId } = props;
|
|
32
|
+
const [documentDrives] = useDocumentDrives(reactor);
|
|
33
|
+
const documentDrivesRef = useRef(documentDrives);
|
|
31
34
|
const { isAllowedToEditDocuments } = useUserPermissions() || {
|
|
32
35
|
isAllowedToCreateDocuments: false,
|
|
33
36
|
isAllowedToEditDocuments: false,
|
|
34
37
|
};
|
|
35
|
-
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
documentDrivesRef.current = documentDrives;
|
|
40
|
+
}, [documentDrives]);
|
|
41
|
+
const addOperations = useCallback(async (driveId, id, operations) => {
|
|
36
42
|
if (!isAllowedToEditDocuments) {
|
|
37
43
|
throw new Error("User is not allowed to edit documents");
|
|
38
44
|
}
|
|
39
45
|
if (!reactor) {
|
|
40
46
|
throw new Error("Reactor is not loaded");
|
|
41
47
|
}
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
const drive = documentDrivesRef.current.find((drive) => drive.header.id === driveId);
|
|
49
|
+
if (!drive) {
|
|
50
|
+
throw new Error(`Drive with id ${driveId} not found`);
|
|
44
51
|
}
|
|
45
|
-
const newDocument = await reactor.queueOperations(id, operations);
|
|
52
|
+
const newDocument = await reactor.queueOperations(driveId, id, operations);
|
|
46
53
|
return newDocument.document;
|
|
47
54
|
}, [isAllowedToEditDocuments, reactor]);
|
|
48
55
|
const addDebouncedOperations = useMemo(() => {
|
|
49
|
-
return debounceOperations((operations) => addOperations(documentId, operations));
|
|
50
|
-
}, [addOperations, documentId]);
|
|
56
|
+
return debounceOperations((operations) => addOperations(driveId, documentId, operations));
|
|
57
|
+
}, [addOperations, driveId, documentId]);
|
|
51
58
|
return addDebouncedOperations;
|
|
52
59
|
}
|
|
53
60
|
//# sourceMappingURL=useAddDebouncedOperations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAddDebouncedOperations.js","sourceRoot":"","sources":["../../../src/hooks/useAddDebouncedOperations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useAddDebouncedOperations.js","sourceRoot":"","sources":["../../../src/hooks/useAddDebouncedOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocument.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,WAAW,CACzB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,YAAY,GAAE,YAAiB,
|
|
1
|
+
{"version":3,"file":"useDocument.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,WAAW,CACzB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,YAAY,GAAE,YAAiB,0BA2ChC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useCallback, useEffect, useState } from "react";
|
|
2
2
|
export function useDocument(reactor, documentMeta = {}) {
|
|
3
|
-
const { documentId, documentType } = documentMeta;
|
|
3
|
+
const { documentId, documentType, driveId } = documentMeta;
|
|
4
4
|
const [document, setDocument] = useState();
|
|
5
5
|
const onStrandUpdate = useCallback((cb) => {
|
|
6
6
|
if (!reactor) {
|
|
@@ -11,22 +11,28 @@ export function useDocument(reactor, documentMeta = {}) {
|
|
|
11
11
|
useEffect(() => {
|
|
12
12
|
if (!reactor)
|
|
13
13
|
return;
|
|
14
|
-
if (!documentId || !documentType)
|
|
14
|
+
if (!driveId || !documentId || !documentType)
|
|
15
15
|
return;
|
|
16
|
-
reactor
|
|
17
|
-
|
|
16
|
+
reactor
|
|
17
|
+
.getDocument(driveId, documentId)
|
|
18
|
+
.then(setDocument)
|
|
19
|
+
.catch(console.error);
|
|
20
|
+
}, [driveId, documentId, documentType, reactor]);
|
|
18
21
|
useEffect(() => {
|
|
19
22
|
if (!reactor)
|
|
20
23
|
return;
|
|
21
|
-
if (!documentId || !documentType)
|
|
24
|
+
if (!driveId || !documentId || !documentType)
|
|
22
25
|
return;
|
|
23
26
|
const removeListener = onStrandUpdate((strand) => {
|
|
24
|
-
if (strand.documentId === documentId) {
|
|
25
|
-
reactor
|
|
27
|
+
if (strand.driveId === driveId && strand.documentId === documentId) {
|
|
28
|
+
reactor
|
|
29
|
+
.getDocument(driveId, documentId)
|
|
30
|
+
.then(setDocument)
|
|
31
|
+
.catch(console.error);
|
|
26
32
|
}
|
|
27
33
|
});
|
|
28
34
|
return removeListener;
|
|
29
|
-
}, [onStrandUpdate, documentId, documentType]);
|
|
35
|
+
}, [onStrandUpdate, driveId, documentId, documentType]);
|
|
30
36
|
return document;
|
|
31
37
|
}
|
|
32
38
|
//# sourceMappingURL=useDocument.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocument.js","sourceRoot":"","sources":["../../../src/hooks/useDocument.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDocument.js","sourceRoot":"","sources":["../../../src/hooks/useDocument.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQzD,MAAM,UAAU,WAAW,CACzB,OAAyC,EACzC,eAA6B,EAAE;IAE/B,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAE3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAA0B,CAAC;IAEnE,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,EAAkC,EAAE,EAAE;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY;YAAE,OAAO;QAErD,OAAO;aACJ,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC;aAChC,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY;YAAE,OAAO;QAErD,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACnE,OAAO;qBACJ,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC;qBAChC,IAAI,CAAC,WAAW,CAAC;qBACjB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IACxB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IAExD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -7,10 +7,10 @@ export type DocumentDispatchCallback<TDocument extends PHDocument> = (operation:
|
|
|
7
7
|
newState: TDocument;
|
|
8
8
|
}) => void;
|
|
9
9
|
export type UseDocumentEditorProps<TDocument extends PHDocument> = {
|
|
10
|
-
driveId: string
|
|
11
|
-
nodeId: string
|
|
10
|
+
driveId: string;
|
|
11
|
+
nodeId: string;
|
|
12
12
|
document: TDocument | undefined;
|
|
13
|
-
documentModelModule: DocumentModelModule<TDocument
|
|
13
|
+
documentModelModule: DocumentModelModule<TDocument>;
|
|
14
14
|
user?: User;
|
|
15
15
|
onExport?: () => void;
|
|
16
16
|
onOpenSwitchboardLink?: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentEditor.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDocumentEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAM/C,MAAM,MAAM,wBAAwB,CAAC,SAAS,SAAS,UAAU,IAAI,CACnE,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAC3C,KAAK,EAAE;IACL,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,KACE,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,UAAU,IAAI;IACjE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useDocumentEditor.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDocumentEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAM/C,MAAM,MAAM,wBAAwB,CAAC,SAAS,SAAS,UAAU,IAAI,CACnE,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAC3C,KAAK,EAAE;IACL,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,KACE,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,UAAU,IAAI;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,mBAAmB,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,SAAS,SAAS,UAAU,EACjE,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,KAAK,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG;IACzC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAC9B;uBAuBS,kBAAkB,CAAC,SAAS,CAAC,oBACnB,mBAAmB;;;EAkCxC;AAED,wBAAgB,iBAAiB,CAAC,SAAS,SAAS,UAAU,EAC5D,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,KAAK,EAAE,sBAAsB,CAAC,SAAS,CAAC;wEAtCpB,mBAAmB;;;EAkDxC"}
|
|
@@ -3,20 +3,18 @@ import { useAddDebouncedOperations } from "./useAddDebouncedOperations.js";
|
|
|
3
3
|
import { useConnectCrypto, useConnectDid } from "./useConnectCrypto.js";
|
|
4
4
|
import { useDocumentDispatch } from "./useDocumentDispatch.js";
|
|
5
5
|
export function useDocumentEditorProps(reactor, props) {
|
|
6
|
-
const { nodeId, documentModelModule, document: initialDocument, user, connectDid, sign, } = props;
|
|
7
|
-
const
|
|
6
|
+
const { nodeId, driveId, documentModelModule, document: initialDocument, user, connectDid, sign, } = props;
|
|
7
|
+
const addDebouncedOprations = useAddDebouncedOperations(reactor, {
|
|
8
|
+
driveId,
|
|
8
9
|
documentId: nodeId,
|
|
9
10
|
});
|
|
10
|
-
const [document, _dispatch, error] = useDocumentDispatch(documentModelModule
|
|
11
|
+
const [document, _dispatch, error] = useDocumentDispatch(documentModelModule.reducer, initialDocument);
|
|
11
12
|
function dispatch(action, onErrorCallback) {
|
|
12
13
|
const callback = (operation, state) => {
|
|
13
14
|
const { prevState } = state;
|
|
14
|
-
|
|
15
|
-
throw new Error("Node id is not set");
|
|
16
|
-
}
|
|
17
|
-
signOperation(operation, sign, nodeId, prevState, documentModelModule?.reducer, user)
|
|
15
|
+
signOperation(operation, sign, nodeId, prevState, documentModelModule.reducer, user)
|
|
18
16
|
.then((op) => {
|
|
19
|
-
return
|
|
17
|
+
return addDebouncedOprations(op);
|
|
20
18
|
})
|
|
21
19
|
.catch(console.error);
|
|
22
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentEditor.js","sourceRoot":"","sources":["../../../src/hooks/useDocumentEditor.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAqB/D,MAAM,UAAU,sBAAsB,CACpC,OAAyC,EACzC,KAGC;IAED,MAAM,EACJ,MAAM,EACN,mBAAmB,EACnB,QAAQ,EAAE,eAAe,EACzB,IAAI,EACJ,UAAU,EACV,IAAI,GACL,GAAG,KAAK,CAAC;IAEV,MAAM,
|
|
1
|
+
{"version":3,"file":"useDocumentEditor.js","sourceRoot":"","sources":["../../../src/hooks/useDocumentEditor.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAqB/D,MAAM,UAAU,sBAAsB,CACpC,OAAyC,EACzC,KAGC;IAED,MAAM,EACJ,MAAM,EACN,OAAO,EACP,mBAAmB,EACnB,QAAQ,EAAE,eAAe,EACzB,IAAI,EACJ,UAAU,EACV,IAAI,GACL,GAAG,KAAK,CAAC;IAEV,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,OAAO,EAAE;QAC/D,OAAO;QACP,UAAU,EAAE,MAAM;KACnB,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,mBAAmB,CACtD,mBAAmB,CAAC,OAAO,EAC3B,eAAe,CAChB,CAAC;IAEF,SAAS,QAAQ,CACf,MAAqC,EACrC,eAAqC;QAErC,MAAM,QAAQ,GAAwC,CACpD,SAAS,EACT,KAAK,EACL,EAAE;YACF,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YAE5B,aAAa,CACX,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,mBAAmB,CAAC,OAAO,EAC3B,IAAI,CACL;iBACE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACX,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC;iBACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,SAAS,CACP,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAC1C,QAAQ,EACR,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAyC,EACzC,KAAwC;IAExC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEpC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,OAAO,EAAE;QAC7D,GAAG,KAAK;QACR,UAAU;QACV,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { type DocumentDriveAction, type DocumentDriveDocument } from "document-drive";
|
|
2
2
|
import { type EditorDispatch, type PHDocument } from "document-model";
|
|
3
|
-
import { type
|
|
3
|
+
import { type UiNode } from "../uiNodes/types.js";
|
|
4
|
+
import { type IDriveContext } from "./useDriveContext.js";
|
|
4
5
|
/**
|
|
5
6
|
* Actions for managing a document drive
|
|
6
7
|
*/
|
|
7
8
|
export interface IDriveActions {
|
|
8
9
|
/** The drive context provided by the host application */
|
|
9
10
|
context: IDriveContext;
|
|
11
|
+
/** Selects a node in the drive */
|
|
12
|
+
selectNode: (node: UiNode | null) => void;
|
|
10
13
|
/**
|
|
11
14
|
* Creates a new folder in the drive
|
|
12
15
|
* @param name - Name of the folder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDriveActions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDriveActions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"useDriveActions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDriveActions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAS3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAc1D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,OAAO,EAAE,aAAa,CAAC;IAEvB,kCAAkC;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAE1C;;;;;OAKG;IACH,SAAS,EAAE,CACT,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,EAC5B,EAAE,CAAC,EAAE,MAAM,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;OAKG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7E;;;;;;;OAOG;IACH,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,UAAU,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,EAAE,CAAC,EAAE,MAAM,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;OAIG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;OAIG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;OAIG;IACH,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;OAGG;IACH,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAyJD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC7C,OAAO,EAAE,aAAa,GACrB,aAAa,CAKf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addFolder, copyNode, deleteNode, generateNodesCopy, isFolderNode, moveNode, updateNode, } from "document-drive";
|
|
1
|
+
import { addFolder, copyNode, deleteNode, generateAddNodeAction, generateNodesCopy, isFolderNode, moveNode, updateNode, } from "document-drive";
|
|
2
2
|
import { generateId as _generateId, } from "document-model";
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
const generateId = () => _generateId().toString();
|
|
@@ -20,6 +20,7 @@ function getNode(id, drive) {
|
|
|
20
20
|
function createDriveActions(document, dispatch, context) {
|
|
21
21
|
const drive = document;
|
|
22
22
|
const driveId = drive.header.id;
|
|
23
|
+
const { selectedNode } = context;
|
|
23
24
|
const handleAddFolder = async (name, parentFolder, id = generateId()) => {
|
|
24
25
|
dispatch(addFolder({
|
|
25
26
|
id,
|
|
@@ -28,10 +29,26 @@ function createDriveActions(document, dispatch, context) {
|
|
|
28
29
|
}));
|
|
29
30
|
};
|
|
30
31
|
const addDocument = async (name, documentType, document, parentFolder, id = generateId()) => {
|
|
31
|
-
|
|
32
|
+
const action = generateAddNodeAction(drive.state.global, {
|
|
33
|
+
id,
|
|
34
|
+
name,
|
|
35
|
+
parentFolder: parentFolder ?? null,
|
|
36
|
+
documentType,
|
|
37
|
+
document,
|
|
38
|
+
}, ["global"]);
|
|
39
|
+
dispatch(action);
|
|
32
40
|
};
|
|
33
|
-
const addFile = async (file,
|
|
34
|
-
|
|
41
|
+
const addFile = async (file, parentFolder = selectedNode && isFolderNode(selectedNode)
|
|
42
|
+
? selectedNode.id
|
|
43
|
+
: undefined, name = file.name.replace(/\.zip$/gim, "")) => {
|
|
44
|
+
const folder = parentFolder ? getNode(parentFolder, drive) : undefined;
|
|
45
|
+
if (parentFolder && !folder) {
|
|
46
|
+
throw new Error(`Parent folder with id "${parentFolder}" not found`);
|
|
47
|
+
}
|
|
48
|
+
if (folder && !isFolderNode(folder)) {
|
|
49
|
+
throw new Error(`Parent folder with id "${parentFolder}" is not a folder`);
|
|
50
|
+
}
|
|
51
|
+
await context.addFile(file, driveId, name, parentFolder);
|
|
35
52
|
};
|
|
36
53
|
const handleDeleteNode = async (id) => {
|
|
37
54
|
dispatch(deleteNode({ id }));
|
|
@@ -76,6 +93,7 @@ function createDriveActions(document, dispatch, context) {
|
|
|
76
93
|
};
|
|
77
94
|
return {
|
|
78
95
|
context,
|
|
96
|
+
selectNode: context.selectNode,
|
|
79
97
|
addFolder: handleAddFolder,
|
|
80
98
|
addFile,
|
|
81
99
|
addDocument,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDriveActions.js","sourceRoot":"","sources":["../../../src/hooks/useDriveActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,UAAU,IAAI,WAAW,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDriveActions.js","sourceRoot":"","sources":["../../../src/hooks/useDriveActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type DocumentDriveAction, type DocumentDriveDocument } from "document-drive";
|
|
2
|
+
import { type EditorDispatch } from "document-model";
|
|
3
|
+
import type { UiNode } from "../uiNodes/types.js";
|
|
4
|
+
import { type IDriveContext } from "./useDriveContext.js";
|
|
5
|
+
export declare function useDriveActionsWithUiNodes(document: DocumentDriveDocument, dispatch: EditorDispatch<DocumentDriveAction>): {
|
|
6
|
+
addFile: (file: File, parentNode: UiNode | null) => Promise<void>;
|
|
7
|
+
addFolder: (name: string, parentFolder?: string | undefined) => Promise<void>;
|
|
8
|
+
renameNode: (name: string, node: UiNode) => Promise<void>;
|
|
9
|
+
deleteNode: (node: UiNode) => Promise<void>;
|
|
10
|
+
moveNode: (src: UiNode, target: UiNode) => Promise<void>;
|
|
11
|
+
copyNode: (src: UiNode, target: UiNode) => Promise<void>;
|
|
12
|
+
duplicateNode: (node: UiNode) => Promise<void>;
|
|
13
|
+
context: IDriveContext;
|
|
14
|
+
selectNode: (node: UiNode | null) => void;
|
|
15
|
+
addDocument: (name: string, documentType: string, document?: import("document-model").PHDocument, parentFolder?: string, id?: string) => Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=useDriveActionsWithUiNodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDriveActionsWithUiNodes.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDriveActionsWithUiNodes.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAI3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAiE3E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,cAAc,CAAC,mBAAmB,CAAC;oBApC3B,IAAI,cAAc,MAAM,GAAG,IAAI;sBAG7B,MAAM,iBAA8B,MAAM,GAAG,SAAS;uBAGrD,MAAM,QAAQ,MAAM;uBAKpB,MAAM;oBAKH,MAAM,UAAU,MAAM;oBAO5B,MAAM,UAAU,MAAM;0BAIhB,MAAM;;;8DAPA,CAAC,mDAC7B,CAAH,YAEQ,CAAC;EAuCT"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { FILE } from "../uiNodes/constants.js";
|
|
3
|
+
import { useDriveActions } from "./useDriveActions.js";
|
|
4
|
+
import { useDriveContext } from "./useDriveContext.js";
|
|
5
|
+
import { useUiNodesContext } from "./useUiNodesContext.js";
|
|
6
|
+
function toNode(uiNode) {
|
|
7
|
+
if (uiNode.kind === "DRIVE") {
|
|
8
|
+
throw new Error("Cannot convert drive node to regular node");
|
|
9
|
+
}
|
|
10
|
+
const { id, name, parentFolder, kind } = uiNode;
|
|
11
|
+
if (kind === "FOLDER") {
|
|
12
|
+
return { id, name, parentFolder, kind: "folder" };
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
// Remove after ts reset is fixed
|
|
16
|
+
const fileNode = uiNode;
|
|
17
|
+
return {
|
|
18
|
+
id,
|
|
19
|
+
name,
|
|
20
|
+
parentFolder,
|
|
21
|
+
kind: "file",
|
|
22
|
+
documentType: fileNode.documentType,
|
|
23
|
+
synchronizationUnits: fileNode.synchronizationUnits,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Adapter to convert between UiNodes and drive actions
|
|
28
|
+
function createUiNodeAdapter(driveActions) {
|
|
29
|
+
return {
|
|
30
|
+
...driveActions,
|
|
31
|
+
addFile: (file, parentNode) => driveActions.addFile(file, parentNode?.id),
|
|
32
|
+
addFolder: (name, parentFolder = undefined) => driveActions.addFolder(name, parentFolder),
|
|
33
|
+
renameNode: (name, node) => {
|
|
34
|
+
const converted = toNode(node);
|
|
35
|
+
return driveActions.renameNode(converted.id, name);
|
|
36
|
+
},
|
|
37
|
+
deleteNode: (node) => {
|
|
38
|
+
const converted = toNode(node);
|
|
39
|
+
return driveActions.deleteNode(converted.id);
|
|
40
|
+
},
|
|
41
|
+
moveNode: async (src, target) => {
|
|
42
|
+
if (target.kind === FILE || src.parentFolder === target.id)
|
|
43
|
+
return;
|
|
44
|
+
const srcNode = toNode(src);
|
|
45
|
+
const targetNode = toNode(target);
|
|
46
|
+
return driveActions.moveNode(srcNode.id, targetNode.id);
|
|
47
|
+
},
|
|
48
|
+
copyNode: (src, target) => {
|
|
49
|
+
return driveActions.copyNode(src.id, target.id);
|
|
50
|
+
},
|
|
51
|
+
duplicateNode: (node) => {
|
|
52
|
+
const converted = toNode(node);
|
|
53
|
+
return driveActions.duplicateNode(converted.id);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function useDriveActionsWithUiNodes(document, dispatch) {
|
|
58
|
+
const { selectedNode, selectedDriveNode, setSelectedNode, getNodeById } = useUiNodesContext();
|
|
59
|
+
const _driveContext = useDriveContext();
|
|
60
|
+
const driveContext = useMemo(() => ({
|
|
61
|
+
..._driveContext,
|
|
62
|
+
selectedNode: selectedNode,
|
|
63
|
+
onSelectNode: (node) => {
|
|
64
|
+
_driveContext.selectNode(node);
|
|
65
|
+
setSelectedNode(getNodeById(node.id));
|
|
66
|
+
},
|
|
67
|
+
}), [selectedNode, selectedDriveNode?.driveId, setSelectedNode, getNodeById]);
|
|
68
|
+
const driveActions = useDriveActions(document, dispatch, driveContext);
|
|
69
|
+
const uiNodeActions = useMemo(() => createUiNodeAdapter(driveActions), [driveActions]);
|
|
70
|
+
return uiNodeActions;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=useDriveActionsWithUiNodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDriveActionsWithUiNodes.js","sourceRoot":"","sources":["../../../src/hooks/useDriveActionsWithUiNodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,99 @@
|
|
|
1
|
+
import { type FileNode, type IDocumentDriveServer, type Node, type SyncStatus } from "document-drive";
|
|
2
|
+
import { type Action, type ActionErrorCallback, type DocumentModelModule, type PHDocument } from "document-model";
|
|
1
3
|
import { type PropsWithChildren } from "react";
|
|
2
|
-
import { type
|
|
4
|
+
import { type User } from "../renown/types.js";
|
|
5
|
+
import type { UiNode } from "../uiNodes/types.js";
|
|
6
|
+
import { type HookState } from "./document-state.js";
|
|
7
|
+
/**
|
|
8
|
+
* Interface representing the context values provided by the host application
|
|
9
|
+
* for managing document drive functionality.
|
|
10
|
+
*/
|
|
11
|
+
export interface IDriveContext {
|
|
12
|
+
/** Reactor instance */
|
|
13
|
+
reactor: IDocumentDriveServer;
|
|
14
|
+
/** Controls the visibility of the search bar in the drive interface */
|
|
15
|
+
showSearchBar: boolean;
|
|
16
|
+
/** Indicates whether the current user has permissions to create new documents */
|
|
17
|
+
isAllowedToCreateDocuments: boolean;
|
|
18
|
+
/** Array of available document models that can be created */
|
|
19
|
+
documentModels: DocumentModelModule[];
|
|
20
|
+
/** Currently selected node (file/folder) in the drive */
|
|
21
|
+
selectedNode: Node | null;
|
|
22
|
+
/**
|
|
23
|
+
* Callback to update the selected node in the drive
|
|
24
|
+
* @param node - The node to be selected
|
|
25
|
+
*/
|
|
26
|
+
selectNode: (node: UiNode | null) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Adds a new file to the drive
|
|
29
|
+
* @param file - File to be added (can be a string path or File object)
|
|
30
|
+
* @param drive - The drive to add the file to
|
|
31
|
+
* @param name - Optional name for the file
|
|
32
|
+
* @param parentFolder - Optional parent folder of the file
|
|
33
|
+
* @returns Promise resolving to the newly created Node
|
|
34
|
+
*/
|
|
35
|
+
addFile: (file: string | File, drive: string, name?: string, parentFolder?: string) => Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Adds a new document to the drive
|
|
38
|
+
* @param driveId - ID of the drive to add the document to
|
|
39
|
+
* @param name - Name of the document
|
|
40
|
+
* @param documentType - Type of document to create
|
|
41
|
+
* @param parentFolder - Optional parent folder of the document
|
|
42
|
+
* @param document - Optional document content
|
|
43
|
+
* @returns Promise resolving to the newly created
|
|
44
|
+
*/
|
|
45
|
+
addDocument: (driveId: string, name: string, documentType: string, parentFolder?: string, document?: PHDocument) => Promise<FileNode>;
|
|
46
|
+
/**
|
|
47
|
+
* Shows a modal for creating a new document
|
|
48
|
+
* @param documentModel - Document model of the document to be created
|
|
49
|
+
* @returns Promise resolving to an object containing the document name
|
|
50
|
+
*/
|
|
51
|
+
showCreateDocumentModal: (documentModel: DocumentModelModule) => Promise<{
|
|
52
|
+
name: string;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Retrieves the sync status of a document or drive
|
|
56
|
+
* @param driveId - ID of the drive to check sync status for
|
|
57
|
+
* @param documentId - ID of the document to check sync status for
|
|
58
|
+
* @returns SyncStatus object containing sync information
|
|
59
|
+
*/
|
|
60
|
+
useSyncStatus: (driveId: string, documentId?: string) => SyncStatus | undefined;
|
|
61
|
+
useDocumentEditorProps: (props: {
|
|
62
|
+
driveId: string;
|
|
63
|
+
documentId: string;
|
|
64
|
+
documentType: string;
|
|
65
|
+
documentModelModule: DocumentModelModule<PHDocument>;
|
|
66
|
+
user?: User;
|
|
67
|
+
}) => {
|
|
68
|
+
dispatch: (action: Action, onErrorCallback?: ActionErrorCallback) => void;
|
|
69
|
+
document: PHDocument | undefined;
|
|
70
|
+
error: unknown;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Retrieves the states of all documents in a drive
|
|
74
|
+
* @param driveId - ID of the drive to retrieve document states for
|
|
75
|
+
* @param documentIds - IDs of the documents to retrieve states for (all if not provided)
|
|
76
|
+
* @returns Record of document IDs to their states
|
|
77
|
+
*/
|
|
78
|
+
useDriveDocumentStates: (props: {
|
|
79
|
+
driveId: string;
|
|
80
|
+
documentIds?: string[];
|
|
81
|
+
}) => readonly [
|
|
82
|
+
Record<string, HookState>,
|
|
83
|
+
(_driveId: string, _documentIds?: string[]) => Promise<void>
|
|
84
|
+
];
|
|
85
|
+
/**
|
|
86
|
+
* Retrieves the state of a document in a drive
|
|
87
|
+
* @param driveId - ID of the drive to retrieve document state for
|
|
88
|
+
* @param documentId - ID of the document to retrieve state for
|
|
89
|
+
* @type TDocument - Type of the document to retrieve state for if known
|
|
90
|
+
* @returns State of the document
|
|
91
|
+
*/
|
|
92
|
+
useDriveDocumentState: (props: {
|
|
93
|
+
driveId: string;
|
|
94
|
+
documentId: string;
|
|
95
|
+
}) => PHDocument["state"] | undefined;
|
|
96
|
+
}
|
|
3
97
|
export declare const DriveContextProvider: React.FC<PropsWithChildren<{
|
|
4
98
|
value: IDriveContext;
|
|
5
99
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDriveContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDriveContext.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useDriveContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDriveContext.tsx"],"names":[],"mappings":"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"}
|