@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.
- 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/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/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.map +1 -1
- package/dist/components/layout/SolidAiStudioLayout.js +3 -4
- package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
- package/dist/components/layout/SolidAiStudioLayout.tsx +3 -4
- 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.js +1 -1
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +1 -1
- 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 +6 -14
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +186 -146
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +170 -118
- 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":"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":"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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(
|
|
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
|
|
135
|
-
|
|
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;
|
|
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,
|
|
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"}
|