@powerhousedao/common 3.2.0-dev.3 → 3.2.0-dev.5
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/index.d.ts +3 -0
- package/dist/drive-analytics/index.d.ts.map +1 -0
- package/dist/drive-analytics/index.js +3 -0
- package/dist/drive-analytics/index.js.map +1 -0
- 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/drive-processor.d.ts +16 -0
- package/dist/drive-analytics/processor/drive-processor.d.ts.map +1 -0
- package/dist/drive-analytics/processor/drive-processor.js +106 -0
- package/dist/drive-analytics/processor/drive-processor.js.map +1 -0
- package/dist/drive-analytics/processor/index.d.ts +8 -0
- package/dist/drive-analytics/processor/index.d.ts.map +1 -0
- package/dist/drive-analytics/processor/index.js +27 -0
- package/dist/drive-analytics/processor/index.js.map +1 -0
- package/dist/drive-analytics/useDriveAnalytics.d.ts +21 -0
- package/dist/drive-analytics/useDriveAnalytics.d.ts.map +1 -0
- package/dist/drive-analytics/useDriveAnalytics.js +34 -0
- package/dist/drive-analytics/useDriveAnalytics.js.map +1 -0
- package/dist/editors/generic-drive-explorer/editor.d.ts.map +1 -1
- package/dist/editors/generic-drive-explorer/editor.js +8 -2
- package/dist/editors/generic-drive-explorer/editor.js.map +1 -1
- package/dist/editors/styles.css +77 -68
- 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/package.json +12 -2
- package/dist/state/apps.d.ts +5 -0
- package/dist/state/apps.d.ts.map +1 -0
- package/dist/state/apps.js +56 -0
- package/dist/state/apps.js.map +1 -0
- package/dist/state/atoms.d.ts +130 -0
- package/dist/state/atoms.d.ts.map +1 -0
- package/dist/state/atoms.js +240 -0
- package/dist/state/atoms.js.map +1 -0
- package/dist/state/config.d.ts +5 -0
- package/dist/state/config.d.ts.map +1 -0
- package/dist/state/config.js +20 -0
- package/dist/state/config.js.map +1 -0
- package/dist/state/cookies.d.ts +21 -0
- package/dist/state/cookies.d.ts.map +1 -0
- package/dist/state/cookies.js +7 -0
- package/dist/state/cookies.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 +38 -0
- package/dist/state/documents.d.ts.map +1 -0
- package/dist/state/documents.js +33 -0
- package/dist/state/documents.js.map +1 -0
- package/dist/state/drives.d.ts +38 -0
- package/dist/state/drives.d.ts.map +1 -0
- package/dist/state/drives.js +174 -0
- package/dist/state/drives.js.map +1 -0
- package/dist/state/editor-modules.d.ts +10 -0
- package/dist/state/editor-modules.d.ts.map +1 -0
- package/dist/state/editor-modules.js +48 -0
- package/dist/state/editor-modules.js.map +1 -0
- package/dist/state/folders.d.ts +4 -0
- package/dist/state/folders.d.ts.map +1 -0
- package/dist/state/folders.js +9 -0
- package/dist/state/folders.js.map +1 -0
- package/dist/state/index.d.ts +22 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +22 -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 +15 -0
- package/dist/state/nodes.d.ts.map +1 -0
- package/dist/state/nodes.js +107 -0
- package/dist/state/nodes.js.map +1 -0
- package/dist/state/permissions.d.ts +17 -0
- package/dist/state/permissions.d.ts.map +1 -0
- package/dist/state/permissions.js +18 -0
- package/dist/state/permissions.js.map +1 -0
- package/dist/state/ph-packages.d.ts +11 -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 +7 -0
- package/dist/state/reactor.d.ts.map +1 -0
- package/dist/state/reactor.js +70 -0
- package/dist/state/reactor.js.map +1 -0
- package/dist/state/storage.d.ts +2 -0
- package/dist/state/storage.d.ts.map +1 -0
- package/dist/state/storage.js +37 -0
- package/dist/state/storage.js.map +1 -0
- package/dist/state/store-provider.d.ts +5 -0
- package/dist/state/store-provider.d.ts.map +1 -0
- package/dist/state/store-provider.js +8 -0
- package/dist/state/store-provider.js.map +1 -0
- package/dist/state/store.d.ts +10 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +3 -0
- package/dist/state/store.js.map +1 -0
- package/dist/state/syncing.d.ts +2 -0
- package/dist/state/syncing.d.ts.map +1 -0
- package/dist/state/syncing.js +12 -0
- package/dist/state/syncing.js.map +1 -0
- package/dist/state/theme.d.ts +3 -0
- package/dist/state/theme.d.ts.map +1 -0
- package/dist/state/theme.js +5 -0
- package/dist/state/theme.js.map +1 -0
- package/dist/state/types.d.ts +61 -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 +27 -0
- package/dist/state/utils.d.ts.map +1 -0
- package/dist/state/utils.js +97 -0
- package/dist/state/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -10
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type DocumentDriveDocument, type Node } from "document-drive";
|
|
2
|
+
import { type Loadable } from "jotai/vanilla/utils/loadable";
|
|
3
|
+
import { type Reactor } from "./types.js";
|
|
4
|
+
export declare function atomWithCompare<Value>(initialValue: Value, areEqual: (prev: Value, next: Value) => boolean): import("jotai").WritableAtom<Value, [Value], void>;
|
|
5
|
+
export declare function makeDriveUrlComponent(drive: DocumentDriveDocument | undefined): string;
|
|
6
|
+
export declare function makeNodeUrlComponent(node: Node | undefined): string;
|
|
7
|
+
export declare function extractNodeFromPath(path: string): string | undefined;
|
|
8
|
+
export declare function extractDriveFromPath(path: string): string | null;
|
|
9
|
+
export declare function getReactorDrives(reactor: Reactor | undefined): Promise<(import("document-model").DocumentHeader & {
|
|
10
|
+
state: import("document-model").BaseState<import("document-drive").DocumentDriveState, import("document-drive").DocumentDriveLocalState>;
|
|
11
|
+
attachments?: import("document-model").FileRegistry;
|
|
12
|
+
} & {
|
|
13
|
+
operations: import("document-model").DocumentOperations<import("document-drive").DocumentDriveAction>;
|
|
14
|
+
initialState: import("document-model").ExtendedState<import("document-drive").DocumentDriveState, import("document-drive").DocumentDriveLocalState>;
|
|
15
|
+
clipboard: import("document-model").Operation<import("document-drive").DocumentDriveAction>[];
|
|
16
|
+
})[]>;
|
|
17
|
+
export declare function getReactorDocuments(reactor: Reactor | undefined): Promise<(import("document-model").DocumentHeader & {
|
|
18
|
+
state: import("document-model").BaseState<unknown, unknown>;
|
|
19
|
+
attachments?: import("document-model").FileRegistry;
|
|
20
|
+
} & {
|
|
21
|
+
operations: import("document-model").DocumentOperations<import("document-model").Action<string, unknown, import("document-model").OperationScope>>;
|
|
22
|
+
initialState: import("document-model").ExtendedState<unknown, unknown>;
|
|
23
|
+
clipboard: import("document-model").Operation<import("document-model").Action<string, unknown, import("document-model").OperationScope>>[];
|
|
24
|
+
})[]>;
|
|
25
|
+
export declare function makeNodes(drives: DocumentDriveDocument[]): Node[];
|
|
26
|
+
export declare function unwrapLoadable<T>(loadable: Loadable<T>): Awaited<T> | undefined;
|
|
27
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../state/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,IAAI,EACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzD,wBAAgB,eAAe,CAAC,KAAK,EACnC,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,OAAO,sDAShD;AACD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,qBAAqB,GAAG,SAAS,UAIzC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,UAK1D;AAcD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,sBAM/C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhE;AACD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;;;;;;;MAWlE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;;;;;;;MAgBrE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,CAoBjE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,0BAGtD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { atomWithReducer } from "jotai/utils";
|
|
2
|
+
import slug from "slug";
|
|
3
|
+
export function atomWithCompare(initialValue, areEqual) {
|
|
4
|
+
return atomWithReducer(initialValue, (prev, next) => {
|
|
5
|
+
if (areEqual(prev, next)) {
|
|
6
|
+
return prev;
|
|
7
|
+
}
|
|
8
|
+
return next;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function makeDriveUrlComponent(drive) {
|
|
12
|
+
if (!drive)
|
|
13
|
+
return "";
|
|
14
|
+
return `/d/${slug(drive.slug)}`;
|
|
15
|
+
}
|
|
16
|
+
export function makeNodeUrlComponent(node) {
|
|
17
|
+
if (!node)
|
|
18
|
+
return "";
|
|
19
|
+
const nodeName = node.name;
|
|
20
|
+
if (!nodeName)
|
|
21
|
+
return slug(node.id);
|
|
22
|
+
return slug(`${nodeName}-${node.id}`);
|
|
23
|
+
}
|
|
24
|
+
function extractNodeSlug(path) {
|
|
25
|
+
const match = /^\/d\/[^/]+\/([^/]+)$/.exec(path);
|
|
26
|
+
return match ? match[1] : null;
|
|
27
|
+
}
|
|
28
|
+
function findUuid(input) {
|
|
29
|
+
if (!input)
|
|
30
|
+
return undefined;
|
|
31
|
+
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/;
|
|
32
|
+
const match = uuidRegex.exec(input);
|
|
33
|
+
return match ? match[0] : undefined;
|
|
34
|
+
}
|
|
35
|
+
export function extractNodeFromPath(path) {
|
|
36
|
+
const nodeSlug = extractNodeSlug(path);
|
|
37
|
+
if (!nodeSlug)
|
|
38
|
+
return undefined;
|
|
39
|
+
const uuid = findUuid(nodeSlug);
|
|
40
|
+
if (!uuid)
|
|
41
|
+
return undefined;
|
|
42
|
+
return uuid;
|
|
43
|
+
}
|
|
44
|
+
export function extractDriveFromPath(path) {
|
|
45
|
+
const match = /^\/d\/([^/]+)/.exec(path);
|
|
46
|
+
return match ? match[1] : null;
|
|
47
|
+
}
|
|
48
|
+
export async function getReactorDrives(reactor) {
|
|
49
|
+
if (!reactor)
|
|
50
|
+
return [];
|
|
51
|
+
const driveIds = await reactor.getDrives();
|
|
52
|
+
const drives = await Promise.all(driveIds.map(async (id) => {
|
|
53
|
+
const drive = await reactor.getDrive(id);
|
|
54
|
+
return drive;
|
|
55
|
+
}));
|
|
56
|
+
console.log("getting reactor drives", drives);
|
|
57
|
+
return drives;
|
|
58
|
+
}
|
|
59
|
+
export async function getReactorDocuments(reactor) {
|
|
60
|
+
if (!reactor)
|
|
61
|
+
return [];
|
|
62
|
+
const driveIds = await reactor.getDrives();
|
|
63
|
+
const documents = (await Promise.all(driveIds.map(async (driveId) => {
|
|
64
|
+
const documentIds = await reactor.getDocuments(driveId);
|
|
65
|
+
const documents = await Promise.all(documentIds.map(async (id) => await reactor.getDocument(driveId, id)));
|
|
66
|
+
return documents;
|
|
67
|
+
}))).flat();
|
|
68
|
+
console.log("getting reactor documents", documents);
|
|
69
|
+
return documents;
|
|
70
|
+
}
|
|
71
|
+
export function makeNodes(drives) {
|
|
72
|
+
const nodes = [];
|
|
73
|
+
for (const drive of drives) {
|
|
74
|
+
const driveFolderNode = {
|
|
75
|
+
id: drive.id,
|
|
76
|
+
name: drive.state.global.name,
|
|
77
|
+
kind: "DRIVE",
|
|
78
|
+
parentFolder: null,
|
|
79
|
+
};
|
|
80
|
+
nodes.push(driveFolderNode);
|
|
81
|
+
for (const n of drive.state.global.nodes) {
|
|
82
|
+
nodes.push({
|
|
83
|
+
id: n.id,
|
|
84
|
+
name: n.name,
|
|
85
|
+
kind: n.kind.toUpperCase(),
|
|
86
|
+
parentFolder: n.parentFolder ?? drive.id,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return nodes;
|
|
91
|
+
}
|
|
92
|
+
export function unwrapLoadable(loadable) {
|
|
93
|
+
if (loadable.state !== "hasData")
|
|
94
|
+
return undefined;
|
|
95
|
+
return loadable.data;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../state/utils.ts"],"names":[],"mappings":"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"}
|