@gadmin2n/cli 0.0.80 → 0.0.82

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 (282) hide show
  1. package/.yalc/@gadmin2n/schematics/LICENSE +21 -0
  2. package/.yalc/@gadmin2n/schematics/README.md +9 -0
  3. package/.yalc/@gadmin2n/schematics/dist/collection.json +122 -0
  4. package/.yalc/@gadmin2n/schematics/dist/index.d.ts +2 -0
  5. package/.yalc/@gadmin2n/schematics/dist/index.js +18 -0
  6. package/.yalc/@gadmin2n/schematics/dist/lib/application/application.factory.d.ts +3 -0
  7. package/.yalc/@gadmin2n/schematics/dist/lib/application/application.factory.js +92 -0
  8. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/.dockerignore +33 -0
  9. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/Dockerfile +63 -0
  10. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +70 -0
  11. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/config/.types.d.ts +143 -0
  12. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/default-schema.prisma +46 -0
  13. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/page.prisma +116 -0
  14. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +49 -0
  15. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/.env +31 -0
  16. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/.env.local +1 -0
  17. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +1 -0
  18. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/README.md +55 -0
  19. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +17 -0
  20. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +1232 -0
  21. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +141 -0
  22. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma/.generator.prisma +34 -0
  23. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/start-prod.sh +130 -0
  24. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/test/jest-e2e.json +9 -0
  25. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +4 -0
  26. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/README.MD +48 -0
  27. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/index.html +19 -0
  28. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +81 -0
  29. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/postcss.config.cjs +6 -0
  30. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/public/favicon.ico +0 -0
  31. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/en.svg +1 -0
  32. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/zh_CN.svg +11 -0
  33. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +111 -0
  34. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +236 -0
  35. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +56 -0
  36. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +292 -0
  37. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +294 -0
  38. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.css +10 -0
  39. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.jsx +53 -0
  40. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +201 -0
  41. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +497 -0
  42. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +282 -0
  43. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +62 -0
  44. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +96 -0
  45. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +73 -0
  46. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +104 -0
  47. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -0
  48. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +65 -0
  49. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +58 -0
  50. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +38 -0
  51. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +121 -0
  52. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +32 -0
  53. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +19 -0
  54. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +383 -0
  55. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +61 -0
  56. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +5 -0
  57. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +21 -0
  58. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +44 -0
  59. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +74 -0
  60. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +175 -0
  61. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +421 -0
  62. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +3 -0
  63. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +465 -0
  64. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +182 -0
  65. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +211 -0
  66. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +20 -0
  67. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +128 -0
  68. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +130 -0
  69. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/meta.json +4 -0
  70. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +3 -0
  71. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +134 -0
  72. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +113 -0
  73. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +122 -0
  74. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +6 -0
  75. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +213 -0
  76. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +61 -0
  77. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +168 -0
  78. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +42 -0
  79. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +42 -0
  80. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +101 -0
  81. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +731 -0
  82. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/create.tsx +113 -0
  83. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/edit.tsx +122 -0
  84. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.tsx +6 -0
  85. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +1113 -0
  86. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/show.tsx +61 -0
  87. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/create.tsx +113 -0
  88. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/edit.tsx +122 -0
  89. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/index.tsx +6 -0
  90. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/list.tsx +243 -0
  91. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/show.tsx +61 -0
  92. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permission-readme/index.tsx +1088 -0
  93. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +25 -0
  94. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +28 -0
  95. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +160 -0
  96. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +202 -0
  97. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/create.tsx +113 -0
  98. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/edit.tsx +122 -0
  99. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.tsx +6 -0
  100. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +184 -0
  101. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/show.tsx +61 -0
  102. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +30 -0
  103. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +47 -0
  104. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +56 -0
  105. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +302 -0
  106. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/create.tsx +113 -0
  107. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/edit.tsx +122 -0
  108. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.tsx +6 -0
  109. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +382 -0
  110. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/show.tsx +61 -0
  111. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/create.tsx +113 -0
  112. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/edit.tsx +122 -0
  113. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/index.tsx +6 -0
  114. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/list.tsx +243 -0
  115. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/show.tsx +61 -0
  116. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/create.tsx +113 -0
  117. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/edit.tsx +122 -0
  118. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/index.tsx +6 -0
  119. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/list.tsx +243 -0
  120. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/show.tsx +61 -0
  121. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +17 -0
  122. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +19 -0
  123. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +188 -0
  124. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +48 -0
  125. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +140 -0
  126. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/create.tsx +113 -0
  127. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/edit.tsx +122 -0
  128. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.tsx +6 -0
  129. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +342 -0
  130. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/show.tsx +61 -0
  131. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +132 -0
  132. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +58 -0
  133. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +128 -0
  134. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +18 -0
  135. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +21 -0
  136. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/utils.tsx +5 -0
  137. package/.yalc/@gadmin2n/schematics/dist/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +1 -0
  138. package/.yalc/@gadmin2n/schematics/dist/lib/application/schema.json +99 -0
  139. package/.yalc/@gadmin2n/schematics/dist/lib/class/class.factory.d.ts +3 -0
  140. package/.yalc/@gadmin2n/schematics/dist/lib/class/class.factory.js +42 -0
  141. package/.yalc/@gadmin2n/schematics/dist/lib/class/files/js/__name__.js +1 -0
  142. package/.yalc/@gadmin2n/schematics/dist/lib/class/files/js/__name__.spec.js +7 -0
  143. package/.yalc/@gadmin2n/schematics/dist/lib/class/schema.json +45 -0
  144. package/.yalc/@gadmin2n/schematics/dist/lib/client-app/angular/angular.factory.d.ts +3 -0
  145. package/.yalc/@gadmin2n/schematics/dist/lib/client-app/angular/angular.factory.js +98 -0
  146. package/.yalc/@gadmin2n/schematics/dist/lib/client-app/angular/schema.json +24 -0
  147. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/configuration.factory.d.ts +3 -0
  148. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/configuration.factory.js +24 -0
  149. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/files/js/nest-cli.json +6 -0
  150. package/.yalc/@gadmin2n/schematics/dist/lib/configuration/files/ts/nest-cli.json +5 -0
  151. package/.yalc/@gadmin2n/schematics/dist/lib/controller/controller.factory.d.ts +3 -0
  152. package/.yalc/@gadmin2n/schematics/dist/lib/controller/controller.factory.js +118 -0
  153. package/.yalc/@gadmin2n/schematics/dist/lib/controller/files/js/__name__.controller.js +4 -0
  154. package/.yalc/@gadmin2n/schematics/dist/lib/controller/files/js/__name__.controller.spec.js +18 -0
  155. package/.yalc/@gadmin2n/schematics/dist/lib/controller/schema.json +51 -0
  156. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/decorator.factory.d.ts +3 -0
  157. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/decorator.factory.js +33 -0
  158. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/files/js/__name__.decorator.js +3 -0
  159. package/.yalc/@gadmin2n/schematics/dist/lib/decorator/schema.json +36 -0
  160. package/.yalc/@gadmin2n/schematics/dist/lib/defaults.d.ts +16 -0
  161. package/.yalc/@gadmin2n/schematics/dist/lib/defaults.js +19 -0
  162. package/.yalc/@gadmin2n/schematics/dist/lib/filter/files/js/__name__.filter.js +6 -0
  163. package/.yalc/@gadmin2n/schematics/dist/lib/filter/files/js/__name__.filter.spec.js +7 -0
  164. package/.yalc/@gadmin2n/schematics/dist/lib/filter/filter.factory.d.ts +3 -0
  165. package/.yalc/@gadmin2n/schematics/dist/lib/filter/filter.factory.js +34 -0
  166. package/.yalc/@gadmin2n/schematics/dist/lib/filter/schema.json +41 -0
  167. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/files/js/__name__.gateway.js +9 -0
  168. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/files/js/__name__.gateway.spec.js +18 -0
  169. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/gateway.factory.d.ts +3 -0
  170. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/gateway.factory.js +62 -0
  171. package/.yalc/@gadmin2n/schematics/dist/lib/gateway/schema.json +41 -0
  172. package/.yalc/@gadmin2n/schematics/dist/lib/guard/files/js/__name__.guard.js +8 -0
  173. package/.yalc/@gadmin2n/schematics/dist/lib/guard/files/js/__name__.guard.spec.js +7 -0
  174. package/.yalc/@gadmin2n/schematics/dist/lib/guard/guard.factory.d.ts +3 -0
  175. package/.yalc/@gadmin2n/schematics/dist/lib/guard/guard.factory.js +34 -0
  176. package/.yalc/@gadmin2n/schematics/dist/lib/guard/schema.json +41 -0
  177. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/files/js/__name__.interceptor.js +8 -0
  178. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/files/js/__name__.interceptor.spec.js +7 -0
  179. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/interceptor.factory.d.ts +3 -0
  180. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/interceptor.factory.js +116 -0
  181. package/.yalc/@gadmin2n/schematics/dist/lib/interceptor/schema.json +50 -0
  182. package/.yalc/@gadmin2n/schematics/dist/lib/interface/interface.factory.d.ts +3 -0
  183. package/.yalc/@gadmin2n/schematics/dist/lib/interface/interface.factory.js +32 -0
  184. package/.yalc/@gadmin2n/schematics/dist/lib/interface/schema.json +32 -0
  185. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/.babelrc +4 -0
  186. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/jsconfig.json +9 -0
  187. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/__name__.module.js +8 -0
  188. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/__name__.service.js +4 -0
  189. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/__name__.service.spec.js +18 -0
  190. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/js/src/index.js +2 -0
  191. package/.yalc/@gadmin2n/schematics/dist/lib/library/files/ts/tsconfig.lib.json +9 -0
  192. package/.yalc/@gadmin2n/schematics/dist/lib/library/library.factory.d.ts +3 -0
  193. package/.yalc/@gadmin2n/schematics/dist/lib/library/library.factory.js +190 -0
  194. package/.yalc/@gadmin2n/schematics/dist/lib/library/schema.json +37 -0
  195. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/files/js/__name__.middleware.js +8 -0
  196. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/files/js/__name__.middleware.spec.js +7 -0
  197. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/middleware.factory.d.ts +3 -0
  198. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/middleware.factory.js +34 -0
  199. package/.yalc/@gadmin2n/schematics/dist/lib/middleware/schema.json +41 -0
  200. package/.yalc/@gadmin2n/schematics/dist/lib/module/files/js/__name__.module.js +4 -0
  201. package/.yalc/@gadmin2n/schematics/dist/lib/module/module.factory.d.ts +3 -0
  202. package/.yalc/@gadmin2n/schematics/dist/lib/module/module.factory.js +58 -0
  203. package/.yalc/@gadmin2n/schematics/dist/lib/module/schema.json +46 -0
  204. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/files/js/__name__.pipe.js +8 -0
  205. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/files/js/__name__.pipe.spec.js +7 -0
  206. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/pipe.factory.d.ts +3 -0
  207. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/pipe.factory.js +34 -0
  208. package/.yalc/@gadmin2n/schematics/dist/lib/pipe/schema.json +41 -0
  209. package/.yalc/@gadmin2n/schematics/dist/lib/prisma-resource/prisma-resource.factory.d.ts +3 -0
  210. package/.yalc/@gadmin2n/schematics/dist/lib/prisma-resource/prisma-resource.factory.js +131 -0
  211. package/.yalc/@gadmin2n/schematics/dist/lib/prisma-resource/schema.json +91 -0
  212. package/.yalc/@gadmin2n/schematics/dist/lib/provider/files/js/__name__.js +4 -0
  213. package/.yalc/@gadmin2n/schematics/dist/lib/provider/files/js/__name__.spec.js +18 -0
  214. package/.yalc/@gadmin2n/schematics/dist/lib/provider/provider.factory.d.ts +3 -0
  215. package/.yalc/@gadmin2n/schematics/dist/lib/provider/provider.factory.js +67 -0
  216. package/.yalc/@gadmin2n/schematics/dist/lib/provider/schema.json +45 -0
  217. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/files/js/__name__.resolver.js +4 -0
  218. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/files/js/__name__.resolver.spec.js +18 -0
  219. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/resolver.factory.d.ts +3 -0
  220. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/resolver.factory.js +62 -0
  221. package/.yalc/@gadmin2n/schematics/dist/lib/resolver/schema.json +41 -0
  222. package/.yalc/@gadmin2n/schematics/dist/lib/resource/files/ts/__name__.graphql +24 -0
  223. package/.yalc/@gadmin2n/schematics/dist/lib/resource/resource.factory.d.ts +3 -0
  224. package/.yalc/@gadmin2n/schematics/dist/lib/resource/resource.factory.js +131 -0
  225. package/.yalc/@gadmin2n/schematics/dist/lib/resource/schema.json +90 -0
  226. package/.yalc/@gadmin2n/schematics/dist/lib/service/files/js/__name__.service.js +4 -0
  227. package/.yalc/@gadmin2n/schematics/dist/lib/service/files/js/__name__.service.spec.js +18 -0
  228. package/.yalc/@gadmin2n/schematics/dist/lib/service/schema.json +41 -0
  229. package/.yalc/@gadmin2n/schematics/dist/lib/service/service.factory.d.ts +3 -0
  230. package/.yalc/@gadmin2n/schematics/dist/lib/service/service.factory.js +63 -0
  231. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/.babelrc +4 -0
  232. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/index.js +2 -0
  233. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/jsconfig.json +10 -0
  234. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.controller.js +15 -0
  235. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.controller.spec.js +22 -0
  236. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.module.js +10 -0
  237. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/app.service.js +8 -0
  238. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/src/main.js +8 -0
  239. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/test/app.e2e-spec.js +23 -0
  240. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/js/test/jest-e2e.json +5 -0
  241. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/ts/test/jest-e2e.json +9 -0
  242. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/files/ts/tsconfig.app.json +9 -0
  243. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/schema.json +32 -0
  244. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/sub-app.factory.d.ts +3 -0
  245. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/sub-app.factory.js +245 -0
  246. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/js/.babelrc +4 -0
  247. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/js/index.js +2 -0
  248. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/js/jsconfig.json +10 -0
  249. package/.yalc/@gadmin2n/schematics/dist/lib/sub-app/workspace/ts/tsconfig.app.json +9 -0
  250. package/.yalc/@gadmin2n/schematics/dist/utils/change.d.ts +46 -0
  251. package/.yalc/@gadmin2n/schematics/dist/utils/change.js +95 -0
  252. package/.yalc/@gadmin2n/schematics/dist/utils/dependencies.utils.d.ts +15 -0
  253. package/.yalc/@gadmin2n/schematics/dist/utils/dependencies.utils.js +42 -0
  254. package/.yalc/@gadmin2n/schematics/dist/utils/export-from.declarator.d.ts +10 -0
  255. package/.yalc/@gadmin2n/schematics/dist/utils/export-from.declarator.js +39 -0
  256. package/.yalc/@gadmin2n/schematics/dist/utils/formatting.d.ts +1 -0
  257. package/.yalc/@gadmin2n/schematics/dist/utils/formatting.js +12 -0
  258. package/.yalc/@gadmin2n/schematics/dist/utils/index.d.ts +9 -0
  259. package/.yalc/@gadmin2n/schematics/dist/utils/index.js +25 -0
  260. package/.yalc/@gadmin2n/schematics/dist/utils/json-file.util.d.ts +15 -0
  261. package/.yalc/@gadmin2n/schematics/dist/utils/json-file.util.js +68 -0
  262. package/.yalc/@gadmin2n/schematics/dist/utils/metadata.manager.d.ts +13 -0
  263. package/.yalc/@gadmin2n/schematics/dist/utils/metadata.manager.js +162 -0
  264. package/.yalc/@gadmin2n/schematics/dist/utils/module-import.declarator.d.ts +10 -0
  265. package/.yalc/@gadmin2n/schematics/dist/utils/module-import.declarator.js +39 -0
  266. package/.yalc/@gadmin2n/schematics/dist/utils/module-metadata.declarator.d.ts +4 -0
  267. package/.yalc/@gadmin2n/schematics/dist/utils/module-metadata.declarator.js +12 -0
  268. package/.yalc/@gadmin2n/schematics/dist/utils/module.declarator.d.ts +23 -0
  269. package/.yalc/@gadmin2n/schematics/dist/utils/module.declarator.js +32 -0
  270. package/.yalc/@gadmin2n/schematics/dist/utils/module.finder.d.ts +13 -0
  271. package/.yalc/@gadmin2n/schematics/dist/utils/module.finder.js +24 -0
  272. package/.yalc/@gadmin2n/schematics/dist/utils/name.parser.d.ts +12 -0
  273. package/.yalc/@gadmin2n/schematics/dist/utils/name.parser.js +17 -0
  274. package/.yalc/@gadmin2n/schematics/dist/utils/path.solver.d.ts +4 -0
  275. package/.yalc/@gadmin2n/schematics/dist/utils/path.solver.js +14 -0
  276. package/.yalc/@gadmin2n/schematics/dist/utils/source-root.helpers.d.ts +8 -0
  277. package/.yalc/@gadmin2n/schematics/dist/utils/source-root.helpers.js +35 -0
  278. package/.yalc/@gadmin2n/schematics/package.json +78 -0
  279. package/.yalc/@gadmin2n/schematics/yalc.sig +1 -0
  280. package/actions/prisma.action.js +3 -3
  281. package/package.json +2 -2
  282. package/yalc.lock +10 -0
@@ -0,0 +1,294 @@
1
+ import React from 'react';
2
+ import { SearchOutlined } from '@ant-design/icons';
3
+ import { Button, DatePicker, Form, FormProps, Input, Space } from 'antd';
4
+ import { agentAttrs } from './agentPanel/agentAttributes';
5
+
6
+ const { RangePicker } = DatePicker;
7
+
8
+ export interface SearchBarField {
9
+ name: string;
10
+ type: 'keyword' | 'dateRange' | 'custom';
11
+ label?: string;
12
+ placeholder?: string;
13
+ component?: React.ReactNode;
14
+ style?: React.CSSProperties;
15
+ }
16
+
17
+ export interface SearchBarRenderContext {
18
+ /** Form props from parent */
19
+ formProps: FormProps;
20
+ /** Fields configuration */
21
+ fields: SearchBarField[];
22
+ /** Translation function */
23
+ t: (key: string, defaultValue?: string) => string;
24
+ /** Resource name */
25
+ resourceName: string;
26
+ /** Render a single field */
27
+ renderField: (field: SearchBarField) => React.ReactNode;
28
+ /** Default submit button */
29
+ defaultSubmitButton: React.ReactNode;
30
+ }
31
+
32
+ export interface SearchBarProps {
33
+ formProps: FormProps;
34
+ fields?: SearchBarField[];
35
+ /** Translation function */
36
+ t?: (key: string, defaultValue?: string) => string;
37
+ /** Resource name for i18n keys */
38
+ resourceName?: string;
39
+ /** Default placeholder for keyword search */
40
+ searchPlaceholder?: string;
41
+ /** Submit button text */
42
+ submitText?: string;
43
+ /** Custom children - if provided as function, gives full control */
44
+ children?: React.ReactNode | ((context: SearchBarRenderContext) => React.ReactNode);
45
+
46
+ // Render props for fine-grained customization
47
+ /** Custom render for keyword input */
48
+ renderKeywordInput?: (field: SearchBarField, defaultInput: React.ReactNode) => React.ReactNode;
49
+ /** Custom render for date range picker */
50
+ renderDateRangePicker?: (field: SearchBarField, defaultPicker: React.ReactNode) => React.ReactNode;
51
+ /** Custom render for submit button */
52
+ renderSubmitButton?: (defaultButton: React.ReactNode) => React.ReactNode;
53
+ /** Custom render for field wrapper (Form.Item) */
54
+ renderFieldWrapper?: (field: SearchBarField, children: React.ReactNode) => React.ReactNode;
55
+ /** Extra fields to render before submit button */
56
+ extraFields?: React.ReactNode;
57
+ /** Extra actions to render after submit button */
58
+ extraActions?: React.ReactNode;
59
+ /** Show submit button */
60
+ showSubmitButton?: boolean;
61
+ /** Custom form wrapper - if false, renders without Form wrapper */
62
+ noFormWrapper?: boolean;
63
+ }
64
+
65
+ /**
66
+ * Reusable search bar component for list pages
67
+ *
68
+ * @example
69
+ * // Basic usage
70
+ * <SearchBar
71
+ * formProps={searchFormProps}
72
+ * t={t}
73
+ * resourceName="audit"
74
+ * />
75
+ *
76
+ * @example
77
+ * // With custom render props
78
+ * <SearchBar
79
+ * {...props}
80
+ * renderKeywordInput={(field, defaultInput) => (
81
+ * <MyCustomSearchInput placeholder={field.placeholder} />
82
+ * )}
83
+ * renderSubmitButton={(defaultButton) => (
84
+ * <Space>
85
+ * {defaultButton}
86
+ * <Button onClick={handleReset}>Reset</Button>
87
+ * </Space>
88
+ * )}
89
+ * extraActions={<Button onClick={handleAdvanced}>Advanced</Button>}
90
+ * />
91
+ *
92
+ * @example
93
+ * // Completely custom UI using children
94
+ * <SearchBar formProps={formProps}>
95
+ * {({ fields, renderField, defaultSubmitButton }) => (
96
+ * <MyCustomSearchLayout>
97
+ * {fields.map(renderField)}
98
+ * {defaultSubmitButton}
99
+ * </MyCustomSearchLayout>
100
+ * )}
101
+ * </SearchBar>
102
+ */
103
+ export const SearchBar: React.FC<SearchBarProps> = ({
104
+ formProps,
105
+ fields,
106
+ t = (key, defaultValue) => defaultValue || key,
107
+ resourceName = '',
108
+ searchPlaceholder = '',
109
+ submitText,
110
+ children,
111
+ renderKeywordInput,
112
+ renderDateRangePicker,
113
+ renderSubmitButton,
114
+ renderFieldWrapper,
115
+ extraFields,
116
+ extraActions,
117
+ showSubmitButton = true,
118
+ noFormWrapper = false,
119
+ }) => {
120
+ // Default fields if none provided
121
+ const defaultFields: SearchBarField[] = [
122
+ {
123
+ name: 'q',
124
+ type: 'keyword',
125
+ label: t(`resources.${resourceName}.search.q.title`, 'Search'),
126
+ placeholder: t(`resources.${resourceName}.search.q.placeholder`, searchPlaceholder),
127
+ style: { width: '100%', maxWidth: '300px' },
128
+ },
129
+ {
130
+ name: 'createdAt',
131
+ type: 'dateRange',
132
+ label: t(`resources.${resourceName}.fields.createdAt`, 'createdAt'),
133
+ style: { width: '100%', maxWidth: '400px' },
134
+ },
135
+ ];
136
+
137
+ const fieldsToRender = fields || defaultFields;
138
+
139
+ // Default submit button
140
+ const defaultSubmitButton = (
141
+ <Form.Item>
142
+ <Button htmlType="submit" type="primary">
143
+ {submitText || t('buttons.filter', 'Filter')}
144
+ </Button>
145
+ </Form.Item>
146
+ );
147
+
148
+ // Default field wrapper
149
+ const defaultFieldWrapper = (field: SearchBarField, children: React.ReactNode) => (
150
+ <Form.Item
151
+ key={field.name}
152
+ label={field.label}
153
+ name={field.name}
154
+ style={field.style}
155
+ >
156
+ {children}
157
+ </Form.Item>
158
+ );
159
+
160
+ // Render a single field
161
+ const renderField = (field: SearchBarField): React.ReactNode => {
162
+ if (field.type === 'custom' && field.component) {
163
+ const wrapper = renderFieldWrapper || defaultFieldWrapper;
164
+ return (
165
+ <React.Fragment key={field.name}>
166
+ {wrapper(field, field.component)}
167
+ </React.Fragment>
168
+ );
169
+ }
170
+
171
+ if (field.type === 'dateRange') {
172
+ const defaultPicker = <RangePicker />;
173
+ const picker = renderDateRangePicker
174
+ ? renderDateRangePicker(field, defaultPicker)
175
+ : defaultPicker;
176
+
177
+ const defaultLabel = field.label || t(`resources.${resourceName}.fields.${field.name}`, field.name);
178
+ const defaultStyle = field.style || { width: '100%', maxWidth: '400px' };
179
+
180
+ if (renderFieldWrapper) {
181
+ return (
182
+ <React.Fragment key={field.name}>
183
+ &nbsp;
184
+ {renderFieldWrapper({ ...field, label: defaultLabel, style: defaultStyle }, picker)}
185
+ </React.Fragment>
186
+ );
187
+ }
188
+
189
+ return (
190
+ <React.Fragment key={field.name}>
191
+ &nbsp;
192
+ <Form.Item
193
+ label={defaultLabel}
194
+ name={field.name}
195
+ style={defaultStyle}
196
+ >
197
+ {picker}
198
+ </Form.Item>
199
+ </React.Fragment>
200
+ );
201
+ }
202
+
203
+ // Default: keyword search
204
+ const defaultLabel = field.label || t(`resources.${resourceName}.search.${field.name}.title`, 'Search');
205
+ const defaultPlaceholder = field.placeholder || t(`resources.${resourceName}.search.${field.name}.placeholder`, searchPlaceholder);
206
+ const defaultStyle = field.style || { width: '100%', maxWidth: '300px' };
207
+
208
+ const defaultInput = (
209
+ <Input
210
+ placeholder={defaultPlaceholder}
211
+ prefix={<SearchOutlined />}
212
+ />
213
+ );
214
+
215
+ const input = renderKeywordInput
216
+ ? renderKeywordInput({ ...field, placeholder: defaultPlaceholder }, defaultInput)
217
+ : defaultInput;
218
+
219
+ if (renderFieldWrapper) {
220
+ return (
221
+ <React.Fragment key={field.name}>
222
+ {renderFieldWrapper({ ...field, label: defaultLabel, style: defaultStyle }, input)}
223
+ </React.Fragment>
224
+ );
225
+ }
226
+
227
+ return (
228
+ <Form.Item
229
+ key={field.name}
230
+ label={defaultLabel}
231
+ name={field.name}
232
+ style={defaultStyle}
233
+ >
234
+ {input}
235
+ </Form.Item>
236
+ );
237
+ };
238
+
239
+ // Build context for render function
240
+ const context: SearchBarRenderContext = {
241
+ formProps,
242
+ fields: fieldsToRender,
243
+ t,
244
+ resourceName,
245
+ renderField,
246
+ defaultSubmitButton,
247
+ };
248
+
249
+ // If children is a function, call it with context
250
+ if (typeof children === 'function') {
251
+ const content = children(context);
252
+ if (noFormWrapper) {
253
+ return <>{content}</>;
254
+ }
255
+ return <Form {...formProps}>{content}</Form>;
256
+ }
257
+
258
+ // If children is provided as ReactNode, render it directly
259
+ if (children) {
260
+ if (noFormWrapper) {
261
+ return <>{children}</>;
262
+ }
263
+ return <Form {...formProps}>{children}</Form>;
264
+ }
265
+
266
+ // Default rendering
267
+ const content = (
268
+ <Space wrap>
269
+ {fieldsToRender.map(renderField)}
270
+ {extraFields}
271
+ &nbsp;
272
+ {showSubmitButton && (
273
+ renderSubmitButton
274
+ ? renderSubmitButton(defaultSubmitButton)
275
+ : defaultSubmitButton
276
+ )}
277
+ {extraActions}
278
+ </Space>
279
+ );
280
+
281
+ if (noFormWrapper) {
282
+ return content;
283
+ }
284
+
285
+ return (
286
+ <div {...agentAttrs({ type: 'search-bar', resource: resourceName })}>
287
+ <Form {...formProps}>
288
+ {content}
289
+ </Form>
290
+ </div>
291
+ );
292
+ };
293
+
294
+ export default SearchBar;
@@ -0,0 +1,10 @@
1
+ .vanilla-jsoneditor-react {
2
+ display: flex;
3
+ flex: 1;
4
+ }
5
+
6
+ .vanilla-jsoneditor-container {
7
+ width: 700px;
8
+ /* height: 400px; */
9
+ display: flex;
10
+ }
@@ -0,0 +1,53 @@
1
+ import { JSONEditor } from "vanilla-jsoneditor";
2
+ import { useEffect, useRef } from "react";
3
+ import "./index.css";
4
+
5
+ export default function SvelteJSONEditor(props) {
6
+ const refContainer = useRef(null);
7
+ const refEditor = useRef(null);
8
+
9
+ useEffect(() => {
10
+ // create editor
11
+ // console.log("create editor", refContainer.current);
12
+ refEditor.current = new JSONEditor({
13
+ target: refContainer.current,
14
+ props: {},
15
+ });
16
+
17
+ return () => {
18
+ // destroy editor
19
+ if (refEditor.current) {
20
+ // console.log("destroy editor");
21
+ refEditor.current.destroy();
22
+ refEditor.current = null;
23
+ }
24
+ };
25
+ }, []);
26
+
27
+ // update props
28
+ useEffect(() => {
29
+ if (refEditor.current && props) {
30
+ // console.log("update props", props);
31
+ refEditor.current.updateProps({
32
+ ...props,
33
+ content: {
34
+ json: undefined,
35
+ text: props.value || "",
36
+ },
37
+ onChange: (content) => {
38
+ if (content.text !== undefined) {
39
+ props.onChange(content.text);
40
+ } else if (content.json !== undefined) {
41
+ props.onChange(JSON.stringify(content.json));
42
+ }
43
+ },
44
+ });
45
+ }
46
+ }, [props]);
47
+
48
+ return (
49
+ <div className="vanilla-jsoneditor-container">
50
+ <div className="vanilla-jsoneditor-react" ref={refContainer}></div>
51
+ </div>
52
+ );
53
+ }
@@ -0,0 +1,201 @@
1
+ import React, { createContext, useContext, useState, useCallback, useEffect } from 'react';
2
+ import { useLocation } from 'react-router-dom';
3
+ import { InspectedElementInfo } from './inspectorActions';
4
+
5
+ export type PageType = 'list' | 'create' | 'edit' | 'show' | 'unknown';
6
+
7
+ export interface PageInfo {
8
+ /** Resource name, e.g., 'user', 'audit' */
9
+ resourceName: string;
10
+ /** Page type */
11
+ pageType: PageType;
12
+ /** Full path */
13
+ path: string;
14
+ }
15
+
16
+ interface AgentContextValue {
17
+ /** Whether the agent panel is visible */
18
+ visible: boolean;
19
+ /** Open the agent panel */
20
+ open: () => void;
21
+ /** Close the agent panel */
22
+ close: () => void;
23
+ /** Toggle the agent panel */
24
+ toggle: () => void;
25
+ /** Current page info */
26
+ pageInfo: PageInfo;
27
+ /** Selected skill ID */
28
+ selectedSkillId: string | null;
29
+ /** Set selected skill */
30
+ setSelectedSkillId: (id: string | null) => void;
31
+ /** User's additional prompt */
32
+ userPrompt: string;
33
+ /** Set user prompt */
34
+ setUserPrompt: (prompt: string) => void;
35
+ /** Active tab */
36
+ activeTab: 'page' | 'project';
37
+ /** Set active tab */
38
+ setActiveTab: (tab: 'page' | 'project') => void;
39
+ /** Whether inspector overlay is active */
40
+ inspecting: boolean;
41
+ /** Enter inspect mode: close drawer, activate overlay */
42
+ startInspecting: () => void;
43
+ /** Exit inspect mode */
44
+ stopInspecting: () => void;
45
+ /** Info about the element selected by inspector */
46
+ inspectedElement: InspectedElementInfo | null;
47
+ /** Set inspected element info */
48
+ setInspectedElement: (info: InspectedElementInfo | null) => void;
49
+ /** Selected sub-skill ID (lifted from AgentPanel for inspector integration) */
50
+ selectedSubSkillId: string | null;
51
+ /** Set selected sub-skill */
52
+ setSelectedSubSkillId: (id: string | null) => void;
53
+ }
54
+
55
+ const AgentContext = createContext<AgentContextValue | null>(null);
56
+
57
+ /**
58
+ * Parse current route to extract page info
59
+ * Supports nested routes like /system/game, /system/game/edit/123
60
+ */
61
+ function parsePageInfo(pathname: string): PageInfo {
62
+ // Remove leading slash and split
63
+ const parts = pathname.replace(/^\//, '').split('/').filter(Boolean);
64
+
65
+ // Default values
66
+ let resourceName = '';
67
+ let pageType: PageType = 'unknown';
68
+
69
+ if (parts.length === 0) {
70
+ return { resourceName, pageType, path: pathname };
71
+ }
72
+
73
+ // Find the resource name and page type by scanning from the end
74
+ // URL patterns:
75
+ // /user -> resource: user, type: list
76
+ // /user/create -> resource: user, type: create
77
+ // /user/edit/123 -> resource: user, type: edit
78
+ // /user/show/123 -> resource: user, type: show
79
+ // /system/game -> resource: game, type: list
80
+ // /system/game/create -> resource: game, type: create
81
+ // /system/game/edit/123 -> resource: game, type: edit
82
+
83
+ const lastPart = parts[parts.length - 1];
84
+ const secondLastPart = parts.length >= 2 ? parts[parts.length - 2] : null;
85
+
86
+ // Check if last part is a number (ID)
87
+ if (/^\d+$/.test(lastPart)) {
88
+ // URL ends with ID, check the part before it
89
+ if (secondLastPart === 'edit') {
90
+ pageType = 'edit';
91
+ resourceName = parts.length >= 3 ? parts[parts.length - 3] : '';
92
+ } else if (secondLastPart === 'show') {
93
+ pageType = 'show';
94
+ resourceName = parts.length >= 3 ? parts[parts.length - 3] : '';
95
+ } else if (secondLastPart === 'clone') {
96
+ pageType = 'edit'; // clone uses edit page
97
+ resourceName = parts.length >= 3 ? parts[parts.length - 3] : '';
98
+ } else {
99
+ // /user/123 pattern
100
+ pageType = 'show';
101
+ resourceName = secondLastPart || '';
102
+ }
103
+ } else if (lastPart === 'create') {
104
+ pageType = 'create';
105
+ resourceName = secondLastPart || '';
106
+ } else if (lastPart === 'edit' || lastPart === 'show' || lastPart === 'clone') {
107
+ // Shouldn't happen normally, but handle it
108
+ pageType = lastPart === 'clone' ? 'edit' : lastPart as PageType;
109
+ resourceName = secondLastPart || '';
110
+ } else {
111
+ // Last part is the resource name, it's a list page
112
+ pageType = 'list';
113
+ resourceName = lastPart;
114
+ }
115
+
116
+ return {
117
+ resourceName,
118
+ pageType,
119
+ path: pathname,
120
+ };
121
+ }
122
+
123
+ export const AgentProvider: React.FC<{ children: React.ReactNode }> = ({
124
+ children,
125
+ }) => {
126
+ const location = useLocation();
127
+ const [visible, setVisible] = useState(false);
128
+ const [selectedSkillId, setSelectedSkillId] = useState<string | null>(null);
129
+ const [userPrompt, setUserPrompt] = useState('');
130
+ const [activeTab, setActiveTab] = useState<'page' | 'project'>('page');
131
+ const [inspecting, setInspecting] = useState(false);
132
+ const [inspectedElement, setInspectedElement] = useState<InspectedElementInfo | null>(null);
133
+ const [selectedSubSkillId, setSelectedSubSkillId] = useState<string | null>(null);
134
+
135
+ const pageInfo = parsePageInfo(location.pathname);
136
+
137
+ const open = useCallback(() => setVisible(true), []);
138
+ const close = useCallback(() => setVisible(false), []);
139
+ const toggle = useCallback(() => setVisible((v) => !v), []);
140
+
141
+ const startInspecting = useCallback(() => {
142
+ setVisible(false);
143
+ setInspecting(true);
144
+ }, []);
145
+
146
+ const stopInspecting = useCallback(() => {
147
+ setInspecting(false);
148
+ }, []);
149
+
150
+ // Alt+I shortcut to toggle inspect mode
151
+ useEffect(() => {
152
+ const handleKeyDown = (e: KeyboardEvent) => {
153
+ if (e.altKey && e.code === 'KeyI') {
154
+ e.preventDefault();
155
+ setInspecting((prev) => {
156
+ if (!prev) {
157
+ // entering inspect mode — close drawer
158
+ setVisible(false);
159
+ }
160
+ return !prev;
161
+ });
162
+ }
163
+ };
164
+ document.addEventListener('keydown', handleKeyDown);
165
+ return () => document.removeEventListener('keydown', handleKeyDown);
166
+ }, []);
167
+
168
+ const value: AgentContextValue = {
169
+ visible,
170
+ open,
171
+ close,
172
+ toggle,
173
+ pageInfo,
174
+ selectedSkillId,
175
+ setSelectedSkillId,
176
+ userPrompt,
177
+ setUserPrompt,
178
+ activeTab,
179
+ setActiveTab,
180
+ inspecting,
181
+ startInspecting,
182
+ stopInspecting,
183
+ inspectedElement,
184
+ setInspectedElement,
185
+ selectedSubSkillId,
186
+ setSelectedSubSkillId,
187
+ };
188
+
189
+ return (
190
+ <AgentContext.Provider value={value}>{children}</AgentContext.Provider>
191
+ );
192
+ };
193
+
194
+ export function useAgent(): AgentContextValue | null {
195
+ const context = useContext(AgentContext);
196
+ // Return null instead of throwing error when not in AgentProvider
197
+ // This allows safe usage in production where AgentProvider is not rendered
198
+ return context;
199
+ }
200
+
201
+ export default AgentContext;