mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
f6fc3d468c
PDF Detach Updates GitOrigin-RevId: c09c4fe37a922b041cfa1376e110a264a88177c8
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
import { memo, useCallback } from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import classnames from 'classnames'
|
|
import { useLayoutContext } from '../../../shared/context/layout-context'
|
|
import { useCompileContext } from '../../../shared/context/compile-context'
|
|
import useDetachAction from '../../../shared/hooks/use-detach-action'
|
|
import PdfCompileButtonInner from './pdf-compile-button-inner'
|
|
|
|
export function DetachCompileButton() {
|
|
const { compiling, hasChanges, startCompile } = useCompileContext()
|
|
|
|
const startOrTriggerCompile = useDetachAction(
|
|
'start-compile',
|
|
startCompile,
|
|
'detacher',
|
|
'detached'
|
|
)
|
|
|
|
const handleStartCompile = useCallback(() => startOrTriggerCompile(), [
|
|
startOrTriggerCompile,
|
|
])
|
|
|
|
return (
|
|
<div
|
|
className={classnames({
|
|
'btn-recompile-group': true,
|
|
'btn-recompile-group-has-changes': hasChanges,
|
|
})}
|
|
>
|
|
<PdfCompileButtonInner
|
|
startCompile={handleStartCompile}
|
|
compiling={compiling}
|
|
/>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export function DetachCompileButtonWrapper() {
|
|
const { detachRole, detachIsLinked } = useLayoutContext(
|
|
layoutContextPropTypes
|
|
)
|
|
|
|
if (detachRole !== 'detacher' || !detachIsLinked) {
|
|
return null
|
|
}
|
|
|
|
return <DetachCompileButton />
|
|
}
|
|
|
|
const layoutContextPropTypes = {
|
|
detachRole: PropTypes.string,
|
|
detachIsLinked: PropTypes.bool,
|
|
}
|
|
|
|
export default memo(DetachCompileButtonWrapper)
|