@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.
Files changed (74) hide show
  1. package/dist/assets/{app-mup06TxF.js → app-DhH3gUSI.js} +9 -9
  2. package/dist/assets/{app-loader-ByxyqGmZ.js → app-loader-Btk_wf_z.js} +107 -63
  3. package/dist/assets/{ccip-ASjKzegb.js → ccip-D9a0ttP2.js} +3 -3
  4. package/dist/assets/{content-DmxMPHbR.js → content-BlRqE_8w.js} +3 -3
  5. package/dist/assets/{index-B8rDFj5N.js → index-BuxuyYQU.js} +3 -3
  6. package/dist/assets/{index-10OwZr6e.js → index-D3bygFYe.js} +4 -4
  7. package/dist/assets/{index-Bf_-VrwW.js → index-Whh7mT2J.js} +3 -3
  8. package/dist/assets/{main.BooYX2Lr.js → main.C1DJvpcL.js} +1 -1
  9. package/dist/index.html +2 -34
  10. package/dist/vite-envs.sh +1 -1
  11. package/package.json +6 -6
  12. package/dist/modules/@powerhousedao/reactor-browser/chunk-2ESYSVXG.js +0 -48
  13. package/dist/modules/@powerhousedao/reactor-browser/chunk-2ONJ2PX4.js +0 -50
  14. package/dist/modules/@powerhousedao/reactor-browser/chunk-2X2M6BYG.js +0 -2542
  15. package/dist/modules/@powerhousedao/reactor-browser/chunk-7OQWVUC5.js +0 -43
  16. package/dist/modules/@powerhousedao/reactor-browser/chunk-7RTGQTV5.js +0 -14215
  17. package/dist/modules/@powerhousedao/reactor-browser/chunk-C7QRY43M.js +0 -786
  18. package/dist/modules/@powerhousedao/reactor-browser/chunk-CO2RVWYY.js +0 -67
  19. package/dist/modules/@powerhousedao/reactor-browser/chunk-DKDARAJS.js +0 -0
  20. package/dist/modules/@powerhousedao/reactor-browser/chunk-FQF4YAVC.js +0 -11917
  21. package/dist/modules/@powerhousedao/reactor-browser/chunk-GDP7BUIH.js +0 -45
  22. package/dist/modules/@powerhousedao/reactor-browser/chunk-IQTSFTNF.js +0 -48
  23. package/dist/modules/@powerhousedao/reactor-browser/chunk-J5TYPY7U.js +0 -36
  24. package/dist/modules/@powerhousedao/reactor-browser/chunk-LH2T6NLN.js +0 -0
  25. package/dist/modules/@powerhousedao/reactor-browser/chunk-LRNZZ3SR.js +0 -14
  26. package/dist/modules/@powerhousedao/reactor-browser/chunk-NHD6VUCD.js +0 -53
  27. package/dist/modules/@powerhousedao/reactor-browser/chunk-NPCM4GRM.js +0 -82
  28. package/dist/modules/@powerhousedao/reactor-browser/chunk-OHBF7Q5F.js +0 -0
  29. package/dist/modules/@powerhousedao/reactor-browser/chunk-OVGOA2P5.js +0 -11
  30. package/dist/modules/@powerhousedao/reactor-browser/chunk-P6NJ6IAQ.js +0 -12
  31. package/dist/modules/@powerhousedao/reactor-browser/chunk-REEGAZVT.js +0 -113
  32. package/dist/modules/@powerhousedao/reactor-browser/chunk-RGIB4DD4.js +0 -162
  33. package/dist/modules/@powerhousedao/reactor-browser/chunk-RUNTF5WD.js +0 -2477
  34. package/dist/modules/@powerhousedao/reactor-browser/chunk-TNPKLKIJ.js +0 -0
  35. package/dist/modules/@powerhousedao/reactor-browser/chunk-U34SEKEB.js +0 -250
  36. package/dist/modules/@powerhousedao/reactor-browser/chunk-U36SV333.js +0 -0
  37. package/dist/modules/@powerhousedao/reactor-browser/chunk-ULJSSMFA.js +0 -178
  38. package/dist/modules/@powerhousedao/reactor-browser/chunk-VT7IMWQB.js +0 -0
  39. package/dist/modules/@powerhousedao/reactor-browser/chunk-XBTEGV5M.js +0 -17
  40. package/dist/modules/@powerhousedao/reactor-browser/chunk-Y7NTRTMT.js +0 -25
  41. package/dist/modules/@powerhousedao/reactor-browser/chunk-YG67WAIS.js +0 -0
  42. package/dist/modules/@powerhousedao/reactor-browser/chunk-YWKVPJNL.js +0 -52
  43. package/dist/modules/@powerhousedao/reactor-browser/chunk-ZL5IPB6D.js +0 -0
  44. package/dist/modules/@powerhousedao/reactor-browser/context/index.js +0 -16
  45. package/dist/modules/@powerhousedao/reactor-browser/context/read-mode.js +0 -15
  46. package/dist/modules/@powerhousedao/reactor-browser/crypto/browser.js +0 -7
  47. package/dist/modules/@powerhousedao/reactor-browser/crypto/index.js +0 -7
  48. package/dist/modules/@powerhousedao/reactor-browser/document-model.js +0 -10
  49. package/dist/modules/@powerhousedao/reactor-browser/hooks/document-state.js +0 -96
  50. package/dist/modules/@powerhousedao/reactor-browser/hooks/index.js +0 -98
  51. package/dist/modules/@powerhousedao/reactor-browser/hooks/useAddDebouncedOperations.js +0 -11
  52. package/dist/modules/@powerhousedao/reactor-browser/hooks/useConnectCrypto.js +0 -12
  53. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocument.js +0 -7
  54. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDispatch.js +0 -7
  55. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDrives.js +0 -13
  56. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentEditor.js +0 -20
  57. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActions.js +0 -9
  58. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActionsWithUiNodes.js +0 -14
  59. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveContext.js +0 -9
  60. package/dist/modules/@powerhousedao/reactor-browser/hooks/useUiNodesContext.js +0 -46
  61. package/dist/modules/@powerhousedao/reactor-browser/hooks/useUserPermissions.js +0 -7
  62. package/dist/modules/@powerhousedao/reactor-browser/index.js +0 -127
  63. package/dist/modules/@powerhousedao/reactor-browser/reactor.js +0 -11
  64. package/dist/modules/@powerhousedao/reactor-browser/renown/constants.js +0 -53
  65. package/dist/modules/@powerhousedao/reactor-browser/renown/types.js +0 -1
  66. package/dist/modules/@powerhousedao/reactor-browser/storage/index.js +0 -1
  67. package/dist/modules/@powerhousedao/reactor-browser/storage/types.js +0 -1
  68. package/dist/modules/@powerhousedao/reactor-browser/types/drive-editor.js +0 -1
  69. package/dist/modules/@powerhousedao/reactor-browser/types/index.js +0 -2
  70. package/dist/modules/@powerhousedao/reactor-browser/uiNodes/constants.js +0 -37
  71. package/dist/modules/@powerhousedao/reactor-browser/uiNodes/types.js +0 -1
  72. package/dist/modules/@powerhousedao/reactor-browser/utils/export-document.js +0 -8
  73. package/dist/modules/@powerhousedao/reactor-browser/utils/index.js +0 -9
  74. 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,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
- };
@@ -1,11 +0,0 @@
1
- // ../../packages/reactor-browser/dist/src/hooks/useUserPermissions.js
2
- function useUserPermissions() {
3
- return {
4
- isAllowedToCreateDocuments: true,
5
- isAllowedToEditDocuments: true
6
- };
7
- }
8
-
9
- export {
10
- useUserPermissions
11
- };
@@ -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
- };