@powerhousedao/codegen 4.1.0-dev.11 → 4.1.0-dev.111

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.
Files changed (283) hide show
  1. package/README.md +0 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js +10 -0
  7. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/resolvers.esm.t +17 -0
  8. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/schema.esm.t +16 -0
  9. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/actions.esm.t +3 -3
  10. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/creators.esm.t +3 -2
  11. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/customUtils.esm.t +1 -1
  12. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-models.esm.t +14 -0
  13. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-schema.esm.t +56 -0
  14. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-type.esm.t +6 -0
  15. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +3 -3
  16. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModelTest.esm.t +110 -15
  17. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/hooks.esm.t +49 -0
  18. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +17 -3
  19. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +128 -54
  20. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/lib.esm.t +4 -2
  21. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/module.esm.t +22 -0
  22. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/ph-factories.esm.t +93 -0
  23. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +21 -9
  24. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/root-utils.esm.t +11 -0
  25. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootActions.esm.t +13 -0
  26. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +6 -27
  27. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/schema.esm.t +2 -2
  28. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/src-index.esm.t +5 -0
  29. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +23 -11
  30. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +44 -30
  31. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +11 -6
  32. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +15 -20
  33. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +6 -10
  34. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +67 -27
  35. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.js +117 -21
  36. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +27 -12
  37. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +5 -10
  38. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +42 -34
  39. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveContents.esm.t +23 -0
  40. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +18 -224
  41. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EmptyState.esm.t +19 -0
  42. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Files.esm.t +29 -0
  43. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +95 -72
  44. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Folders.esm.t +28 -0
  45. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/NavigationBreadcrumbs.esm.t +14 -0
  46. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/config.esm.t +11 -0
  47. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +10 -71
  48. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editors.esm.t +14 -0
  49. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js +30 -0
  50. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/lib.esm.t +4 -2
  51. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/module.esm.t +15 -0
  52. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/edit-name.esm.t +78 -0
  53. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +9 -21
  54. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editors.esm.t +14 -0
  55. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +97 -15
  56. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/lib.esm.t +4 -2
  57. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/module.esm.t +16 -0
  58. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +8 -10
  59. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/factory.esm.t +5 -4
  60. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +5 -9
  61. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +11 -15
  62. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.root.inject.esm.t +12 -0
  63. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +8 -6
  64. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_call.esm.t +1 -1
  65. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_import.esm.t +1 -1
  66. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/factory.esm.t +6 -5
  67. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.esm.t +6 -13
  68. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.js +11 -15
  69. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.root.inject.esm.t +12 -0
  70. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.esm.t +8 -9
  71. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_call.esm.t +2 -2
  72. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_import.esm.t +1 -1
  73. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/migrations.esm.t +2 -2
  74. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/schema.esm.t +10 -2
  75. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +5 -36
  76. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +9 -11
  77. package/dist/src/codegen/.hygen/templates/powerhouse/utils.js +43 -0
  78. package/dist/src/codegen/__tests__/config.d.ts +2 -0
  79. package/dist/src/codegen/__tests__/config.d.ts.map +1 -0
  80. package/dist/src/codegen/__tests__/config.js +2 -0
  81. package/dist/src/codegen/__tests__/config.js.map +1 -0
  82. package/dist/src/codegen/__tests__/constants.d.ts +16 -0
  83. package/dist/src/codegen/__tests__/constants.d.ts.map +1 -0
  84. package/dist/src/codegen/__tests__/constants.js +16 -0
  85. package/dist/src/codegen/__tests__/constants.js.map +1 -0
  86. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.d.ts +2 -0
  87. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.d.ts.map +1 -0
  88. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.js +9 -0
  89. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.js.map +1 -0
  90. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.d.ts +3 -0
  91. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.d.ts.map +1 -0
  92. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.js +33 -0
  93. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.js.map +1 -0
  94. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.d.ts +2 -0
  95. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.d.ts.map +1 -0
  96. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.js +23 -0
  97. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.js.map +1 -0
  98. package/dist/src/codegen/__tests__/fixtures/typecheck.d.ts +2 -0
  99. package/dist/src/codegen/__tests__/fixtures/typecheck.d.ts.map +1 -0
  100. package/dist/src/codegen/__tests__/fixtures/typecheck.js +23 -0
  101. package/dist/src/codegen/__tests__/fixtures/typecheck.js.map +1 -0
  102. package/dist/src/codegen/__tests__/generate-doc-model.test.d.ts +2 -0
  103. package/dist/src/codegen/__tests__/generate-doc-model.test.d.ts.map +1 -0
  104. package/dist/src/codegen/__tests__/generate-doc-model.test.js +206 -0
  105. package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -0
  106. package/dist/src/codegen/__tests__/generate-drive-editor.test.d.ts +2 -0
  107. package/dist/src/codegen/__tests__/generate-drive-editor.test.d.ts.map +1 -0
  108. package/dist/src/codegen/__tests__/generate-drive-editor.test.js +153 -0
  109. package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -0
  110. package/dist/src/codegen/__tests__/generate-editor.test.d.ts +2 -0
  111. package/dist/src/codegen/__tests__/generate-editor.test.d.ts.map +1 -0
  112. package/dist/src/codegen/__tests__/generate-editor.test.js +94 -0
  113. package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -0
  114. package/dist/src/codegen/__tests__/generate-manifest.test.d.ts +2 -0
  115. package/dist/src/codegen/__tests__/generate-manifest.test.d.ts.map +1 -0
  116. package/dist/src/codegen/__tests__/generate-manifest.test.js +192 -0
  117. package/dist/src/codegen/__tests__/generate-manifest.test.js.map +1 -0
  118. package/dist/src/codegen/__tests__/generate-schemas.test.d.ts +2 -0
  119. package/dist/src/codegen/__tests__/generate-schemas.test.d.ts.map +1 -0
  120. package/dist/src/codegen/__tests__/generate-schemas.test.js +143 -0
  121. package/dist/src/codegen/__tests__/generate-schemas.test.js.map +1 -0
  122. package/dist/src/codegen/__tests__/global-setup.d.ts +2 -0
  123. package/dist/src/codegen/__tests__/global-setup.d.ts.map +1 -0
  124. package/dist/src/codegen/__tests__/global-setup.js +21 -0
  125. package/dist/src/codegen/__tests__/global-setup.js.map +1 -0
  126. package/dist/src/codegen/__tests__/ts-morph-generator.test.d.ts +2 -0
  127. package/dist/src/codegen/__tests__/ts-morph-generator.test.d.ts.map +1 -0
  128. package/dist/src/codegen/__tests__/ts-morph-generator.test.js +72 -0
  129. package/dist/src/codegen/__tests__/ts-morph-generator.test.js.map +1 -0
  130. package/dist/src/codegen/__tests__/utils.d.ts +7 -0
  131. package/dist/src/codegen/__tests__/utils.d.ts.map +1 -0
  132. package/dist/src/codegen/__tests__/utils.js +52 -0
  133. package/dist/src/codegen/__tests__/utils.js.map +1 -0
  134. package/dist/src/codegen/generate.d.ts +33 -0
  135. package/dist/src/codegen/generate.d.ts.map +1 -0
  136. package/dist/src/codegen/generate.js +205 -0
  137. package/dist/src/codegen/generate.js.map +1 -0
  138. package/dist/src/codegen/graphql.d.ts +2 -2
  139. package/dist/src/codegen/graphql.d.ts.map +1 -1
  140. package/dist/src/codegen/graphql.js.map +1 -1
  141. package/dist/src/codegen/hygen.d.ts +19 -14
  142. package/dist/src/codegen/hygen.d.ts.map +1 -1
  143. package/dist/src/codegen/hygen.js +100 -28
  144. package/dist/src/codegen/hygen.js.map +1 -1
  145. package/dist/src/codegen/index.d.ts +6 -33
  146. package/dist/src/codegen/index.d.ts.map +1 -1
  147. package/dist/src/codegen/index.js +6 -230
  148. package/dist/src/codegen/index.js.map +1 -1
  149. package/dist/src/codegen/types.d.ts +9 -0
  150. package/dist/src/codegen/types.d.ts.map +1 -0
  151. package/dist/src/codegen/types.js +2 -0
  152. package/dist/src/codegen/types.js.map +1 -0
  153. package/dist/src/codegen/utils.d.ts +5 -2
  154. package/dist/src/codegen/utils.d.ts.map +1 -1
  155. package/dist/src/codegen/utils.js +42 -4
  156. package/dist/src/codegen/utils.js.map +1 -1
  157. package/dist/src/create-lib/checkout-project.d.ts +13 -0
  158. package/dist/src/create-lib/checkout-project.d.ts.map +1 -0
  159. package/dist/src/create-lib/checkout-project.js +47 -0
  160. package/dist/src/create-lib/checkout-project.js.map +1 -0
  161. package/dist/src/create-lib/create-project.d.ts +9 -5
  162. package/dist/src/create-lib/create-project.d.ts.map +1 -1
  163. package/dist/src/create-lib/create-project.js +37 -30
  164. package/dist/src/create-lib/create-project.js.map +1 -1
  165. package/dist/src/create-lib/feature-flags.d.ts +4 -0
  166. package/dist/src/create-lib/feature-flags.d.ts.map +1 -0
  167. package/dist/src/create-lib/feature-flags.js +4 -0
  168. package/dist/src/create-lib/feature-flags.js.map +1 -0
  169. package/dist/src/create-lib/index.d.ts +1 -0
  170. package/dist/src/create-lib/index.d.ts.map +1 -1
  171. package/dist/src/create-lib/index.js +1 -0
  172. package/dist/src/create-lib/index.js.map +1 -1
  173. package/dist/src/{utils/package-manager.d.ts → create-lib/utils.d.ts} +3 -1
  174. package/dist/src/create-lib/utils.d.ts.map +1 -0
  175. package/dist/src/{utils/package-manager.js → create-lib/utils.js} +12 -1
  176. package/dist/src/create-lib/utils.js.map +1 -0
  177. package/dist/src/index.d.ts +5 -0
  178. package/dist/src/index.d.ts.map +1 -0
  179. package/dist/src/index.js +5 -0
  180. package/dist/src/index.js.map +1 -0
  181. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.d.ts +2 -0
  182. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.d.ts.map +1 -0
  183. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.js +491 -0
  184. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.js.map +1 -0
  185. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts +5 -4
  186. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts.map +1 -1
  187. package/dist/src/ts-morph-generator/core/FileGenerator.js +3 -1
  188. package/dist/src/ts-morph-generator/core/FileGenerator.js.map +1 -1
  189. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts +19 -8
  190. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts.map +1 -1
  191. package/dist/src/ts-morph-generator/core/ReducerGenerator.d.ts +12 -0
  192. package/dist/src/ts-morph-generator/core/ReducerGenerator.d.ts.map +1 -0
  193. package/dist/src/ts-morph-generator/core/ReducerGenerator.js +147 -0
  194. package/dist/src/ts-morph-generator/core/ReducerGenerator.js.map +1 -0
  195. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts +5 -3
  196. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts.map +1 -1
  197. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js +17 -9
  198. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js.map +1 -1
  199. package/dist/src/ts-morph-generator/index.d.ts +2 -2
  200. package/dist/src/ts-morph-generator/index.d.ts.map +1 -1
  201. package/dist/src/ts-morph-generator/index.js +2 -2
  202. package/dist/src/ts-morph-generator/index.js.map +1 -1
  203. package/dist/src/ts-morph-generator/utilities/DeclarationManager.d.ts +5 -0
  204. package/dist/src/ts-morph-generator/utilities/DeclarationManager.d.ts.map +1 -0
  205. package/dist/src/ts-morph-generator/utilities/DeclarationManager.js +10 -0
  206. package/dist/src/ts-morph-generator/utilities/DeclarationManager.js.map +1 -0
  207. package/dist/src/ts-morph-generator/utilities/DirectoryManager.d.ts +2 -2
  208. package/dist/src/ts-morph-generator/utilities/DirectoryManager.d.ts.map +1 -1
  209. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts +2 -1
  210. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts.map +1 -1
  211. package/dist/src/ts-morph-generator/utilities/ImportManager.js +13 -3
  212. package/dist/src/ts-morph-generator/utilities/ImportManager.js.map +1 -1
  213. package/dist/src/ts-morph-generator/utilities/index.d.ts +1 -0
  214. package/dist/src/ts-morph-generator/utilities/index.d.ts.map +1 -1
  215. package/dist/src/ts-morph-generator/utilities/index.js +1 -0
  216. package/dist/src/ts-morph-generator/utilities/index.js.map +1 -1
  217. package/dist/src/utils/index.d.ts +0 -1
  218. package/dist/src/utils/index.d.ts.map +1 -1
  219. package/dist/src/utils/index.js +0 -1
  220. package/dist/src/utils/index.js.map +1 -1
  221. package/dist/src/utils/validation.d.ts +6 -6
  222. package/dist/src/utils/validation.d.ts.map +1 -1
  223. package/dist/src/utils/validation.js +5 -6
  224. package/dist/src/utils/validation.js.map +1 -1
  225. package/dist/tsconfig.tsbuildinfo +1 -0
  226. package/dist/vitest.config.d.ts +3 -0
  227. package/dist/vitest.config.d.ts.map +1 -0
  228. package/dist/vitest.config.js +16 -0
  229. package/dist/vitest.config.js.map +1 -0
  230. package/package.json +27 -28
  231. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts +0 -25
  232. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts.map +0 -1
  233. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +0 -1
  234. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/lib.inject_export.esm.t +0 -7
  235. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/object.esm.t +0 -49
  236. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +0 -23
  237. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +0 -1
  238. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +0 -1
  239. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/object.esm.t +0 -37
  240. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.d.ts +0 -22
  241. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.d.ts.map +0 -1
  242. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.js.map +0 -1
  243. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +0 -124
  244. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FileItemsGrid.esm.t +0 -44
  245. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderItemsGrid.esm.t +0 -96
  246. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useSelectedFolderChildren.esm.t +0 -35
  247. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useTransformedNodes.esm.t +0 -35
  248. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.esm.t +0 -20
  249. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/lib.inject_export.esm.t +0 -7
  250. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/types/css.d.esm.t +0 -8
  251. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +0 -20
  252. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts.map +0 -1
  253. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +0 -22
  254. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +0 -1
  255. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/lib.inject_export.esm.t +0 -7
  256. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts +0 -14
  257. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts.map +0 -1
  258. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js.map +0 -1
  259. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts +0 -20
  260. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts.map +0 -1
  261. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js.map +0 -1
  262. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.d.ts +0 -20
  263. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.d.ts.map +0 -1
  264. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.js.map +0 -1
  265. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts +0 -16
  266. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts.map +0 -1
  267. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js.map +0 -1
  268. package/dist/src/ts-morph-generator/core/index.d.ts +0 -4
  269. package/dist/src/ts-morph-generator/core/index.d.ts.map +0 -1
  270. package/dist/src/ts-morph-generator/core/index.js +0 -4
  271. package/dist/src/ts-morph-generator/core/index.js.map +0 -1
  272. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts +0 -9
  273. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts.map +0 -1
  274. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js +0 -69
  275. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js.map +0 -1
  276. package/dist/src/ts-morph-generator/file-generators/index.d.ts +0 -2
  277. package/dist/src/ts-morph-generator/file-generators/index.d.ts.map +0 -1
  278. package/dist/src/ts-morph-generator/file-generators/index.js +0 -2
  279. package/dist/src/ts-morph-generator/file-generators/index.js.map +0 -1
  280. package/dist/src/utils/package-manager.d.ts.map +0 -1
  281. package/dist/src/utils/package-manager.js.map +0 -1
  282. package/dist/tsconfig.hygen.tsbuildinfo +0 -1
  283. package/dist/tsconfig.lib.tsbuildinfo +0 -1
@@ -1,22 +1,118 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const change_case_1 = require("change-case");
4
- const generateDocumentModelMutations = {
5
- params: ({ args, }) => {
6
- const documentModel = JSON.parse(args.documentModel);
7
- const latestSpec = documentModel.specifications[documentModel.specifications.length - 1];
8
- return {
9
- rootDir: args.rootDir,
10
- subgraph: args.subgraph,
11
- documentTypeId: documentModel.id,
12
- documentType: documentModel.name,
13
- schema: latestSpec.state.global.schema,
14
- modules: latestSpec.modules.map((m) => ({
15
- ...m,
16
- name: (0, change_case_1.paramCase)(m.name),
17
- })),
18
- };
19
- },
1
+ // @ts-check
2
+ const { paramCase, pascalCase, camelCase } = require("change-case");
3
+
4
+ /**
5
+ * Extract type names from a GraphQL schema.
6
+ * @param {string} schema - GraphQL schema string
7
+ * @returns {string[]} Array of type names
8
+ */
9
+ function extractTypeNames(schema) {
10
+ const found = schema.match(/(type|enum|union|interface|input)\s+(\w+)\s/g);
11
+ if (!found) return [];
12
+ return found.map((f) =>
13
+ f
14
+ .replaceAll("type ", "")
15
+ .replaceAll("enum ", "")
16
+ .replaceAll("union ", "")
17
+ .replaceAll("interface ", "")
18
+ .replaceAll("input ", "")
19
+ .trim()
20
+ );
21
+ }
22
+
23
+ /**
24
+ * Apply type prefixes to GraphQL schema to namespace types and avoid collisions.
25
+ * Inlined from @powerhousedao/common/utils to avoid ES module import issues.
26
+ * @param {string} schema - GraphQL schema string
27
+ * @param {string} prefix - Prefix to apply to type names
28
+ * @param {string[]} externalTypeNames - Type names from other schemas to also prefix
29
+ * @returns {string} Schema with prefixed types
30
+ */
31
+ function applyGraphQLTypePrefixes(schema, prefix, externalTypeNames = []) {
32
+ if (!schema || !schema.trim()) {
33
+ return schema;
34
+ }
35
+
36
+ let processedSchema = schema;
37
+
38
+ // Find types defined in this schema
39
+ const localTypeNames = extractTypeNames(schema);
40
+
41
+ // Combine with external type names (remove duplicates)
42
+ const allTypeNames = [...new Set([...localTypeNames, ...externalTypeNames])];
43
+
44
+ if (allTypeNames.length === 0) {
45
+ return schema;
46
+ }
47
+
48
+ allTypeNames.forEach((typeName) => {
49
+ const typeRegex = new RegExp(
50
+ // Match type references in various GraphQL contexts
51
+ `(?<![_A-Za-z0-9])(${typeName})(?![_A-Za-z0-9])|` +
52
+ `\\[(${typeName})\\]|` +
53
+ `\\[(${typeName})!\\]|` +
54
+ `\\[(${typeName})\\]!|` +
55
+ `\\[(${typeName})!\\]!`,
56
+ "g",
57
+ );
58
+
59
+ processedSchema = processedSchema.replace(
60
+ typeRegex,
61
+ (match, p1, p2, p3, p4, p5) => {
62
+ if (match.startsWith("[")) {
63
+ return match.replace(
64
+ p2 || p3 || p4 || p5,
65
+ `${prefix}_${p2 || p3 || p4 || p5}`,
66
+ );
67
+ }
68
+ // Basic type reference
69
+ return `${prefix}_${p1}`;
70
+ },
71
+ );
72
+ });
73
+
74
+ return processedSchema;
75
+ }
76
+
77
+ module.exports = {
78
+ params: ({ args }) => {
79
+ const documentModel = JSON.parse(args.documentModel);
80
+ const latestSpec =
81
+ documentModel.specifications[documentModel.specifications.length - 1];
82
+ const documentType = documentModel.name;
83
+ const pascalCaseDocumentType = pascalCase(documentType);
84
+ const camelCaseDocumentType = camelCase(documentType);
85
+ const phDocumentTypeName = `${pascalCaseDocumentType}Document`;
86
+ const documentTypeVariableName = `${camelCaseDocumentType}DocumentType`;
87
+ const packageName = args.packageName;
88
+ const paramCaseDocumentType = paramCase(documentType);
89
+ const documentModelDir = `${packageName}/document-models/${paramCaseDocumentType}`;
90
+
91
+ const stateSchema = latestSpec.state.global.schema;
92
+ const stateTypeNames = extractTypeNames(stateSchema);
93
+
94
+ return {
95
+ phDocumentTypeName,
96
+ documentTypeVariableName,
97
+ pascalCaseDocumentType,
98
+ camelCaseDocumentType,
99
+ documentModelDir,
100
+ rootDir: args.rootDir,
101
+ subgraph: args.subgraph,
102
+ documentTypeId: documentModel.id,
103
+ documentType: documentModel.name,
104
+ schema: applyGraphQLTypePrefixes(
105
+ stateSchema,
106
+ pascalCaseDocumentType
107
+ ),
108
+ modules: latestSpec.modules.map((m) => ({
109
+ ...m,
110
+ name: paramCase(m.name),
111
+ operations: m.operations.map((op) => ({
112
+ ...op,
113
+ schema: applyGraphQLTypePrefixes(op.schema, pascalCaseDocumentType, stateTypeNames),
114
+ })),
115
+ })),
116
+ };
117
+ },
20
118
  };
21
- exports.default = generateDocumentModelMutations;
22
- //# sourceMappingURL=index.js.map
@@ -2,17 +2,28 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(subgraph) %>/resolvers.ts"
3
3
  force: true
4
4
  ---
5
- import { type Subgraph } from "@powerhousedao/reactor-api";
5
+ import type { BaseSubgraph } from "@powerhousedao/reactor-api";
6
6
  import { addFile } from "document-drive";
7
- import { actions <% modules.forEach(module => { %><% module.operations.forEach(op => { %>, type <%- h.changeCase.pascal(op.name) %>Input<%_ })}); %> } from "../../document-models/<%- h.changeCase.param(documentType) %>/index.js";
8
7
  import { setName } from "document-model";
8
+ import {
9
+ actions,
10
+ <%= documentTypeVariableName %>,
11
+ } from "<%= documentModelDir %>";
12
+ <% const inputTypes = modules.flatMap(m =>
13
+ m.operations.map(o => `${h.changeCase.pascalCase(o.name)}Input`)
14
+ );
15
+ %>
16
+ import type {
17
+ <%= phDocumentTypeName %>,
18
+ <%= inputTypes.join(',\n ') %>
19
+ } from "<%= documentModelDir %>";
9
20
 
10
- export const getResolvers = (subgraph: Subgraph) => {
21
+ export const getResolvers = (subgraph: BaseSubgraph): Record<string, unknown> => {
11
22
  const reactor = subgraph.reactor;
12
23
 
13
24
  return ({
14
25
  Query: {
15
- <%- h.changeCase.pascal(documentType) %>: async () => {
26
+ <%- pascalCaseDocumentType %>: async () => {
16
27
  return {
17
28
  getDocument: async (args: { docId: string, driveId: string }) => {
18
29
  const { docId, driveId } = args;
@@ -28,11 +39,13 @@ export const getResolvers = (subgraph: Subgraph) => {
28
39
  }
29
40
  }
30
41
 
31
- const doc = await reactor.getDocument(docId);
42
+ const doc = await reactor.getDocument<<%= phDocumentTypeName %>>(docId);
32
43
  return {
33
44
  driveId: driveId,
34
45
  ...doc,
35
46
  ...doc.header,
47
+ created: doc.header.createdAtUtcIso,
48
+ lastModified: doc.header.lastModifiedAtUtcIso,
36
49
  state: doc.state.global,
37
50
  stateJSON: doc.state.global,
38
51
  revision: doc.header?.revision?.global ?? 0,
@@ -43,11 +56,13 @@ export const getResolvers = (subgraph: Subgraph) => {
43
56
  const docsIds = await reactor.getDocuments(driveId);
44
57
  const docs = await Promise.all(
45
58
  docsIds.map(async (docId) => {
46
- const doc = await reactor.getDocument(docId);
59
+ const doc = await reactor.getDocument<<%= phDocumentTypeName %>>(docId);
47
60
  return {
48
61
  driveId: driveId,
49
62
  ...doc,
50
63
  ...doc.header,
64
+ created: doc.header.createdAtUtcIso,
65
+ lastModified: doc.header.lastModifiedAtUtcIso,
51
66
  state: doc.state.global,
52
67
  stateJSON: doc.state.global,
53
68
  revision: doc.header?.revision?.global ?? 0,
@@ -56,16 +71,16 @@ export const getResolvers = (subgraph: Subgraph) => {
56
71
  );
57
72
 
58
73
  return docs.filter(
59
- (doc) => doc.header.documentType === "<%- documentTypeId %>",
74
+ (doc) => doc.header.documentType === <%= documentTypeVariableName %>,
60
75
  );
61
76
  },
62
77
  };
63
78
  },
64
79
  },
65
80
  Mutation: {
66
- <%- h.changeCase.pascal(documentType) %>_createDocument: async (_: unknown, args: { name: string, driveId?: string }) => {
81
+ <%- pascalCaseDocumentType %>_createDocument: async (_: unknown, args: { name: string, driveId?: string }) => {
67
82
  const { driveId, name } = args;
68
- const document = await reactor.addDocument("<%- documentTypeId %>");
83
+ const document = await reactor.addDocument(<%= documentTypeVariableName %>);
69
84
 
70
85
  if(driveId) {
71
86
  await reactor.addAction(
@@ -73,7 +88,7 @@ export const getResolvers = (subgraph: Subgraph) => {
73
88
  addFile({
74
89
  name,
75
90
  id: document.header.id,
76
- documentType: "<%- documentTypeId %>",
91
+ documentType: <%= documentTypeVariableName %>,
77
92
  }),
78
93
  );
79
94
  }
@@ -90,9 +105,9 @@ export const getResolvers = (subgraph: Subgraph) => {
90
105
 
91
106
  <% modules.forEach(module => { _%>
92
107
  <% module.operations.forEach(op => { _%>
93
- <%- h.changeCase.pascal(documentType) + '_' + h.changeCase.camel(op.name) %>: async (_: unknown, args: { docId: string, input: <%- h.changeCase.pascal(op.name) %>Input}) => {
108
+ <%- pascalCaseDocumentType + '_' + h.changeCase.camel(op.name) %>: async (_: unknown, args: { docId: string, input: <%- h.changeCase.pascal(op.name) %>Input}) => {
94
109
  const { docId, input } = args;
95
- const doc = await reactor.getDocument(docId);
110
+ const doc = await reactor.getDocument<<%- pascalCaseDocumentType %>Document>(docId);
96
111
  if(!doc) {
97
112
  throw new Error("Document not found");
98
113
  }
@@ -7,13 +7,7 @@ import type { DocumentNode } from "graphql";
7
7
 
8
8
  export const schema: DocumentNode = gql`
9
9
  """
10
- Subgraph definition for <%= h.changeCase.pascal(documentType) %> (<%- documentTypeId %>)
11
-
12
- """
13
- <%- schema %>
14
-
15
- """
16
- Queries: <%= h.changeCase.pascal(documentType) %>
10
+ Queries: <%= h.changeCase.pascal(documentType) %> Document
17
11
  """
18
12
 
19
13
  type <%- h.changeCase.pascal(documentType) %>Queries {
@@ -34,16 +28,17 @@ type Mutation {
34
28
 
35
29
  <% modules.forEach(module => { _%>
36
30
  <% module.operations.forEach(op => { _%>
37
- <%- h.changeCase.pascal(documentType) + '_' + h.changeCase.camel(op.name)
38
- %>(driveId:String, docId:PHID, input:<%-
31
+ <%- h.changeCase.pascal(documentType) + '_' + h.changeCase.camel(op.name)
32
+ %>(driveId:String, docId:PHID, input:<%-
39
33
  h.changeCase.pascal(documentType) + '_' + h.changeCase.pascal(op.name) %>Input): Int
40
34
  <%_ })}); %>}
35
+
41
36
  <% modules.forEach(module => { _%>
42
37
 
43
38
  """
44
39
  Module: <%= h.changeCase.pascal(module.name) %>
45
40
  """
46
41
  <% module.operations.forEach(op => { _%>
47
- <%- op.schema.replace('input ', 'input ' + h.changeCase.pascal(documentType) + '_').replace('type ', 'type ' + h.changeCase.pascal(documentType) + '_') %>
42
+ <%- op.schema %>
48
43
  <%_ })}); %>
49
44
  `
@@ -2,49 +2,57 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/CreateDocument.tsx"
3
3
  unless_exists: true
4
4
  ---
5
- import { Button } from "@powerhousedao/design-system";
6
- import { type DocumentModelModule } from "document-model";
5
+ import type { VetraDocumentModelModule } from "@powerhousedao/reactor-browser";
6
+ import {
7
+ showCreateDocumentModal,
8
+ useAllowedDocumentModelModules,
9
+ } from "@powerhousedao/reactor-browser";
7
10
 
8
- interface CreateDocumentProps {
9
- documentModels?: DocumentModelModule[];
10
- createDocument: (doc: DocumentModelModule) => void;
11
- }
12
-
13
- function getDocumentSpec(doc: DocumentModelModule) {
14
- if ("documentModelState" in doc) {
15
- return doc.documentModelState as DocumentModelModule["documentModel"];
16
- }
11
+ /**
12
+ * Document creation UI component.
13
+ * Displays available document types as clickable buttons.
14
+ */
15
+ export function CreateDocument() {
16
+ const allowedDocumentModelModules = useAllowedDocumentModelModules();
17
17
 
18
- return doc.documentModel;
19
- }
20
-
21
- export const CreateDocument: React.FC<CreateDocumentProps> = ({
22
- documentModels,
23
- createDocument,
24
- }) => {
25
18
  return (
26
- <div className="px-6">
19
+ <div>
20
+ {/* Customize section title here */}
27
21
  <h3 className="mb-3 mt-4 text-sm font-bold text-gray-600">
28
- New document
22
+ Create document
29
23
  </h3>
24
+ {/* Customize layout by changing flex-wrap, gap, or grid layout */}
30
25
  <div className="flex w-full flex-wrap gap-4">
31
- {documentModels?.map((doc) => {
32
- const spec = getDocumentSpec(doc);
26
+ {allowedDocumentModelModules?.map((documentModelModule) => {
33
27
  return (
34
- <Button
35
- key={spec.id}
36
- color="light"
37
- size="small"
38
- className="cursor-pointer"
39
- title={spec.name}
40
- aria-description={spec.description}
41
- onClick={() => createDocument(doc)}
42
- >
43
- <span className="text-sm">{spec.name}</span>
44
- </Button>
28
+ <CreateDocumentButton
29
+ key={documentModelModule.documentModel.global.id}
30
+ documentModelModule={documentModelModule}
31
+ />
45
32
  );
46
33
  })}
47
34
  </div>
48
35
  </div>
49
36
  );
50
- };
37
+ }
38
+
39
+ type Props = {
40
+ documentModelModule: VetraDocumentModelModule;
41
+ };
42
+ function CreateDocumentButton({ documentModelModule }: Props) {
43
+ const documentType = documentModelModule.documentModel.global.id;
44
+ const documentModelName =
45
+ documentModelModule.documentModel.global.name || documentType;
46
+ const documentModelDescription =
47
+ documentModelModule.documentModel.global.description;
48
+ return (
49
+ <button
50
+ className="cursor-pointer rounded-md bg-gray-200 py-2 px-3 hover:bg-gray-300"
51
+ title={documentModelName}
52
+ aria-description={documentModelDescription}
53
+ onClick={() => showCreateDocumentModal(documentType)}
54
+ >
55
+ {documentModelName}
56
+ </button>
57
+ );
58
+ }
@@ -0,0 +1,23 @@
1
+ ---
2
+ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/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
+
@@ -2,237 +2,31 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/DriveExplorer.tsx"
3
3
  unless_exists: true
4
4
  ---
5
- import {
6
- type BaseUiFileNode,
7
- type BaseUiFolderNode,
8
- type BaseUiNode,
9
- type UiFileNode,
10
- type UiFolderNode,
11
- type UiNode,
12
- } from "@powerhousedao/design-system";
13
- import { useCallback, useState, useRef, useEffect } from "react";
14
- import type { FileNode, GetDocumentOptions, Node } from "document-drive";
15
- import { FileItemsGrid } from "./FileItemsGrid.js";
16
- import { FolderItemsGrid } from "./FolderItemsGrid.js";
5
+ import type { EditorProps } from "document-model";
17
6
  import { FolderTree } from "./FolderTree.js";
18
- import { useTransformedNodes } from "../hooks/useTransformedNodes.js";
19
- import { useSelectedFolderChildren } from "../hooks/useSelectedFolderChildren.js";
20
- import { EditorContainer } from "./EditorContainer.js";
21
- import type { DocumentModelModule } from "document-model";
22
- import { CreateDocumentModal } from "@powerhousedao/design-system";
23
- import { CreateDocument } from "./CreateDocument.js";
24
- import { type DriveEditorContext, useDriveContext } from "@powerhousedao/reactor-browser";
7
+ import { DriveContents } from "./DriveContents.js";
25
8
 
26
- interface DriveExplorerProps {
27
- driveId: string;
28
- nodes: Node[];
29
- onAddFolder: (name: string, parentFolder?: string) => void;
30
- onDeleteNode: (nodeId: string) => void;
31
- renameNode: (nodeId: string, name: string) => void;
32
- onCopyNode: (nodeId: string, targetName: string, parentId?: string) => void;
33
- context: DriveEditorContext;
34
- }
35
-
36
- export function DriveExplorer({
37
- driveId,
38
- nodes,
39
- onDeleteNode,
40
- renameNode,
41
- onAddFolder,
42
- onCopyNode,
43
- context,
44
- }: DriveExplorerProps) {
45
- const { getDocumentRevision } = context;
46
-
47
- const [selectedNodeId, setSelectedNodeId] = useState<string | undefined>();
48
- const [activeDocumentId, setActiveDocumentId] = useState<
49
- string | undefined
50
- >();
51
- const [openModal, setOpenModal] = useState(false);
52
- const selectedDocumentModel = useRef<DocumentModelModule | null>(null);
53
- const { addDocument, documentModels } = useDriveContext();
54
-
55
- // Dummy functions to satisfy component types
56
- const dummyDuplicateNode = useCallback((node: BaseUiNode) => {
57
- console.log("Duplicate node:", node);
58
- }, []);
59
-
60
- const dummyAddFile = useCallback(
61
- async (file: File, parentNode: BaseUiNode | null) => {
62
- console.log("Add file:", file, parentNode);
63
- },
64
- []
65
- );
66
-
67
- const dummyMoveNode = useCallback(
68
- async (uiNode: BaseUiNode, targetNode: BaseUiNode) => {
69
- console.log("Move node:", uiNode, targetNode);
70
- },
71
- []
72
- );
73
-
74
- const handleNodeSelect = useCallback((node: BaseUiFolderNode) => {
75
- console.log("Selected node:", node);
76
- setSelectedNodeId(node.id);
77
- }, []);
78
-
79
- const handleFileSelect = useCallback((node: BaseUiFileNode) => {
80
- setActiveDocumentId(node.id);
81
- }, []);
82
-
83
- const handleEditorClose = useCallback(() => {
84
- setActiveDocumentId(undefined);
85
- }, []);
86
-
87
- const onCreateDocument = useCallback(
88
- async (fileName: string) => {
89
- setOpenModal(false);
90
-
91
- const documentModel = selectedDocumentModel.current;
92
- if (!documentModel) return;
93
-
94
- const node = await addDocument(
95
- driveId,
96
- fileName,
97
- documentModel.documentModel.id,
98
- selectedNodeId,
99
- );
100
-
101
- selectedDocumentModel.current = null;
102
- setActiveDocumentId(node.id);
103
- },
104
- [addDocument, driveId, selectedNodeId]
105
- );
106
-
107
- const onSelectDocumentModel = useCallback(
108
- (documentModel: DocumentModelModule) => {
109
- selectedDocumentModel.current = documentModel;
110
- setOpenModal(true);
111
- },
112
- []
113
- );
114
-
115
- const onGetDocumentRevision = useCallback(
116
- (options?: GetDocumentOptions) => {
117
- if (!activeDocumentId) return;
118
- return getDocumentRevision?.(activeDocumentId, options);
119
- },
120
- [getDocumentRevision, activeDocumentId],
121
- );
122
-
123
- const filteredDocumentModels = documentModels;
124
-
125
- // Transform nodes using the custom hook
126
- const transformedNodes = useTransformedNodes(nodes, driveId);
127
-
128
- // Separate folders and files
129
- const folders = transformedNodes.filter(
130
- (node): node is UiFolderNode => node.kind === "FOLDER"
131
- );
132
- const files = transformedNodes.filter(
133
- (node): node is UiFileNode => node.kind === "FILE"
134
- );
135
-
136
- // Get children of selected folder using the custom hook
137
- const selectedFolderChildren = useSelectedFolderChildren(
138
- selectedNodeId,
139
- folders,
140
- files
141
- );
142
-
143
- // Get the active document info from nodes
144
- const activeDocument = activeDocumentId
145
- ? files.find((file) => file.id === activeDocumentId)
146
- : undefined;
147
-
148
- const documentModelModule = activeDocument
149
- ? context.getDocumentModelModule(activeDocument.documentType)
150
- : null;
151
-
152
- const editorModule = activeDocument
153
- ? context.getEditor(activeDocument.documentType)
154
- : null;
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;
155
16
 
156
17
  return (
157
18
  <div className="flex h-full">
158
- {/* Sidebar */}
159
- <div className="w-64 border-r border-gray-200 p-4 overflow-y-auto">
160
- <h2 className="text-lg font-semibold mb-4">Folders</h2>
161
- <FolderTree
162
- folders={folders}
163
- selectedNodeId={selectedNodeId}
164
- onSelectNode={handleNodeSelect}
165
- />
166
- </div>
167
-
168
- {/* Main Content */}
169
- <div className="flex-1 p-4 overflow-y-auto">
170
- {activeDocument && documentModelModule && editorModule ? (
171
- <EditorContainer
172
- context={{
173
- ...context,
174
- getDocumentRevision: onGetDocumentRevision,
175
- }}
176
- documentId={activeDocumentId!}
177
- documentType={activeDocument.documentType}
178
- driveId={driveId}
179
- onClose={handleEditorClose}
180
- title={activeDocument.name}
181
- documentModelModule={documentModelModule}
182
- editorModule={editorModule}
183
- />
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
184
25
  ) : (
185
- <>
186
- <h2 className="text-lg font-semibold mb-4">Contents</h2>
187
-
188
- {/* Folders Section */}
189
- <FolderItemsGrid
190
- folders={selectedFolderChildren.folders}
191
- onSelectNode={handleNodeSelect}
192
- onRenameNode={renameNode}
193
- onDuplicateNode={(uiNode) =>
194
- onCopyNode(
195
- uiNode.id,
196
- "Copy of " + uiNode.name,
197
- uiNode.parentFolder
198
- )
199
- }
200
- onDeleteNode={onDeleteNode}
201
- onAddFile={dummyAddFile}
202
- onCopyNode={async (uiNode, targetNode) =>
203
- onCopyNode(uiNode.id, "Copy of " + uiNode.name, targetNode.id)
204
- }
205
- onMoveNode={dummyMoveNode}
206
- isAllowedToCreateDocuments={true}
207
- onAddFolder={onAddFolder}
208
- parentFolderId={selectedNodeId}
209
- />
210
-
211
- {/* Files Section */}
212
- <FileItemsGrid
213
- files={selectedFolderChildren.files}
214
- onSelectNode={handleFileSelect}
215
- onRenameNode={renameNode}
216
- onDuplicateNode={dummyDuplicateNode}
217
- onDeleteNode={onDeleteNode}
218
- isAllowedToCreateDocuments={true}
219
- />
220
-
221
- {/* Create Document Section */}
222
- <CreateDocument
223
- createDocument={onSelectDocumentModel}
224
- documentModels={filteredDocumentModels}
225
- />
226
- </>
26
+ /* Folder contents view */
27
+ <DriveContents />
227
28
  )}
228
29
  </div>
229
-
230
- {/* Create Document Modal */}
231
- <CreateDocumentModal
232
- onContinue={onCreateDocument}
233
- onOpenChange={(open) => setOpenModal(open)}
234
- open={openModal}
235
- />
236
30
  </div>
237
31
  );
238
- }
32
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/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
+ }