@powerhousedao/connect 1.0.16-dev.0 → 1.0.16-dev.2
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/assets/{app-CMOavKiq.js → app-DhH3gUSI.js} +60 -56
- package/dist/assets/{app-loader-DC5IyHMQ.js → app-loader-Btk_wf_z.js} +123 -67
- package/dist/assets/{ccip-DSbQ3ps3.js → ccip-D9a0ttP2.js} +3 -3
- package/dist/assets/{content-CHzDFdGF.js → content-BlRqE_8w.js} +18 -3
- package/dist/assets/{index-DPALYL1s.js → index-BuxuyYQU.js} +3 -3
- package/dist/assets/{index-CL8GxjbV.js → index-D3bygFYe.js} +4 -4
- package/dist/assets/{index-BAzB-bGZ.js → index-Whh7mT2J.js} +3 -3
- package/dist/assets/{main.glrVfQff.js → main.C1DJvpcL.js} +1 -1
- package/dist/index.html +2 -34
- package/dist/vite-envs.sh +1 -1
- package/package.json +9 -9
- package/dist/modules/@powerhousedao/reactor-browser/chunk-2ESYSVXG.js +0 -48
- package/dist/modules/@powerhousedao/reactor-browser/chunk-2ONJ2PX4.js +0 -50
- package/dist/modules/@powerhousedao/reactor-browser/chunk-2X2M6BYG.js +0 -2542
- package/dist/modules/@powerhousedao/reactor-browser/chunk-7MMXY5VI.js +0 -14203
- package/dist/modules/@powerhousedao/reactor-browser/chunk-7OQWVUC5.js +0 -43
- package/dist/modules/@powerhousedao/reactor-browser/chunk-C7QRY43M.js +0 -786
- package/dist/modules/@powerhousedao/reactor-browser/chunk-CO2RVWYY.js +0 -67
- package/dist/modules/@powerhousedao/reactor-browser/chunk-DKDARAJS.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-EB4SAP74.js +0 -178
- package/dist/modules/@powerhousedao/reactor-browser/chunk-FQF4YAVC.js +0 -11917
- package/dist/modules/@powerhousedao/reactor-browser/chunk-GDP7BUIH.js +0 -45
- package/dist/modules/@powerhousedao/reactor-browser/chunk-IQTSFTNF.js +0 -48
- package/dist/modules/@powerhousedao/reactor-browser/chunk-J5TYPY7U.js +0 -36
- package/dist/modules/@powerhousedao/reactor-browser/chunk-KEMIF43H.js +0 -82
- package/dist/modules/@powerhousedao/reactor-browser/chunk-LH2T6NLN.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-LRNZZ3SR.js +0 -14
- package/dist/modules/@powerhousedao/reactor-browser/chunk-NHD6VUCD.js +0 -53
- package/dist/modules/@powerhousedao/reactor-browser/chunk-OHBF7Q5F.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-OVGOA2P5.js +0 -11
- package/dist/modules/@powerhousedao/reactor-browser/chunk-P6NJ6IAQ.js +0 -12
- package/dist/modules/@powerhousedao/reactor-browser/chunk-RGIB4DD4.js +0 -162
- package/dist/modules/@powerhousedao/reactor-browser/chunk-SNZRCTNV.js +0 -2477
- package/dist/modules/@powerhousedao/reactor-browser/chunk-TNPKLKIJ.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-U34SEKEB.js +0 -250
- package/dist/modules/@powerhousedao/reactor-browser/chunk-U36SV333.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-VT7IMWQB.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-XBTEGV5M.js +0 -17
- package/dist/modules/@powerhousedao/reactor-browser/chunk-Y2AV245J.js +0 -113
- package/dist/modules/@powerhousedao/reactor-browser/chunk-Y7NTRTMT.js +0 -25
- package/dist/modules/@powerhousedao/reactor-browser/chunk-YG67WAIS.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-YWKVPJNL.js +0 -52
- package/dist/modules/@powerhousedao/reactor-browser/chunk-ZL5IPB6D.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/context/index.js +0 -16
- package/dist/modules/@powerhousedao/reactor-browser/context/read-mode.js +0 -15
- package/dist/modules/@powerhousedao/reactor-browser/crypto/browser.js +0 -7
- package/dist/modules/@powerhousedao/reactor-browser/crypto/index.js +0 -7
- package/dist/modules/@powerhousedao/reactor-browser/document-model.js +0 -10
- package/dist/modules/@powerhousedao/reactor-browser/hooks/document-state.js +0 -96
- package/dist/modules/@powerhousedao/reactor-browser/hooks/index.js +0 -98
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useAddDebouncedOperations.js +0 -11
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useConnectCrypto.js +0 -12
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocument.js +0 -7
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDispatch.js +0 -7
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDrives.js +0 -13
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentEditor.js +0 -20
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActions.js +0 -9
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActionsWithUiNodes.js +0 -14
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveContext.js +0 -9
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useUiNodesContext.js +0 -46
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useUserPermissions.js +0 -7
- package/dist/modules/@powerhousedao/reactor-browser/index.js +0 -127
- package/dist/modules/@powerhousedao/reactor-browser/reactor.js +0 -11
- package/dist/modules/@powerhousedao/reactor-browser/renown/constants.js +0 -53
- package/dist/modules/@powerhousedao/reactor-browser/renown/types.js +0 -1
- package/dist/modules/@powerhousedao/reactor-browser/storage/index.js +0 -1
- package/dist/modules/@powerhousedao/reactor-browser/storage/types.js +0 -1
- package/dist/modules/@powerhousedao/reactor-browser/types/drive-editor.js +0 -1
- package/dist/modules/@powerhousedao/reactor-browser/types/index.js +0 -2
- package/dist/modules/@powerhousedao/reactor-browser/uiNodes/constants.js +0 -37
- package/dist/modules/@powerhousedao/reactor-browser/uiNodes/types.js +0 -1
- package/dist/modules/@powerhousedao/reactor-browser/utils/export-document.js +0 -8
- package/dist/modules/@powerhousedao/reactor-browser/utils/index.js +0 -9
- package/dist/modules/@powerhousedao/reactor-browser/utils/signature.js +0 -10
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// ../../packages/reactor-browser/dist/src/hooks/useDocumentDispatch.js
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
function useDocumentDispatch(documentReducer, initialState, onError = console.error) {
|
|
4
|
-
const [state, setState] = useState(initialState);
|
|
5
|
-
const [error, setError] = useState();
|
|
6
|
-
const onErrorHandler = (error2) => {
|
|
7
|
-
setError(error2);
|
|
8
|
-
onError(error2);
|
|
9
|
-
};
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
setState(initialState);
|
|
12
|
-
}, [initialState]);
|
|
13
|
-
const dispatch = (action, callback, onErrorCallback) => {
|
|
14
|
-
setError(void 0);
|
|
15
|
-
setState((_state) => {
|
|
16
|
-
if (!documentReducer || !_state)
|
|
17
|
-
return _state;
|
|
18
|
-
try {
|
|
19
|
-
const newState = documentReducer(_state, action);
|
|
20
|
-
const scope = action.scope ?? "global";
|
|
21
|
-
const operations = newState.operations[scope];
|
|
22
|
-
const operation = operations[operations.length - 1];
|
|
23
|
-
if (operation.error) {
|
|
24
|
-
const error2 = new Error(operation.error);
|
|
25
|
-
onErrorHandler(error2);
|
|
26
|
-
onErrorCallback?.(error2);
|
|
27
|
-
}
|
|
28
|
-
callback?.(operation, {
|
|
29
|
-
prevState: { ..._state },
|
|
30
|
-
newState: { ...newState }
|
|
31
|
-
});
|
|
32
|
-
return newState;
|
|
33
|
-
} catch (error2) {
|
|
34
|
-
onErrorHandler(error2);
|
|
35
|
-
onErrorCallback?.(error2);
|
|
36
|
-
return _state;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
return [state, dispatch, error];
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export {
|
|
44
|
-
useDocumentDispatch
|
|
45
|
-
};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildSignedOperation
|
|
3
|
-
} from "./chunk-FQF4YAVC.js";
|
|
4
|
-
|
|
5
|
-
// ../../packages/reactor-browser/dist/src/utils/signature.js
|
|
6
|
-
async function signOperation(operation, sign, documentId, document, reducer, user) {
|
|
7
|
-
if (!user)
|
|
8
|
-
return operation;
|
|
9
|
-
if (!operation.context)
|
|
10
|
-
return operation;
|
|
11
|
-
if (!operation.context.signer)
|
|
12
|
-
return operation;
|
|
13
|
-
if (!reducer) {
|
|
14
|
-
console.error(`Document model '${document.documentType}' does not have a reducer`);
|
|
15
|
-
return operation;
|
|
16
|
-
}
|
|
17
|
-
const context = {
|
|
18
|
-
documentId,
|
|
19
|
-
signer: operation.context.signer
|
|
20
|
-
};
|
|
21
|
-
const signedOperation = await buildSignedOperation(operation, reducer, document, context, sign);
|
|
22
|
-
return signedOperation;
|
|
23
|
-
}
|
|
24
|
-
function addActionContext(action, connectDid, user) {
|
|
25
|
-
if (!user)
|
|
26
|
-
return action;
|
|
27
|
-
const signer = {
|
|
28
|
-
app: {
|
|
29
|
-
name: "Connect",
|
|
30
|
-
key: connectDid || ""
|
|
31
|
-
},
|
|
32
|
-
user: {
|
|
33
|
-
address: user.address,
|
|
34
|
-
networkId: user.networkId,
|
|
35
|
-
chainId: user.chainId
|
|
36
|
-
},
|
|
37
|
-
signatures: []
|
|
38
|
-
};
|
|
39
|
-
return {
|
|
40
|
-
context: { signer },
|
|
41
|
-
...action
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export {
|
|
46
|
-
signOperation,
|
|
47
|
-
addActionContext
|
|
48
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// ../../packages/reactor-browser/dist/src/hooks/useDocument.js
|
|
2
|
-
import { useCallback, useEffect, useState } from "react";
|
|
3
|
-
function useDocument(reactor, documentMeta = {}) {
|
|
4
|
-
const { documentId, documentType, driveId } = documentMeta;
|
|
5
|
-
const [document, setDocument] = useState();
|
|
6
|
-
const onStrandUpdate = useCallback((cb) => {
|
|
7
|
-
if (!reactor) {
|
|
8
|
-
throw new Error("Reactor is not loaded");
|
|
9
|
-
}
|
|
10
|
-
return reactor.on("strandUpdate", cb);
|
|
11
|
-
}, [reactor]);
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
if (!reactor)
|
|
14
|
-
return;
|
|
15
|
-
if (!driveId || !documentId || !documentType)
|
|
16
|
-
return;
|
|
17
|
-
reactor.getDocument(driveId, documentId).then(setDocument).catch(console.error);
|
|
18
|
-
}, [driveId, documentId, documentType, reactor]);
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
if (!reactor)
|
|
21
|
-
return;
|
|
22
|
-
if (!driveId || !documentId || !documentType)
|
|
23
|
-
return;
|
|
24
|
-
const removeListener = onStrandUpdate((strand) => {
|
|
25
|
-
if (strand.driveId === driveId && strand.documentId === documentId) {
|
|
26
|
-
reactor.getDocument(driveId, documentId).then(setDocument).catch(console.error);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return removeListener;
|
|
30
|
-
}, [onStrandUpdate, driveId, documentId, documentType]);
|
|
31
|
-
return document;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export {
|
|
35
|
-
useDocument
|
|
36
|
-
};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useDriveActions
|
|
3
|
-
} from "./chunk-Y2AV245J.js";
|
|
4
|
-
import {
|
|
5
|
-
useDriveContext
|
|
6
|
-
} from "./chunk-XBTEGV5M.js";
|
|
7
|
-
import {
|
|
8
|
-
useUiNodesContext
|
|
9
|
-
} from "./chunk-RGIB4DD4.js";
|
|
10
|
-
import {
|
|
11
|
-
FILE
|
|
12
|
-
} from "./chunk-7OQWVUC5.js";
|
|
13
|
-
|
|
14
|
-
// ../../packages/reactor-browser/dist/src/hooks/useDriveActionsWithUiNodes.js
|
|
15
|
-
import { useMemo } from "react";
|
|
16
|
-
function toNode(uiNode) {
|
|
17
|
-
if (uiNode.kind === "DRIVE") {
|
|
18
|
-
throw new Error("Cannot convert drive node to regular node");
|
|
19
|
-
}
|
|
20
|
-
const { id, name, parentFolder, kind } = uiNode;
|
|
21
|
-
if (kind === "FOLDER") {
|
|
22
|
-
return { id, name, parentFolder, kind: "folder" };
|
|
23
|
-
} else {
|
|
24
|
-
const fileNode = uiNode;
|
|
25
|
-
return {
|
|
26
|
-
id,
|
|
27
|
-
name,
|
|
28
|
-
parentFolder,
|
|
29
|
-
kind: "file",
|
|
30
|
-
documentType: fileNode.documentType,
|
|
31
|
-
synchronizationUnits: fileNode.synchronizationUnits
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function createUiNodeAdapter(driveActions) {
|
|
36
|
-
return {
|
|
37
|
-
...driveActions,
|
|
38
|
-
addFile: (file, parentNode) => driveActions.addFile(file, parentNode?.id),
|
|
39
|
-
addFolder: (name, parentFolder = void 0) => driveActions.addFolder(name, parentFolder),
|
|
40
|
-
renameNode: (name, node) => {
|
|
41
|
-
const converted = toNode(node);
|
|
42
|
-
return driveActions.renameNode(converted.id, name);
|
|
43
|
-
},
|
|
44
|
-
deleteNode: (node) => {
|
|
45
|
-
const converted = toNode(node);
|
|
46
|
-
return driveActions.deleteNode(converted.id);
|
|
47
|
-
},
|
|
48
|
-
moveNode: async (src, target) => {
|
|
49
|
-
if (target.kind === FILE || src.parentFolder === target.id)
|
|
50
|
-
return;
|
|
51
|
-
const srcNode = toNode(src);
|
|
52
|
-
const targetNode = toNode(target);
|
|
53
|
-
return driveActions.moveNode(srcNode.id, targetNode.id);
|
|
54
|
-
},
|
|
55
|
-
copyNode: (src, target) => {
|
|
56
|
-
return driveActions.copyNode(src.id, target.id);
|
|
57
|
-
},
|
|
58
|
-
duplicateNode: (node) => {
|
|
59
|
-
const converted = toNode(node);
|
|
60
|
-
return driveActions.duplicateNode(converted.id);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function useDriveActionsWithUiNodes(document, dispatch) {
|
|
65
|
-
const { selectedNode, selectedDriveNode, setSelectedNode, getNodeById } = useUiNodesContext();
|
|
66
|
-
const _driveContext = useDriveContext();
|
|
67
|
-
const driveContext = useMemo(() => ({
|
|
68
|
-
..._driveContext,
|
|
69
|
-
selectedNode,
|
|
70
|
-
onSelectNode: (node) => {
|
|
71
|
-
_driveContext.selectNode(node);
|
|
72
|
-
setSelectedNode(getNodeById(node.id));
|
|
73
|
-
}
|
|
74
|
-
}), [selectedNode, selectedDriveNode?.driveId, setSelectedNode, getNodeById]);
|
|
75
|
-
const driveActions = useDriveActions(document, dispatch, driveContext);
|
|
76
|
-
const uiNodeActions = useMemo(() => createUiNodeAdapter(driveActions), [driveActions]);
|
|
77
|
-
return uiNodeActions;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export {
|
|
81
|
-
useDriveActionsWithUiNodes
|
|
82
|
-
};
|
|
File without changes
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
documentModelDocumentModelModule
|
|
3
|
-
} from "./chunk-FQF4YAVC.js";
|
|
4
|
-
|
|
5
|
-
// ../../packages/reactor-browser/dist/src/document-model.js
|
|
6
|
-
var baseDocumentModelsMap = {
|
|
7
|
-
DocumentModel: documentModelDocumentModelModule
|
|
8
|
-
};
|
|
9
|
-
var baseDocumentModels = Object.values(baseDocumentModelsMap);
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
baseDocumentModelsMap,
|
|
13
|
-
baseDocumentModels
|
|
14
|
-
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
addActionContext,
|
|
3
|
-
signOperation
|
|
4
|
-
} from "./chunk-IQTSFTNF.js";
|
|
5
|
-
import {
|
|
6
|
-
useAddDebouncedOperations
|
|
7
|
-
} from "./chunk-CO2RVWYY.js";
|
|
8
|
-
import {
|
|
9
|
-
useConnectCrypto,
|
|
10
|
-
useConnectDid
|
|
11
|
-
} from "./chunk-2ONJ2PX4.js";
|
|
12
|
-
import {
|
|
13
|
-
useDocumentDispatch
|
|
14
|
-
} from "./chunk-GDP7BUIH.js";
|
|
15
|
-
|
|
16
|
-
// ../../packages/reactor-browser/dist/src/hooks/useDocumentEditor.js
|
|
17
|
-
function useDocumentEditorProps(reactor, props) {
|
|
18
|
-
const { nodeId, driveId, documentModelModule, document: initialDocument, user, connectDid, sign } = props;
|
|
19
|
-
const addDebouncedOprations = useAddDebouncedOperations(reactor, {
|
|
20
|
-
driveId,
|
|
21
|
-
documentId: nodeId
|
|
22
|
-
});
|
|
23
|
-
const [document, _dispatch, error] = useDocumentDispatch(documentModelModule.reducer, initialDocument);
|
|
24
|
-
function dispatch(action, onErrorCallback) {
|
|
25
|
-
const callback = (operation, state) => {
|
|
26
|
-
const { prevState } = state;
|
|
27
|
-
signOperation(operation, sign, nodeId, prevState, documentModelModule.reducer, user).then((op) => {
|
|
28
|
-
return addDebouncedOprations(op);
|
|
29
|
-
}).catch(console.error);
|
|
30
|
-
};
|
|
31
|
-
_dispatch(addActionContext(action, connectDid, user), callback, onErrorCallback);
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
dispatch,
|
|
35
|
-
document,
|
|
36
|
-
error
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function useDocumentEditor(reactor, props) {
|
|
40
|
-
const connectDid = useConnectDid();
|
|
41
|
-
const { sign } = useConnectCrypto();
|
|
42
|
-
const documentEditorDispatch = useDocumentEditorProps(reactor, {
|
|
43
|
-
...props,
|
|
44
|
-
connectDid,
|
|
45
|
-
sign
|
|
46
|
-
});
|
|
47
|
-
return documentEditorDispatch;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export {
|
|
51
|
-
useDocumentEditorProps,
|
|
52
|
-
useDocumentEditor
|
|
53
|
-
};
|
|
File without changes
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// ../../packages/reactor-browser/dist/src/utils/index.js
|
|
2
|
-
function documentToHash(drive) {
|
|
3
|
-
return Object.keys(drive.operations).map((key) => `${key}:${drive.operations[key].length}:${drive.operations[key].at(-1)?.hash}`).join(":");
|
|
4
|
-
}
|
|
5
|
-
function drivesToHash(drives) {
|
|
6
|
-
return drives.map(documentToHash).join("&");
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
documentToHash,
|
|
11
|
-
drivesToHash
|
|
12
|
-
};
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DRIVE,
|
|
3
|
-
FILE
|
|
4
|
-
} from "./chunk-7OQWVUC5.js";
|
|
5
|
-
|
|
6
|
-
// ../../packages/reactor-browser/dist/src/hooks/useUiNodesContext.js
|
|
7
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
|
|
9
|
-
var defaultTreeItemContextValue = {
|
|
10
|
-
driveNodes: [],
|
|
11
|
-
selectedNode: null,
|
|
12
|
-
selectedNodePath: [],
|
|
13
|
-
selectedDriveNode: null,
|
|
14
|
-
selectedParentNode: null,
|
|
15
|
-
setDriveNodes: () => {
|
|
16
|
-
},
|
|
17
|
-
setSelectedNode: () => {
|
|
18
|
-
},
|
|
19
|
-
getNodeById: () => null,
|
|
20
|
-
getParentNode: () => null,
|
|
21
|
-
getIsSelected: () => false,
|
|
22
|
-
getIsInSelectedNodePath: () => false,
|
|
23
|
-
getSiblings: () => []
|
|
24
|
-
};
|
|
25
|
-
var UiNodesContext = createContext(defaultTreeItemContextValue);
|
|
26
|
-
var UiNodesContextProvider = ({ children }) => {
|
|
27
|
-
const [driveNodes, setDriveNodes] = useState([]);
|
|
28
|
-
const [selectedNode, _setSelectedNode] = useState(null);
|
|
29
|
-
const [selectedNodePath, setSelectedNodePath] = useState([]);
|
|
30
|
-
const [selectedDriveNode, setSelectedDriveNode] = useState(null);
|
|
31
|
-
const [selectedParentNode, setSelectedParentNode] = useState(null);
|
|
32
|
-
const _getNodeById = useCallback((id, driveNodes2) => {
|
|
33
|
-
if (!driveNodes2?.length)
|
|
34
|
-
return null;
|
|
35
|
-
for (const driveNode of driveNodes2) {
|
|
36
|
-
if (driveNode.id === id)
|
|
37
|
-
return driveNode;
|
|
38
|
-
const node = driveNode.nodeMap[id];
|
|
39
|
-
if (node)
|
|
40
|
-
return node;
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
|
-
}, []);
|
|
44
|
-
const getNodeById = useCallback((id) => {
|
|
45
|
-
return _getNodeById(id, driveNodes);
|
|
46
|
-
}, [_getNodeById, driveNodes]);
|
|
47
|
-
const getSelectedDriveNode = useCallback((selectedNode2, driveNodes2) => {
|
|
48
|
-
if (!selectedNode2 || !driveNodes2?.length)
|
|
49
|
-
return null;
|
|
50
|
-
if (selectedNode2.kind === DRIVE)
|
|
51
|
-
return selectedNode2;
|
|
52
|
-
return driveNodes2.find((d) => d.id === selectedNode2.driveId) ?? null;
|
|
53
|
-
}, []);
|
|
54
|
-
const _getParentNode = useCallback((node, driveNodes2) => {
|
|
55
|
-
if (!driveNodes2?.length || node.kind === DRIVE) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
const parentNode = _getNodeById(node.parentFolder, driveNodes2);
|
|
59
|
-
if (!parentNode)
|
|
60
|
-
return null;
|
|
61
|
-
if (parentNode.kind === FILE) {
|
|
62
|
-
throw new Error(`Parent node ${node.parentFolder} is a file, not a folder`);
|
|
63
|
-
}
|
|
64
|
-
return parentNode;
|
|
65
|
-
}, [_getNodeById]);
|
|
66
|
-
const getParentNode = useCallback((uiNode) => {
|
|
67
|
-
return _getParentNode(uiNode, driveNodes);
|
|
68
|
-
}, [_getParentNode, driveNodes]);
|
|
69
|
-
const getSelectedParentNode = useCallback((selectedNode2, driveNodes2) => {
|
|
70
|
-
if (!selectedNode2 || !driveNodes2?.length)
|
|
71
|
-
return null;
|
|
72
|
-
if (selectedNode2.kind === FILE)
|
|
73
|
-
return _getParentNode(selectedNode2, driveNodes2);
|
|
74
|
-
return selectedNode2;
|
|
75
|
-
}, [_getParentNode]);
|
|
76
|
-
const getPathToNode = useCallback((uiNode, driveNodes2) => {
|
|
77
|
-
const path = [];
|
|
78
|
-
const driveNode = driveNodes2.find((d) => d.id === uiNode.driveId);
|
|
79
|
-
let current = uiNode;
|
|
80
|
-
while (current) {
|
|
81
|
-
path.push(current);
|
|
82
|
-
current = current.parentFolder === driveNode?.id ? driveNode : current.parentFolder ? driveNode?.nodeMap[current.parentFolder] : void 0;
|
|
83
|
-
}
|
|
84
|
-
return path.reverse();
|
|
85
|
-
}, []);
|
|
86
|
-
const setSelectedNode = useCallback((uiNode) => {
|
|
87
|
-
_setSelectedNode(uiNode);
|
|
88
|
-
setSelectedDriveNode(getSelectedDriveNode(uiNode, driveNodes));
|
|
89
|
-
setSelectedParentNode(getSelectedParentNode(uiNode, driveNodes));
|
|
90
|
-
if (!uiNode) {
|
|
91
|
-
setSelectedNodePath([]);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (uiNode.kind === DRIVE) {
|
|
95
|
-
setSelectedNodePath([uiNode]);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const newSelectedNodePath = getPathToNode(uiNode, driveNodes);
|
|
99
|
-
setSelectedNodePath(newSelectedNodePath);
|
|
100
|
-
}, [driveNodes, getPathToNode, getSelectedDriveNode, getSelectedParentNode]);
|
|
101
|
-
const getIsSelected = useCallback((node) => {
|
|
102
|
-
return selectedNode === node;
|
|
103
|
-
}, [selectedNode]);
|
|
104
|
-
const getIsInSelectedNodePath = useCallback((node) => {
|
|
105
|
-
if (node.kind === FILE)
|
|
106
|
-
return false;
|
|
107
|
-
return selectedNodePath.includes(node);
|
|
108
|
-
}, [selectedNodePath]);
|
|
109
|
-
const getSiblings = useCallback((node) => {
|
|
110
|
-
if (node.kind === DRIVE) {
|
|
111
|
-
console.warn("Drive nodes do not have siblings, as they are top-level nodes");
|
|
112
|
-
return [];
|
|
113
|
-
}
|
|
114
|
-
const parent = _getParentNode(node, driveNodes);
|
|
115
|
-
return parent?.children ?? [];
|
|
116
|
-
}, [_getParentNode, driveNodes]);
|
|
117
|
-
useEffect(() => {
|
|
118
|
-
if (!selectedNode)
|
|
119
|
-
return;
|
|
120
|
-
const updatedSelectedNode = _getNodeById(selectedNode.id, driveNodes);
|
|
121
|
-
if (updatedSelectedNode) {
|
|
122
|
-
setSelectedNode(updatedSelectedNode);
|
|
123
|
-
}
|
|
124
|
-
}, [driveNodes, _getNodeById, selectedNode, setSelectedNode]);
|
|
125
|
-
const value = useMemo(() => ({
|
|
126
|
-
driveNodes,
|
|
127
|
-
selectedNode,
|
|
128
|
-
selectedNodePath,
|
|
129
|
-
selectedDriveNode,
|
|
130
|
-
selectedParentNode,
|
|
131
|
-
getNodeById,
|
|
132
|
-
getParentNode,
|
|
133
|
-
setDriveNodes,
|
|
134
|
-
setSelectedNode,
|
|
135
|
-
getIsSelected,
|
|
136
|
-
getIsInSelectedNodePath,
|
|
137
|
-
getSiblings
|
|
138
|
-
}), [
|
|
139
|
-
driveNodes,
|
|
140
|
-
selectedNode,
|
|
141
|
-
selectedNodePath,
|
|
142
|
-
selectedDriveNode,
|
|
143
|
-
selectedParentNode,
|
|
144
|
-
getNodeById,
|
|
145
|
-
getParentNode,
|
|
146
|
-
setSelectedNode,
|
|
147
|
-
getIsSelected,
|
|
148
|
-
getIsInSelectedNodePath,
|
|
149
|
-
getSiblings
|
|
150
|
-
]);
|
|
151
|
-
return _jsx(UiNodesContext.Provider, { value, children });
|
|
152
|
-
};
|
|
153
|
-
var useUiNodesContext = () => {
|
|
154
|
-
const contextValue = useContext(UiNodesContext);
|
|
155
|
-
return contextValue;
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
export {
|
|
159
|
-
UiNodesContext,
|
|
160
|
-
UiNodesContextProvider,
|
|
161
|
-
useUiNodesContext
|
|
162
|
-
};
|