Dont allow focusing leaf node

Summary: This mode is useless for leaves

Reviewed By: aigoncharov

Differential Revision: D47949539

fbshipit-source-id: 7f3ae6652ad696e9f550fe5b8f2298a1a3eff329
This commit is contained in:
Luke De Feo
2023-08-01 10:32:29 -07:00
committed by Facebook GitHub Bot
parent 9932d28b2f
commit af7c1c7e74
3 changed files with 24 additions and 6 deletions

View File

@@ -24,6 +24,7 @@ import {head, isEqual, throttle} from 'lodash';
import {useDelay} from '../../hooks/useDelay'; import {useDelay} from '../../hooks/useDelay';
import {Tooltip} from 'antd'; import {Tooltip} from 'antd';
import {TargetModeState, VisualiserControls} from './VisualizerControls'; import {TargetModeState, VisualiserControls} from './VisualizerControls';
import {getNode} from '../../utils/map';
export const Visualization2D: React.FC< export const Visualization2D: React.FC<
{ {
@@ -149,7 +150,7 @@ export const Visualization2D: React.FC<
onSetWireFrameMode={instance.uiActions.onSetWireFrameMode} onSetWireFrameMode={instance.uiActions.onSetWireFrameMode}
wireFrameMode={wireFrameMode} wireFrameMode={wireFrameMode}
focusedNode={focusedNodeId} focusedNode={focusedNodeId}
selectedNode={selectedNodeId?.id} selectedNode={getNode(selectedNodeId?.id, nodes)}
setTargetMode={setTargetMode} setTargetMode={setTargetMode}
targetMode={targetMode} targetMode={targetMode}
/> />

View File

@@ -9,7 +9,7 @@
import {Button, Dropdown, Menu, Slider, Tooltip, Typography} from 'antd'; import {Button, Dropdown, Menu, Slider, Tooltip, Typography} from 'antd';
import {Layout, produce, theme, usePlugin} from 'flipper-plugin'; import {Layout, produce, theme, usePlugin} from 'flipper-plugin';
import {Id} from '../../ClientTypes'; import {ClientNode, Id} from '../../ClientTypes';
import {plugin} from '../../index'; import {plugin} from '../../index';
import React from 'react'; import React from 'react';
import { import {
@@ -44,16 +44,18 @@ export function VisualiserControls({
}: { }: {
wireFrameMode: WireFrameMode; wireFrameMode: WireFrameMode;
onSetWireFrameMode: (mode: WireFrameMode) => void; onSetWireFrameMode: (mode: WireFrameMode) => void;
selectedNode?: Id; selectedNode?: ClientNode;
focusedNode?: Id; focusedNode?: Id;
setTargetMode: (targetMode: TargetModeState) => void; setTargetMode: (targetMode: TargetModeState) => void;
targetMode: TargetModeState; targetMode: TargetModeState;
}) { }) {
const instance = usePlugin(plugin); const instance = usePlugin(plugin);
const focusDisabled = focusedNode == null && selectedNode == null; const focusDisabled =
focusedNode == null &&
(selectedNode == null || selectedNode.children.length === 0);
const focusToolTip = focusDisabled const focusToolTip = focusDisabled
? 'Select a node to focus it' ? 'Select a non leaf node to focus it'
: focusedNode == null : focusedNode == null
? 'Focus current node' ? 'Focus current node'
: 'Remove focus'; : 'Remove focus';
@@ -153,7 +155,7 @@ export function VisualiserControls({
disabled={focusDisabled} disabled={focusDisabled}
onClick={() => { onClick={() => {
if (focusedNode == null) { if (focusedNode == null) {
instance.uiActions.onFocusNode(selectedNode); instance.uiActions.onFocusNode(selectedNode?.id);
} else { } else {
instance.uiActions.onFocusNode(); instance.uiActions.onFocusNode();
} }

View File

@@ -0,0 +1,15 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {ClientNode, Id} from '../ClientTypes';
export function getNode(id: Id | undefined, nodes: Map<Id, ClientNode>) {
//map just returns undefined when you pass null or undefined as a key
return nodes.get(id!);
}