From 0ec48d4fc990243278730124ed83da66fb9d2c0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=BCchele?= Date: Thu, 22 Aug 2019 10:00:00 -0700 Subject: [PATCH] index Summary: This converts the index file to TypeScript which is used as an export for all plugins. Alongside, I had to fix a couple of errors in various files to make sure everything works correctly. For plugins using flow, we define an interface which uses the type definition for FlipperPlugin and types all UI components as `any`. Reviewed By: passy Differential Revision: D16936890 fbshipit-source-id: dacd9a63a82b9f0bbb530b06072186874cba7b6f --- .flowconfig | 3 - flow-typed/{plugin.js => flipper.js} | 117 +++++++++-- package.json | 5 +- src/NotificationsHub.tsx | 46 +++-- src/PluginContainer.tsx | 3 +- src/chrome/BugReporterDialog.tsx | 4 +- src/chrome/LocationsButton.tsx | 2 +- src/chrome/MainSidebar.tsx | 85 ++++---- src/chrome/PluginDebugger.tsx | 16 +- src/chrome/SelectPluginSheet.tsx | 12 +- src/chrome/ShareSheetErrorList.tsx | 12 +- src/chrome/Sheet.tsx | 3 +- src/chrome/TitleBar.tsx | 4 +- src/chrome/WelcomeScreen.tsx | 2 +- src/dispatcher/__tests__/TestPlugin.js | 2 +- src/dispatcher/__tests__/plugins.electron.js | 2 +- src/dispatcher/plugins.tsx | 2 +- src/index.js | 186 ------------------ src/index.tsx | 176 +++++++++++++++++ src/plugin.tsx | 4 +- src/plugins/layout/Inspector.js | 1 - src/plugins/sections/EventsTable.js | 1 - src/plugins/sections/index.js | 1 - src/ui/components/Button.tsx | 2 +- src/ui/components/ContextMenu.tsx | 6 +- .../data-inspector/DataDescription.tsx | 2 +- src/ui/index.js | 185 ----------------- src/ui/index.tsx | 174 ++++++++++++++++ src/ui/styled/index.js | 9 - src/utils/__tests__/pluginUtils.node.js | 2 +- yarn.lock | 7 + 31 files changed, 581 insertions(+), 495 deletions(-) rename flow-typed/{plugin.js => flipper.js} (54%) delete mode 100644 src/index.js create mode 100644 src/index.tsx delete mode 100644 src/ui/index.js create mode 100644 src/ui/index.tsx delete mode 100644 src/ui/styled/index.js diff --git a/.flowconfig b/.flowconfig index a3a0024a2..e162a7108 100644 --- a/.flowconfig +++ b/.flowconfig @@ -20,10 +20,7 @@ module.use_strict=true emoji=true all=true include_warnings=true -module.name_mapper='^.*plugin\.flow\.js$' -> 'plugin' -module.name_mapper='^.*plugin\.tsx$' -> 'plugin' module.name_mapper='^\(.*\)\.tsx$' -> 'TsStub' -module.name_mapper='flipper' -> '/src/index.js' suppress_type=$FlowFixMe module.system=haste diff --git a/flow-typed/plugin.js b/flow-typed/flipper.js similarity index 54% rename from flow-typed/plugin.js rename to flow-typed/flipper.js index 3502ba3ae..ae6bb3e3d 100644 --- a/flow-typed/plugin.js +++ b/flow-typed/flipper.js @@ -11,18 +11,18 @@ // than the original flow one. (Persisted State generic param being used // in reducers etc. -declare module plugin { - import type {KeyboardActions} from './MenuBar.js'; - import type {App} from './App.js'; - import type {Logger} from './fb-interfaces/Logger.js'; - import type Client from './Client.js'; - import type {Store, MiddlewareAPI} from './reducers/index.js'; - import type {MetricType} from './utils/exportMetrics.tsx'; - import type {Node} from 'react'; - import type BaseDevice from './devices/BaseDevice.js'; - import type AndroidDevice from './devices/AndroidDevice'; - import type IOSDevice from './devices/IOSDevice'; +import type {KeyboardActions} from './MenuBar.js'; +import type {App} from './App.js'; +import type {Logger} from './fb-interfaces/Logger.js'; +import type Client from './Client.js'; +import type {Store, MiddlewareAPI} from './reducers/index.js'; +import type {MetricType} from './utils/exportMetrics.tsx'; +import type {Node} from 'react'; +import type BaseDevice from './devices/BaseDevice.js'; +import type AndroidDevice from './devices/AndroidDevice'; +import type IOSDevice from './devices/IOSDevice'; +declare module 'flipper' { // This function is intended to be called from outside of the plugin. // If you want to `call` from the plugin use, this.client.call declare function callClient( @@ -172,4 +172,99 @@ declare module plugin { _init(): void; } + + declare var AndroidDevice: any; + declare var BaseDevice: any; + declare var Block: any; + declare var Box: any; + declare var Button: any; + declare var ButtonGroup: any; + declare var Checkbox: any; + declare var CodeBlock: any; + declare var Component: any; + declare var ContextMenu: any; + declare var DataDescription: any; + declare var DataInspector: any; + declare var DetailSidebar: any; + declare var Device: any; + declare var DeviceLogEntry: any; + declare var Element: any; + declare var ElementID: any; + declare var ElementSearchResultSet: any; + declare var ElementsInspector: any; + declare var ErrorBlock: any; + declare var ErrorBlockContainer: any; + declare var Filter: any; + declare var FlexBox: any; + declare var FlexCenter: any; + declare var FlexColumn: any; + declare var FlexRow: any; + declare var FlipperBasePlugin: any; + declare var FlipperPlugin: any; + declare var GK: any; + declare var Glyph: any; + declare var Heading: any; + declare var HorizontalRule: any; + declare var Input: any; + declare var Label: any; + declare var Link: any; + declare var LoadingIndicator: any; + declare var LogLevel: any; + declare var ManagedDataInspector: any; + declare var ManagedTable: any; + declare var ManagedTable_immutable: any; + declare var MarkerTimeline: any; + declare var MetricType: any; + declare var MiddlewareAPI: any; + declare var OS: any; + declare var Panel: any; + declare var PureComponent: any; + declare var SearchBox: any; + declare var SearchIcon: any; + declare var SearchInput: any; + declare var Searchable: any; + declare var SearchableProps: any; + declare var SearchableTable: any; + declare var SearchableTable_immutable: any; + declare var Select: any; + declare var Sheet: any; + declare var Sidebar: any; + declare var SidebarExtensions: any; + declare var Spacer: any; + declare var StackTrace: any; + declare var StatusIndicator: any; + declare var Store: any; + declare var Tab: any; + declare var TableBodyRow: any; + declare var TableColumnOrder: any; + declare var TableColumnSizes: any; + declare var TableColumns: any; + declare var TableHighlightedRows: any; + declare var TableRowSortOrder: any; + declare var TableRows: any; + declare var TableRows_immutable: any; + declare var Tabs: any; + declare var Text: any; + declare var Textarea: any; + declare var ToggleButton: any; + declare var Toolbar: any; + declare var Tooltip: any; + declare var Value: any; + declare var VerticalRule: any; + declare var View: any; + declare var bufferToBlob: any; + declare var clipboard: any; + declare var colors: any; + declare var constants: any; + declare var createPaste: any; + declare var createTablePlugin: any; + declare var getPersistedState: any; + declare var getPluginKey: any; + declare var getStringFromErrorLike: any; + declare var isProduction: any; + declare var keyframes: any; + declare var renderValue: any; + declare var shouldParseAndroidLog: any; + declare var styled: any; + declare var textContent: any; } diff --git a/package.json b/package.json index d71ca493e..090ce57d1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "description": "Mobile development tool", "productName": "Flipper", "author": "Facebook Inc", - "main": "src/index.js", + "main": "src/index.tsx", "icon": "icon.png", "category": "facebook-intern", "privileged": true, @@ -46,7 +46,7 @@ "/static/globalTestSetup.js" ], "moduleNameMapper": { - "^flipper$": "/src/index.js" + "^flipper$": "/src/index.tsx" } }, "devDependencies": { @@ -88,6 +88,7 @@ "typescript": "^3.5.2" }, "dependencies": { + "@types/react-transition-group": "^4.2.2", "@types/redux-devtools-extension": "^2.13.2", "@types/rsocket-tcp-server": "^0.0.2", "JSONStream": "^1.3.1", diff --git a/src/NotificationsHub.tsx b/src/NotificationsHub.tsx index e1e7a779a..4465c10f2 100644 --- a/src/NotificationsHub.tsx +++ b/src/NotificationsHub.tsx @@ -78,13 +78,11 @@ export default class Notifications< defaultFilters={[ ...blacklistedPlugins.map(value => ({ value, - invertible: false, type: 'exclude', key: 'plugin', })), ...blacklistedCategories.map(value => ({ value, - invertible: false, type: 'exclude', key: 'category', })), @@ -103,7 +101,7 @@ type OwnProps = { onClear: () => void; selectedID: string | null | undefined; logger: Logger; -} & SearchableProps; +} & Partial; type StateFromProps = { activeNotifications: Array; @@ -200,7 +198,6 @@ class NotificationsTable extends Component { value: pluginId, type: 'exclude', key: 'plugin', - invertible: false, }); this.props.updatePluginBlacklist( this.props.blacklistedPlugins.concat(pluginId), @@ -213,7 +210,6 @@ class NotificationsTable extends Component { value: category, type: 'exclude', key: 'category', - invertible: false, }); this.props.updatePluginBlacklist( this.props.blacklistedCategories.concat(category), @@ -379,7 +375,13 @@ const SEVERITY_COLOR_MAP = { error: colors.red, }; -const NotificationBox = styled(FlexRow)(props => ({ +type NotificationBoxProps = { + inactive?: boolean; + isSelected?: boolean; + severity: keyof typeof SEVERITY_COLOR_MAP; +}; + +const NotificationBox = styled(FlexRow)((props: NotificationBoxProps) => ({ backgroundColor: props.inactive ? 'transparent' : colors.white, opacity: props.inactive ? 0.5 : 1, alignItems: 'flex-start', @@ -418,15 +420,17 @@ const Title = styled('div')({ fontSize: '1.1em', }); -const NotificationContent = styled(FlexColumn)(props => ({ - marginLeft: 6, - marginRight: 10, - flexGrow: 1, - overflow: 'hidden', - maxHeight: props.isSelected ? 'none' : 56, - lineHeight: 1.4, - color: props.isSelected ? colors.light50 : colors.light30, -})); +const NotificationContent = styled(FlexColumn)( + (props: {isSelected?: boolean}) => ({ + marginLeft: 6, + marginRight: 10, + flexGrow: 1, + overflow: 'hidden', + maxHeight: props.isSelected ? 'none' : 56, + lineHeight: 1.4, + color: props.isSelected ? colors.light50 : colors.light30, + }), +); const Actions = styled(FlexRow)({ alignItems: 'center', @@ -537,7 +541,7 @@ class NotificationItem extends Component< } }; - reportNotUseful = (e: UIEvent) => { + reportNotUseful = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); if (this.props.logger) { @@ -550,7 +554,7 @@ class NotificationItem extends Component< this.setState({reportedNotHelpful: true}); }; - onHide = (e: UIEvent) => { + onHide = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); if (this.props.onHideCategory) { @@ -572,7 +576,7 @@ class NotificationItem extends Component< const {action} = notification; return ( - > data-role="notification" component={NotificationBox} severity={notification.severity} @@ -617,16 +621,16 @@ class NotificationItem extends Component< {action && !inactive && !isSelected && ( {action && ( - + Open )} {this.state.reportedNotHelpful ? ( - + Hide ) : ( - + Not helpful )} diff --git a/src/PluginContainer.tsx b/src/PluginContainer.tsx index 6ae3d2240..da0c74bbb 100644 --- a/src/PluginContainer.tsx +++ b/src/PluginContainer.tsx @@ -166,8 +166,7 @@ class PluginContainer extends PureComponent { + 'Unknown'}" encountered an error during render`}> {React.createElement(activePlugin, props)} diff --git a/src/chrome/BugReporterDialog.tsx b/src/chrome/BugReporterDialog.tsx index 708562f4b..5551c9568 100644 --- a/src/chrome/BugReporterDialog.tsx +++ b/src/chrome/BugReporterDialog.tsx @@ -43,7 +43,7 @@ const Center = styled(Text)({ }); const Title = styled('div')({ - fontWeight: '500', + fontWeight: 500, marginTop: 8, marginLeft: 2, marginBottom: 8, @@ -119,7 +119,7 @@ class BugReporterDialog extends Component { titleRef: HTMLElement; descriptionRef: HTMLElement; - onDescriptionChange = (e: React.ChangeEvent) => { + onDescriptionChange = (e: React.ChangeEvent) => { this.setState({description: e.target.value}); }; diff --git a/src/chrome/LocationsButton.tsx b/src/chrome/LocationsButton.tsx index 56b9ca5de..93c1b95d7 100644 --- a/src/chrome/LocationsButton.tsx +++ b/src/chrome/LocationsButton.tsx @@ -36,7 +36,7 @@ const DropdownButton = styled(Button)({ fontSize: 11, }); -const shortenText = (text: String, MAX_CHARACTERS = 30): String => { +const shortenText = (text: string, MAX_CHARACTERS = 30): string => { if (text.length <= MAX_CHARACTERS) { return text; } else { diff --git a/src/chrome/MainSidebar.tsx b/src/chrome/MainSidebar.tsx index d057a1da7..19af229ce 100644 --- a/src/chrome/MainSidebar.tsx +++ b/src/chrome/MainSidebar.tsx @@ -34,8 +34,9 @@ import {selectPlugin, showMoreOrLessPlugins} from '../reducers/connections'; import {setActiveSheet} from '../reducers/application'; import UserAccount from './UserAccount'; import {connect} from 'react-redux'; +import {BackgroundColorProperty} from 'csstype'; -const ListItem = styled('div')(({active}) => ({ +const ListItem = styled('div')(({active}: {active?: boolean}) => ({ paddingLeft: 10, display: 'flex', alignItems: 'center', @@ -64,49 +65,53 @@ const SidebarHeader = styled(FlexBox)({ flexShrink: 0, }); -const PluginShape = styled(FlexBox)(({backgroundColor}) => ({ - marginRight: 5, - backgroundColor, - borderRadius: 3, - flexShrink: 0, - width: 18, - height: 18, - justifyContent: 'center', - alignItems: 'center', -})); +const PluginShape = styled(FlexBox)( + ({backgroundColor}: {backgroundColor: BackgroundColorProperty}) => ({ + marginRight: 5, + backgroundColor, + borderRadius: 3, + flexShrink: 0, + width: 18, + height: 18, + justifyContent: 'center', + alignItems: 'center', + }), +); -const PluginName = styled(Text)(props => ({ - minWidth: 0, - textOverflow: 'ellipsis', - whiteSpace: 'nowrap', - overflow: 'hidden', - display: 'flex', - flexDirection: 'row', - justifyContent: 'space-between', - flexGrow: 1, - '::after': { - fontSize: 12, - display: props.count ? 'inline-block' : 'none', - padding: '0 8px', - lineHeight: '17px', - height: 17, - alignSelf: 'center', - content: `"${props.count}"`, - borderRadius: '999em', - color: props.isActive ? colors.macOSTitleBarIconSelected : colors.white, - backgroundColor: props.isActive - ? colors.white - : colors.macOSTitleBarIconSelected, - fontWeight: 500, - }, -})); +const PluginName = styled(Text)( + (props: {isActive?: boolean; count?: number}) => ({ + minWidth: 0, + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + overflow: 'hidden', + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-between', + flexGrow: 1, + '::after': { + fontSize: 12, + display: props.count ? 'inline-block' : 'none', + padding: '0 8px', + lineHeight: '17px', + height: 17, + alignSelf: 'center', + content: `"${props.count}"`, + borderRadius: '999em', + color: props.isActive ? colors.macOSTitleBarIconSelected : colors.white, + backgroundColor: props.isActive + ? colors.white + : colors.macOSTitleBarIconSelected, + fontWeight: 500, + }, + }), +); const Plugins = styled(FlexColumn)({ flexGrow: 1, overflow: 'auto', }); -const PluginDebugger = styled(FlexBox)(props => ({ +const PluginDebugger = styled(FlexBox)({ color: colors.blackAlpha50, alignItems: 'center', padding: 10, @@ -114,7 +119,7 @@ const PluginDebugger = styled(FlexBox)(props => ({ whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', -})); +}); const PluginShowMoreOrLess = styled(ListItem)({ color: colors.blue, @@ -316,14 +321,14 @@ class MainSidebar extends PureComponent { {client.query.app} {Array.from(this.props.clientPlugins.values()) .filter( - (p: typeof FlipperDevicePlugin) => + p => (client.showAllPlugins ? client.plugins : client.lessPlugins ).indexOf(p.id) > -1, ) .sort((a, b) => client.byClientLRU(a, b)) - .map((plugin: typeof FlipperDevicePlugin) => ( + .map(plugin => ( { loaded: boolean, status: string, GKname: string | null | undefined, - GKpassing: boolean | null | undefined, pluginPath: string | null | undefined, ): TableBodyRow { return { @@ -125,11 +124,7 @@ class PluginDebugger extends Component { lamp: {value: }, name: {value: {name}}, status: { - value: status ? ( - - {status} - - ) : null, + value: status ? {status} : null, }, gk: { value: GKname && ( @@ -184,7 +179,6 @@ class PluginDebugger extends Component { false, 'GK disabled', plugin.gatekeeper, - false, externalPluginPath(plugin), ), ), @@ -197,7 +191,6 @@ class PluginDebugger extends Component { true, '', plugin.gatekeeper, - true, externalPluginPath(plugin), ), ), @@ -210,7 +203,6 @@ class PluginDebugger extends Component { true, '', plugin.gatekeeper, - true, externalPluginPath(plugin), ), ), @@ -223,7 +215,6 @@ class PluginDebugger extends Component { false, 'disabled', null, - null, externalPluginPath(plugin), ), ), @@ -236,7 +227,6 @@ class PluginDebugger extends Component { false, status, null, - null, externalPluginPath(plugin), ), ), @@ -335,7 +325,7 @@ export default connect( disabledPlugins, failedPlugins, }, - connections: {selectedPlugin, clients, selectedDevice}, + connections: {clients, selectedDevice}, }) => ({ devicePlugins: Array.from(devicePlugins.values()), clientPlugins: Array.from(clientPlugins.values()), diff --git a/src/chrome/SelectPluginSheet.tsx b/src/chrome/SelectPluginSheet.tsx index 30f4559e9..af7c20986 100644 --- a/src/chrome/SelectPluginSheet.tsx +++ b/src/chrome/SelectPluginSheet.tsx @@ -55,7 +55,17 @@ const PluginRowComponentContainer = styled(FlexColumn)({ }); const Padder = styled('div')( - ({paddingLeft, paddingRight, paddingBottom, paddingTop}) => ({ + ({ + paddingLeft, + paddingRight, + paddingBottom, + paddingTop, + }: { + paddingLeft?: number; + paddingRight?: number; + paddingBottom?: number; + paddingTop?: number; + }) => ({ paddingLeft: paddingLeft || 0, paddingRight: paddingRight || 0, paddingBottom: paddingBottom || 0, diff --git a/src/chrome/ShareSheetErrorList.tsx b/src/chrome/ShareSheetErrorList.tsx index d290020c2..1c17e8114 100644 --- a/src/chrome/ShareSheetErrorList.tsx +++ b/src/chrome/ShareSheetErrorList.tsx @@ -21,7 +21,17 @@ const ErrorMessage = styled(Text)({ }); const Padder = styled('div')( - ({paddingLeft, paddingRight, paddingBottom, paddingTop}) => ({ + ({ + paddingLeft, + paddingRight, + paddingBottom, + paddingTop, + }: { + paddingLeft?: number; + paddingRight?: number; + paddingBottom?: number; + paddingTop?: number; + }) => ({ paddingLeft: paddingLeft || 0, paddingRight: paddingRight || 0, paddingBottom: paddingBottom || 0, diff --git a/src/chrome/Sheet.tsx b/src/chrome/Sheet.tsx index 6570c92fa..434b3fbee 100644 --- a/src/chrome/Sheet.tsx +++ b/src/chrome/Sheet.tsx @@ -7,6 +7,7 @@ import React, {Component} from 'react'; import {Transition} from 'react-transition-group'; +import {TransitionStatus} from 'react-transition-group/Transition'; import {setActiveSheet} from '../reducers/application'; import {connect} from 'react-redux'; import {styled} from 'flipper'; @@ -16,7 +17,7 @@ import {State as Store} from '../reducers'; import {ActiveSheet} from '../reducers/application'; -const DialogContainer = styled('div')(({state}) => ({ +const DialogContainer = styled('div')(({state}: {state: TransitionStatus}) => ({ transform: `translate(-50%, ${ state === 'entering' || state === 'exiting' || state === 'exited' ? 'calc(-100% - 20px)' diff --git a/src/chrome/TitleBar.tsx b/src/chrome/TitleBar.tsx index 8955f7409..089ffe7ee 100644 --- a/src/chrome/TitleBar.tsx +++ b/src/chrome/TitleBar.tsx @@ -40,7 +40,7 @@ import {clipboard} from 'electron'; import React from 'react'; import {State} from 'src/reducers'; -const AppTitleBar = styled(FlexRow)(({focused}) => ({ +const AppTitleBar = styled(FlexRow)(({focused}: {focused?: boolean}) => ({ background: focused ? `linear-gradient(to bottom, ${colors.macOSTitleBarBackgroundTop} 0%, ${ colors.macOSTitleBarBackgroundBottom @@ -146,7 +146,7 @@ class TitleBar extends React.Component { return ( {navPluginIsActive ? ( - + diff --git a/src/chrome/WelcomeScreen.tsx b/src/chrome/WelcomeScreen.tsx index 86b425160..316f986fa 100644 --- a/src/chrome/WelcomeScreen.tsx +++ b/src/chrome/WelcomeScreen.tsx @@ -26,7 +26,7 @@ const Container = styled(FlexColumn)({ backgroundColor: colors.light02, }); -const Welcome = styled(FlexColumn)(({isMounted}) => ({ +const Welcome = styled(FlexColumn)(({isMounted}: {isMounted?: boolean}) => ({ width: 460, background: colors.white, borderRadius: 10, diff --git a/src/dispatcher/__tests__/TestPlugin.js b/src/dispatcher/__tests__/TestPlugin.js index a3e8fb448..b91cdc404 100644 --- a/src/dispatcher/__tests__/TestPlugin.js +++ b/src/dispatcher/__tests__/TestPlugin.js @@ -5,7 +5,7 @@ * @format */ -import {FlipperPlugin} from '../../plugin.tsx'; +import {FlipperPlugin} from 'flipper'; export default class extends FlipperPlugin { static id = 'Static ID'; diff --git a/src/dispatcher/__tests__/plugins.electron.js b/src/dispatcher/__tests__/plugins.electron.js index 884d45234..b80ff0b2d 100644 --- a/src/dispatcher/__tests__/plugins.electron.js +++ b/src/dispatcher/__tests__/plugins.electron.js @@ -13,7 +13,7 @@ import dispatcher, { } from '../plugins.tsx'; import path from 'path'; import {remote} from 'electron'; -import {FlipperPlugin} from '../../plugin.tsx'; +import {FlipperPlugin} from 'flipper'; import reducers from '../../reducers/index.tsx'; import {init as initLogger} from '../../fb-stubs/Logger.tsx'; import configureStore from 'redux-mock-store'; diff --git a/src/dispatcher/plugins.tsx b/src/dispatcher/plugins.tsx index 5d0f5992f..d968816ef 100644 --- a/src/dispatcher/plugins.tsx +++ b/src/dispatcher/plugins.tsx @@ -11,7 +11,7 @@ import {FlipperPlugin, FlipperDevicePlugin} from '../plugin'; import {State} from '../reducers/plugins'; import React from 'react'; import ReactDOM from 'react-dom'; -import * as Flipper from '../index.js'; +import * as Flipper from '../index'; import { registerPlugins, addGatekeepedPlugins, diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 1b20a606d..000000000 --- a/src/index.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Copyright 2018-present Facebook. - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * @format - */ - -export {default as styled, keyframes} from 'react-emotion'; -export * from './ui/index.js'; -export {getStringFromErrorLike, textContent} from './utils/index.tsx'; -export {default as GK} from './fb-stubs/GK.tsx'; -export {default as createPaste} from './fb-stubs/createPaste.tsx'; -export {graphQLQuery} from './fb-stubs/user.tsx'; -export { - FlipperBasePlugin, - FlipperPlugin, - FlipperDevicePlugin, - callClient, -} from './plugin.tsx'; -export type {PluginClient, Props} from './plugin.tsx'; -export {default as Client} from './Client.tsx'; -export type {MetricType} from './utils/exportMetrics.tsx'; -export {clipboard} from 'electron'; -export {default as constants} from './fb-stubs/constants.tsx'; -export {connect} from 'react-redux'; -export {selectPlugin} from './reducers/connections.tsx'; -export {getPluginKey, getPersistedState} from './utils/pluginUtils.tsx'; -export {writeBufferToFile, bufferToBlob} from './utils/screenshot.tsx'; -export type {Store, MiddlewareAPI} from './reducers/index.tsx'; -export {default as BaseDevice} from './devices/BaseDevice.tsx'; - -export { - default as SidebarExtensions, -} from './fb-stubs/LayoutInspectorSidebarExtensions.tsx'; -export { - DeviceLogListener, - DeviceLogEntry, - LogLevel, -} from './devices/BaseDevice.tsx'; -export {shouldParseAndroidLog} from './utils/crashReporterUtility.tsx'; -export {default as isProduction} from './utils/isProduction.tsx'; -export {createTablePlugin} from './createTablePlugin.tsx'; -export {default as DetailSidebar} from './chrome/DetailSidebar.tsx'; - -export {default as Device} from './devices/BaseDevice.tsx'; -export {default as AndroidDevice} from './devices/AndroidDevice.tsx'; -export {default as ArchivedDevice} from './devices/ArchivedDevice.tsx'; -export {default as IOSDevice} from './devices/IOSDevice.tsx'; -export type {OS} from './devices/BaseDevice.tsx'; - -export {default as Button} from './ui/components/Button.tsx'; -export {default as ToggleButton} from './ui/components/ToggleSwitch.tsx'; -export { - default as ButtonNavigationGroup, -} from './ui/components/ButtonNavigationGroup.tsx'; -export {default as ButtonGroup} from './ui/components/ButtonGroup.tsx'; -export { - default as ButtonGroupChain, -} from './ui/components/ButtonGroupChain.tsx'; -export {colors, darkColors, brandColors} from './ui/components/colors.tsx'; -export {default as Glyph} from './ui/components/Glyph.tsx'; -export { - default as LoadingIndicator, -} from './ui/components/LoadingIndicator.tsx'; -export {default as Popover} from './ui/components/Popover.tsx'; -export { - TableColumns, - TableRows, - TableRows_immutable, - TableBodyColumn, - TableBodyRow, - TableHighlightedRows, - TableRowSortOrder, - TableColumnOrder, - TableColumnOrderVal, - TableColumnSizes, -} from './ui/components/table/types.tsx'; -export {default as ManagedTable} from './ui/components/table/ManagedTable.tsx'; -export {ManagedTableProps} from './ui/components/table/ManagedTable.tsx'; -export { - default as ManagedTable_immutable, - ManagedTableProps_immutable, -} from './ui/components/table/ManagedTable_immutable.tsx'; -export { - Value, - renderValue, -} from './ui/components/table/TypeBasedValueRenderer.tsx'; -export { - DataValueExtractor, - DataInspectorExpanded, -} from './ui/components/data-inspector/DataInspector.tsx'; -export { - default as DataInspector, -} from './ui/components/data-inspector/DataInspector.tsx'; -export { - default as ManagedDataInspector, -} from './ui/components/data-inspector/ManagedDataInspector.tsx'; -export { - default as DataDescription, -} from './ui/components/data-inspector/DataDescription.tsx'; -export {default as Tabs} from './ui/components/Tabs.tsx'; -export {default as Tab} from './ui/components/Tab.tsx'; -export {default as Input} from './ui/components/Input.tsx'; -export {default as Textarea} from './ui/components/Textarea.tsx'; -export {default as Select} from './ui/components/Select.tsx'; -export {default as Checkbox} from './ui/components/Checkbox.tsx'; -export {default as CodeBlock} from './ui/components/CodeBlock.tsx'; -export {default as ErrorBlock} from './ui/components/ErrorBlock.tsx'; -export {ErrorBlockContainer} from './ui/components/ErrorBlock.tsx'; -export {default as ErrorBoundary} from './ui/components/ErrorBoundary.tsx'; -export {OrderableOrder} from './ui/components/Orderable.tsx'; -export {default as Interactive} from './ui/components/Interactive.tsx'; -export {default as Orderable} from './ui/components/Orderable.tsx'; -export {default as VirtualList} from './ui/components/VirtualList.tsx'; -export {Component, PureComponent} from 'react'; -export { - default as ContextMenuProvider, -} from './ui/components/ContextMenuProvider.tsx'; -export {default as ContextMenu} from './ui/components/ContextMenu.tsx'; -export {FileListFile, FileListFiles} from './ui/components/FileList.tsx'; -export {default as FileList} from './ui/components/FileList.tsx'; -export {default as File} from './ui/components/File.tsx'; -export { - DesktopDropdownItem, - DesktopDropdownSelectedItem, - DesktopDropdown, -} from './ui/components/desktop-toolbar.tsx'; -export {default as View} from './ui/components/View.tsx'; -export {default as ViewWithSize} from './ui/components/ViewWithSize.tsx'; -export {default as Block} from './ui/components/Block.tsx'; -export {default as FocusableBox} from './ui/components/FocusableBox.tsx'; -export {default as Sidebar} from './ui/components/Sidebar.tsx'; -export {default as SidebarLabel} from './ui/components/SidebarLabel.tsx'; -export {default as Box} from './ui/components/Box.tsx'; -export {default as FlexBox} from './ui/components/FlexBox.tsx'; -export {default as FlexRow} from './ui/components/FlexRow.tsx'; -export {default as FlexColumn} from './ui/components/FlexColumn.tsx'; -export {default as FlexCenter} from './ui/components/FlexCenter.tsx'; -export {default as Toolbar, Spacer} from './ui/components/Toolbar.tsx'; -export {default as Panel} from './ui/components/Panel.tsx'; -export {default as Text} from './ui/components/Text.tsx'; -export {default as TextParagraph} from './ui/components/TextParagraph.tsx'; -export {default as Link} from './ui/components/Link.tsx'; -export {default as PathBreadcrumbs} from './ui/components/PathBreadcrumbs.tsx'; -export {default as ModalOverlay} from './ui/components/ModalOverlay.tsx'; -export {default as Tooltip} from './ui/components/Tooltip.tsx'; -export {default as TooltipProvider} from './ui/components/TooltipProvider.tsx'; -export {default as ResizeSensor} from './ui/components/ResizeSensor.tsx'; -export {default as StatusIndicator} from './ui/components/StatusIndicator.tsx'; -export {default as HorizontalRule} from './ui/components/HorizontalRule.tsx'; -export {default as VerticalRule} from './ui/components/VerticalRule.tsx'; -export {default as Label} from './ui/components/Label.tsx'; -export {default as Heading} from './ui/components/Heading.tsx'; -export {Filter} from './ui/components/filter/types.tsx'; -export {default as MarkerTimeline} from './ui/components/MarkerTimeline.tsx'; -export {default as StackTrace} from './ui/components/StackTrace.tsx'; -export { - SearchBox, - SearchInput, - SearchIcon, - SearchableProps, - default as Searchable, -} from './ui/components/searchable/Searchable.tsx'; -export { - default as SearchableTable, -} from './ui/components/searchable/SearchableTable.tsx'; -export { - default as SearchableTable_immutable, -} from './ui/components/searchable/SearchableTable_immutable.tsx'; -export { - ElementID, - ElementData, - ElementAttribute, - Element, - ElementSearchResultSet, -} from './ui/components/elements-inspector/ElementsInspector.tsx'; -export {Elements} from './ui/components/elements-inspector/elements.tsx'; -export { - ContextMenuExtension, -} from './ui/components/elements-inspector/elements.tsx'; -export { - default as ElementsInspector, -} from './ui/components/elements-inspector/ElementsInspector.tsx'; -export {InspectorSidebar} from './ui/components/elements-inspector/sidebar.tsx'; -export {Console} from './ui/components/console.tsx'; -export {default as Sheet} from './ui/components/Sheet.tsx'; diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 000000000..9a4d48848 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,176 @@ +/** + * Copyright 2018-present Facebook. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * @format + */ + +export {default as styled, keyframes} from 'react-emotion'; +export * from './ui/index'; +export {getStringFromErrorLike, textContent} from './utils/index'; +export {default as GK} from './fb-stubs/GK'; +export {default as createPaste} from './fb-stubs/createPaste'; +export {graphQLQuery} from './fb-stubs/user'; +export { + FlipperBasePlugin, + FlipperPlugin, + FlipperDevicePlugin, + callClient, +} from './plugin'; +export {PluginClient, Props} from './plugin'; +export {default as Client} from './Client'; +export {MetricType} from './utils/exportMetrics'; +export {clipboard} from 'electron'; +export {default as constants} from './fb-stubs/constants'; +export {connect} from 'react-redux'; +export {selectPlugin} from './reducers/connections'; +export {writeBufferToFile, bufferToBlob} from './utils/screenshot'; +export {getPluginKey, getPersistedState} from './utils/pluginUtils'; +export {Store, MiddlewareAPI} from './reducers/index'; +export {default as BaseDevice} from './devices/BaseDevice'; +export { + default as SidebarExtensions, +} from './fb-stubs/LayoutInspectorSidebarExtensions'; +export { + DeviceLogListener, + DeviceLogEntry, + LogLevel, +} from './devices/BaseDevice'; +export {shouldParseAndroidLog} from './utils/crashReporterUtility'; +export {default as isProduction} from './utils/isProduction'; +export {createTablePlugin} from './createTablePlugin'; +export {default as DetailSidebar} from './chrome/DetailSidebar'; +export {default as Device} from './devices/BaseDevice'; +export {default as AndroidDevice} from './devices/AndroidDevice'; +export {default as ArchivedDevice} from './devices/ArchivedDevice'; +export {default as IOSDevice} from './devices/IOSDevice'; +export {OS} from './devices/BaseDevice'; +export {default as Button} from './ui/components/Button'; +export {default as ToggleButton} from './ui/components/ToggleSwitch'; +export { + default as ButtonNavigationGroup, +} from './ui/components/ButtonNavigationGroup'; +export {default as ButtonGroup} from './ui/components/ButtonGroup'; +export {default as ButtonGroupChain} from './ui/components/ButtonGroupChain'; +export {colors, darkColors, brandColors} from './ui/components/colors'; +export {default as Glyph} from './ui/components/Glyph'; +export {default as LoadingIndicator} from './ui/components/LoadingIndicator'; +export {default as Popover} from './ui/components/Popover'; +export { + TableColumns, + TableRows, + TableRows_immutable, + TableBodyColumn, + TableBodyRow, + TableHighlightedRows, + TableRowSortOrder, + TableColumnOrder, + TableColumnOrderVal, + TableColumnSizes, +} from './ui/components/table/types'; +export {default as ManagedTable} from './ui/components/table/ManagedTable'; +export {ManagedTableProps} from './ui/components/table/ManagedTable'; +export { + default as ManagedTable_immutable, + ManagedTableProps_immutable, +} from './ui/components/table/ManagedTable_immutable'; +export {Value, renderValue} from './ui/components/table/TypeBasedValueRenderer'; +export { + DataValueExtractor, + DataInspectorExpanded, +} from './ui/components/data-inspector/DataInspector'; +export { + default as DataInspector, +} from './ui/components/data-inspector/DataInspector'; +export { + default as ManagedDataInspector, +} from './ui/components/data-inspector/ManagedDataInspector'; +export { + default as DataDescription, +} from './ui/components/data-inspector/DataDescription'; +export {default as Tabs} from './ui/components/Tabs'; +export {default as Tab} from './ui/components/Tab'; +export {default as Input} from './ui/components/Input'; +export {default as Textarea} from './ui/components/Textarea'; +export {default as Select} from './ui/components/Select'; +export {default as Checkbox} from './ui/components/Checkbox'; +export {default as CodeBlock} from './ui/components/CodeBlock'; +export {default as ErrorBlock} from './ui/components/ErrorBlock'; +export {ErrorBlockContainer} from './ui/components/ErrorBlock'; +export {default as ErrorBoundary} from './ui/components/ErrorBoundary'; +export {OrderableOrder} from './ui/components/Orderable'; +export {default as Interactive} from './ui/components/Interactive'; +export {default as Orderable} from './ui/components/Orderable'; +export {default as VirtualList} from './ui/components/VirtualList'; +export {Component, PureComponent} from 'react'; +export { + default as ContextMenuProvider, +} from './ui/components/ContextMenuProvider'; +export {default as ContextMenu} from './ui/components/ContextMenu'; +export {FileListFile, FileListFiles} from './ui/components/FileList'; +export {default as FileList} from './ui/components/FileList'; +export {default as File} from './ui/components/File'; +export { + DesktopDropdownItem, + DesktopDropdownSelectedItem, + DesktopDropdown, +} from './ui/components/desktop-toolbar'; +export {default as View} from './ui/components/View'; +export {default as ViewWithSize} from './ui/components/ViewWithSize'; +export {default as Block} from './ui/components/Block'; +export {default as FocusableBox} from './ui/components/FocusableBox'; +export {default as Sidebar} from './ui/components/Sidebar'; +export {default as SidebarLabel} from './ui/components/SidebarLabel'; +export {default as Box} from './ui/components/Box'; +export {default as FlexBox} from './ui/components/FlexBox'; +export {default as FlexRow} from './ui/components/FlexRow'; +export {default as FlexColumn} from './ui/components/FlexColumn'; +export {default as FlexCenter} from './ui/components/FlexCenter'; +export {default as Toolbar, Spacer} from './ui/components/Toolbar'; +export {default as Panel} from './ui/components/Panel'; +export {default as Text} from './ui/components/Text'; +export {default as TextParagraph} from './ui/components/TextParagraph'; +export {default as Link} from './ui/components/Link'; +export {default as PathBreadcrumbs} from './ui/components/PathBreadcrumbs'; +export {default as ModalOverlay} from './ui/components/ModalOverlay'; +export {default as Tooltip} from './ui/components/Tooltip'; +export {default as TooltipProvider} from './ui/components/TooltipProvider'; +export {default as ResizeSensor} from './ui/components/ResizeSensor'; +export {default as StatusIndicator} from './ui/components/StatusIndicator'; +export {default as HorizontalRule} from './ui/components/HorizontalRule'; +export {default as VerticalRule} from './ui/components/VerticalRule'; +export {default as Label} from './ui/components/Label'; +export {default as Heading} from './ui/components/Heading'; +export {Filter} from './ui/components/filter/types'; +export {default as MarkerTimeline} from './ui/components/MarkerTimeline'; +export {default as StackTrace} from './ui/components/StackTrace'; +export { + SearchBox, + SearchInput, + SearchIcon, + SearchableProps, + default as Searchable, +} from './ui/components/searchable/Searchable'; +export { + default as SearchableTable, +} from './ui/components/searchable/SearchableTable'; +export { + default as SearchableTable_immutable, +} from './ui/components/searchable/SearchableTable_immutable'; +export { + ElementID, + ElementData, + ElementAttribute, + Element, + ElementSearchResultSet, +} from './ui/components/elements-inspector/ElementsInspector'; +export {Elements} from './ui/components/elements-inspector/elements'; +export { + ContextMenuExtension, +} from './ui/components/elements-inspector/elements'; +export { + default as ElementsInspector, +} from './ui/components/elements-inspector/ElementsInspector'; +export {InspectorSidebar} from './ui/components/elements-inspector/sidebar'; +export {Console} from './ui/components/console'; +export {default as Sheet} from './ui/components/Sheet'; diff --git a/src/plugin.tsx b/src/plugin.tsx index 8d1278b4e..68805d8df 100644 --- a/src/plugin.tsx +++ b/src/plugin.tsx @@ -5,8 +5,8 @@ * @format */ -import {KeyboardActions} from './MenuBar.js'; -import {App} from './App.js'; +import {KeyboardActions} from './MenuBar'; +import {App} from './App'; import {Logger} from './fb-interfaces/Logger.js'; import Client from './Client'; import {Store, MiddlewareAPI} from './reducers/index'; diff --git a/src/plugins/layout/Inspector.js b/src/plugins/layout/Inspector.js index 9a51ede73..7947c2d86 100644 --- a/src/plugins/layout/Inspector.js +++ b/src/plugins/layout/Inspector.js @@ -73,7 +73,6 @@ export default class Inspector extends Component { if (!this.props.ax) { return null; } - // $FlowFixMe: Object.values returns Array const elements: Array = Object.values( this.props.persistedState.AXelements, ); diff --git a/src/plugins/sections/EventsTable.js b/src/plugins/sections/EventsTable.js index 065bb1ae8..fd72e9e34 100644 --- a/src/plugins/sections/EventsTable.js +++ b/src/plugins/sections/EventsTable.js @@ -161,7 +161,6 @@ export default class extends Component { ) { const node = document.querySelector(`[data-id="${focusedGenerationId}"]`); if (node) { - // $FlowFixMe scrollIntoViewIfNeeded exists node.scrollIntoViewIfNeeded(); } } diff --git a/src/plugins/sections/index.js b/src/plugins/sections/index.js index 97bb78c4d..c975ff95c 100644 --- a/src/plugins/sections/index.js +++ b/src/plugins/sections/index.js @@ -272,7 +272,6 @@ export default class extends FlipperPlugin { : https://github.com/facebook/flow/issues/2221 generations={Object.values(generations)} focusedGenerationId={focusedGenerationId} onClick={this.onTreeGenerationFocused} diff --git a/src/ui/components/Button.tsx b/src/ui/components/Button.tsx index cdeec7033..8a5bc7c33 100644 --- a/src/ui/components/Button.tsx +++ b/src/ui/components/Button.tsx @@ -239,7 +239,7 @@ type OwnProps = { * Whether the button should have additional padding left and right. */ padded?: boolean; -}; +} & React.HTMLProps; type State = { active: boolean; diff --git a/src/ui/components/ContextMenu.tsx b/src/ui/components/ContextMenu.tsx index 5bce7db1e..47d2c459b 100644 --- a/src/ui/components/ContextMenu.tsx +++ b/src/ui/components/ContextMenu.tsx @@ -12,7 +12,7 @@ import {MenuItemConstructorOptions} from 'electron'; export type MenuTemplate = Array; -type Props = { +type Props = { /** List of items in the context menu. Used for static menus. */ items?: MenuTemplate; /** Function to generate the menu. Called right before the menu is showed. Used for dynamic menus. */ @@ -22,7 +22,7 @@ type Props = { /** The component that is used to wrap the children. Defaults to `FlexColumn`. */ component: React.ComponentType | string; onMouseDown?: (e: React.MouseEvent) => any; -}; +} & C; /** * Native context menu that is shown on secondary click. @@ -31,7 +31,7 @@ type Props = { * * Separators can be added by `{type: 'separator'}` */ -export default class ContextMenu extends React.Component { +export default class ContextMenu extends React.Component> { static defaultProps = { component: FlexColumn, }; diff --git a/src/ui/components/data-inspector/DataDescription.tsx b/src/ui/components/data-inspector/DataDescription.tsx index 5802bab79..ed1c7f1b1 100644 --- a/src/ui/components/data-inspector/DataDescription.tsx +++ b/src/ui/components/data-inspector/DataDescription.tsx @@ -7,7 +7,7 @@ import Link from '../Link'; import {DataInspectorSetValue} from './DataInspector'; import {PureComponent} from 'react'; -import styled from '../../styled/index.js'; +import styled from 'react-emotion'; import {SketchPicker} from 'react-color'; import {Component, Fragment} from 'react'; import Popover from '../Popover'; diff --git a/src/ui/index.js b/src/ui/index.js deleted file mode 100644 index 5ab7fa4be..000000000 --- a/src/ui/index.js +++ /dev/null @@ -1,185 +0,0 @@ -/** - * Copyright 2018-present Facebook. - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * @format - */ - -export {default as styled} from 'react-emotion'; -export {default as Button} from './components/Button.tsx'; -export {default as ToggleButton} from './components/ToggleSwitch.tsx'; -export { - default as ButtonNavigationGroup, -} from './components/ButtonNavigationGroup.tsx'; -export {default as ButtonGroup} from './components/ButtonGroup.tsx'; -export {default as ButtonGroupChain} from './components/ButtonGroupChain.tsx'; - -// -export {colors, darkColors, brandColors} from './components/colors.tsx'; - -// -export {default as Glyph} from './components/Glyph.tsx'; - -// -export {default as LoadingIndicator} from './components/LoadingIndicator.tsx'; - -// -export {default as Popover} from './components/Popover.tsx'; - -// tables -export type { - TableColumns, - TableRows, - TableRows_immutable, - TableBodyColumn, - TableBodyRow, - TableHighlightedRows, - TableRowSortOrder, - TableColumnOrder, - TableColumnOrderVal, - TableColumnSizes, -} from './components/table/types.tsx'; -export {default as ManagedTable} from './components/table/ManagedTable.tsx'; -export type {ManagedTableProps} from './components/table/ManagedTable.tsx'; -export { - default as ManagedTable_immutable, -} from './components/table/ManagedTable_immutable.tsx'; -export type { - ManagedTableProps_immutable, -} from './components/table/ManagedTable_immutable.tsx'; - -export type {Value} from './components/table/TypeBasedValueRenderer.tsx'; -export {renderValue} from './components/table/TypeBasedValueRenderer.tsx'; - -// -export type { - DataValueExtractor, - DataInspectorExpanded, -} from './components/data-inspector/DataInspector.tsx'; -export { - default as DataInspector, -} from './components/data-inspector/DataInspector.tsx'; -export { - default as ManagedDataInspector, -} from './components/data-inspector/ManagedDataInspector.tsx'; -export { - default as DataDescription, -} from './components/data-inspector/DataDescription.tsx'; - -// tabs -export {default as Tabs} from './components/Tabs.tsx'; -export {default as Tab} from './components/Tab.tsx'; - -// inputs -export {default as Input} from './components/Input.tsx'; -export {default as Textarea} from './components/Textarea.tsx'; -export {default as Select} from './components/Select.tsx'; -export {default as Checkbox} from './components/Checkbox.tsx'; - -// code -export {default as CodeBlock} from './components/CodeBlock.tsx'; - -// error -export {default as ErrorBlock} from './components/ErrorBlock.tsx'; -export {ErrorBlockContainer} from './components/ErrorBlock.tsx'; -export {default as ErrorBoundary} from './components/ErrorBoundary.tsx'; - -// interactive components -export type {OrderableOrder} from './components/Orderable.tsx'; -export {default as Interactive} from './components/Interactive.tsx'; -export {default as Orderable} from './components/Orderable.tsx'; -export {default as VirtualList} from './components/VirtualList.tsx'; - -// base components -export {Component, PureComponent} from 'react'; - -// context menus and dropdowns -export { - default as ContextMenuProvider, -} from './components/ContextMenuProvider.tsx'; -export {default as ContextMenu} from './components/ContextMenu.tsx'; - -// file -export type {FileListFile, FileListFiles} from './components/FileList.tsx'; -export {default as FileList} from './components/FileList.tsx'; -export {default as File} from './components/File.tsx'; - -// context menu items -export { - DesktopDropdownItem, - DesktopDropdownSelectedItem, - DesktopDropdown, -} from './components/desktop-toolbar.tsx'; - -// utility elements -export {default as View} from './components/View.tsx'; -export {default as ViewWithSize} from './components/ViewWithSize.tsx'; -export {default as Block} from './components/Block.tsx'; -export {default as FocusableBox} from './components/FocusableBox.tsx'; -export {default as Sidebar} from './components/Sidebar.tsx'; -export {default as SidebarLabel} from './components/SidebarLabel.tsx'; -export {default as Box} from './components/Box.tsx'; -export {default as FlexBox} from './components/FlexBox.tsx'; -export {default as FlexRow} from './components/FlexRow.tsx'; -export {default as FlexColumn} from './components/FlexColumn.tsx'; -export {default as FlexCenter} from './components/FlexCenter.tsx'; -export {default as Toolbar, Spacer} from './components/Toolbar.tsx'; -export {default as Panel} from './components/Panel.tsx'; -export {default as Text} from './components/Text.tsx'; -export {default as TextParagraph} from './components/TextParagraph.tsx'; -export {default as Link} from './components/Link.tsx'; -export {default as PathBreadcrumbs} from './components/PathBreadcrumbs.tsx'; -export {default as ModalOverlay} from './components/ModalOverlay.tsx'; -export {default as Tooltip} from './components/Tooltip.tsx'; -export {default as TooltipProvider} from './components/TooltipProvider.tsx'; -export {default as ResizeSensor} from './components/ResizeSensor.tsx'; -export {default as StatusIndicator} from './components/StatusIndicator.tsx'; - -// typography -export {default as HorizontalRule} from './components/HorizontalRule.tsx'; -export {default as VerticalRule} from './components/VerticalRule.tsx'; -export {default as Label} from './components/Label.tsx'; -export {default as Heading} from './components/Heading.tsx'; - -// filters -export type {Filter} from './components/filter/types.tsx'; - -export {default as MarkerTimeline} from './components/MarkerTimeline.tsx'; - -export {default as StackTrace} from './components/StackTrace.tsx'; - -// -export { - SearchBox, - SearchInput, - SearchIcon, - default as Searchable, -} from './components/searchable/Searchable.tsx'; -export { - default as SearchableTable, -} from './components/searchable/SearchableTable.tsx'; -export { - default as SearchableTable_immutable, -} from './components/searchable/SearchableTable_immutable.tsx'; -export type {SearchableProps} from './components/searchable/Searchable.tsx'; - -// -export type { - ElementID, - ElementData, - ElementAttribute, - Element, - ElementSearchResultSet, -} from './components/elements-inspector/ElementsInspector.tsx'; -export {Elements} from './components/elements-inspector/elements.tsx'; -export type { - ContextMenuExtension, -} from './components/elements-inspector/elements.tsx'; -export { - default as ElementsInspector, -} from './components/elements-inspector/ElementsInspector.tsx'; -export {InspectorSidebar} from './components/elements-inspector/sidebar.tsx'; - -export {Console} from './components/console.tsx'; - -export {default as Sheet} from './components/Sheet.tsx'; diff --git a/src/ui/index.tsx b/src/ui/index.tsx new file mode 100644 index 000000000..6a4812050 --- /dev/null +++ b/src/ui/index.tsx @@ -0,0 +1,174 @@ +/** + * Copyright 2018-present Facebook. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * @format + */ + +export {default as styled} from 'react-emotion'; +export {default as Button} from './components/Button'; +export {default as ToggleButton} from './components/ToggleSwitch'; +export { + default as ButtonNavigationGroup, +} from './components/ButtonNavigationGroup'; +export {default as ButtonGroup} from './components/ButtonGroup'; +export {default as ButtonGroupChain} from './components/ButtonGroupChain'; + +export {colors, darkColors, brandColors} from './components/colors'; + +export {default as Glyph} from './components/Glyph'; + +export {default as LoadingIndicator} from './components/LoadingIndicator'; + +export {default as Popover} from './components/Popover'; + +// tables +export { + TableColumns, + TableRows, + TableRows_immutable, + TableBodyColumn, + TableBodyRow, + TableHighlightedRows, + TableRowSortOrder, + TableColumnOrder, + TableColumnOrderVal, + TableColumnSizes, +} from './components/table/types'; +export {default as ManagedTable} from './components/table/ManagedTable'; +export {ManagedTableProps} from './components/table/ManagedTable'; +export { + default as ManagedTable_immutable, +} from './components/table/ManagedTable_immutable'; +export { + ManagedTableProps_immutable, +} from './components/table/ManagedTable_immutable'; + +export {Value} from './components/table/TypeBasedValueRenderer'; +export {renderValue} from './components/table/TypeBasedValueRenderer'; + +export { + DataValueExtractor, + DataInspectorExpanded, +} from './components/data-inspector/DataInspector'; +export { + default as DataInspector, +} from './components/data-inspector/DataInspector'; +export { + default as ManagedDataInspector, +} from './components/data-inspector/ManagedDataInspector'; +export { + default as DataDescription, +} from './components/data-inspector/DataDescription'; + +// tabs +export {default as Tabs} from './components/Tabs'; +export {default as Tab} from './components/Tab'; + +// inputs +export {default as Input} from './components/Input'; +export {default as Textarea} from './components/Textarea'; +export {default as Select} from './components/Select'; +export {default as Checkbox} from './components/Checkbox'; + +// code +export {default as CodeBlock} from './components/CodeBlock'; + +// error +export {default as ErrorBlock} from './components/ErrorBlock'; +export {ErrorBlockContainer} from './components/ErrorBlock'; +export {default as ErrorBoundary} from './components/ErrorBoundary'; + +// interactive components +export {OrderableOrder} from './components/Orderable'; +export {default as Interactive} from './components/Interactive'; +export {default as Orderable} from './components/Orderable'; +export {default as VirtualList} from './components/VirtualList'; + +// base components +export {Component, PureComponent} from 'react'; + +// context menus and dropdowns +export {default as ContextMenuProvider} from './components/ContextMenuProvider'; +export {default as ContextMenu} from './components/ContextMenu'; + +// file +export {FileListFile, FileListFiles} from './components/FileList'; +export {default as FileList} from './components/FileList'; +export {default as File} from './components/File'; + +// context menu items +export { + DesktopDropdownItem, + DesktopDropdownSelectedItem, + DesktopDropdown, +} from './components/desktop-toolbar'; + +// utility elements +export {default as View} from './components/View'; +export {default as ViewWithSize} from './components/ViewWithSize'; +export {default as Block} from './components/Block'; +export {default as FocusableBox} from './components/FocusableBox'; +export {default as Sidebar} from './components/Sidebar'; +export {default as SidebarLabel} from './components/SidebarLabel'; +export {default as Box} from './components/Box'; +export {default as FlexBox} from './components/FlexBox'; +export {default as FlexRow} from './components/FlexRow'; +export {default as FlexColumn} from './components/FlexColumn'; +export {default as FlexCenter} from './components/FlexCenter'; +export {default as Toolbar, Spacer} from './components/Toolbar'; +export {default as Panel} from './components/Panel'; +export {default as Text} from './components/Text'; +export {default as TextParagraph} from './components/TextParagraph'; +export {default as Link} from './components/Link'; +export {default as PathBreadcrumbs} from './components/PathBreadcrumbs'; +export {default as ModalOverlay} from './components/ModalOverlay'; +export {default as Tooltip} from './components/Tooltip'; +export {default as TooltipProvider} from './components/TooltipProvider'; +export {default as ResizeSensor} from './components/ResizeSensor'; +export {default as StatusIndicator} from './components/StatusIndicator'; + +// typography +export {default as HorizontalRule} from './components/HorizontalRule'; +export {default as VerticalRule} from './components/VerticalRule'; +export {default as Label} from './components/Label'; +export {default as Heading} from './components/Heading'; + +// filters +export {Filter} from './components/filter/types'; + +export {default as MarkerTimeline} from './components/MarkerTimeline'; + +export {default as StackTrace} from './components/StackTrace'; + +export { + SearchBox, + SearchInput, + SearchIcon, + default as Searchable, +} from './components/searchable/Searchable'; +export { + default as SearchableTable, +} from './components/searchable/SearchableTable'; +export { + default as SearchableTable_immutable, +} from './components/searchable/SearchableTable_immutable'; +export {SearchableProps} from './components/searchable/Searchable'; + +export { + ElementID, + ElementData, + ElementAttribute, + Element, + ElementSearchResultSet, +} from './components/elements-inspector/ElementsInspector'; +export {Elements} from './components/elements-inspector/elements'; +export {ContextMenuExtension} from './components/elements-inspector/elements'; +export { + default as ElementsInspector, +} from './components/elements-inspector/ElementsInspector'; +export {InspectorSidebar} from './components/elements-inspector/sidebar'; + +export {Console} from './components/console'; + +export {default as Sheet} from './components/Sheet'; diff --git a/src/ui/styled/index.js b/src/ui/styled/index.js deleted file mode 100644 index 58a1bafc7..000000000 --- a/src/ui/styled/index.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright 2018-present Facebook. - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * @format - */ - -import styled from 'react-emotion'; -export default styled; diff --git a/src/utils/__tests__/pluginUtils.node.js b/src/utils/__tests__/pluginUtils.node.js index c7cd256b9..683728f6c 100644 --- a/src/utils/__tests__/pluginUtils.node.js +++ b/src/utils/__tests__/pluginUtils.node.js @@ -12,7 +12,7 @@ import { import type {State as PluginsState} from '../../reducers/plugins.tsx'; import type {State as PluginStatesState} from '../../reducers/pluginStates.tsx'; import type {PluginDefinition} from '../../dispatcher/plugins.tsx'; -import {FlipperBasePlugin} from '../../..'; +import {FlipperBasePlugin} from 'flipper'; import type {MiddlewareAPI} from '../../reducers/index.tsx'; class MockFlipperPluginWithDefaultPersistedState extends FlipperBasePlugin< *, diff --git a/yarn.lock b/yarn.lock index 1529b2eb4..71014ca9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1185,6 +1185,13 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" +"@types/react-transition-group@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.2.tgz#8c851c4598a23a3a34173069fb4c5c9e41c02e3f" + integrity sha512-YfoaTNqBwbIqpiJ5NNfxfgg5kyFP1Hqf/jqBtSWNv0E+EkkxmN+3VD6U2fu86tlQvdAc1o0SdWhnWFwcRMTn9A== + dependencies: + "@types/react" "*" + "@types/react-virtualized-auto-sizer@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.0.tgz#fc32f30a8dab527b5816f3a757e1e1d040c8f272"