@solidxai/core-ui 0.1.19 → 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.
- package/dist/components/common/Link.d.ts.map +1 -1
- package/dist/components/common/Link.js +2 -1
- package/dist/components/common/Link.js.map +1 -1
- package/dist/components/common/Link.tsx +2 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +1 -0
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +109 -23
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +155 -34
- package/dist/components/core/chatter/SolidChatter.js +2 -2
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +2 -2
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +20 -19
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +16 -16
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +3 -10
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +3 -8
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +36 -9
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +78 -7
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts +4 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js +131 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx +151 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts +4 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js +13 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx +20 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +4 -0
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +4 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +50 -15
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +22 -3
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +16 -3
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +16 -2
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -1
- package/dist/components/core/module/ModulePackageDialog.css +102 -0
- package/dist/components/core/module/ModulePackageDialog.d.ts +2 -1
- package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -1
- package/dist/components/core/module/ModulePackageDialog.js +216 -68
- package/dist/components/core/module/ModulePackageDialog.js.map +1 -1
- package/dist/components/core/module/ModulePackageDialog.tsx +356 -76
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentChat.js +9 -3
- package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentChat.tsx +9 -4
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js +25 -6
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +15 -1
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts +5 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
- package/dist/components/core/solid-agent/client/agentRuntime.js +77 -20
- package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
- package/dist/components/core/solid-agent/client/agentRuntime.ts +29 -1
- package/dist/components/core/solid-agent/client/agentSocket.d.ts +5 -1
- package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
- package/dist/components/core/solid-agent/client/agentSocket.js +27 -4
- package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
- package/dist/components/core/solid-agent/client/agentSocket.ts +14 -3
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +2 -2
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +5 -5
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +2 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +2 -2
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +4 -4
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -1
- package/dist/components/core/solid-agent/thread/AgentThread.js +61 -26
- package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -1
- package/dist/components/core/solid-agent/thread/AgentThread.tsx +74 -40
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +2 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +2 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +3 -1
- package/dist/components/core/solid-agent/types.d.ts +3 -0
- package/dist/components/core/solid-agent/types.d.ts.map +1 -1
- package/dist/components/core/solid-agent/types.js +0 -9
- package/dist/components/core/solid-agent/types.js.map +1 -1
- package/dist/components/core/solid-agent/types.ts +4 -2
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +5 -2
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +11 -5
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +19 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +20 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +9 -1
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +23 -8
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +10 -6
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +1 -29
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +0 -42
- package/dist/components/layout/AdminTopHeader.js +2 -2
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +2 -2
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +21 -5
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +24 -6
- package/dist/components/layout/SolidAiStudioLayout.d.ts +0 -1
- package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
- package/dist/components/layout/SolidAiStudioLayout.js +8 -161
- package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
- package/dist/components/layout/SolidAiStudioLayout.tsx +6 -136
- package/dist/components/layout/user-profile-menu.js +10 -10
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/components/layout/user-profile-menu.tsx +3 -3
- package/dist/components/shad-cn-ui/SolidLightbox.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidLightbox.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidLightbox.js +11 -4
- package/dist/components/shad-cn-ui/SolidLightbox.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidLightbox.tsx +14 -1
- package/dist/helpers/modelViewPersistence.d.ts +2 -0
- package/dist/helpers/modelViewPersistence.d.ts.map +1 -1
- package/dist/helpers/modelViewPersistence.js +72 -0
- package/dist/helpers/modelViewPersistence.js.map +1 -1
- package/dist/helpers/modelViewPersistence.ts +79 -0
- package/dist/helpers/registry.d.ts +6 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +68 -3
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +62 -4
- package/dist/hooks/useModelsDevModels.d.ts +43 -0
- package/dist/hooks/useModelsDevModels.d.ts.map +1 -0
- package/dist/hooks/useModelsDevModels.js +81 -0
- package/dist/hooks/useModelsDevModels.js.map +1 -0
- package/dist/hooks/useModelsDevModels.ts +106 -0
- package/dist/hooks/useRouter.d.ts.map +1 -1
- package/dist/hooks/useRouter.js +3 -2
- package/dist/hooks/useRouter.js.map +1 -1
- package/dist/hooks/useRouter.ts +3 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -1
- package/dist/modules/solidUiModule.d.ts +3 -2
- package/dist/modules/solidUiModule.d.ts.map +1 -1
- package/dist/modules/solidUiModule.js +1 -1
- package/dist/modules/solidUiModule.js.map +1 -1
- package/dist/modules/solidUiModule.ts +5 -1
- package/dist/redux/api/moduleApi.d.ts +12 -2
- package/dist/redux/api/moduleApi.d.ts.map +1 -1
- package/dist/redux/api/moduleApi.js +33 -3
- package/dist/redux/api/moduleApi.js.map +1 -1
- package/dist/redux/api/moduleApi.ts +17 -2
- package/dist/redux/api/solidChatterMessageApi.d.ts +3 -1
- package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.js +9 -1
- package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.ts +9 -1
- package/dist/redux/store/defaultStoreConfig.d.ts +9 -1
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/resources/globals.css +30 -0
- package/dist/resources/solid-custom.css +10 -6
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/AppEventListener.d.ts.map +1 -1
- package/dist/routes/AppEventListener.js +3 -3
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +2 -3
- package/dist/routes/pages/admin/core/AgentHubTagsField.css +21 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts +17 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.js +171 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.tsx +125 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.css +130 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts +7 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.js +228 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.tsx +234 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +13 -14
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +218 -165
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +221 -127
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +14 -69
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +15 -83
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts +11 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.js +166 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.tsx +140 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +26 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +94 -71
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +60 -52
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts +2 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +108 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +96 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +2 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +2 -0
- package/dist/types/extension-registry.d.ts +12 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +15 -0
- package/dist/types/solid-core.d.ts +2 -0
- 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 (
|
|
160
|
+
if (unmappedVisibleEntries.length > 0) {
|
|
160
161
|
dispatch(showToast({
|
|
161
162
|
severity: "error",
|
|
162
163
|
summary: ERROR_MESSAGES.IMPORT_ERROR,
|
|
163
|
-
detail: ERROR_MESSAGES.
|
|
164
|
+
detail: ERROR_MESSAGES.IMPORT_UNMAPPED_COLUMNS,
|
|
164
165
|
}));
|
|
165
166
|
return;
|
|
166
167
|
}
|
|
167
168
|
|
|
168
|
-
if (
|
|
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:
|
|
173
|
+
detail: ERROR_MESSAGES.IMPORT_DUPLICATE_FIELD_MAPPING,
|
|
174
174
|
}));
|
|
175
175
|
return;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
if (
|
|
179
|
-
const errorDetail = ERROR_MESSAGES.
|
|
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 (
|
|
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":"AgentResourceCardWidget.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentResourceCardWidget.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAUrF,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,EAAE,OAAO,EAAE,EAAE,0BAA0B,2CA8B9E"}
|
package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js
CHANGED
|
@@ -2,17 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { SolidMaterialSymbol } from "../../../../../common/SolidMaterialSymbol";
|
|
3
3
|
import styles from "./AgentRegistryCardWidget.module.css";
|
|
4
4
|
function toTags(value) {
|
|
5
|
-
if (Array.isArray(value))
|
|
6
|
-
return value.map(String).map(function (tag) { return tag.trim(); }).filter(Boolean);
|
|
7
|
-
if (typeof value !== "string" || !value.trim())
|
|
5
|
+
if (!Array.isArray(value))
|
|
8
6
|
return [];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return Array.isArray(parsed) ? parsed.map(String).map(function (tag) { return tag.trim(); }).filter(Boolean) : [];
|
|
12
|
-
}
|
|
13
|
-
catch (_a) {
|
|
14
|
-
return value === "{}" ? [] : value.split(",").map(function (tag) { return tag.trim(); }).filter(Boolean);
|
|
15
|
-
}
|
|
7
|
+
return value.map(function (tag) { return typeof tag === "object" && tag ? tag.name : tag; })
|
|
8
|
+
.filter(function (name) { return typeof name === "string"; }).map(function (name) { return name.trim(); }).filter(Boolean);
|
|
16
9
|
}
|
|
17
10
|
/** Compact shared card renderer for agent skill and tool records. */
|
|
18
11
|
export function AgentResourceCardWidget(_a) {
|
package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentResourceCardWidget.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,MAAM,MAAM,sCAAsC,CAAC;AAE1D,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"AgentResourceCardWidget.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { SolidKanbanCardWidgetProps } from \"../../../../../../types/solid-core\";\nimport { SolidMaterialSymbol } from \"../../../../../common/SolidMaterialSymbol\";\nimport styles from \"./AgentRegistryCardWidget.module.css\";\n\nfunction toTags(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.map((tag) => typeof tag === \"object\" && tag ? tag.name : tag)\n .filter((name): name is string => typeof name === \"string\").map((name) => name.trim()).filter(Boolean);\n}\n\n/** Compact shared card renderer for agent skill and tool records. */\nexport function AgentResourceCardWidget({ rowData }: SolidKanbanCardWidgetProps) {\n const iconName = typeof rowData?.iconName === \"string\" && rowData.iconName.trim()\n ? rowData.iconName.trim()\n : rowData?.type ? \"build\" : \"psychology\";\n const name = typeof rowData?.name === \"string\" && rowData.name.trim() ? rowData.name.trim() : \"Untitled\";\n const description = typeof rowData?.description === \"string\" ? rowData.description.trim() : \"\";\n const tags = toTags(rowData?.tags);\n const status = typeof rowData?.status === \"string\" && rowData.status.trim() ? rowData.status.trim() : \"\";\n const loadError = status === \"load_failed\" && typeof rowData?.lastLoadError === \"string\"\n ? rowData.lastLoadError.trim()\n : \"\";\n const kind = typeof rowData?.type === \"string\" && rowData.type.trim() ? rowData.type.trim() : \"\";\n\n return (\n <article className={styles.card}>\n <div className={styles.header}>\n <div className={styles.iconBadge} aria-label={`${name} icon`}>\n <SolidMaterialSymbol name={iconName} size={22} aria-hidden=\"true\" />\n </div>\n {status && <span className={`${styles.status} ${styles[`status_${status.toLowerCase().replace(/[^a-z0-9]+/g, \"_\")}`] || \"\"}`}>{status.replace(/[_-]+/g, \" \")}</span>}\n </div>\n <div className={styles.heading}><h3 className={styles.title} title={name}>{name}</h3></div>\n <p className={styles.description} title={description || undefined}>{description || \"No description provided.\"}</p>\n {loadError && <p className={styles.loadError} title={loadError}>{loadError}</p>}\n {(kind || tags.length > 0) && <div className={styles.footer}>\n <div className={styles.meta}>{kind && <span className={styles.badge}>{kind.replace(/[_-]+/g, \" \")}</span>}</div>\n {tags.length > 0 && <div className={styles.tags}>{tags.slice(0, 3).map((tag) => <span className={styles.tag} key={tag}>{tag}</span>)}</div>}\n </div>}\n </article>\n );\n}\n"]}
|
package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx
CHANGED
|
@@ -3,14 +3,9 @@ import { SolidMaterialSymbol } from "../../../../../common/SolidMaterialSymbol";
|
|
|
3
3
|
import styles from "./AgentRegistryCardWidget.module.css";
|
|
4
4
|
|
|
5
5
|
function toTags(value: unknown): string[] {
|
|
6
|
-
if (Array.isArray(value)) return
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const parsed = JSON.parse(value);
|
|
10
|
-
return Array.isArray(parsed) ? parsed.map(String).map((tag) => tag.trim()).filter(Boolean) : [];
|
|
11
|
-
} catch {
|
|
12
|
-
return value === "{}" ? [] : value.split(",").map((tag) => tag.trim()).filter(Boolean);
|
|
13
|
-
}
|
|
6
|
+
if (!Array.isArray(value)) return [];
|
|
7
|
+
return value.map((tag) => typeof tag === "object" && tag ? tag.name : tag)
|
|
8
|
+
.filter((name): name is string => typeof name === "string").map((name) => name.trim()).filter(Boolean);
|
|
14
9
|
}
|
|
15
10
|
|
|
16
11
|
/** Compact shared card renderer for agent skill and tool records. */
|
|
@@ -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;
|
|
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
|
|
50
|
-
var
|
|
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(
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2EAA2E,CAAC;AAChH,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAI3F,IAAM,oBAAoB,GAAiD;IACzE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;CACnC,CAAC;AAEF,IAAM,cAAc,GAAG,0DAA0D,CAAC;AAElF,6FAA6F;AAC7F,SAAS,oBAAoB,CAAC,OAAe,EAAE,IAAiB;IAC9D,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC;IACxC,IAAA,KAAwB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAApD,KAAK,QAAA,EAAE,KAAK,QAAA,EAAE,KAAK,QAAiC,CAAC;IAC5D,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,UAAG,KAAK,cAAI,KAAK,cAAI,KAAK,CAAE,CAAC,CAAC,CAAC,UAAG,KAAK,cAAI,KAAK,cAAI,KAAK,GAAG,CAAC,CAAE,CAAC;IAC5G,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,YAAY,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAG,KAAK,cAAI,KAAK,OAAI,CAAC,CAAC,CAAC,UAAG,KAAK,cAAI,KAAK,GAAG,CAAC,OAAI,CAAC;IAC7G,OAAO,YAAY,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAG,KAAK,SAAM,CAAC,CAAC,CAAC,UAAG,KAAK,GAAG,CAAC,SAAM,CAAC;AAC1F,CAAC;AAED,IAAM,4BAA4B,GAAG,UAAC,KAA2C;;IAC/E,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACzB,IAAA,KAAgC,QAAQ,CAAC,KAAK,CAAC,EAA9C,WAAW,QAAA,EAAE,cAAc,QAAmB,CAAC;IAChD,IAAA,KAA8B,QAAQ,CAAgB,IAAI,CAAC,EAA1D,UAAU,QAAA,EAAE,aAAa,QAAiC,CAAC;IAC3D,IAAA,mBAAmB,GAAI,8BAA8B,EAAE,GAApC,CAAqC;IAE/D,IAAM,UAAU,GAAG,MAAM,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,IAAI,MAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,EAAE,CAAA,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,IAAM,iBAAiB,GAAG,MAAM,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,WAAW,KAAI,UAAU,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IACpG,IAAM,cAAc,GAAG,MAAM,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACtE,IAAA,KAAkB,QAAQ,CAAc,MAAM,CAAC,EAA9C,IAAI,QAAA,EAAE,OAAO,QAAiC,CAAC;IAChD,IAAA,KAAsC,QAAQ,CAAC,OAAO,CAAC,EAAtD,cAAc,QAAA,EAAE,iBAAiB,QAAqB,CAAC;IAC9D,IAAM,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,IAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE1G,IAAM,eAAe,GAAG,OAAO,CAC7B,cAAM,OAAA;QACJ,yBAAyB;QACzB,wBAAwB;QACxB,sCAAsC;QACtC,yBAAyB;KAC1B,EALK,CAKL,EACD,EAAE,CACH,CAAC;IAEF,IAAM,YAAY,GAAG;;;;;;oBACnB,IAAI,CAAC,UAAU,EAAE;wBACf,aAAa,CAAC,4DAA4D,CAAC,CAAC;wBAC5E,sBAAO;qBACR;;;;oBAGC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,aAAa,CAAC,IAAI,CAAC,CAAC;oBAEH,qBAAM,mBAAmB,CACxC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,YAAA,EAAE,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,EAAE,CACvF,CAAC,MAAM,EAAE,EAAA;;oBAFJ,QAAQ,GAAG,SAEP;oBACJ,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpD,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;oBACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,UAAG,UAAU,eAAK,aAAa,UAAO,CAAC;oBAC5E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAEpC,QAAQ,CACN,SAAS,CAAC;wBACR,QAAQ,EAAE,SAAS;wBACnB,OAAO,EAAE,iBAAiB;wBAC1B,MAAM,EAAE,UAAG,iBAAiB,eAAK,aAAa,qDAAkD;qBACjG,CAAC,CACH,CAAC;oBACF,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;;;;oBAEjB,MAAM,GAAG,CAAA,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,OAAO,MAAI,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,CAAA,IAAI,uCAAuC,CAAC;oBACjG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;;;oBAE7F,cAAc,CAAC,KAAK,CAAC,CAAC;;;;;SAEzB,CAAC;IAEF,IAAI,WAAW,EAAE;QACf,OAAO,CACL,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,0DAA0D,YACvE,0BACE,aAAI,SAAS,EAAC,2BAA2B,8BAAmB,EAC5D,YAAG,SAAS,EAAC,kCAAkC,gFAAoE,IAC/G,GACF,EACN,cAAK,SAAS,EAAC,yBAAyB,GAAG,EAC3C,eAAK,SAAS,EAAC,mGAAmG,aAChH,KAAC,mBAAmB,KAAG,EACvB,YAAG,SAAS,EAAC,0CAA0C,oCAAwB,EAC/E,YAAG,SAAS,EAAC,yCAAyC,yEAA6D,IAC/G,IACF,CACP,CAAC;KACH;IAED,OAAO,CACL,eAAK,SAAS,EAAC,2BAA2B,aACxC,cAAK,SAAS,EAAC,0DAA0D,YACvE,0BACE,aAAI,SAAS,EAAC,2BAA2B,8BAAmB,EAC5D,YAAG,SAAS,EAAC,kCAAkC,qHAE3C,IACA,GACF,EACN,cAAK,SAAS,EAAC,yBAAyB,GAAG,EAC3C,eAAK,SAAS,EAAC,0DAA0D,aACvE,aAAG,SAAS,EAAC,kCAAkC,wBACtC,2BAAS,iBAAiB,GAAU,+DACzC,EAEJ,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,wCAAwC,aACrD,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,EACjB,qCAAoB,IAChB,EACL,cAAc,CAAC,CAAC,CAAC,CAChB,eAAK,SAAS,EAAC,6BAA6B,aAC1C,KAAC,qBAAqB,IAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,GAAI,EAC1G,YAAG,SAAS,EAAC,mCAAmC,YAC7C,IAAI,KAAK,MAAM;4CACd,CAAC,CAAC,wCAAiC,cAAc,MAAG;4CACpD,CAAC,CAAC,iBAAU,cAAc,kBAAQ,aAAa,mDAAgD,GAC/F,IACA,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,6BAA6B,aAC1C,gBAAO,SAAS,EAAC,oCAAoC,EAAC,OAAO,EAAC,+BAA+B,yEAErF,EACR,KAAC,UAAU,IACT,EAAE,EAAC,+BAA+B,EAClC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,UAAC,WAAW,IAAK,OAAA,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAA3C,CAA2C,EACtE,WAAW,EAAC,OAAO,kBACL,CAAC,qBAAqB,GACpC,EACD,CAAC,qBAAqB,CAAC,CAAC,CAAC,CACxB,YAAG,SAAS,EAAC,oCAAoC,oDAAwC,CAC1F,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,EACD,aAAG,SAAS,EAAC,mCAAmC,uBACxC,2BAAO,UAAU,QAAI,aAAa,IAAI,GAAG,aAAa,IAC1D,IACA,EAEN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,wCAAwC,aACrD,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EACzB,8CAA6B,IACzB,EACN,aAAI,SAAS,EAAC,iCAAiC,YAC5C,eAAe,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,CAC7B,uBAAgB,IAAI,IAAX,IAAI,CAAa,CAC3B,EAF8B,CAE9B,CAAC,GACC,IACD,EAEN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAK,SAAS,EAAC,wCAAwC,aACrD,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EACzB,+CAA8B,IAC1B,EACN,cAAI,SAAS,EAAC,iCAAiC,aAC7C,uFAAoE,EACpE,0FAAuE,EACvE,6FAA0E,IACvE,IACD,EAEL,UAAU,CAAC,CAAC,CAAC,CACZ,eAAK,SAAS,EAAC,8CAA8C,aAC3D,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,EACnB,yBAAO,UAAU,GAAQ,IACrB,CACP,CAAC,CAAC,CAAC,IAAI,EAER,eAAK,SAAS,EAAC,oCAAoC,aACjD,MAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,SAAS,QACT,QAAQ,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAChC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,CAAC,cAAc,IAAI,CAAC,qBAAqB,yBAE1C,aAAa,IAAI,GAAG,IACjB,EACd,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,uBAEnE,IACV,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,4BAA4B,CAAC","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"]}
|