@solidxai/core-ui 0.1.9-beta.20 → 0.1.9-beta.21

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 (470) hide show
  1. package/README.md +1 -1
  2. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  3. package/dist/components/auth/AuthLayout.js +23 -19
  4. package/dist/components/auth/AuthLayout.js.map +1 -1
  5. package/dist/components/auth/AuthLayout.tsx +62 -52
  6. package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
  7. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  8. package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
  9. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts +2 -0
  10. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts.map +1 -0
  11. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js +112 -0
  12. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js.map +1 -0
  13. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.tsx +78 -0
  14. package/dist/components/auth/SolidChangeForcePassword.js +2 -2
  15. package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
  16. package/dist/components/auth/SolidChangeForcePassword.tsx +13 -13
  17. package/dist/components/auth/SolidForgotPassword.js +1 -1
  18. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  19. package/dist/components/auth/SolidForgotPassword.tsx +3 -3
  20. package/dist/components/auth/SolidInitialLoginOtp.js +1 -1
  21. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  22. package/dist/components/auth/SolidInitialLoginOtp.tsx +2 -2
  23. package/dist/components/auth/SolidInitiateRegisterOtp.js +1 -1
  24. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  25. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +2 -2
  26. package/dist/components/auth/SolidLogin.js +4 -4
  27. package/dist/components/auth/SolidLogin.js.map +1 -1
  28. package/dist/components/auth/SolidLogin.tsx +11 -11
  29. package/dist/components/auth/SolidRegister.js +6 -6
  30. package/dist/components/auth/SolidRegister.js.map +1 -1
  31. package/dist/components/auth/SolidRegister.tsx +14 -14
  32. package/dist/components/auth/SolidResetPassword.js +2 -2
  33. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  34. package/dist/components/auth/SolidResetPassword.tsx +8 -8
  35. package/dist/components/common/BackButton.js +1 -1
  36. package/dist/components/common/BackButton.js.map +1 -1
  37. package/dist/components/common/BackButton.tsx +1 -1
  38. package/dist/components/common/CancelButton.js +2 -2
  39. package/dist/components/common/CancelButton.js.map +1 -1
  40. package/dist/components/common/CancelButton.tsx +3 -3
  41. package/dist/components/common/GeneralSettings.js +18 -18
  42. package/dist/components/common/GeneralSettings.js.map +1 -1
  43. package/dist/components/common/GeneralSettings.tsx +136 -136
  44. package/dist/components/common/SolidExport.d.ts +1 -1
  45. package/dist/components/common/SolidExport.d.ts.map +1 -1
  46. package/dist/components/common/SolidExport.js +10 -3
  47. package/dist/components/common/SolidExport.js.map +1 -1
  48. package/dist/components/common/SolidExport.tsx +10 -2
  49. package/dist/components/common/SolidFormHeader.js +1 -1
  50. package/dist/components/common/SolidFormHeader.js.map +1 -1
  51. package/dist/components/common/SolidFormHeader.tsx +1 -1
  52. package/dist/components/common/SolidModuleHome.js +2 -2
  53. package/dist/components/common/SolidModuleHome.js.map +1 -1
  54. package/dist/components/common/SolidModuleHome.tsx +7 -7
  55. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +3 -3
  56. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  57. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +6 -6
  58. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js +1 -1
  59. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js.map +1 -1
  60. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +4 -4
  61. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js +1 -1
  62. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js.map +1 -1
  63. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +4 -4
  64. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js +1 -1
  65. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js.map +1 -1
  66. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +1 -1
  67. package/dist/components/core/card/SolidCardView.js +1 -1
  68. package/dist/components/core/card/SolidCardView.js.map +1 -1
  69. package/dist/components/core/card/SolidCardView.tsx +5 -5
  70. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  71. package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
  72. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  73. package/dist/components/core/card/SolidCardViewConfigure.tsx +5 -1
  74. package/dist/components/core/chatter/SolidChatter.js +5 -5
  75. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  76. package/dist/components/core/chatter/SolidChatter.tsx +8 -8
  77. package/dist/components/core/chatter/SolidChatterAuditMessage.js +1 -1
  78. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  79. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +2 -2
  80. package/dist/components/core/chatter/SolidChatterHeader.js +2 -2
  81. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  82. package/dist/components/core/chatter/SolidChatterHeader.tsx +6 -6
  83. package/dist/components/core/chatter/SolidChatterMessageBox.js +4 -4
  84. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  85. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +12 -12
  86. package/dist/components/core/chatter/SolidMessageComposer.js +1 -1
  87. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  88. package/dist/components/core/chatter/SolidMessageComposer.tsx +7 -7
  89. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  90. package/dist/components/core/common/SolidCreateButton.js +16 -1
  91. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  92. package/dist/components/core/common/SolidCreateButton.tsx +18 -1
  93. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +60 -0
  94. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +1 -1
  95. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  96. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -2
  97. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.d.ts.map +1 -1
  98. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js +19 -1
  99. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
  100. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +16 -3
  101. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
  102. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +168 -26
  103. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  104. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +174 -10
  105. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  106. package/dist/components/core/common/SolidGlobalSearchElement.js +46 -36
  107. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  108. package/dist/components/core/common/SolidGlobalSearchElement.tsx +77 -40
  109. package/dist/components/core/common/SolidLayoutViews.js +2 -2
  110. package/dist/components/core/common/SolidLayoutViews.js.map +1 -1
  111. package/dist/components/core/common/SolidLayoutViews.tsx +4 -4
  112. package/dist/components/core/common/SolidListViewOptions.js +1 -1
  113. package/dist/components/core/common/SolidListViewOptions.js.map +1 -1
  114. package/dist/components/core/common/SolidListViewOptions.tsx +1 -1
  115. package/dist/components/core/common/SolidPasswordHelperText.js +2 -2
  116. package/dist/components/core/common/SolidPasswordHelperText.js.map +1 -1
  117. package/dist/components/core/common/SolidPasswordHelperText.tsx +4 -4
  118. package/dist/components/core/common/SolidSearchBox.js +1 -1
  119. package/dist/components/core/common/SolidSearchBox.js.map +1 -1
  120. package/dist/components/core/common/SolidSearchBox.tsx +1 -1
  121. package/dist/components/core/common/SolidXAiIframe.js +1 -1
  122. package/dist/components/core/common/SolidXAiIframe.js.map +1 -1
  123. package/dist/components/core/common/SolidXAiIframe.tsx +1 -1
  124. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js +1 -1
  125. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js.map +1 -1
  126. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx +2 -2
  127. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +2 -2
  128. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  129. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +4 -4
  130. package/dist/components/core/field/FieldListViewData.js +2 -2
  131. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  132. package/dist/components/core/field/FieldListViewData.tsx +5 -5
  133. package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
  134. package/dist/components/core/filter/fields/SolidBooleanField.js +2 -2
  135. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  136. package/dist/components/core/filter/fields/SolidBooleanField.tsx +3 -12
  137. package/dist/components/core/filter/fields/SolidDateField.js +2 -2
  138. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  139. package/dist/components/core/filter/fields/SolidDateField.tsx +3 -3
  140. package/dist/components/core/filter/fields/SolidDatetimeField.js +2 -2
  141. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  142. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +3 -3
  143. package/dist/components/core/filter/fields/SolidExternalIdField.js +2 -2
  144. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  145. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +3 -3
  146. package/dist/components/core/filter/fields/SolidIdField.js +2 -2
  147. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  148. package/dist/components/core/filter/fields/SolidIdField.tsx +2 -2
  149. package/dist/components/core/filter/fields/SolidIntField.js +2 -2
  150. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  151. package/dist/components/core/filter/fields/SolidIntField.tsx +3 -3
  152. package/dist/components/core/filter/fields/SolidMediaMultipleField.js +2 -2
  153. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  154. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +3 -3
  155. package/dist/components/core/filter/fields/SolidMediaSingleField.js +2 -2
  156. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  157. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +3 -3
  158. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +2 -2
  159. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  160. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +3 -3
  161. package/dist/components/core/filter/fields/SolidSelectionStaticField.js +2 -2
  162. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  163. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +3 -3
  164. package/dist/components/core/filter/fields/SolidShortTextField.js +2 -2
  165. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  166. package/dist/components/core/filter/fields/SolidShortTextField.tsx +3 -3
  167. package/dist/components/core/filter/fields/SolidTimeField.js +2 -2
  168. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  169. package/dist/components/core/filter/fields/SolidTimeField.tsx +3 -3
  170. package/dist/components/core/filter/fields/SolidUuidField.js +2 -2
  171. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  172. package/dist/components/core/filter/fields/SolidUuidField.tsx +4 -4
  173. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +2 -2
  174. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  175. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +3 -3
  176. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +2 -2
  177. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  178. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +3 -3
  179. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +2 -2
  180. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  181. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +3 -3
  182. package/dist/components/core/form/SolidFormActionHeader.js +8 -8
  183. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  184. package/dist/components/core/form/SolidFormActionHeader.tsx +13 -13
  185. package/dist/components/core/form/SolidFormFieldRender.js +1 -1
  186. package/dist/components/core/form/SolidFormFieldRender.js.map +1 -1
  187. package/dist/components/core/form/SolidFormFieldRender.tsx +1 -1
  188. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  189. package/dist/components/core/form/SolidFormFooter.js +12 -5
  190. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  191. package/dist/components/core/form/SolidFormFooter.tsx +14 -5
  192. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  193. package/dist/components/core/form/SolidFormView.js +200 -65
  194. package/dist/components/core/form/SolidFormView.js.map +1 -1
  195. package/dist/components/core/form/SolidFormView.tsx +188 -41
  196. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
  197. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +5 -1
  198. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  199. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +5 -1
  200. package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
  201. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +5 -1
  202. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  203. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +5 -1
  204. package/dist/components/core/form/SolidFormViewShimmerLoading.js +1 -1
  205. package/dist/components/core/form/SolidFormViewShimmerLoading.js.map +1 -1
  206. package/dist/components/core/form/SolidFormViewShimmerLoading.tsx +46 -46
  207. package/dist/components/core/form/fields/SolidBooleanField.js +3 -3
  208. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  209. package/dist/components/core/form/fields/SolidBooleanField.tsx +3 -3
  210. package/dist/components/core/form/fields/SolidComputedField.js +1 -1
  211. package/dist/components/core/form/fields/SolidComputedField.js.map +1 -1
  212. package/dist/components/core/form/fields/SolidComputedField.tsx +1 -1
  213. package/dist/components/core/form/fields/SolidDateField.js +2 -2
  214. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  215. package/dist/components/core/form/fields/SolidDateField.tsx +2 -2
  216. package/dist/components/core/form/fields/SolidDateTimeField.js +2 -2
  217. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  218. package/dist/components/core/form/fields/SolidDateTimeField.tsx +2 -2
  219. package/dist/components/core/form/fields/SolidDecimalField.js +1 -1
  220. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  221. package/dist/components/core/form/fields/SolidDecimalField.tsx +1 -1
  222. package/dist/components/core/form/fields/SolidEmailField.js +1 -1
  223. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  224. package/dist/components/core/form/fields/SolidEmailField.tsx +1 -1
  225. package/dist/components/core/form/fields/SolidIntegerField.js +3 -3
  226. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  227. package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -3
  228. package/dist/components/core/form/fields/SolidJsonField.js +3 -3
  229. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  230. package/dist/components/core/form/fields/SolidJsonField.tsx +3 -3
  231. package/dist/components/core/form/fields/SolidLongTextField.js +6 -6
  232. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  233. package/dist/components/core/form/fields/SolidLongTextField.tsx +12 -12
  234. package/dist/components/core/form/fields/SolidMediaMultipleField.js +11 -11
  235. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  236. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +28 -28
  237. package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -5
  238. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  239. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +9 -9
  240. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  241. package/dist/components/core/form/fields/SolidPasswordField.js +12 -6
  242. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  243. package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -6
  244. package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
  245. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  246. package/dist/components/core/form/fields/SolidRichTextField.tsx +2 -2
  247. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +2 -2
  248. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  249. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +2 -2
  250. package/dist/components/core/form/fields/SolidSelectionStaticField.js +1 -1
  251. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  252. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +1 -1
  253. package/dist/components/core/form/fields/SolidShortTextField.js +1 -1
  254. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  255. package/dist/components/core/form/fields/SolidShortTextField.tsx +1 -1
  256. package/dist/components/core/form/fields/SolidTimeField.js +2 -2
  257. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  258. package/dist/components/core/form/fields/SolidTimeField.tsx +2 -2
  259. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +7 -11
  260. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
  261. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +18 -63
  262. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
  263. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +63 -164
  264. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  265. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +6 -6
  266. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  267. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -36
  268. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +6 -6
  269. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  270. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +6 -6
  271. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  272. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +10 -10
  273. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  274. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +20 -25
  275. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js +1 -1
  276. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js.map +1 -1
  277. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +1 -1
  278. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js +1 -1
  279. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js.map +1 -1
  280. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +1 -1
  281. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +5 -5
  282. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  283. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +17 -17
  284. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js +1 -1
  285. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js.map +1 -1
  286. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +1 -1
  287. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js +1 -1
  288. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js.map +1 -1
  289. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +1 -1
  290. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  291. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  292. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  293. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  294. package/dist/components/core/kanban/KanbanBoard.tsx +2 -1
  295. package/dist/components/core/kanban/KanbanCard.d.ts +1 -0
  296. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  297. package/dist/components/core/kanban/KanbanCard.js +15 -4
  298. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  299. package/dist/components/core/kanban/KanbanCard.tsx +27 -4
  300. package/dist/components/core/kanban/KanbanColumn.d.ts +2 -1
  301. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  302. package/dist/components/core/kanban/KanbanColumn.js +4 -4
  303. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  304. package/dist/components/core/kanban/KanbanColumn.tsx +5 -4
  305. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  306. package/dist/components/core/kanban/SolidKanbanView.js +44 -39
  307. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  308. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -10
  309. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  310. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
  311. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  312. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +5 -1
  313. package/dist/components/core/list/ListViewRowActionPopup.js +1 -1
  314. package/dist/components/core/list/ListViewRowActionPopup.js.map +1 -1
  315. package/dist/components/core/list/ListViewRowActionPopup.tsx +1 -2
  316. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +1 -1
  317. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
  318. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +3 -3
  319. package/dist/components/core/list/SolidDataTable.js +1 -1
  320. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  321. package/dist/components/core/list/SolidDataTable.tsx +1 -1
  322. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  323. package/dist/components/core/list/SolidListView.js +14 -6
  324. package/dist/components/core/list/SolidListView.js.map +1 -1
  325. package/dist/components/core/list/SolidListView.tsx +21 -13
  326. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  327. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  328. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  329. package/dist/components/core/list/SolidListViewConfigure.tsx +5 -1
  330. package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
  331. package/dist/components/core/list/SolidListViewHeaderButton.js +5 -1
  332. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  333. package/dist/components/core/list/SolidListViewHeaderButton.tsx +5 -1
  334. package/dist/components/core/list/SolidListingHeader.js +1 -1
  335. package/dist/components/core/list/SolidListingHeader.js.map +1 -1
  336. package/dist/components/core/list/SolidListingHeader.tsx +4 -4
  337. package/dist/components/core/list/SolidTableRowCell.js +1 -1
  338. package/dist/components/core/list/SolidTableRowCell.js.map +1 -1
  339. package/dist/components/core/list/SolidTableRowCell.tsx +1 -1
  340. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +5 -5
  341. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  342. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +8 -8
  343. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +3 -3
  344. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  345. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -3
  346. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js +1 -1
  347. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js.map +1 -1
  348. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +1 -1
  349. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js +1 -1
  350. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -1
  351. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +1 -2
  352. package/dist/components/core/locales/SolidLocale.js +3 -3
  353. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  354. package/dist/components/core/locales/SolidLocale.tsx +7 -7
  355. package/dist/components/core/locales/solid-locale.css +5 -4
  356. package/dist/components/core/model/FieldMetaData.js +2 -2
  357. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  358. package/dist/components/core/model/FieldMetaData.tsx +2 -2
  359. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  360. package/dist/components/core/model/FieldMetaDataForm.js +50 -50
  361. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  362. package/dist/components/core/model/FieldMetaDataForm.tsx +74 -229
  363. package/dist/components/core/model/ModelListViewData.js +4 -4
  364. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  365. package/dist/components/core/model/ModelListViewData.tsx +7 -7
  366. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  367. package/dist/components/core/model/ModelMetaData.js +2 -2
  368. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  369. package/dist/components/core/model/ModelMetaData.tsx +3 -58
  370. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  371. package/dist/components/core/module/CreateModule.js +3 -17
  372. package/dist/components/core/module/CreateModule.js.map +1 -1
  373. package/dist/components/core/module/CreateModule.tsx +18 -32
  374. package/dist/components/core/module/ModuleListViewData.js +5 -5
  375. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  376. package/dist/components/core/module/ModuleListViewData.tsx +8 -8
  377. package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
  378. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
  379. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -1
  380. package/dist/components/core/solid-ai/SolidAiChat.module.css +2 -2
  381. package/dist/components/core/tree/SolidTreeTable.js +1 -1
  382. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  383. package/dist/components/core/tree/SolidTreeTable.tsx +1 -1
  384. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  385. package/dist/components/core/tree/SolidTreeView.js +3 -3
  386. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  387. package/dist/components/core/tree/SolidTreeView.tsx +14 -10
  388. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  389. package/dist/components/core/users/CreateUser.js +8 -10
  390. package/dist/components/core/users/CreateUser.js.map +1 -1
  391. package/dist/components/core/users/CreateUser.tsx +18 -36
  392. package/dist/components/core/users/CreateUserRole.js +2 -2
  393. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  394. package/dist/components/core/users/CreateUserRole.tsx +9 -9
  395. package/dist/components/core/users/UserListView.js +4 -4
  396. package/dist/components/core/users/UserListView.js.map +1 -1
  397. package/dist/components/core/users/UserListView.tsx +6 -6
  398. package/dist/components/layout/AdminHeaderActions.d.ts +1 -0
  399. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  400. package/dist/components/layout/AdminHeaderActions.js +1 -1
  401. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  402. package/dist/components/layout/AdminHeaderActions.tsx +1 -1
  403. package/dist/components/layout/AdminSidebar.js +1 -1
  404. package/dist/components/layout/AdminSidebar.js.map +1 -1
  405. package/dist/components/layout/AdminSidebar.tsx +1 -1
  406. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  407. package/dist/components/layout/AdminTopHeader.js +21 -3
  408. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  409. package/dist/components/layout/AdminTopHeader.tsx +64 -2
  410. package/dist/components/layout/CustomPagination.js +0 -1
  411. package/dist/components/layout/CustomPagination.js.map +1 -1
  412. package/dist/components/layout/CustomPagination.tsx +0 -1
  413. package/dist/components/layout/FilterMenu.js +1 -1
  414. package/dist/components/layout/FilterMenu.js.map +1 -1
  415. package/dist/components/layout/FilterMenu.tsx +4 -4
  416. package/dist/components/layout/Footer.js +1 -1
  417. package/dist/components/layout/Footer.js.map +1 -1
  418. package/dist/components/layout/Footer.tsx +1 -1
  419. package/dist/components/layout/GlobalSearch.js +1 -1
  420. package/dist/components/layout/GlobalSearch.js.map +1 -1
  421. package/dist/components/layout/GlobalSearch.tsx +1 -1
  422. package/dist/components/layout/ListingHeader.js +3 -3
  423. package/dist/components/layout/ListingHeader.js.map +1 -1
  424. package/dist/components/layout/ListingHeader.tsx +4 -4
  425. package/dist/components/layout/Loader.js +1 -1
  426. package/dist/components/layout/Loader.js.map +1 -1
  427. package/dist/components/layout/Loader.tsx +1 -1
  428. package/dist/components/layout/UserSidebar.js +1 -1
  429. package/dist/components/layout/UserSidebar.js.map +1 -1
  430. package/dist/components/layout/UserSidebar.tsx +1 -1
  431. package/dist/components/layout/navbar-one.js +2 -2
  432. package/dist/components/layout/navbar-one.js.map +1 -1
  433. package/dist/components/layout/navbar-one.tsx +8 -8
  434. package/dist/components/layout/navbar-two-menu.js +2 -2
  435. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  436. package/dist/components/layout/navbar-two-menu.tsx +7 -7
  437. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  438. package/dist/components/shad-cn-ui/SolidCodeEditor.js +3 -1
  439. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  440. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +3 -0
  441. package/dist/components/shad-cn-ui/SolidPopover.d.ts +1 -0
  442. package/dist/components/shad-cn-ui/SolidPopover.d.ts.map +1 -1
  443. package/dist/components/shad-cn-ui/SolidPopover.js +124 -5
  444. package/dist/components/shad-cn-ui/SolidPopover.js.map +1 -1
  445. package/dist/components/shad-cn-ui/SolidPopover.tsx +173 -10
  446. package/dist/constants/error-messages.d.ts +13 -0
  447. package/dist/constants/error-messages.d.ts.map +1 -1
  448. package/dist/constants/error-messages.js +17 -0
  449. package/dist/constants/error-messages.js.map +1 -1
  450. package/dist/constants/error-messages.ts +15 -0
  451. package/dist/resources/globals.css +32 -1
  452. package/dist/resources/solid-custom.css +6565 -0
  453. package/dist/resources/solid-primereact.css +14 -12
  454. package/dist/resources/solid-responsive.css +25 -2
  455. package/dist/resources/solid-tailwind-generated.css +1 -0
  456. package/dist/resources/solid-tailwind.css +3 -0
  457. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts +2 -0
  458. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts.map +1 -0
  459. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js +6 -0
  460. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js.map +1 -0
  461. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.tsx +5 -0
  462. package/dist/routes/pages/auth/SsoPage.js +1 -1
  463. package/dist/routes/pages/auth/SsoPage.js.map +1 -1
  464. package/dist/routes/pages/auth/SsoPage.tsx +1 -1
  465. package/dist/styles.d.ts +2 -1
  466. package/dist/styles.d.ts.map +1 -1
  467. package/dist/styles.js +2 -1
  468. package/dist/styles.js.map +1 -1
  469. package/dist/styles.ts +2 -1
  470. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleListViewData.js","sourceRoot":"","sources":["../../../../src/components/core/module/ModuleListViewData.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CreateButton } from \"../../../components/common/CreateButton\";\nimport {\n useExportModulePackageMutation,\n useDeleteMultiplemodulesMutation,\n useGenerateCodeFormoduleMutation,\n useLazyGetmodulesQuery,\n useRefreshPermissionsMutation,\n} from \"../../../redux/api/moduleApi\";\nimport Link from \"../../common/Link\";\nimport qs from \"qs\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\nimport { SolidButton, SolidDialog, SolidIcon, SolidInput, SolidSpinner } from \"../../shad-cn-ui\";\nimport { Column, DataTableStateEvent, SolidDataTable } from \"../list/SolidDataTable\";\nimport { ModulePackageDialog } from \"./ModulePackageDialog\";\n\nexport interface ModelMetaData {\n id: string;\n displayName: string;\n isSystem: boolean;\n}\n\ntype FilterMeta = Record<string, { value: string | null; matchMode: string }>;\n\nconst createDefaultFilters = (): FilterMeta => ({\n displayName: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n});\n\nexport const ModuleListViewData = () => {\n const dispatch = useDispatch();\n const [moduleMetadata, setModuleMetadata] = useState<ModelMetaData[]>([]);\n const [filters, setFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [pendingFilters, setPendingFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [first, setFirst] = useState(0);\n const [rows, setRows] = useState(25);\n const [totalRecords, setTotalRecords] = useState(0);\n const [sortField, setSortField] = useState(\"\");\n const [sortOrder, setSortOrder] = useState<1 | -1 | 0>(0);\n const [selectedMenus, setSelectedMenus] = useState<ModelMetaData[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n const [isGenerateCodeVisible, setGenerateCodeVisible] = useState(false);\n const [isModulePackageDialogOpen, setModulePackageDialogOpen] = useState(false);\n const [generateCodeForModule, setGenerateCodeForModule] = useState<string | null>(null);\n const [exportingModuleId, setExportingModuleId] = useState<string | null>(null);\n\n const [triggerGetModule, { data: module, isLoading }] = useLazyGetmodulesQuery();\n const [generateCode, { isError: isGenerateCodeError, isSuccess: isGenerateCodeSuceess, error: generateCodeError }] =\n useGenerateCodeFormoduleMutation();\n const [refreshPermission] = useRefreshPermissionsMutation();\n const [deleteManyModules] = useDeleteMultiplemodulesMutation();\n const [exportModulePackage] = useExportModulePackageMutation();\n\n useEffect(() => {\n if (module) {\n setModuleMetadata(module?.records ?? []);\n setTotalRecords(module?.meta?.totalRecords ?? 0);\n setLoading(false);\n }\n }, [module]);\n\n useEffect(() => {\n const queryData = {\n offset: 0,\n limit: rows,\n sort: [`id:desc`],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n triggerGetModule(queryString);\n setSelectedMenus([]);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const onPageChange = (event: { first: number; rows: number }) => {\n setFirst(event.first);\n setRows(event.rows);\n setQueryString(event.first, event.rows, sortField, sortOrder, filters);\n };\n\n const onSort = (event: DataTableStateEvent) => {\n const nextSortField = event.sortField ?? \"\";\n const validSortOrder = event.sortOrder === 1 || event.sortOrder === -1 ? event.sortOrder : 0;\n setSortField(nextSortField);\n setSortOrder(validSortOrder);\n setFirst(0);\n setQueryString(0, rows, nextSortField, validSortOrder, filters);\n };\n\n const setQueryString = async (\n offset?: number,\n rowCount?: number,\n field?: string,\n order?: 1 | -1 | 0,\n filterQuery?: FilterMeta\n ) => {\n const formattedFilters: Record<string, any> = {};\n\n Object.keys(filterQuery ?? {}).forEach((fieldName) => {\n const filterValue = filterQuery?.[fieldName]?.value;\n const matchMode = filterQuery?.[fieldName]?.matchMode;\n\n if (filterValue !== null && filterValue !== undefined && matchMode) {\n let operator = matchMode;\n switch (matchMode) {\n case FilterMatchMode.CONTAINS:\n operator = \"$containsi\";\n break;\n case FilterMatchMode.STARTS_WITH:\n operator = \"$startsWithi\";\n break;\n case FilterMatchMode.EQUALS:\n operator = \"$eqi\";\n break;\n case FilterMatchMode.NOT_CONTAINS:\n operator = \"$notContainsi\";\n break;\n case FilterMatchMode.NOT_EQUALS:\n operator = \"$nei\";\n break;\n case FilterMatchMode.ENDS_WITH:\n operator = \"$endsWithi\";\n break;\n default:\n operator = matchMode;\n }\n\n formattedFilters[fieldName] = { [operator]: filterValue };\n }\n });\n\n const queryData: Record<string, any> = {\n offset: offset ?? first,\n limit: rowCount ?? rows,\n filters: formattedFilters,\n };\n\n if (field) {\n queryData.sort = [`${field}:${order === 0 ? null : order === 1 ? \"asc\" : \"desc\"}`];\n }\n\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n return triggerGetModule(queryString);\n };\n\n const handleFilterInputChange = (fieldName: string, value: string) => {\n setPendingFilters((prev) => ({\n ...prev,\n [fieldName]: { ...prev[fieldName], value },\n }));\n };\n\n const applyFilters = () => {\n setFirst(0);\n setFilters(pendingFilters);\n setQueryString(0, rows, sortField, sortOrder, pendingFilters);\n };\n\n const clearFilters = () => {\n const defaults = createDefaultFilters();\n setPendingFilters(defaults);\n setFilters(defaults);\n setFirst(0);\n setQueryString(0, rows, sortField, sortOrder, defaults);\n };\n\n const deleteBulk = () => {\n const deleteList = selectedMenus.map((element) => element.id);\n deleteManyModules(deleteList);\n setDialogVisible(false);\n setSelectedMenus([]);\n };\n\n const handleGenerateCode = async () => {\n if (!generateCodeForModule) return;\n await generateCode({ id: generateCodeForModule });\n setGenerateCodeVisible(false);\n setGenerateCodeForModule(null);\n };\n\n useEffect(() => {\n if (isGenerateCodeError) {\n const errorMessage =\n generateCodeError && typeof generateCodeError === \"object\" && \"data\" in generateCodeError && \"message\" in (generateCodeError as any).data\n ? (generateCodeError as any).data.message\n : \"Something went wrong\";\n const detail = Array.isArray(errorMessage) ? errorMessage.join(\", \") : String(errorMessage);\n dispatch(showToast({ severity: \"error\", summary: \"Error\", detail }));\n }\n }, [dispatch, isGenerateCodeError, generateCodeError]);\n\n useEffect(() => {\n if (isGenerateCodeSuceess) {\n dispatch(showToast({ severity: \"success\", summary: \"Success\", detail: \"Code Generated Successfully\" }));\n }\n }, [dispatch, isGenerateCodeSuceess]);\n\n const handleRefreshPermission = () => {\n refreshPermission(\"\");\n };\n\n const handleExportModule = async (moduleId: string) => {\n try {\n setExportingModuleId(moduleId);\n const response = await exportModulePackage({ moduleName: moduleId }).unwrap();\n const fileUrl = window.URL.createObjectURL(response.blob);\n const link = document.createElement(\"a\");\n link.href = fileUrl;\n link.download = response.fileName || `${moduleId}.sldx`;\n document.body.appendChild(link);\n link.click();\n link.remove();\n window.URL.revokeObjectURL(fileUrl);\n dispatch(showToast({ severity: \"success\", summary: \"Export started\", detail: `${moduleId} was packaged as a .sldx archive.` }));\n } catch (error: any) {\n const detail = error?.data?.message || error?.message || \"Unable to export the selected module.\";\n dispatch(showToast({ severity: \"error\", summary: \"Export failed\", detail: String(detail) }));\n } finally {\n setExportingModuleId(null);\n }\n };\n\n const detailsBodyTemplate = (record: ModelMetaData) => (\n <Link\n href={`${record.id}`}\n rel=\"noopener noreferrer\"\n className=\"text-sm font-bold p-0\"\n style={{ color: \"#12415D\" }}\n >\n {record.isSystem ? (\n <SolidIcon name=\"si-eye\" style={{ fontSize: \"1rem\" }} aria-hidden />\n ) : (\n <SolidIcon name=\"si-pencil\" style={{ fontSize: \"1rem\" }} aria-hidden />\n )}\n </Link>\n );\n\n const generateCodeBodyTemplate = (record: ModelMetaData) => {\n if (record.isSystem) return null;\n return (\n <button\n type=\"button\"\n className=\"text-primary border-0 bg-transparent cursor-pointer\"\n onClick={() => {\n setGenerateCodeForModule(record.id);\n setGenerateCodeVisible(true);\n }}\n >\n <SolidIcon name=\"si-cog\" style={{ fontSize: \"1rem\" }} aria-hidden />\n </button>\n );\n };\n\n const exportBodyTemplate = (record: ModelMetaData) => (\n <button\n type=\"button\"\n className=\"text-primary border-0 bg-transparent cursor-pointer disabled:opacity-50\"\n onClick={() => handleExportModule(record.id)}\n disabled={exportingModuleId === record.id}\n title=\"Export module package\"\n >\n {exportingModuleId === record.id ? (\n <SolidSpinner size={16} />\n ) : (\n <SolidIcon name=\"si-download\" style={{ fontSize: \"1rem\" }} aria-hidden />\n )}\n </button>\n );\n\n return (\n <div className=\"solid-module-list w-full\">\n <div className=\"flex gap-3 mb-4 align-items-center flex-wrap\">\n <CreateButton />\n <SolidButton\n className=\"small-button\"\n onClick={() => setModulePackageDialogOpen(true)}\n label=\"Import Module\"\n icon=\"si-upload\"\n iconPos=\"left\"\n />\n <SolidButton className=\"small-button\" onClick={handleRefreshPermission} label=\"Refresh Permissions\" />\n {selectedMenus.length > 0 && (\n <SolidButton\n type=\"button\"\n label=\"Delete\"\n size=\"small\"\n severity=\"danger\"\n className=\"small-button\"\n onClick={() => setDialogVisible(true)}\n />\n )}\n </div>\n\n <div className=\"flex flex-column md:flex-row align-items-start gap-3 mb-3\">\n <SolidInput\n value={pendingFilters.displayName.value ?? \"\"}\n onChange={(event) => handleFilterInputChange(\"displayName\", event.currentTarget.value)}\n placeholder=\"Search module by name\"\n className=\"w-full md:w-20rem\"\n />\n <div className=\"flex align-items-center gap-2\">\n <SolidButton size=\"small\" onClick={applyFilters} label=\"Apply\" />\n <SolidButton size=\"small\" variant=\"ghost\" onClick={clearFilters} label=\"Clear\" />\n </div>\n </div>\n\n {(loading || isLoading) && (\n <div className=\"flex justify-content-center my-3\">\n <SolidSpinner />\n </div>\n )}\n\n <SolidDataTable\n value={moduleMetadata}\n size=\"small\"\n paginator\n rows={rows}\n rowsPerPageOptions={[10, 25, 50]}\n dataKey=\"id\"\n emptyMessage=\"No Modules found\"\n totalRecords={totalRecords}\n first={first}\n onPage={onPageChange}\n onSort={onSort}\n sortField={sortField}\n sortOrder={sortOrder}\n selection={selectedMenus}\n onSelectionChange={({ value }) => setSelectedMenus(value)}\n >\n <Column selectionMode=\"multiple\" headerStyle={{ width: \"3em\" }} />\n <Column field=\"id\" header=\"Id\" className=\"text-sm\" sortable headerClassName=\"table-header-fs\" />\n <Column\n field=\"displayName\"\n header=\"Display Name\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column header=\"Edit\" body={detailsBodyTemplate} />\n <Column header=\"Code\" body={generateCodeBodyTemplate} />\n <Column header=\"Export\" body={exportBodyTemplate} />\n </SolidDataTable>\n\n <SolidDialog\n visible={isDialogVisible}\n header=\"Confirm Delete\"\n modal\n className=\"solid-confirm-dialog\"\n onHide={() => setDialogVisible(false)}\n >\n <p>Are you sure you want to delete the selected Modules?</p>\n <div className=\"flex justify-content-center gap-3 mt-3\">\n <SolidButton label=\"Yes\" className=\"small-button\" severity=\"danger\" autoFocus onClick={deleteBulk} />\n <SolidButton label=\"No\" className=\"small-button\" variant=\"ghost\" onClick={() => setDialogVisible(false)} />\n </div>\n </SolidDialog>\n\n <SolidDialog\n visible={isGenerateCodeVisible}\n header=\"Generate Code\"\n modal\n className=\"solid-confirm-dialog\"\n onHide={() => {\n setGenerateCodeVisible(false);\n setGenerateCodeForModule(null);\n }}\n >\n <p className=\"text-center\">Proceed with module code generation? Existing files will be overwritten.</p>\n <div className=\"flex justify-content-center gap-3 mt-3\">\n <SolidButton label=\"Yes\" className=\"small-button\" severity=\"danger\" autoFocus onClick={handleGenerateCode} />\n <SolidButton label=\"No\" className=\"small-button\" variant=\"ghost\" onClick={() => setGenerateCodeVisible(false)} />\n </div>\n </SolidDialog>\n\n <ModulePackageDialog\n open={isModulePackageDialogOpen}\n onOpenChange={setModulePackageDialogOpen}\n onImported={() => {\n setQueryString(first, rows, sortField, sortOrder, filters);\n }}\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"ModuleListViewData.js","sourceRoot":"","sources":["../../../../src/components/core/module/ModuleListViewData.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CreateButton } from \"../../../components/common/CreateButton\";\nimport {\n useExportModulePackageMutation,\n useDeleteMultiplemodulesMutation,\n useGenerateCodeFormoduleMutation,\n useLazyGetmodulesQuery,\n useRefreshPermissionsMutation,\n} from \"../../../redux/api/moduleApi\";\nimport Link from \"../../common/Link\";\nimport qs from \"qs\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\nimport { SolidButton, SolidDialog, SolidIcon, SolidInput, SolidSpinner } from \"../../shad-cn-ui\";\nimport { Column, DataTableStateEvent, SolidDataTable } from \"../list/SolidDataTable\";\nimport { ModulePackageDialog } from \"./ModulePackageDialog\";\n\nexport interface ModelMetaData {\n id: string;\n displayName: string;\n isSystem: boolean;\n}\n\ntype FilterMeta = Record<string, { value: string | null; matchMode: string }>;\n\nconst createDefaultFilters = (): FilterMeta => ({\n displayName: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n});\n\nexport const ModuleListViewData = () => {\n const dispatch = useDispatch();\n const [moduleMetadata, setModuleMetadata] = useState<ModelMetaData[]>([]);\n const [filters, setFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [pendingFilters, setPendingFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [first, setFirst] = useState(0);\n const [rows, setRows] = useState(25);\n const [totalRecords, setTotalRecords] = useState(0);\n const [sortField, setSortField] = useState(\"\");\n const [sortOrder, setSortOrder] = useState<1 | -1 | 0>(0);\n const [selectedMenus, setSelectedMenus] = useState<ModelMetaData[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n const [isGenerateCodeVisible, setGenerateCodeVisible] = useState(false);\n const [isModulePackageDialogOpen, setModulePackageDialogOpen] = useState(false);\n const [generateCodeForModule, setGenerateCodeForModule] = useState<string | null>(null);\n const [exportingModuleId, setExportingModuleId] = useState<string | null>(null);\n\n const [triggerGetModule, { data: module, isLoading }] = useLazyGetmodulesQuery();\n const [generateCode, { isError: isGenerateCodeError, isSuccess: isGenerateCodeSuceess, error: generateCodeError }] =\n useGenerateCodeFormoduleMutation();\n const [refreshPermission] = useRefreshPermissionsMutation();\n const [deleteManyModules] = useDeleteMultiplemodulesMutation();\n const [exportModulePackage] = useExportModulePackageMutation();\n\n useEffect(() => {\n if (module) {\n setModuleMetadata(module?.records ?? []);\n setTotalRecords(module?.meta?.totalRecords ?? 0);\n setLoading(false);\n }\n }, [module]);\n\n useEffect(() => {\n const queryData = {\n offset: 0,\n limit: rows,\n sort: [`id:desc`],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n triggerGetModule(queryString);\n setSelectedMenus([]);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const onPageChange = (event: { first: number; rows: number }) => {\n setFirst(event.first);\n setRows(event.rows);\n setQueryString(event.first, event.rows, sortField, sortOrder, filters);\n };\n\n const onSort = (event: DataTableStateEvent) => {\n const nextSortField = event.sortField ?? \"\";\n const validSortOrder = event.sortOrder === 1 || event.sortOrder === -1 ? event.sortOrder : 0;\n setSortField(nextSortField);\n setSortOrder(validSortOrder);\n setFirst(0);\n setQueryString(0, rows, nextSortField, validSortOrder, filters);\n };\n\n const setQueryString = async (\n offset?: number,\n rowCount?: number,\n field?: string,\n order?: 1 | -1 | 0,\n filterQuery?: FilterMeta\n ) => {\n const formattedFilters: Record<string, any> = {};\n\n Object.keys(filterQuery ?? {}).forEach((fieldName) => {\n const filterValue = filterQuery?.[fieldName]?.value;\n const matchMode = filterQuery?.[fieldName]?.matchMode;\n\n if (filterValue !== null && filterValue !== undefined && matchMode) {\n let operator = matchMode;\n switch (matchMode) {\n case FilterMatchMode.CONTAINS:\n operator = \"$containsi\";\n break;\n case FilterMatchMode.STARTS_WITH:\n operator = \"$startsWithi\";\n break;\n case FilterMatchMode.EQUALS:\n operator = \"$eqi\";\n break;\n case FilterMatchMode.NOT_CONTAINS:\n operator = \"$notContainsi\";\n break;\n case FilterMatchMode.NOT_EQUALS:\n operator = \"$nei\";\n break;\n case FilterMatchMode.ENDS_WITH:\n operator = \"$endsWithi\";\n break;\n default:\n operator = matchMode;\n }\n\n formattedFilters[fieldName] = { [operator]: filterValue };\n }\n });\n\n const queryData: Record<string, any> = {\n offset: offset ?? first,\n limit: rowCount ?? rows,\n filters: formattedFilters,\n };\n\n if (field) {\n queryData.sort = [`${field}:${order === 0 ? null : order === 1 ? \"asc\" : \"desc\"}`];\n }\n\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n return triggerGetModule(queryString);\n };\n\n const handleFilterInputChange = (fieldName: string, value: string) => {\n setPendingFilters((prev) => ({\n ...prev,\n [fieldName]: { ...prev[fieldName], value },\n }));\n };\n\n const applyFilters = () => {\n setFirst(0);\n setFilters(pendingFilters);\n setQueryString(0, rows, sortField, sortOrder, pendingFilters);\n };\n\n const clearFilters = () => {\n const defaults = createDefaultFilters();\n setPendingFilters(defaults);\n setFilters(defaults);\n setFirst(0);\n setQueryString(0, rows, sortField, sortOrder, defaults);\n };\n\n const deleteBulk = () => {\n const deleteList = selectedMenus.map((element) => element.id);\n deleteManyModules(deleteList);\n setDialogVisible(false);\n setSelectedMenus([]);\n };\n\n const handleGenerateCode = async () => {\n if (!generateCodeForModule) return;\n await generateCode({ id: generateCodeForModule });\n setGenerateCodeVisible(false);\n setGenerateCodeForModule(null);\n };\n\n useEffect(() => {\n if (isGenerateCodeError) {\n const errorMessage =\n generateCodeError && typeof generateCodeError === \"object\" && \"data\" in generateCodeError && \"message\" in (generateCodeError as any).data\n ? (generateCodeError as any).data.message\n : \"Something went wrong\";\n const detail = Array.isArray(errorMessage) ? errorMessage.join(\", \") : String(errorMessage);\n dispatch(showToast({ severity: \"error\", summary: \"Error\", detail }));\n }\n }, [dispatch, isGenerateCodeError, generateCodeError]);\n\n useEffect(() => {\n if (isGenerateCodeSuceess) {\n dispatch(showToast({ severity: \"success\", summary: \"Success\", detail: \"Code Generated Successfully\" }));\n }\n }, [dispatch, isGenerateCodeSuceess]);\n\n const handleRefreshPermission = () => {\n refreshPermission(\"\");\n };\n\n const handleExportModule = async (moduleId: string) => {\n try {\n setExportingModuleId(moduleId);\n const response = await exportModulePackage({ moduleName: moduleId }).unwrap();\n const fileUrl = window.URL.createObjectURL(response.blob);\n const link = document.createElement(\"a\");\n link.href = fileUrl;\n link.download = response.fileName || `${moduleId}.sldx`;\n document.body.appendChild(link);\n link.click();\n link.remove();\n window.URL.revokeObjectURL(fileUrl);\n dispatch(showToast({ severity: \"success\", summary: \"Export started\", detail: `${moduleId} was packaged as a .sldx archive.` }));\n } catch (error: any) {\n const detail = error?.data?.message || error?.message || \"Unable to export the selected module.\";\n dispatch(showToast({ severity: \"error\", summary: \"Export failed\", detail: String(detail) }));\n } finally {\n setExportingModuleId(null);\n }\n };\n\n const detailsBodyTemplate = (record: ModelMetaData) => (\n <Link\n href={`${record.id}`}\n rel=\"noopener noreferrer\"\n className=\"text-sm font-bold p-0\"\n style={{ color: \"#12415D\" }}\n >\n {record.isSystem ? (\n <SolidIcon name=\"si-eye\" style={{ fontSize: \"1rem\" }} aria-hidden />\n ) : (\n <SolidIcon name=\"si-pencil\" style={{ fontSize: \"1rem\" }} aria-hidden />\n )}\n </Link>\n );\n\n const generateCodeBodyTemplate = (record: ModelMetaData) => {\n if (record.isSystem) return null;\n return (\n <button\n type=\"button\"\n className=\"border-0 bg-transparent text-[var(--primary-color)] cursor-pointer\"\n onClick={() => {\n setGenerateCodeForModule(record.id);\n setGenerateCodeVisible(true);\n }}\n >\n <SolidIcon name=\"si-cog\" style={{ fontSize: \"1rem\" }} aria-hidden />\n </button>\n );\n };\n\n const exportBodyTemplate = (record: ModelMetaData) => (\n <button\n type=\"button\"\n className=\"border-0 bg-transparent text-[var(--primary-color)] cursor-pointer disabled:opacity-50\"\n onClick={() => handleExportModule(record.id)}\n disabled={exportingModuleId === record.id}\n title=\"Export module package\"\n >\n {exportingModuleId === record.id ? (\n <SolidSpinner size={16} />\n ) : (\n <SolidIcon name=\"si-download\" style={{ fontSize: \"1rem\" }} aria-hidden />\n )}\n </button>\n );\n\n return (\n <div className=\"solid-module-list w-full\">\n <div className=\"flex gap-4 mb-6 items-center flex-wrap\">\n <CreateButton />\n <SolidButton\n className=\"small-button\"\n onClick={() => setModulePackageDialogOpen(true)}\n label=\"Import Module\"\n icon=\"si-upload\"\n iconPos=\"left\"\n />\n <SolidButton className=\"small-button\" onClick={handleRefreshPermission} label=\"Refresh Permissions\" />\n {selectedMenus.length > 0 && (\n <SolidButton\n type=\"button\"\n label=\"Delete\"\n size=\"small\"\n severity=\"danger\"\n className=\"small-button\"\n onClick={() => setDialogVisible(true)}\n />\n )}\n </div>\n\n <div className=\"flex flex-col md:flex-row items-start gap-4 mb-4\">\n <SolidInput\n value={pendingFilters.displayName.value ?? \"\"}\n onChange={(event) => handleFilterInputChange(\"displayName\", event.currentTarget.value)}\n placeholder=\"Search module by name\"\n className=\"w-full md:w-20rem\"\n />\n <div className=\"flex items-center gap-2\">\n <SolidButton size=\"small\" onClick={applyFilters} label=\"Apply\" />\n <SolidButton size=\"small\" variant=\"ghost\" onClick={clearFilters} label=\"Clear\" />\n </div>\n </div>\n\n {(loading || isLoading) && (\n <div className=\"flex justify-center my-4\">\n <SolidSpinner />\n </div>\n )}\n\n <SolidDataTable\n value={moduleMetadata}\n size=\"small\"\n paginator\n rows={rows}\n rowsPerPageOptions={[10, 25, 50]}\n dataKey=\"id\"\n emptyMessage=\"No Modules found\"\n totalRecords={totalRecords}\n first={first}\n onPage={onPageChange}\n onSort={onSort}\n sortField={sortField}\n sortOrder={sortOrder}\n selection={selectedMenus}\n onSelectionChange={({ value }) => setSelectedMenus(value)}\n >\n <Column selectionMode=\"multiple\" headerStyle={{ width: \"3em\" }} />\n <Column field=\"id\" header=\"Id\" className=\"text-sm\" sortable headerClassName=\"table-header-fs\" />\n <Column\n field=\"displayName\"\n header=\"Display Name\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column header=\"Edit\" body={detailsBodyTemplate} />\n <Column header=\"Code\" body={generateCodeBodyTemplate} />\n <Column header=\"Export\" body={exportBodyTemplate} />\n </SolidDataTable>\n\n <SolidDialog\n visible={isDialogVisible}\n header=\"Confirm Delete\"\n modal\n className=\"solid-confirm-dialog\"\n onHide={() => setDialogVisible(false)}\n >\n <p>Are you sure you want to delete the selected Modules?</p>\n <div className=\"flex justify-center gap-4 mt-4\">\n <SolidButton label=\"Yes\" className=\"small-button\" severity=\"danger\" autoFocus onClick={deleteBulk} />\n <SolidButton label=\"No\" className=\"small-button\" variant=\"ghost\" onClick={() => setDialogVisible(false)} />\n </div>\n </SolidDialog>\n\n <SolidDialog\n visible={isGenerateCodeVisible}\n header=\"Generate Code\"\n modal\n className=\"solid-confirm-dialog\"\n onHide={() => {\n setGenerateCodeVisible(false);\n setGenerateCodeForModule(null);\n }}\n >\n <p className=\"text-center\">Proceed with module code generation? Existing files will be overwritten.</p>\n <div className=\"flex justify-center gap-4 mt-4\">\n <SolidButton label=\"Yes\" className=\"small-button\" severity=\"danger\" autoFocus onClick={handleGenerateCode} />\n <SolidButton label=\"No\" className=\"small-button\" variant=\"ghost\" onClick={() => setGenerateCodeVisible(false)} />\n </div>\n </SolidDialog>\n\n <ModulePackageDialog\n open={isModulePackageDialogOpen}\n onOpenChange={setModulePackageDialogOpen}\n onImported={() => {\n setQueryString(first, rows, sortField, sortOrder, filters);\n }}\n />\n </div>\n );\n};\n"]}
@@ -240,7 +240,7 @@ export const ModuleListViewData = () => {
240
240
  return (
241
241
  <button
242
242
  type="button"
243
- className="text-primary border-0 bg-transparent cursor-pointer"
243
+ className="border-0 bg-transparent text-[var(--primary-color)] cursor-pointer"
244
244
  onClick={() => {
245
245
  setGenerateCodeForModule(record.id);
246
246
  setGenerateCodeVisible(true);
@@ -254,7 +254,7 @@ export const ModuleListViewData = () => {
254
254
  const exportBodyTemplate = (record: ModelMetaData) => (
255
255
  <button
256
256
  type="button"
257
- className="text-primary border-0 bg-transparent cursor-pointer disabled:opacity-50"
257
+ className="border-0 bg-transparent text-[var(--primary-color)] cursor-pointer disabled:opacity-50"
258
258
  onClick={() => handleExportModule(record.id)}
259
259
  disabled={exportingModuleId === record.id}
260
260
  title="Export module package"
@@ -269,7 +269,7 @@ export const ModuleListViewData = () => {
269
269
 
270
270
  return (
271
271
  <div className="solid-module-list w-full">
272
- <div className="flex gap-3 mb-4 align-items-center flex-wrap">
272
+ <div className="flex gap-4 mb-6 items-center flex-wrap">
273
273
  <CreateButton />
274
274
  <SolidButton
275
275
  className="small-button"
@@ -291,21 +291,21 @@ export const ModuleListViewData = () => {
291
291
  )}
292
292
  </div>
293
293
 
294
- <div className="flex flex-column md:flex-row align-items-start gap-3 mb-3">
294
+ <div className="flex flex-col md:flex-row items-start gap-4 mb-4">
295
295
  <SolidInput
296
296
  value={pendingFilters.displayName.value ?? ""}
297
297
  onChange={(event) => handleFilterInputChange("displayName", event.currentTarget.value)}
298
298
  placeholder="Search module by name"
299
299
  className="w-full md:w-20rem"
300
300
  />
301
- <div className="flex align-items-center gap-2">
301
+ <div className="flex items-center gap-2">
302
302
  <SolidButton size="small" onClick={applyFilters} label="Apply" />
303
303
  <SolidButton size="small" variant="ghost" onClick={clearFilters} label="Clear" />
304
304
  </div>
305
305
  </div>
306
306
 
307
307
  {(loading || isLoading) && (
308
- <div className="flex justify-content-center my-3">
308
+ <div className="flex justify-center my-4">
309
309
  <SolidSpinner />
310
310
  </div>
311
311
  )}
@@ -350,7 +350,7 @@ export const ModuleListViewData = () => {
350
350
  onHide={() => setDialogVisible(false)}
351
351
  >
352
352
  <p>Are you sure you want to delete the selected Modules?</p>
353
- <div className="flex justify-content-center gap-3 mt-3">
353
+ <div className="flex justify-center gap-4 mt-4">
354
354
  <SolidButton label="Yes" className="small-button" severity="danger" autoFocus onClick={deleteBulk} />
355
355
  <SolidButton label="No" className="small-button" variant="ghost" onClick={() => setDialogVisible(false)} />
356
356
  </div>
@@ -367,7 +367,7 @@ export const ModuleListViewData = () => {
367
367
  }}
368
368
  >
369
369
  <p className="text-center">Proceed with module code generation? Existing files will be overwritten.</p>
370
- <div className="flex justify-content-center gap-3 mt-3">
370
+ <div className="flex justify-center gap-4 mt-4">
371
371
  <SolidButton label="Yes" className="small-button" severity="danger" autoFocus onClick={handleGenerateCode} />
372
372
  <SolidButton label="No" className="small-button" variant="ghost" onClick={() => setGenerateCodeVisible(false)} />
373
373
  </div>
@@ -661,6 +661,6 @@ export function ModuleMetadataExplorer(_a) {
661
661
  if (!moduleName) {
662
662
  return null;
663
663
  }
664
- return (_jsxs("div", { className: "solid-module-explorer", children: [_jsxs("div", { className: "solid-module-explorer-panel", children: [loadError && (_jsx("div", { className: "solid-module-explorer-alert", children: _jsx(SolidMessage, { severity: "error", text: "Unable to load metadata explorer: ".concat(extractApiErrorMessage(loadError)), className: "justify-content-start" }) })), _jsxs("div", { ref: explorerRef, className: "solid-module-explorer-workspace", style: { gridTemplateColumns: "".concat(sidebarWidth, "px 8px minmax(0, 1fr)") }, children: [_jsx("aside", { className: "solid-module-explorer-sidebar", children: _jsxs("div", { className: "solid-module-explorer-sidebar-section solid-module-explorer-sidebar-sections", children: [_jsxs("div", { className: "solid-module-explorer-sidebar-heading", children: [_jsxs("div", { className: "solid-module-explorer-sidebar-heading-main", children: [_jsx("div", { className: "solid-module-explorer-sidebar-title", children: modelSingularName ? "Explorer" : "Sections" }), _jsx(SolidTag, { tone: "info", children: modelSingularName ? scopedTreeNodes.length : sections.length })] }), _jsx("button", { type: "button", className: "solid-module-explorer-sidebar-action", onClick: handleCollapseAll, children: "Collapse all" })] }), _jsxs("div", { className: "solid-module-explorer-sidebar-search", children: [_jsx(SolidInput, { value: treeFilter, onChange: function (event) { return setTreeFilter(event.target.value); }, placeholder: "Search metadata tree" }), _jsx("div", { className: "solid-module-explorer-sidebar-search-icon", children: _jsx(Search, { size: 14 }) })] }), _jsx("div", { className: "solid-module-explorer-section-list solid-module-explorer-tree-list", children: _jsx(MetadataTree, { nodes: filteredTreeNodes, activePath: activePath, expandedPaths: visibleExpandedPaths, onToggle: toggleExpandedPath, onSelect: selectPath }) })] }) }), _jsx("div", { className: "solid-module-explorer-resizer", role: "separator", "aria-orientation": "vertical", "aria-label": "Resize metadata navigation panel", onPointerDown: handleSidebarResizeStart }), _jsxs("section", { className: "solid-module-explorer-main", children: [_jsxs("div", { className: "solid-module-explorer-main-header", children: [_jsxs("div", { className: "solid-module-explorer-main-title", children: [_jsxs("div", { className: "solid-module-explorer-main-heading-row", children: [_jsx("h4", { children: (_j = (_h = activeNode === null || activeNode === void 0 ? void 0 : activeNode.label) !== null && _h !== void 0 ? _h : activeSection === null || activeSection === void 0 ? void 0 : activeSection.title) !== null && _j !== void 0 ? _j : "Metadata" }), _jsx("p", { children: activePath || "Choose a metadata node from the tree." })] }), hasValidationFailure && (_jsx("div", { className: "solid-module-explorer-inline-validation", title: validationSummary, children: validationSummary })), isReadOnlyExplorer && (_jsx("div", { className: "solid-module-explorer-readonly-note", children: "This metadata is browse-only in the explorer." }))] }), _jsxs("div", { className: "solid-module-explorer-main-actions", children: [_jsxs("div", { className: "solid-module-explorer-main-meta", children: [hasMutableChanges && _jsx(SolidTag, { tone: "warn", children: "Unsaved changes" }), editorError && _jsx(SolidTag, { tone: "danger", children: "Invalid JSON" }), isReadOnlyExplorer && _jsx(SolidTag, { tone: "info", children: "Read only" })] }), !isReadOnlyExplorer && (_jsx(SolidButton, { size: "sm", leftIcon: _jsx(Save, { size: 14 }), onClick: handleSave, loading: isSavingSection, disabled: !canSave, children: "Save Section" })), _jsxs(SolidDropdownMenu, { children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx(SolidButton, { variant: "ghost", size: "sm", className: "solid-icon-button", "aria-label": "Explorer actions", children: _jsx(Settings, { size: 16 }) }) }), _jsxs(SolidDropdownMenuContent, { className: "solid-module-explorer-actions-menu", children: [!isReadOnlyExplorer && (_jsx(SolidDropdownMenuItem, { onSelect: handleFormat, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(Wand2, { size: 14 }), _jsx("span", { children: "Format" })] }) })), _jsx(SolidDropdownMenuItem, { onSelect: handleValidate, disabled: isValidatingSection, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(FileSearch, { size: 14 }), _jsx("span", { children: isValidatingSection ? "Validating..." : "Validate" })] }) }), _jsx(SolidDropdownMenuItem, { onSelect: function () { return setIsContextDialogOpen(true); }, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(Settings, { size: 14 }), _jsx("span", { children: "Context" })] }) }), allowSeed && (_jsx(SolidDropdownMenuItem, { onSelect: function () { return setIsSeedDialogOpen(true); }, disabled: !moduleId || isSeedingModule, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(DatabaseZap, { size: 14 }), _jsx("span", { children: isSeedingModule ? "Seeding..." : "Seed" })] }) }))] })] })] })] }), _jsx("div", { className: "solid-module-explorer-editor-wrap", children: _jsx("div", { className: "solid-module-explorer-editor-shell", children: isDocumentLoading ? (_jsx("div", { style: { padding: "1rem" }, className: "solid-module-explorer-empty", children: "Loading metadata JSON..." })) : (_jsx(JsonEditorSurface, { ref: editorRef, value: savedValue, resetToken: editorResetToken, readOnly: isReadOnlyExplorer, onValueChange: setEditorValue, onErrorChange: setEditorError })) }) })] })] })] }), _jsx(SolidDialog, { open: isContextDialogOpen, onOpenChange: setIsContextDialogOpen, header: "Context", contentClassName: "solid-module-explorer-context-dialog", children: _jsx(SolidDialogBody, { children: _jsxs("div", { className: "solid-module-explorer-context-dialog-body", children: [_jsxs("div", { className: "solid-module-explorer-context-dialog-header", children: [_jsx("div", { className: "solid-module-explorer-context-dialog-title", children: (_k = activeNode === null || activeNode === void 0 ? void 0 : activeNode.label) !== null && _k !== void 0 ? _k : "Metadata node" }), _jsx("div", { className: "solid-module-explorer-context-dialog-meta", children: (activeNode === null || activeNode === void 0 ? void 0 : activeNode.sectionTitle) && _jsx(SolidTag, { tone: "info", children: activeNode.sectionTitle }) })] }), _jsxs("div", { className: "solid-module-explorer-context-grid", children: [_jsxs("div", { className: "solid-module-explorer-context-row", children: [_jsx("div", { className: "solid-module-explorer-context-label", children: "JSON Path" }), _jsx("div", { className: "solid-module-explorer-context-value", children: activePath || "-" })] }), _jsxs("div", { className: "solid-module-explorer-context-row", children: [_jsx("div", { className: "solid-module-explorer-context-label", children: "File" }), _jsx("div", { className: "solid-module-explorer-context-value", children: (_l = manifestData === null || manifestData === void 0 ? void 0 : manifestData.filePath) !== null && _l !== void 0 ? _l : "-" })] }), localActionSummary && (_jsxs("div", { className: "solid-module-explorer-context-row", children: [_jsx("div", { className: "solid-module-explorer-context-label", children: "Last Action" }), _jsx("div", { className: "solid-module-explorer-context-value", children: localActionSummary })] }))] }), _jsx("div", { className: "solid-module-explorer-context-note", children: "Clicking any branch or leaf in the tree opens that exact JSON fragment on the right." })] }) }) }), _jsxs(SolidDialog, { open: isSeedDialogOpen, onOpenChange: setIsSeedDialogOpen, contentClassName: "solid-module-explorer-seed-dialog", children: [_jsx(SolidDialogHeader, { children: _jsx(SolidDialogTitle, { children: "Seed Module Metadata" }) }), _jsx(SolidDialogSeparator, {}), _jsx(SolidDialogBody, { children: _jsxs("div", { className: "solid-module-explorer-seed-dialog-body", children: [_jsxs("p", { children: ["Re-seed metadata for ", _jsx("strong", { children: moduleName }), " from its JSON file?"] }), _jsx("p", { className: "solid-module-explorer-seed-dialog-note", children: "This only re-runs metadata seeding for the current module and refreshes database metadata from the module JSON." })] }) }), _jsxs(SolidDialogFooter, { children: [_jsx(SolidButton, { variant: "outline", size: "sm", onClick: function () { return setIsSeedDialogOpen(false); }, disabled: isSeedingModule, children: "Cancel" }), _jsx(SolidButton, { size: "sm", onClick: handleSeedModule, loading: isSeedingModule, disabled: !moduleId, children: "Seed" })] })] })] }));
664
+ return (_jsxs("div", { className: "solid-module-explorer", children: [_jsxs("div", { className: "solid-module-explorer-panel", children: [loadError && (_jsx("div", { className: "solid-module-explorer-alert", children: _jsx(SolidMessage, { severity: "error", text: "Unable to load metadata explorer: ".concat(extractApiErrorMessage(loadError)), className: "justify-start" }) })), _jsxs("div", { ref: explorerRef, className: "solid-module-explorer-workspace", style: { gridTemplateColumns: "".concat(sidebarWidth, "px 8px minmax(0, 1fr)") }, children: [_jsx("aside", { className: "solid-module-explorer-sidebar", children: _jsxs("div", { className: "solid-module-explorer-sidebar-section solid-module-explorer-sidebar-sections", children: [_jsxs("div", { className: "solid-module-explorer-sidebar-heading", children: [_jsxs("div", { className: "solid-module-explorer-sidebar-heading-main", children: [_jsx("div", { className: "solid-module-explorer-sidebar-title", children: modelSingularName ? "Explorer" : "Sections" }), _jsx(SolidTag, { tone: "info", children: modelSingularName ? scopedTreeNodes.length : sections.length })] }), _jsx("button", { type: "button", className: "solid-module-explorer-sidebar-action", onClick: handleCollapseAll, children: "Collapse all" })] }), _jsxs("div", { className: "solid-module-explorer-sidebar-search", children: [_jsx(SolidInput, { value: treeFilter, onChange: function (event) { return setTreeFilter(event.target.value); }, placeholder: "Search metadata tree" }), _jsx("div", { className: "solid-module-explorer-sidebar-search-icon", children: _jsx(Search, { size: 14 }) })] }), _jsx("div", { className: "solid-module-explorer-section-list solid-module-explorer-tree-list", children: _jsx(MetadataTree, { nodes: filteredTreeNodes, activePath: activePath, expandedPaths: visibleExpandedPaths, onToggle: toggleExpandedPath, onSelect: selectPath }) })] }) }), _jsx("div", { className: "solid-module-explorer-resizer", role: "separator", "aria-orientation": "vertical", "aria-label": "Resize metadata navigation panel", onPointerDown: handleSidebarResizeStart }), _jsxs("section", { className: "solid-module-explorer-main", children: [_jsxs("div", { className: "solid-module-explorer-main-header", children: [_jsxs("div", { className: "solid-module-explorer-main-title", children: [_jsxs("div", { className: "solid-module-explorer-main-heading-row", children: [_jsx("h4", { children: (_j = (_h = activeNode === null || activeNode === void 0 ? void 0 : activeNode.label) !== null && _h !== void 0 ? _h : activeSection === null || activeSection === void 0 ? void 0 : activeSection.title) !== null && _j !== void 0 ? _j : "Metadata" }), _jsx("p", { children: activePath || "Choose a metadata node from the tree." })] }), hasValidationFailure && (_jsx("div", { className: "solid-module-explorer-inline-validation", title: validationSummary, children: validationSummary })), isReadOnlyExplorer && (_jsx("div", { className: "solid-module-explorer-readonly-note", children: "This metadata is browse-only in the explorer." }))] }), _jsxs("div", { className: "solid-module-explorer-main-actions", children: [_jsxs("div", { className: "solid-module-explorer-main-meta", children: [hasMutableChanges && _jsx(SolidTag, { tone: "warn", children: "Unsaved changes" }), editorError && _jsx(SolidTag, { tone: "danger", children: "Invalid JSON" }), isReadOnlyExplorer && _jsx(SolidTag, { tone: "info", children: "Read only" })] }), !isReadOnlyExplorer && (_jsx(SolidButton, { size: "sm", leftIcon: _jsx(Save, { size: 14 }), onClick: handleSave, loading: isSavingSection, disabled: !canSave, children: "Save Section" })), _jsxs(SolidDropdownMenu, { children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx(SolidButton, { variant: "ghost", size: "sm", className: "solid-icon-button", "aria-label": "Explorer actions", children: _jsx(Settings, { size: 16 }) }) }), _jsxs(SolidDropdownMenuContent, { className: "solid-module-explorer-actions-menu", children: [!isReadOnlyExplorer && (_jsx(SolidDropdownMenuItem, { onSelect: handleFormat, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(Wand2, { size: 14 }), _jsx("span", { children: "Format" })] }) })), _jsx(SolidDropdownMenuItem, { onSelect: handleValidate, disabled: isValidatingSection, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(FileSearch, { size: 14 }), _jsx("span", { children: isValidatingSection ? "Validating..." : "Validate" })] }) }), _jsx(SolidDropdownMenuItem, { onSelect: function () { return setIsContextDialogOpen(true); }, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(Settings, { size: 14 }), _jsx("span", { children: "Context" })] }) }), allowSeed && (_jsx(SolidDropdownMenuItem, { onSelect: function () { return setIsSeedDialogOpen(true); }, disabled: !moduleId || isSeedingModule, children: _jsxs("div", { className: "solid-module-explorer-actions-item", children: [_jsx(DatabaseZap, { size: 14 }), _jsx("span", { children: isSeedingModule ? "Seeding..." : "Seed" })] }) }))] })] })] })] }), _jsx("div", { className: "solid-module-explorer-editor-wrap", children: _jsx("div", { className: "solid-module-explorer-editor-shell", children: isDocumentLoading ? (_jsx("div", { style: { padding: "1rem" }, className: "solid-module-explorer-empty", children: "Loading metadata JSON..." })) : (_jsx(JsonEditorSurface, { ref: editorRef, value: savedValue, resetToken: editorResetToken, readOnly: isReadOnlyExplorer, onValueChange: setEditorValue, onErrorChange: setEditorError })) }) })] })] })] }), _jsx(SolidDialog, { open: isContextDialogOpen, onOpenChange: setIsContextDialogOpen, header: "Context", contentClassName: "solid-module-explorer-context-dialog", children: _jsx(SolidDialogBody, { children: _jsxs("div", { className: "solid-module-explorer-context-dialog-body", children: [_jsxs("div", { className: "solid-module-explorer-context-dialog-header", children: [_jsx("div", { className: "solid-module-explorer-context-dialog-title", children: (_k = activeNode === null || activeNode === void 0 ? void 0 : activeNode.label) !== null && _k !== void 0 ? _k : "Metadata node" }), _jsx("div", { className: "solid-module-explorer-context-dialog-meta", children: (activeNode === null || activeNode === void 0 ? void 0 : activeNode.sectionTitle) && _jsx(SolidTag, { tone: "info", children: activeNode.sectionTitle }) })] }), _jsxs("div", { className: "solid-module-explorer-context-grid", children: [_jsxs("div", { className: "solid-module-explorer-context-row", children: [_jsx("div", { className: "solid-module-explorer-context-label", children: "JSON Path" }), _jsx("div", { className: "solid-module-explorer-context-value", children: activePath || "-" })] }), _jsxs("div", { className: "solid-module-explorer-context-row", children: [_jsx("div", { className: "solid-module-explorer-context-label", children: "File" }), _jsx("div", { className: "solid-module-explorer-context-value", children: (_l = manifestData === null || manifestData === void 0 ? void 0 : manifestData.filePath) !== null && _l !== void 0 ? _l : "-" })] }), localActionSummary && (_jsxs("div", { className: "solid-module-explorer-context-row", children: [_jsx("div", { className: "solid-module-explorer-context-label", children: "Last Action" }), _jsx("div", { className: "solid-module-explorer-context-value", children: localActionSummary })] }))] }), _jsx("div", { className: "solid-module-explorer-context-note", children: "Clicking any branch or leaf in the tree opens that exact JSON fragment on the right." })] }) }) }), _jsxs(SolidDialog, { open: isSeedDialogOpen, onOpenChange: setIsSeedDialogOpen, contentClassName: "solid-module-explorer-seed-dialog", children: [_jsx(SolidDialogHeader, { children: _jsx(SolidDialogTitle, { children: "Seed Module Metadata" }) }), _jsx(SolidDialogSeparator, {}), _jsx(SolidDialogBody, { children: _jsxs("div", { className: "solid-module-explorer-seed-dialog-body", children: [_jsxs("p", { children: ["Re-seed metadata for ", _jsx("strong", { children: moduleName }), " from its JSON file?"] }), _jsx("p", { className: "solid-module-explorer-seed-dialog-note", children: "This only re-runs metadata seeding for the current module and refreshes database metadata from the module JSON." })] }) }), _jsxs(SolidDialogFooter, { children: [_jsx(SolidButton, { variant: "outline", size: "sm", onClick: function () { return setIsSeedDialogOpen(false); }, disabled: isSeedingModule, children: "Cancel" }), _jsx(SolidButton, { size: "sm", onClick: handleSeedModule, loading: isSeedingModule, disabled: !moduleId, children: "Seed" })] })] })] }));
665
665
  }
666
666
  //# sourceMappingURL=ModuleMetadataExplorer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleMetadataExplorer.js","sourceRoot":"","sources":["../../../../src/components/core/module/ModuleMetadataExplorer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ChevronDown, ChevronRight, DatabaseZap, FileSearch, Save, Search, Settings, Wand2 } from \"lucide-react\";\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport {\n useGetModuleMetadataExplorerDocumentQuery,\n useGetModuleMetadataExplorerManifestQuery,\n useSeedModuleMetadataMutation,\n useUpdateModuleMetadataExplorerSectionMutation,\n useValidateModuleMetadataExplorerSectionMutation,\n} from \"../../../redux/api/moduleApi\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidInput,\n SolidMessage,\n SolidTag,\n} from \"../../shad-cn-ui\";\nimport \"jsoneditor/dist/jsoneditor.css\";\nimport \"./ModuleMetadataExplorer.css\";\n\ntype ModuleMetadataExplorerProps = {\n moduleName?: string;\n moduleId?: number;\n modelSingularName?: string;\n scopedArrayPath?: string;\n scopedItemValue?: string;\n scopedItemField?: string;\n readOnly?: boolean;\n allowSeed?: boolean;\n};\n\ntype MetadataIssue = {\n path: string;\n message: string;\n severity: \"error\" | \"warning\";\n};\n\ntype ExplorerSectionDefinition = {\n key: string;\n title: string;\n jsonPath: string;\n type: \"object\" | \"array\";\n description: string;\n};\n\ntype ExplorerTreeNode = {\n id: string;\n label: string;\n path: string;\n parentPath: string | null;\n sectionKey: string;\n sectionTitle: string;\n children: ExplorerTreeNode[];\n};\n\ntype JsonEditorHandle = {\n format: () => void;\n};\n\nfunction extractApiErrorMessage(error: any) {\n const message = error?.data?.message ?? error?.message ?? \"Something went wrong\";\n return Array.isArray(message) ? message.join(\", \") : String(message);\n}\n\nfunction serializeJson(value: any) {\n try {\n return JSON.stringify(value);\n } catch (_error) {\n return \"\";\n }\n}\n\nfunction deepCloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction humanizeKey(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/^./, (char) => char.toUpperCase());\n}\n\nfunction tokenizePath(path: string) {\n const tokens: Array<string | number> = [];\n const regex = /([^[.\\]]+)|\\[(\\d+)\\]/g;\n let match: RegExpExecArray | null;\n while ((match = regex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n tokens.push(match[1]);\n } else if (match[2] !== undefined) {\n tokens.push(Number(match[2]));\n }\n }\n return tokens;\n}\n\nfunction getValueAtJsonPath(source: any, path: string) {\n if (!path) return source;\n return tokenizePath(path).reduce((current, token) => {\n if (current === undefined || current === null) return undefined;\n return current[token as keyof typeof current];\n }, source);\n}\n\nfunction setValueAtJsonPath(target: any, path: string, value: any) {\n const tokens = tokenizePath(path);\n if (!tokens.length) return;\n\n let current = target;\n for (let index = 0; index < tokens.length - 1; index += 1) {\n current = current[tokens[index] as keyof typeof current];\n }\n\n current[tokens[tokens.length - 1] as keyof typeof current] = value;\n}\n\nfunction appendPath(basePath: string, key: string) {\n return basePath ? `${basePath}.${key}` : key;\n}\n\nfunction getArrayItemLabel(item: any, index: number, parentKey: string) {\n const labelCandidates = [\n \"singularName\",\n \"name\",\n \"displayName\",\n \"pluralName\",\n \"label\",\n \"key\",\n \"title\",\n \"id\",\n ];\n\n for (const candidate of labelCandidates) {\n const nextValue = item?.[candidate];\n if (nextValue !== undefined && nextValue !== null && `${nextValue}`.trim()) {\n return `${nextValue}`;\n }\n }\n\n return `${humanizeKey(parentKey || \"Item\")} ${index + 1}`;\n}\n\nfunction buildTreeNode(\n value: any,\n options: {\n label: string;\n path: string;\n parentPath: string | null;\n sectionKey: string;\n sectionTitle: string;\n hintKey: string;\n },\n): ExplorerTreeNode {\n const { label, path, parentPath, sectionKey, sectionTitle, hintKey } = options;\n\n let children: ExplorerTreeNode[] = [];\n\n if (Array.isArray(value)) {\n children = value\n .filter((item) => item !== null && typeof item === \"object\")\n .map((item, index) => buildTreeNode(item, {\n label: getArrayItemLabel(item, index, hintKey),\n path: `${path}[${index}]`,\n parentPath: path,\n sectionKey,\n sectionTitle,\n hintKey,\n }));\n } else if (value && typeof value === \"object\") {\n children = Object.entries(value)\n .filter(([, nextValue]) => nextValue !== null && typeof nextValue === \"object\")\n .map(([key, nextValue]) => buildTreeNode(nextValue, {\n label: humanizeKey(key),\n path: appendPath(path, key),\n parentPath: path,\n sectionKey,\n sectionTitle,\n hintKey: key,\n }));\n }\n\n return {\n id: path,\n label,\n path,\n parentPath,\n sectionKey,\n sectionTitle,\n children,\n };\n}\n\nfunction buildTreeFromDocument(sections: ExplorerSectionDefinition[], documentValue: any) {\n const nodes = sections\n .map((section) => {\n const sectionValue = getValueAtJsonPath(documentValue, section.jsonPath);\n if (sectionValue === undefined) return null;\n return buildTreeNode(sectionValue, {\n label: section.title,\n path: section.jsonPath,\n parentPath: null,\n sectionKey: section.key,\n sectionTitle: section.title,\n hintKey: section.key,\n });\n })\n .filter(Boolean) as ExplorerTreeNode[];\n\n const nodeMap = new Map<string, ExplorerTreeNode>();\n const visit = (nextNodes: ExplorerTreeNode[]) => {\n nextNodes.forEach((node) => {\n nodeMap.set(node.path, node);\n if (node.children.length) visit(node.children);\n });\n };\n visit(nodes);\n\n return { nodes, nodeMap };\n}\n\nfunction filterTreeNodes(nodes: ExplorerTreeNode[], query: string): ExplorerTreeNode[] {\n const needle = query.trim().toLowerCase();\n if (!needle) return nodes;\n\n const visit = (node: ExplorerTreeNode): ExplorerTreeNode | null => {\n const filteredChildren = node.children\n .map(visit)\n .filter(Boolean) as ExplorerTreeNode[];\n const matches = node.label.toLowerCase().includes(needle) || node.path.toLowerCase().includes(needle);\n\n if (matches || filteredChildren.length) {\n return { ...node, children: filteredChildren };\n }\n\n return null;\n };\n\n return nodes.map(visit).filter(Boolean) as ExplorerTreeNode[];\n}\n\nfunction getAncestorPaths(nodeMap: Map<string, ExplorerTreeNode>, path: string) {\n const paths: string[] = [];\n let current = nodeMap.get(path);\n\n while (current?.parentPath) {\n paths.push(current.parentPath);\n current = nodeMap.get(current.parentPath);\n }\n\n return paths;\n}\n\nfunction getSectionForPath(sections: ExplorerSectionDefinition[], path: string) {\n return sections\n .filter((section) => path === section.jsonPath || path.startsWith(`${section.jsonPath}.`) || path.startsWith(`${section.jsonPath}[`))\n .sort((left, right) => right.jsonPath.length - left.jsonPath.length)[0] ?? null;\n}\n\nfunction filterIssuesForPath(issues: MetadataIssue[], path: string) {\n return issues.filter((issue) => {\n if (!issue.path) return false;\n return issue.path === path || issue.path.startsWith(`${path}.`) || issue.path.startsWith(`${path}[`);\n });\n}\n\nconst JsonEditorSurface = React.forwardRef<JsonEditorHandle, {\n value: any;\n resetToken: string;\n readOnly?: boolean;\n onValueChange: (value: any) => void;\n onErrorChange: (message: string | null) => void;\n}>(function JsonEditorSurface({ value, resetToken, readOnly = false, onValueChange, onErrorChange }, ref) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const editorRef = useRef<any>(null);\n // Keep a ref to the latest value so the async init can seed the editor correctly\n const latestValueRef = useRef<any>(value);\n\n // Sync latest value into ref so async editor init can use it\n useEffect(() => { latestValueRef.current = value; }, [value]);\n\n const emitState = () => {\n const editor = editorRef.current;\n if (!editor) return;\n\n try {\n const nextValue = editor.get();\n onValueChange(nextValue);\n onErrorChange(null);\n } catch (error: any) {\n onErrorChange(error?.message ? String(error.message) : \"The JSON is currently invalid.\");\n }\n };\n\n useImperativeHandle(ref, () => ({\n format() {\n try {\n editorRef.current?.format?.();\n } catch (_error) {\n // jsoneditor already surfaces parse states through onErrorChange\n }\n emitState();\n },\n }), []);\n\n useEffect(() => {\n if (!containerRef.current || editorRef.current) return;\n\n let destroyed = false;\n\n // @ts-ignore\n void import(\"jsoneditor\").then((jsonEditorModule: any) => {\n if (destroyed || !containerRef.current || editorRef.current) {\n return;\n }\n\n const JSONEditor = jsonEditorModule?.default ?? jsonEditorModule;\n editorRef.current = new JSONEditor(containerRef.current, {\n mode: \"code\",\n modes: [\"code\"],\n mainMenuBar: true,\n navigationBar: true,\n statusBar: true,\n search: true,\n enableSort: false,\n enableTransform: false,\n onChange: () => emitState(),\n });\n\n // Seed editor with current value (which may already be set before async init resolved)\n try { editorRef.current.set(latestValueRef.current); } catch (_e) {}\n emitState();\n\n if (editorRef.current?.aceEditor?.setReadOnly) {\n editorRef.current.aceEditor.setReadOnly(readOnly);\n }\n });\n\n return () => {\n destroyed = true;\n editorRef.current?.destroy?.();\n editorRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.set(value);\n emitState();\n }, [resetToken, value]);\n\n useEffect(() => {\n if (!editorRef.current?.aceEditor?.setReadOnly) return;\n editorRef.current.aceEditor.setReadOnly(readOnly);\n }, [readOnly]);\n\n return <div ref={containerRef} className={`solid-module-explorer-editor-host solid-module-explorer-jsoneditor ${readOnly ? \"is-readonly\" : \"\"}`} />;\n});\n\nfunction MetadataTree({\n nodes,\n activePath,\n expandedPaths,\n onToggle,\n onSelect,\n depth = 0,\n}: {\n nodes: ExplorerTreeNode[];\n activePath: string;\n expandedPaths: Set<string>;\n onToggle: (path: string) => void;\n onSelect: (path: string) => void;\n depth?: number;\n}) {\n return (\n <>\n {nodes.map((node) => {\n const isExpanded = expandedPaths.has(node.path);\n const hasChildren = node.children.length > 0;\n const isActive = activePath === node.path;\n\n return (\n <div key={node.id} className=\"solid-module-explorer-tree-node\">\n <div\n className={`solid-module-explorer-tree-row ${isActive ? \"is-active\" : \"\"}`}\n style={{ paddingLeft: `${depth * 0.9}rem` }}\n >\n <button\n type=\"button\"\n className=\"solid-module-explorer-tree-toggle\"\n onClick={() => hasChildren && onToggle(node.path)}\n aria-label={hasChildren ? (isExpanded ? \"Collapse node\" : \"Expand node\") : \"Leaf node\"}\n disabled={!hasChildren}\n >\n {hasChildren ? (isExpanded ? <ChevronDown size={14} /> : <ChevronRight size={14} />) : <span className=\"solid-module-explorer-tree-dot\" />}\n </button>\n <button\n type=\"button\"\n className=\"solid-module-explorer-tree-label\"\n onClick={() => onSelect(node.path)}\n title={node.path}\n >\n {node.label}\n </button>\n </div>\n\n {hasChildren && isExpanded && (\n <MetadataTree\n nodes={node.children}\n activePath={activePath}\n expandedPaths={expandedPaths}\n onToggle={onToggle}\n onSelect={onSelect}\n depth={depth + 1}\n />\n )}\n </div>\n );\n })}\n </>\n );\n}\n\nexport function ModuleMetadataExplorer({\n moduleName,\n moduleId,\n modelSingularName,\n scopedArrayPath,\n scopedItemValue,\n scopedItemField,\n readOnly = false,\n allowSeed = true,\n}: ModuleMetadataExplorerProps) {\n const dispatch = useDispatch();\n const editorRef = useRef<JsonEditorHandle | null>(null);\n const explorerRef = useRef<HTMLDivElement | null>(null);\n const isResizingRef = useRef(false);\n const [activePath, setActivePath] = useState(\"\");\n const [expandedPaths, setExpandedPaths] = useState<Set<string>>(new Set());\n const [treeFilter, setTreeFilter] = useState(\"\");\n const [sidebarWidth, setSidebarWidth] = useState(280);\n const [editorValue, setEditorValue] = useState<any>({});\n const [savedValue, setSavedValue] = useState<any>({});\n const [editorError, setEditorError] = useState<string | null>(null);\n const [editorResetToken, setEditorResetToken] = useState(\"initial\");\n const [validationIssues, setValidationIssues] = useState<MetadataIssue[] | null>(null);\n const [localActionSummary, setLocalActionSummary] = useState(\"\");\n const [isContextDialogOpen, setIsContextDialogOpen] = useState(false);\n const [isSeedDialogOpen, setIsSeedDialogOpen] = useState(false);\n\n const {\n data: manifestData,\n error: manifestError,\n refetch: refetchManifest,\n } = useGetModuleMetadataExplorerManifestQuery(moduleName as string, {\n skip: !moduleName,\n });\n\n const {\n data: documentData,\n isLoading: isDocumentLoading,\n error: documentError,\n refetch: refetchDocument,\n } = useGetModuleMetadataExplorerDocumentQuery(moduleName as string, {\n skip: !moduleName,\n });\n\n const [updateSection, { isLoading: isSavingSection }] = useUpdateModuleMetadataExplorerSectionMutation();\n const [validateSection, { isLoading: isValidatingSection }] = useValidateModuleMetadataExplorerSectionMutation();\n const [seedModuleMetadata, { isLoading: isSeedingModule }] = useSeedModuleMetadataMutation();\n const isReadOnlyExplorer = readOnly || moduleName?.toLowerCase() === \"solid-core\";\n\n const sections = (manifestData?.sections ?? []) as ExplorerSectionDefinition[];\n const fullDocument = documentData?.value ?? {};\n const loadError = !manifestData || !documentData ? (manifestError ?? documentError) : null;\n\n const { nodes: treeNodes, nodeMap } = useMemo(\n () => buildTreeFromDocument(sections, fullDocument),\n [sections, fullDocument],\n );\n\n const scopedRootPath = useMemo(() => {\n // Scope to a specific model definition\n if (modelSingularName) {\n const models = getValueAtJsonPath(fullDocument, \"moduleMetadata.models\");\n if (!Array.isArray(models)) return \"\";\n const modelIndex = models.findIndex((model) => model?.singularName === modelSingularName);\n return modelIndex >= 0 ? `moduleMetadata.models[${modelIndex}]` : \"\";\n }\n // Scope to a specific item in a root-level array (e.g. views, actions, menus)\n if (scopedArrayPath && scopedItemValue) {\n const arr = getValueAtJsonPath(fullDocument, scopedArrayPath);\n if (!Array.isArray(arr)) return \"\";\n const matchField = scopedItemField ?? \"name\";\n const itemIndex = arr.findIndex((item) => item?.[matchField] === scopedItemValue);\n return itemIndex >= 0 ? `${scopedArrayPath}[${itemIndex}]` : \"\";\n }\n return \"\";\n }, [fullDocument, modelSingularName, scopedArrayPath, scopedItemValue, scopedItemField]);\n\n const scopedTreeNodes = useMemo(() => {\n if (!scopedRootPath) return treeNodes;\n const scopedNode = nodeMap.get(scopedRootPath);\n return scopedNode ? [scopedNode] : [];\n }, [nodeMap, scopedRootPath, treeNodes]);\n\n const filteredTreeNodes = useMemo(\n () => filterTreeNodes(scopedTreeNodes, treeFilter),\n [scopedTreeNodes, treeFilter],\n );\n\n const visibleExpandedPaths = useMemo(() => {\n if (!treeFilter.trim()) return expandedPaths;\n const nextExpanded = new Set<string>();\n const visit = (nodesToVisit: ExplorerTreeNode[]) => {\n nodesToVisit.forEach((node) => {\n if (node.children.length) {\n nextExpanded.add(node.path);\n visit(node.children);\n }\n });\n };\n visit(filteredTreeNodes);\n return nextExpanded;\n }, [expandedPaths, filteredTreeNodes, treeFilter]);\n\n const activeNode = activePath ? nodeMap.get(activePath) ?? null : null;\n const activeSection = activePath ? getSectionForPath(sections, activePath) : null;\n const activeValidationIssues = filterIssuesForPath(validationIssues ?? [], activePath);\n const savedSerialized = serializeJson(savedValue);\n const editorSerialized = serializeJson(editorValue);\n const isDirty = editorError ? true : savedSerialized !== editorSerialized;\n const hasMutableChanges = !isReadOnlyExplorer && isDirty;\n const canSave = !isReadOnlyExplorer && isDirty && !editorError;\n const hasValidationFailure = Boolean(editorError) || activeValidationIssues.length > 0;\n const validationSummary = editorError\n ? editorError\n : activeValidationIssues.length\n ? `${activeValidationIssues.length} validation issue${activeValidationIssues.length === 1 ? \"\" : \"s\"}: ${activeValidationIssues[0]?.message ?? \"Review this JSON before saving.\"}`\n : \"\";\n\n useEffect(() => {\n setValidationIssues(documentData?.validation?.issues ?? []);\n }, [documentData?.lastModifiedAt]);\n\n useEffect(() => {\n const handlePointerMove = (event: PointerEvent) => {\n if (!isResizingRef.current || !explorerRef.current) return;\n const bounds = explorerRef.current.getBoundingClientRect();\n const nextWidth = Math.min(Math.max(event.clientX - bounds.left, 220), 520);\n setSidebarWidth(nextWidth);\n };\n\n const handlePointerUp = () => {\n isResizingRef.current = false;\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, []);\n\n useEffect(() => {\n if (!scopedTreeNodes.length) return;\n\n const isPathInsideScope =\n !scopedRootPath ||\n activePath === scopedRootPath ||\n activePath.startsWith(`${scopedRootPath}.`) ||\n activePath.startsWith(`${scopedRootPath}[`);\n\n if (!activePath || !nodeMap.has(activePath) || !isPathInsideScope) {\n const defaultPath = scopedTreeNodes[0].path;\n setActivePath(defaultPath);\n setExpandedPaths(new Set([defaultPath]));\n }\n }, [activePath, nodeMap, scopedRootPath, scopedTreeNodes]);\n\n useEffect(() => {\n if (!activePath) return;\n const nextValue = getValueAtJsonPath(fullDocument, activePath);\n if (nextValue === undefined) return;\n setSavedValue(nextValue);\n setEditorValue(nextValue);\n setEditorError(null);\n setEditorResetToken(`${activePath}:${documentData?.lastModifiedAt ?? \"\"}`);\n }, [activePath, documentData?.lastModifiedAt, fullDocument]);\n\n const showErrorToast = (error: any) => {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Metadata Explorer\",\n detail: extractApiErrorMessage(error),\n life: 4000,\n }));\n };\n\n const toggleExpandedPath = (path: string) => {\n setExpandedPaths((current) => {\n const next = new Set(current);\n if (next.has(path)) {\n next.delete(path);\n } else {\n next.add(path);\n }\n return next;\n });\n };\n\n const selectPath = (path: string) => {\n if (path === activePath) return;\n if (!isReadOnlyExplorer && isDirty) {\n const shouldProceed = window.confirm(\"You have unsaved metadata changes. Switch nodes and discard them?\");\n if (!shouldProceed) return;\n }\n\n const ancestorPaths = getAncestorPaths(nodeMap, path);\n setExpandedPaths((current) => {\n const next = new Set(current);\n ancestorPaths.forEach((ancestorPath) => next.add(ancestorPath));\n return next;\n });\n setActivePath(path);\n };\n\n const handleSidebarResizeStart = () => {\n isResizingRef.current = true;\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n };\n\n const handleCollapseAll = () => {\n setExpandedPaths(new Set());\n };\n\n const handleFormat = () => {\n editorRef.current?.format();\n };\n\n const buildPatchedDocument = () => {\n const nextDocument = deepCloneJson(fullDocument);\n setValueAtJsonPath(nextDocument, activePath, editorValue);\n return nextDocument;\n };\n\n const buildPatchedSectionValue = () => {\n if (!activeSection) return undefined;\n return getValueAtJsonPath(buildPatchedDocument(), activeSection.jsonPath);\n };\n\n const handleValidate = async () => {\n if (!moduleName || !activePath || !activeSection) return;\n\n if (editorError) {\n setLocalActionSummary(\"Validation blocked because the JSON is currently invalid.\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Metadata Explorer\",\n detail: \"Fix the invalid JSON before validating.\",\n life: 3500,\n }));\n return;\n }\n\n try {\n const response: any = await validateSection({\n moduleName,\n sectionKey: activeSection.key,\n value: buildPatchedSectionValue(),\n }).unwrap();\n\n setValidationIssues(response?.issues ?? []);\n setLocalActionSummary(response?.valid ? \"Validation passed for the current JSON fragment.\" : \"Validation reported issues for the current JSON fragment.\");\n dispatch(showToast({\n severity: response?.valid ? \"success\" : \"warn\",\n summary: \"Metadata Explorer\",\n detail: response?.valid ? \"Validation passed.\" : \"Validation reported issues.\",\n life: 3000,\n }));\n } catch (error) {\n showErrorToast(error);\n }\n };\n\n const handleSave = async () => {\n if (!moduleName || !activePath || !activeSection) return;\n\n if (editorError) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Metadata Explorer\",\n detail: \"Fix the invalid JSON before saving.\",\n life: 3500,\n }));\n return;\n }\n\n try {\n const response: any = await updateSection({\n moduleName,\n sectionKey: activeSection.key,\n value: buildPatchedSectionValue(),\n }).unwrap();\n\n setValidationIssues(response?.validation?.issues ?? []);\n setLocalActionSummary(\"JSON fragment saved to the metadata file.\");\n dispatch(showToast({\n severity: \"success\",\n summary: \"Metadata Explorer\",\n detail: \"Metadata saved successfully.\",\n life: 3000,\n }));\n refetchManifest();\n refetchDocument();\n } catch (error) {\n showErrorToast(error);\n }\n };\n\n const handleSeedModule = async () => {\n if (!moduleId) return;\n\n try {\n const response: any = await seedModuleMetadata({ id: moduleId }).unwrap();\n setIsSeedDialogOpen(false);\n setLocalActionSummary(response?.message ?? `Seeded metadata for module ${moduleName}.`);\n dispatch(showToast({\n severity: \"success\",\n summary: \"Metadata Explorer\",\n detail: response?.message ?? \"Module metadata seeded successfully.\",\n life: 3000,\n }));\n refetchManifest();\n refetchDocument();\n } catch (error) {\n showErrorToast(error);\n }\n };\n\n if (!moduleName) {\n return null;\n }\n\n return (\n <div className=\"solid-module-explorer\">\n <div className=\"solid-module-explorer-panel\">\n {loadError && (\n <div className=\"solid-module-explorer-alert\">\n <SolidMessage\n severity=\"error\"\n text={`Unable to load metadata explorer: ${extractApiErrorMessage(loadError)}`}\n className=\"justify-content-start\"\n />\n </div>\n )}\n\n <div\n ref={explorerRef}\n className=\"solid-module-explorer-workspace\"\n style={{ gridTemplateColumns: `${sidebarWidth}px 8px minmax(0, 1fr)` }}\n >\n <aside className=\"solid-module-explorer-sidebar\">\n <div className=\"solid-module-explorer-sidebar-section solid-module-explorer-sidebar-sections\">\n <div className=\"solid-module-explorer-sidebar-heading\">\n <div className=\"solid-module-explorer-sidebar-heading-main\">\n <div className=\"solid-module-explorer-sidebar-title\">{modelSingularName ? \"Explorer\" : \"Sections\"}</div>\n <SolidTag tone=\"info\">{modelSingularName ? scopedTreeNodes.length : sections.length}</SolidTag>\n </div>\n <button\n type=\"button\"\n className=\"solid-module-explorer-sidebar-action\"\n onClick={handleCollapseAll}\n >\n Collapse all\n </button>\n </div>\n\n <div className=\"solid-module-explorer-sidebar-search\">\n <SolidInput\n value={treeFilter}\n onChange={(event) => setTreeFilter(event.target.value)}\n placeholder=\"Search metadata tree\"\n />\n <div className=\"solid-module-explorer-sidebar-search-icon\">\n <Search size={14} />\n </div>\n </div>\n\n <div className=\"solid-module-explorer-section-list solid-module-explorer-tree-list\">\n <MetadataTree\n nodes={filteredTreeNodes}\n activePath={activePath}\n expandedPaths={visibleExpandedPaths}\n onToggle={toggleExpandedPath}\n onSelect={selectPath}\n />\n </div>\n </div>\n </aside>\n\n <div\n className=\"solid-module-explorer-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize metadata navigation panel\"\n onPointerDown={handleSidebarResizeStart}\n />\n\n <section className=\"solid-module-explorer-main\">\n <div className=\"solid-module-explorer-main-header\">\n <div className=\"solid-module-explorer-main-title\">\n <div className=\"solid-module-explorer-main-heading-row\">\n <h4>{activeNode?.label ?? activeSection?.title ?? \"Metadata\"}</h4>\n <p>{activePath || \"Choose a metadata node from the tree.\"}</p>\n </div>\n {hasValidationFailure && (\n <div className=\"solid-module-explorer-inline-validation\" title={validationSummary}>\n {validationSummary}\n </div>\n )}\n {isReadOnlyExplorer && (\n <div className=\"solid-module-explorer-readonly-note\">\n This metadata is browse-only in the explorer.\n </div>\n )}\n </div>\n <div className=\"solid-module-explorer-main-actions\">\n <div className=\"solid-module-explorer-main-meta\">\n {hasMutableChanges && <SolidTag tone=\"warn\">Unsaved changes</SolidTag>}\n {editorError && <SolidTag tone=\"danger\">Invalid JSON</SolidTag>}\n {isReadOnlyExplorer && <SolidTag tone=\"info\">Read only</SolidTag>}\n </div>\n {!isReadOnlyExplorer && (\n <SolidButton\n size=\"sm\"\n leftIcon={<Save size={14} />}\n onClick={handleSave}\n loading={isSavingSection}\n disabled={!canSave}\n >\n Save Section\n </SolidButton>\n )}\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n aria-label=\"Explorer actions\"\n >\n <Settings size={16} />\n </SolidButton>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-module-explorer-actions-menu\">\n {!isReadOnlyExplorer && (\n <SolidDropdownMenuItem onSelect={handleFormat}>\n <div className=\"solid-module-explorer-actions-item\">\n <Wand2 size={14} />\n <span>Format</span>\n </div>\n </SolidDropdownMenuItem>\n )}\n <SolidDropdownMenuItem onSelect={handleValidate} disabled={isValidatingSection}>\n <div className=\"solid-module-explorer-actions-item\">\n <FileSearch size={14} />\n <span>{isValidatingSection ? \"Validating...\" : \"Validate\"}</span>\n </div>\n </SolidDropdownMenuItem>\n <SolidDropdownMenuItem onSelect={() => setIsContextDialogOpen(true)}>\n <div className=\"solid-module-explorer-actions-item\">\n <Settings size={14} />\n <span>Context</span>\n </div>\n </SolidDropdownMenuItem>\n {allowSeed && (\n <SolidDropdownMenuItem onSelect={() => setIsSeedDialogOpen(true)} disabled={!moduleId || isSeedingModule}>\n <div className=\"solid-module-explorer-actions-item\">\n <DatabaseZap size={14} />\n <span>{isSeedingModule ? \"Seeding...\" : \"Seed\"}</span>\n </div>\n </SolidDropdownMenuItem>\n )}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n </div>\n\n <div className=\"solid-module-explorer-editor-wrap\">\n <div className=\"solid-module-explorer-editor-shell\">\n {isDocumentLoading ? (\n <div style={{ padding: \"1rem\" }} className=\"solid-module-explorer-empty\">\n Loading metadata JSON...\n </div>\n ) : (\n <JsonEditorSurface\n ref={editorRef}\n value={savedValue}\n resetToken={editorResetToken}\n readOnly={isReadOnlyExplorer}\n onValueChange={setEditorValue}\n onErrorChange={setEditorError}\n />\n )}\n </div>\n </div>\n </section>\n </div>\n </div>\n\n <SolidDialog\n open={isContextDialogOpen}\n onOpenChange={setIsContextDialogOpen}\n header=\"Context\"\n contentClassName=\"solid-module-explorer-context-dialog\"\n >\n <SolidDialogBody>\n <div className=\"solid-module-explorer-context-dialog-body\">\n <div className=\"solid-module-explorer-context-dialog-header\">\n <div className=\"solid-module-explorer-context-dialog-title\">\n {activeNode?.label ?? \"Metadata node\"}\n </div>\n <div className=\"solid-module-explorer-context-dialog-meta\">\n {activeNode?.sectionTitle && <SolidTag tone=\"info\">{activeNode.sectionTitle}</SolidTag>}\n </div>\n </div>\n\n <div className=\"solid-module-explorer-context-grid\">\n <div className=\"solid-module-explorer-context-row\">\n <div className=\"solid-module-explorer-context-label\">JSON Path</div>\n <div className=\"solid-module-explorer-context-value\">{activePath || \"-\"}</div>\n </div>\n <div className=\"solid-module-explorer-context-row\">\n <div className=\"solid-module-explorer-context-label\">File</div>\n <div className=\"solid-module-explorer-context-value\">{manifestData?.filePath ?? \"-\"}</div>\n </div>\n {localActionSummary && (\n <div className=\"solid-module-explorer-context-row\">\n <div className=\"solid-module-explorer-context-label\">Last Action</div>\n <div className=\"solid-module-explorer-context-value\">{localActionSummary}</div>\n </div>\n )}\n </div>\n\n <div className=\"solid-module-explorer-context-note\">\n Clicking any branch or leaf in the tree opens that exact JSON fragment on the right.\n </div>\n </div>\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog\n open={isSeedDialogOpen}\n onOpenChange={setIsSeedDialogOpen}\n contentClassName=\"solid-module-explorer-seed-dialog\"\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Seed Module Metadata</SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <div className=\"solid-module-explorer-seed-dialog-body\">\n <p>\n Re-seed metadata for <strong>{moduleName}</strong> from its JSON file?\n </p>\n <p className=\"solid-module-explorer-seed-dialog-note\">\n This only re-runs metadata seeding for the current module and refreshes database metadata from the module JSON.\n </p>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setIsSeedDialogOpen(false)} disabled={isSeedingModule}>\n Cancel\n </SolidButton>\n <SolidButton size=\"sm\" onClick={handleSeedModule} loading={isSeedingModule} disabled={!moduleId}>\n Seed\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"ModuleMetadataExplorer.js","sourceRoot":"","sources":["../../../../src/components/core/module/ModuleMetadataExplorer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ChevronDown, ChevronRight, DatabaseZap, FileSearch, Save, Search, Settings, Wand2 } from \"lucide-react\";\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport {\n useGetModuleMetadataExplorerDocumentQuery,\n useGetModuleMetadataExplorerManifestQuery,\n useSeedModuleMetadataMutation,\n useUpdateModuleMetadataExplorerSectionMutation,\n useValidateModuleMetadataExplorerSectionMutation,\n} from \"../../../redux/api/moduleApi\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidInput,\n SolidMessage,\n SolidTag,\n} from \"../../shad-cn-ui\";\nimport \"jsoneditor/dist/jsoneditor.css\";\nimport \"./ModuleMetadataExplorer.css\";\n\ntype ModuleMetadataExplorerProps = {\n moduleName?: string;\n moduleId?: number;\n modelSingularName?: string;\n scopedArrayPath?: string;\n scopedItemValue?: string;\n scopedItemField?: string;\n readOnly?: boolean;\n allowSeed?: boolean;\n};\n\ntype MetadataIssue = {\n path: string;\n message: string;\n severity: \"error\" | \"warning\";\n};\n\ntype ExplorerSectionDefinition = {\n key: string;\n title: string;\n jsonPath: string;\n type: \"object\" | \"array\";\n description: string;\n};\n\ntype ExplorerTreeNode = {\n id: string;\n label: string;\n path: string;\n parentPath: string | null;\n sectionKey: string;\n sectionTitle: string;\n children: ExplorerTreeNode[];\n};\n\ntype JsonEditorHandle = {\n format: () => void;\n};\n\nfunction extractApiErrorMessage(error: any) {\n const message = error?.data?.message ?? error?.message ?? \"Something went wrong\";\n return Array.isArray(message) ? message.join(\", \") : String(message);\n}\n\nfunction serializeJson(value: any) {\n try {\n return JSON.stringify(value);\n } catch (_error) {\n return \"\";\n }\n}\n\nfunction deepCloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction humanizeKey(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/^./, (char) => char.toUpperCase());\n}\n\nfunction tokenizePath(path: string) {\n const tokens: Array<string | number> = [];\n const regex = /([^[.\\]]+)|\\[(\\d+)\\]/g;\n let match: RegExpExecArray | null;\n while ((match = regex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n tokens.push(match[1]);\n } else if (match[2] !== undefined) {\n tokens.push(Number(match[2]));\n }\n }\n return tokens;\n}\n\nfunction getValueAtJsonPath(source: any, path: string) {\n if (!path) return source;\n return tokenizePath(path).reduce((current, token) => {\n if (current === undefined || current === null) return undefined;\n return current[token as keyof typeof current];\n }, source);\n}\n\nfunction setValueAtJsonPath(target: any, path: string, value: any) {\n const tokens = tokenizePath(path);\n if (!tokens.length) return;\n\n let current = target;\n for (let index = 0; index < tokens.length - 1; index += 1) {\n current = current[tokens[index] as keyof typeof current];\n }\n\n current[tokens[tokens.length - 1] as keyof typeof current] = value;\n}\n\nfunction appendPath(basePath: string, key: string) {\n return basePath ? `${basePath}.${key}` : key;\n}\n\nfunction getArrayItemLabel(item: any, index: number, parentKey: string) {\n const labelCandidates = [\n \"singularName\",\n \"name\",\n \"displayName\",\n \"pluralName\",\n \"label\",\n \"key\",\n \"title\",\n \"id\",\n ];\n\n for (const candidate of labelCandidates) {\n const nextValue = item?.[candidate];\n if (nextValue !== undefined && nextValue !== null && `${nextValue}`.trim()) {\n return `${nextValue}`;\n }\n }\n\n return `${humanizeKey(parentKey || \"Item\")} ${index + 1}`;\n}\n\nfunction buildTreeNode(\n value: any,\n options: {\n label: string;\n path: string;\n parentPath: string | null;\n sectionKey: string;\n sectionTitle: string;\n hintKey: string;\n },\n): ExplorerTreeNode {\n const { label, path, parentPath, sectionKey, sectionTitle, hintKey } = options;\n\n let children: ExplorerTreeNode[] = [];\n\n if (Array.isArray(value)) {\n children = value\n .filter((item) => item !== null && typeof item === \"object\")\n .map((item, index) => buildTreeNode(item, {\n label: getArrayItemLabel(item, index, hintKey),\n path: `${path}[${index}]`,\n parentPath: path,\n sectionKey,\n sectionTitle,\n hintKey,\n }));\n } else if (value && typeof value === \"object\") {\n children = Object.entries(value)\n .filter(([, nextValue]) => nextValue !== null && typeof nextValue === \"object\")\n .map(([key, nextValue]) => buildTreeNode(nextValue, {\n label: humanizeKey(key),\n path: appendPath(path, key),\n parentPath: path,\n sectionKey,\n sectionTitle,\n hintKey: key,\n }));\n }\n\n return {\n id: path,\n label,\n path,\n parentPath,\n sectionKey,\n sectionTitle,\n children,\n };\n}\n\nfunction buildTreeFromDocument(sections: ExplorerSectionDefinition[], documentValue: any) {\n const nodes = sections\n .map((section) => {\n const sectionValue = getValueAtJsonPath(documentValue, section.jsonPath);\n if (sectionValue === undefined) return null;\n return buildTreeNode(sectionValue, {\n label: section.title,\n path: section.jsonPath,\n parentPath: null,\n sectionKey: section.key,\n sectionTitle: section.title,\n hintKey: section.key,\n });\n })\n .filter(Boolean) as ExplorerTreeNode[];\n\n const nodeMap = new Map<string, ExplorerTreeNode>();\n const visit = (nextNodes: ExplorerTreeNode[]) => {\n nextNodes.forEach((node) => {\n nodeMap.set(node.path, node);\n if (node.children.length) visit(node.children);\n });\n };\n visit(nodes);\n\n return { nodes, nodeMap };\n}\n\nfunction filterTreeNodes(nodes: ExplorerTreeNode[], query: string): ExplorerTreeNode[] {\n const needle = query.trim().toLowerCase();\n if (!needle) return nodes;\n\n const visit = (node: ExplorerTreeNode): ExplorerTreeNode | null => {\n const filteredChildren = node.children\n .map(visit)\n .filter(Boolean) as ExplorerTreeNode[];\n const matches = node.label.toLowerCase().includes(needle) || node.path.toLowerCase().includes(needle);\n\n if (matches || filteredChildren.length) {\n return { ...node, children: filteredChildren };\n }\n\n return null;\n };\n\n return nodes.map(visit).filter(Boolean) as ExplorerTreeNode[];\n}\n\nfunction getAncestorPaths(nodeMap: Map<string, ExplorerTreeNode>, path: string) {\n const paths: string[] = [];\n let current = nodeMap.get(path);\n\n while (current?.parentPath) {\n paths.push(current.parentPath);\n current = nodeMap.get(current.parentPath);\n }\n\n return paths;\n}\n\nfunction getSectionForPath(sections: ExplorerSectionDefinition[], path: string) {\n return sections\n .filter((section) => path === section.jsonPath || path.startsWith(`${section.jsonPath}.`) || path.startsWith(`${section.jsonPath}[`))\n .sort((left, right) => right.jsonPath.length - left.jsonPath.length)[0] ?? null;\n}\n\nfunction filterIssuesForPath(issues: MetadataIssue[], path: string) {\n return issues.filter((issue) => {\n if (!issue.path) return false;\n return issue.path === path || issue.path.startsWith(`${path}.`) || issue.path.startsWith(`${path}[`);\n });\n}\n\nconst JsonEditorSurface = React.forwardRef<JsonEditorHandle, {\n value: any;\n resetToken: string;\n readOnly?: boolean;\n onValueChange: (value: any) => void;\n onErrorChange: (message: string | null) => void;\n}>(function JsonEditorSurface({ value, resetToken, readOnly = false, onValueChange, onErrorChange }, ref) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const editorRef = useRef<any>(null);\n // Keep a ref to the latest value so the async init can seed the editor correctly\n const latestValueRef = useRef<any>(value);\n\n // Sync latest value into ref so async editor init can use it\n useEffect(() => { latestValueRef.current = value; }, [value]);\n\n const emitState = () => {\n const editor = editorRef.current;\n if (!editor) return;\n\n try {\n const nextValue = editor.get();\n onValueChange(nextValue);\n onErrorChange(null);\n } catch (error: any) {\n onErrorChange(error?.message ? String(error.message) : \"The JSON is currently invalid.\");\n }\n };\n\n useImperativeHandle(ref, () => ({\n format() {\n try {\n editorRef.current?.format?.();\n } catch (_error) {\n // jsoneditor already surfaces parse states through onErrorChange\n }\n emitState();\n },\n }), []);\n\n useEffect(() => {\n if (!containerRef.current || editorRef.current) return;\n\n let destroyed = false;\n\n // @ts-ignore\n void import(\"jsoneditor\").then((jsonEditorModule: any) => {\n if (destroyed || !containerRef.current || editorRef.current) {\n return;\n }\n\n const JSONEditor = jsonEditorModule?.default ?? jsonEditorModule;\n editorRef.current = new JSONEditor(containerRef.current, {\n mode: \"code\",\n modes: [\"code\"],\n mainMenuBar: true,\n navigationBar: true,\n statusBar: true,\n search: true,\n enableSort: false,\n enableTransform: false,\n onChange: () => emitState(),\n });\n\n // Seed editor with current value (which may already be set before async init resolved)\n try { editorRef.current.set(latestValueRef.current); } catch (_e) {}\n emitState();\n\n if (editorRef.current?.aceEditor?.setReadOnly) {\n editorRef.current.aceEditor.setReadOnly(readOnly);\n }\n });\n\n return () => {\n destroyed = true;\n editorRef.current?.destroy?.();\n editorRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.set(value);\n emitState();\n }, [resetToken, value]);\n\n useEffect(() => {\n if (!editorRef.current?.aceEditor?.setReadOnly) return;\n editorRef.current.aceEditor.setReadOnly(readOnly);\n }, [readOnly]);\n\n return <div ref={containerRef} className={`solid-module-explorer-editor-host solid-module-explorer-jsoneditor ${readOnly ? \"is-readonly\" : \"\"}`} />;\n});\n\nfunction MetadataTree({\n nodes,\n activePath,\n expandedPaths,\n onToggle,\n onSelect,\n depth = 0,\n}: {\n nodes: ExplorerTreeNode[];\n activePath: string;\n expandedPaths: Set<string>;\n onToggle: (path: string) => void;\n onSelect: (path: string) => void;\n depth?: number;\n}) {\n return (\n <>\n {nodes.map((node) => {\n const isExpanded = expandedPaths.has(node.path);\n const hasChildren = node.children.length > 0;\n const isActive = activePath === node.path;\n\n return (\n <div key={node.id} className=\"solid-module-explorer-tree-node\">\n <div\n className={`solid-module-explorer-tree-row ${isActive ? \"is-active\" : \"\"}`}\n style={{ paddingLeft: `${depth * 0.9}rem` }}\n >\n <button\n type=\"button\"\n className=\"solid-module-explorer-tree-toggle\"\n onClick={() => hasChildren && onToggle(node.path)}\n aria-label={hasChildren ? (isExpanded ? \"Collapse node\" : \"Expand node\") : \"Leaf node\"}\n disabled={!hasChildren}\n >\n {hasChildren ? (isExpanded ? <ChevronDown size={14} /> : <ChevronRight size={14} />) : <span className=\"solid-module-explorer-tree-dot\" />}\n </button>\n <button\n type=\"button\"\n className=\"solid-module-explorer-tree-label\"\n onClick={() => onSelect(node.path)}\n title={node.path}\n >\n {node.label}\n </button>\n </div>\n\n {hasChildren && isExpanded && (\n <MetadataTree\n nodes={node.children}\n activePath={activePath}\n expandedPaths={expandedPaths}\n onToggle={onToggle}\n onSelect={onSelect}\n depth={depth + 1}\n />\n )}\n </div>\n );\n })}\n </>\n );\n}\n\nexport function ModuleMetadataExplorer({\n moduleName,\n moduleId,\n modelSingularName,\n scopedArrayPath,\n scopedItemValue,\n scopedItemField,\n readOnly = false,\n allowSeed = true,\n}: ModuleMetadataExplorerProps) {\n const dispatch = useDispatch();\n const editorRef = useRef<JsonEditorHandle | null>(null);\n const explorerRef = useRef<HTMLDivElement | null>(null);\n const isResizingRef = useRef(false);\n const [activePath, setActivePath] = useState(\"\");\n const [expandedPaths, setExpandedPaths] = useState<Set<string>>(new Set());\n const [treeFilter, setTreeFilter] = useState(\"\");\n const [sidebarWidth, setSidebarWidth] = useState(280);\n const [editorValue, setEditorValue] = useState<any>({});\n const [savedValue, setSavedValue] = useState<any>({});\n const [editorError, setEditorError] = useState<string | null>(null);\n const [editorResetToken, setEditorResetToken] = useState(\"initial\");\n const [validationIssues, setValidationIssues] = useState<MetadataIssue[] | null>(null);\n const [localActionSummary, setLocalActionSummary] = useState(\"\");\n const [isContextDialogOpen, setIsContextDialogOpen] = useState(false);\n const [isSeedDialogOpen, setIsSeedDialogOpen] = useState(false);\n\n const {\n data: manifestData,\n error: manifestError,\n refetch: refetchManifest,\n } = useGetModuleMetadataExplorerManifestQuery(moduleName as string, {\n skip: !moduleName,\n });\n\n const {\n data: documentData,\n isLoading: isDocumentLoading,\n error: documentError,\n refetch: refetchDocument,\n } = useGetModuleMetadataExplorerDocumentQuery(moduleName as string, {\n skip: !moduleName,\n });\n\n const [updateSection, { isLoading: isSavingSection }] = useUpdateModuleMetadataExplorerSectionMutation();\n const [validateSection, { isLoading: isValidatingSection }] = useValidateModuleMetadataExplorerSectionMutation();\n const [seedModuleMetadata, { isLoading: isSeedingModule }] = useSeedModuleMetadataMutation();\n const isReadOnlyExplorer = readOnly || moduleName?.toLowerCase() === \"solid-core\";\n\n const sections = (manifestData?.sections ?? []) as ExplorerSectionDefinition[];\n const fullDocument = documentData?.value ?? {};\n const loadError = !manifestData || !documentData ? (manifestError ?? documentError) : null;\n\n const { nodes: treeNodes, nodeMap } = useMemo(\n () => buildTreeFromDocument(sections, fullDocument),\n [sections, fullDocument],\n );\n\n const scopedRootPath = useMemo(() => {\n // Scope to a specific model definition\n if (modelSingularName) {\n const models = getValueAtJsonPath(fullDocument, \"moduleMetadata.models\");\n if (!Array.isArray(models)) return \"\";\n const modelIndex = models.findIndex((model) => model?.singularName === modelSingularName);\n return modelIndex >= 0 ? `moduleMetadata.models[${modelIndex}]` : \"\";\n }\n // Scope to a specific item in a root-level array (e.g. views, actions, menus)\n if (scopedArrayPath && scopedItemValue) {\n const arr = getValueAtJsonPath(fullDocument, scopedArrayPath);\n if (!Array.isArray(arr)) return \"\";\n const matchField = scopedItemField ?? \"name\";\n const itemIndex = arr.findIndex((item) => item?.[matchField] === scopedItemValue);\n return itemIndex >= 0 ? `${scopedArrayPath}[${itemIndex}]` : \"\";\n }\n return \"\";\n }, [fullDocument, modelSingularName, scopedArrayPath, scopedItemValue, scopedItemField]);\n\n const scopedTreeNodes = useMemo(() => {\n if (!scopedRootPath) return treeNodes;\n const scopedNode = nodeMap.get(scopedRootPath);\n return scopedNode ? [scopedNode] : [];\n }, [nodeMap, scopedRootPath, treeNodes]);\n\n const filteredTreeNodes = useMemo(\n () => filterTreeNodes(scopedTreeNodes, treeFilter),\n [scopedTreeNodes, treeFilter],\n );\n\n const visibleExpandedPaths = useMemo(() => {\n if (!treeFilter.trim()) return expandedPaths;\n const nextExpanded = new Set<string>();\n const visit = (nodesToVisit: ExplorerTreeNode[]) => {\n nodesToVisit.forEach((node) => {\n if (node.children.length) {\n nextExpanded.add(node.path);\n visit(node.children);\n }\n });\n };\n visit(filteredTreeNodes);\n return nextExpanded;\n }, [expandedPaths, filteredTreeNodes, treeFilter]);\n\n const activeNode = activePath ? nodeMap.get(activePath) ?? null : null;\n const activeSection = activePath ? getSectionForPath(sections, activePath) : null;\n const activeValidationIssues = filterIssuesForPath(validationIssues ?? [], activePath);\n const savedSerialized = serializeJson(savedValue);\n const editorSerialized = serializeJson(editorValue);\n const isDirty = editorError ? true : savedSerialized !== editorSerialized;\n const hasMutableChanges = !isReadOnlyExplorer && isDirty;\n const canSave = !isReadOnlyExplorer && isDirty && !editorError;\n const hasValidationFailure = Boolean(editorError) || activeValidationIssues.length > 0;\n const validationSummary = editorError\n ? editorError\n : activeValidationIssues.length\n ? `${activeValidationIssues.length} validation issue${activeValidationIssues.length === 1 ? \"\" : \"s\"}: ${activeValidationIssues[0]?.message ?? \"Review this JSON before saving.\"}`\n : \"\";\n\n useEffect(() => {\n setValidationIssues(documentData?.validation?.issues ?? []);\n }, [documentData?.lastModifiedAt]);\n\n useEffect(() => {\n const handlePointerMove = (event: PointerEvent) => {\n if (!isResizingRef.current || !explorerRef.current) return;\n const bounds = explorerRef.current.getBoundingClientRect();\n const nextWidth = Math.min(Math.max(event.clientX - bounds.left, 220), 520);\n setSidebarWidth(nextWidth);\n };\n\n const handlePointerUp = () => {\n isResizingRef.current = false;\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, []);\n\n useEffect(() => {\n if (!scopedTreeNodes.length) return;\n\n const isPathInsideScope =\n !scopedRootPath ||\n activePath === scopedRootPath ||\n activePath.startsWith(`${scopedRootPath}.`) ||\n activePath.startsWith(`${scopedRootPath}[`);\n\n if (!activePath || !nodeMap.has(activePath) || !isPathInsideScope) {\n const defaultPath = scopedTreeNodes[0].path;\n setActivePath(defaultPath);\n setExpandedPaths(new Set([defaultPath]));\n }\n }, [activePath, nodeMap, scopedRootPath, scopedTreeNodes]);\n\n useEffect(() => {\n if (!activePath) return;\n const nextValue = getValueAtJsonPath(fullDocument, activePath);\n if (nextValue === undefined) return;\n setSavedValue(nextValue);\n setEditorValue(nextValue);\n setEditorError(null);\n setEditorResetToken(`${activePath}:${documentData?.lastModifiedAt ?? \"\"}`);\n }, [activePath, documentData?.lastModifiedAt, fullDocument]);\n\n const showErrorToast = (error: any) => {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Metadata Explorer\",\n detail: extractApiErrorMessage(error),\n life: 4000,\n }));\n };\n\n const toggleExpandedPath = (path: string) => {\n setExpandedPaths((current) => {\n const next = new Set(current);\n if (next.has(path)) {\n next.delete(path);\n } else {\n next.add(path);\n }\n return next;\n });\n };\n\n const selectPath = (path: string) => {\n if (path === activePath) return;\n if (!isReadOnlyExplorer && isDirty) {\n const shouldProceed = window.confirm(\"You have unsaved metadata changes. Switch nodes and discard them?\");\n if (!shouldProceed) return;\n }\n\n const ancestorPaths = getAncestorPaths(nodeMap, path);\n setExpandedPaths((current) => {\n const next = new Set(current);\n ancestorPaths.forEach((ancestorPath) => next.add(ancestorPath));\n return next;\n });\n setActivePath(path);\n };\n\n const handleSidebarResizeStart = () => {\n isResizingRef.current = true;\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n };\n\n const handleCollapseAll = () => {\n setExpandedPaths(new Set());\n };\n\n const handleFormat = () => {\n editorRef.current?.format();\n };\n\n const buildPatchedDocument = () => {\n const nextDocument = deepCloneJson(fullDocument);\n setValueAtJsonPath(nextDocument, activePath, editorValue);\n return nextDocument;\n };\n\n const buildPatchedSectionValue = () => {\n if (!activeSection) return undefined;\n return getValueAtJsonPath(buildPatchedDocument(), activeSection.jsonPath);\n };\n\n const handleValidate = async () => {\n if (!moduleName || !activePath || !activeSection) return;\n\n if (editorError) {\n setLocalActionSummary(\"Validation blocked because the JSON is currently invalid.\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Metadata Explorer\",\n detail: \"Fix the invalid JSON before validating.\",\n life: 3500,\n }));\n return;\n }\n\n try {\n const response: any = await validateSection({\n moduleName,\n sectionKey: activeSection.key,\n value: buildPatchedSectionValue(),\n }).unwrap();\n\n setValidationIssues(response?.issues ?? []);\n setLocalActionSummary(response?.valid ? \"Validation passed for the current JSON fragment.\" : \"Validation reported issues for the current JSON fragment.\");\n dispatch(showToast({\n severity: response?.valid ? \"success\" : \"warn\",\n summary: \"Metadata Explorer\",\n detail: response?.valid ? \"Validation passed.\" : \"Validation reported issues.\",\n life: 3000,\n }));\n } catch (error) {\n showErrorToast(error);\n }\n };\n\n const handleSave = async () => {\n if (!moduleName || !activePath || !activeSection) return;\n\n if (editorError) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Metadata Explorer\",\n detail: \"Fix the invalid JSON before saving.\",\n life: 3500,\n }));\n return;\n }\n\n try {\n const response: any = await updateSection({\n moduleName,\n sectionKey: activeSection.key,\n value: buildPatchedSectionValue(),\n }).unwrap();\n\n setValidationIssues(response?.validation?.issues ?? []);\n setLocalActionSummary(\"JSON fragment saved to the metadata file.\");\n dispatch(showToast({\n severity: \"success\",\n summary: \"Metadata Explorer\",\n detail: \"Metadata saved successfully.\",\n life: 3000,\n }));\n refetchManifest();\n refetchDocument();\n } catch (error) {\n showErrorToast(error);\n }\n };\n\n const handleSeedModule = async () => {\n if (!moduleId) return;\n\n try {\n const response: any = await seedModuleMetadata({ id: moduleId }).unwrap();\n setIsSeedDialogOpen(false);\n setLocalActionSummary(response?.message ?? `Seeded metadata for module ${moduleName}.`);\n dispatch(showToast({\n severity: \"success\",\n summary: \"Metadata Explorer\",\n detail: response?.message ?? \"Module metadata seeded successfully.\",\n life: 3000,\n }));\n refetchManifest();\n refetchDocument();\n } catch (error) {\n showErrorToast(error);\n }\n };\n\n if (!moduleName) {\n return null;\n }\n\n return (\n <div className=\"solid-module-explorer\">\n <div className=\"solid-module-explorer-panel\">\n {loadError && (\n <div className=\"solid-module-explorer-alert\">\n <SolidMessage\n severity=\"error\"\n text={`Unable to load metadata explorer: ${extractApiErrorMessage(loadError)}`}\n className=\"justify-start\"\n />\n </div>\n )}\n\n <div\n ref={explorerRef}\n className=\"solid-module-explorer-workspace\"\n style={{ gridTemplateColumns: `${sidebarWidth}px 8px minmax(0, 1fr)` }}\n >\n <aside className=\"solid-module-explorer-sidebar\">\n <div className=\"solid-module-explorer-sidebar-section solid-module-explorer-sidebar-sections\">\n <div className=\"solid-module-explorer-sidebar-heading\">\n <div className=\"solid-module-explorer-sidebar-heading-main\">\n <div className=\"solid-module-explorer-sidebar-title\">{modelSingularName ? \"Explorer\" : \"Sections\"}</div>\n <SolidTag tone=\"info\">{modelSingularName ? scopedTreeNodes.length : sections.length}</SolidTag>\n </div>\n <button\n type=\"button\"\n className=\"solid-module-explorer-sidebar-action\"\n onClick={handleCollapseAll}\n >\n Collapse all\n </button>\n </div>\n\n <div className=\"solid-module-explorer-sidebar-search\">\n <SolidInput\n value={treeFilter}\n onChange={(event) => setTreeFilter(event.target.value)}\n placeholder=\"Search metadata tree\"\n />\n <div className=\"solid-module-explorer-sidebar-search-icon\">\n <Search size={14} />\n </div>\n </div>\n\n <div className=\"solid-module-explorer-section-list solid-module-explorer-tree-list\">\n <MetadataTree\n nodes={filteredTreeNodes}\n activePath={activePath}\n expandedPaths={visibleExpandedPaths}\n onToggle={toggleExpandedPath}\n onSelect={selectPath}\n />\n </div>\n </div>\n </aside>\n\n <div\n className=\"solid-module-explorer-resizer\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize metadata navigation panel\"\n onPointerDown={handleSidebarResizeStart}\n />\n\n <section className=\"solid-module-explorer-main\">\n <div className=\"solid-module-explorer-main-header\">\n <div className=\"solid-module-explorer-main-title\">\n <div className=\"solid-module-explorer-main-heading-row\">\n <h4>{activeNode?.label ?? activeSection?.title ?? \"Metadata\"}</h4>\n <p>{activePath || \"Choose a metadata node from the tree.\"}</p>\n </div>\n {hasValidationFailure && (\n <div className=\"solid-module-explorer-inline-validation\" title={validationSummary}>\n {validationSummary}\n </div>\n )}\n {isReadOnlyExplorer && (\n <div className=\"solid-module-explorer-readonly-note\">\n This metadata is browse-only in the explorer.\n </div>\n )}\n </div>\n <div className=\"solid-module-explorer-main-actions\">\n <div className=\"solid-module-explorer-main-meta\">\n {hasMutableChanges && <SolidTag tone=\"warn\">Unsaved changes</SolidTag>}\n {editorError && <SolidTag tone=\"danger\">Invalid JSON</SolidTag>}\n {isReadOnlyExplorer && <SolidTag tone=\"info\">Read only</SolidTag>}\n </div>\n {!isReadOnlyExplorer && (\n <SolidButton\n size=\"sm\"\n leftIcon={<Save size={14} />}\n onClick={handleSave}\n loading={isSavingSection}\n disabled={!canSave}\n >\n Save Section\n </SolidButton>\n )}\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n aria-label=\"Explorer actions\"\n >\n <Settings size={16} />\n </SolidButton>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-module-explorer-actions-menu\">\n {!isReadOnlyExplorer && (\n <SolidDropdownMenuItem onSelect={handleFormat}>\n <div className=\"solid-module-explorer-actions-item\">\n <Wand2 size={14} />\n <span>Format</span>\n </div>\n </SolidDropdownMenuItem>\n )}\n <SolidDropdownMenuItem onSelect={handleValidate} disabled={isValidatingSection}>\n <div className=\"solid-module-explorer-actions-item\">\n <FileSearch size={14} />\n <span>{isValidatingSection ? \"Validating...\" : \"Validate\"}</span>\n </div>\n </SolidDropdownMenuItem>\n <SolidDropdownMenuItem onSelect={() => setIsContextDialogOpen(true)}>\n <div className=\"solid-module-explorer-actions-item\">\n <Settings size={14} />\n <span>Context</span>\n </div>\n </SolidDropdownMenuItem>\n {allowSeed && (\n <SolidDropdownMenuItem onSelect={() => setIsSeedDialogOpen(true)} disabled={!moduleId || isSeedingModule}>\n <div className=\"solid-module-explorer-actions-item\">\n <DatabaseZap size={14} />\n <span>{isSeedingModule ? \"Seeding...\" : \"Seed\"}</span>\n </div>\n </SolidDropdownMenuItem>\n )}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n </div>\n\n <div className=\"solid-module-explorer-editor-wrap\">\n <div className=\"solid-module-explorer-editor-shell\">\n {isDocumentLoading ? (\n <div style={{ padding: \"1rem\" }} className=\"solid-module-explorer-empty\">\n Loading metadata JSON...\n </div>\n ) : (\n <JsonEditorSurface\n ref={editorRef}\n value={savedValue}\n resetToken={editorResetToken}\n readOnly={isReadOnlyExplorer}\n onValueChange={setEditorValue}\n onErrorChange={setEditorError}\n />\n )}\n </div>\n </div>\n </section>\n </div>\n </div>\n\n <SolidDialog\n open={isContextDialogOpen}\n onOpenChange={setIsContextDialogOpen}\n header=\"Context\"\n contentClassName=\"solid-module-explorer-context-dialog\"\n >\n <SolidDialogBody>\n <div className=\"solid-module-explorer-context-dialog-body\">\n <div className=\"solid-module-explorer-context-dialog-header\">\n <div className=\"solid-module-explorer-context-dialog-title\">\n {activeNode?.label ?? \"Metadata node\"}\n </div>\n <div className=\"solid-module-explorer-context-dialog-meta\">\n {activeNode?.sectionTitle && <SolidTag tone=\"info\">{activeNode.sectionTitle}</SolidTag>}\n </div>\n </div>\n\n <div className=\"solid-module-explorer-context-grid\">\n <div className=\"solid-module-explorer-context-row\">\n <div className=\"solid-module-explorer-context-label\">JSON Path</div>\n <div className=\"solid-module-explorer-context-value\">{activePath || \"-\"}</div>\n </div>\n <div className=\"solid-module-explorer-context-row\">\n <div className=\"solid-module-explorer-context-label\">File</div>\n <div className=\"solid-module-explorer-context-value\">{manifestData?.filePath ?? \"-\"}</div>\n </div>\n {localActionSummary && (\n <div className=\"solid-module-explorer-context-row\">\n <div className=\"solid-module-explorer-context-label\">Last Action</div>\n <div className=\"solid-module-explorer-context-value\">{localActionSummary}</div>\n </div>\n )}\n </div>\n\n <div className=\"solid-module-explorer-context-note\">\n Clicking any branch or leaf in the tree opens that exact JSON fragment on the right.\n </div>\n </div>\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog\n open={isSeedDialogOpen}\n onOpenChange={setIsSeedDialogOpen}\n contentClassName=\"solid-module-explorer-seed-dialog\"\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Seed Module Metadata</SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <div className=\"solid-module-explorer-seed-dialog-body\">\n <p>\n Re-seed metadata for <strong>{moduleName}</strong> from its JSON file?\n </p>\n <p className=\"solid-module-explorer-seed-dialog-note\">\n This only re-runs metadata seeding for the current module and refreshes database metadata from the module JSON.\n </p>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setIsSeedDialogOpen(false)} disabled={isSeedingModule}>\n Cancel\n </SolidButton>\n <SolidButton size=\"sm\" onClick={handleSeedModule} loading={isSeedingModule} disabled={!moduleId}>\n Seed\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n"]}
@@ -767,7 +767,7 @@ export function ModuleMetadataExplorer({
767
767
  <SolidMessage
768
768
  severity="error"
769
769
  text={`Unable to load metadata explorer: ${extractApiErrorMessage(loadError)}`}
770
- className="justify-content-start"
770
+ className="justify-start"
771
771
  />
772
772
  </div>
773
773
  )}
@@ -1,7 +1,7 @@
1
1
  /* ─────────────────────────────────────────────────────────────────────────────
2
2
  SolidAiChat — uses the application's CSS custom-property theme so it
3
3
  automatically adapts when the root class switches between light and dark.
4
- Variables sourced from shadcn-base.css and PrimeReact theme files.
4
+ Variables sourced from solid-custom.css and PrimeReact theme files.
5
5
  ───────────────────────────────────────────────────────────────────────────── */
6
6
 
7
7
  /* ── Container ── */
@@ -1336,4 +1336,4 @@
1336
1336
 
1337
1337
  .ToolCardExpandable {
1338
1338
  border-top: 1px solid var(--border);
1339
- }
1339
+ }