mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-25 02:00:10 +02:00
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import LabsExperimentWidget, {
|
|
LabsExperimentWidgetProps,
|
|
} from '@/shared/components/labs/labs-experiments-widget'
|
|
import MaterialIcon from '@/shared/components/material-icon'
|
|
import { isInExperiment } from '@/utils/labs-utils'
|
|
import { isSplitTestEnabled } from '@/utils/splitTestUtils'
|
|
import { useState } from 'react'
|
|
|
|
type LabsWidgetProps = Pick<LabsExperimentWidgetProps, 'setErrorMessage'> & {
|
|
labsProgram: boolean
|
|
}
|
|
|
|
const LabsWidget = ({ setErrorMessage, labsProgram }: LabsWidgetProps) => {
|
|
const [optedIn, setOptedIn] = useState(isInExperiment('overleaf-code'))
|
|
|
|
if (!isSplitTestEnabled('overleaf-code')) {
|
|
return null
|
|
}
|
|
|
|
const description = (
|
|
<span>
|
|
Run Python code while editing <code>.py</code> files
|
|
</span>
|
|
)
|
|
|
|
return (
|
|
<LabsExperimentWidget
|
|
description={description}
|
|
experimentName="overleaf-code"
|
|
title="Overleaf Code (Python execution)"
|
|
setOptedIn={setOptedIn}
|
|
setErrorMessage={setErrorMessage}
|
|
optedIn={optedIn}
|
|
logo={
|
|
<MaterialIcon
|
|
type="code"
|
|
size="2x"
|
|
className="rounded bg-primary-subtle"
|
|
/>
|
|
}
|
|
optedInDescription={description}
|
|
labsEnabled={labsProgram}
|
|
/>
|
|
)
|
|
}
|
|
|
|
export const hidden = () => !isSplitTestEnabled('overleaf-code')
|
|
|
|
export default LabsWidget
|