@powerhousedao/codegen 6.0.0-dev.109 → 6.0.0-dev.110
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/src/codegen/__tests__/config.d.ts +0 -1
- package/dist/src/codegen/__tests__/config.d.ts.map +1 -1
- package/dist/src/codegen/__tests__/config.js +0 -1
- package/dist/src/codegen/__tests__/config.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-doc-model.test.js +0 -1
- package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-drive-editor.test.js +0 -5
- package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-editor.test.js +0 -4
- package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-processor.test.js +0 -1
- package/dist/src/codegen/__tests__/generate-processor.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-subgraph.test.d.ts +2 -0
- package/dist/src/codegen/__tests__/generate-subgraph.test.d.ts.map +1 -0
- package/dist/src/codegen/__tests__/generate-subgraph.test.js +197 -0
- package/dist/src/codegen/__tests__/generate-subgraph.test.js.map +1 -0
- package/dist/src/codegen/generate.d.ts +10 -17
- package/dist/src/codegen/generate.d.ts.map +1 -1
- package/dist/src/codegen/generate.js +38 -101
- package/dist/src/codegen/generate.js.map +1 -1
- package/dist/src/codegen/index.d.ts +0 -1
- package/dist/src/codegen/index.d.ts.map +1 -1
- package/dist/src/codegen/index.js +0 -1
- package/dist/src/codegen/index.js.map +1 -1
- package/dist/src/file-builders/index.d.ts +1 -0
- package/dist/src/file-builders/index.d.ts.map +1 -1
- package/dist/src/file-builders/index.js +1 -0
- package/dist/src/file-builders/index.js.map +1 -1
- package/dist/src/file-builders/subgraph.d.ts +10 -0
- package/dist/src/file-builders/subgraph.d.ts.map +1 -0
- package/dist/src/file-builders/subgraph.js +121 -0
- package/dist/src/file-builders/subgraph.js.map +1 -0
- package/dist/src/templates/index.d.ts +1 -0
- package/dist/src/templates/index.d.ts.map +1 -1
- package/dist/src/templates/index.js +1 -0
- package/dist/src/templates/index.js.map +1 -1
- package/dist/src/templates/subgraphs/custom-resolvers.d.ts +5 -0
- package/dist/src/templates/subgraphs/custom-resolvers.d.ts.map +1 -0
- package/dist/src/{codegen/.hygen/templates/powerhouse/generate-custom-subgraph/resolvers.esm.t → templates/subgraphs/custom-resolvers.js} +6 -6
- package/dist/src/templates/subgraphs/custom-resolvers.js.map +1 -0
- package/dist/src/templates/subgraphs/custom-schema.d.ts +5 -0
- package/dist/src/templates/subgraphs/custom-schema.d.ts.map +1 -0
- package/dist/src/templates/subgraphs/custom-schema.js +20 -0
- package/dist/src/templates/subgraphs/custom-schema.js.map +1 -0
- package/dist/src/templates/subgraphs/document-model-resolvers.d.ts +15 -0
- package/dist/src/templates/subgraphs/document-model-resolvers.d.ts.map +1 -0
- package/dist/src/{codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t → templates/subgraphs/document-model-resolvers.js} +55 -47
- package/dist/src/templates/subgraphs/document-model-resolvers.js.map +1 -0
- package/dist/src/templates/subgraphs/document-model-schema.d.ts +12 -0
- package/dist/src/templates/subgraphs/document-model-schema.d.ts.map +1 -0
- package/dist/src/templates/subgraphs/document-model-schema.js +54 -0
- package/dist/src/templates/subgraphs/document-model-schema.js.map +1 -0
- package/dist/src/templates/subgraphs/index-file.d.ts +5 -0
- package/dist/src/templates/subgraphs/index-file.d.ts.map +1 -0
- package/dist/src/{codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t → templates/subgraphs/index-file.js} +7 -7
- package/dist/src/templates/subgraphs/index-file.js.map +1 -0
- package/dist/src/templates/subgraphs/index.d.ts +7 -0
- package/dist/src/templates/subgraphs/index.d.ts.map +1 -0
- package/dist/src/templates/subgraphs/index.js +7 -0
- package/dist/src/templates/subgraphs/index.js.map +1 -0
- package/dist/src/templates/subgraphs/lib-file.d.ts +2 -0
- package/dist/src/templates/subgraphs/lib-file.d.ts.map +1 -0
- package/dist/src/templates/subgraphs/lib-file.js +8 -0
- package/dist/src/templates/subgraphs/lib-file.js.map +1 -0
- package/dist/src/utils/cli.d.ts +0 -6
- package/dist/src/utils/cli.d.ts.map +1 -1
- package/dist/src/utils/cli.js +0 -18
- package/dist/src/utils/cli.js.map +1 -1
- package/dist/src/utils/graphql-type-prefixes.d.ts +10 -0
- package/dist/src/utils/graphql-type-prefixes.d.ts.map +1 -0
- package/dist/src/utils/graphql-type-prefixes.js +51 -0
- package/dist/src/utils/graphql-type-prefixes.js.map +1 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -18
- package/dist/src/codegen/.hygen/package.json +0 -6
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js +0 -10
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/schema.esm.t +0 -20
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/actions.esm.t +0 -16
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/creators.esm.t +0 -9
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/customUtils.esm.t +0 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-schema.esm.t +0 -56
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-type.esm.t +0 -6
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +0 -7
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModelTest.esm.t +0 -121
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/hooks.esm.t +0 -49
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +0 -23
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +0 -127
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/module.esm.t +0 -22
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/ph-factories.esm.t +0 -93
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +0 -46
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/root-utils.esm.t +0 -11
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootActions.esm.t +0 -13
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +0 -14
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/schema.esm.t +0 -6
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/src-index.esm.t +0 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +0 -31
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +0 -77
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/actions.esm.t +0 -22
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +0 -37
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +0 -44
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +0 -36
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +0 -71
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/operations.esm.t +0 -17
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.js +0 -119
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +0 -44
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +0 -58
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveContents.esm.t +0 -23
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +0 -32
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EmptyState.esm.t +0 -19
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Files.esm.t +0 -29
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +0 -108
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Folders.esm.t +0 -28
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/NavigationBreadcrumbs.esm.t +0 -14
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/config.esm.t +0 -11
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +0 -20
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js +0 -25
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/module.esm.t +0 -15
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +0 -80
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +0 -90
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/module.esm.t +0 -16
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.esm.t +0 -59
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +0 -9
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/utils.esm.t +0 -100
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/factory.esm.t +0 -22
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +0 -62
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +0 -12
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.root.esm.t +0 -10
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.root.inject.esm.t +0 -12
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +0 -34
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_call.esm.t +0 -7
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_export.esm.t +0 -7
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_import.esm.t +0 -7
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/factory.esm.t +0 -40
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.esm.t +0 -47
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.js +0 -12
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.root.esm.t +0 -10
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.root.inject.esm.t +0 -12
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.esm.t +0 -34
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_call.esm.t +0 -7
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_export.esm.t +0 -9
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_import.esm.t +0 -7
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/migrations.esm.t +0 -23
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/schema.esm.t +0 -13
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +0 -10
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/lib.esm.t +0 -9
- package/dist/src/codegen/hygen.d.ts +0 -47
- package/dist/src/codegen/hygen.d.ts.map +0 -1
- package/dist/src/codegen/hygen.js +0 -230
- package/dist/src/codegen/hygen.js.map +0 -1
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/DriveContents.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { CreateDocument } from "./CreateDocument.js";
|
|
6
|
-
import { EmptyState } from "./EmptyState.js";
|
|
7
|
-
import { Files } from "./Files.js";
|
|
8
|
-
import { Folders } from "./Folders.js";
|
|
9
|
-
import { NavigationBreadcrumbs } from "./NavigationBreadcrumbs.js";
|
|
10
|
-
|
|
11
|
-
/** Shows the documents and folders in the selected drive */
|
|
12
|
-
export function DriveContents() {
|
|
13
|
-
return (
|
|
14
|
-
<div className="space-y-6 px-6">
|
|
15
|
-
<NavigationBreadcrumbs />
|
|
16
|
-
<Folders />
|
|
17
|
-
<Files />
|
|
18
|
-
<EmptyState />
|
|
19
|
-
<CreateDocument />
|
|
20
|
-
</div>
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/DriveExplorer.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import type { EditorProps } from "document-model";
|
|
6
|
-
import { FolderTree } from "./FolderTree.js";
|
|
7
|
-
import { DriveContents } from "./DriveContents.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Main drive explorer component with sidebar navigation and content area.
|
|
11
|
-
* Layout: Left sidebar (folder tree) + Right content area (files/folders + document editor)
|
|
12
|
-
*/
|
|
13
|
-
export function DriveExplorer({ children }: EditorProps) {
|
|
14
|
-
// if a document is selected then it's editor will be passed as children
|
|
15
|
-
const showDocumentEditor = !!children;
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<div className="flex h-full">
|
|
19
|
-
<FolderTree />
|
|
20
|
-
<div className="flex-1 overflow-y-auto p-4">
|
|
21
|
-
{/* Conditional rendering: Document editor or folder contents */}
|
|
22
|
-
{showDocumentEditor ? (
|
|
23
|
-
/* Document editor view */
|
|
24
|
-
children
|
|
25
|
-
) : (
|
|
26
|
-
/* Folder contents view */
|
|
27
|
-
<DriveContents />
|
|
28
|
-
)}
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
31
|
-
);
|
|
32
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/EmptyState.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { useNodesInSelectedDriveOrFolder } from "@powerhousedao/reactor-browser";
|
|
6
|
-
|
|
7
|
-
/** Shows a message when the selected drive or folder is empty */
|
|
8
|
-
export function EmptyState() {
|
|
9
|
-
const nodes = useNodesInSelectedDriveOrFolder();
|
|
10
|
-
const hasNodes = nodes.length > 0;
|
|
11
|
-
if (hasNodes) return null;
|
|
12
|
-
|
|
13
|
-
return (
|
|
14
|
-
<div className="py-12 text-center text-gray-500">
|
|
15
|
-
<p className="text-lg">This folder is empty</p>
|
|
16
|
-
<p className="mt-2 text-sm">Create your first document or folder below</p>
|
|
17
|
-
</div>
|
|
18
|
-
);
|
|
19
|
-
}
|
package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Files.esm.t
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/Files.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { FileItem } from "@powerhousedao/design-system/connect";
|
|
6
|
-
import {
|
|
7
|
-
useNodesInSelectedDriveOrFolder,
|
|
8
|
-
isFileNodeKind,
|
|
9
|
-
} from "@powerhousedao/reactor-browser";
|
|
10
|
-
|
|
11
|
-
/** Shows the files in the selected drive or folder */
|
|
12
|
-
export function Files() {
|
|
13
|
-
const nodes = useNodesInSelectedDriveOrFolder();
|
|
14
|
-
const fileNodes = nodes.filter((n) => isFileNodeKind(n));
|
|
15
|
-
const hasFiles = fileNodes.length > 0;
|
|
16
|
-
|
|
17
|
-
if (!hasFiles) return null;
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<div>
|
|
21
|
-
<h3 className="mb-2 text-sm font-semibold text-gray-600">Documents</h3>
|
|
22
|
-
<div className="flex flex-wrap gap-4">
|
|
23
|
-
{fileNodes.map((fileNode) => (
|
|
24
|
-
<FileItem key={fileNode.id} fileNode={fileNode} />
|
|
25
|
-
))}
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
);
|
|
29
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/FolderTree.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import {
|
|
6
|
-
Sidebar,
|
|
7
|
-
SidebarProvider,
|
|
8
|
-
type SidebarNode,
|
|
9
|
-
} from "@powerhousedao/document-engineering";
|
|
10
|
-
import {
|
|
11
|
-
setSelectedNode,
|
|
12
|
-
useNodesInSelectedDrive,
|
|
13
|
-
useSelectedDrive,
|
|
14
|
-
useSelectedNode,
|
|
15
|
-
} from "@powerhousedao/reactor-browser";
|
|
16
|
-
import type { Node } from "document-drive";
|
|
17
|
-
import { useMemo } from "react";
|
|
18
|
-
|
|
19
|
-
function buildSidebarNodes(
|
|
20
|
-
nodes: Node[],
|
|
21
|
-
parentId: string | null | undefined,
|
|
22
|
-
): SidebarNode[] {
|
|
23
|
-
return nodes
|
|
24
|
-
.filter((n) => {
|
|
25
|
-
if (parentId == null) {
|
|
26
|
-
return n.parentFolder == null;
|
|
27
|
-
}
|
|
28
|
-
return n.parentFolder === parentId;
|
|
29
|
-
})
|
|
30
|
-
.map((node): SidebarNode => {
|
|
31
|
-
if (node.kind === "folder") {
|
|
32
|
-
return {
|
|
33
|
-
id: node.id,
|
|
34
|
-
title: node.name,
|
|
35
|
-
icon: "FolderClose" as const,
|
|
36
|
-
expandedIcon: "FolderOpen" as const,
|
|
37
|
-
children: buildSidebarNodes(nodes, node.id),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
id: node.id,
|
|
42
|
-
title: node.name,
|
|
43
|
-
icon: "File" as const,
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function transformNodesToSidebarNodes(
|
|
49
|
-
nodes: Node[],
|
|
50
|
-
driveName: string,
|
|
51
|
-
): SidebarNode[] {
|
|
52
|
-
return [
|
|
53
|
-
{
|
|
54
|
-
id: "root",
|
|
55
|
-
title: driveName,
|
|
56
|
-
icon: "Drive" as const,
|
|
57
|
-
children: buildSidebarNodes(nodes, null),
|
|
58
|
-
},
|
|
59
|
-
];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Hierarchical folder tree navigation component using Sidebar from document-engineering.
|
|
64
|
-
* Displays folders and files in a tree structure with expand/collapse functionality, search, and resize support.
|
|
65
|
-
*/
|
|
66
|
-
export function FolderTree() {
|
|
67
|
-
const [selectedDrive] = useSelectedDrive();
|
|
68
|
-
const nodes = useNodesInSelectedDrive();
|
|
69
|
-
const selectedNode = useSelectedNode();
|
|
70
|
-
const driveName = selectedDrive.header.name;
|
|
71
|
-
// Transform Node[] to hierarchical SidebarNode structure
|
|
72
|
-
const sidebarNodes = useMemo(
|
|
73
|
-
() => transformNodesToSidebarNodes(nodes || [], driveName),
|
|
74
|
-
[nodes, driveName],
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
const handleActiveNodeChange = (node: SidebarNode) => {
|
|
78
|
-
// If root node is selected, pass undefined to match existing behavior
|
|
79
|
-
if (node.id === "root") {
|
|
80
|
-
setSelectedNode(undefined);
|
|
81
|
-
} else {
|
|
82
|
-
setSelectedNode(node.id);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
// Map selectedNodeId to activeNodeId (use "root" when undefined)
|
|
86
|
-
const activeNodeId =
|
|
87
|
-
!selectedNode || selectedNode.id === selectedDrive.header.id
|
|
88
|
-
? "root"
|
|
89
|
-
: selectedNode.id;
|
|
90
|
-
|
|
91
|
-
return (
|
|
92
|
-
<SidebarProvider nodes={sidebarNodes}>
|
|
93
|
-
<Sidebar
|
|
94
|
-
className="pt-1"
|
|
95
|
-
nodes={sidebarNodes}
|
|
96
|
-
activeNodeId={activeNodeId}
|
|
97
|
-
onActiveNodeChange={handleActiveNodeChange}
|
|
98
|
-
sidebarTitle="Drive Explorer"
|
|
99
|
-
showSearchBar={true}
|
|
100
|
-
resizable={true}
|
|
101
|
-
allowPinning={false}
|
|
102
|
-
showStatusFilter={false}
|
|
103
|
-
initialWidth={256}
|
|
104
|
-
defaultLevel={2}
|
|
105
|
-
/>
|
|
106
|
-
</SidebarProvider>
|
|
107
|
-
);
|
|
108
|
-
}
|
package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Folders.esm.t
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/Folders.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { FolderItem } from "@powerhousedao/design-system/connect";
|
|
6
|
-
import {
|
|
7
|
-
useNodesInSelectedDriveOrFolder,
|
|
8
|
-
isFolderNodeKind,
|
|
9
|
-
} from "@powerhousedao/reactor-browser";
|
|
10
|
-
|
|
11
|
-
/** Shows the folders in the selected drive or folder */
|
|
12
|
-
export function Folders() {
|
|
13
|
-
const nodes = useNodesInSelectedDriveOrFolder();
|
|
14
|
-
const folderNodes = nodes.filter((n) => isFolderNodeKind(n));
|
|
15
|
-
const hasFolders = folderNodes.length > 0;
|
|
16
|
-
if (!hasFolders) return null;
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<div>
|
|
20
|
-
<h3 className="mb-2 text-sm font-bold text-gray-600">Folders</h3>
|
|
21
|
-
<div className="flex flex-wrap gap-4">
|
|
22
|
-
{folderNodes.map((folderNode) => (
|
|
23
|
-
<FolderItem key={folderNode.id} folderNode={folderNode} />
|
|
24
|
-
))}
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
);
|
|
28
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/components/NavigationBreadcrumbs.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { Breadcrumbs } from "@powerhousedao/design-system/connect";
|
|
6
|
-
|
|
7
|
-
/** Shows the navigation breadcrumbs for the selected drive or folder */
|
|
8
|
-
export function NavigationBreadcrumbs() {
|
|
9
|
-
return (
|
|
10
|
-
<div className="border-b border-gray-200 pb-3 space-y-3">
|
|
11
|
-
<Breadcrumbs />
|
|
12
|
-
</div>
|
|
13
|
-
);
|
|
14
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/config.ts"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import type { PHDriveEditorConfig } from "@powerhousedao/reactor-browser";
|
|
6
|
-
|
|
7
|
-
/** Editor config for the <%= pascalCaseDriveEditorName %> */
|
|
8
|
-
export const editorConfig: PHDriveEditorConfig = {
|
|
9
|
-
isDragAndDropEnabled: <%- isDragAndDropEnabled %>,
|
|
10
|
-
allowedDocumentTypes: <%- allowedDocumentTypes %>
|
|
11
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/editor.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { useSetPHDriveEditorConfig } from "@powerhousedao/reactor-browser";
|
|
6
|
-
import type { EditorProps } from "document-model";
|
|
7
|
-
import { DriveExplorer } from "./components/DriveExplorer.js";
|
|
8
|
-
import { editorConfig } from "./config.js";
|
|
9
|
-
|
|
10
|
-
/** Editor component for the <%= pascalCaseDriveEditorName %> drive editor */
|
|
11
|
-
export default function Editor(props: EditorProps) {
|
|
12
|
-
// set the config for this drive editor
|
|
13
|
-
// you can update these configs in `./config.ts`
|
|
14
|
-
useSetPHDriveEditorConfig(editorConfig);
|
|
15
|
-
return (
|
|
16
|
-
<div className="bg-gray-50 p-6">
|
|
17
|
-
<DriveExplorer {...props} />
|
|
18
|
-
</div>
|
|
19
|
-
);
|
|
20
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
const { pascalCase, kebabCase } = require("change-case");
|
|
2
|
-
const path = require("path");
|
|
3
|
-
|
|
4
|
-
// @ts-check
|
|
5
|
-
module.exports = {
|
|
6
|
-
params: ({ args }) => {
|
|
7
|
-
const name = args.name;
|
|
8
|
-
const rootDir = args.rootDir;
|
|
9
|
-
const driveEditorDirName = args.driveEditorDirName || kebabCase(args.name);
|
|
10
|
-
const driveEditorDir = path.join(rootDir, driveEditorDirName);
|
|
11
|
-
const pascalCaseDriveEditorName = pascalCase(name);
|
|
12
|
-
const kebabCaseDriveEditorName = kebabCase(name);
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
rootDir,
|
|
16
|
-
driveEditorDir,
|
|
17
|
-
name: args.name,
|
|
18
|
-
appId: args.appId,
|
|
19
|
-
isDragAndDropEnabled: args.isDragAndDropEnabled,
|
|
20
|
-
allowedDocumentTypes: args.allowedDocumentTypes,
|
|
21
|
-
pascalCaseDriveEditorName,
|
|
22
|
-
kebabCaseDriveEditorName,
|
|
23
|
-
};
|
|
24
|
-
},
|
|
25
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= driveEditorDir %>/module.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { type EditorModule } from "document-model";
|
|
6
|
-
import { lazy } from "react";
|
|
7
|
-
|
|
8
|
-
export const <%= pascalCaseDriveEditorName %>: EditorModule = {
|
|
9
|
-
Component: lazy(() => import("./editor.js")),
|
|
10
|
-
documentTypes: ["powerhouse/document-drive"],
|
|
11
|
-
config: {
|
|
12
|
-
id: "<%= appId || paramCaseDriveEditorName %>",
|
|
13
|
-
name: "<%= name %>",
|
|
14
|
-
},
|
|
15
|
-
};
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= editorDir %>/editor.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { DocumentToolbar } from "@powerhousedao/design-system/connect";
|
|
6
|
-
import { setName } from "document-model";
|
|
7
|
-
import { type FormEvent, useState } from "react";
|
|
8
|
-
<% if(!documentType){ %>import { useSelectedDocument } from "@powerhousedao/reactor-browser";<% } else { %>import { <%= useSelectedHookName %> } from "<%= documentModelDir %>";<% } %>
|
|
9
|
-
|
|
10
|
-
export default function Editor() {
|
|
11
|
-
const [document, dispatch] = <%= useSelectedHookName %>();
|
|
12
|
-
const [isEditing, setIsEditing] = useState(false);
|
|
13
|
-
|
|
14
|
-
if (!document) return null;
|
|
15
|
-
|
|
16
|
-
const handleSubmit = (event: FormEvent<HTMLFormElement>) => {
|
|
17
|
-
event.preventDefault();
|
|
18
|
-
const form = event.currentTarget;
|
|
19
|
-
const nameInput = form.elements.namedItem("name") as HTMLInputElement;
|
|
20
|
-
const name = nameInput.value.trim();
|
|
21
|
-
if (!name) return;
|
|
22
|
-
dispatch(setName(name));
|
|
23
|
-
setIsEditing(false);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
<div className="min-h-screen bg-gray-50 p-6">
|
|
28
|
-
<DocumentToolbar />
|
|
29
|
-
<div className="ph-default-styles">
|
|
30
|
-
<div className="flex justify-center px-4 py-8">
|
|
31
|
-
<div className="w-full max-w-md rounded-xl bg-white p-6 shadow-sm">
|
|
32
|
-
<div className="mb-4 text-xs font-medium uppercase tracking-wide text-gray-400">
|
|
33
|
-
<%= pascalCaseDocumentType %>
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
{isEditing ? (
|
|
37
|
-
<form onSubmit={handleSubmit} className="space-y-4">
|
|
38
|
-
<input
|
|
39
|
-
type="text"
|
|
40
|
-
name="name"
|
|
41
|
-
defaultValue={document.header.name}
|
|
42
|
-
autoFocus
|
|
43
|
-
className="w-full rounded-lg border border-gray-200 px-4 py-3 text-lg font-semibold text-gray-900 outline-none transition-colors focus:border-blue-500 focus:ring-2 focus:ring-blue-100"
|
|
44
|
-
placeholder="Enter name..."
|
|
45
|
-
/>
|
|
46
|
-
<div className="flex gap-2">
|
|
47
|
-
<button
|
|
48
|
-
type="submit"
|
|
49
|
-
className="flex-1 rounded-lg bg-blue-600 px-4 py-2.5 text-sm font-medium text-white transition-colors hover:bg-blue-700"
|
|
50
|
-
>
|
|
51
|
-
Save
|
|
52
|
-
</button>
|
|
53
|
-
<button
|
|
54
|
-
type="button"
|
|
55
|
-
onClick={() => setIsEditing(false)}
|
|
56
|
-
className="flex-1 rounded-lg border border-gray-200 px-4 py-2.5 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-50"
|
|
57
|
-
>
|
|
58
|
-
Cancel
|
|
59
|
-
</button>
|
|
60
|
-
</div>
|
|
61
|
-
</form>
|
|
62
|
-
) : (
|
|
63
|
-
<div className="flex items-center justify-between gap-4">
|
|
64
|
-
<h2 className="truncate text-xl font-semibold text-gray-900">
|
|
65
|
-
{document.header.name || "Untitled"}
|
|
66
|
-
</h2>
|
|
67
|
-
<button
|
|
68
|
-
onClick={() => setIsEditing(true)}
|
|
69
|
-
className="shrink-0 rounded-lg bg-gray-100 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200"
|
|
70
|
-
>
|
|
71
|
-
Edit
|
|
72
|
-
</button>
|
|
73
|
-
</div>
|
|
74
|
-
)}
|
|
75
|
-
</div>
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
);
|
|
80
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
const {
|
|
2
|
-
pascalCase,
|
|
3
|
-
kebabCase,
|
|
4
|
-
capitalCase,
|
|
5
|
-
camelCase,
|
|
6
|
-
} = require("change-case");
|
|
7
|
-
const { readdirSync, readFileSync } = require("fs");
|
|
8
|
-
const { join } = require("path");
|
|
9
|
-
|
|
10
|
-
// @ts-check
|
|
11
|
-
module.exports = {
|
|
12
|
-
params: ({ args }) => {
|
|
13
|
-
const rootDir = args.rootDir;
|
|
14
|
-
const editorDirName = args.editorDirName || kebabCase(args.name);
|
|
15
|
-
const editorDir = join(rootDir, editorDirName);
|
|
16
|
-
const documentTypes = args.documentTypes
|
|
17
|
-
.split(",")
|
|
18
|
-
.map((type) => type.trim())
|
|
19
|
-
.filter((type) => type !== "");
|
|
20
|
-
const documentTypesMap = JSON.parse(args.documentTypesMap);
|
|
21
|
-
|
|
22
|
-
// if this editor is for a single document type, then the boilerplate will be customized to it
|
|
23
|
-
const singleDocumentType =
|
|
24
|
-
documentTypes.length === 1 ? documentTypes[0] : undefined;
|
|
25
|
-
const documentType = singleDocumentType
|
|
26
|
-
? { ...documentTypesMap[singleDocumentType], type: singleDocumentType }
|
|
27
|
-
: undefined;
|
|
28
|
-
const packageName = args.packageName;
|
|
29
|
-
const pascalCaseEditorName = pascalCase(args.name);
|
|
30
|
-
const kebabCaseEditorName = kebabCase(args.name);
|
|
31
|
-
const pascalCaseDocumentType = pascalCase(documentType?.name);
|
|
32
|
-
const kebabCaseDocumentType = kebabCase(documentType?.name);
|
|
33
|
-
const camelCaseDocumentType = camelCase(documentType?.name);
|
|
34
|
-
const documentVariableName = documentType
|
|
35
|
-
? `${camelCaseDocumentType}Document`
|
|
36
|
-
: "document";
|
|
37
|
-
const phDocumentTypeName = documentType
|
|
38
|
-
? `${pascalCaseDocumentType}Document`
|
|
39
|
-
: "Document";
|
|
40
|
-
const actionTypeName = `${pascalCaseDocumentType}Action`;
|
|
41
|
-
const documentModelDir = `${packageName}/document-models/${kebabCaseDocumentType}`;
|
|
42
|
-
const hooksDir = `${packageName}/editors/hooks`;
|
|
43
|
-
const isDocumentOfTypeFunctionName = `is${phDocumentTypeName}`;
|
|
44
|
-
const assertIsDocumentOfTypeFunctionName = `assertIs${phDocumentTypeName}`;
|
|
45
|
-
const useByIdHookName = documentType
|
|
46
|
-
? `use${phDocumentTypeName}ById`
|
|
47
|
-
: "useDocumentById";
|
|
48
|
-
const useSelectedHookName = documentType
|
|
49
|
-
? `useSelected${phDocumentTypeName}`
|
|
50
|
-
: "useSelectedDocument";
|
|
51
|
-
const useInSelectedDriveHookName = documentType
|
|
52
|
-
? `use${phDocumentTypeName}sInSelectedDrive`
|
|
53
|
-
: "useDocumentsInSelectedDrive";
|
|
54
|
-
const useInSelectedFolderHookName = documentType
|
|
55
|
-
? `use${phDocumentTypeName}sInSelectedFolder`
|
|
56
|
-
: "useDocumentsInSelectedFolder";
|
|
57
|
-
const editNameComponentName = "EditName";
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
rootDir,
|
|
61
|
-
editorDir,
|
|
62
|
-
documentModelsDir: args.documentModelsDir,
|
|
63
|
-
name: args.name,
|
|
64
|
-
pascalCaseEditorName,
|
|
65
|
-
kebabCaseEditorName,
|
|
66
|
-
pascalCaseDocumentType,
|
|
67
|
-
kebabCaseDocumentType,
|
|
68
|
-
camelCaseDocumentType,
|
|
69
|
-
documentVariableName,
|
|
70
|
-
phDocumentTypeName,
|
|
71
|
-
actionTypeName,
|
|
72
|
-
hooksDir,
|
|
73
|
-
documentModelDir,
|
|
74
|
-
isDocumentOfTypeFunctionName,
|
|
75
|
-
assertIsDocumentOfTypeFunctionName,
|
|
76
|
-
useByIdHookName,
|
|
77
|
-
useSelectedHookName,
|
|
78
|
-
useInSelectedDriveHookName,
|
|
79
|
-
useInSelectedFolderHookName,
|
|
80
|
-
editNameComponentName,
|
|
81
|
-
documentTypes: args.documentTypes
|
|
82
|
-
.split(",")
|
|
83
|
-
.filter((type) => type !== ""),
|
|
84
|
-
documentTypesMap,
|
|
85
|
-
editorId: args.editorId,
|
|
86
|
-
documentType,
|
|
87
|
-
packageName,
|
|
88
|
-
};
|
|
89
|
-
},
|
|
90
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= editorDir %>/module.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import type { EditorModule } from "document-model";
|
|
6
|
-
import { lazy } from "react";
|
|
7
|
-
|
|
8
|
-
/** Document editor module for the Todo List document type */
|
|
9
|
-
export const <%= pascalCaseEditorName %>: EditorModule = {
|
|
10
|
-
Component: lazy(() => import("./editor.js")),
|
|
11
|
-
documentTypes: [<% if(!documentTypes.length){ %>"*"<% } else { %><% documentTypes.forEach(type => { _%>"<%= type %>", %><% }); _%> <% } %>],
|
|
12
|
-
config: {
|
|
13
|
-
id: "<%= editorId || paramCaseEditorName %>",
|
|
14
|
-
name: "<%= name || pascalCaseEditorName %>",
|
|
15
|
-
},
|
|
16
|
-
};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { IBaseDocumentDriveServer } from "document-drive";
|
|
6
|
-
import { actions } from "document-model";
|
|
7
|
-
import {
|
|
8
|
-
addDocument,
|
|
9
|
-
addFolder,
|
|
10
|
-
initReactorWithRemoteDrive
|
|
11
|
-
} from "./utils";
|
|
12
|
-
|
|
13
|
-
async function main() {
|
|
14
|
-
const driveServer = (await initReactorWithRemoteDrive(
|
|
15
|
-
"http://localhost:4001/d/powerhouse"
|
|
16
|
-
)) as IBaseDocumentDriveServer;
|
|
17
|
-
|
|
18
|
-
const driveIds = await driveServer.getDrives();
|
|
19
|
-
let drive = await driveServer.getDrive(driveIds[0]);
|
|
20
|
-
|
|
21
|
-
// add folder to root
|
|
22
|
-
await addFolder(driveServer, driveIds[0], "example-folder", "Example Folder");
|
|
23
|
-
drive = await driveServer.getDrive(driveIds[0]);
|
|
24
|
-
|
|
25
|
-
// get root folder
|
|
26
|
-
const rootDirId = drive.state.global.nodes.find(
|
|
27
|
-
(e) => e.name === "Example Folder"
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
// check if root folder exists and throw error if it doesn't
|
|
31
|
-
if (!rootDirId) {
|
|
32
|
-
throw new Error("Root directory not found");
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// add document to root folder
|
|
36
|
-
await addDocument(
|
|
37
|
-
driveServer,
|
|
38
|
-
driveIds[0],
|
|
39
|
-
"example-document",
|
|
40
|
-
"Example Document",
|
|
41
|
-
"powerhouse/document-model",
|
|
42
|
-
rootDirId.id
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
// set model name to example document
|
|
46
|
-
await driveServer.addAction(
|
|
47
|
-
driveIds[0],
|
|
48
|
-
"example-document",
|
|
49
|
-
actions.setModelName({
|
|
50
|
-
name: "Example Document",
|
|
51
|
-
})
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
// get document
|
|
55
|
-
const document = await driveServer.getDocument(driveIds[0], "example-document");
|
|
56
|
-
console.log(document.state.global);
|
|
57
|
-
|
|
58
|
-
process.exit(0);
|
|
59
|
-
}
|