diff --git a/packages/react-devtools-extensions/src/main.js b/packages/react-devtools-extensions/src/main.js index fb920df938..98ae0714f0 100644 --- a/packages/react-devtools-extensions/src/main.js +++ b/packages/react-devtools-extensions/src/main.js @@ -211,12 +211,15 @@ function createPanelIfReactLoaded() { browserTheme: getBrowserTheme(), componentsPortalContainer, enabledInspectedElementContextMenu: true, + enabledInspectedElementContextMenuCopy: isChrome, overrideTab, profilerPortalContainer, showTabBar: false, store, warnIfUnsupportedVersionDetected: true, - viewAttributeSourceFunction, + viewAttributeSourceFunction: isChrome + ? viewAttributeSourceFunction + : null, viewElementSourceFunction, }), ); diff --git a/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js b/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js index 055378efca..07f168214c 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js @@ -303,6 +303,7 @@ function InspectedElementView({ const { isEnabledForInspectedElement, + supportsCopyOperation, viewAttributeSourceFunction, } = useContext(ContextMenuContext); @@ -444,12 +445,14 @@ function InspectedElementView({ {data => ( - copyInspectedElementPath(id, data.path)} - title="Copy value to clipboard"> - Copy - value to clipboard - + {supportsCopyOperation && ( + copyInspectedElementPath(id, data.path)} + title="Copy value to clipboard"> + Copy + value to clipboard + + )} storeAsGlobal(id, data.path)} title="Store as global variable"> diff --git a/packages/react-devtools-shared/src/devtools/views/DevTools.js b/packages/react-devtools-shared/src/devtools/views/DevTools.js index f05cdd54e7..42e194e70c 100644 --- a/packages/react-devtools-shared/src/devtools/views/DevTools.js +++ b/packages/react-devtools-shared/src/devtools/views/DevTools.js @@ -54,6 +54,7 @@ export type Props = {| canViewElementSourceFunction?: ?CanViewElementSource, defaultTab?: TabID, enabledInspectedElementContextMenu?: boolean, + enabledInspectedElementContextMenuCopy?: boolean, showTabBar?: boolean, store: Store, warnIfLegacyBackendDetected?: boolean, @@ -96,6 +97,7 @@ export default function DevTools({ componentsPortalContainer, defaultTab = 'components', enabledInspectedElementContextMenu = false, + enabledInspectedElementContextMenuCopy = false, overrideTab, profilerPortalContainer, showTabBar = false, @@ -121,9 +123,14 @@ export default function DevTools({ const contextMenu = useMemo( () => ({ isEnabledForInspectedElement: enabledInspectedElementContextMenu, + supportsCopyOperation: enabledInspectedElementContextMenuCopy, viewAttributeSourceFunction: viewAttributeSourceFunction || null, }), - [enabledInspectedElementContextMenu, viewAttributeSourceFunction], + [ + enabledInspectedElementContextMenu, + enabledInspectedElementContextMenuCopy, + viewAttributeSourceFunction, + ], ); useEffect( diff --git a/packages/react-devtools-shared/src/devtools/views/context.js b/packages/react-devtools-shared/src/devtools/views/context.js index fcc59935d4..92fec05d7d 100644 --- a/packages/react-devtools-shared/src/devtools/views/context.js +++ b/packages/react-devtools-shared/src/devtools/views/context.js @@ -23,11 +23,13 @@ StoreContext.displayName = 'StoreContext'; export type ContextMenuContextType = {| isEnabledForInspectedElement: boolean, + supportsCopyOperation: boolean, viewAttributeSourceFunction?: ?ViewAttributeSource, |}; export const ContextMenuContext = createContext({ isEnabledForInspectedElement: false, + supportsCopyOperation: false, viewAttributeSourceFunction: null, }); ContextMenuContext.displayName = 'ContextMenuContext'; diff --git a/packages/react-devtools-shell/src/devtools.js b/packages/react-devtools-shell/src/devtools.js index 4879e719c8..41926dbbca 100644 --- a/packages/react-devtools-shell/src/devtools.js +++ b/packages/react-devtools-shell/src/devtools.js @@ -56,6 +56,7 @@ inject('dist/app.js', () => { createElement(DevTools, { browserTheme: 'light', enabledInspectedElementContextMenu: true, + enabledInspectedElementContextMenuCopy: true, showTabBar: true, warnIfLegacyBackendDetected: true, warnIfUnsupportedVersionDetected: true,