@solidxai/core-ui 0.1.20-beta.0 → 0.1.20-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/dist/components/common/Link.d.ts.map +1 -1
  2. package/dist/components/common/Link.js +2 -1
  3. package/dist/components/common/Link.js.map +1 -1
  4. package/dist/components/common/Link.tsx +2 -1
  5. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +1 -0
  6. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  7. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +109 -23
  8. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +155 -34
  10. package/dist/components/core/chatter/SolidChatter.js +2 -2
  11. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  12. package/dist/components/core/chatter/SolidChatter.tsx +2 -2
  13. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +20 -19
  14. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  15. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +16 -16
  16. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -1
  17. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +36 -9
  18. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -1
  19. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +78 -7
  20. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +1 -0
  21. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -1
  22. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +1 -1
  23. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -1
  24. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +1 -1
  25. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts +4 -0
  26. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts.map +1 -0
  27. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js +131 -0
  28. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js.map +1 -0
  29. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx +151 -0
  30. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts +4 -0
  31. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts.map +1 -0
  32. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js +13 -0
  33. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js.map +1 -0
  34. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx +20 -0
  35. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  36. package/dist/components/core/form/SolidFormView.js +4 -0
  37. package/dist/components/core/form/SolidFormView.js.map +1 -1
  38. package/dist/components/core/form/SolidFormView.tsx +4 -0
  39. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  40. package/dist/components/core/kanban/SolidKanbanView.js +50 -15
  41. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  42. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -3
  43. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  44. package/dist/components/core/list/SolidListView.js +16 -3
  45. package/dist/components/core/list/SolidListView.js.map +1 -1
  46. package/dist/components/core/list/SolidListView.tsx +16 -2
  47. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  48. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -1
  49. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  50. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -1
  51. package/dist/components/core/module/ModulePackageDialog.css +102 -0
  52. package/dist/components/core/module/ModulePackageDialog.d.ts +2 -1
  53. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -1
  54. package/dist/components/core/module/ModulePackageDialog.js +216 -68
  55. package/dist/components/core/module/ModulePackageDialog.js.map +1 -1
  56. package/dist/components/core/module/ModulePackageDialog.tsx +356 -76
  57. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
  58. package/dist/components/core/solid-agent/SolidAgentChat.js +9 -3
  59. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
  60. package/dist/components/core/solid-agent/SolidAgentChat.tsx +9 -4
  61. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -1
  62. package/dist/components/core/solid-agent/SolidAgentMarkdown.js +25 -6
  63. package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -1
  64. package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +15 -1
  65. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +5 -0
  66. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
  67. package/dist/components/core/solid-agent/client/agentRuntime.js +77 -20
  68. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
  69. package/dist/components/core/solid-agent/client/agentRuntime.ts +29 -1
  70. package/dist/components/core/solid-agent/client/agentSocket.d.ts +5 -1
  71. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
  72. package/dist/components/core/solid-agent/client/agentSocket.js +27 -4
  73. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
  74. package/dist/components/core/solid-agent/client/agentSocket.ts +14 -3
  75. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +2 -2
  76. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
  77. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +5 -5
  78. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +2 -0
  79. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
  80. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +2 -2
  81. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
  82. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +4 -4
  83. package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -1
  84. package/dist/components/core/solid-agent/thread/AgentThread.js +61 -26
  85. package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -1
  86. package/dist/components/core/solid-agent/thread/AgentThread.tsx +74 -40
  87. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +2 -1
  88. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -1
  89. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +2 -1
  90. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -1
  91. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +3 -1
  92. package/dist/components/core/solid-agent/types.d.ts +3 -0
  93. package/dist/components/core/solid-agent/types.d.ts.map +1 -1
  94. package/dist/components/core/solid-agent/types.js +0 -9
  95. package/dist/components/core/solid-agent/types.js.map +1 -1
  96. package/dist/components/core/solid-agent/types.ts +4 -2
  97. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +1 -1
  98. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -1
  99. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +5 -2
  100. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -1
  101. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +11 -5
  102. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +3 -0
  103. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -1
  104. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +4 -0
  105. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +3 -0
  106. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -1
  107. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +4 -0
  108. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +3 -0
  109. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -1
  110. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +4 -0
  111. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +3 -0
  112. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -1
  113. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +4 -0
  114. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +3 -0
  115. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -1
  116. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +4 -0
  117. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +3 -0
  118. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
  119. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +4 -0
  120. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +3 -0
  121. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -1
  122. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +4 -0
  123. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +3 -0
  124. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -1
  125. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +4 -0
  126. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +3 -0
  127. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -1
  128. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +4 -0
  129. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +19 -0
  130. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -1
  131. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +20 -0
  132. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +3 -0
  133. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -1
  134. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +4 -0
  135. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +3 -0
  136. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -1
  137. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +4 -0
  138. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +3 -0
  139. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -1
  140. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +4 -0
  141. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +3 -0
  142. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -1
  143. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +4 -0
  144. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +3 -0
  145. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -1
  146. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +4 -0
  147. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +3 -0
  148. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -1
  149. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +4 -0
  150. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +3 -0
  151. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -1
  152. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +4 -0
  153. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +3 -0
  154. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -1
  155. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +4 -0
  156. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +9 -1
  157. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  158. package/dist/components/core/users/CreateUser.js +23 -8
  159. package/dist/components/core/users/CreateUser.js.map +1 -1
  160. package/dist/components/core/users/CreateUser.tsx +10 -6
  161. package/dist/components/layout/AdminTopHeader.js +2 -2
  162. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  163. package/dist/components/layout/AdminTopHeader.tsx +2 -2
  164. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  165. package/dist/components/layout/AppSidebar.js +21 -5
  166. package/dist/components/layout/AppSidebar.js.map +1 -1
  167. package/dist/components/layout/AppSidebar.tsx +24 -6
  168. package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
  169. package/dist/components/layout/SolidAiStudioLayout.js +3 -4
  170. package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
  171. package/dist/components/layout/SolidAiStudioLayout.tsx +3 -4
  172. package/dist/components/layout/user-profile-menu.js +10 -10
  173. package/dist/components/layout/user-profile-menu.js.map +1 -1
  174. package/dist/components/layout/user-profile-menu.tsx +3 -3
  175. package/dist/components/shad-cn-ui/SolidLightbox.d.ts +2 -1
  176. package/dist/components/shad-cn-ui/SolidLightbox.d.ts.map +1 -1
  177. package/dist/components/shad-cn-ui/SolidLightbox.js +11 -4
  178. package/dist/components/shad-cn-ui/SolidLightbox.js.map +1 -1
  179. package/dist/components/shad-cn-ui/SolidLightbox.tsx +14 -1
  180. package/dist/helpers/modelViewPersistence.d.ts +2 -0
  181. package/dist/helpers/modelViewPersistence.d.ts.map +1 -1
  182. package/dist/helpers/modelViewPersistence.js +72 -0
  183. package/dist/helpers/modelViewPersistence.js.map +1 -1
  184. package/dist/helpers/modelViewPersistence.ts +79 -0
  185. package/dist/helpers/registry.d.ts +6 -2
  186. package/dist/helpers/registry.d.ts.map +1 -1
  187. package/dist/helpers/registry.js +68 -3
  188. package/dist/helpers/registry.js.map +1 -1
  189. package/dist/helpers/registry.ts +62 -4
  190. package/dist/hooks/useModelsDevModels.d.ts +43 -0
  191. package/dist/hooks/useModelsDevModels.d.ts.map +1 -0
  192. package/dist/hooks/useModelsDevModels.js +81 -0
  193. package/dist/hooks/useModelsDevModels.js.map +1 -0
  194. package/dist/hooks/useModelsDevModels.ts +106 -0
  195. package/dist/hooks/useRouter.d.ts.map +1 -1
  196. package/dist/hooks/useRouter.js +3 -2
  197. package/dist/hooks/useRouter.js.map +1 -1
  198. package/dist/hooks/useRouter.ts +3 -2
  199. package/dist/index.d.ts +2 -2
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +1 -1
  202. package/dist/index.js.map +1 -1
  203. package/dist/index.ts +4 -1
  204. package/dist/modules/solidUiModule.d.ts +3 -2
  205. package/dist/modules/solidUiModule.d.ts.map +1 -1
  206. package/dist/modules/solidUiModule.js +1 -1
  207. package/dist/modules/solidUiModule.js.map +1 -1
  208. package/dist/modules/solidUiModule.ts +5 -1
  209. package/dist/redux/api/moduleApi.d.ts +12 -2
  210. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  211. package/dist/redux/api/moduleApi.js +33 -3
  212. package/dist/redux/api/moduleApi.js.map +1 -1
  213. package/dist/redux/api/moduleApi.ts +17 -2
  214. package/dist/redux/api/solidChatterMessageApi.d.ts +3 -1
  215. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  216. package/dist/redux/api/solidChatterMessageApi.js +9 -1
  217. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  218. package/dist/redux/api/solidChatterMessageApi.ts +9 -1
  219. package/dist/redux/store/defaultStoreConfig.d.ts +9 -1
  220. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  221. package/dist/resources/globals.css +30 -0
  222. package/dist/resources/solid-custom.css +10 -6
  223. package/dist/resources/solid-tailwind-generated.css +1 -1
  224. package/dist/routes/AppEventListener.js +1 -1
  225. package/dist/routes/AppEventListener.js.map +1 -1
  226. package/dist/routes/AppEventListener.tsx +1 -1
  227. package/dist/routes/pages/admin/core/AgentPersonaHistory.css +130 -0
  228. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts +7 -0
  229. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts.map +1 -0
  230. package/dist/routes/pages/admin/core/AgentPersonaHistory.js +228 -0
  231. package/dist/routes/pages/admin/core/AgentPersonaHistory.js.map +1 -0
  232. package/dist/routes/pages/admin/core/AgentPersonaHistory.tsx +234 -0
  233. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +6 -14
  234. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
  235. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +186 -146
  236. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
  237. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +170 -118
  238. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts +2 -0
  239. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -0
  240. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +108 -0
  241. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -0
  242. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +96 -0
  243. package/dist/routes/solidRoutes.d.ts.map +1 -1
  244. package/dist/routes/solidRoutes.js +2 -0
  245. package/dist/routes/solidRoutes.js.map +1 -1
  246. package/dist/routes/solidRoutes.tsx +2 -0
  247. package/dist/types/extension-registry.d.ts +12 -0
  248. package/dist/types/extension-registry.d.ts.map +1 -1
  249. package/dist/types/extension-registry.js.map +1 -1
  250. package/dist/types/extension-registry.ts +15 -0
  251. package/dist/types/solid-core.d.ts +2 -0
  252. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SolidImportTransaction.js","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidGenericImport/SolidImportTransaction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AlertTriangle, CircleX, MoveRight } from 'lucide-react'\nimport styles from './SolidImport.module.css'\nimport { useCreateImportSyncMutation, useLazyGetImportMappingInfoQuery, usePatchUpdateImportTransactionMutation } from '../../../../redux/api/importTransactionApi';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { showToast } from '../../../../redux/features/toastSlice';\nimport { ERROR_MESSAGES } from '../../../../constants/error-messages';\nimport { SolidButton, SolidSelect, SolidSpinner } from '../../../shad-cn-ui';\n\n\nconst getImportMessage = (value: unknown, fallback: string): string => {\n if (Array.isArray(value)) {\n const normalized: string[] = value.map((item) => getImportMessage(item, \"\")).filter((item) => item.trim() !== \"\");\n return normalized.length > 0 ? normalized.join(\", \") : fallback;\n }\n\n if (value && typeof value === \"object\") {\n const errorValue = (value as any).error ?? (value as any).message ?? (value as any).detail;\n if (errorValue !== undefined) {\n return getImportMessage(errorValue, fallback);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return fallback;\n }\n }\n\n if (value === undefined || value === null || value === \"\") {\n return fallback;\n }\n\n return String(value);\n};\n\nconst getSampleCellPreview = (value: unknown): string => {\n if (value === undefined || value === null || value === \"\") {\n return ERROR_MESSAGES.IMPORT_NO_SAMPLE_VALUE;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n return String(value);\n }\n\n if (Array.isArray(value)) {\n const normalized: string[] = value\n .map((item) => getSampleCellPreview(item))\n .filter((item) => item !== ERROR_MESSAGES.IMPORT_NO_SAMPLE_VALUE);\n return normalized.length > 0 ? normalized.join(\", \") : ERROR_MESSAGES.IMPORT_NO_SAMPLE_VALUE;\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n if (\"result\" in (value as any) && (value as any).result !== undefined && (value as any).result !== null) {\n return getSampleCellPreview((value as any).result);\n }\n\n if (\"value\" in (value as any) && (value as any).value !== undefined && (value as any).value !== null) {\n return getSampleCellPreview((value as any).value);\n }\n\n if (\"label\" in (value as any) && typeof (value as any).label === \"string\") {\n return (value as any).label;\n }\n\n if (\"formula\" in (value as any) && typeof (value as any).formula === \"string\") {\n return (value as any).formula;\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return ERROR_MESSAGES.IMPORT_UNSUPPORTED_SAMPLE_VALUE;\n }\n }\n\n return String(value);\n};\n\nexport const SolidImportTransaction = ({ setImportStatusResult, transactionId, setImportStep }: any) => {\n const dispatch = useDispatch();\n const [trigger, { data: mappingInfo, isLoading, isError: isMappingInfoError, error: mappingInfoError }] = useLazyGetImportMappingInfoQuery();\n const [patchUpdateImportTransaction] = usePatchUpdateImportTransactionMutation();\n const [createImportSync, { isLoading: isImporting }] = useCreateImportSyncMutation();\n const [fieldMapping, setFieldMapping] = useState<Record<string, string>>({});\n const [visibleHeaders, setVisibleHeaders] = useState<string[]>([]);\n\n useEffect(() => {\n if (transactionId) {\n trigger({ id: transactionId });\n }\n }, [transactionId]);\n\n useEffect(() => {\n const defaultMapping: Record<string, string> = {};\n const headers: string[] = [];\n mappingInfo?.data?.sampleImportedRecordInfo?.forEach((sample: any) => {\n defaultMapping[sample.cellHeader] = sample.defaultMappedFieldName || \"\";\n headers.push(sample.cellHeader);\n });\n setFieldMapping(defaultMapping);\n setVisibleHeaders(headers);\n }, [mappingInfo?.data]);\n\n const importableFields = mappingInfo?.data?.importableFields ?? [];\n const dropdownOptions = importableFields.map((field: any) => ({\n label: field.displayName,\n value: field.name,\n }));\n\n const handleChange = (cellHeader: string, selectedField: string) => {\n setFieldMapping((prev) => ({\n ...prev,\n [cellHeader]: selectedField,\n }));\n };\n\n const handleRemoveRow = (cellHeader: string) => {\n setVisibleHeaders((prev) => prev.filter(header => header !== cellHeader));\n setFieldMapping((prev) => {\n const updated = { ...prev };\n delete updated[cellHeader];\n return updated;\n });\n };\n\n const visibleMappingEntries = Object.entries(fieldMapping).filter(([header]) => visibleHeaders.includes(header));\n const mappedEntries = visibleMappingEntries.filter(([, fieldName]) => typeof fieldName === \"string\" && fieldName.trim() !== \"\");\n const mappedFieldCounts = mappedEntries.reduce<Record<string, number>>((acc, [, fieldName]) => {\n const normalizedFieldName = fieldName.trim();\n acc[normalizedFieldName] = (acc[normalizedFieldName] ?? 0) + 1;\n return acc;\n }, {});\n const duplicateMappedFieldNames = Object.entries(mappedFieldCounts)\n .filter(([, count]) => count > 1)\n .map(([fieldName]) => fieldName);\n const requiredImportableFields = importableFields.filter((field: any) => field.required);\n const missingRequiredFields = requiredImportableFields.filter(\n (field: any) => !mappedFieldCounts[field.name]\n );\n const totalImportableFieldCount = importableFields.length;\n const mappedImportableFieldCount = Object.keys(mappedFieldCounts).length;\n const unmappedImportableFieldCount = Math.max(totalImportableFieldCount - mappedImportableFieldCount, 0);\n\n const handleImportTransaction = async () => {\n if (mappedEntries.length === 0) {\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: ERROR_MESSAGES.IMPORT_NO_MATCHED_COLUMNS,\n }));\n return;\n }\n\n if (duplicateMappedFieldNames.length > 0) {\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING,\n }));\n return;\n }\n\n if (missingRequiredFields.length > 0) {\n const errorDetail = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: errorDetail,\n }));\n return;\n }\n\n if (unmappedImportableFieldCount > 0) {\n const errorDetail = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_MESSAGE(unmappedImportableFieldCount);\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: errorDetail,\n }));\n return;\n }\n\n try {\n const mappingArray = mappedEntries.map(([header, fieldName]) => ({\n header,\n fieldName,\n }));\n\n const patchData = {\n status: \"mapping_created\",\n mapping: JSON.stringify(mappingArray),\n };\n const patchResult = await patchUpdateImportTransaction({\n id: transactionId,\n data: patchData,\n }).unwrap();\n if (patchResult?.statusCode === 200) {\n\n // Sync\n try {\n const importResult = await createImportSync({ id: transactionId }).unwrap();\n\n if (importResult?.data?.status === \"import_succeeded\") {\n setImportStatusResult(importResult)\n setImportStep(4);\n }\n if (importResult?.data?.status === \"import_failed\") {\n setImportStatusResult(importResult);\n setImportStep(4);\n }\n } catch (importError: any) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.IMPORT_ERROR, detail: importError?.data?.error }));\n }\n\n // Async\n }\n } catch (error: any) {\n const errorMessage = error?.data?.error || ERROR_MESSAGES.SOMETHING_WRONG;\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.ERROR, detail: errorMessage }));\n }\n };\n\n const sampleRecords = mappingInfo?.data?.sampleImportedRecordInfo ?? [];\n const visibleSampleRecords = sampleRecords?.filter((sample: any) => visibleHeaders.includes(sample.cellHeader));\n const autoMappedCount = sampleRecords.filter((sample: any) =>\n typeof sample?.defaultMappedFieldName === \"string\" && sample.defaultMappedFieldName.trim() !== \"\"\n ).length;\n\n let mappingWarningMessage: string | null = null;\n let mappingWarningTitle: string | null = null;\n\n if (visibleSampleRecords.length > 0) {\n if (duplicateMappedFieldNames.length > 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING;\n } else if (missingRequiredFields.length > 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);\n } else if (autoMappedCount === 0 && mappedImportableFieldCount === 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_MESSAGE;\n } else if (unmappedImportableFieldCount > 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_MESSAGE(unmappedImportableFieldCount);\n }\n }\n\n const mappingErrorMessage = getImportMessage(\n (mappingInfoError as any)?.data?.error ?? (mappingInfoError as any)?.data?.message,\n ERROR_MESSAGES.IMPORT_FILE_READ_FAILED\n );\n return (\n <div>\n <div className={styles.SolidImportContextWrapper}>\n {isLoading ? (\n <div className=\"solid-import-loading-state\">\n <SolidSpinner size={22} label=\"Loading mapping info\" />\n </div>\n ) : isMappingInfoError ? (\n <div className='solid-import-empty-state solid-import-empty-state-danger'>\n <h4 className='text-center px-2'>{ERROR_MESSAGES.IMPORT_UNABLE_TO_READ_FILE}</h4>\n <p>{mappingErrorMessage}</p>\n </div>\n ) : visibleSampleRecords.length > 0 ? (\n <div className='solid-import-mapping-shell'>\n <div className=\"solid-import-mapping-intro\">\n <div>\n <h5 className='solid-primary-black-text solid-import-section-title'>Map file columns</h5>\n <p className='solid-import-section-copy m-0'>Match each incoming column to the correct SolidX field before the import runs.</p>\n </div>\n <div className=\"solid-import-mapping-count\">\n {totalImportableFieldCount} importable field{totalImportableFieldCount > 1 ? 's' : ''}\n </div>\n </div>\n {mappingWarningMessage ? (\n <div className=\"solid-import-mapping-alert\" role=\"alert\">\n <div className=\"solid-import-mapping-alert-icon\">\n <AlertTriangle size={16} />\n </div>\n <div className=\"solid-import-mapping-alert-copy\">\n {mappingWarningTitle ? (\n <p className=\"solid-import-mapping-alert-title\">{mappingWarningTitle}</p>\n ) : null}\n <p className=\"solid-import-mapping-alert-text\">{mappingWarningMessage}</p>\n </div>\n </div>\n ) : null}\n <div className='solid-import-mapping-table'>\n <div className={`solid-import-mapping-head ${styles.ImportTableHeader}`}>\n <div className=\"solid-import-mapping-head-cell\">File Column</div>\n <div className=\"solid-import-mapping-head-cell\">SolidX Field</div>\n </div>\n <div className=\"solid-import-mapping-body\">\n {visibleSampleRecords.map((sample: any) => {\n const fieldMeta = importableFields.find(\n (f: any) => f.name === fieldMapping[sample.cellHeader]\n );\n const isRequired = fieldMeta?.required;\n const samplePreview = getSampleCellPreview(sample.cellValue);\n\n return (\n <div key={sample.cellHeader} className=\"solid-import-mapping-row\">\n <div className=\"solid-import-mapping-source\">\n <div className=\"solid-import-mapping-source-title\">{sample.cellHeader}</div>\n <div className=\"solid-import-mapping-source-value\" title={samplePreview}>{samplePreview}</div>\n </div>\n <div className=\"solid-import-mapping-target\">\n <div className=\"solid-import-mapping-target-controls\">\n <SolidSelect\n value={fieldMapping[sample.cellHeader]}\n options={dropdownOptions}\n onChange={(e) => handleChange(sample.cellHeader, e.value)}\n className=\"solid-import-mapping-select\"\n placeholder=\"Select field\"\n native={false}\n menuPlacement=\"top\"\n />\n {!isRequired ? (\n <button\n type=\"button\"\n className=\"solid-import-mapping-remove\"\n onClick={() => handleRemoveRow(sample.cellHeader)}\n title=\"Remove this row\"\n >\n <CircleX size={16} />\n </button>\n ) : (\n <span className=\"solid-import-mapping-remove-placeholder\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : (\n <div className='solid-import-empty-state'>\n <h4 className='text-center px-2'>No sample import records found</h4>\n <p>Upload a file first and then continue to mapping.</p>\n </div>\n )}\n </div>\n <div className='solid-import-actions'>\n <p className=\"solid-import-actions-copy\">Confirm the mapping and start the import.</p>\n <SolidButton\n type=\"button\"\n size='small'\n onClick={handleImportTransaction}\n loading={isImporting}\n disabled={isImporting || isMappingInfoError || mappingInfo?.data?.sampleImportedRecordInfo?.length === 0}\n rightIcon={<MoveRight size={14} />}\n >\n Import\n </SolidButton>\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidImportTransaction.js","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidGenericImport/SolidImportTransaction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AlertTriangle, CircleX, MoveRight } from 'lucide-react'\nimport styles from './SolidImport.module.css'\nimport { useCreateImportSyncMutation, useLazyGetImportMappingInfoQuery, usePatchUpdateImportTransactionMutation } from '../../../../redux/api/importTransactionApi';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { showToast } from '../../../../redux/features/toastSlice';\nimport { ERROR_MESSAGES } from '../../../../constants/error-messages';\nimport { SolidButton, SolidSelect, SolidSpinner } from '../../../shad-cn-ui';\n\n\nconst getImportMessage = (value: unknown, fallback: string): string => {\n if (Array.isArray(value)) {\n const normalized: string[] = value.map((item) => getImportMessage(item, \"\")).filter((item) => item.trim() !== \"\");\n return normalized.length > 0 ? normalized.join(\", \") : fallback;\n }\n\n if (value && typeof value === \"object\") {\n const errorValue = (value as any).error ?? (value as any).message ?? (value as any).detail;\n if (errorValue !== undefined) {\n return getImportMessage(errorValue, fallback);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return fallback;\n }\n }\n\n if (value === undefined || value === null || value === \"\") {\n return fallback;\n }\n\n return String(value);\n};\n\nconst getSampleCellPreview = (value: unknown): string => {\n if (value === undefined || value === null || value === \"\") {\n return ERROR_MESSAGES.IMPORT_NO_SAMPLE_VALUE;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n return String(value);\n }\n\n if (Array.isArray(value)) {\n const normalized: string[] = value\n .map((item) => getSampleCellPreview(item))\n .filter((item) => item !== ERROR_MESSAGES.IMPORT_NO_SAMPLE_VALUE);\n return normalized.length > 0 ? normalized.join(\", \") : ERROR_MESSAGES.IMPORT_NO_SAMPLE_VALUE;\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n if (\"result\" in (value as any) && (value as any).result !== undefined && (value as any).result !== null) {\n return getSampleCellPreview((value as any).result);\n }\n\n if (\"value\" in (value as any) && (value as any).value !== undefined && (value as any).value !== null) {\n return getSampleCellPreview((value as any).value);\n }\n\n if (\"label\" in (value as any) && typeof (value as any).label === \"string\") {\n return (value as any).label;\n }\n\n if (\"formula\" in (value as any) && typeof (value as any).formula === \"string\") {\n return (value as any).formula;\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return ERROR_MESSAGES.IMPORT_UNSUPPORTED_SAMPLE_VALUE;\n }\n }\n\n return String(value);\n};\n\nexport const SolidImportTransaction = ({ setImportStatusResult, transactionId, setImportStep }: any) => {\n const dispatch = useDispatch();\n const [trigger, { data: mappingInfo, isLoading, isError: isMappingInfoError, error: mappingInfoError }] = useLazyGetImportMappingInfoQuery();\n const [patchUpdateImportTransaction] = usePatchUpdateImportTransactionMutation();\n const [createImportSync, { isLoading: isImporting }] = useCreateImportSyncMutation();\n const [fieldMapping, setFieldMapping] = useState<Record<string, string>>({});\n const [visibleHeaders, setVisibleHeaders] = useState<string[]>([]);\n\n useEffect(() => {\n if (transactionId) {\n trigger({ id: transactionId });\n }\n }, [transactionId]);\n\n useEffect(() => {\n const defaultMapping: Record<string, string> = {};\n const headers: string[] = [];\n mappingInfo?.data?.sampleImportedRecordInfo?.forEach((sample: any) => {\n defaultMapping[sample.cellHeader] = sample.defaultMappedFieldName || \"\";\n headers.push(sample.cellHeader);\n });\n setFieldMapping(defaultMapping);\n setVisibleHeaders(headers);\n }, [mappingInfo?.data]);\n\n const importableFields = mappingInfo?.data?.importableFields ?? [];\n const dropdownOptions = importableFields.map((field: any) => ({\n label: field.displayName,\n value: field.name,\n }));\n\n const handleChange = (cellHeader: string, selectedField: string) => {\n setFieldMapping((prev) => ({\n ...prev,\n [cellHeader]: selectedField,\n }));\n };\n\n const handleRemoveRow = (cellHeader: string) => {\n setVisibleHeaders((prev) => prev.filter(header => header !== cellHeader));\n setFieldMapping((prev) => {\n const updated = { ...prev };\n delete updated[cellHeader];\n return updated;\n });\n };\n\n const visibleMappingEntries = Object.entries(fieldMapping).filter(([header]) => visibleHeaders.includes(header));\n const mappedEntries = visibleMappingEntries.filter(([, fieldName]) => typeof fieldName === \"string\" && fieldName.trim() !== \"\");\n const unmappedVisibleEntries = visibleMappingEntries.filter(\n ([, fieldName]) => typeof fieldName !== \"string\" || fieldName.trim() === \"\"\n );\n const mappedFieldCounts = mappedEntries.reduce<Record<string, number>>((acc, [, fieldName]) => {\n const normalizedFieldName = fieldName.trim();\n acc[normalizedFieldName] = (acc[normalizedFieldName] ?? 0) + 1;\n return acc;\n }, {});\n const duplicateMappedFieldNames = Object.entries(mappedFieldCounts)\n .filter(([, count]) => count > 1)\n .map(([fieldName]) => fieldName);\n const requiredImportableFields = importableFields.filter((field: any) => field.required);\n const missingRequiredFields = requiredImportableFields.filter(\n (field: any) => !mappedFieldCounts[field.name]\n );\n const totalImportableFieldCount = importableFields.length;\n\n const handleImportTransaction = async () => {\n if (mappedEntries.length === 0) {\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: ERROR_MESSAGES.IMPORT_NO_MATCHED_COLUMNS,\n }));\n return;\n }\n\n if (unmappedVisibleEntries.length > 0) {\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: ERROR_MESSAGES.IMPORT_UNMAPPED_COLUMNS,\n }));\n return;\n }\n\n if (duplicateMappedFieldNames.length > 0) {\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING,\n }));\n return;\n }\n\n if (missingRequiredFields.length > 0) {\n const errorDetail = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.IMPORT_ERROR,\n detail: errorDetail,\n }));\n return;\n }\n\n try {\n const mappingArray = mappedEntries.map(([header, fieldName]) => ({\n header,\n fieldName,\n }));\n\n const patchData = {\n status: \"mapping_created\",\n mapping: JSON.stringify(mappingArray),\n };\n const patchResult = await patchUpdateImportTransaction({\n id: transactionId,\n data: patchData,\n }).unwrap();\n if (patchResult?.statusCode === 200) {\n\n // Sync\n try {\n const importResult = await createImportSync({ id: transactionId }).unwrap();\n\n if (importResult?.data?.status === \"import_succeeded\") {\n setImportStatusResult(importResult)\n setImportStep(4);\n }\n if (importResult?.data?.status === \"import_failed\") {\n setImportStatusResult(importResult);\n setImportStep(4);\n }\n } catch (importError: any) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.IMPORT_ERROR, detail: importError?.data?.error }));\n }\n\n // Async\n }\n } catch (error: any) {\n const errorMessage = error?.data?.error || ERROR_MESSAGES.SOMETHING_WRONG;\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.ERROR, detail: errorMessage }));\n }\n };\n\n const sampleRecords = mappingInfo?.data?.sampleImportedRecordInfo ?? [];\n const visibleSampleRecords = sampleRecords?.filter((sample: any) => visibleHeaders.includes(sample.cellHeader));\n const autoMappedCount = sampleRecords.filter((sample: any) =>\n typeof sample?.defaultMappedFieldName === \"string\" && sample.defaultMappedFieldName.trim() !== \"\"\n ).length;\n\n let mappingWarningMessage: string | null = null;\n let mappingWarningTitle: string | null = null;\n\n if (visibleSampleRecords.length > 0) {\n if (autoMappedCount === 0 && mappedEntries.length === 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_MESSAGE;\n } else if (unmappedVisibleEntries.length > 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_UNMAPPED_COLUMNS;\n } else if (duplicateMappedFieldNames.length > 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING;\n } else if (missingRequiredFields.length > 0) {\n mappingWarningTitle = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_TITLE;\n mappingWarningMessage = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);\n }\n }\n\n const mappingErrorMessage = getImportMessage(\n (mappingInfoError as any)?.data?.error ?? (mappingInfoError as any)?.data?.message,\n ERROR_MESSAGES.IMPORT_FILE_READ_FAILED\n );\n return (\n <div>\n <div className={styles.SolidImportContextWrapper}>\n {isLoading ? (\n <div className=\"solid-import-loading-state\">\n <SolidSpinner size={22} label=\"Loading mapping info\" />\n </div>\n ) : isMappingInfoError ? (\n <div className='solid-import-empty-state solid-import-empty-state-danger'>\n <h4 className='text-center px-2'>{ERROR_MESSAGES.IMPORT_UNABLE_TO_READ_FILE}</h4>\n <p>{mappingErrorMessage}</p>\n </div>\n ) : visibleSampleRecords.length > 0 ? (\n <div className='solid-import-mapping-shell'>\n <div className=\"solid-import-mapping-intro\">\n <div>\n <h5 className='solid-primary-black-text solid-import-section-title'>Map file columns</h5>\n <p className='solid-import-section-copy m-0'>Match each incoming column to the correct SolidX field before the import runs.</p>\n </div>\n <div className=\"solid-import-mapping-count\">\n {totalImportableFieldCount} importable field{totalImportableFieldCount > 1 ? 's' : ''}\n </div>\n </div>\n {mappingWarningMessage ? (\n <div className=\"solid-import-mapping-alert\" role=\"alert\">\n <div className=\"solid-import-mapping-alert-icon\">\n <AlertTriangle size={16} />\n </div>\n <div className=\"solid-import-mapping-alert-copy\">\n {mappingWarningTitle ? (\n <p className=\"solid-import-mapping-alert-title\">{mappingWarningTitle}</p>\n ) : null}\n <p className=\"solid-import-mapping-alert-text\">{mappingWarningMessage}</p>\n </div>\n </div>\n ) : null}\n <div className='solid-import-mapping-table'>\n <div className={`solid-import-mapping-head ${styles.ImportTableHeader}`}>\n <div className=\"solid-import-mapping-head-cell\">File Column</div>\n <div className=\"solid-import-mapping-head-cell\">SolidX Field</div>\n </div>\n <div className=\"solid-import-mapping-body\">\n {visibleSampleRecords.map((sample: any) => {\n const fieldMeta = importableFields.find(\n (f: any) => f.name === fieldMapping[sample.cellHeader]\n );\n const isRequired = fieldMeta?.required;\n const samplePreview = getSampleCellPreview(sample.cellValue);\n\n return (\n <div key={sample.cellHeader} className=\"solid-import-mapping-row\">\n <div className=\"solid-import-mapping-source\">\n <div className=\"solid-import-mapping-source-title\">{sample.cellHeader}</div>\n <div className=\"solid-import-mapping-source-value\" title={samplePreview}>{samplePreview}</div>\n </div>\n <div className=\"solid-import-mapping-target\">\n <div className=\"solid-import-mapping-target-controls\">\n <SolidSelect\n value={fieldMapping[sample.cellHeader]}\n options={dropdownOptions}\n onChange={(e) => handleChange(sample.cellHeader, e.value)}\n className=\"solid-import-mapping-select\"\n placeholder=\"Select field\"\n native={false}\n menuPlacement=\"top\"\n />\n {!isRequired ? (\n <button\n type=\"button\"\n className=\"solid-import-mapping-remove\"\n onClick={() => handleRemoveRow(sample.cellHeader)}\n title=\"Remove this row\"\n >\n <CircleX size={16} />\n </button>\n ) : (\n <span className=\"solid-import-mapping-remove-placeholder\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : (\n <div className='solid-import-empty-state'>\n <h4 className='text-center px-2'>No sample import records found</h4>\n <p>Upload a file first and then continue to mapping.</p>\n </div>\n )}\n </div>\n <div className='solid-import-actions'>\n <p className=\"solid-import-actions-copy\">Confirm the mapping and start the import.</p>\n <SolidButton\n type=\"button\"\n size='small'\n onClick={handleImportTransaction}\n loading={isImporting}\n disabled={isImporting || isMappingInfoError || mappingInfo?.data?.sampleImportedRecordInfo?.length === 0}\n rightIcon={<MoveRight size={14} />}\n >\n Import\n </SolidButton>\n </div>\n </div>\n )\n}\n"]}
@@ -130,6 +130,9 @@ export const SolidImportTransaction = ({ setImportStatusResult, transactionId, s
130
130
 
131
131
  const visibleMappingEntries = Object.entries(fieldMapping).filter(([header]) => visibleHeaders.includes(header));
132
132
  const mappedEntries = visibleMappingEntries.filter(([, fieldName]) => typeof fieldName === "string" && fieldName.trim() !== "");
133
+ const unmappedVisibleEntries = visibleMappingEntries.filter(
134
+ ([, fieldName]) => typeof fieldName !== "string" || fieldName.trim() === ""
135
+ );
133
136
  const mappedFieldCounts = mappedEntries.reduce<Record<string, number>>((acc, [, fieldName]) => {
134
137
  const normalizedFieldName = fieldName.trim();
135
138
  acc[normalizedFieldName] = (acc[normalizedFieldName] ?? 0) + 1;
@@ -143,8 +146,6 @@ export const SolidImportTransaction = ({ setImportStatusResult, transactionId, s
143
146
  (field: any) => !mappedFieldCounts[field.name]
144
147
  );
145
148
  const totalImportableFieldCount = importableFields.length;
146
- const mappedImportableFieldCount = Object.keys(mappedFieldCounts).length;
147
- const unmappedImportableFieldCount = Math.max(totalImportableFieldCount - mappedImportableFieldCount, 0);
148
149
 
149
150
  const handleImportTransaction = async () => {
150
151
  if (mappedEntries.length === 0) {
@@ -156,27 +157,26 @@ export const SolidImportTransaction = ({ setImportStatusResult, transactionId, s
156
157
  return;
157
158
  }
158
159
 
159
- if (duplicateMappedFieldNames.length > 0) {
160
+ if (unmappedVisibleEntries.length > 0) {
160
161
  dispatch(showToast({
161
162
  severity: "error",
162
163
  summary: ERROR_MESSAGES.IMPORT_ERROR,
163
- detail: ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING,
164
+ detail: ERROR_MESSAGES.IMPORT_UNMAPPED_COLUMNS,
164
165
  }));
165
166
  return;
166
167
  }
167
168
 
168
- if (missingRequiredFields.length > 0) {
169
- const errorDetail = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);
169
+ if (duplicateMappedFieldNames.length > 0) {
170
170
  dispatch(showToast({
171
171
  severity: "error",
172
172
  summary: ERROR_MESSAGES.IMPORT_ERROR,
173
- detail: errorDetail,
173
+ detail: ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING,
174
174
  }));
175
175
  return;
176
176
  }
177
177
 
178
- if (unmappedImportableFieldCount > 0) {
179
- const errorDetail = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_MESSAGE(unmappedImportableFieldCount);
178
+ if (missingRequiredFields.length > 0) {
179
+ const errorDetail = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);
180
180
  dispatch(showToast({
181
181
  severity: "error",
182
182
  summary: ERROR_MESSAGES.IMPORT_ERROR,
@@ -235,18 +235,18 @@ export const SolidImportTransaction = ({ setImportStatusResult, transactionId, s
235
235
  let mappingWarningTitle: string | null = null;
236
236
 
237
237
  if (visibleSampleRecords.length > 0) {
238
- if (duplicateMappedFieldNames.length > 0) {
238
+ if (autoMappedCount === 0 && mappedEntries.length === 0) {
239
+ mappingWarningTitle = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_TITLE;
240
+ mappingWarningMessage = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_MESSAGE;
241
+ } else if (unmappedVisibleEntries.length > 0) {
242
+ mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;
243
+ mappingWarningMessage = ERROR_MESSAGES.IMPORT_UNMAPPED_COLUMNS;
244
+ } else if (duplicateMappedFieldNames.length > 0) {
239
245
  mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;
240
246
  mappingWarningMessage = ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING;
241
247
  } else if (missingRequiredFields.length > 0) {
242
248
  mappingWarningTitle = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_TITLE;
243
249
  mappingWarningMessage = ERROR_MESSAGES.IMPORT_REQUIRED_FIELD_MAPPING_MESSAGE(missingRequiredFields.length);
244
- } else if (autoMappedCount === 0 && mappedImportableFieldCount === 0) {
245
- mappingWarningTitle = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_TITLE;
246
- mappingWarningMessage = ERROR_MESSAGES.IMPORT_TEMPLATE_MISMATCH_MESSAGE;
247
- } else if (unmappedImportableFieldCount > 0) {
248
- mappingWarningTitle = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_TITLE;
249
- mappingWarningMessage = ERROR_MESSAGES.IMPORT_MAPPING_INCOMPLETE_MESSAGE(unmappedImportableFieldCount);
250
250
  }
251
251
  }
252
252
 
@@ -1 +1 @@
1
- {"version":3,"file":"ExportModulePackageRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAG1F,QAAA,MAAM,4BAA4B,UAAW,oCAAoC,4CAqIhF,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"ExportModulePackageRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAyB1F,QAAA,MAAM,4BAA4B,UAAW,oCAAoC,4CAsLhF,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -37,20 +37,45 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
38
  import { useMemo, useState } from "react";
39
39
  import { useDispatch } from "react-redux";
40
- import { Download, FileArchive, Files, ShieldCheck } from "lucide-react";
40
+ import { Download, FileArchive, Files, ShieldCheck, Tag } from "lucide-react";
41
41
  import { SolidCircularLoader } from "../../../../../../components/core/common/SolidLoaders/SolidCircularLoader";
42
42
  import { useExportModulePackageMutation } from "../../../../../../redux/api/moduleApi";
43
43
  import { closePopup } from "../../../../../../redux/features/popupSlice";
44
44
  import { showToast } from "../../../../../../redux/features/toastSlice";
45
- import { SolidButton } from "../../../../../shad-cn-ui";
45
+ import { SolidButton, SolidInput, SolidSegmentedControl } from "../../../../../shad-cn-ui";
46
+ var VERSION_BUMP_OPTIONS = [
47
+ { label: "Keep", value: "none" },
48
+ { label: "Patch", value: "patch" },
49
+ { label: "Minor", value: "minor" },
50
+ { label: "Major", value: "major" },
51
+ ];
52
+ var SEMVER_PATTERN = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
53
+ // Preview only, mirroring semver.inc; the API computes the version that is actually written.
54
+ function previewBumpedVersion(version, bump) {
55
+ var match = version.match(/^(\d+)\.(\d+)\.(\d+)(-[^+]*)?/);
56
+ if (!match || bump === "none")
57
+ return version;
58
+ var _a = match.slice(1, 4).map(Number), major = _a[0], minor = _a[1], patch = _a[2];
59
+ var isPrerelease = Boolean(match[4]);
60
+ if (bump === "patch")
61
+ return isPrerelease ? "".concat(major, ".").concat(minor, ".").concat(patch) : "".concat(major, ".").concat(minor, ".").concat(patch + 1);
62
+ if (bump === "minor")
63
+ return isPrerelease && patch === 0 ? "".concat(major, ".").concat(minor, ".0") : "".concat(major, ".").concat(minor + 1, ".0");
64
+ return isPrerelease && minor === 0 && patch === 0 ? "".concat(major, ".0.0") : "".concat(major + 1, ".0.0");
65
+ }
46
66
  var ExportModulePackageRowAction = function (event) {
47
- var _a, _b, _c;
67
+ var _a, _b, _c, _d;
48
68
  var dispatch = useDispatch();
49
- var _d = useState(false), isExporting = _d[0], setIsExporting = _d[1];
50
- var _e = useState(null), errorState = _e[0], setErrorState = _e[1];
69
+ var _e = useState(false), isExporting = _e[0], setIsExporting = _e[1];
70
+ var _f = useState(null), errorState = _f[0], setErrorState = _f[1];
51
71
  var exportModulePackage = useExportModulePackageMutation()[0];
52
72
  var moduleName = String(((_a = event === null || event === void 0 ? void 0 : event.rowData) === null || _a === void 0 ? void 0 : _a.name) || ((_b = event === null || event === void 0 ? void 0 : event.rowData) === null || _b === void 0 ? void 0 : _b.id) || "").trim();
53
73
  var moduleDisplayName = String(((_c = event === null || event === void 0 ? void 0 : event.rowData) === null || _c === void 0 ? void 0 : _c.displayName) || moduleName || "this module").trim();
74
+ var currentVersion = String(((_d = event === null || event === void 0 ? void 0 : event.rowData) === null || _d === void 0 ? void 0 : _d.version) || "").trim() || null;
75
+ var _g = useState("none"), bump = _g[0], setBump = _g[1];
76
+ var _h = useState("1.0.0"), initialVersion = _h[0], setInitialVersion = _h[1];
77
+ var isInitialVersionValid = SEMVER_PATTERN.test(initialVersion.trim());
78
+ var exportVersion = currentVersion ? previewBumpedVersion(currentVersion, bump) : initialVersion.trim();
54
79
  var exportArtifacts = useMemo(function () { return [
55
80
  "solid-api module folder",
56
81
  "solid-ui module folder",
@@ -72,13 +97,13 @@ var ExportModulePackageRowAction = function (event) {
72
97
  _b.trys.push([1, 3, 4, 5]);
73
98
  setIsExporting(true);
74
99
  setErrorState(null);
75
- return [4 /*yield*/, exportModulePackage({ moduleName: moduleName }).unwrap()];
100
+ return [4 /*yield*/, exportModulePackage(currentVersion ? { moduleName: moduleName, bump: bump } : { moduleName: moduleName, version: initialVersion.trim() }).unwrap()];
76
101
  case 2:
77
102
  response = _b.sent();
78
103
  fileUrl = window.URL.createObjectURL(response.blob);
79
104
  link = document.createElement("a");
80
105
  link.href = fileUrl;
81
- link.download = response.fileName || "".concat(moduleName, ".sldx");
106
+ link.download = response.fileName || "".concat(moduleName, "-v").concat(exportVersion, ".sldx");
82
107
  document.body.appendChild(link);
83
108
  link.click();
84
109
  link.remove();
@@ -86,7 +111,7 @@ var ExportModulePackageRowAction = function (event) {
86
111
  dispatch(showToast({
87
112
  severity: "success",
88
113
  summary: "Module exported",
89
- detail: "".concat(moduleDisplayName, " was packaged and downloaded as a .sldx archive."),
114
+ detail: "".concat(moduleDisplayName, " v").concat(exportVersion, " was packaged and downloaded as a .sldx archive."),
90
115
  }));
91
116
  dispatch(closePopup());
92
117
  return [3 /*break*/, 5];
@@ -106,7 +131,9 @@ var ExportModulePackageRowAction = function (event) {
106
131
  if (isExporting) {
107
132
  return (_jsxs("div", { className: "solid-generate-code-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-generate-code-popup__head", children: _jsxs("div", { children: [_jsx("h3", { className: "solid-filter-dialog-title", children: "Export Module" }), _jsx("p", { className: "solid-filter-dialog-subtitle m-0", children: "Building a SolidX module package with a manifest and checksums." })] }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading", children: [_jsx(SolidCircularLoader, {}), _jsx("p", { className: "solid-generate-code-popup__loading-title", children: "Packaging module..." }), _jsx("p", { className: "solid-generate-code-popup__loading-copy", children: "Preparing the archive and starting the `.sldx` download." })] })] }));
108
133
  }
109
- return (_jsxs("div", { className: "solid-generate-code-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-generate-code-popup__head", children: _jsxs("div", { children: [_jsx("h3", { className: "solid-filter-dialog-title", children: "Export Module" }), _jsx("p", { className: "solid-filter-dialog-subtitle m-0", children: "Package the selected module into a reusable `.sldx` archive for distribution across SolidX projects." })] }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-generate-code-popup__body", children: [_jsxs("p", { className: "solid-generate-code-popup__intro", children: ["Export ", _jsx("strong", { children: moduleDisplayName }), " with its `solid-api`, `solid-ui`, and manifest assets."] }), _jsxs("div", { className: "solid-generate-code-popup__panel", children: [_jsxs("div", { className: "solid-generate-code-popup__panel-title", children: [_jsx(FileArchive, { size: 15 }), _jsx("span", { children: "Archive contents" })] }), _jsx("ul", { className: "solid-generate-code-popup__list", children: exportArtifacts.map(function (item) { return (_jsx("li", { children: item }, item)); }) })] }), _jsxs("div", { className: "solid-generate-code-popup__panel", children: [_jsxs("div", { className: "solid-generate-code-popup__panel-title", children: [_jsx(ShieldCheck, { size: 15 }), _jsx("span", { children: "Export guarantees" })] }), _jsxs("ul", { className: "solid-generate-code-popup__list", children: [_jsx("li", { children: "Archive is generated from the current local module folders." }), _jsx("li", { children: "Manifest includes SHA-256 checksums for packaged module files." }), _jsx("li", { children: "Download is delivered as a `.sldx` file ready for import testing." })] })] }), errorState ? (_jsxs("div", { className: "solid-generate-code-popup__notice is-warning", children: [_jsx(Files, { size: 16 }), _jsx("span", { children: errorState })] })) : null, _jsxs("div", { className: "solid-generate-code-popup__actions", children: [_jsx(SolidButton, { size: "small", autoFocus: true, leftIcon: _jsx(Download, { size: 14 }), onClick: handleExport, children: "Export Module" }), _jsx(SolidButton, { size: "small", variant: "outline", onClick: function () { return dispatch(closePopup()); }, children: "Cancel" })] })] })] }));
134
+ return (_jsxs("div", { className: "solid-generate-code-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-generate-code-popup__head", children: _jsxs("div", { children: [_jsx("h3", { className: "solid-filter-dialog-title", children: "Export Module" }), _jsx("p", { className: "solid-filter-dialog-subtitle m-0", children: "Package the selected module into a reusable `.sldx` archive for distribution across SolidX projects." })] }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-generate-code-popup__body", children: [_jsxs("p", { className: "solid-generate-code-popup__intro", children: ["Export ", _jsx("strong", { children: moduleDisplayName }), " with its `solid-api`, `solid-ui`, and manifest assets."] }), _jsxs("div", { className: "solid-generate-code-popup__panel", children: [_jsxs("div", { className: "solid-generate-code-popup__panel-title", children: [_jsx(Tag, { size: 15 }), _jsx("span", { children: "Version" })] }), currentVersion ? (_jsxs("div", { className: "solid-export-module-version", children: [_jsx(SolidSegmentedControl, { options: VERSION_BUMP_OPTIONS, value: bump, onChange: function (value) { return setBump(value); } }), _jsx("p", { className: "solid-export-module-version__copy", children: bump === "none"
135
+ ? "Exports the current version, v".concat(currentVersion, ".")
136
+ : "Bumps v".concat(currentVersion, " to v").concat(exportVersion, " in the module metadata file, then exports it.") })] })) : (_jsxs("div", { className: "solid-export-module-version", children: [_jsx("label", { className: "solid-export-module-version__label", htmlFor: "export-module-initial-version", children: "This module has no version yet. Set its initial version:" }), _jsx(SolidInput, { id: "export-module-initial-version", value: initialVersion, onChange: function (changeEvent) { return setInitialVersion(changeEvent.target.value); }, placeholder: "1.0.0", "aria-invalid": !isInitialVersionValid }), !isInitialVersionValid ? (_jsx("p", { className: "solid-export-module-version__error", children: "Use a semver version such as 1.0.0." })) : null] })), _jsxs("p", { className: "solid-export-module-version__copy", children: ["File: ", _jsxs("code", { children: [moduleName, "-v", exportVersion || "?", ".sldx"] })] })] }), _jsxs("div", { className: "solid-generate-code-popup__panel", children: [_jsxs("div", { className: "solid-generate-code-popup__panel-title", children: [_jsx(FileArchive, { size: 15 }), _jsx("span", { children: "Archive contents" })] }), _jsx("ul", { className: "solid-generate-code-popup__list", children: exportArtifacts.map(function (item) { return (_jsx("li", { children: item }, item)); }) })] }), _jsxs("div", { className: "solid-generate-code-popup__panel", children: [_jsxs("div", { className: "solid-generate-code-popup__panel-title", children: [_jsx(ShieldCheck, { size: 15 }), _jsx("span", { children: "Export guarantees" })] }), _jsxs("ul", { className: "solid-generate-code-popup__list", children: [_jsx("li", { children: "Archive is generated from the current local module folders." }), _jsx("li", { children: "Manifest includes SHA-256 checksums for packaged module files." }), _jsx("li", { children: "Download is delivered as a `.sldx` file ready for import testing." })] })] }), errorState ? (_jsxs("div", { className: "solid-generate-code-popup__notice is-warning", children: [_jsx(Files, { size: 16 }), _jsx("span", { children: errorState })] })) : null, _jsxs("div", { className: "solid-generate-code-popup__actions", children: [_jsxs(SolidButton, { size: "small", autoFocus: true, leftIcon: _jsx(Download, { size: 14 }), onClick: handleExport, disabled: !currentVersion && !isInitialVersionValid, children: ["Export v", exportVersion || "?"] }), _jsx(SolidButton, { size: "small", variant: "outline", onClick: function () { return dispatch(closePopup()); }, children: "Cancel" })] })] })] }));
110
137
  };
111
138
  export default ExportModulePackageRowAction;
112
139
  //# sourceMappingURL=ExportModulePackageRowAction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExportModulePackageRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Download, FileArchive, Files, ShieldCheck } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport { useExportModulePackageMutation } from \"../../../../../../redux/api/moduleApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../../shad-cn-ui\";\n\nconst ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [isExporting, setIsExporting] = useState(false);\n const [errorState, setErrorState] = useState<string | null>(null);\n const [exportModulePackage] = useExportModulePackageMutation();\n\n const moduleName = String(event?.rowData?.name || event?.rowData?.id || \"\").trim();\n const moduleDisplayName = String(event?.rowData?.displayName || moduleName || \"this module\").trim();\n\n const exportArtifacts = useMemo(\n () => [\n \"solid-api module folder\",\n \"solid-ui module folder\",\n \"manifest.json with archive checksums\",\n \"Packaged .sldx download\",\n ],\n []\n );\n\n const handleExport = async () => {\n if (!moduleName) {\n setErrorState(\"The selected module does not have a valid name for export.\");\n return;\n }\n\n try {\n setIsExporting(true);\n setErrorState(null);\n\n const response = await exportModulePackage({ moduleName }).unwrap();\n const fileUrl = window.URL.createObjectURL(response.blob);\n const link = document.createElement(\"a\");\n link.href = fileUrl;\n link.download = response.fileName || `${moduleName}.sldx`;\n document.body.appendChild(link);\n link.click();\n link.remove();\n window.URL.revokeObjectURL(fileUrl);\n\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"Module exported\",\n detail: `${moduleDisplayName} was packaged and downloaded as a .sldx archive.`,\n })\n );\n dispatch(closePopup());\n } catch (error: any) {\n const detail = error?.data?.message || error?.message || \"Unable to export the selected module.\";\n setErrorState(String(detail));\n dispatch(showToast({ severity: \"error\", summary: \"Export failed\", detail: String(detail) }));\n } finally {\n setIsExporting(false);\n }\n };\n\n if (isExporting) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Export Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Building a SolidX module package with a manifest and checksums.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">Packaging module...</p>\n <p className=\"solid-generate-code-popup__loading-copy\">Preparing the archive and starting the `.sldx` download.</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Export Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Package the selected module into a reusable `.sldx` archive for distribution across SolidX projects.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n <p className=\"solid-generate-code-popup__intro\">\n Export <strong>{moduleDisplayName}</strong> with its `solid-api`, `solid-ui`, and manifest assets.\n </p>\n\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <FileArchive size={15} />\n <span>Archive contents</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n {exportArtifacts.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <ShieldCheck size={15} />\n <span>Export guarantees</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n <li>Archive is generated from the current local module folders.</li>\n <li>Manifest includes SHA-256 checksums for packaged module files.</li>\n <li>Download is delivered as a `.sldx` file ready for import testing.</li>\n </ul>\n </div>\n\n {errorState ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <Files size={16} />\n <span>{errorState}</span>\n </div>\n ) : null}\n\n <div className=\"solid-generate-code-popup__actions\">\n <SolidButton size=\"small\" autoFocus leftIcon={<Download size={14} />} onClick={handleExport}>\n Export Module\n </SolidButton>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ExportModulePackageRowAction;\n"]}
1
+ {"version":3,"file":"ExportModulePackageRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Download, FileArchive, Files, ShieldCheck, Tag } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport { useExportModulePackageMutation } from \"../../../../../../redux/api/moduleApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton, SolidInput, SolidSegmentedControl } from \"../../../../../shad-cn-ui\";\n\ntype VersionBump = \"none\" | \"patch\" | \"minor\" | \"major\";\n\nconst VERSION_BUMP_OPTIONS: Array<{ label: string; value: VersionBump }> = [\n { label: \"Keep\", value: \"none\" },\n { label: \"Patch\", value: \"patch\" },\n { label: \"Minor\", value: \"minor\" },\n { label: \"Major\", value: \"major\" },\n];\n\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/;\n\n// Preview only, mirroring semver.inc; the API computes the version that is actually written.\nfunction previewBumpedVersion(version: string, bump: VersionBump) {\n const match = version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-[^+]*)?/);\n if (!match || bump === \"none\") return version;\n const [major, minor, patch] = match.slice(1, 4).map(Number);\n const isPrerelease = Boolean(match[4]);\n if (bump === \"patch\") return isPrerelease ? `${major}.${minor}.${patch}` : `${major}.${minor}.${patch + 1}`;\n if (bump === \"minor\") return isPrerelease && patch === 0 ? `${major}.${minor}.0` : `${major}.${minor + 1}.0`;\n return isPrerelease && minor === 0 && patch === 0 ? `${major}.0.0` : `${major + 1}.0.0`;\n}\n\nconst ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [isExporting, setIsExporting] = useState(false);\n const [errorState, setErrorState] = useState<string | null>(null);\n const [exportModulePackage] = useExportModulePackageMutation();\n\n const moduleName = String(event?.rowData?.name || event?.rowData?.id || \"\").trim();\n const moduleDisplayName = String(event?.rowData?.displayName || moduleName || \"this module\").trim();\n const currentVersion = String(event?.rowData?.version || \"\").trim() || null;\n const [bump, setBump] = useState<VersionBump>(\"none\");\n const [initialVersion, setInitialVersion] = useState(\"1.0.0\");\n const isInitialVersionValid = SEMVER_PATTERN.test(initialVersion.trim());\n const exportVersion = currentVersion ? previewBumpedVersion(currentVersion, bump) : initialVersion.trim();\n\n const exportArtifacts = useMemo(\n () => [\n \"solid-api module folder\",\n \"solid-ui module folder\",\n \"manifest.json with archive checksums\",\n \"Packaged .sldx download\",\n ],\n []\n );\n\n const handleExport = async () => {\n if (!moduleName) {\n setErrorState(\"The selected module does not have a valid name for export.\");\n return;\n }\n\n try {\n setIsExporting(true);\n setErrorState(null);\n\n const response = await exportModulePackage(\n currentVersion ? { moduleName, bump } : { moduleName, version: initialVersion.trim() },\n ).unwrap();\n const fileUrl = window.URL.createObjectURL(response.blob);\n const link = document.createElement(\"a\");\n link.href = fileUrl;\n link.download = response.fileName || `${moduleName}-v${exportVersion}.sldx`;\n document.body.appendChild(link);\n link.click();\n link.remove();\n window.URL.revokeObjectURL(fileUrl);\n\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"Module exported\",\n detail: `${moduleDisplayName} v${exportVersion} was packaged and downloaded as a .sldx archive.`,\n })\n );\n dispatch(closePopup());\n } catch (error: any) {\n const detail = error?.data?.message || error?.message || \"Unable to export the selected module.\";\n setErrorState(String(detail));\n dispatch(showToast({ severity: \"error\", summary: \"Export failed\", detail: String(detail) }));\n } finally {\n setIsExporting(false);\n }\n };\n\n if (isExporting) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Export Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Building a SolidX module package with a manifest and checksums.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">Packaging module...</p>\n <p className=\"solid-generate-code-popup__loading-copy\">Preparing the archive and starting the `.sldx` download.</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Export Module</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Package the selected module into a reusable `.sldx` archive for distribution across SolidX projects.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n <p className=\"solid-generate-code-popup__intro\">\n Export <strong>{moduleDisplayName}</strong> with its `solid-api`, `solid-ui`, and manifest assets.\n </p>\n\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <Tag size={15} />\n <span>Version</span>\n </div>\n {currentVersion ? (\n <div className=\"solid-export-module-version\">\n <SolidSegmentedControl options={VERSION_BUMP_OPTIONS} value={bump} onChange={(value) => setBump(value)} />\n <p className=\"solid-export-module-version__copy\">\n {bump === \"none\"\n ? `Exports the current version, v${currentVersion}.`\n : `Bumps v${currentVersion} to v${exportVersion} in the module metadata file, then exports it.`}\n </p>\n </div>\n ) : (\n <div className=\"solid-export-module-version\">\n <label className=\"solid-export-module-version__label\" htmlFor=\"export-module-initial-version\">\n This module has no version yet. Set its initial version:\n </label>\n <SolidInput\n id=\"export-module-initial-version\"\n value={initialVersion}\n onChange={(changeEvent) => setInitialVersion(changeEvent.target.value)}\n placeholder=\"1.0.0\"\n aria-invalid={!isInitialVersionValid}\n />\n {!isInitialVersionValid ? (\n <p className=\"solid-export-module-version__error\">Use a semver version such as 1.0.0.</p>\n ) : null}\n </div>\n )}\n <p className=\"solid-export-module-version__copy\">\n File: <code>{moduleName}-v{exportVersion || \"?\"}.sldx</code>\n </p>\n </div>\n\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <FileArchive size={15} />\n <span>Archive contents</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n {exportArtifacts.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <ShieldCheck size={15} />\n <span>Export guarantees</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n <li>Archive is generated from the current local module folders.</li>\n <li>Manifest includes SHA-256 checksums for packaged module files.</li>\n <li>Download is delivered as a `.sldx` file ready for import testing.</li>\n </ul>\n </div>\n\n {errorState ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <Files size={16} />\n <span>{errorState}</span>\n </div>\n ) : null}\n\n <div className=\"solid-generate-code-popup__actions\">\n <SolidButton\n size=\"small\"\n autoFocus\n leftIcon={<Download size={14} />}\n onClick={handleExport}\n disabled={!currentVersion && !isInitialVersionValid}\n >\n Export v{exportVersion || \"?\"}\n </SolidButton>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ExportModulePackageRowAction;\n"]}
@@ -1,12 +1,34 @@
1
1
  import { useMemo, useState } from "react";
2
2
  import { useDispatch } from "react-redux";
3
- import { Download, FileArchive, Files, ShieldCheck } from "lucide-react";
3
+ import { Download, FileArchive, Files, ShieldCheck, Tag } from "lucide-react";
4
4
  import { SolidCircularLoader } from "../../../../../../components/core/common/SolidLoaders/SolidCircularLoader";
5
5
  import { useExportModulePackageMutation } from "../../../../../../redux/api/moduleApi";
6
6
  import { closePopup } from "../../../../../../redux/features/popupSlice";
7
7
  import { showToast } from "../../../../../../redux/features/toastSlice";
8
8
  import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
9
- import { SolidButton } from "../../../../../shad-cn-ui";
9
+ import { SolidButton, SolidInput, SolidSegmentedControl } from "../../../../../shad-cn-ui";
10
+
11
+ type VersionBump = "none" | "patch" | "minor" | "major";
12
+
13
+ const VERSION_BUMP_OPTIONS: Array<{ label: string; value: VersionBump }> = [
14
+ { label: "Keep", value: "none" },
15
+ { label: "Patch", value: "patch" },
16
+ { label: "Minor", value: "minor" },
17
+ { label: "Major", value: "major" },
18
+ ];
19
+
20
+ const SEMVER_PATTERN = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
21
+
22
+ // Preview only, mirroring semver.inc; the API computes the version that is actually written.
23
+ function previewBumpedVersion(version: string, bump: VersionBump) {
24
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)(-[^+]*)?/);
25
+ if (!match || bump === "none") return version;
26
+ const [major, minor, patch] = match.slice(1, 4).map(Number);
27
+ const isPrerelease = Boolean(match[4]);
28
+ if (bump === "patch") return isPrerelease ? `${major}.${minor}.${patch}` : `${major}.${minor}.${patch + 1}`;
29
+ if (bump === "minor") return isPrerelease && patch === 0 ? `${major}.${minor}.0` : `${major}.${minor + 1}.0`;
30
+ return isPrerelease && minor === 0 && patch === 0 ? `${major}.0.0` : `${major + 1}.0.0`;
31
+ }
10
32
 
11
33
  const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {
12
34
  const dispatch = useDispatch();
@@ -16,6 +38,11 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
16
38
 
17
39
  const moduleName = String(event?.rowData?.name || event?.rowData?.id || "").trim();
18
40
  const moduleDisplayName = String(event?.rowData?.displayName || moduleName || "this module").trim();
41
+ const currentVersion = String(event?.rowData?.version || "").trim() || null;
42
+ const [bump, setBump] = useState<VersionBump>("none");
43
+ const [initialVersion, setInitialVersion] = useState("1.0.0");
44
+ const isInitialVersionValid = SEMVER_PATTERN.test(initialVersion.trim());
45
+ const exportVersion = currentVersion ? previewBumpedVersion(currentVersion, bump) : initialVersion.trim();
19
46
 
20
47
  const exportArtifacts = useMemo(
21
48
  () => [
@@ -37,11 +64,13 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
37
64
  setIsExporting(true);
38
65
  setErrorState(null);
39
66
 
40
- const response = await exportModulePackage({ moduleName }).unwrap();
67
+ const response = await exportModulePackage(
68
+ currentVersion ? { moduleName, bump } : { moduleName, version: initialVersion.trim() },
69
+ ).unwrap();
41
70
  const fileUrl = window.URL.createObjectURL(response.blob);
42
71
  const link = document.createElement("a");
43
72
  link.href = fileUrl;
44
- link.download = response.fileName || `${moduleName}.sldx`;
73
+ link.download = response.fileName || `${moduleName}-v${exportVersion}.sldx`;
45
74
  document.body.appendChild(link);
46
75
  link.click();
47
76
  link.remove();
@@ -51,7 +80,7 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
51
80
  showToast({
52
81
  severity: "success",
53
82
  summary: "Module exported",
54
- detail: `${moduleDisplayName} was packaged and downloaded as a .sldx archive.`,
83
+ detail: `${moduleDisplayName} v${exportVersion} was packaged and downloaded as a .sldx archive.`,
55
84
  })
56
85
  );
57
86
  dispatch(closePopup());
@@ -99,6 +128,42 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
99
128
  Export <strong>{moduleDisplayName}</strong> with its `solid-api`, `solid-ui`, and manifest assets.
100
129
  </p>
101
130
 
131
+ <div className="solid-generate-code-popup__panel">
132
+ <div className="solid-generate-code-popup__panel-title">
133
+ <Tag size={15} />
134
+ <span>Version</span>
135
+ </div>
136
+ {currentVersion ? (
137
+ <div className="solid-export-module-version">
138
+ <SolidSegmentedControl options={VERSION_BUMP_OPTIONS} value={bump} onChange={(value) => setBump(value)} />
139
+ <p className="solid-export-module-version__copy">
140
+ {bump === "none"
141
+ ? `Exports the current version, v${currentVersion}.`
142
+ : `Bumps v${currentVersion} to v${exportVersion} in the module metadata file, then exports it.`}
143
+ </p>
144
+ </div>
145
+ ) : (
146
+ <div className="solid-export-module-version">
147
+ <label className="solid-export-module-version__label" htmlFor="export-module-initial-version">
148
+ This module has no version yet. Set its initial version:
149
+ </label>
150
+ <SolidInput
151
+ id="export-module-initial-version"
152
+ value={initialVersion}
153
+ onChange={(changeEvent) => setInitialVersion(changeEvent.target.value)}
154
+ placeholder="1.0.0"
155
+ aria-invalid={!isInitialVersionValid}
156
+ />
157
+ {!isInitialVersionValid ? (
158
+ <p className="solid-export-module-version__error">Use a semver version such as 1.0.0.</p>
159
+ ) : null}
160
+ </div>
161
+ )}
162
+ <p className="solid-export-module-version__copy">
163
+ File: <code>{moduleName}-v{exportVersion || "?"}.sldx</code>
164
+ </p>
165
+ </div>
166
+
102
167
  <div className="solid-generate-code-popup__panel">
103
168
  <div className="solid-generate-code-popup__panel-title">
104
169
  <FileArchive size={15} />
@@ -131,8 +196,14 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
131
196
  ) : null}
132
197
 
133
198
  <div className="solid-generate-code-popup__actions">
134
- <SolidButton size="small" autoFocus leftIcon={<Download size={14} />} onClick={handleExport}>
135
- Export Module
199
+ <SolidButton
200
+ size="small"
201
+ autoFocus
202
+ leftIcon={<Download size={14} />}
203
+ onClick={handleExport}
204
+ disabled={!currentVersion && !isInitialVersionValid}
205
+ >
206
+ Export v{exportVersion || "?"}
136
207
  </SolidButton>
137
208
  <SolidButton size="small" variant="outline" onClick={() => dispatch(closePopup())}>
138
209
  Cancel
@@ -6,6 +6,7 @@ type ModuleImportListHeaderActionProps = {
6
6
  resumeTransactionKey?: string | null;
7
7
  autoResume?: boolean;
8
8
  };
9
+ export declare function refreshMatchingListViews(moduleName?: string, modelName?: string): void;
9
10
  export declare function ModuleImportListHeaderAction({ params, resumeTransactionKey, autoResume }: ModuleImportListHeaderActionProps): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=ModuleImportListHeaderAction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleImportListHeaderAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":"AAKA,KAAK,iCAAiC,GAAG;IACvC,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAYF,wBAAgB,4BAA4B,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,iCAAiC,2CAW3H"}
1
+ {"version":3,"file":"ModuleImportListHeaderAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":"AAKA,KAAK,iCAAiC,GAAG;IACvC,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,UAAU,SAAe,EAAE,SAAS,SAAmB,QAQ/F;AAED,wBAAgB,4BAA4B,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,iCAAiC,2CAW3H"}
@@ -3,7 +3,7 @@ import { useDispatch } from "react-redux";
3
3
  import { closePopup } from "../../../../../../redux/features/popupSlice";
4
4
  import { getListView, getRegisteredListViewIds } from "../../../../list/listViewRegistry";
5
5
  import { ModulePackageImportContent } from "../../../../module/ModulePackageDialog";
6
- function refreshMatchingListViews(moduleName, modelName) {
6
+ export function refreshMatchingListViews(moduleName, modelName) {
7
7
  if (moduleName === void 0) { moduleName = "solid-core"; }
8
8
  if (modelName === void 0) { modelName = "moduleMetadata"; }
9
9
  var prefix = "page:".concat(moduleName, ":").concat(modelName, ":");
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleImportListHeaderAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAWpF,SAAS,wBAAwB,CAAC,UAAyB,EAAE,SAA4B;IAAvD,2BAAA,EAAA,yBAAyB;IAAE,0BAAA,EAAA,4BAA4B;IACvF,IAAM,MAAM,GAAG,eAAQ,UAAU,cAAI,SAAS,MAAG,CAAC;IAElD,wBAAwB,EAAE;SACvB,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAzB,CAAyB,CAAC;SAC7C,OAAO,CAAC,UAAC,MAAM;;QACd,MAAA,WAAW,CAAC,MAAM,CAAC,0CAAE,OAAO,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAA+E;QAA7E,MAAM,YAAA,EAAE,oBAAoB,0BAAA,EAAE,UAAU,gBAAA;IACrF,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,0BAA0B,IACzB,qBAAqB,EAAE,oBAAoB,EAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,EACrC,UAAU,EAAE,cAAM,OAAA,wBAAwB,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,EAA/D,CAA+D,GACjF,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { getListView, getRegisteredListViewIds } from \"../../../../list/listViewRegistry\";\nimport { ModulePackageImportContent } from \"../../../../module/ModulePackageDialog\";\n\ntype ModuleImportListHeaderActionProps = {\n params?: {\n moduleName?: string;\n modelName?: string;\n };\n resumeTransactionKey?: string | null;\n autoResume?: boolean;\n};\n\nfunction refreshMatchingListViews(moduleName = \"solid-core\", modelName = \"moduleMetadata\") {\n const prefix = `page:${moduleName}:${modelName}:`;\n\n getRegisteredListViewIds()\n .filter((listId) => listId.startsWith(prefix))\n .forEach((listId) => {\n getListView(listId)?.refresh();\n });\n}\n\nexport function ModuleImportListHeaderAction({ params, resumeTransactionKey, autoResume }: ModuleImportListHeaderActionProps) {\n const dispatch = useDispatch();\n\n return (\n <ModulePackageImportContent\n initialTransactionKey={resumeTransactionKey}\n autoResume={autoResume}\n onClose={() => dispatch(closePopup())}\n onImported={() => refreshMatchingListViews(params?.moduleName, params?.modelName)}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"ModuleImportListHeaderAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAWpF,MAAM,UAAU,wBAAwB,CAAC,UAAyB,EAAE,SAA4B;IAAvD,2BAAA,EAAA,yBAAyB;IAAE,0BAAA,EAAA,4BAA4B;IAC9F,IAAM,MAAM,GAAG,eAAQ,UAAU,cAAI,SAAS,MAAG,CAAC;IAElD,wBAAwB,EAAE;SACvB,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAzB,CAAyB,CAAC;SAC7C,OAAO,CAAC,UAAC,MAAM;;QACd,MAAA,WAAW,CAAC,MAAM,CAAC,0CAAE,OAAO,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAA+E;QAA7E,MAAM,YAAA,EAAE,oBAAoB,0BAAA,EAAE,UAAU,gBAAA;IACrF,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,0BAA0B,IACzB,qBAAqB,EAAE,oBAAoB,EAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,EACrC,UAAU,EAAE,cAAM,OAAA,wBAAwB,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,EAA/D,CAA+D,GACjF,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { getListView, getRegisteredListViewIds } from \"../../../../list/listViewRegistry\";\nimport { ModulePackageImportContent } from \"../../../../module/ModulePackageDialog\";\n\ntype ModuleImportListHeaderActionProps = {\n params?: {\n moduleName?: string;\n modelName?: string;\n };\n resumeTransactionKey?: string | null;\n autoResume?: boolean;\n};\n\nexport function refreshMatchingListViews(moduleName = \"solid-core\", modelName = \"moduleMetadata\") {\n const prefix = `page:${moduleName}:${modelName}:`;\n\n getRegisteredListViewIds()\n .filter((listId) => listId.startsWith(prefix))\n .forEach((listId) => {\n getListView(listId)?.refresh();\n });\n}\n\nexport function ModuleImportListHeaderAction({ params, resumeTransactionKey, autoResume }: ModuleImportListHeaderActionProps) {\n const dispatch = useDispatch();\n\n return (\n <ModulePackageImportContent\n initialTransactionKey={resumeTransactionKey}\n autoResume={autoResume}\n onClose={() => dispatch(closePopup())}\n onImported={() => refreshMatchingListViews(params?.moduleName, params?.modelName)}\n />\n );\n}\n"]}
@@ -12,7 +12,7 @@ type ModuleImportListHeaderActionProps = {
12
12
  autoResume?: boolean;
13
13
  };
14
14
 
15
- function refreshMatchingListViews(moduleName = "solid-core", modelName = "moduleMetadata") {
15
+ export function refreshMatchingListViews(moduleName = "solid-core", modelName = "moduleMetadata") {
16
16
  const prefix = `page:${moduleName}:${modelName}:`;
17
17
 
18
18
  getRegisteredListViewIds()
@@ -0,0 +1,4 @@
1
+ import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
2
+ declare const RestoreModulePackageRowAction: (event: SolidListRowdataDynamicFunctionProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default RestoreModulePackageRowAction;
4
+ //# sourceMappingURL=RestoreModulePackageRowAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestoreModulePackageRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAK1F,QAAA,MAAM,6BAA6B,UAAW,oCAAoC,4CAqIjF,CAAC;AAEF,eAAe,6BAA6B,CAAC"}