Merge pull request #36408 from overleaf/mj-context-menu-flag-teardown

[web] Tear down editor-context-menu flag

GitOrigin-RevId: 80cc2ebaf62ec1bd6064b0f96b884d159a9d4b5f
This commit is contained in:
Mathias Jakobsen
2026-09-17 11:53:38 +00:00
committed by Copybot
parent 38eb3ddfa6
commit e8ee19d17d
7 changed files with 12 additions and 76 deletions
@@ -12,7 +12,6 @@ import {
useCodeMirrorViewContext,
} from './codemirror-context'
import { contextMenuStateField } from '../extensions/context-menu'
import { useFeatureFlag } from '@/shared/context/split-test-context'
import { useContextMenuItems } from '../hooks/use-context-menu-items'
import DropdownListItem from '@/shared/components/dropdown/dropdown-list-item'
import { sendContextMenuEvent } from '../utils/context-menu-analytics'
@@ -20,10 +19,9 @@ import { sendContextMenuEvent } from '../utils/context-menu-analytics'
const EditorContextMenu: FC = () => {
const state = useCodeMirrorStateContext()
const view = useCodeMirrorViewContext()
const editorContextMenuEnabled = useFeatureFlag('editor-context-menu')
const menuState = state.field(contextMenuStateField, false)
if (!editorContextMenuEnabled || !menuState?.tooltip) {
if (!menuState?.tooltip) {
return null
}
@@ -396,8 +396,8 @@ const contextMenuKeymap = (): Extension =>
])
)
export const contextMenu = (enabled: boolean): Extension =>
enabled && !isMobile
export const contextMenu = (): Extension =>
!isMobile
? [
contextMenuContainerTheme,
contextMenuStateField,
@@ -159,11 +159,8 @@ export const createExtensions = (options: Record<string, any>): Extension[] => [
trackDetachedComments(options.currentDoc),
visual(options.docName, options.visual),
mathPreview(options.settings.mathPreview),
reviewTooltip(
options.settings.floatingMenu,
options.editorContextMenuEnabled
),
contextMenu(options.editorContextMenuEnabled),
reviewTooltip(options.settings.floatingMenu),
contextMenu(),
toolbarPanel(),
breadcrumbPanel(),
verticalOverflow(),
@@ -32,28 +32,20 @@ const mouseDownStateField = StateField.define<boolean>({
const reviewTooltipCompartment = new Compartment()
export const reviewTooltip = (
enabled: boolean,
editorContextMenuEnabled: boolean = false
): Extension => {
export const reviewTooltip = (enabled: boolean): Extension => {
return [
addCommentRangesField,
reviewTooltipCompartment.of(
enabled ? reviewTooltipMenu(editorContextMenuEnabled) : []
),
reviewTooltipCompartment.of(enabled ? reviewTooltipMenu() : []),
]
}
export const setReviewTooltip = (
enabled: boolean,
editorContextMenuEnabled: boolean
): TransactionSpec => ({
export const setReviewTooltip = (enabled: boolean): TransactionSpec => ({
effects: reviewTooltipCompartment.reconfigure(
enabled ? reviewTooltipMenu(editorContextMenuEnabled) : []
enabled ? reviewTooltipMenu() : []
),
})
const reviewTooltipMenu = (editorContextMenuEnabled: boolean): Extension => {
const reviewTooltipMenu = (): Extension => {
let mouseUpListener: null | (() => void) = null
const disableMouseUpListener = () => {
if (mouseUpListener) {
@@ -68,7 +60,7 @@ const reviewTooltipMenu = (editorContextMenuEnabled: boolean): Extension => {
EditorView.domEventHandlers({
mousedown: (event, view) => {
// Hide tooltip when opening the context menu
if (editorContextMenuEnabled && isContextMenuMouseEvent(event)) {
if (isContextMenuMouseEvent(event)) {
return false
}
@@ -60,7 +60,6 @@ import { beforeChangeDocEffect } from '@/features/source-editor/extensions/befor
import { useActiveOverallTheme } from '@/shared/hooks/use-active-overall-theme'
import { useEditorSelectionContext } from '@/shared/context/editor-selection-context'
import { useActiveEditorTheme } from '@/shared/hooks/use-active-editor-theme'
import { useFeatureFlag } from '@/shared/context/split-test-context'
import { isCmVisualEditorAvailable } from '../utils/visual-editor'
import { setEditorTabs } from '../extensions/tabs-listener'
import { setReviewTooltip } from '../extensions/review-tooltip'
@@ -100,7 +99,6 @@ function useCodeMirrorScope(view: EditorView) {
const { onlineUserCursorHighlights } = useOnlineUsersContext()
const { project, features: projectFeatures } = useProjectContext()
const editorContextMenuEnabled = useFeatureFlag('editor-context-menu')
let spellCheckLanguage = project?.spellCheckLanguage || ''
// spell check is off when read-only
if (!permissions.write && !permissions.trackedWrite) {
@@ -227,7 +225,6 @@ function useCodeMirrorScope(view: EditorView) {
}, [view, spellCheckLanguage, hunspellManager])
const projectFeaturesRef = useRef(projectFeatures)
const editorContextMenuEnabledRef = useRef(editorContextMenuEnabled)
// listen to doc:after-opened, and focus the editor if it's not a new doc
useEffect(() => {
@@ -355,7 +352,6 @@ function useCodeMirrorScope(view: EditorView) {
spelling: spellingRef.current,
visual: visualRef.current,
projectFeatures: projectFeaturesRef.current,
editorContextMenuEnabled: editorContextMenuEnabledRef.current,
initialSearchQuery: searchQueryRef.current,
showBoundary,
handleException,
@@ -495,9 +491,7 @@ function useCodeMirrorScope(view: EditorView) {
useEffect(() => {
settingsRef.current.floatingMenu = floatingMenu
window.setTimeout(() => {
view.dispatch(
setReviewTooltip(floatingMenu, editorContextMenuEnabledRef.current)
)
view.dispatch(setReviewTooltip(floatingMenu))
})
}, [view, floatingMenu])