diff --git a/desktop/flipper-plugin/src/ui/elements-inspector/ElementsInspector.tsx b/desktop/flipper-plugin/src/ui/elements-inspector/ElementsInspector.tsx index 591751477..78c6e0b9e 100644 --- a/desktop/flipper-plugin/src/ui/elements-inspector/ElementsInspector.tsx +++ b/desktop/flipper-plugin/src/ui/elements-inspector/ElementsInspector.tsx @@ -70,7 +70,7 @@ export type ElementsInspectorProps = { elements: {[key: string]: Element}; useAppSidebar?: boolean; alternateRowColor?: boolean; - contextMenuExtensions?: Array; + contextMenuExtensions?: () => Array; decorateRow?: DecorateRow; }; diff --git a/desktop/flipper-plugin/src/ui/elements-inspector/elements.tsx b/desktop/flipper-plugin/src/ui/elements-inspector/elements.tsx index 21fcf20a1..1b705621d 100644 --- a/desktop/flipper-plugin/src/ui/elements-inspector/elements.tsx +++ b/desktop/flipper-plugin/src/ui/elements-inspector/elements.tsx @@ -227,7 +227,7 @@ type ElementsRowProps = { | null; onCopyExpandedTree: (key: Element, maxDepth: number) => string; style?: Object; - contextMenuExtensions: Array; + contextMenuExtensions?: () => Array; decorateRow?: DecorateRow; forwardedRef: React.Ref | null; }; @@ -286,12 +286,18 @@ class ElementsRow extends PureComponent { }), ); - for (const extension of props.contextMenuExtensions) { + // Array.isArray check for backward compatibility + const extensions: ContextMenuExtension[] | undefined = Array.isArray( + props.contextMenuExtensions, + ) + ? props.contextMenuExtensions + : props.contextMenuExtensions?.(); + extensions?.forEach((extension) => { items.push({ label: extension.label, click: () => extension.click(this.props.id), }); - } + }); return ( @@ -460,7 +466,7 @@ type ElementsProps = { | undefined | null; alternateRowColor?: boolean; - contextMenuExtensions?: Array; + contextMenuExtensions?: () => Array; decorateRow?: DecorateRow; }; @@ -728,7 +734,7 @@ export class Elements extends PureComponent { isQueryMatch={containsKeyInSearchResults(searchResults, row.key)} element={row.element} childrenCount={childrenCount} - contextMenuExtensions={contextMenuExtensions || []} + contextMenuExtensions={contextMenuExtensions} decorateRow={decorateRow} forwardedRef={ selected == row.key && this.state.scrolledElement !== selected diff --git a/desktop/plugins/public/layout/Inspector.tsx b/desktop/plugins/public/layout/Inspector.tsx index f7a3a5c17..b47219308 100644 --- a/desktop/plugins/public/layout/Inspector.tsx +++ b/desktop/plugins/public/layout/Inspector.tsx @@ -458,7 +458,7 @@ export default class Inspector extends Component { root={this.root()} elements={this.elements()} focused={this.focused()} - contextMenuExtensions={this.getAXContextMenuExtensions()} + contextMenuExtensions={this.getAXContextMenuExtensions} /> {selectorData && selectorData.leaves.length > 1 ? (