import CopyToClipboard from '@/components/copy-to-clipboard'; import HightLightMarkdown from '@/components/highlight-markdown'; import { SelectWithSearch } from '@/components/originui/select-with-search'; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form'; import { Switch } from '@/components/ui/switch'; import { SharedFrom } from '@/constants/chat'; import { LanguageAbbreviation, LanguageAbbreviationMap, } from '@/constants/common'; import { useTranslate } from '@/hooks/common-hooks'; import { IModalProps } from '@/interfaces/common'; import { Routes } from '@/routes'; import { zodResolver } from '@hookform/resolvers/zod'; import { memo, useCallback, useMemo } from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { z } from 'zod'; const FormSchema = z.object({ visibleAvatar: z.boolean(), locale: z.string(), }); type IProps = IModalProps & { token: string; from: SharedFrom; beta: string; isAgent: boolean; }; function EmbedDialog({ hideModal, token = '', from, beta = '', isAgent, }: IProps) { const { t } = useTranslate('chat'); const form = useForm>({ resolver: zodResolver(FormSchema), defaultValues: { visibleAvatar: false, locale: '', }, }); const values = useWatch({ control: form.control }); const languageOptions = useMemo(() => { return Object.values(LanguageAbbreviation).map((x) => ({ label: LanguageAbbreviationMap[x], value: x, })); }, []); const generateIframeSrc = useCallback(() => { const { visibleAvatar, locale } = values; let src = `${location.origin}${from === SharedFrom.Agent ? Routes.AgentShare : Routes.ChatShare}?shared_id=${token}&from=${from}&auth=${beta}`; if (visibleAvatar) { src += '&visible_avatar=1'; } if (locale) { src += `&locale=${locale}`; } return src; }, [beta, from, token, values]); const text = useMemo(() => { const iframeSrc = generateIframeSrc(); return ` ~~~ html ~~~ `; }, [generateIframeSrc]); return ( {t('embedIntoSite', { keyPrefix: 'common' })}
( {t('avatarHidden')} )} /> ( {t('locale')} )} />
Embed code {text}
{t(isAgent ? 'flow' : 'chat', { keyPrefix: 'header' })} ID
{token}
{t('howUseId', { keyPrefix: isAgent ? 'flow' : 'chat' })}
); } export default memo(EmbedDialog);