Summary:
Here I've added the LocationsButton to the TitleBar in Flipper. This allows the user to navigate to saved bookmarks, or display the current page URI without ever opening the Navigation Plugin (Except to add bookmarks). The challenge of this diff was having a TitleBar child be controlled by a plugin.
The LocationsButton pulls bookmarks straight from the database whenever a mouseDown event is called on the button. (The Electron popup menu does not respond to props changes, so the menu is opened on mouse up and getting the bookmarks from the database occurs on mouse down... This seems to work fine).
The nav plugin on the Android side will now also send a welcome message alerting the app to created a persisted state for the navigation plugin, which shows the button in the TitleBar.
Let me know if I can answer any questions.
Reviewed By: danielbuechele
Differential Revision: D16786330
fbshipit-source-id: afc95348d9b7ec4ee041f42bb4d022f58c6bb969
Summary: N.B. There was one duplicate definition which TS rightfully complained about.
Reviewed By: danielbuechele
Differential Revision: D16764036
fbshipit-source-id: 498e4703c2363b19a3bdfa44527bde5000034095
Summary:
Currently icons were always fetched remotely. We used a service worker to prefetch and cache some icons, that were critical to the UI.
In this diff, we are bundling icons at build time, with the app. In utils/icons.js we still specfify the list of icons which should be bundled. These are downloaded as part of the build step and bundled with the app. We are downloading the icons in 1x and 2x (the two most common pixel densities).
Reviewed By: jknoxville
Differential Revision: D16620764
fbshipit-source-id: 965a7793ad1f08aebb292606add00218429cdaf4
Summary: This may be needed e.g. if there are multiple ManagedTables in the window.
Reviewed By: jknoxville, danielbuechele
Differential Revision: D16620862
fbshipit-source-id: 1880e9e6e8e9ece5f687b2768eae7c4f206f69da
Summary:
- fix mutual selection of elements in ax and non-ax tree (simplifies linkedNode logic as well)
- remove unneeded extraInfo attributes (focused, nonAXwithAXchild, & hasAXNode were not/no longer being used)
- use 50/50 fixed width view for trees when both are visible
Reviewed By: jknoxville
Differential Revision: D16390355
fbshipit-source-id: bbf9ea887f8f1035df8b4b0562ddcc4de291f004
Summary: In previous version when you edited something in the flipper, after each symbol flipper sent a message to edit a value to mobile side. Now "change message" will be sent only after pressing "Enter" button.
Reviewed By: priteshrnandgaonkar
Differential Revision: D16338101
fbshipit-source-id: 6605663d0b0059fdb2d20cb279e133afc25d47f1
Summary:
This component was added back in January, but it hasn't been used, and thus no one has tested it in the real world.
It needs a onHideSheet method to unmount this component when the plugin sheet becomes hidden. This allows the sheet to appear and dissapear on button clicks, instead of only appearing when the container component loads.
For the old behavior see the test plan in this diff: D13597251
Reviewed By: jknoxville
Differential Revision: D16443836
fbshipit-source-id: 68feec23338287dbafc846689ea2a1b35be4b2b0
Summary:
Migrating tables' row collection to Immutable.js List:
1. Сopy SearchableTable code to SearchableTable_immutable
2. Use ManagedTable_immutable for SearchableTable_immutable
-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity
Reviewed By: jknoxville
Differential Revision: D16416732
fbshipit-source-id: 856ba0407bfdd12bb1b90110e130562a07cc5060
Summary:
Migrating tables' row collection to Immutable.js List:
1. Change native array to Immutable list in ManagedTable_immutable
-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity
Reviewed By: jknoxville
Differential Revision: D16416869
fbshipit-source-id: 6d5690d8f5f70286f31a423e319b2cb22deab8ff
Summary:
Migrating tables' row collection to Immutable.js List:
1. Сopy ManagedTable code, no changes
2. Add deps to Immutable.js
-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity
Reviewed By: jknoxville
Differential Revision: D16416870
fbshipit-source-id: d3e1a9571ea08fa7ccaedc5ad3eca863d22a79a4
Summary:
Tried to automate this with [cjs-to-es6](https://github.com/nolanlawson/cjs-to-es6) but it only
works on vanilla JS files without any special Flow syntax. I converted some places
manually but we can just do the rest as we modify the files.
Reviewed By: jknoxville
Differential Revision: D16340187
fbshipit-source-id: b55c7ce2d719876e47e85f5f3fce13b8c8ae4010
Summary: Was getting error that the label for Select should be using htmlFor not for. found that when wrapping with JSX - changing this inside select fixes this errorlog.
Reviewed By: passy
Differential Revision: D16264103
fbshipit-source-id: 6a19d723a8356403ba4a169e0b160fed7e137670
Summary: Currently, `horizontallyScrollable` logic includes even invisible columns in the width calculation for `horizontallyScrollable` `ManagedTable`s, resulting in large empty spaces when many columns are invisible.
Reviewed By: danielbuechele
Differential Revision: D16139713
fbshipit-source-id: f653121845fbeac8a29bdb67ad0309add28e526a
Summary:
Text of the component is now can be searched if flipper layout plugin
Flipper now highlight all the row if name of id or text of this component matched to the query
Reviewed By: priteshrnandgaonkar
Differential Revision: D16108315
fbshipit-source-id: ff5eb0bc4890f02c9b07e47c26b9ea1408d9c606
Summary: The search text should only appear red when it's a regex, and when that regex is not valid.
Reviewed By: danielbuechele
Differential Revision: D16091096
fbshipit-source-id: 22b3e229e2c82ced956bae8fd203c5f177323dc2
Summary:
This is a new component that allows for chaining of buttons in a button group by placing an icon in between them.
This is how we plan to navigate between views within an Android app.
Reviewed By: danielbuechele
Differential Revision: D16071234
fbshipit-source-id: 404a3a341081b6111667bd5acf27876bec627435
Summary: Now if you copy one of components in flipper in layout plugin, you will get not only name but also id in your clipboard
Reviewed By: priteshrnandgaonkar
Differential Revision: D16031628
fbshipit-source-id: e2c38182dea28719615609f3aa2c74e58749cce4
Summary:
Summary of Bug:
The devices menu popup does not toggle as expected.
Because of the way the click event is fired in Javascript, that is mousedown, mouseup, click, and the fact that the electron menu closes on mousedown, was why the menu was not toggling as expected.
Fix:
This is a potential fix where I add some state to tell if the menu was recently closed, and disable the popup if it was. This is done through the callback method of menu.popup. Then on the next mouse event I renable the popup.
In addition to this, I moved the popup logic into onMouseUp instead of onClick. This was simply to make the code neater. Before I would have to add a timer to the onMouseUp event that would fire after the click event and renable the popup.
Let me know if there is a simple solution to this problem that I've completely missed.
Reviewed By: jknoxville
Differential Revision: D16028864
fbshipit-source-id: a73202536762cce2ab623176cbda0369ca2b8079
Summary:
Fixes the bug when the crash options had same title. Selection was broken in that case. Look at the video.
{F163450316}
Reviewed By: jknoxville
Differential Revision: D15985919
fbshipit-source-id: 7366c8f5f33bbddc15c058b7d20d78d295161404
Summary: Multiple markers might got truncated, now the list expands on hover
Reviewed By: jknoxville
Differential Revision: D15939404
fbshipit-source-id: 2640f200dc17876391e04eeced59bc7a2d925113
Summary: This was annoying me so I thought I'd rename it before anyone else starts to use the prop.
Reviewed By: danielbuechele
Differential Revision: D15919159
fbshipit-source-id: c351503797cedc5c11a158cec62515b1eb791a70
Summary:
Seemed a bit weird typing a regex without monospace.
Still would be good to have syntax highlighting. I tried using prismjs, but it seems to not work by default on Input elements.
Reviewed By: danielbuechele
Differential Revision: D15918742
fbshipit-source-id: b44c228b30f37f97811d09c80b191b52282720f8
Summary:
Now that the events tracking works again, make sure that the padding is not all over the place in the sidebar.
Before:
{F162525912}
Reviewed By: priteshrnandgaonkar
Differential Revision: D15875758
fbshipit-source-id: a30f057c8c0dc2dc77fc40f416ff565cc6621109
Summary:
Adds regex support to the logs plugin.
You can now do the same for any other SearchableTable, just by adding the prop `regexSupported={true}`
For other types of searchables, like maybe the layout hierarchy, we'll need to modify the class that does the filtering for that type.
I've done what I can with the UI to make it usable, though it would be awesome to have some proper regex syntax parsing and highlighting going on. It will go red if it's not valid at least.
Reviewed By: danielbuechele
Differential Revision: D15898806
fbshipit-source-id: 425edb1834dcc14ca741ac7fc8d566b4f2763c63
Summary: Rows that were virtualized and currently not rendered weren't copied, because we were using the DOM to get their content. This changes this to use out `textContent` utility to get the value of a row and therefore enables copying rows that are not rendered.
Reviewed By: jknoxville
Differential Revision: D15898935
fbshipit-source-id: c372bc4e77477214860f0513b442374da8f72416
Summary:
Where was a bug, where a range selection using the shift key wasn't working, when the start of the selection was outside the viewport.
The problem was caused by `selectInRange` firing twice, the second time with wrong arguments. In this diff, we are not firing the `onMouseEnterRow` handler, when the shift key is pressed.
Reviewed By: jknoxville
Differential Revision: D15897880
fbshipit-source-id: 95402dcbe9f8ce691be16cfd103918b09ff9e75c
Summary:
The logs plugin had an inconsistency where you'd be tailing the logs, and then hit "Clear Logs", which would empty the screen, but as the page fills up again, it would stay in the current position and not scroll with the new ones coming in.
This makes it consistent by making the behaviour:
```
If not props.stickyBottom
never autoscroll, e.g. for static tables of data
else
if scrolled to the bottom
autoscroll
if all the rows fit into the screen at once
autoscroll
```
Reviewed By: passy
Differential Revision: D15856813
fbshipit-source-id: 1357b0e39b576dbe69d260545b21fdab808d2bd2