@powerhousedao/common 3.2.0-dev.4 → 3.2.0-dev.6
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/drive-analytics/processor/document-processor.d.ts +14 -0
- package/dist/drive-analytics/processor/document-processor.d.ts.map +1 -0
- package/dist/drive-analytics/processor/document-processor.js +66 -0
- package/dist/drive-analytics/processor/document-processor.js.map +1 -0
- package/dist/drive-analytics/processor/{processor.d.ts → drive-processor.d.ts} +1 -1
- package/dist/drive-analytics/processor/drive-processor.d.ts.map +1 -0
- package/dist/drive-analytics/processor/{processor.js → drive-processor.js} +1 -1
- package/dist/drive-analytics/processor/drive-processor.js.map +1 -0
- package/dist/drive-analytics/processor/index.d.ts +2 -1
- package/dist/drive-analytics/processor/index.d.ts.map +1 -1
- package/dist/drive-analytics/processor/index.js +13 -2
- package/dist/drive-analytics/processor/index.js.map +1 -1
- package/dist/editors/generic-drive-explorer/components/file-content-view.d.ts.map +1 -1
- package/dist/editors/generic-drive-explorer/components/file-content-view.js.map +1 -1
- package/dist/editors/generic-drive-explorer/editor.d.ts.map +1 -1
- package/dist/editors/generic-drive-explorer/editor.js +27 -3
- package/dist/editors/generic-drive-explorer/editor.js.map +1 -1
- package/dist/editors/styles.css +7 -1
- package/dist/editors/utils/storybook.d.ts.map +1 -1
- package/dist/editors/utils/storybook.js +13 -14
- package/dist/editors/utils/storybook.js.map +1 -1
- package/dist/editors/utils/uiNodes.d.ts +2 -2
- package/dist/editors/utils/uiNodes.d.ts.map +1 -1
- package/dist/editors/utils/uiNodes.js +2 -3
- package/dist/editors/utils/uiNodes.js.map +1 -1
- package/dist/hooks/useTimelineItems.d.ts +1 -1
- package/dist/hooks/useTimelineItems.d.ts.map +1 -1
- package/dist/hooks/useTimelineItems.js +8 -6
- package/dist/hooks/useTimelineItems.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/package.json +12 -2
- package/dist/state/atoms.d.ts +136 -0
- package/dist/state/atoms.d.ts.map +1 -0
- package/dist/state/atoms.js +311 -0
- package/dist/state/atoms.js.map +1 -0
- package/dist/state/document-model-modules.d.ts +10 -0
- package/dist/state/document-model-modules.d.ts.map +1 -0
- package/dist/state/document-model-modules.js +82 -0
- package/dist/state/document-model-modules.js.map +1 -0
- package/dist/state/documents.d.ts +17 -0
- package/dist/state/documents.d.ts.map +1 -0
- package/dist/state/documents.js +40 -0
- package/dist/state/documents.js.map +1 -0
- package/dist/state/drives.d.ts +57 -0
- package/dist/state/drives.d.ts.map +1 -0
- package/dist/state/drives.js +194 -0
- package/dist/state/drives.js.map +1 -0
- package/dist/state/editor-modules.d.ts +7 -0
- package/dist/state/editor-modules.d.ts.map +1 -0
- package/dist/state/editor-modules.js +40 -0
- package/dist/state/editor-modules.js.map +1 -0
- package/dist/state/folders.d.ts +6 -0
- package/dist/state/folders.d.ts.map +1 -0
- package/dist/state/folders.js +11 -0
- package/dist/state/folders.js.map +1 -0
- package/dist/state/index.d.ts +16 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +16 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/modals.d.ts +38 -0
- package/dist/state/modals.d.ts.map +1 -0
- package/dist/state/modals.js +32 -0
- package/dist/state/modals.js.map +1 -0
- package/dist/state/nodes.d.ts +29 -0
- package/dist/state/nodes.d.ts.map +1 -0
- package/dist/state/nodes.js +121 -0
- package/dist/state/nodes.js.map +1 -0
- package/dist/state/ph-packages.d.ts +10 -0
- package/dist/state/ph-packages.d.ts.map +1 -0
- package/dist/state/ph-packages.js +26 -0
- package/dist/state/ph-packages.js.map +1 -0
- package/dist/state/processors.d.ts +4 -0
- package/dist/state/processors.d.ts.map +1 -0
- package/dist/state/processors.js +26 -0
- package/dist/state/processors.js.map +1 -0
- package/dist/state/reactor.d.ts +16 -0
- package/dist/state/reactor.d.ts.map +1 -0
- package/dist/state/reactor.js +77 -0
- package/dist/state/reactor.js.map +1 -0
- package/dist/state/store-provider.d.ts +16 -0
- package/dist/state/store-provider.d.ts.map +1 -0
- package/dist/state/store-provider.js +19 -0
- package/dist/state/store-provider.js.map +1 -0
- package/dist/state/store.d.ts +14 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +7 -0
- package/dist/state/store.js.map +1 -0
- package/dist/state/syncing.d.ts +3 -0
- package/dist/state/syncing.d.ts.map +1 -0
- package/dist/state/syncing.js +13 -0
- package/dist/state/syncing.js.map +1 -0
- package/dist/state/types.d.ts +73 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +2 -0
- package/dist/state/types.js.map +1 -0
- package/dist/state/utils.d.ts +31 -0
- package/dist/state/utils.d.ts.map +1 -0
- package/dist/state/utils.js +108 -0
- package/dist/state/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -9
- package/dist/drive-analytics/processor/processor.d.ts.map +0 -1
- package/dist/drive-analytics/processor/processor.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../state/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type DocumentModelLib } from "document-model";
|
|
2
|
+
import { type DriveEditorModule, type Loadable } from "./types.js";
|
|
3
|
+
export type PHPackage = DocumentModelLib & {
|
|
4
|
+
id: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function useInitializePHPackages(loadExternalPackages: () => Promise<PHPackage[]>): void;
|
|
7
|
+
export declare function usePhPackages(): Loadable<Promise<PHPackage[] | undefined>>;
|
|
8
|
+
export declare function useUnwrappedPhPackages(): PHPackage[] | undefined;
|
|
9
|
+
export declare function useDriveEditor(editorId?: string): Loadable<DriveEditorModule | undefined>;
|
|
10
|
+
//# sourceMappingURL=ph-packages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ph-packages.d.ts","sourceRoot":"","sources":["../../state/ph-packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAQvD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,QAMjD;AAED,wBAAgB,aAAa,+CAE5B;AAED,wBAAgB,sBAAsB,4BAErC;AAED,wBAAgB,cAAc,CAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,QAAQ,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAWzC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useAtomValue, useSetAtom } from "jotai";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { loadablePhPackagesAtom, phPackagesAtom, unwrappedPhPackagesAtom, } from "./atoms.js";
|
|
4
|
+
export function useInitializePHPackages(loadExternalPackages) {
|
|
5
|
+
const setPhPackages = useSetAtom(phPackagesAtom);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
setPhPackages(loadExternalPackages);
|
|
8
|
+
}, []);
|
|
9
|
+
}
|
|
10
|
+
export function usePhPackages() {
|
|
11
|
+
return useAtomValue(loadablePhPackagesAtom);
|
|
12
|
+
}
|
|
13
|
+
export function useUnwrappedPhPackages() {
|
|
14
|
+
return useAtomValue(unwrappedPhPackagesAtom);
|
|
15
|
+
}
|
|
16
|
+
export function useDriveEditor(editorId) {
|
|
17
|
+
const phPackages = useUnwrappedPhPackages();
|
|
18
|
+
if (!editorId)
|
|
19
|
+
return { state: "hasData", data: undefined };
|
|
20
|
+
const pkg = phPackages?.find((pkg) => pkg.manifest.apps?.find((app) => app.driveEditor === editorId));
|
|
21
|
+
const driveEditorModule = pkg?.editors.find((editor) => editor.config.id === editorId);
|
|
22
|
+
if (!driveEditorModule)
|
|
23
|
+
return { state: "hasData", data: undefined };
|
|
24
|
+
return { state: "hasData", data: driveEditorModule };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ph-packages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ph-packages.js","sourceRoot":"","sources":["../../state/ph-packages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAKpB,MAAM,UAAU,uBAAuB,CACrC,oBAAgD;IAEhD,MAAM,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,CAAC,sBAAsB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAiB;IAEjB,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5D,MAAM,GAAG,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAC/D,CAAC;IACF,MAAM,iBAAiB,GAAG,GAAG,EAAE,OAAO,CAAC,IAAI,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAC1C,CAAC;IACF,IAAI,CAAC,iBAAiB;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAsC,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processors.d.ts","sourceRoot":"","sources":["../../state/processors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAM/E,wBAAgB,mBAAmB,iCAElC;AAED,wBAAgB,6BAA6B,SAmB5C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ProcessorManager } from "document-drive/processors/processor-manager";
|
|
2
|
+
import { useAtom, useAtomValue } from "jotai";
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
import { processorManagerAtom } from "./atoms.js";
|
|
5
|
+
import { useUnwrappedReactor } from "./reactor.js";
|
|
6
|
+
export function useProcessorManager() {
|
|
7
|
+
return useAtomValue(processorManagerAtom);
|
|
8
|
+
}
|
|
9
|
+
export function useInitializeProcessorManager() {
|
|
10
|
+
const reactor = useUnwrappedReactor();
|
|
11
|
+
const [processorManager, setProcessorManager] = useAtom(processorManagerAtom);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
// wait for reactor to be initialized
|
|
14
|
+
if (!reactor)
|
|
15
|
+
return;
|
|
16
|
+
// return if already initialized
|
|
17
|
+
if (processorManager)
|
|
18
|
+
return;
|
|
19
|
+
const initializedProcessManager = new ProcessorManager(reactor.listeners, reactor);
|
|
20
|
+
reactor.on("driveAdded", async (drive) => {
|
|
21
|
+
await initializedProcessManager.registerDrive(drive.header.id);
|
|
22
|
+
});
|
|
23
|
+
setProcessorManager(initializedProcessManager);
|
|
24
|
+
}, [processorManager, reactor, setProcessorManager]);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=processors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processors.js","sourceRoot":"","sources":["../../state/processors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,mBAAmB;IACjC,OAAO,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE9E,SAAS,CAAC,GAAG,EAAE;QACb,qCAAqC;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,gCAAgC;QAChC,IAAI,gBAAgB;YAAE,OAAO;QAE7B,MAAM,yBAAyB,GAAG,IAAI,gBAAgB,CACpD,OAAO,CAAC,SAAS,EACjB,OAAO,CACR,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,KAA4B,EAAE,EAAE;YAC9D,MAAM,yBAAyB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type SyncStatus } from "document-drive";
|
|
2
|
+
import { type Reactor, type SharingType } from "./types.js";
|
|
3
|
+
/** Returns a loadable of the reactor. */
|
|
4
|
+
export declare function useReactor(): import("jotai/vanilla/utils/loadable").Loadable<Promise<import("document-drive").IDocumentDriveServer | undefined>>;
|
|
5
|
+
/** Returns the unwrapped reactor. */
|
|
6
|
+
export declare function useUnwrappedReactor(): import("document-drive").IDocumentDriveServer | undefined;
|
|
7
|
+
/** Initializes the reactor.
|
|
8
|
+
*
|
|
9
|
+
* Creates the reactor and sets the selected drive and node from the URL if `shouldNavigate` is true.
|
|
10
|
+
* Subscribes to the reactor's events and refreshes the drives and documents when they change.
|
|
11
|
+
*
|
|
12
|
+
* If the reactor is already initialized, does nothing.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useInitializeReactor(createReactor: () => Promise<Reactor>, shouldNavigate?: boolean): void;
|
|
15
|
+
export declare function useGetSyncStatusSync(): (syncId: string, sharingType: SharingType) => SyncStatus | undefined;
|
|
16
|
+
//# sourceMappingURL=reactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../state/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAG5D,yCAAyC;AACzC,wBAAgB,UAAU,wHAEzB;AAED,qCAAqC;AACrC,wBAAgB,mBAAmB,8DAElC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACrC,cAAc,UAAO,QA4CtB;AAED,wBAAgB,oBAAoB,aAIvB,MAAM,eAAe,WAAW,KAAG,UAAU,GAAG,SAAS,CAmBrE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { SynchronizationUnitNotFoundError, } from "document-drive";
|
|
2
|
+
import { useAtomValue, useSetAtom } from "jotai";
|
|
3
|
+
import { useCallback, useEffect } from "react";
|
|
4
|
+
import { initializeReactorAtom, loadableReactorAtom, selectedDriveAtom, setSelectedNodeAtom, unwrappedReactorAtom, } from "./atoms.js";
|
|
5
|
+
import { useSyncDrivesAndDocumentsWithReactor } from "./syncing.js";
|
|
6
|
+
import { setSelectedDriveAndNodeFromUrl } from "./utils.js";
|
|
7
|
+
/** Returns a loadable of the reactor. */
|
|
8
|
+
export function useReactor() {
|
|
9
|
+
return useAtomValue(loadableReactorAtom);
|
|
10
|
+
}
|
|
11
|
+
/** Returns the unwrapped reactor. */
|
|
12
|
+
export function useUnwrappedReactor() {
|
|
13
|
+
return useAtomValue(unwrappedReactorAtom);
|
|
14
|
+
}
|
|
15
|
+
/** Initializes the reactor.
|
|
16
|
+
*
|
|
17
|
+
* Creates the reactor and sets the selected drive and node from the URL if `shouldNavigate` is true.
|
|
18
|
+
* Subscribes to the reactor's events and refreshes the drives and documents when they change.
|
|
19
|
+
*
|
|
20
|
+
* If the reactor is already initialized, does nothing.
|
|
21
|
+
*/
|
|
22
|
+
export function useInitializeReactor(createReactor, shouldNavigate = true) {
|
|
23
|
+
const unwrappedReactor = useUnwrappedReactor();
|
|
24
|
+
const setReactor = useSetAtom(initializeReactorAtom);
|
|
25
|
+
const setSelectedDrive = useSetAtom(selectedDriveAtom);
|
|
26
|
+
const setSelectedNode = useSetAtom(setSelectedNodeAtom);
|
|
27
|
+
const refresh = useSyncDrivesAndDocumentsWithReactor();
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
// If the reactor is already initialized, do nothing.
|
|
30
|
+
if (unwrappedReactor)
|
|
31
|
+
return;
|
|
32
|
+
async function initializeReactor() {
|
|
33
|
+
// Create the reactor instance.
|
|
34
|
+
const reactor = await createReactor();
|
|
35
|
+
// Subscribe to the reactor's events.
|
|
36
|
+
reactor.on("syncStatus", (event, status, error) => {
|
|
37
|
+
console.log("syncStatus", event, status, error);
|
|
38
|
+
refresh();
|
|
39
|
+
});
|
|
40
|
+
reactor.on("strandUpdate", () => {
|
|
41
|
+
console.log("strandUpdate");
|
|
42
|
+
refresh();
|
|
43
|
+
});
|
|
44
|
+
reactor.on("defaultRemoteDrive", () => {
|
|
45
|
+
console.log("defaultRemoteDrive");
|
|
46
|
+
refresh();
|
|
47
|
+
});
|
|
48
|
+
// Set the reactor instance atom.
|
|
49
|
+
setReactor(reactor);
|
|
50
|
+
// Set the selected drive and node from the URL if `shouldNavigate` is true.
|
|
51
|
+
await setSelectedDriveAndNodeFromUrl(reactor, setSelectedDrive, setSelectedNode, shouldNavigate);
|
|
52
|
+
}
|
|
53
|
+
initializeReactor().catch(console.error);
|
|
54
|
+
}, [setReactor, createReactor, refresh, shouldNavigate]);
|
|
55
|
+
}
|
|
56
|
+
export function useGetSyncStatusSync() {
|
|
57
|
+
const reactor = useUnwrappedReactor();
|
|
58
|
+
const getSyncStatusSync = useCallback((syncId, sharingType) => {
|
|
59
|
+
if (sharingType === "LOCAL")
|
|
60
|
+
return;
|
|
61
|
+
if (!reactor) {
|
|
62
|
+
return "INITIAL_SYNC";
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const syncStatus = reactor.getSyncStatus(syncId);
|
|
66
|
+
if (syncStatus instanceof SynchronizationUnitNotFoundError)
|
|
67
|
+
return "INITIAL_SYNC";
|
|
68
|
+
return syncStatus;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
console.error(error);
|
|
72
|
+
return "ERROR";
|
|
73
|
+
}
|
|
74
|
+
}, [reactor]);
|
|
75
|
+
return getSyncStatusSync;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=reactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../state/reactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "jotai-devtools/styles.css";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
/** Provides the atom store to the app.
|
|
4
|
+
*
|
|
5
|
+
* This is the top-level provider for the atom store.
|
|
6
|
+
*
|
|
7
|
+
* It is used to provide the atom store to the app.
|
|
8
|
+
*
|
|
9
|
+
* It should only be used once in the app and must appear before any `<Suspense>` boundaries.
|
|
10
|
+
*
|
|
11
|
+
* Includes the Jotai DevTools for debugging.
|
|
12
|
+
*/
|
|
13
|
+
export declare function AtomStoreProvider({ children }: {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=store-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-provider.d.ts","sourceRoot":"","sources":["../../state/store-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAOtE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Provider } from "jotai";
|
|
3
|
+
import { DevTools } from "jotai-devtools";
|
|
4
|
+
import "jotai-devtools/styles.css";
|
|
5
|
+
import { atomStore } from "./store.js";
|
|
6
|
+
/** Provides the atom store to the app.
|
|
7
|
+
*
|
|
8
|
+
* This is the top-level provider for the atom store.
|
|
9
|
+
*
|
|
10
|
+
* It is used to provide the atom store to the app.
|
|
11
|
+
*
|
|
12
|
+
* It should only be used once in the app and must appear before any `<Suspense>` boundaries.
|
|
13
|
+
*
|
|
14
|
+
* Includes the Jotai DevTools for debugging.
|
|
15
|
+
*/
|
|
16
|
+
export function AtomStoreProvider({ children }) {
|
|
17
|
+
return (_jsxs(Provider, { store: atomStore, children: [_jsx(DevTools, { store: atomStore }), children] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=store-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-provider.js","sourceRoot":"","sources":["../../state/store-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,2BAA2B,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAA2B;IACrE,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,aACxB,KAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,GAAI,EAC7B,QAAQ,IACA,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** The atom store for the app.
|
|
2
|
+
*
|
|
3
|
+
* All derived hooks should use this store.
|
|
4
|
+
*/
|
|
5
|
+
export declare const atomStore: {
|
|
6
|
+
get: <Value>(atom: import("jotai").Atom<Value>) => Value;
|
|
7
|
+
set: <Value, Args extends unknown[], Result>(atom: import("jotai").WritableAtom<Value, Args, Result>, ...args: Args) => Result;
|
|
8
|
+
sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
|
|
9
|
+
} | ({
|
|
10
|
+
get: <Value>(atom: import("jotai").Atom<Value>) => Value;
|
|
11
|
+
set: <Value, Args extends unknown[], Result>(atom: import("jotai").WritableAtom<Value, Args, Result>, ...args: Args) => Result;
|
|
12
|
+
sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
|
|
13
|
+
} & import("jotai/vanilla/store").INTERNAL_DevStoreRev4);
|
|
14
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../state/store.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS;;0GACmhH,GAAI;;;;0GAAJ,GAAI;;wDADvgH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../state/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncing.d.ts","sourceRoot":"","sources":["../../state/syncing.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,wBAAgB,oCAAoC,eAQnD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useRefreshDocuments } from "./documents.js";
|
|
3
|
+
import { useRefreshDrives } from "./drives.js";
|
|
4
|
+
/** Returns a function that refreshes the drives and documents for a reactor. */
|
|
5
|
+
export function useSyncDrivesAndDocumentsWithReactor() {
|
|
6
|
+
const refreshDrives = useRefreshDrives();
|
|
7
|
+
const refreshDocuments = useRefreshDocuments();
|
|
8
|
+
return useCallback(() => {
|
|
9
|
+
refreshDrives();
|
|
10
|
+
refreshDocuments();
|
|
11
|
+
}, [refreshDrives, refreshDocuments]);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=syncing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncing.js","sourceRoot":"","sources":["../../state/syncing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,gFAAgF;AAChF,MAAM,UAAU,oCAAoC;IAClD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,aAAa,EAAE,CAAC;QAChB,gBAAgB,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { DocumentDriveDocument, FileNode, IDocumentDriveServer } from "document-drive";
|
|
2
|
+
import { type EditorProps } from "document-model";
|
|
3
|
+
import { type FC } from "react";
|
|
4
|
+
import { type NOT_SET } from "./utils.js";
|
|
5
|
+
/** The type for the reactor instance.
|
|
6
|
+
* Alias for the legacy IDocumentDriveServer type.
|
|
7
|
+
*/
|
|
8
|
+
export type Reactor = IDocumentDriveServer;
|
|
9
|
+
/** The type for the unset atom (sentinel) value. */
|
|
10
|
+
export type UnsetAtomValue = typeof NOT_SET;
|
|
11
|
+
/** Alias for the Loadable type from Jotai. */
|
|
12
|
+
export { type Loadable } from "jotai/vanilla/utils/loadable";
|
|
13
|
+
/** The type for the drive editor props.
|
|
14
|
+
*
|
|
15
|
+
* TODO: update so that these props are the same as any other editor and the `addFile` prop is removed.
|
|
16
|
+
*/
|
|
17
|
+
export type DriveEditorProps = EditorProps<DocumentDriveDocument> & {
|
|
18
|
+
addFile: (file: string | File, driveId: string, name?: string, parentFolderId?: string) => Promise<FileNode>;
|
|
19
|
+
className?: string;
|
|
20
|
+
children?: React.ReactNode;
|
|
21
|
+
};
|
|
22
|
+
export type DriveEditorModule = {
|
|
23
|
+
Component: FC<DriveEditorProps>;
|
|
24
|
+
documentTypes: string[];
|
|
25
|
+
config: {
|
|
26
|
+
id: string;
|
|
27
|
+
disableExternalControls?: boolean;
|
|
28
|
+
documentToolbarEnabled?: boolean;
|
|
29
|
+
showSwitchboardLink?: boolean;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type SharingType = "LOCAL" | "CLOUD" | "PUBLIC";
|
|
33
|
+
export type NodeKind = "FOLDER" | "FILE";
|
|
34
|
+
export type Theme = "light" | "dark";
|
|
35
|
+
export type ConnectConfig = {
|
|
36
|
+
appVersion: string | undefined;
|
|
37
|
+
studioMode: boolean;
|
|
38
|
+
warnOutdatedApp: boolean;
|
|
39
|
+
routerBasename: string | undefined;
|
|
40
|
+
analyticsDatabaseName: string | undefined;
|
|
41
|
+
sentry: {
|
|
42
|
+
dsn: string | undefined;
|
|
43
|
+
env: string | undefined;
|
|
44
|
+
tracing: boolean | undefined;
|
|
45
|
+
};
|
|
46
|
+
content: {
|
|
47
|
+
showSearchBar: boolean;
|
|
48
|
+
showDocumentModelSelectionSetting: boolean;
|
|
49
|
+
};
|
|
50
|
+
drives: {
|
|
51
|
+
addDriveEnabled: boolean;
|
|
52
|
+
sections: {
|
|
53
|
+
LOCAL: {
|
|
54
|
+
enabled: boolean;
|
|
55
|
+
allowAdd: boolean;
|
|
56
|
+
allowDelete: boolean;
|
|
57
|
+
};
|
|
58
|
+
CLOUD: {
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
allowAdd: boolean;
|
|
61
|
+
allowDelete: boolean;
|
|
62
|
+
};
|
|
63
|
+
PUBLIC: {
|
|
64
|
+
enabled: boolean;
|
|
65
|
+
allowAdd: boolean;
|
|
66
|
+
allowDelete: boolean;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
gaTrackingId: string | undefined;
|
|
71
|
+
phCliVersion: string | undefined;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,QAAQ,EACR,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,oBAAoB,CAAC;AAE3C,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG,OAAO,OAAO,CAAC;AAE5C,8CAA8C;AAC9C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,qBAAqB,CAAC,GAAG;IAClE,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,KACpB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE;QACP,aAAa,EAAE,OAAO,CAAC;QACvB,iCAAiC,EAAE,OAAO,CAAC;KAC5C,CAAC;IACF,MAAM,EAAE;QACN,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE;YACR,KAAK,EAAE;gBACL,OAAO,EAAE,OAAO,CAAC;gBACjB,QAAQ,EAAE,OAAO,CAAC;gBAClB,WAAW,EAAE,OAAO,CAAC;aACtB,CAAC;YACF,KAAK,EAAE;gBACL,OAAO,EAAE,OAAO,CAAC;gBACjB,QAAQ,EAAE,OAAO,CAAC;gBAClB,WAAW,EAAE,OAAO,CAAC;aACtB,CAAC;YACF,MAAM,EAAE;gBACN,OAAO,EAAE,OAAO,CAAC;gBACjB,QAAQ,EAAE,OAAO,CAAC;gBAClB,WAAW,EAAE,OAAO,CAAC;aACtB,CAAC;SACH,CAAC;KACH,CAAC;IACF,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../state/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type DocumentDriveDocument, type Node } from "document-drive";
|
|
2
|
+
import { type Reactor } from "./types.js";
|
|
3
|
+
/** Sentinel value for atoms that are not set. */
|
|
4
|
+
export declare const NOT_SET = "NOT_SET";
|
|
5
|
+
export declare function suspendUntilSet<T>(): Promise<T>;
|
|
6
|
+
/** Makes a URL component for a drive. */
|
|
7
|
+
export declare function makeDriveUrlComponent(drive: DocumentDriveDocument | undefined): string;
|
|
8
|
+
/** Makes a URL component for a node. */
|
|
9
|
+
export declare function makeNodeUrlComponent(node: Node | undefined): string;
|
|
10
|
+
/** Extracts the node id from a path. */
|
|
11
|
+
export declare function extractNodeFromPath(path: string): string | undefined;
|
|
12
|
+
/** Extracts the node name, slug, or id from a path. */
|
|
13
|
+
export declare function extractNodeNameOrSlugOrIdFromPath(path: string): string | undefined;
|
|
14
|
+
/** Extracts the drive slug from a path.
|
|
15
|
+
* Used for extracting drive ids from drive slugs in the URL.
|
|
16
|
+
* Expects the path to be in the format `/d/<drive-slug>`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractDriveFromPath(path: string): string | null;
|
|
19
|
+
/** Legacy function that makes a slug from a node name.
|
|
20
|
+
* Used for compatibility with the old URL structure in Connect.
|
|
21
|
+
*/
|
|
22
|
+
export declare function makeNodeSlugFromNodeName(name: string): string;
|
|
23
|
+
/** Sets the selected drive and node from the URL.
|
|
24
|
+
*
|
|
25
|
+
* Both the selected drive id and selected node id begin in the NOT_SET state, so they will suspend unless set by this function or another implementation.
|
|
26
|
+
*
|
|
27
|
+
* If the URL is in the format `/d/<drive-slug>`, the selected drive will be set.
|
|
28
|
+
* If the URL is in the format `/d/<drive-slug>/<node-slug>`, the selected drive and node will be set.
|
|
29
|
+
*/
|
|
30
|
+
export declare function setSelectedDriveAndNodeFromUrl(reactor: Reactor | undefined, setSelectedDrive: (driveId: string | undefined) => void, setSelectedNode: (nodeId: string | undefined) => void, shouldNavigate: boolean): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../state/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,iDAAiD;AACjD,eAAO,MAAM,OAAO,YAAY,CAAC;AAOjC,wBAAgB,eAAe,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAE/C;AAED,yCAAyC;AACzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,qBAAqB,GAAG,SAAS,UAIzC;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,UAK1D;AAoBD,wCAAwC;AACxC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,sBAM/C;AAED,uDAAuD;AACvD,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,sBAK7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,UAEpD;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EACvD,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EACrD,cAAc,EAAE,OAAO,iBAUxB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import slug from "slug";
|
|
2
|
+
/** Sentinel value for atoms that are not set. */
|
|
3
|
+
export const NOT_SET = "NOT_SET";
|
|
4
|
+
/* Will suspend until the atom is set elsewhere.
|
|
5
|
+
* Returns a promise that will never resolve of type T.
|
|
6
|
+
*
|
|
7
|
+
* Makes use of Jotai's "async forever" pattern as described here https://jotai.org/docs/guides/async#async-forever
|
|
8
|
+
*/
|
|
9
|
+
export function suspendUntilSet() {
|
|
10
|
+
return new Promise(() => { });
|
|
11
|
+
}
|
|
12
|
+
/** Makes a URL component for a drive. */
|
|
13
|
+
export function makeDriveUrlComponent(drive) {
|
|
14
|
+
if (!drive)
|
|
15
|
+
return "";
|
|
16
|
+
return `/d/${slug(drive.header.slug)}`;
|
|
17
|
+
}
|
|
18
|
+
/** Makes a URL component for a node. */
|
|
19
|
+
export function makeNodeUrlComponent(node) {
|
|
20
|
+
if (!node)
|
|
21
|
+
return "";
|
|
22
|
+
const nodeName = node.name;
|
|
23
|
+
if (!nodeName)
|
|
24
|
+
return slug(node.id);
|
|
25
|
+
return slug(`${nodeName}-${node.id}`);
|
|
26
|
+
}
|
|
27
|
+
/** Extracts the node slug from a path.
|
|
28
|
+
*
|
|
29
|
+
* The path is expected to be in the format `/d/<drive-slug>/<node-slug>`.
|
|
30
|
+
*/
|
|
31
|
+
function extractNodeSlug(path) {
|
|
32
|
+
const match = /^\/d\/[^/]+\/([^/]+)$/.exec(path);
|
|
33
|
+
return match ? match[1] : undefined;
|
|
34
|
+
}
|
|
35
|
+
/** Finds a UUID in a string, used for extracting node ids from node slugs in the URL. */
|
|
36
|
+
function findUuid(input) {
|
|
37
|
+
if (!input)
|
|
38
|
+
return undefined;
|
|
39
|
+
const uuidRegex = /\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\b/;
|
|
40
|
+
const match = uuidRegex.exec(input);
|
|
41
|
+
return match ? match[0] : undefined;
|
|
42
|
+
}
|
|
43
|
+
/** Extracts the node id from a path. */
|
|
44
|
+
export function extractNodeFromPath(path) {
|
|
45
|
+
const nodeSlug = extractNodeSlug(path);
|
|
46
|
+
if (!nodeSlug)
|
|
47
|
+
return undefined;
|
|
48
|
+
const uuid = findUuid(nodeSlug);
|
|
49
|
+
if (!uuid)
|
|
50
|
+
return undefined;
|
|
51
|
+
return uuid;
|
|
52
|
+
}
|
|
53
|
+
/** Extracts the node name, slug, or id from a path. */
|
|
54
|
+
export function extractNodeNameOrSlugOrIdFromPath(path) {
|
|
55
|
+
const nodeSlug = extractNodeSlug(path);
|
|
56
|
+
const nodeId = findUuid(nodeSlug);
|
|
57
|
+
if (nodeId)
|
|
58
|
+
return nodeId;
|
|
59
|
+
return nodeSlug;
|
|
60
|
+
}
|
|
61
|
+
/** Extracts the drive slug from a path.
|
|
62
|
+
* Used for extracting drive ids from drive slugs in the URL.
|
|
63
|
+
* Expects the path to be in the format `/d/<drive-slug>`.
|
|
64
|
+
*/
|
|
65
|
+
export function extractDriveFromPath(path) {
|
|
66
|
+
const match = /^\/d\/([^/]+)/.exec(path);
|
|
67
|
+
return match ? match[1] : null;
|
|
68
|
+
}
|
|
69
|
+
/** Legacy function that makes a slug from a node name.
|
|
70
|
+
* Used for compatibility with the old URL structure in Connect.
|
|
71
|
+
*/
|
|
72
|
+
export function makeNodeSlugFromNodeName(name) {
|
|
73
|
+
return name.replaceAll(/\s/g, "-");
|
|
74
|
+
}
|
|
75
|
+
/** Sets the selected drive and node from the URL.
|
|
76
|
+
*
|
|
77
|
+
* Both the selected drive id and selected node id begin in the NOT_SET state, so they will suspend unless set by this function or another implementation.
|
|
78
|
+
*
|
|
79
|
+
* If the URL is in the format `/d/<drive-slug>`, the selected drive will be set.
|
|
80
|
+
* If the URL is in the format `/d/<drive-slug>/<node-slug>`, the selected drive and node will be set.
|
|
81
|
+
*/
|
|
82
|
+
export async function setSelectedDriveAndNodeFromUrl(reactor, setSelectedDrive, setSelectedNode, shouldNavigate) {
|
|
83
|
+
if (typeof window === "undefined")
|
|
84
|
+
return;
|
|
85
|
+
if (!shouldNavigate)
|
|
86
|
+
return;
|
|
87
|
+
if (!reactor)
|
|
88
|
+
return;
|
|
89
|
+
const path = window.location.pathname;
|
|
90
|
+
const drive = await handleDriveFromUrl(reactor, path, setSelectedDrive);
|
|
91
|
+
handleNodeFromUrl(drive, path, setSelectedNode);
|
|
92
|
+
}
|
|
93
|
+
async function handleDriveFromUrl(reactor, path, setSelectedDrive) {
|
|
94
|
+
const driveSlug = extractDriveFromPath(path);
|
|
95
|
+
const driveIds = await reactor.getDrives();
|
|
96
|
+
const drives = await Promise.all(driveIds.map((id) => reactor.getDrive(id)));
|
|
97
|
+
const drive = drives.find((d) => d.header.slug === driveSlug || d.header.id === driveSlug);
|
|
98
|
+
setSelectedDrive(drive?.header.id);
|
|
99
|
+
return drive;
|
|
100
|
+
}
|
|
101
|
+
function handleNodeFromUrl(drive, path, setSelectedNode) {
|
|
102
|
+
const nodeIdOrSlugOrNameFromPath = extractNodeNameOrSlugOrIdFromPath(path);
|
|
103
|
+
const nodes = drive?.state.global.nodes;
|
|
104
|
+
const node = nodes?.find((n) => n.id === nodeIdOrSlugOrNameFromPath ||
|
|
105
|
+
makeNodeSlugFromNodeName(n.name) === nodeIdOrSlugOrNameFromPath);
|
|
106
|
+
setSelectedNode(node?.id);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../state/utils.ts"],"names":[],"mappings":"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"}
|