|
@@ -7,6 +7,7 @@ import {
|
|
|
Dispatch,
|
|
Dispatch,
|
|
|
SetStateAction,
|
|
SetStateAction,
|
|
|
FC,
|
|
FC,
|
|
|
|
|
+ useState,
|
|
|
} from 'react'
|
|
} from 'react'
|
|
|
import useScopeValue from '../hooks/use-scope-value'
|
|
import useScopeValue from '../hooks/use-scope-value'
|
|
|
import useDetachLayout from '../hooks/use-detach-layout'
|
|
import useDetachLayout from '../hooks/use-detach-layout'
|
|
@@ -17,6 +18,7 @@ import { debugConsole } from '@/utils/debugging'
|
|
|
import { BinaryFile } from '@/features/file-view/types/binary-file'
|
|
import { BinaryFile } from '@/features/file-view/types/binary-file'
|
|
|
import useScopeEventEmitter from '@/shared/hooks/use-scope-event-emitter'
|
|
import useScopeEventEmitter from '@/shared/hooks/use-scope-event-emitter'
|
|
|
import useEventListener from '@/shared/hooks/use-event-listener'
|
|
import useEventListener from '@/shared/hooks/use-event-listener'
|
|
|
|
|
+import { isSplitTestEnabled } from '@/utils/splitTestUtils'
|
|
|
|
|
|
|
|
export type IdeLayout = 'sideBySide' | 'flat'
|
|
export type IdeLayout = 'sideBySide' | 'flat'
|
|
|
export type IdeView = 'editor' | 'file' | 'pdf' | 'history'
|
|
export type IdeView = 'editor' | 'file' | 'pdf' | 'history'
|
|
@@ -49,8 +51,12 @@ type LayoutContextValue = {
|
|
|
>
|
|
>
|
|
|
pdfLayout: IdeLayout
|
|
pdfLayout: IdeLayout
|
|
|
pdfPreviewOpen: boolean
|
|
pdfPreviewOpen: boolean
|
|
|
|
|
+ projectSearchIsOpen: boolean
|
|
|
|
|
+ setProjectSearchIsOpen: Dispatch<SetStateAction<boolean>>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const isMac = /Mac/.test(window.navigator?.platform)
|
|
|
|
|
+
|
|
|
const debugPdfDetach = getMeta('ol-debugPdfDetach')
|
|
const debugPdfDetach = getMeta('ol-debugPdfDetach')
|
|
|
|
|
|
|
|
export const LayoutContext = createContext<LayoutContextValue | undefined>(
|
|
export const LayoutContext = createContext<LayoutContextValue | undefined>(
|
|
@@ -107,6 +113,9 @@ export const LayoutProvider: FC = ({ children }) => {
|
|
|
const [leftMenuShown, setLeftMenuShown] =
|
|
const [leftMenuShown, setLeftMenuShown] =
|
|
|
useScopeValue<boolean>('ui.leftMenuShown')
|
|
useScopeValue<boolean>('ui.leftMenuShown')
|
|
|
|
|
|
|
|
|
|
+ // whether the project search is open
|
|
|
|
|
+ const [projectSearchIsOpen, setProjectSearchIsOpen] = useState(false)
|
|
|
|
|
+
|
|
|
useEventListener(
|
|
useEventListener(
|
|
|
'ui.toggle-left-menu',
|
|
'ui.toggle-left-menu',
|
|
|
useCallback(
|
|
useCallback(
|
|
@@ -124,6 +133,21 @@ export const LayoutProvider: FC = ({ children }) => {
|
|
|
}, [setReviewPanelOpen])
|
|
}, [setReviewPanelOpen])
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+ useEventListener(
|
|
|
|
|
+ 'keydown',
|
|
|
|
|
+ useCallback((event: KeyboardEvent) => {
|
|
|
|
|
+ if (
|
|
|
|
|
+ (isMac ? event.metaKey : event.ctrlKey) &&
|
|
|
|
|
+ event.shiftKey &&
|
|
|
|
|
+ event.key === 'f'
|
|
|
|
|
+ ) {
|
|
|
|
|
+ if (isSplitTestEnabled('full-project-search')) {
|
|
|
|
|
+ setProjectSearchIsOpen(true)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [])
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
// whether to display the editor and preview side-by-side or full-width ("flat")
|
|
// whether to display the editor and preview side-by-side or full-width ("flat")
|
|
|
const [pdfLayout, setPdfLayout] = useScopeValue<IdeLayout>('ui.pdfLayout')
|
|
const [pdfLayout, setPdfLayout] = useScopeValue<IdeLayout>('ui.pdfLayout')
|
|
|
|
|
|
|
@@ -194,6 +218,8 @@ export const LayoutProvider: FC = ({ children }) => {
|
|
|
leftMenuShown,
|
|
leftMenuShown,
|
|
|
pdfLayout,
|
|
pdfLayout,
|
|
|
pdfPreviewOpen,
|
|
pdfPreviewOpen,
|
|
|
|
|
+ projectSearchIsOpen,
|
|
|
|
|
+ setProjectSearchIsOpen,
|
|
|
reviewPanelOpen,
|
|
reviewPanelOpen,
|
|
|
miniReviewPanelVisible,
|
|
miniReviewPanelVisible,
|
|
|
loadingStyleSheet,
|
|
loadingStyleSheet,
|
|
@@ -216,6 +242,8 @@ export const LayoutProvider: FC = ({ children }) => {
|
|
|
leftMenuShown,
|
|
leftMenuShown,
|
|
|
pdfLayout,
|
|
pdfLayout,
|
|
|
pdfPreviewOpen,
|
|
pdfPreviewOpen,
|
|
|
|
|
+ projectSearchIsOpen,
|
|
|
|
|
+ setProjectSearchIsOpen,
|
|
|
reviewPanelOpen,
|
|
reviewPanelOpen,
|
|
|
miniReviewPanelVisible,
|
|
miniReviewPanelVisible,
|
|
|
loadingStyleSheet,
|
|
loadingStyleSheet,
|