@powerhousedao/codegen 4.1.0-dev.19 → 4.1.0-dev.20
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/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +2 -2
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +10 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +292 -131
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +20 -3
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +43 -25
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +37 -42
- package/dist/tsconfig.hygen.tsbuildinfo +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FileItemsGrid.esm.t +0 -44
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderItemsGrid.esm.t +0 -96
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useSelectedFolderChildren.esm.t +0 -35
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useTransformedNodes.esm.t +0 -35
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/codegen",
|
|
3
|
-
"version": "4.1.0-dev.
|
|
3
|
+
"version": "4.1.0-dev.20",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"kysely-pglite": "^0.6.1",
|
|
35
35
|
"prettier": "^3.4.2",
|
|
36
36
|
"ts-morph": "^26.0.0",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
37
|
+
"document-model": "4.1.0-dev.20",
|
|
38
|
+
"@powerhousedao/config": "4.1.0-dev.20"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@graphql-codegen/core": "^4.0.2",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"husky": "^8.0.3",
|
|
46
46
|
"vitest": "^3.1.2",
|
|
47
47
|
"zod": "^3.24.3",
|
|
48
|
-
"@powerhousedao/reactor-api": "4.1.0-dev.
|
|
49
|
-
"document-drive": "4.1.0-dev.
|
|
48
|
+
"@powerhousedao/reactor-api": "4.1.0-dev.20",
|
|
49
|
+
"document-drive": "4.1.0-dev.20"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"build:tsc": "tsc --build",
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FileItemsGrid.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { FileItem, type UiFileNode, type BaseUiFileNode } from "@powerhousedao/design-system";
|
|
6
|
-
|
|
7
|
-
interface FileItemsGridProps {
|
|
8
|
-
files: UiFileNode[];
|
|
9
|
-
onSelectNode: (node: BaseUiFileNode) => void;
|
|
10
|
-
onRenameNode: (nodeId: string, name: string) => void;
|
|
11
|
-
onDuplicateNode: (node: BaseUiFileNode) => void;
|
|
12
|
-
onDeleteNode: (nodeId: string) => void;
|
|
13
|
-
isAllowedToCreateDocuments: boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function FileItemsGrid({
|
|
17
|
-
files,
|
|
18
|
-
onSelectNode,
|
|
19
|
-
onRenameNode,
|
|
20
|
-
onDuplicateNode,
|
|
21
|
-
onDeleteNode,
|
|
22
|
-
isAllowedToCreateDocuments,
|
|
23
|
-
}: FileItemsGridProps) {
|
|
24
|
-
if (files.length === 0) return null;
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
<div>
|
|
28
|
-
<h3 className="text-sm font-medium text-gray-500 mb-2">Files</h3>
|
|
29
|
-
<div className="flex flex-wrap gap-2">
|
|
30
|
-
{files.map((file) => (
|
|
31
|
-
<FileItem
|
|
32
|
-
key={file.id}
|
|
33
|
-
uiNode={file}
|
|
34
|
-
onSelectNode={onSelectNode}
|
|
35
|
-
onRenameNode={(name) => onRenameNode(file.id, name)}
|
|
36
|
-
onDuplicateNode={onDuplicateNode}
|
|
37
|
-
onDeleteNode={() => onDeleteNode(file.id)}
|
|
38
|
-
isAllowedToCreateDocuments={isAllowedToCreateDocuments}
|
|
39
|
-
/>
|
|
40
|
-
))}
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
);
|
|
44
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FolderItemsGrid.tsx"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import {
|
|
6
|
-
FolderItem,
|
|
7
|
-
type UiFolderNode,
|
|
8
|
-
type UiNode,
|
|
9
|
-
type BaseUiFolderNode,
|
|
10
|
-
type BaseUiNode,
|
|
11
|
-
} from "@powerhousedao/design-system";
|
|
12
|
-
import { useState } from "react";
|
|
13
|
-
|
|
14
|
-
interface FolderItemsGridProps {
|
|
15
|
-
folders: UiFolderNode[];
|
|
16
|
-
onSelectNode: (node: BaseUiFolderNode) => void;
|
|
17
|
-
onRenameNode: (nodeId: string, name: string) => void;
|
|
18
|
-
onDuplicateNode: (node: BaseUiFolderNode) => void;
|
|
19
|
-
onDeleteNode: (nodeId: string) => void;
|
|
20
|
-
onAddFile: (file: File, parentNode: BaseUiNode | null) => Promise<void>;
|
|
21
|
-
onCopyNode: (uiNode: BaseUiNode, targetNode: BaseUiNode) => Promise<void>;
|
|
22
|
-
onMoveNode: (uiNode: BaseUiNode, targetNode: BaseUiNode) => Promise<void>;
|
|
23
|
-
isAllowedToCreateDocuments: boolean;
|
|
24
|
-
onAddFolder: (name: string, parentFolder?: string) => void;
|
|
25
|
-
parentFolderId?: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function FolderItemsGrid({
|
|
29
|
-
folders,
|
|
30
|
-
onSelectNode,
|
|
31
|
-
onRenameNode,
|
|
32
|
-
onDuplicateNode,
|
|
33
|
-
onDeleteNode,
|
|
34
|
-
onAddFile,
|
|
35
|
-
onCopyNode,
|
|
36
|
-
onMoveNode,
|
|
37
|
-
isAllowedToCreateDocuments,
|
|
38
|
-
onAddFolder,
|
|
39
|
-
parentFolderId,
|
|
40
|
-
}: FolderItemsGridProps) {
|
|
41
|
-
const [newFolderName, setNewFolderName] = useState("");
|
|
42
|
-
|
|
43
|
-
const handleSubmit = (e: React.FormEvent) => {
|
|
44
|
-
e.preventDefault();
|
|
45
|
-
if (newFolderName.trim()) {
|
|
46
|
-
onAddFolder(newFolderName.trim(), parentFolderId);
|
|
47
|
-
setNewFolderName("");
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<div className="mb-6">
|
|
53
|
-
<div className="flex items-center gap-4 mb-2">
|
|
54
|
-
<h3 className="text-sm font-medium text-gray-500">Folders</h3>
|
|
55
|
-
|
|
56
|
-
{/* New Folder Input */}
|
|
57
|
-
<form onSubmit={handleSubmit} className="w-48">
|
|
58
|
-
<div className="relative">
|
|
59
|
-
<input
|
|
60
|
-
type="text"
|
|
61
|
-
value={newFolderName}
|
|
62
|
-
onChange={(e) => setNewFolderName(e.target.value)}
|
|
63
|
-
placeholder="Create new folder..."
|
|
64
|
-
className="w-full px-3 py-1.5 pr-8 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
|
65
|
-
/>
|
|
66
|
-
<button
|
|
67
|
-
type="submit"
|
|
68
|
-
className="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 focus:outline-none text-sm"
|
|
69
|
-
>
|
|
70
|
-
+
|
|
71
|
-
</button>
|
|
72
|
-
</div>
|
|
73
|
-
</form>
|
|
74
|
-
</div>
|
|
75
|
-
|
|
76
|
-
{folders.length > 0 && (
|
|
77
|
-
<div className="flex flex-wrap gap-2">
|
|
78
|
-
{folders.map((folder) => (
|
|
79
|
-
<FolderItem
|
|
80
|
-
key={folder.id}
|
|
81
|
-
uiNode={folder}
|
|
82
|
-
onSelectNode={onSelectNode}
|
|
83
|
-
onRenameNode={(name) => onRenameNode(folder.id, name)}
|
|
84
|
-
onDuplicateNode={onDuplicateNode}
|
|
85
|
-
onDeleteNode={() => onDeleteNode(folder.id)}
|
|
86
|
-
onAddFile={onAddFile}
|
|
87
|
-
onCopyNode={onCopyNode}
|
|
88
|
-
onMoveNode={onMoveNode}
|
|
89
|
-
isAllowedToCreateDocuments={isAllowedToCreateDocuments}
|
|
90
|
-
/>
|
|
91
|
-
))}
|
|
92
|
-
</div>
|
|
93
|
-
)}
|
|
94
|
-
</div>
|
|
95
|
-
);
|
|
96
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/hooks/useSelectedFolderChildren.ts"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { useMemo } from 'react';
|
|
6
|
-
import type { UiFileNode, UiFolderNode } from '@powerhousedao/design-system';
|
|
7
|
-
|
|
8
|
-
interface SelectedFolderChildren {
|
|
9
|
-
folders: UiFolderNode[];
|
|
10
|
-
files: UiFileNode[];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function useSelectedFolderChildren(
|
|
14
|
-
selectedNodeId: string | undefined,
|
|
15
|
-
folders: UiFolderNode[],
|
|
16
|
-
files: UiFileNode[]
|
|
17
|
-
): SelectedFolderChildren {
|
|
18
|
-
return useMemo(() => {
|
|
19
|
-
if (!selectedNodeId) {
|
|
20
|
-
// Show root-level items when no folder is selected
|
|
21
|
-
return {
|
|
22
|
-
folders: folders.filter(f => !f.parentFolder),
|
|
23
|
-
files: files.filter(f => !f.parentFolder)
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const selectedFolder = folders.find(f => f.id === selectedNodeId);
|
|
28
|
-
if (!selectedFolder) return { folders: [], files: [] };
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
folders: folders.filter(f => f.parentFolder === selectedFolder.id),
|
|
32
|
-
files: files.filter(f => f.parentFolder === selectedFolder.id)
|
|
33
|
-
};
|
|
34
|
-
}, [selectedNodeId, folders, files]);
|
|
35
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/hooks/useTransformedNodes.ts"
|
|
3
|
-
unless_exists: true
|
|
4
|
-
---
|
|
5
|
-
import { useMemo } from 'react';
|
|
6
|
-
import type { Node, FileNode } from 'document-drive';
|
|
7
|
-
import type { UiFileNode, UiFolderNode } from '@powerhousedao/design-system';
|
|
8
|
-
|
|
9
|
-
export function useTransformedNodes(nodes: Node[], driveId: string) {
|
|
10
|
-
return useMemo(() => {
|
|
11
|
-
return nodes.map(node => {
|
|
12
|
-
const isFolder = 'kind' in node && node.kind === 'folder';
|
|
13
|
-
|
|
14
|
-
if (isFolder) {
|
|
15
|
-
return {
|
|
16
|
-
id: node.id,
|
|
17
|
-
name: node.name,
|
|
18
|
-
kind: 'FOLDER' as const,
|
|
19
|
-
parentFolder: node.parentFolder || '',
|
|
20
|
-
driveId,
|
|
21
|
-
children: nodes.filter(n => n.parentFolder === node.id).map(n => n.id)
|
|
22
|
-
};
|
|
23
|
-
} else {
|
|
24
|
-
return {
|
|
25
|
-
id: node.id,
|
|
26
|
-
name: node.name,
|
|
27
|
-
kind: 'FILE' as const,
|
|
28
|
-
parentFolder: node.parentFolder || '',
|
|
29
|
-
driveId,
|
|
30
|
-
documentType: (node as FileNode).documentType
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}).filter(Boolean) as (UiFileNode | UiFolderNode)[];
|
|
34
|
-
}, [nodes, driveId]);
|
|
35
|
-
}
|