import { useCallback, useRef } from 'react'; import { useTranslation } from 'next-i18next'; import type AdminMarkDownContainer from '~/client/services/AdminMarkDownContainer'; import { tagNames as recommendedTagNames, attributes as recommendedAttributes } from '~/services/renderer/recommended-whitelist'; type Props ={ adminMarkDownContainer: AdminMarkDownContainer } export const WhitelistInput = (props: Props): JSX.Element => { const { t } = useTranslation('admin'); const { adminMarkDownContainer } = props; const tagNamesRef = useRef(null); const attrsRef = useRef(null); const clickRecommendTagButtonHandler = useCallback(() => { if (tagNamesRef.current == null) { return; } const tagWhitelist = recommendedTagNames.join(','); tagNamesRef.current.value = tagWhitelist; adminMarkDownContainer.setState({ tagWhitelist }); }, [adminMarkDownContainer]); const clickRecommendAttrButtonHandler = useCallback(() => { if (attrsRef.current == null) { return; } const attrWhitelist = JSON.stringify(recommendedAttributes); attrsRef.current.value = attrWhitelist; adminMarkDownContainer.setState({ attrWhitelist }); }, [adminMarkDownContainer]); return ( <>
{t('markdown_settings.xss_options.tag_names')}

{t('markdown_settings.xss_options.import_recommended', { target: 'Tags' })}