@powerhousedao/connect 1.0.16-dev.1 → 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-mup06TxF.js → app-DhH3gUSI.js} +9 -9
- package/dist/assets/{app-loader-ByxyqGmZ.js → app-loader-Btk_wf_z.js} +107 -63
- package/dist/assets/{ccip-ASjKzegb.js → ccip-D9a0ttP2.js} +3 -3
- package/dist/assets/{content-DmxMPHbR.js → content-BlRqE_8w.js} +3 -3
- package/dist/assets/{index-B8rDFj5N.js → index-BuxuyYQU.js} +3 -3
- package/dist/assets/{index-10OwZr6e.js → index-D3bygFYe.js} +4 -4
- package/dist/assets/{index-Bf_-VrwW.js → index-Whh7mT2J.js} +3 -3
- package/dist/assets/{main.BooYX2Lr.js → main.C1DJvpcL.js} +1 -1
- package/dist/index.html +2 -34
- package/dist/vite-envs.sh +1 -1
- package/package.json +6 -6
- 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-7OQWVUC5.js +0 -43
- package/dist/modules/@powerhousedao/reactor-browser/chunk-7RTGQTV5.js +0 -14215
- 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-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-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-NPCM4GRM.js +0 -82
- 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-REEGAZVT.js +0 -113
- package/dist/modules/@powerhousedao/reactor-browser/chunk-RGIB4DD4.js +0 -162
- package/dist/modules/@powerhousedao/reactor-browser/chunk-RUNTF5WD.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-ULJSSMFA.js +0 -178
- 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-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
|
-
};
|
|
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
|
-
};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useDriveActions
|
|
3
|
-
} from "./chunk-REEGAZVT.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,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,113 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
addFolder,
|
|
3
|
-
copyNode,
|
|
4
|
-
deleteNode,
|
|
5
|
-
generateAddNodeAction,
|
|
6
|
-
generateNodesCopy,
|
|
7
|
-
isFileNode,
|
|
8
|
-
isFolderNode,
|
|
9
|
-
moveNode,
|
|
10
|
-
updateNode
|
|
11
|
-
} from "./chunk-7RTGQTV5.js";
|
|
12
|
-
import {
|
|
13
|
-
generateId
|
|
14
|
-
} from "./chunk-FQF4YAVC.js";
|
|
15
|
-
|
|
16
|
-
// ../../packages/reactor-browser/dist/src/hooks/useDriveActions.js
|
|
17
|
-
import { useMemo } from "react";
|
|
18
|
-
var generateId2 = () => generateId().toString();
|
|
19
|
-
function getNode(id, drive) {
|
|
20
|
-
return drive.state.global.nodes.find((node) => node.id === id);
|
|
21
|
-
}
|
|
22
|
-
function createDriveActions(document, dispatch, context) {
|
|
23
|
-
const drive = document;
|
|
24
|
-
const { id: driveId } = drive.state.global;
|
|
25
|
-
const { selectedNode } = context;
|
|
26
|
-
const handleAddFolder = async (name, parentFolder, id = generateId2()) => {
|
|
27
|
-
dispatch(addFolder({
|
|
28
|
-
id,
|
|
29
|
-
name,
|
|
30
|
-
parentFolder: parentFolder ?? null
|
|
31
|
-
}));
|
|
32
|
-
};
|
|
33
|
-
const addDocument = async (name, documentType, document2, parentFolder, id = generateId2()) => {
|
|
34
|
-
const action = generateAddNodeAction(drive.state.global, {
|
|
35
|
-
id,
|
|
36
|
-
name,
|
|
37
|
-
parentFolder: parentFolder ?? null,
|
|
38
|
-
documentType,
|
|
39
|
-
document: document2
|
|
40
|
-
}, ["global"]);
|
|
41
|
-
dispatch(action);
|
|
42
|
-
};
|
|
43
|
-
const addFile = async (file, parentFolder = selectedNode && isFileNode(selectedNode) ? void 0 : selectedNode?.id, name = file.name.replace(/\.zip$/gim, "")) => {
|
|
44
|
-
const folder = parentFolder ? getNode(parentFolder, drive) : void 0;
|
|
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);
|
|
52
|
-
};
|
|
53
|
-
const handleDeleteNode = async (id) => {
|
|
54
|
-
dispatch(deleteNode({ id }));
|
|
55
|
-
};
|
|
56
|
-
const renameNode = async (id, name) => {
|
|
57
|
-
dispatch(updateNode({ id, name }));
|
|
58
|
-
};
|
|
59
|
-
const handleMoveNode = async (sourceId, targetId) => {
|
|
60
|
-
dispatch(moveNode({
|
|
61
|
-
srcFolder: sourceId,
|
|
62
|
-
targetParentFolder: targetId
|
|
63
|
-
}));
|
|
64
|
-
};
|
|
65
|
-
const handleCopyNode = async (sourceId, targetFolderId) => {
|
|
66
|
-
const target = targetFolderId ? getNode(targetFolderId, drive) : void 0;
|
|
67
|
-
if (targetFolderId && !target) {
|
|
68
|
-
throw new Error(`Target node with id "${targetFolderId}" not found`);
|
|
69
|
-
}
|
|
70
|
-
if (target && !isFolderNode(target)) {
|
|
71
|
-
throw new Error(`Target node with id "${targetFolderId}" is not a folder`);
|
|
72
|
-
}
|
|
73
|
-
const source = getNode(sourceId, drive);
|
|
74
|
-
if (!source) {
|
|
75
|
-
throw new Error(`Source node with id "${sourceId}" not found`);
|
|
76
|
-
}
|
|
77
|
-
const copyNodesInput = generateNodesCopy({
|
|
78
|
-
srcId: sourceId,
|
|
79
|
-
targetParentFolder: target?.id,
|
|
80
|
-
targetName: source.name
|
|
81
|
-
}, generateId2, drive.state.global.nodes);
|
|
82
|
-
const copyActions = copyNodesInput.map((copyNodeInput) => copyNode(copyNodeInput));
|
|
83
|
-
for (const copyAction of copyActions) {
|
|
84
|
-
dispatch(copyAction);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
const duplicateNode = async (sourceId) => {
|
|
88
|
-
const node = getNode(sourceId, drive);
|
|
89
|
-
if (!node) {
|
|
90
|
-
throw new Error(`Node with id "${sourceId}" not found`);
|
|
91
|
-
}
|
|
92
|
-
await handleCopyNode(node.id, node.parentFolder || void 0);
|
|
93
|
-
};
|
|
94
|
-
return {
|
|
95
|
-
context,
|
|
96
|
-
selectNode: context.selectNode,
|
|
97
|
-
addFolder: handleAddFolder,
|
|
98
|
-
addFile,
|
|
99
|
-
addDocument,
|
|
100
|
-
deleteNode: handleDeleteNode,
|
|
101
|
-
renameNode,
|
|
102
|
-
moveNode: handleMoveNode,
|
|
103
|
-
copyNode: handleCopyNode,
|
|
104
|
-
duplicateNode
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
function useDriveActions(document, dispatch, context) {
|
|
108
|
-
return useMemo(() => createDriveActions(document, dispatch, context), [document, dispatch, context]);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export {
|
|
112
|
-
useDriveActions
|
|
113
|
-
};
|
|
@@ -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
|
-
};
|