Spaces:
Build error
Build error
'use client' | |
import type { FC } from 'react' | |
import React, { useCallback } from 'react' | |
import { useTranslation } from 'react-i18next' | |
import CheckboxWithLabel from '../base/checkbox-with-label' | |
import Field from '../base/field' | |
import cn from '@/utils/classnames' | |
import type { CrawlOptions } from '@/models/datasets' | |
const I18N_PREFIX = 'datasetCreation.stepOne.website' | |
type Props = { | |
className?: string | |
payload: CrawlOptions | |
onChange: (payload: CrawlOptions) => void | |
} | |
const Options: FC<Props> = ({ | |
className = '', | |
payload, | |
onChange, | |
}) => { | |
const { t } = useTranslation() | |
const handleChange = useCallback((key: keyof CrawlOptions) => { | |
return (value: any) => { | |
onChange({ | |
...payload, | |
[key]: value, | |
}) | |
} | |
}, [payload, onChange]) | |
return ( | |
<div className={cn(className, ' space-y-2')}> | |
<CheckboxWithLabel | |
label={t(`${I18N_PREFIX}.crawlSubPage`)} | |
isChecked={payload.crawl_sub_pages} | |
onChange={handleChange('crawl_sub_pages')} | |
/> | |
<div className='flex justify-between space-x-4'> | |
<Field | |
className='grow shrink-0' | |
label={t(`${I18N_PREFIX}.limit`)} | |
value={payload.limit} | |
onChange={handleChange('limit')} | |
isNumber | |
isRequired | |
/> | |
<Field | |
className='grow shrink-0' | |
label={t(`${I18N_PREFIX}.maxDepth`)} | |
value={payload.max_depth} | |
onChange={handleChange('max_depth')} | |
isNumber | |
tooltip={t(`${I18N_PREFIX}.maxDepthTooltip`)!} | |
/> | |
</div> | |
<div className='flex justify-between space-x-4'> | |
<Field | |
className='grow shrink-0' | |
label={t(`${I18N_PREFIX}.excludePaths`)} | |
value={payload.excludes} | |
onChange={handleChange('excludes')} | |
placeholder='blog/*, /about/*' | |
/> | |
<Field | |
className='grow shrink-0' | |
label={t(`${I18N_PREFIX}.includeOnlyPaths`)} | |
value={payload.includes} | |
onChange={handleChange('includes')} | |
placeholder='articles/*' | |
/> | |
</div> | |
<CheckboxWithLabel | |
label={t(`${I18N_PREFIX}.extractOnlyMainContent`)} | |
isChecked={payload.only_main_content} | |
onChange={handleChange('only_main_content')} | |
/> | |
</div> | |
) | |
} | |
export default React.memo(Options) | |