| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | 'use client' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import type { Dispatch, SetStateAction } from 'react' | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  | import { useCallback, useState } from 'react' | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | import { createContext, useContext, useContextSelector } from 'use-context-selector' | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  | import { useRouter, useSearchParams } from 'next/navigation' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | import AccountSetting from '@/app/components/header/account-setting' | 
					
						
							|  |  |  | import ApiBasedExtensionModal from '@/app/components/header/account-setting/api-based-extension-page/modal' | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  | import ModerationSettingModal from '@/app/components/base/features/new-feature-panel/moderation/moderation-setting-modal' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | import ExternalDataToolModal from '@/app/components/app/configuration/tools/external-data-tool-modal' | 
					
						
							| 
									
										
										
										
											2023-12-18 15:41:24 +08:00
										 |  |  | import AnnotationFullModal from '@/app/components/billing/annotation-full/modal' | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  | import ModelModal from '@/app/components/header/account-setting/model-provider-page/model-modal' | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  | import ExternalAPIModal from '@/app/components/datasets/external-api/external-api-modal' | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  | import type { | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   ConfigurationMethodEnum, | 
					
						
							|  |  |  |   CustomConfigurationModelFixedFields, | 
					
						
							|  |  |  |   ModelLoadBalancingConfigEntry, | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |   ModelProvider, | 
					
						
							|  |  |  | } from '@/app/components/header/account-setting/model-provider-page/declarations' | 
					
						
							| 
									
										
										
										
											2025-04-01 13:58:10 +08:00
										 |  |  | import { | 
					
						
							|  |  |  |   EDUCATION_VERIFYING_LOCALSTORAGE_ITEM, | 
					
						
							|  |  |  | } from '@/app/education-apply/constants' | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  | import Pricing from '@/app/components/billing/pricing' | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  | import type { ModerationConfig, PromptVariable } from '@/models/debug' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | import type { | 
					
						
							|  |  |  |   ApiBasedExtension, | 
					
						
							|  |  |  |   ExternalDataTool, | 
					
						
							|  |  |  | } from '@/models/common' | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  | import type { CreateExternalAPIReq } from '@/app/components/datasets/external-api/declarations' | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | import ModelLoadBalancingEntryModal from '@/app/components/header/account-setting/model-provider-page/model-modal/model-load-balancing-entry-modal' | 
					
						
							|  |  |  | import type { ModelLoadBalancingModalProps } from '@/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-modal' | 
					
						
							|  |  |  | import ModelLoadBalancingModal from '@/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-modal' | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  | import OpeningSettingModal from '@/app/components/base/features/new-feature-panel/conversation-opener/modal' | 
					
						
							|  |  |  | import type { OpeningStatement } from '@/app/components/base/features/types' | 
					
						
							|  |  |  | import type { InputVar } from '@/app/components/workflow/types' | 
					
						
							| 
									
										
										
										
											2025-02-17 17:05:13 +08:00
										 |  |  | import type { UpdatePluginPayload } from '@/app/components/plugins/types' | 
					
						
							|  |  |  | import UpdatePlugin from '@/app/components/plugins/update-plugin' | 
					
						
							| 
									
										
										
										
											2025-04-01 13:58:10 +08:00
										 |  |  | import { removeSpecificQueryParam } from '@/utils' | 
					
						
							| 
									
										
										
										
											2025-04-06 17:56:08 +08:00
										 |  |  | import { noop } from 'lodash-es' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export type ModalState<T> = { | 
					
						
							|  |  |  |   payload: T | 
					
						
							|  |  |  |   onCancelCallback?: () => void | 
					
						
							|  |  |  |   onSaveCallback?: (newPayload: T) => void | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   onRemoveCallback?: (newPayload: T) => void | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |   onEditCallback?: (newPayload: T) => void | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |   onValidateBeforeSaveCallback?: (newPayload: T) => boolean | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |   isEditMode?: boolean | 
					
						
							|  |  |  |   datasetBindings?: { id: string; name: string }[] | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  | export type ModelModalType = { | 
					
						
							|  |  |  |   currentProvider: ModelProvider | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   currentConfigurationMethod: ConfigurationMethodEnum | 
					
						
							|  |  |  |   currentCustomConfigurationModelFixedFields?: CustomConfigurationModelFixedFields | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | export type LoadBalancingEntryModalType = ModelModalType & { | 
					
						
							|  |  |  |   entry?: ModelLoadBalancingConfigEntry | 
					
						
							|  |  |  |   index?: number | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-02-17 17:05:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | export type ModalContextState = { | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |   setShowAccountSettingModal: Dispatch<SetStateAction<ModalState<string> | null>> | 
					
						
							|  |  |  |   setShowApiBasedExtensionModal: Dispatch<SetStateAction<ModalState<ApiBasedExtension> | null>> | 
					
						
							|  |  |  |   setShowModerationSettingModal: Dispatch<SetStateAction<ModalState<ModerationConfig> | null>> | 
					
						
							|  |  |  |   setShowExternalDataToolModal: Dispatch<SetStateAction<ModalState<ExternalDataTool> | null>> | 
					
						
							| 
									
										
										
										
											2024-05-30 16:15:38 +08:00
										 |  |  |   setShowPricingModal: () => void | 
					
						
							| 
									
										
										
										
											2023-12-18 15:41:24 +08:00
										 |  |  |   setShowAnnotationFullModal: () => void | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |   setShowModelModal: Dispatch<SetStateAction<ModalState<ModelModalType> | null>> | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |   setShowExternalKnowledgeAPIModal: Dispatch<SetStateAction<ModalState<CreateExternalAPIReq> | null>> | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   setShowModelLoadBalancingModal: Dispatch<SetStateAction<ModelLoadBalancingModalProps | null>> | 
					
						
							|  |  |  |   setShowModelLoadBalancingEntryModal: Dispatch<SetStateAction<ModalState<LoadBalancingEntryModalType> | null>> | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |   setShowOpeningModal: Dispatch<SetStateAction<ModalState<OpeningStatement & { | 
					
						
							|  |  |  |     promptVariables?: PromptVariable[] | 
					
						
							|  |  |  |     workflowVariables?: InputVar[] | 
					
						
							|  |  |  |     onAutoAddPromptVariable?: (variable: PromptVariable[]) => void | 
					
						
							|  |  |  |   }> | null>> | 
					
						
							| 
									
										
										
										
											2025-02-17 17:05:13 +08:00
										 |  |  |   setShowUpdatePluginModal: Dispatch<SetStateAction<ModalState<UpdatePluginPayload> | null>> | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | } | 
					
						
							|  |  |  | const ModalContext = createContext<ModalContextState>({ | 
					
						
							| 
									
										
										
										
											2025-04-06 17:56:08 +08:00
										 |  |  |   setShowAccountSettingModal: noop, | 
					
						
							|  |  |  |   setShowApiBasedExtensionModal: noop, | 
					
						
							|  |  |  |   setShowModerationSettingModal: noop, | 
					
						
							|  |  |  |   setShowExternalDataToolModal: noop, | 
					
						
							|  |  |  |   setShowPricingModal: noop, | 
					
						
							|  |  |  |   setShowAnnotationFullModal: noop, | 
					
						
							|  |  |  |   setShowModelModal: noop, | 
					
						
							|  |  |  |   setShowExternalKnowledgeAPIModal: noop, | 
					
						
							|  |  |  |   setShowModelLoadBalancingModal: noop, | 
					
						
							|  |  |  |   setShowModelLoadBalancingEntryModal: noop, | 
					
						
							|  |  |  |   setShowOpeningModal: noop, | 
					
						
							|  |  |  |   setShowUpdatePluginModal: noop, | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | }) | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export const useModalContext = () => useContext(ModalContext) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  | // Adding a dangling comma to avoid the generic parsing issue in tsx, see:
 | 
					
						
							|  |  |  | // https://github.com/microsoft/TypeScript/issues/15713
 | 
					
						
							|  |  |  | export const useModalContextSelector = <T,>(selector: (state: ModalContextState) => T): T => | 
					
						
							|  |  |  |   useContextSelector(ModalContext, selector) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | type ModalContextProviderProps = { | 
					
						
							|  |  |  |   children: React.ReactNode | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | export const ModalContextProvider = ({ | 
					
						
							|  |  |  |   children, | 
					
						
							|  |  |  | }: ModalContextProviderProps) => { | 
					
						
							|  |  |  |   const [showAccountSettingModal, setShowAccountSettingModal] = useState<ModalState<string> | null>(null) | 
					
						
							|  |  |  |   const [showApiBasedExtensionModal, setShowApiBasedExtensionModal] = useState<ModalState<ApiBasedExtension> | null>(null) | 
					
						
							|  |  |  |   const [showModerationSettingModal, setShowModerationSettingModal] = useState<ModalState<ModerationConfig> | null>(null) | 
					
						
							|  |  |  |   const [showExternalDataToolModal, setShowExternalDataToolModal] = useState<ModalState<ExternalDataTool> | null>(null) | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |   const [showModelModal, setShowModelModal] = useState<ModalState<ModelModalType> | null>(null) | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |   const [showExternalKnowledgeAPIModal, setShowExternalKnowledgeAPIModal] = useState<ModalState<CreateExternalAPIReq> | null>(null) | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   const [showModelLoadBalancingModal, setShowModelLoadBalancingModal] = useState<ModelLoadBalancingModalProps | null>(null) | 
					
						
							|  |  |  |   const [showModelLoadBalancingEntryModal, setShowModelLoadBalancingEntryModal] = useState<ModalState<LoadBalancingEntryModalType> | null>(null) | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |   const [showOpeningModal, setShowOpeningModal] = useState<ModalState<OpeningStatement & { | 
					
						
							|  |  |  |     promptVariables?: PromptVariable[] | 
					
						
							|  |  |  |     workflowVariables?: InputVar[] | 
					
						
							|  |  |  |     onAutoAddPromptVariable?: (variable: PromptVariable[]) => void | 
					
						
							|  |  |  |   }> | null>(null) | 
					
						
							| 
									
										
										
										
											2025-02-17 17:05:13 +08:00
										 |  |  |   const [showUpdatePluginModal, setShowUpdatePluginModal] = useState<ModalState<UpdatePluginPayload> | null>(null) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  |   const searchParams = useSearchParams() | 
					
						
							|  |  |  |   const router = useRouter() | 
					
						
							|  |  |  |   const [showPricingModal, setShowPricingModal] = useState(searchParams.get('show-pricing') === '1') | 
					
						
							| 
									
										
										
										
											2023-12-18 15:41:24 +08:00
										 |  |  |   const [showAnnotationFullModal, setShowAnnotationFullModal] = useState(false) | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |   const handleCancelAccountSettingModal = () => { | 
					
						
							| 
									
										
										
										
											2025-04-01 13:58:10 +08:00
										 |  |  |     const educationVerifying = localStorage.getItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (educationVerifying === 'yes') | 
					
						
							|  |  |  |       localStorage.removeItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     removeSpecificQueryParam('action') | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |     setShowAccountSettingModal(null) | 
					
						
							|  |  |  |     if (showAccountSettingModal?.onCancelCallback) | 
					
						
							|  |  |  |       showAccountSettingModal?.onCancelCallback() | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleCancelModerationSettingModal = () => { | 
					
						
							|  |  |  |     setShowModerationSettingModal(null) | 
					
						
							|  |  |  |     if (showModerationSettingModal?.onCancelCallback) | 
					
						
							|  |  |  |       showModerationSettingModal.onCancelCallback() | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-23 19:31:56 +08:00
										 |  |  |   const handleCancelExternalDataToolModal = () => { | 
					
						
							|  |  |  |     setShowExternalDataToolModal(null) | 
					
						
							|  |  |  |     if (showExternalDataToolModal?.onCancelCallback) | 
					
						
							|  |  |  |       showExternalDataToolModal.onCancelCallback() | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |   const handleCancelModelModal = useCallback(() => { | 
					
						
							|  |  |  |     setShowModelModal(null) | 
					
						
							|  |  |  |     if (showModelModal?.onCancelCallback) | 
					
						
							|  |  |  |       showModelModal.onCancelCallback() | 
					
						
							|  |  |  |   }, [showModelModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleSaveModelModal = useCallback(() => { | 
					
						
							|  |  |  |     if (showModelModal?.onSaveCallback) | 
					
						
							|  |  |  |       showModelModal.onSaveCallback(showModelModal.payload) | 
					
						
							|  |  |  |     setShowModelModal(null) | 
					
						
							|  |  |  |   }, [showModelModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |   const handleCancelExternalApiModal = useCallback(() => { | 
					
						
							|  |  |  |     setShowExternalKnowledgeAPIModal(null) | 
					
						
							|  |  |  |     if (showExternalKnowledgeAPIModal?.onCancelCallback) | 
					
						
							|  |  |  |       showExternalKnowledgeAPIModal.onCancelCallback() | 
					
						
							|  |  |  |   }, [showExternalKnowledgeAPIModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleSaveExternalApiModal = useCallback(async (updatedFormValue: CreateExternalAPIReq) => { | 
					
						
							|  |  |  |     if (showExternalKnowledgeAPIModal?.onSaveCallback) | 
					
						
							|  |  |  |       showExternalKnowledgeAPIModal.onSaveCallback(updatedFormValue) | 
					
						
							|  |  |  |     setShowExternalKnowledgeAPIModal(null) | 
					
						
							|  |  |  |   }, [showExternalKnowledgeAPIModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleEditExternalApiModal = useCallback(async (updatedFormValue: CreateExternalAPIReq) => { | 
					
						
							|  |  |  |     if (showExternalKnowledgeAPIModal?.onEditCallback) | 
					
						
							|  |  |  |       showExternalKnowledgeAPIModal.onEditCallback(updatedFormValue) | 
					
						
							|  |  |  |     setShowExternalKnowledgeAPIModal(null) | 
					
						
							|  |  |  |   }, [showExternalKnowledgeAPIModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   const handleCancelModelLoadBalancingEntryModal = useCallback(() => { | 
					
						
							|  |  |  |     showModelLoadBalancingEntryModal?.onCancelCallback?.() | 
					
						
							|  |  |  |     setShowModelLoadBalancingEntryModal(null) | 
					
						
							|  |  |  |   }, [showModelLoadBalancingEntryModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |   const handleCancelOpeningModal = useCallback(() => { | 
					
						
							|  |  |  |     setShowOpeningModal(null) | 
					
						
							|  |  |  |     if (showOpeningModal?.onCancelCallback) | 
					
						
							|  |  |  |       showOpeningModal.onCancelCallback() | 
					
						
							|  |  |  |   }, [showOpeningModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |   const handleSaveModelLoadBalancingEntryModal = useCallback((entry: ModelLoadBalancingConfigEntry) => { | 
					
						
							|  |  |  |     showModelLoadBalancingEntryModal?.onSaveCallback?.({ | 
					
						
							|  |  |  |       ...showModelLoadBalancingEntryModal.payload, | 
					
						
							|  |  |  |       entry, | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     setShowModelLoadBalancingEntryModal(null) | 
					
						
							|  |  |  |   }, [showModelLoadBalancingEntryModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleRemoveModelLoadBalancingEntry = useCallback(() => { | 
					
						
							|  |  |  |     showModelLoadBalancingEntryModal?.onRemoveCallback?.(showModelLoadBalancingEntryModal.payload) | 
					
						
							|  |  |  |     setShowModelLoadBalancingEntryModal(null) | 
					
						
							|  |  |  |   }, [showModelLoadBalancingEntryModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |   const handleSaveApiBasedExtension = (newApiBasedExtension: ApiBasedExtension) => { | 
					
						
							|  |  |  |     if (showApiBasedExtensionModal?.onSaveCallback) | 
					
						
							|  |  |  |       showApiBasedExtensionModal.onSaveCallback(newApiBasedExtension) | 
					
						
							|  |  |  |     setShowApiBasedExtensionModal(null) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleSaveModeration = (newModerationConfig: ModerationConfig) => { | 
					
						
							|  |  |  |     if (showModerationSettingModal?.onSaveCallback) | 
					
						
							|  |  |  |       showModerationSettingModal.onSaveCallback(newModerationConfig) | 
					
						
							|  |  |  |     setShowModerationSettingModal(null) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleSaveExternalDataTool = (newExternalDataTool: ExternalDataTool) => { | 
					
						
							|  |  |  |     if (showExternalDataToolModal?.onSaveCallback) | 
					
						
							|  |  |  |       showExternalDataToolModal.onSaveCallback(newExternalDataTool) | 
					
						
							|  |  |  |     setShowExternalDataToolModal(null) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const handleValidateBeforeSaveExternalDataTool = (newExternalDataTool: ExternalDataTool) => { | 
					
						
							|  |  |  |     if (showExternalDataToolModal?.onValidateBeforeSaveCallback) | 
					
						
							|  |  |  |       return showExternalDataToolModal?.onValidateBeforeSaveCallback(newExternalDataTool) | 
					
						
							|  |  |  |     return true | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |   const handleSaveOpeningModal = (newOpening: OpeningStatement) => { | 
					
						
							|  |  |  |     if (showOpeningModal?.onSaveCallback) | 
					
						
							|  |  |  |       showOpeningModal.onSaveCallback(newOpening) | 
					
						
							|  |  |  |     setShowOpeningModal(null) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |   return ( | 
					
						
							|  |  |  |     <ModalContext.Provider value={{ | 
					
						
							|  |  |  |       setShowAccountSettingModal, | 
					
						
							|  |  |  |       setShowApiBasedExtensionModal, | 
					
						
							|  |  |  |       setShowModerationSettingModal, | 
					
						
							|  |  |  |       setShowExternalDataToolModal, | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  |       setShowPricingModal: () => setShowPricingModal(true), | 
					
						
							| 
									
										
										
										
											2023-12-18 15:41:24 +08:00
										 |  |  |       setShowAnnotationFullModal: () => setShowAnnotationFullModal(true), | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |       setShowModelModal, | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |       setShowExternalKnowledgeAPIModal, | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |       setShowModelLoadBalancingModal, | 
					
						
							|  |  |  |       setShowModelLoadBalancingEntryModal, | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |       setShowOpeningModal, | 
					
						
							| 
									
										
										
										
											2025-02-17 17:05:13 +08:00
										 |  |  |       setShowUpdatePluginModal, | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |     }}> | 
					
						
							|  |  |  |       <> | 
					
						
							|  |  |  |         {children} | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           !!showAccountSettingModal && ( | 
					
						
							|  |  |  |             <AccountSetting | 
					
						
							|  |  |  |               activeTab={showAccountSettingModal.payload} | 
					
						
							|  |  |  |               onCancel={handleCancelAccountSettingModal} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |         { | 
					
						
							|  |  |  |           !!showApiBasedExtensionModal && ( | 
					
						
							|  |  |  |             <ApiBasedExtensionModal | 
					
						
							|  |  |  |               data={showApiBasedExtensionModal.payload} | 
					
						
							|  |  |  |               onCancel={() => setShowApiBasedExtensionModal(null)} | 
					
						
							|  |  |  |               onSave={handleSaveApiBasedExtension} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           !!showModerationSettingModal && ( | 
					
						
							|  |  |  |             <ModerationSettingModal | 
					
						
							|  |  |  |               data={showModerationSettingModal.payload} | 
					
						
							|  |  |  |               onCancel={handleCancelModerationSettingModal} | 
					
						
							|  |  |  |               onSave={handleSaveModeration} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           !!showExternalDataToolModal && ( | 
					
						
							|  |  |  |             <ExternalDataToolModal | 
					
						
							|  |  |  |               data={showExternalDataToolModal.payload} | 
					
						
							| 
									
										
										
										
											2024-01-23 19:31:56 +08:00
										 |  |  |               onCancel={handleCancelExternalDataToolModal} | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |               onSave={handleSaveExternalDataTool} | 
					
						
							|  |  |  |               onValidateBeforeSave={handleValidateBeforeSaveExternalDataTool} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           !!showPricingModal && ( | 
					
						
							|  |  |  |             <Pricing onCancel={() => { | 
					
						
							|  |  |  |               if (searchParams.get('show-pricing') === '1') | 
					
						
							| 
									
										
										
										
											2024-01-23 19:31:56 +08:00
										 |  |  |                 router.push(location.pathname, { forceOptimisticNavigation: true } as any) | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |               setShowPricingModal(false) | 
					
						
							|  |  |  |             }} /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-12-18 15:41:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           showAnnotationFullModal && ( | 
					
						
							|  |  |  |             <AnnotationFullModal | 
					
						
							|  |  |  |               show={showAnnotationFullModal} | 
					
						
							|  |  |  |               onHide={() => setShowAnnotationFullModal(false)} /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |         { | 
					
						
							|  |  |  |           !!showModelModal && ( | 
					
						
							|  |  |  |             <ModelModal | 
					
						
							|  |  |  |               provider={showModelModal.payload.currentProvider} | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |               configurateMethod={showModelModal.payload.currentConfigurationMethod} | 
					
						
							|  |  |  |               currentCustomConfigurationModelFixedFields={showModelModal.payload.currentCustomConfigurationModelFixedFields} | 
					
						
							| 
									
										
										
										
											2024-01-02 23:42:00 +08:00
										 |  |  |               onCancel={handleCancelModelModal} | 
					
						
							|  |  |  |               onSave={handleSaveModelModal} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-09-30 15:38:43 +08:00
										 |  |  |         { | 
					
						
							|  |  |  |           !!showExternalKnowledgeAPIModal && ( | 
					
						
							|  |  |  |             <ExternalAPIModal | 
					
						
							|  |  |  |               data={showExternalKnowledgeAPIModal.payload} | 
					
						
							|  |  |  |               datasetBindings={showExternalKnowledgeAPIModal.datasetBindings ?? []} | 
					
						
							|  |  |  |               onSave={handleSaveExternalApiModal} | 
					
						
							|  |  |  |               onCancel={handleCancelExternalApiModal} | 
					
						
							|  |  |  |               onEdit={handleEditExternalApiModal} | 
					
						
							|  |  |  |               isEditMode={showExternalKnowledgeAPIModal.isEditMode ?? false} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-06-05 00:13:29 +08:00
										 |  |  |         { | 
					
						
							|  |  |  |           Boolean(showModelLoadBalancingModal) && ( | 
					
						
							|  |  |  |             <ModelLoadBalancingModal {...showModelLoadBalancingModal!} /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           !!showModelLoadBalancingEntryModal && ( | 
					
						
							|  |  |  |             <ModelLoadBalancingEntryModal | 
					
						
							|  |  |  |               provider={showModelLoadBalancingEntryModal.payload.currentProvider} | 
					
						
							|  |  |  |               configurationMethod={showModelLoadBalancingEntryModal.payload.currentConfigurationMethod} | 
					
						
							|  |  |  |               currentCustomConfigurationModelFixedFields={showModelLoadBalancingEntryModal.payload.currentCustomConfigurationModelFixedFields} | 
					
						
							|  |  |  |               entry={showModelLoadBalancingEntryModal.payload.entry} | 
					
						
							|  |  |  |               onCancel={handleCancelModelLoadBalancingEntryModal} | 
					
						
							|  |  |  |               onSave={handleSaveModelLoadBalancingEntryModal} | 
					
						
							|  |  |  |               onRemove={handleRemoveModelLoadBalancingEntry} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |         {showOpeningModal && ( | 
					
						
							|  |  |  |           <OpeningSettingModal | 
					
						
							|  |  |  |             data={showOpeningModal.payload} | 
					
						
							|  |  |  |             onSave={handleSaveOpeningModal} | 
					
						
							|  |  |  |             onCancel={handleCancelOpeningModal} | 
					
						
							|  |  |  |             promptVariables={showOpeningModal.payload.promptVariables} | 
					
						
							|  |  |  |             workflowVariables={showOpeningModal.payload.workflowVariables} | 
					
						
							|  |  |  |             onAutoAddPromptVariable={showOpeningModal.payload.onAutoAddPromptVariable} | 
					
						
							|  |  |  |           /> | 
					
						
							|  |  |  |         )} | 
					
						
							| 
									
										
										
										
											2025-02-17 17:05:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           !!showUpdatePluginModal && ( | 
					
						
							|  |  |  |             <UpdatePlugin | 
					
						
							|  |  |  |               {...showUpdatePluginModal.payload} | 
					
						
							|  |  |  |               onCancel={() => { | 
					
						
							|  |  |  |                 setShowUpdatePluginModal(null) | 
					
						
							|  |  |  |                 showUpdatePluginModal.onCancelCallback?.() | 
					
						
							|  |  |  |               }} | 
					
						
							|  |  |  |               onSave={() => { | 
					
						
							|  |  |  |                 setShowUpdatePluginModal(null) | 
					
						
							|  |  |  |                 showUpdatePluginModal.onSaveCallback?.({} as any) | 
					
						
							|  |  |  |               }} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |       </> | 
					
						
							|  |  |  |     </ModalContext.Provider> | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default ModalContext |