@powerhousedao/codegen 4.1.0-dev.8 → 4.1.0-staging.1
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-custom-subgraph/index.d.ts +14 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js +12 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/resolvers.esm.t +17 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/schema.esm.t +16 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/object.esm.t +3 -3
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/ph-factories.esm.t +96 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +3 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +2 -2
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +11 -10
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +2 -2
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +6 -10
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +4 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +1 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +13 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +1 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +59 -50
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +3 -3
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +38 -24
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +244 -181
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +53 -74
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +44 -26
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +22 -58
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.d.ts +16 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.d.ts.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.esm.t +2 -3
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js +12 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js.map +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +2 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts.map +1 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +1 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +1 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +1 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/factory.esm.t +2 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +7 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/factory.esm.t +3 -2
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.esm.t +6 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +0 -32
- package/dist/src/codegen/hygen.d.ts +6 -4
- package/dist/src/codegen/hygen.d.ts.map +1 -1
- package/dist/src/codegen/hygen.js +35 -8
- package/dist/src/codegen/hygen.js.map +1 -1
- package/dist/src/codegen/index.d.ts +5 -3
- package/dist/src/codegen/index.d.ts.map +1 -1
- package/dist/src/codegen/index.js +72 -5
- package/dist/src/codegen/index.js.map +1 -1
- package/dist/src/ts-morph-generator/core/GenerationContext.d.ts +8 -6
- package/dist/src/ts-morph-generator/core/GenerationContext.d.ts.map +1 -1
- package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts +1 -0
- package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts.map +1 -1
- package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js +9 -7
- package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js.map +1 -1
- package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts +3 -0
- package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts.map +1 -1
- package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js +85 -14
- package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js.map +1 -1
- package/dist/tsconfig.hygen.tsbuildinfo +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +13 -6
- 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
|
@@ -2,123 +2,102 @@
|
|
|
2
2
|
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/EditorContainer.tsx"
|
|
3
3
|
unless_exists: true
|
|
4
4
|
---
|
|
5
|
+
import { getRevisionFromDate, useTimelineItems } from "@powerhousedao/common";
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
exportDocument,
|
|
8
|
-
type User,
|
|
9
|
-
type DriveEditorContext,
|
|
10
|
-
} from "@powerhousedao/reactor-browser";
|
|
11
|
-
import {
|
|
12
|
-
type EditorContext,
|
|
13
|
-
type DocumentModelModule,
|
|
14
|
-
type EditorModule,
|
|
15
|
-
type EditorProps,
|
|
16
|
-
type PHDocument,
|
|
17
|
-
} from "document-model";
|
|
18
|
-
import {
|
|
7
|
+
DefaultEditorLoader,
|
|
19
8
|
DocumentToolbar,
|
|
20
9
|
RevisionHistory,
|
|
21
|
-
DefaultEditorLoader,
|
|
22
10
|
type TimelineItem,
|
|
23
11
|
} from "@powerhousedao/design-system";
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
onClose: () => void;
|
|
32
|
-
title: string;
|
|
33
|
-
context: Omit<DriveEditorContext, "getDocumentRevision"> & Pick<EditorContext, "getDocumentRevision">;
|
|
34
|
-
documentModelModule: DocumentModelModule<PHDocument>;
|
|
35
|
-
editorModule: EditorModule;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export const EditorContainer: React.FC<EditorContainerProps> = (props) => {
|
|
39
|
-
const {
|
|
40
|
-
title,
|
|
41
|
-
driveId,
|
|
42
|
-
context,
|
|
43
|
-
onClose,
|
|
44
|
-
documentId,
|
|
45
|
-
documentType,
|
|
46
|
-
editorModule,
|
|
47
|
-
documentModelModule,
|
|
48
|
-
} = props;
|
|
12
|
+
import {
|
|
13
|
+
exportFile,
|
|
14
|
+
useEditorModuleById,
|
|
15
|
+
useSelectedDocument,
|
|
16
|
+
useSelectedDrive,
|
|
17
|
+
} from "@powerhousedao/reactor-browser";
|
|
18
|
+
import { Suspense, useCallback, useState } from "react";
|
|
49
19
|
|
|
50
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Document editor container that wraps individual document editors.
|
|
22
|
+
* Handles document loading, toolbar, revision history, and dynamic editor loading.
|
|
23
|
+
* Customize toolbar actions and editor context here.
|
|
24
|
+
*/
|
|
25
|
+
export const EditorContainer = (props: { handleClose: () => void }) => {
|
|
26
|
+
const { handleClose } = props;
|
|
27
|
+
// UI state for revision history and timeline
|
|
28
|
+
const [selectedTimelineItem, setSelectedTimelineItem] =
|
|
29
|
+
useState<TimelineItem | null>(null);
|
|
51
30
|
const [showRevisionHistory, setShowRevisionHistory] = useState(false);
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const { dispatch, error, document } = useDocumentEditorProps({
|
|
57
|
-
documentId,
|
|
58
|
-
documentType,
|
|
59
|
-
driveId,
|
|
60
|
-
documentModelModule,
|
|
61
|
-
user,
|
|
62
|
-
});
|
|
63
|
-
|
|
31
|
+
const [selectedDocument, dispatch] = useSelectedDocument();
|
|
32
|
+
const [selectedDrive] = useSelectedDrive();
|
|
33
|
+
// Timeline data for revision history
|
|
64
34
|
const timelineItems = useTimelineItems(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
35
|
+
selectedDocument?.header.id,
|
|
36
|
+
selectedDocument?.header.createdAtUtcIso,
|
|
37
|
+
selectedDrive?.header.id,
|
|
38
|
+
);
|
|
39
|
+
const editorModule = useEditorModuleById(
|
|
40
|
+
selectedDocument?.header.meta?.preferredEditor,
|
|
68
41
|
);
|
|
69
42
|
|
|
43
|
+
// Document export functionality - customize export behavior here
|
|
70
44
|
const onExport = useCallback(async () => {
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
await exportDocument(document, title, ext);
|
|
45
|
+
if (selectedDocument) {
|
|
46
|
+
await exportFile(selectedDocument);
|
|
74
47
|
}
|
|
75
|
-
}, [
|
|
48
|
+
}, [selectedDocument]);
|
|
76
49
|
|
|
50
|
+
// Loading state component
|
|
77
51
|
const loadingContent = (
|
|
78
|
-
<div className="flex-
|
|
52
|
+
<div className="flex h-full flex-1 items-center justify-center">
|
|
79
53
|
<DefaultEditorLoader />
|
|
80
54
|
</div>
|
|
81
55
|
);
|
|
82
56
|
|
|
83
|
-
if (!
|
|
57
|
+
if (!selectedDocument) return loadingContent;
|
|
84
58
|
|
|
85
|
-
|
|
59
|
+
// Dynamically load the appropriate editor component for this document type
|
|
60
|
+
const EditorComponent = editorModule?.Component;
|
|
61
|
+
if (!EditorComponent) return loadingContent;
|
|
86
62
|
|
|
87
63
|
return showRevisionHistory ? (
|
|
64
|
+
// Revision history view
|
|
88
65
|
<RevisionHistory
|
|
89
|
-
documentId={
|
|
90
|
-
documentTitle={
|
|
91
|
-
globalOperations={
|
|
92
|
-
key={
|
|
93
|
-
localOperations={
|
|
66
|
+
documentId={selectedDocument.header.id}
|
|
67
|
+
documentTitle={selectedDocument.header.name}
|
|
68
|
+
globalOperations={selectedDocument.operations.global}
|
|
69
|
+
key={selectedDocument.header.id}
|
|
70
|
+
localOperations={selectedDocument.operations.local}
|
|
94
71
|
onClose={() => setShowRevisionHistory(false)}
|
|
95
72
|
/>
|
|
96
73
|
) : (
|
|
74
|
+
// Main editor view
|
|
97
75
|
<Suspense fallback={loadingContent}>
|
|
76
|
+
{/* Document toolbar - customize available actions here */}
|
|
98
77
|
<DocumentToolbar
|
|
99
|
-
onClose={
|
|
78
|
+
onClose={handleClose}
|
|
100
79
|
onExport={onExport}
|
|
101
80
|
onShowRevisionHistory={() => setShowRevisionHistory(true)}
|
|
102
|
-
onSwitchboardLinkClick={() => {}}
|
|
103
|
-
title={
|
|
81
|
+
onSwitchboardLinkClick={() => {}} // Customize switchboard integration
|
|
82
|
+
title={selectedDocument.header.name}
|
|
104
83
|
timelineButtonVisible={editorModule.config.timelineEnabled}
|
|
105
84
|
timelineItems={timelineItems.data}
|
|
106
85
|
onTimelineItemClick={setSelectedTimelineItem}
|
|
107
86
|
/>
|
|
87
|
+
{/* Dynamic editor component based on document type */}
|
|
108
88
|
<EditorComponent
|
|
109
89
|
context={{
|
|
110
|
-
...context,
|
|
111
90
|
readMode: !!selectedTimelineItem,
|
|
112
91
|
selectedTimelineRevision: getRevisionFromDate(
|
|
113
92
|
selectedTimelineItem?.startDate,
|
|
114
93
|
selectedTimelineItem?.endDate,
|
|
115
|
-
|
|
94
|
+
selectedDocument.operations.global,
|
|
116
95
|
),
|
|
117
96
|
}}
|
|
118
97
|
dispatch={dispatch}
|
|
119
98
|
document={document}
|
|
120
|
-
error={error}
|
|
99
|
+
error={console.error}
|
|
121
100
|
/>
|
|
122
101
|
</Suspense>
|
|
123
102
|
);
|
|
124
|
-
};
|
|
103
|
+
};
|
|
@@ -2,20 +2,32 @@
|
|
|
2
2
|
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FolderTree.tsx"
|
|
3
3
|
unless_exists: true
|
|
4
4
|
---
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
5
|
+
import type { FolderNode } from "document-drive";
|
|
6
|
+
import { useState } from "react";
|
|
7
7
|
|
|
8
8
|
interface FolderTreeProps {
|
|
9
|
-
folders:
|
|
9
|
+
folders: FolderNode[];
|
|
10
10
|
selectedNodeId?: string;
|
|
11
|
-
onSelectNode: (
|
|
11
|
+
onSelectNode: (nodeId: string | undefined) => void;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Hierarchical folder tree navigation component.
|
|
16
|
+
* Displays folders in a tree structure with expand/collapse functionality.
|
|
17
|
+
*/
|
|
18
|
+
export function FolderTree({
|
|
19
|
+
folders,
|
|
20
|
+
selectedNodeId,
|
|
21
|
+
onSelectNode,
|
|
22
|
+
}: FolderTreeProps) {
|
|
23
|
+
// Track which folders are expanded
|
|
24
|
+
const [expandedFolders, setExpandedFolders] = useState<Set<string>>(
|
|
25
|
+
new Set(),
|
|
26
|
+
);
|
|
16
27
|
|
|
28
|
+
// Toggle folder expansion state
|
|
17
29
|
const toggleFolder = (folderId: string) => {
|
|
18
|
-
setExpandedFolders(prev => {
|
|
30
|
+
setExpandedFolders((prev) => {
|
|
19
31
|
const next = new Set(prev);
|
|
20
32
|
if (next.has(folderId)) {
|
|
21
33
|
next.delete(folderId);
|
|
@@ -26,38 +38,43 @@ export function FolderTree({ folders, selectedNodeId, onSelectNode }: FolderTree
|
|
|
26
38
|
});
|
|
27
39
|
};
|
|
28
40
|
|
|
29
|
-
|
|
30
|
-
|
|
41
|
+
// Recursive function to render folder tree structure
|
|
42
|
+
const renderFolder = (folder: FolderNode, level = 0) => {
|
|
43
|
+
const hasChildren = folders.some((f) => f.parentFolder === folder.id);
|
|
31
44
|
const isExpanded = expandedFolders.has(folder.id);
|
|
32
45
|
const isSelected = selectedNodeId === folder.id;
|
|
33
46
|
|
|
34
47
|
return (
|
|
35
48
|
<div key={folder.id}>
|
|
36
49
|
<div
|
|
37
|
-
className={`flex items-center
|
|
38
|
-
isSelected ?
|
|
50
|
+
className={`flex cursor-pointer items-center rounded px-2 py-1 text-sm hover:bg-gray-100 ${
|
|
51
|
+
isSelected ? "bg-blue-100 text-blue-800" : ""
|
|
39
52
|
}`}
|
|
40
|
-
style={{ paddingLeft: `${level * 16 + 8}px` }}
|
|
41
|
-
onClick={() => onSelectNode(folder)}
|
|
53
|
+
style={{ paddingLeft: `${level * 16 + 8}px` }} // Customize indentation here
|
|
54
|
+
onClick={() => onSelectNode(folder.id)}
|
|
42
55
|
>
|
|
56
|
+
{/* Expand/collapse button for folders with children */}
|
|
43
57
|
{hasChildren && (
|
|
44
58
|
<button
|
|
45
|
-
className="
|
|
59
|
+
className="mr-1 flex h-4 w-4 items-center justify-center"
|
|
46
60
|
onClick={(e) => {
|
|
47
61
|
e.stopPropagation();
|
|
48
62
|
toggleFolder(folder.id);
|
|
49
63
|
}}
|
|
50
64
|
>
|
|
51
|
-
{isExpanded ?
|
|
65
|
+
{isExpanded ? "▼" : "▶"} {/* Customize expand icons here */}
|
|
52
66
|
</button>
|
|
53
67
|
)}
|
|
54
|
-
<
|
|
68
|
+
{!hasChildren && <div className="mr-1 w-5" />}
|
|
69
|
+
{/* Customize folder icon and styling here */}
|
|
70
|
+
<span>📁 {folder.name}</span>
|
|
55
71
|
</div>
|
|
72
|
+
{/* Recursively render child folders when expanded */}
|
|
56
73
|
{isExpanded && hasChildren && (
|
|
57
74
|
<div>
|
|
58
75
|
{folders
|
|
59
|
-
.filter(f => f.parentFolder === folder.id)
|
|
60
|
-
.map(child => renderFolder(child, level + 1))}
|
|
76
|
+
.filter((f) => f.parentFolder === folder.id)
|
|
77
|
+
.map((child) => renderFolder(child, level + 1))}
|
|
61
78
|
</div>
|
|
62
79
|
)}
|
|
63
80
|
</div>
|
|
@@ -67,19 +84,20 @@ export function FolderTree({ folders, selectedNodeId, onSelectNode }: FolderTree
|
|
|
67
84
|
return (
|
|
68
85
|
<div className="space-y-1">
|
|
69
86
|
{/* Root Directory Option */}
|
|
87
|
+
{/* Customize root folder appearance here */}
|
|
70
88
|
<div
|
|
71
|
-
className={`flex items-center
|
|
72
|
-
!selectedNodeId ?
|
|
89
|
+
className={`flex cursor-pointer items-center rounded px-2 py-1 text-sm hover:bg-gray-100 ${
|
|
90
|
+
!selectedNodeId ? "bg-blue-100 text-blue-800" : ""
|
|
73
91
|
}`}
|
|
74
|
-
onClick={() => onSelectNode(
|
|
92
|
+
onClick={() => onSelectNode(undefined)}
|
|
75
93
|
>
|
|
76
|
-
<span
|
|
94
|
+
<span>🏠 Root</span>
|
|
77
95
|
</div>
|
|
78
96
|
|
|
79
|
-
{/*
|
|
97
|
+
{/* Render top-level folders (no parent) */}
|
|
80
98
|
{folders
|
|
81
|
-
.filter(folder => !folder.parentFolder)
|
|
82
|
-
.map(folder => renderFolder(folder))}
|
|
99
|
+
.filter((folder) => !folder.parentFolder)
|
|
100
|
+
.map((folder) => renderFolder(folder))}
|
|
83
101
|
</div>
|
|
84
102
|
);
|
|
85
|
-
}
|
|
103
|
+
}
|
|
@@ -2,75 +2,39 @@
|
|
|
2
2
|
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/editor.tsx"
|
|
3
3
|
unless_exists: true
|
|
4
4
|
---
|
|
5
|
-
import { type DriveEditorProps } from "@powerhousedao/reactor-browser";
|
|
6
|
-
import { AnalyticsProvider } from '@powerhousedao/reactor-browser/analytics/context';
|
|
7
|
-
import { DriveContextProvider } from "@powerhousedao/reactor-browser/hooks/useDriveContext";
|
|
8
|
-
import { type DocumentDriveDocument, addFolder, deleteNode, updateNode, generateNodesCopy, copyNode } from "document-drive";
|
|
9
5
|
import { WagmiContext } from "@powerhousedao/design-system";
|
|
6
|
+
import {
|
|
7
|
+
AnalyticsProvider,
|
|
8
|
+
DriveContextProvider,
|
|
9
|
+
useAppConfig,
|
|
10
|
+
type DriveEditorProps,
|
|
11
|
+
} from "@powerhousedao/reactor-browser";
|
|
10
12
|
import { DriveExplorer } from "./components/DriveExplorer.js";
|
|
11
|
-
import { useCallback } from "react";
|
|
12
|
-
import { generateId } from "document-model";
|
|
13
|
-
|
|
14
|
-
export type IProps = DriveEditorProps<DocumentDriveDocument>;
|
|
15
|
-
|
|
16
|
-
export function BaseEditor(props: IProps) {
|
|
17
|
-
const { dispatch, context } = props;
|
|
18
|
-
|
|
19
|
-
const onAddFolder = useCallback((name: string, parentFolder?: string) => {
|
|
20
|
-
dispatch(addFolder({
|
|
21
|
-
id: generateId(),
|
|
22
|
-
name,
|
|
23
|
-
parentFolder,
|
|
24
|
-
}));
|
|
25
|
-
}, [dispatch]);
|
|
26
|
-
|
|
27
|
-
const onDeleteNode = useCallback((nodeId: string) => {
|
|
28
|
-
dispatch(deleteNode({ id: nodeId }));
|
|
29
|
-
}, [dispatch]);
|
|
30
|
-
|
|
31
|
-
const renameNode = useCallback((nodeId: string, name: string) => {
|
|
32
|
-
dispatch(updateNode({ id: nodeId, name }));
|
|
33
|
-
}, [dispatch]);
|
|
34
|
-
|
|
35
|
-
const onCopyNode = useCallback((nodeId: string, targetName: string, parentId?: string) => {
|
|
36
|
-
const copyNodesInput = generateNodesCopy({
|
|
37
|
-
srcId: nodeId,
|
|
38
|
-
targetParentFolder: parentId,
|
|
39
|
-
targetName,
|
|
40
|
-
}, () => generateId(), props.document.state.global.nodes);
|
|
41
|
-
|
|
42
|
-
const copyNodesAction = copyNodesInput.map(input => {
|
|
43
|
-
return copyNode(input);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
for (const copyNodeAction of copyNodesAction) {
|
|
47
|
-
dispatch(copyNodeAction);
|
|
48
|
-
}
|
|
49
|
-
}, [dispatch, props.document.state.global.nodes]);
|
|
50
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Base editor component that renders the drive explorer interface.
|
|
16
|
+
* Customize document opening behavior and drive-level actions here.
|
|
17
|
+
*/
|
|
18
|
+
export function BaseEditor(props: DriveEditorProps) {
|
|
19
|
+
const { context, document } = props;
|
|
51
20
|
return (
|
|
52
|
-
<div
|
|
53
|
-
|
|
54
|
-
style={{ height: "100%" }}
|
|
55
|
-
>
|
|
56
|
-
<DriveExplorer
|
|
57
|
-
driveId={props.document.header.id}
|
|
58
|
-
nodes={props.document.state.global.nodes}
|
|
59
|
-
onAddFolder={onAddFolder}
|
|
60
|
-
onDeleteNode={onDeleteNode}
|
|
61
|
-
renameNode={renameNode}
|
|
62
|
-
onCopyNode={onCopyNode}
|
|
63
|
-
context={context}
|
|
64
|
-
/>
|
|
21
|
+
<div className="new-drive-explorer" style={{ height: "100%" }}>
|
|
22
|
+
<DriveExplorer document={document} context={context} />
|
|
65
23
|
</div>
|
|
66
24
|
);
|
|
67
25
|
}
|
|
68
26
|
|
|
69
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Main editor entry point with required providers.
|
|
29
|
+
*/
|
|
30
|
+
export default function Editor(props: DriveEditorProps) {
|
|
31
|
+
const appConfig = useAppConfig();
|
|
32
|
+
const analyticsDatabaseName = appConfig?.analyticsDatabaseName;
|
|
70
33
|
return (
|
|
34
|
+
// Required context providers for drive functionality
|
|
71
35
|
<DriveContextProvider value={props.context}>
|
|
72
36
|
<WagmiContext>
|
|
73
|
-
<AnalyticsProvider databaseName={
|
|
37
|
+
<AnalyticsProvider databaseName={analyticsDatabaseName}>
|
|
74
38
|
<BaseEditor {...props} />
|
|
75
39
|
</AnalyticsProvider>
|
|
76
40
|
</WagmiContext>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type Args = {
|
|
2
|
+
name: string;
|
|
3
|
+
rootDir: string;
|
|
4
|
+
appId?: string;
|
|
5
|
+
};
|
|
6
|
+
declare const _default: {
|
|
7
|
+
params: ({ args }: {
|
|
8
|
+
args: Args;
|
|
9
|
+
}) => {
|
|
10
|
+
rootDir: string;
|
|
11
|
+
name: string;
|
|
12
|
+
appId: string | undefined;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;;uBAGmB;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;;;;;;AADnC,wBAQE"}
|
|
@@ -3,14 +3,13 @@ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
|
|
|
3
3
|
force: true
|
|
4
4
|
---
|
|
5
5
|
import { type DriveEditorModule } from "@powerhousedao/reactor-browser";
|
|
6
|
-
import { type DocumentDriveDocument } from "document-drive";
|
|
7
6
|
import Editor from "./editor.js";
|
|
8
7
|
|
|
9
|
-
export const module: DriveEditorModule
|
|
8
|
+
export const module: DriveEditorModule = {
|
|
10
9
|
Component: Editor,
|
|
11
10
|
documentTypes: ["powerhouse/document-drive"],
|
|
12
11
|
config: {
|
|
13
|
-
id: "<%=
|
|
12
|
+
id: "<%= appId || 'drive-editor-id' %>",
|
|
14
13
|
disableExternalControls: true,
|
|
15
14
|
documentToolbarEnabled: true,
|
|
16
15
|
showSwitchboardLink: true,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.ts"],"names":[],"mappings":";;AAMA,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAkB,EAAE,EAAE;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -4,6 +4,7 @@ export type Args = {
|
|
|
4
4
|
documentModelsDir: string;
|
|
5
5
|
documentTypes: string;
|
|
6
6
|
documentTypesMap: string;
|
|
7
|
+
editorId?: string;
|
|
7
8
|
};
|
|
8
9
|
declare const _default: {
|
|
9
10
|
params: ({ args }: {
|
|
@@ -14,6 +15,7 @@ declare const _default: {
|
|
|
14
15
|
name: string;
|
|
15
16
|
documentTypes: string[];
|
|
16
17
|
documentTypesMap: JSON;
|
|
18
|
+
editorId: string | undefined;
|
|
17
19
|
};
|
|
18
20
|
};
|
|
19
21
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;;uBAGmB;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;;;;;0BAQ0B,IAAI;;;;AATjE,wBAaE"}
|
|
@@ -12,7 +12,7 @@ export const module: <% if(!documentTypes.length){ %>EditorModule<% } else { %><
|
|
|
12
12
|
Component: Editor,
|
|
13
13
|
documentTypes: [<% if(!documentTypes.length){ %>'*'<% } else { %><% documentTypes.forEach(type => { _%>"<%= type %>", %><% }); _%> <% } %>],
|
|
14
14
|
config: {
|
|
15
|
-
id: 'editor-id',
|
|
15
|
+
id: '<%= editorId || 'editor-id' %>',
|
|
16
16
|
disableExternalControls: true,
|
|
17
17
|
documentToolbarEnabled: true,
|
|
18
18
|
showSwitchboardLink: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":";;AASA,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAkB,EAAE,EAAE;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;iBAC9B,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAS;YAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/factory.esm.t
CHANGED
|
@@ -4,9 +4,10 @@ force: true
|
|
|
4
4
|
---
|
|
5
5
|
import { type ProcessorRecord } from "document-drive/processors/types";
|
|
6
6
|
import { type IProcessorHostModule } from "document-drive/processors/types";
|
|
7
|
+
import { type PHDocumentHeader } from "document-model";
|
|
7
8
|
import { <%= pascalName %>Processor } from "./index.js";
|
|
8
9
|
|
|
9
|
-
export const <%= h.changeCase.pascal(name) %>ProcessorFactory = (module: IProcessorHostModule) => (
|
|
10
|
+
export const <%= h.changeCase.pascal(name) %>ProcessorFactory = (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader): ProcessorRecord[] => {
|
|
10
11
|
return [
|
|
11
12
|
{
|
|
12
13
|
processor: new <%= pascalName %>Processor(module.analyticsStore),
|
|
@@ -7,24 +7,26 @@ unless_exists: true
|
|
|
7
7
|
* Auto-generated by codegen - DO NOT EDIT MANUALLY
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { type ProcessorRecord } from "document-drive/processors/types";
|
|
10
|
+
import { type ProcessorRecord, type ProcessorFactory } from "document-drive/processors/types";
|
|
11
11
|
import { type IProcessorHostModule } from "document-drive/processors/types";
|
|
12
|
+
import { type PHDocumentHeader } from "document-model";
|
|
12
13
|
|
|
13
14
|
// Import processor factories here as they are generated
|
|
14
15
|
|
|
15
16
|
export const processorFactory = (module: IProcessorHostModule) => {
|
|
16
17
|
// Initialize all processor factories once with the module
|
|
17
|
-
const factories: Array<
|
|
18
|
+
const factories: Array<ProcessorFactory> = [];
|
|
18
19
|
|
|
19
20
|
// Add processors here as they are generated
|
|
20
21
|
|
|
21
22
|
// Return the inner function that will be called for each drive
|
|
22
|
-
return (
|
|
23
|
+
return async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {
|
|
23
24
|
const processors: ProcessorRecord[] = [];
|
|
24
25
|
|
|
25
|
-
// Call each cached factory with the
|
|
26
|
+
// Call each cached factory with the driveHeader
|
|
26
27
|
for (const factory of factories) {
|
|
27
|
-
|
|
28
|
+
const factoryProcessors = await factory(driveHeader);
|
|
29
|
+
processors.push(...factoryProcessors);
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
return processors;
|
package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/factory.esm.t
CHANGED
|
@@ -9,11 +9,12 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
type RelationalDbProcessorFilter,
|
|
11
11
|
} from "document-drive/processors/relational";
|
|
12
|
+
import { type PHDocumentHeader } from "document-model";
|
|
12
13
|
import { <%= pascalName %>Processor } from "./index.js";
|
|
13
14
|
|
|
14
|
-
export const <%= h.changeCase.camel(name) %>ProcessorFactory = (module: IProcessorHostModule) => async (
|
|
15
|
+
export const <%= h.changeCase.camel(name) %>ProcessorFactory = (module: IProcessorHostModule) => async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {
|
|
15
16
|
// Create a namespace for the processor and the provided drive id
|
|
16
|
-
const namespace = <%= pascalName %>Processor.getNamespace(
|
|
17
|
+
const namespace = <%= pascalName %>Processor.getNamespace(driveHeader.id);
|
|
17
18
|
|
|
18
19
|
// Create a namespaced db for the processor
|
|
19
20
|
const store = await module.relationalDb.createNamespace<<%= pascalName %>Processor>(
|
package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.esm.t
CHANGED
|
@@ -7,25 +7,26 @@ unless_exists: true
|
|
|
7
7
|
* Auto-generated by codegen - DO NOT EDIT MANUALLY
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { type ProcessorRecord, type IProcessorHostModule } from "document-drive/processors/types";
|
|
10
|
+
import { type ProcessorRecord, type IProcessorHostModule, type ProcessorFactory } from "document-drive/processors/types";
|
|
11
|
+
import { type PHDocumentHeader } from "document-model";
|
|
11
12
|
|
|
12
13
|
// Import other processor factories here as they are generated
|
|
13
14
|
|
|
14
15
|
export const processorFactory = (module: IProcessorHostModule) => {
|
|
15
16
|
// Initialize all processor factories once with the module
|
|
16
|
-
const factories: Array<
|
|
17
|
+
const factories: Array<ProcessorFactory> = [];
|
|
17
18
|
|
|
18
19
|
// Add all processor factories
|
|
19
20
|
|
|
20
21
|
// Add other processors here as they are generated
|
|
21
22
|
|
|
22
23
|
// Return the inner function that will be called for each drive
|
|
23
|
-
return async (
|
|
24
|
+
return async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {
|
|
24
25
|
const processors: ProcessorRecord[] = [];
|
|
25
26
|
|
|
26
|
-
// Call each cached factory with the
|
|
27
|
+
// Call each cached factory with the driveHeader
|
|
27
28
|
for (const factory of factories) {
|
|
28
|
-
const factoryProcessors = await factory(
|
|
29
|
+
const factoryProcessors = await factory(driveHeader);
|
|
29
30
|
processors.push(...factoryProcessors);
|
|
30
31
|
}
|
|
31
32
|
|
|
@@ -3,46 +3,14 @@ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
|
|
|
3
3
|
force: true
|
|
4
4
|
---
|
|
5
5
|
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
6
|
-
<% if (loadFromFile) { %>
|
|
7
6
|
import { schema } from "./schema.js";
|
|
8
7
|
import { getResolvers } from "./resolvers.js";
|
|
9
|
-
<% } else { %>
|
|
10
|
-
import { gql } from "graphql-tag";
|
|
11
|
-
<% } %>
|
|
12
8
|
|
|
13
9
|
export class <%= pascalName %>Subgraph extends Subgraph {
|
|
14
10
|
name = "<%= h.changeCase.param(name) %>";
|
|
15
|
-
<% if (loadFromFile) { %>
|
|
16
11
|
typeDefs = schema;
|
|
17
12
|
resolvers = getResolvers(this);
|
|
18
13
|
additionalContextFields = {};
|
|
19
14
|
async onSetup() {}
|
|
20
15
|
async onDisconnect() {}
|
|
21
|
-
|
|
22
|
-
<% } else { %>
|
|
23
|
-
|
|
24
|
-
resolvers = {
|
|
25
|
-
Query: {
|
|
26
|
-
example: {
|
|
27
|
-
resolve: async (parent, args, context, info) => {
|
|
28
|
-
return "example";
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
typeDefs = gql`
|
|
35
|
-
type Query {
|
|
36
|
-
example(id: ID!): String
|
|
37
|
-
}
|
|
38
|
-
`;
|
|
39
|
-
|
|
40
|
-
additionalContextFields = {
|
|
41
|
-
example: "test"
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async onSetup() {}
|
|
45
|
-
|
|
46
|
-
async onDisconnect() {}
|
|
47
|
-
<% } %>
|
|
48
16
|
}
|