| 
									
										
										
										
											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' | 
					
						
							|  |  |  | import ModerationSettingModal from '@/app/components/app/configuration/toolbox/moderation/moderation-setting-modal' | 
					
						
							|  |  |  | 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' | 
					
						
							|  |  |  | 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' | 
					
						
							| 
									
										
										
										
											2023-12-18 15:41:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-03 22:10:16 +08:00
										 |  |  | import Pricing from '@/app/components/billing/pricing' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | import type { ModerationConfig } from '@/models/debug' | 
					
						
							|  |  |  | import type { | 
					
						
							|  |  |  |   ApiBasedExtension, | 
					
						
							|  |  |  |   ExternalDataTool, | 
					
						
							|  |  |  | } from '@/models/common' | 
					
						
							| 
									
										
										
										
											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' | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |   onValidateBeforeSaveCallback?: (newPayload: T) => boolean | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 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-06-05 00:13:29 +08:00
										 |  |  |   setShowModelLoadBalancingModal: Dispatch<SetStateAction<ModelLoadBalancingModalProps | null>> | 
					
						
							|  |  |  |   setShowModelLoadBalancingEntryModal: Dispatch<SetStateAction<ModalState<LoadBalancingEntryModalType> | null>> | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const ModalContext = createContext<ModalContextState>({ | 
					
						
							|  |  |  |   setShowAccountSettingModal: () => { }, | 
					
						
							|  |  |  |   setShowApiBasedExtensionModal: () => { }, | 
					
						
							|  |  |  |   setShowModerationSettingModal: () => { }, | 
					
						
							|  |  |  |   setShowExternalDataToolModal: () => { }, | 
					
						
							|  |  |  |   setShowPricingModal: () => { }, | 
					
						
							|  |  |  |   setShowAnnotationFullModal: () => { }, | 
					
						
							|  |  |  |   setShowModelModal: () => { }, | 
					
						
							|  |  |  |   setShowModelLoadBalancingModal: () => { }, | 
					
						
							|  |  |  |   setShowModelLoadBalancingEntryModal: () => { }, | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											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
 | 
					
						
							|  |  |  | // eslint-disable-next-line @typescript-eslint/comma-dangle
 | 
					
						
							|  |  |  | 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-06-05 00:13:29 +08:00
										 |  |  |   const [showModelLoadBalancingModal, setShowModelLoadBalancingModal] = useState<ModelLoadBalancingModalProps | null>(null) | 
					
						
							|  |  |  |   const [showModelLoadBalancingEntryModal, setShowModelLoadBalancingEntryModal] = useState<ModalState<LoadBalancingEntryModalType> | 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 = () => { | 
					
						
							|  |  |  |     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-06-05 00:13:29 +08:00
										 |  |  |   const handleCancelModelLoadBalancingEntryModal = useCallback(() => { | 
					
						
							|  |  |  |     showModelLoadBalancingEntryModal?.onCancelCallback?.() | 
					
						
							|  |  |  |     setShowModelLoadBalancingEntryModal(null) | 
					
						
							|  |  |  |   }, [showModelLoadBalancingEntryModal]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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-06-05 00:13:29 +08:00
										 |  |  |       setShowModelLoadBalancingModal, | 
					
						
							|  |  |  |       setShowModelLoadBalancingEntryModal, | 
					
						
							| 
									
										
										
										
											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-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} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           ) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |       </> | 
					
						
							|  |  |  |     </ModalContext.Provider> | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default ModalContext |