From 9e673a07a8c7d5946484c87f57974871e6d851dc Mon Sep 17 00:00:00 2001 From: Sara Valderrama Date: Thu, 12 Jul 2018 09:23:27 -0700 Subject: [PATCH] Small updates to Layout Extension code (committing to keep separate from larger changes) Summary: Changed AXVisible checking, added AX specific hover Reviewed By: danielbuechele Differential Revision: D8795383 fbshipit-source-id: bb10b9e860629cfd385d97e79587c76460b516bc --- src/fb-stubs/AXLayoutExtender.js | 2 + src/plugins/layout/index.js | 71 ++++++++++++++++++-------------- 2 files changed, 43 insertions(+), 30 deletions(-) diff --git a/src/fb-stubs/AXLayoutExtender.js b/src/fb-stubs/AXLayoutExtender.js index 0c0dedf1b..8e42c888f 100644 --- a/src/fb-stubs/AXLayoutExtender.js +++ b/src/fb-stubs/AXLayoutExtender.js @@ -23,3 +23,5 @@ export class AXElementsInspector extends Component<{ return null; } } + +export const AXToggleButtonEnabled: boolean = false; diff --git a/src/plugins/layout/index.js b/src/plugins/layout/index.js index e420eba07..45587335a 100644 --- a/src/plugins/layout/index.js +++ b/src/plugins/layout/index.js @@ -25,7 +25,10 @@ import { VerticalRule, } from 'sonar'; -import {AXElementsInspector} from '../../fb-stubs/AXLayoutExtender.js'; +import { + AXElementsInspector, + AXToggleButtonEnabled, +} from '../../fb-stubs/AXLayoutExtender.js'; // $FlowFixMe import debounce from 'lodash.debounce'; @@ -252,7 +255,6 @@ export default class Layout extends SonarPlugin { ...element, }; } - return {AXelements: updatedElements}; }, @@ -399,22 +401,27 @@ export default class Layout extends SonarPlugin { }); }); - this.client.call('getRoot').then((element: Element) => { - this.dispatchAction({elements: [element], type: 'UpdateAXElements'}); - this.dispatchAction({root: element.id, type: 'SetAXRoot'}); - this.performInitialExpand(element, true).then(() => { - this.setState({AXinitialised: true}); + if (AXToggleButtonEnabled) { + this.client.call('getRoot').then((element: Element) => { + this.dispatchAction({elements: [element], type: 'UpdateAXElements'}); + this.dispatchAction({root: element.id, type: 'SetAXRoot'}); + this.performInitialExpand(element, true).then(() => { + this.setState({AXinitialised: true}); + }); }); - }); + } this.client.subscribe( 'invalidate', ({nodes}: {nodes: Array<{id: ElementID}>}) => { this.invalidate(nodes.map(node => node.id)).then( (elements: Array) => { - this.dispatchAction({elements, type: 'UpdateElements'}); - // to be removed once trees are separate - will have own invalidate - this.dispatchAction({elements, type: 'UpdateAXElements'}); + if (this.state.inAXMode) { + // to be removed once trees are separate - will have own invalidate + this.dispatchAction({elements, type: 'UpdateAXElements'}); + } else { + this.dispatchAction({elements, type: 'UpdateElements'}); + } }, ); }, @@ -445,10 +452,13 @@ export default class Layout extends SonarPlugin { return Promise.resolve([]); } - return this.getNodes(ids, true, false).then((elements: Array) => { + const ax = this.state.inAXMode; + return this.getNodes(ids, true, ax).then((elements: Array) => { const children = elements .filter(element => { - const prev = this.state.elements[element.id]; + const prev = (ax ? this.state.AXelements : this.state.elements)[ + element.id + ]; return prev && prev.expanded; }) .map(element => element.children) @@ -462,7 +472,7 @@ export default class Layout extends SonarPlugin { getNodesAndDirectChildren( ids: Array, - ax: boolean, + ax: boolean, // always false at the moment bc only used for select ): Promise> { return this.getNodes(ids, false, ax).then((elements: Array) => { const children = elements @@ -630,6 +640,10 @@ export default class Layout extends SonarPlugin { this.client.send('setHighlighted', {id: key}); }); + onAXElementHovered = debounce((key: ?ElementID) => { + this.client.send('setHighlighted', {id: key}); + }); + onDataValueChanged = (path: Array, value: any) => { const selected = this.state.inAXMode ? this.state.AXselected @@ -683,20 +697,6 @@ export default class Layout extends SonarPlugin { outstandingSearchQuery, } = this.state; - const AXInspector = ( - - ); - const AXButtonVisible = AXInspector !== null; - return ( @@ -715,7 +715,7 @@ export default class Layout extends SonarPlugin { } /> - {AXButtonVisible ? ( + {AXToggleButtonEnabled ? ( { )} {AXinitialised && inAXMode ? : null} - {AXinitialised && inAXMode ? AXInspector : null} + {AXinitialised && inAXMode ? ( + + ) : null} {this.renderSidebar()}