Upgrade to Flow 0.71

This commit is contained in:
Tom Moor 2018-05-05 16:16:08 -07:00
parent 4a4f9f7107
commit 518015f55b
256 changed files with 23205 additions and 3658 deletions

View File

@ -35,7 +35,6 @@ module.file_ext=.json
esproposal.decorators=ignore
esproposal.class_static_fields=enable
esproposal.class_instance_fields=enable
unsafe.enable_getters_and_setters=true
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue

View File

@ -1,18 +1,17 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import Flex from 'shared/components/Flex';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';
type Props = {
children: React.Element<*>,
children: React.Node,
type?: 'info' | 'success' | 'warning' | 'danger' | 'offline',
};
@observer
class Alert extends React.Component {
props: Props;
class Alert extends React.Component<Props> {
defaultProps = {
type: 'info',
};

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { Provider } from 'mobx-react';
import stores from 'stores';
import ApiKeysStore from 'stores/ApiKeysStore';
@ -10,7 +10,7 @@ import IntegrationsStore from 'stores/IntegrationsStore';
import CacheStore from 'stores/CacheStore';
type Props = {
children?: React.Element<any>,
children?: React.Node,
};
let authenticatedStores;

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { observable } from 'mobx';
import { observer } from 'mobx-react';
@ -7,7 +7,7 @@ import { color } from 'shared/styles/constants';
import placeholder from './placeholder.png';
@observer
class Avatar extends Component {
class Avatar extends React.Component<*> {
@observable error: boolean;
handleError = () => {

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';
import { darken, lighten } from 'polished';
@ -88,9 +88,9 @@ const Inner = styled.span`
export type Props = {
type?: string,
value?: string,
icon?: React$Element<any>,
icon?: React.Node,
className?: string,
children?: React$Element<any>,
children?: React.Node,
};
export default function Button({

View File

@ -1,10 +1,10 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import breakpoint from 'styled-components-breakpoint';
type Props = {
children?: React.Element<any>,
children?: React.Node,
};
const Container = styled.div`

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import distanceInWordsToNow from 'date-fns/distance_in_words_to_now';
import styled from 'styled-components';
import Flex from 'shared/components/Flex';

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observable, computed, action } from 'mobx';
import { observer } from 'mobx-react';
import styled from 'styled-components';
@ -26,9 +26,7 @@ type Props = {
};
@observer
class ColorPicker extends React.Component {
props: Props;
class ColorPicker extends React.Component<Props> {
@observable selectedColor: string = colors[0];
@observable customColorValue: string = '';
@observable customColorSelected: boolean;
@ -69,14 +67,14 @@ class ColorPicker extends React.Component {
};
@action
focusOnCustomColor = (event: SyntheticEvent) => {
focusOnCustomColor = (event: SyntheticEvent<*>) => {
this.selectedColor = '';
this.customColorSelected = true;
this.fireCallback();
};
@action
setCustomColor = (event: SyntheticEvent) => {
setCustomColor = (event: SyntheticEvent<*>) => {
let target = event.target;
if (target instanceof HTMLInputElement) {
const color = target.value;

View File

@ -1,22 +1,20 @@
// @flow
import React, { PureComponent } from 'react';
import * as React from 'react';
import copy from 'copy-to-clipboard';
type Props = {
text: string,
children?: React.Element<any>,
children?: React.Node,
onClick?: () => void,
onCopy: () => void,
};
class CopyToClipboard extends PureComponent {
props: Props;
onClick = (ev: SyntheticEvent) => {
class CopyToClipboard extends React.PureComponent<Props> {
onClick = (ev: SyntheticEvent<*>) => {
const { text, onCopy, children } = this.props;
const elem = React.Children.only(children);
copy(text, {
debug: __DEV__,
debug: !!__DEV__,
});
if (onCopy) onCopy();

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import Flex from 'shared/components/Flex';

View File

@ -1,16 +1,16 @@
// @flow
import React from 'react';
import * as React from 'react';
import Document from 'models/Document';
import DocumentPreview from 'components/DocumentPreview';
import ArrowKeyNavigation from 'boundless-arrow-key-navigation';
class DocumentList extends React.Component {
props: {
documents: Document[],
showCollection?: boolean,
limit?: number,
};
type Props = {
documents: Document[],
showCollection?: boolean,
limit?: number,
};
class DocumentList extends React.Component<Props> {
render() {
const { limit, showCollection } = this.props;
const documents = limit

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import { Link } from 'react-router-dom';
import Document from 'models/Document';
@ -89,16 +89,14 @@ const Actions = styled(Flex)`
`;
@observer
class DocumentPreview extends Component {
props: Props;
star = (ev: SyntheticEvent) => {
class DocumentPreview extends React.Component<Props> {
star = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
ev.stopPropagation();
this.props.document.star();
};
unstar = (ev: SyntheticEvent) => {
unstar = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
ev.stopPropagation();
this.props.document.unstar();

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import distanceInWordsToNow from 'date-fns/distance_in_words_to_now';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';
@ -17,13 +17,13 @@ const Modified = styled.span`
font-weight: ${props => (props.highlight ? '600' : '400')};
`;
class PublishingInfo extends Component {
props: {
collection?: Collection,
document: Document,
views?: number,
};
type Props = {
collection?: Collection,
document: Document,
views?: number,
};
class PublishingInfo extends React.Component<Props> {
render() {
const { collection, document } = this.props;
const {

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer } from 'mobx-react';
import Popover from 'components/Popover';
@ -27,11 +27,10 @@ type Props = {
};
@observer
class DocumentViews extends Component {
class DocumentViews extends React.Component<Props> {
@observable opened: boolean = false;
anchor: HTMLElement;
anchor: ?HTMLElement;
store: DocumentViewersStore;
props: Props;
constructor(props: Props) {
super(props);
@ -46,7 +45,7 @@ class DocumentViews extends Component {
this.opened = false;
};
setRef = (ref: HTMLElement) => {
setRef = (ref: ?HTMLElement) => {
this.anchor = ref;
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import Flex from 'shared/components/Flex';
import styled from 'styled-components';
import map from 'lodash/map';
@ -26,9 +26,7 @@ const UserName = styled.span`
padding-left: 8px;
`;
class DocumentViewers extends Component {
props: Props;
class DocumentViewers extends React.Component<Props> {
componentDidMount() {
this.props.onMount();
}

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer, inject } from 'mobx-react';
import { injectGlobal } from 'styled-components';
@ -12,7 +12,7 @@ import DocumentsStore from 'stores/DocumentsStore';
import LoadingIndicator from 'components/LoadingIndicator';
type Props = {
children?: React$Element<any>,
children?: React.Node,
collectionId: string,
documentId?: string,
activeClassName?: string,
@ -35,9 +35,8 @@ injectGlobal`
`;
@observer
class DropToImport extends Component {
class DropToImport extends React.Component<Props> {
@observable isImporting: boolean = false;
props: Props;
onDropAccepted = async (files = []) => {
this.isImporting = true;

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import invariant from 'invariant';
import { observable } from 'mobx';
import { observer } from 'mobx-react';
@ -10,22 +10,21 @@ import { color } from 'shared/styles/constants';
import { fadeAndScaleIn } from 'shared/styles/animations';
type Props = {
label: React.Element<*>,
label: React.Node,
onOpen?: () => void,
onClose?: () => void,
children?: React.Element<*>,
children?: React.Node,
className?: string,
style?: Object,
};
@observer
class DropdownMenu extends Component {
props: Props;
class DropdownMenu extends React.Component<Props> {
@observable top: number;
@observable right: number;
handleOpen = (openPortal: SyntheticEvent => *) => {
return (ev: SyntheticMouseEvent) => {
handleOpen = (openPortal: (SyntheticEvent<*>) => *) => {
return (ev: SyntheticMouseEvent<*>) => {
ev.preventDefault();
const currentTarget = ev.currentTarget;
invariant(document.body, 'why you not here');

View File

@ -1,11 +1,11 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';
type Props = {
onClick?: SyntheticEvent => void,
children?: React.Element<any>,
onClick?: (SyntheticEvent<*>) => *,
children?: React.Node,
};
const DropdownMenuItem = ({ onClick, children, ...rest }: Props) => {

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';

View File

@ -1,17 +1,16 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import { observable } from 'mobx';
import CenteredContent from 'components/CenteredContent';
import PageTitle from 'components/PageTitle';
type Props = {
children?: ?React.Element<any>,
children?: ?React.Node,
};
@observer
class ErrorBoundary extends Component {
props: Props;
class ErrorBoundary extends React.Component<Props> {
@observable error: boolean = false;
componentDidCatch(error: Error, info: Object) {

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import replace from 'string-replace-to-array';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import Flex from 'shared/components/Flex';
import { size, color } from 'shared/styles/constants';

View File

@ -1,13 +1,13 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import Flex from 'shared/components/Flex';
import styled from 'styled-components';
import { size } from 'shared/styles/constants';
type Props = {
label: React.Element<*> | string,
children: React.Element<*>,
label: React.Node | string,
children: React.Node,
};
const Labeled = ({ label, children, ...props }: Props) => (

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { Switch, Route, withRouter } from 'react-router-dom';
import type { Location } from 'react-router-dom';
import { Helmet } from 'react-helmet';
@ -27,17 +27,16 @@ type Props = {
history: Object,
location: Location,
documents: DocumentsStore,
children?: ?React.Element<any>,
actions?: ?React.Element<any>,
title?: ?React.Element<any>,
children?: ?React.Node,
actions?: ?React.Node,
title?: ?React.Node,
auth: AuthStore,
ui: UiStore,
notifications?: React.Element<any>,
notifications?: React.Node,
};
@observer
class Layout extends React.Component {
props: Props;
class Layout extends React.Component<Props> {
scrollable: ?HTMLDivElement;
@keydown(['/', 't'])

View File

@ -1,9 +1,9 @@
// @flow
import React from 'react';
import * as React from 'react';
import { inject, observer } from 'mobx-react';
@observer
class LoadingIndicator extends React.Component {
class LoadingIndicator extends React.Component<*> {
componentDidMount() {
this.props.ui.enableProgressBar();
}

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled, { keyframes } from 'styled-components';
const LoadingIndicatorBar = () => {

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import _ from 'lodash';
import styled from 'styled-components';
import Mask from './components/Mask';

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import Mask from './components/Mask';
import Fade from 'components/Fade';
import Flex from 'shared/components/Flex';

View File

@ -1,12 +1,12 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { pulsate } from 'shared/styles/animations';
import { color } from 'shared/styles/constants';
import { randomInteger } from 'shared/random';
import Flex from 'shared/components/Flex';
class Mask extends Component {
class Mask extends React.Component<*> {
width: number;
shouldComponentUpdate() {

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import styled, { injectGlobal } from 'styled-components';
import breakpoint from 'styled-components-breakpoint';
@ -10,10 +10,10 @@ import { fadeAndScaleIn } from 'shared/styles/animations';
import Flex from 'shared/components/Flex';
type Props = {
children?: React$Element<any>,
children?: React.Node,
isOpen: boolean,
title?: string,
onRequestClose: () => void,
onRequestClose: () => *,
};
// eslint-disable-next-line

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import BaseModal from 'components/Modal';
import UiStore from 'stores/UiStore';
@ -9,12 +9,11 @@ import CollectionDelete from 'scenes/CollectionDelete';
import DocumentDelete from 'scenes/DocumentDelete';
import KeyboardShortcuts from 'scenes/KeyboardShortcuts';
type Props = {
ui: UiStore,
};
@observer
class Modals extends Component {
props: {
ui: UiStore,
};
class Modals extends React.Component<Props> {
handleClose = () => {
this.props.ui.clearActiveModal();
};

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { Helmet } from 'react-helmet';
type Props = {

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import BoundlessPopover from 'boundless-popover';
import styled, { keyframes } from 'styled-components';

View File

@ -1,15 +1,15 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { inject } from 'mobx-react';
import { Route } from 'react-router-dom';
import UiStore from 'stores/UiStore';
class RouteSidebarHidden extends Component {
props: {
ui: UiStore,
component: any,
};
type Props = {
ui: UiStore,
component: *,
};
class RouteSidebarHidden extends React.Component<Props> {
componentDidMount() {
this.props.ui.enableEditMode();
}

View File

@ -1,9 +1,9 @@
// @flow
// based on: https://reacttraining.com/react-router/web/guides/scroll-restoration
import { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
class ScrollToTop extends Component {
class ScrollToTop extends React.Component<*> {
componentDidUpdate(prevProps) {
if (this.props.location !== prevProps.location) {
window.scrollTo(0, 0);

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import type { Location } from 'react-router-dom';
import { observer, inject } from 'mobx-react';
@ -26,9 +26,7 @@ type Props = {
};
@observer
class MainSidebar extends Component {
props: Props;
class MainSidebar extends React.Component<Props> {
handleCreateCollection = () => {
this.props.ui.setActiveModal('collection-new');
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observer, inject } from 'mobx-react';
import { ProfileIcon, SettingsIcon, CodeIcon, UserIcon } from 'outline-icons';
@ -17,9 +17,7 @@ type Props = {
};
@observer
class SettingsSidebar extends Component {
props: Props;
class SettingsSidebar extends React.Component<Props> {
returnToDashboard = () => {
this.props.history.push('/');
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import type { Location } from 'react-router-dom';
import styled from 'styled-components';
@ -14,7 +14,7 @@ import DocumentsStore from 'stores/DocumentsStore';
import UiStore from 'stores/UiStore';
type Props = {
children: React.Element<any>,
children: React.Node,
history: Object,
location: Location,
auth: AuthStore,
@ -23,9 +23,7 @@ type Props = {
};
@observer
class Sidebar extends Component {
props: Props;
class Sidebar extends React.Component<Props> {
componentWillReceiveProps = (nextProps: Props) => {
if (this.props.location !== nextProps.location) {
this.props.ui.hideMobileSidebar();

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer, inject } from 'mobx-react';
import type { Location } from 'react-router-dom';
@ -30,9 +30,7 @@ type Props = {
};
@observer
class Collections extends Component {
props: Props;
class Collections extends React.Component<Props> {
render() {
const { history, location, collections, ui, documents } = this.props;
@ -73,7 +71,7 @@ type CollectionLinkProps = {
};
@observer
class CollectionLink extends Component {
class CollectionLink extends React.Component<*> {
props: CollectionLinkProps;
@observable menuOpen = false;
@ -168,7 +166,7 @@ const DocumentLink = observer(
isActiveDocument)
);
const handleMouseEnter = (event: SyntheticEvent) => {
const handleMouseEnter = (event: SyntheticEvent<*>) => {
event.stopPropagation();
event.preventDefault();
prefetchDocument(document.id);

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { color } from 'shared/styles/constants';
import Flex from 'shared/components/Flex';

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable, action } from 'mobx';
import { observer } from 'mobx-react';
import { NavLink } from 'react-router-dom';
@ -47,19 +47,18 @@ const StyledDiv = StyledNavLink.withComponent('div');
type Props = {
to?: string,
onClick?: SyntheticEvent => *,
children?: React$Element<*>,
icon?: React$Element<*>,
onClick?: (SyntheticEvent<*>) => *,
children?: React.Node,
icon?: React.Node,
expand?: boolean,
expandedContent?: React$Element<*>,
expandedContent?: React.Node,
hideExpandToggle?: boolean,
iconColor?: string,
active?: boolean,
};
@observer
class SidebarLink extends Component {
props: Props;
class SidebarLink extends React.Component<Props> {
@observable expanded: boolean = false;
componentDidMount() {
@ -71,7 +70,7 @@ class SidebarLink extends Component {
}
@action
handleClick = (event: SyntheticEvent) => {
handleClick = (event: SyntheticEvent<*>) => {
event.preventDefault();
event.stopPropagation();
this.expanded = !this.expanded;

View File

@ -1,12 +1,12 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { inject, observer } from 'mobx-react';
import styled from 'styled-components';
import { layout } from 'shared/styles/constants';
import Toast from './components/Toast';
@observer
class Toasts extends Component {
class Toasts extends React.Component<*> {
handleClose = index => {
this.props.errors.remove(index);
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { darken } from 'polished';
import { color } from 'shared/styles/constants';
@ -12,9 +12,8 @@ type Props = {
type: 'warning' | 'error' | 'info',
};
class Toast extends Component {
timeout: number;
props: Props;
class Toast extends React.Component<Props> {
timeout: TimeoutID;
static defaultProps = {
closeAfterMs: 3000,

View File

@ -2,10 +2,8 @@
import { TooltipTrigger } from 'pui-react-tooltip';
import { injectGlobal } from 'styled-components';
injectGlobal([
`
injectGlobal`
.tooltip:hover .tooltip-container:not(.tooltip-container-hidden){visibility:visible;opacity:1}.tooltip-container{visibility:hidden;-webkit-transition:opacity ease-out 0.2s;transition:opacity ease-out 0.2s;z-index:10;position:absolute;bottom:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0 0 8px 0;text-align:left}.tooltip-container.tooltip-container-visible{visibility:visible}.tooltip-container.tooltip-hoverable:after{content:"";position:absolute;width:calc(100% + 16px);height:calc(100% + 16px);top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.tooltip-container .tooltip-content{white-space:nowrap;padding:4px 8px;font-size:12px;line-height:16px;font-weight:400;letter-spacing:0;text-transform:none;background-color:#243641;color:#fff;border-radius:2px;border:1px solid #243641;box-shadow:0px 2px 2px 0px rgba(36, 54, 65, .1),0px 0px 2px 0px rgba(36, 54, 65, .1)}.tooltip-container .tooltip-content:before{content:"";z-index:1;position:absolute;bottom:-4px;left:50%;-webkit-transform:translateX(-50%) rotateZ(45deg);transform:translateX(-50%) rotateZ(45deg);background-color:#243641;border-bottom:1px solid #243641;border-right:1px solid #243641;width:8px;height:8px}.tooltip-container .tooltip-content:after{content:"";box-sizing:content-box;z-index:-1;position:absolute;bottom:-4px;left:50%;-webkit-transform:translateX(-50%) rotateZ(45deg);transform:translateX(-50%) rotateZ(45deg);background-color:#243641;box-shadow:0px 2px 2px 0px rgba(36, 54, 65, .1),0px 0px 2px 0px rgba(36, 54, 65, .1);width:8px;height:8px}.tooltip{position:relative;display:inline-block}.tooltip.tooltip-light .tooltip-content{background-color:#fff;color:#243641;border:1px solid #DFE5E8}.tooltip.tooltip-light .tooltip-content:before{background-color:#fff;border-bottom:1px solid #DFE5E8;border-right:1px solid #DFE5E8}.tooltip.tooltip-light .tooltip-content:after{background-color:#fff}.tooltip.tooltip-bottom .tooltip-container{top:100%;bottom:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:8px 0 0 0}.tooltip.tooltip-bottom .tooltip-container .tooltip-content:before{bottom:auto;top:-4px;border-top:1px solid #243641;border-right:none;border-bottom:none;border-left:1px solid #243641}.tooltip.tooltip-bottom .tooltip-container .tooltip-content:after{bottom:auto;top:-4px}.tooltip.tooltip-bottom.tooltip-light .tooltip-content:before{border-top:1px solid #DFE5E8;border-left:1px solid #DFE5E8}.tooltip.tooltip-right .tooltip-container{top:50%;bottom:auto;left:100%;-webkit-transform:translatey(-50%);transform:translatey(-50%);margin:0 0 0 8px}.tooltip.tooltip-right .tooltip-container .tooltip-content:before{bottom:auto;left:-4px;top:50%;-webkit-transform:translatey(-50%) rotateZ(45deg);transform:translatey(-50%) rotateZ(45deg);border-top:none;border-right:none;border-bottom:1px solid #243641;border-left:1px solid #243641}.tooltip.tooltip-right .tooltip-container .tooltip-content:after{bottom:auto;left:-4px;top:50%;-webkit-transform:translatey(-50%) rotateZ(45deg);transform:translatey(-50%) rotateZ(45deg)}.tooltip.tooltip-right.tooltip-light .tooltip-content:before{border-bottom:1px solid #DFE5E8;border-left:1px solid #DFE5E8}.tooltip.tooltip-left .tooltip-container{top:50%;bottom:auto;right:100%;left:auto;-webkit-transform:translatey(-50%);transform:translatey(-50%);margin:0 8px 0 0}.tooltip.tooltip-left .tooltip-container .tooltip-content:before{bottom:auto;right:-4px;left:auto;top:50%;-webkit-transform:translatey(-50%) rotateZ(45deg);transform:translatey(-50%) rotateZ(45deg);border-top:1px solid #243641;border-right:1px solid #243641;border-bottom:none;border-left:none}.tooltip.tooltip-left .tooltip-container .tooltip-content:after{bottom:auto;right:-4px;left:auto;top:50%;-webkit-transform:translatey(-50%) rotateZ(45deg);transform:translatey(-50%) rotateZ(45deg)}.tooltip.tooltip-left.tooltip-light .tooltip-content:before{border-top:1px solid #DFE5E8;border-right:1px solid #DFE5E8}.tooltip-sm.tooltip-container{width:120px}.tooltip-sm.tooltip-container .tooltip-content{white-space:normal}.tooltip-md.tooltip-container{width:240px}.tooltip-md.tooltip-container .tooltip-content{white-space:normal}.tooltip-lg.tooltip-container{width:360px}.tooltip-lg.tooltip-container .tooltip-content{white-space:normal}.tether-element{z-index:99}.overlay-trigger{color:#1B78B3;-webkit-transition:all 300ms ease-out;transition:all 300ms ease-out;-webkit-transition-property:background-color, color, opacity;transition-property:background-color, color, opacity}.overlay-trigger:hover,.overlay-trigger:focus{color:#1f8ace;cursor:pointer;outline:none;text-decoration:none}.overlay-trigger:active,.overlay-trigger.active{color:#176698}
`,
]);
`;
export default TooltipTrigger;

View File

@ -49,83 +49,86 @@ const RedirectDocument = ({ match }: { match: Object }) => (
globalStyles();
render(
<React.Fragment>
<ErrorBoundary>
<Provider {...stores}>
<Router>
<ScrollToTop>
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/auth/slack" component={SlackAuth} />
<Route exact path="/auth/slack/commands" component={SlackAuth} />
<Route exact path="/auth/slack/post" component={SlackAuth} />
<Route exact path="/auth/error" component={ErrorAuth} />
const element = document.getElementById('root');
<Auth>
<Layout>
<Switch>
<Route exact path="/dashboard" component={Dashboard} />
<Route exact path="/starred" component={Starred} />
<Route exact path="/drafts" component={Drafts} />
<Route exact path="/settings" component={Settings} />
<Route exact path="/settings/users" component={Users} />
<Route exact path="/settings/tokens" component={Tokens} />
<Route
exact
path="/settings/integrations/slack"
component={Slack}
/>
<Route
exact
path="/collections/:id"
component={Collection}
/>
<Route
exact
path={`/d/${matchDocumentSlug}`}
component={RedirectDocument}
/>
<Route
exact
path={`/doc/${matchDocumentSlug}`}
component={Document}
/>
<Route
exact
path={`/doc/${matchDocumentSlug}/move`}
component={Document}
/>
<Route exact path="/search" component={Search} />
<Route exact path="/search/:query" component={Search} />
<Route path="/404" component={Error404} />
<RouteSidebarHidden
exact
path={`/doc/${matchDocumentSlug}/edit`}
component={Document}
/>
<RouteSidebarHidden
exact
path="/collections/:id/new"
component={DocumentNew}
/>
<Route component={notFoundSearch} />
</Switch>
</Layout>
</Auth>
</Switch>
</ScrollToTop>
</Router>
</Provider>
</ErrorBoundary>
{DevTools && <DevTools position={{ bottom: 0, right: 0 }} />}
</React.Fragment>,
document.getElementById('root')
);
if (element) {
render(
<React.Fragment>
<ErrorBoundary>
<Provider {...stores}>
<Router>
<ScrollToTop>
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/auth/slack" component={SlackAuth} />
<Route
exact
path="/auth/slack/commands"
component={SlackAuth}
/>
<Route exact path="/auth/slack/post" component={SlackAuth} />
<Route exact path="/auth/error" component={ErrorAuth} />
<Auth>
<Layout>
<Switch>
<Route exact path="/dashboard" component={Dashboard} />
<Route exact path="/starred" component={Starred} />
<Route exact path="/drafts" component={Drafts} />
<Route exact path="/settings" component={Settings} />
<Route exact path="/settings/users" component={Users} />
<Route exact path="/settings/tokens" component={Tokens} />
<Route
exact
path="/settings/integrations/slack"
component={Slack}
/>
<Route
exact
path="/collections/:id"
component={Collection}
/>
<Route
exact
path={`/d/${matchDocumentSlug}`}
component={RedirectDocument}
/>
<Route
exact
path={`/doc/${matchDocumentSlug}`}
component={Document}
/>
<Route
exact
path={`/doc/${matchDocumentSlug}/move`}
component={Document}
/>
<Route exact path="/search" component={Search} />
<Route exact path="/search/:query" component={Search} />
<Route path="/404" component={Error404} />
<RouteSidebarHidden
exact
path={`/doc/${matchDocumentSlug}/edit`}
component={Document}
/>
<RouteSidebarHidden
exact
path="/collections/:id/new"
component={DocumentNew}
/>
<Route component={notFoundSearch} />
</Switch>
</Layout>
</Auth>
</Switch>
</ScrollToTop>
</Router>
</Provider>
</ErrorBoundary>
{DevTools && <DevTools position={{ bottom: 0, right: 0 }} />}
</React.Fragment>,
element
);
}
window.addEventListener('load', async () => {
// installation does not use Google Analytics, or tracking is blocked on client

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import { inject, observer } from 'mobx-react';
import UiStore from 'stores/UiStore';
@ -12,15 +12,15 @@ import {
spectrumUrl,
} from '../../shared/utils/routeHelpers';
@observer
class AccountMenu extends Component {
props: {
label?: React$Element<any>,
history: Object,
ui: UiStore,
auth: AuthStore,
};
type Props = {
label?: React.Node,
history: Object,
ui: UiStore,
auth: AuthStore,
};
@observer
class AccountMenu extends React.Component<Props> {
handleOpenKeyboardShortcuts = () => {
this.props.ui.setActiveModal('keyboard-shortcuts');
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { inject, observer } from 'mobx-react';
import styled from 'styled-components';
import { MoreIcon } from 'outline-icons';
@ -12,9 +12,9 @@ import DocumentsStore from 'stores/DocumentsStore';
import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu';
type Props = {
label?: React$Element<*>,
onOpen?: () => void,
onClose?: () => void,
label?: React.Node,
onOpen?: () => *,
onClose?: () => *,
history: Object,
ui: UiStore,
documents: DocumentsStore,
@ -22,24 +22,23 @@ type Props = {
};
@observer
class CollectionMenu extends Component {
props: Props;
class CollectionMenu extends React.Component<Props> {
file: HTMLInputElement;
onNewDocument = (ev: SyntheticEvent) => {
onNewDocument = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { collection, history } = this.props;
history.push(`${collection.url}/new`);
};
onImportDocument = (ev: SyntheticEvent) => {
onImportDocument = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
// simulate a click on the file upload input element
this.file.click();
};
onFilePicked = async (ev: SyntheticEvent) => {
onFilePicked = async (ev: SyntheticEvent<*>) => {
const files = getDataTransferFiles(ev);
const document = await importFile({
file: files[0],
@ -50,13 +49,13 @@ class CollectionMenu extends Component {
this.props.history.push(document.url);
};
onEdit = (ev: SyntheticEvent) => {
onEdit = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { collection } = this.props;
this.props.ui.setActiveModal('collection-edit', { collection });
};
onDelete = (ev: SyntheticEvent) => {
onDelete = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { collection } = this.props;
this.props.ui.setActiveModal('collection-delete', { collection });

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import { inject, observer } from 'mobx-react';
import { MoreIcon } from 'outline-icons';
@ -9,49 +9,49 @@ import UiStore from 'stores/UiStore';
import { documentMoveUrl } from 'utils/routeHelpers';
import { DropdownMenu, DropdownMenuItem } from 'components/DropdownMenu';
@observer
class DocumentMenu extends Component {
props: {
ui: UiStore,
label?: React$Element<any>,
history: Object,
document: Document,
className: string,
};
type Props = {
ui: UiStore,
label?: React.Node,
history: Object,
document: Document,
className: string,
};
handleNewChild = (ev: SyntheticEvent) => {
@observer
class DocumentMenu extends React.Component<Props> {
handleNewChild = (ev: SyntheticEvent<*>) => {
const { history, document } = this.props;
history.push(
`${document.collection.url}/new?parentDocument=${document.id}`
);
};
handleDelete = (ev: SyntheticEvent) => {
handleDelete = (ev: SyntheticEvent<*>) => {
const { document } = this.props;
this.props.ui.setActiveModal('document-delete', { document });
};
handleMove = (ev: SyntheticEvent) => {
handleMove = (ev: SyntheticEvent<*>) => {
this.props.history.push(documentMoveUrl(this.props.document));
};
handlePin = (ev: SyntheticEvent) => {
handlePin = (ev: SyntheticEvent<*>) => {
this.props.document.pin();
};
handleUnpin = (ev: SyntheticEvent) => {
handleUnpin = (ev: SyntheticEvent<*>) => {
this.props.document.unpin();
};
handleStar = (ev: SyntheticEvent) => {
handleStar = (ev: SyntheticEvent<*>) => {
this.props.document.star();
};
handleUnstar = (ev: SyntheticEvent) => {
handleUnstar = (ev: SyntheticEvent<*>) => {
this.props.document.unstar();
};
handleExport = (ev: SyntheticEvent) => {
handleExport = (ev: SyntheticEvent<*>) => {
this.props.document.download();
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer, inject } from 'mobx-react';
import { withRouter, Link } from 'react-router-dom';
@ -33,8 +33,7 @@ type Props = {
};
@observer
class CollectionScene extends Component {
props: Props;
class CollectionScene extends React.Component<Props> {
@observable collection: ?Collection;
@observable isFetching: boolean = true;
@ -74,7 +73,7 @@ class CollectionScene extends Component {
this.isFetching = false;
};
onNewDocument = (ev: SyntheticEvent) => {
onNewDocument = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
if (this.collection) {

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import { observable } from 'mobx';
import { inject, observer } from 'mobx-react';
@ -18,11 +18,10 @@ type Props = {
};
@observer
class CollectionDelete extends Component {
props: Props;
class CollectionDelete extends React.Component<Props> {
@observable isDeleting: boolean;
handleSubmit = async (ev: SyntheticEvent) => {
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
this.isDeleting = true;
const success = await this.props.collection.delete();

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import { observable } from 'mobx';
import { inject, observer } from 'mobx-react';
@ -17,8 +17,7 @@ type Props = {
};
@observer
class CollectionEdit extends Component {
props: Props;
class CollectionEdit extends React.Component<Props> {
@observable name: string;
@observable color: string = '';
@observable isSaving: boolean;
@ -27,7 +26,7 @@ class CollectionEdit extends Component {
this.name = this.props.collection.name;
}
handleSubmit = async (ev: SyntheticEvent) => {
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
this.isSaving = true;
@ -41,7 +40,7 @@ class CollectionEdit extends Component {
this.isSaving = false;
};
handleNameChange = (ev: SyntheticInputEvent) => {
handleNameChange = (ev: SyntheticInputEvent<*>) => {
this.name = ev.target.value;
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import { observable } from 'mobx';
import { inject, observer } from 'mobx-react';
@ -18,8 +18,7 @@ type Props = {
};
@observer
class CollectionNew extends Component {
props: Props;
class CollectionNew extends React.Component<Props> {
@observable collection: Collection;
@observable name: string = '';
@observable color: string = '';
@ -30,7 +29,7 @@ class CollectionNew extends Component {
this.collection = new Collection();
}
handleSubmit = async (ev: SyntheticEvent) => {
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
this.isSaving = true;
this.collection.updateData({ name: this.name, color: this.color });
@ -45,7 +44,7 @@ class CollectionNew extends Component {
this.isSaving = false;
};
handleNameChange = (ev: SyntheticInputEvent) => {
handleNameChange = (ev: SyntheticInputEvent<*>) => {
this.name = ev.target.value;
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer, inject } from 'mobx-react';
@ -15,8 +15,7 @@ type Props = {
};
@observer
class Dashboard extends Component {
props: Props;
class Dashboard extends React.Component<Props> {
@observable isLoaded: boolean = false;
componentDidMount() {

View File

@ -48,9 +48,8 @@ type Props = {
};
@observer
class DocumentScene extends React.Component {
props: Props;
savedTimeout: number;
class DocumentScene extends React.Component<Props> {
savedTimeout: TimeoutID;
@observable editorComponent;
@observable editCache: ?string;
@ -136,7 +135,7 @@ class DocumentScene extends React.Component {
};
get isEditing() {
return (
return !!(
this.props.match.path === matchDocumentEdit || this.props.newDocument
);
}
@ -163,7 +162,7 @@ class DocumentScene extends React.Component {
this.editCache = null;
this.isSaving = true;
this.isPublishing = publish;
this.isPublishing = !!publish;
document = await document.save(publish, redirect);
this.isSaving = false;
this.isPublishing = false;

View File

@ -26,9 +26,7 @@ type Props = {
history: Object,
};
class DocumentActions extends React.Component {
props: Props;
class DocumentActions extends React.Component<Props> {
handleNewDocument = () => {
this.props.history.push(documentNewUrl(this.props.document));
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import ReactDOM from 'react-dom';
import { observable, computed } from 'mobx';
import { observer, inject } from 'mobx-react';
@ -29,10 +29,8 @@ type Props = {
};
@observer
class DocumentMove extends Component {
props: Props;
firstDocument: HTMLElement;
class DocumentMove extends React.Component<Props> {
firstDocument: *;
@observable searchTerm: ?string;
@observable isSaving: boolean;
@ -115,7 +113,7 @@ class DocumentMove extends Component {
this.props.history.push(this.props.document.url);
};
handleFilter = (e: SyntheticInputEvent) => {
handleFilter = (e: SyntheticInputEvent<*>) => {
this.searchTerm = e.target.value;
};

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observer } from 'mobx-react';
import invariant from 'invariant';
import styled from 'styled-components';
@ -49,10 +49,8 @@ type Props = {
};
@observer
class PathToDocument extends React.Component {
props: Props;
handleClick = async (ev: SyntheticEvent) => {
class PathToDocument extends React.Component<Props> {
handleClick = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { document, result, onSuccess } = this.props;

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { pulsate } from 'shared/styles/animations';
import { color } from 'shared/styles/constants';

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import { observable } from 'mobx';
import { inject, observer } from 'mobx-react';
@ -17,11 +17,10 @@ type Props = {
};
@observer
class DocumentDelete extends Component {
props: Props;
class DocumentDelete extends React.Component<Props> {
@observable isDeleting: boolean;
handleSubmit = async (ev: SyntheticEvent) => {
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
this.isDeleting = true;
const { collection } = this.props.document;

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observer, inject } from 'mobx-react';
import CenteredContent from 'components/CenteredContent';
import { ListPlaceholder } from 'components/LoadingPlaceholder';
@ -8,12 +8,12 @@ import PageTitle from 'components/PageTitle';
import DocumentList from 'components/DocumentList';
import DocumentsStore from 'stores/DocumentsStore';
@observer
class Drafts extends Component {
props: {
documents: DocumentsStore,
};
type Props = {
documents: DocumentsStore,
};
@observer
class Drafts extends React.Component<Props> {
componentDidMount() {
this.props.documents.fetchDrafts();
}

View File

@ -1,11 +1,11 @@
// @flow
import React from 'react';
import * as React from 'react';
import { Link } from 'react-router-dom';
import CenteredContent from 'components/CenteredContent';
import PageTitle from 'components/PageTitle';
class Error404 extends React.Component {
class Error404 extends React.Component<*> {
render() {
return (
<CenteredContent>

View File

@ -1,11 +1,11 @@
// @flow
import React from 'react';
import * as React from 'react';
import { Link } from 'react-router-dom';
import CenteredContent from 'components/CenteredContent';
import PageTitle from 'components/PageTitle';
class ErrorAuth extends React.Component {
class ErrorAuth extends React.Component<*> {
render() {
return (
<CenteredContent>

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { inject, observer } from 'mobx-react';
import CenteredContent from 'components/CenteredContent';

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observer, inject } from 'mobx-react';
import { Redirect } from 'react-router-dom';
import AuthStore from 'stores/AuthStore';

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import styled from 'styled-components';
import Key from 'components/Key';
import Flex from 'shared/components/Flex';

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import ReactDOM from 'react-dom';
import keydown from 'react-keydown';
import Waypoint from 'react-waypoint';
@ -59,9 +59,8 @@ const StyledArrowKeyNavigation = styled(ArrowKeyNavigation)`
`;
@observer
class Search extends Component {
class Search extends React.Component<Props> {
firstDocument: HTMLElement;
props: Props;
@observable resultIds: string[] = []; // Document IDs
@observable query: string = '';

View File

@ -1,22 +1,23 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import styled from 'styled-components';
import { SearchIcon } from 'outline-icons';
import Flex from 'shared/components/Flex';
import { color } from 'shared/styles/constants';
class SearchField extends Component {
input: HTMLInputElement;
props: {
onChange: Function,
};
type Props = {
onChange: string => *,
};
handleChange = (ev: SyntheticEvent) => {
class SearchField extends React.Component<Props> {
input: HTMLInputElement;
handleChange = (ev: SyntheticEvent<*>) => {
this.props.onChange(ev.currentTarget.value ? ev.currentTarget.value : '');
};
focusInput = (ev: SyntheticEvent) => {
focusInput = (ev: SyntheticEvent<*>) => {
this.input.focus();
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable, runInAction } from 'mobx';
import { observer, inject } from 'mobx-react';
import invariant from 'invariant';
@ -16,13 +16,14 @@ import CenteredContent from 'components/CenteredContent';
import PageTitle from 'components/PageTitle';
import Flex from 'shared/components/Flex';
type Props = {
auth: AuthStore,
errors: ErrorsStore,
};
@observer
class Settings extends Component {
timeout: number;
props: {
auth: AuthStore,
errors: ErrorsStore,
};
class Settings extends React.Component<Props> {
timeout: TimeoutID;
@observable name: string;
@observable avatarUrl: ?string;
@ -39,7 +40,7 @@ class Settings extends Component {
clearTimeout(this.timeout);
}
handleSubmit = async (ev: SyntheticEvent) => {
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
this.isSaving = true;
@ -62,7 +63,7 @@ class Settings extends Component {
}
};
handleNameChange = (ev: SyntheticInputEvent) => {
handleNameChange = (ev: SyntheticInputEvent<*>) => {
this.name = ev.target.value;
};

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { inject, observer } from 'mobx-react';
import _ from 'lodash';
import styled from 'styled-components';
@ -18,9 +18,7 @@ type Props = {
};
@observer
class Slack extends Component {
props: Props;
class Slack extends React.Component<Props> {
componentDidMount() {
this.props.integrations.fetchPage();
}

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer, inject } from 'mobx-react';
import { Link } from 'react-router-dom';
@ -15,22 +15,23 @@ import PageTitle from 'components/PageTitle';
import HelpText from 'components/HelpText';
import Subheading from 'components/Subheading';
type Props = {
apiKeys: ApiKeysStore,
};
@observer
class Tokens extends Component {
class Tokens extends React.Component<Props> {
@observable name: string = '';
props: {
apiKeys: ApiKeysStore,
};
componentDidMount() {
this.props.apiKeys.fetchPage({ limit: 100 });
}
handleUpdate = (ev: SyntheticInputEvent) => {
handleUpdate = (ev: SyntheticInputEvent<*>) => {
this.name = ev.target.value;
};
handleSubmit = async (ev: SyntheticEvent) => {
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
await this.props.apiKeys.createApiKey(this.name);
this.name = '';

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import invariant from 'invariant';
import { observer, inject } from 'mobx-react';
import styled from 'styled-components';
@ -15,14 +15,14 @@ import LoadingPlaceholder from 'components/LoadingPlaceholder';
import PageTitle from 'components/PageTitle';
import UserMenu from './components/UserMenu';
@observer
class Users extends Component {
props: {
auth: AuthStore,
errors: ErrorsStore,
users: UsersStore,
};
type Props = {
auth: AuthStore,
errors: ErrorsStore,
users: UsersStore,
};
@observer
class Users extends React.Component<Props> {
componentDidMount() {
this.props.users.fetchPage({ limit: 100 });
}

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer } from 'mobx-react';
import Button from 'components/Button';
@ -12,8 +12,7 @@ type Props = {
};
@observer
class ApiToken extends React.Component {
props: Props;
class ApiToken extends React.Component<Props> {
@observable disabled: boolean;
onClick = () => {

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observable } from 'mobx';
import { observer } from 'mobx-react';
import styled from 'styled-components';
@ -13,17 +13,16 @@ import AvatarEditor from 'react-avatar-editor';
import { uploadFile, dataUrlToBlob } from 'utils/uploadFile';
type Props = {
children?: React$Element<any>,
onSuccess: string => void,
onError: string => void,
children?: React.Node,
onSuccess: string => *,
onError: string => *,
};
@observer
class DropToImport extends Component {
class DropToImport extends React.Component<Props> {
@observable isUploading: boolean = false;
@observable isCropping: boolean = false;
@observable zoom: number = 1;
props: Props;
file: File;
avatarEditorRef: AvatarEditor;
@ -46,7 +45,7 @@ class DropToImport extends Component {
}
};
handleZoom = (event: SyntheticDragEvent) => {
handleZoom = (event: SyntheticDragEvent<*>) => {
let target = event.target;
if (target instanceof HTMLInputElement) {
this.zoom = parseFloat(target.value);

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { inject, observer } from 'mobx-react';
import { MoreIcon } from 'outline-icons';
@ -13,10 +13,8 @@ type Props = {
};
@observer
class UserMenu extends Component {
props: Props;
handlePromote = (ev: SyntheticEvent) => {
class UserMenu extends React.Component<Props> {
handlePromote = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { user, users } = this.props;
if (
@ -31,7 +29,7 @@ class UserMenu extends Component {
users.promote(user);
};
handleDemote = (ev: SyntheticEvent) => {
handleDemote = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { user, users } = this.props;
if (!window.confirm(`Are you want to make ${user.name} a member?`)) {
@ -40,7 +38,7 @@ class UserMenu extends Component {
users.demote(user);
};
handleSuspend = (ev: SyntheticEvent) => {
handleSuspend = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { user, users } = this.props;
if (
@ -53,7 +51,7 @@ class UserMenu extends Component {
users.suspend(user);
};
handleActivate = (ev: SyntheticEvent) => {
handleActivate = (ev: SyntheticEvent<*>) => {
ev.preventDefault();
const { user, users } = this.props;
users.activate(user);

View File

@ -1,5 +1,5 @@
// @flow
import React from 'react';
import * as React from 'react';
import { Redirect } from 'react-router-dom';
import type { Location } from 'react-router-dom';
import queryString from 'query-string';
@ -16,8 +16,7 @@ type Props = {
};
@observer
class SlackAuth extends React.Component {
props: Props;
class SlackAuth extends React.Component<Props> {
@observable redirectTo: string;
componentDidMount() {

View File

@ -1,5 +1,5 @@
// @flow
import React, { Component } from 'react';
import * as React from 'react';
import { observer, inject } from 'mobx-react';
import CenteredContent from 'components/CenteredContent';
import { ListPlaceholder } from 'components/LoadingPlaceholder';
@ -8,12 +8,12 @@ import PageTitle from 'components/PageTitle';
import DocumentList from 'components/DocumentList';
import DocumentsStore from 'stores/DocumentsStore';
@observer
class Starred extends Component {
props: {
documents: DocumentsStore,
};
type Props = {
documents: DocumentsStore,
};
@observer
class Starred extends React.Component<Props> {
componentDidMount() {
this.props.documents.fetchStarred();
}

View File

@ -81,7 +81,7 @@ class AuthStore {
authWithSlack = async (code: string, state: string) => {
// in the case of direct install from the Slack app store the state is
// created on the server and set as a cookie
const serverState = Cookie.get('state', { path: '/' });
const serverState = Cookie.get('state');
if (state !== this.oauthState && state !== serverState) {
return {
success: false,

View File

@ -1,6 +1,8 @@
// @flow
export default function getDataTransferFiles(event: SyntheticEvent) {
export default function getDataTransferFiles(event: SyntheticEvent<*>): File[] {
let dataTransferItemsList = [];
// $FlowFixMe
if (event.dataTransfer) {
const dt = event.dataTransfer;
if (dt.files && dt.files.length) {
@ -10,6 +12,8 @@ export default function getDataTransferFiles(event: SyntheticEvent) {
// but Chrome implements some drag store, which is accesible via dataTransfer.items
dataTransferItemsList = dt.items;
}
// $FlowFixMe
} else if (event.target && event.target.files) {
dataTransferItemsList = event.target.files;
}

View File

@ -27,6 +27,7 @@ export const uploadFile = async (
formData.append(key, data.form[key]);
}
// $FlowFixMe
if (file.blob) {
// $FlowFixMe
formData.append('file', file.file);

View File

@ -0,0 +1,67 @@
// flow-typed signature: 1716f73356cbdf5450e8d7ab82dd2e1a
// flow-typed version: <<STUB>>/@tommoor/slate-drop-or-paste-images_v^0.8.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
*
* '@tommoor/slate-drop-or-paste-images'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module '@tommoor/slate-drop-or-paste-images' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.min' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/data-uri-to-blob' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/image-to-data-uri' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/index' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/load-image-file' {
declare module.exports: any;
}
// Filename aliases
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images'>;
}
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.min.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.min'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/data-uri-to-blob.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/data-uri-to-blob'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/image-to-data-uri.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/image-to-data-uri'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/index.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/index'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/load-image-file.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/load-image-file'>;
}

431
flow-typed/npm/autotrack_vx.x.x.js vendored Normal file
View File

@ -0,0 +1,431 @@
// flow-typed signature: 0cb55f2f1730c36c81fb4d6e5baedccf
// flow-typed version: <<STUB>>/autotrack_v^2.4.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
*
* 'autotrack'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'autotrack' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'autotrack/autotrack' {
declare module.exports: any;
}
declare module 'autotrack/bin/build' {
declare module.exports: any;
}
declare module 'autotrack/bin/errors' {
declare module.exports: any;
}
declare module 'autotrack/gulpfile' {
declare module.exports: any;
}
declare module 'autotrack/lib/constants' {
declare module.exports: any;
}
declare module 'autotrack/lib/event-emitter' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/analytics' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/clean-url-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/event-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/impression-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/max-scroll-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/media-query-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/outbound-form-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/outbound-link-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/page-visibility-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/session' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/social-widget-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/externs/url-change-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/index' {
declare module.exports: any;
}
declare module 'autotrack/lib/method-chain' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/clean-url-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/event-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/impression-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/max-scroll-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/media-query-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/outbound-form-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/outbound-link-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/page-visibility-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/social-widget-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/plugins/url-change-tracker' {
declare module.exports: any;
}
declare module 'autotrack/lib/provide' {
declare module.exports: any;
}
declare module 'autotrack/lib/session' {
declare module.exports: any;
}
declare module 'autotrack/lib/store' {
declare module.exports: any;
}
declare module 'autotrack/lib/usage' {
declare module.exports: any;
}
declare module 'autotrack/lib/utilities' {
declare module.exports: any;
}
declare module 'autotrack/test/analytics_debug' {
declare module.exports: any;
}
declare module 'autotrack/test/analytics' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/clean-url-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/event-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/ga' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/impression-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/index-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/max-scroll-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/media-query-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/outbound-form-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/outbound-link-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/page-visibility-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/server' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/social-widget-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/url-change-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/e2e/wdio.conf' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/event-emitter-test' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/method-chain-test' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/plugins/clean-url-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/plugins/page-visibility-tracker-test' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/session-test' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/store-test' {
declare module.exports: any;
}
declare module 'autotrack/test/unit/utilities-test' {
declare module.exports: any;
}
// Filename aliases
declare module 'autotrack/autotrack.js' {
declare module.exports: $Exports<'autotrack/autotrack'>;
}
declare module 'autotrack/bin/build.js' {
declare module.exports: $Exports<'autotrack/bin/build'>;
}
declare module 'autotrack/bin/errors.js' {
declare module.exports: $Exports<'autotrack/bin/errors'>;
}
declare module 'autotrack/gulpfile.js' {
declare module.exports: $Exports<'autotrack/gulpfile'>;
}
declare module 'autotrack/lib/constants.js' {
declare module.exports: $Exports<'autotrack/lib/constants'>;
}
declare module 'autotrack/lib/event-emitter.js' {
declare module.exports: $Exports<'autotrack/lib/event-emitter'>;
}
declare module 'autotrack/lib/externs/analytics.js' {
declare module.exports: $Exports<'autotrack/lib/externs/analytics'>;
}
declare module 'autotrack/lib/externs/clean-url-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/clean-url-tracker'>;
}
declare module 'autotrack/lib/externs/event-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/event-tracker'>;
}
declare module 'autotrack/lib/externs/impression-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/impression-tracker'>;
}
declare module 'autotrack/lib/externs/max-scroll-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/max-scroll-tracker'>;
}
declare module 'autotrack/lib/externs/media-query-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/media-query-tracker'>;
}
declare module 'autotrack/lib/externs/outbound-form-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/outbound-form-tracker'>;
}
declare module 'autotrack/lib/externs/outbound-link-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/outbound-link-tracker'>;
}
declare module 'autotrack/lib/externs/page-visibility-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/page-visibility-tracker'>;
}
declare module 'autotrack/lib/externs/session.js' {
declare module.exports: $Exports<'autotrack/lib/externs/session'>;
}
declare module 'autotrack/lib/externs/social-widget-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/social-widget-tracker'>;
}
declare module 'autotrack/lib/externs/url-change-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/externs/url-change-tracker'>;
}
declare module 'autotrack/lib/index.js' {
declare module.exports: $Exports<'autotrack/lib/index'>;
}
declare module 'autotrack/lib/method-chain.js' {
declare module.exports: $Exports<'autotrack/lib/method-chain'>;
}
declare module 'autotrack/lib/plugins/clean-url-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/clean-url-tracker'>;
}
declare module 'autotrack/lib/plugins/event-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/event-tracker'>;
}
declare module 'autotrack/lib/plugins/impression-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/impression-tracker'>;
}
declare module 'autotrack/lib/plugins/max-scroll-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/max-scroll-tracker'>;
}
declare module 'autotrack/lib/plugins/media-query-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/media-query-tracker'>;
}
declare module 'autotrack/lib/plugins/outbound-form-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/outbound-form-tracker'>;
}
declare module 'autotrack/lib/plugins/outbound-link-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/outbound-link-tracker'>;
}
declare module 'autotrack/lib/plugins/page-visibility-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/page-visibility-tracker'>;
}
declare module 'autotrack/lib/plugins/social-widget-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/social-widget-tracker'>;
}
declare module 'autotrack/lib/plugins/url-change-tracker.js' {
declare module.exports: $Exports<'autotrack/lib/plugins/url-change-tracker'>;
}
declare module 'autotrack/lib/provide.js' {
declare module.exports: $Exports<'autotrack/lib/provide'>;
}
declare module 'autotrack/lib/session.js' {
declare module.exports: $Exports<'autotrack/lib/session'>;
}
declare module 'autotrack/lib/store.js' {
declare module.exports: $Exports<'autotrack/lib/store'>;
}
declare module 'autotrack/lib/usage.js' {
declare module.exports: $Exports<'autotrack/lib/usage'>;
}
declare module 'autotrack/lib/utilities.js' {
declare module.exports: $Exports<'autotrack/lib/utilities'>;
}
declare module 'autotrack/test/analytics_debug.js' {
declare module.exports: $Exports<'autotrack/test/analytics_debug'>;
}
declare module 'autotrack/test/analytics.js' {
declare module.exports: $Exports<'autotrack/test/analytics'>;
}
declare module 'autotrack/test/e2e/clean-url-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/clean-url-tracker-test'>;
}
declare module 'autotrack/test/e2e/event-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/event-tracker-test'>;
}
declare module 'autotrack/test/e2e/ga.js' {
declare module.exports: $Exports<'autotrack/test/e2e/ga'>;
}
declare module 'autotrack/test/e2e/impression-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/impression-tracker-test'>;
}
declare module 'autotrack/test/e2e/index-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/index-test'>;
}
declare module 'autotrack/test/e2e/max-scroll-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/max-scroll-tracker-test'>;
}
declare module 'autotrack/test/e2e/media-query-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/media-query-tracker-test'>;
}
declare module 'autotrack/test/e2e/outbound-form-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/outbound-form-tracker-test'>;
}
declare module 'autotrack/test/e2e/outbound-link-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/outbound-link-tracker-test'>;
}
declare module 'autotrack/test/e2e/page-visibility-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/page-visibility-tracker-test'>;
}
declare module 'autotrack/test/e2e/server.js' {
declare module.exports: $Exports<'autotrack/test/e2e/server'>;
}
declare module 'autotrack/test/e2e/social-widget-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/social-widget-tracker-test'>;
}
declare module 'autotrack/test/e2e/url-change-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/e2e/url-change-tracker-test'>;
}
declare module 'autotrack/test/e2e/wdio.conf.js' {
declare module.exports: $Exports<'autotrack/test/e2e/wdio.conf'>;
}
declare module 'autotrack/test/unit/event-emitter-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/event-emitter-test'>;
}
declare module 'autotrack/test/unit/method-chain-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/method-chain-test'>;
}
declare module 'autotrack/test/unit/plugins/clean-url-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/plugins/clean-url-tracker-test'>;
}
declare module 'autotrack/test/unit/plugins/page-visibility-tracker-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/plugins/page-visibility-tracker-test'>;
}
declare module 'autotrack/test/unit/session-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/session-test'>;
}
declare module 'autotrack/test/unit/store-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/store-test'>;
}
declare module 'autotrack/test/unit/utilities-test.js' {
declare module.exports: $Exports<'autotrack/test/unit/utilities-test'>;
}

1564
flow-typed/npm/aws-sdk_vx.x.x.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// flow-typed signature: b44c78d7279f78b485d76b15c08cd683
// flow-typed version: <<STUB>>/babel-core_v^6.24.1/flow_v0.49.1
// flow-typed signature: e24af6bf202d8e5fab4e87cde4d2bfa2
// flow-typed version: <<STUB>>/babel-core_v^6.24.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: 1bf74b25fb82cd002e8b966a31086e1a
// flow-typed version: <<STUB>>/babel-eslint_v^7.2.3/flow_v0.49.1
// flow-typed signature: 533f9ec506a216e4d7a0f986dfe83e8b
// flow-typed version: <<STUB>>/babel-eslint_v^8.1.2/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
@ -22,59 +22,102 @@ declare module 'babel-eslint' {
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'babel-eslint/babylon-to-espree/attachComments' {
declare module 'babel-eslint/lib/analyze-scope' {
declare module.exports: any;
}
declare module 'babel-eslint/babylon-to-espree/convertComments' {
declare module 'babel-eslint/lib/babylon-to-espree/attachComments' {
declare module.exports: any;
}
declare module 'babel-eslint/babylon-to-espree/convertTemplateType' {
declare module 'babel-eslint/lib/babylon-to-espree/convertComments' {
declare module.exports: any;
}
declare module 'babel-eslint/babylon-to-espree/index' {
declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType' {
declare module.exports: any;
}
declare module 'babel-eslint/babylon-to-espree/toAST' {
declare module 'babel-eslint/lib/babylon-to-espree/index' {
declare module.exports: any;
}
declare module 'babel-eslint/babylon-to-espree/toToken' {
declare module 'babel-eslint/lib/babylon-to-espree/toAST' {
declare module.exports: any;
}
declare module 'babel-eslint/babylon-to-espree/toTokens' {
declare module 'babel-eslint/lib/babylon-to-espree/toToken' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/babylon-to-espree/toTokens' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/index' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/parse-with-patch' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/parse-with-scope' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/parse' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/patch-eslint-scope' {
declare module.exports: any;
}
declare module 'babel-eslint/lib/visitor-keys' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-eslint/babylon-to-espree/attachComments.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/attachComments'>;
declare module 'babel-eslint/lib/analyze-scope.js' {
declare module.exports: $Exports<'babel-eslint/lib/analyze-scope'>;
}
declare module 'babel-eslint/babylon-to-espree/convertComments.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/convertComments'>;
declare module 'babel-eslint/lib/babylon-to-espree/attachComments.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/attachComments'>;
}
declare module 'babel-eslint/babylon-to-espree/convertTemplateType.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/convertTemplateType'>;
declare module 'babel-eslint/lib/babylon-to-espree/convertComments.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertComments'>;
}
declare module 'babel-eslint/babylon-to-espree/index.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/index'>;
declare module 'babel-eslint/lib/babylon-to-espree/convertTemplateType.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/convertTemplateType'>;
}
declare module 'babel-eslint/babylon-to-espree/toAST.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toAST'>;
declare module 'babel-eslint/lib/babylon-to-espree/index.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/index'>;
}
declare module 'babel-eslint/babylon-to-espree/toToken.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toToken'>;
declare module 'babel-eslint/lib/babylon-to-espree/toAST.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toAST'>;
}
declare module 'babel-eslint/babylon-to-espree/toTokens.js' {
declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toTokens'>;
declare module 'babel-eslint/lib/babylon-to-espree/toToken.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toToken'>;
}
declare module 'babel-eslint/index' {
declare module.exports: $Exports<'babel-eslint'>;
declare module 'babel-eslint/lib/babylon-to-espree/toTokens.js' {
declare module.exports: $Exports<'babel-eslint/lib/babylon-to-espree/toTokens'>;
}
declare module 'babel-eslint/index.js' {
declare module.exports: $Exports<'babel-eslint'>;
declare module 'babel-eslint/lib/index.js' {
declare module.exports: $Exports<'babel-eslint/lib/index'>;
}
declare module 'babel-eslint/lib/parse-with-patch.js' {
declare module.exports: $Exports<'babel-eslint/lib/parse-with-patch'>;
}
declare module 'babel-eslint/lib/parse-with-scope.js' {
declare module.exports: $Exports<'babel-eslint/lib/parse-with-scope'>;
}
declare module 'babel-eslint/lib/parse.js' {
declare module.exports: $Exports<'babel-eslint/lib/parse'>;
}
declare module 'babel-eslint/lib/patch-eslint-scope.js' {
declare module.exports: $Exports<'babel-eslint/lib/patch-eslint-scope'>;
}
declare module 'babel-eslint/lib/visitor-keys.js' {
declare module.exports: $Exports<'babel-eslint/lib/visitor-keys'>;
}

View File

@ -1,5 +1,5 @@
// flow-typed signature: 3c809891622d6f698104648531a2877f
// flow-typed version: <<STUB>>/babel-jest_v^20.0.0/flow_v0.49.1
// flow-typed signature: 16a74ec1b3f30574b1d17af2e1aae17e
// flow-typed version: <<STUB>>/babel-jest_v22/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: 62273b6ed2d83e96178263d3cc4988ea
// flow-typed version: <<STUB>>/babel-loader_v6.2.5/flow_v0.49.1
// flow-typed signature: a62195ffbfff5c6790934103be75a8ff
// flow-typed version: <<STUB>>/babel-loader_v^7.1.2/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
@ -26,11 +26,7 @@ declare module 'babel-loader/lib/fs-cache' {
declare module.exports: any;
}
declare module 'babel-loader/lib/helpers/exists' {
declare module.exports: any;
}
declare module 'babel-loader/lib/helpers/read' {
declare module 'babel-loader/lib/index' {
declare module.exports: any;
}
@ -38,22 +34,34 @@ declare module 'babel-loader/lib/resolve-rc' {
declare module.exports: any;
}
declare module 'babel-loader/lib/utils/exists' {
declare module.exports: any;
}
declare module 'babel-loader/lib/utils/read' {
declare module.exports: any;
}
declare module 'babel-loader/lib/utils/relative' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-loader/index' {
declare module.exports: $Exports<'babel-loader'>;
}
declare module 'babel-loader/index.js' {
declare module.exports: $Exports<'babel-loader'>;
}
declare module 'babel-loader/lib/fs-cache.js' {
declare module.exports: $Exports<'babel-loader/lib/fs-cache'>;
}
declare module 'babel-loader/lib/helpers/exists.js' {
declare module.exports: $Exports<'babel-loader/lib/helpers/exists'>;
}
declare module 'babel-loader/lib/helpers/read.js' {
declare module.exports: $Exports<'babel-loader/lib/helpers/read'>;
declare module 'babel-loader/lib/index.js' {
declare module.exports: $Exports<'babel-loader/lib/index'>;
}
declare module 'babel-loader/lib/resolve-rc.js' {
declare module.exports: $Exports<'babel-loader/lib/resolve-rc'>;
}
declare module 'babel-loader/lib/utils/exists.js' {
declare module.exports: $Exports<'babel-loader/lib/utils/exists'>;
}
declare module 'babel-loader/lib/utils/read.js' {
declare module.exports: $Exports<'babel-loader/lib/utils/read'>;
}
declare module 'babel-loader/lib/utils/relative.js' {
declare module.exports: $Exports<'babel-loader/lib/utils/relative'>;
}

View File

@ -1,5 +1,5 @@
// flow-typed signature: 312645f2a8bab19c593f2670a7ff103f
// flow-typed version: <<STUB>>/babel-plugin-lodash_v^3.2.11/flow_v0.49.1
// flow-typed signature: 47c9088583f2a3b1c3bb03b4055baece
// flow-typed version: <<STUB>>/babel-plugin-lodash_v^3.2.11/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -0,0 +1,144 @@
// flow-typed signature: 9da92a15fa5848fd1ac62d37d77a6850
// flow-typed version: <<STUB>>/babel-plugin-styled-components_v^1.1.7/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
*
* 'babel-plugin-styled-components'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'babel-plugin-styled-components' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'babel-plugin-styled-components/lib/css/placeholderUtils' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/css/preprocess' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/css/preprocessInjectGlobal' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/css/preprocessKeyframes' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/css/preprocessUtils' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/index' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/minify/index' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/utils/detectors' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/utils/getName' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/utils/hash' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/utils/options' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/visitors/displayNameAndId' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/visitors/minify' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/visitors/noParserImport' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/visitors/templateLiterals/index' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/visitors/templateLiterals/preprocess' {
declare module.exports: any;
}
declare module 'babel-plugin-styled-components/lib/visitors/templateLiterals/transpile' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-plugin-styled-components/lib/css/placeholderUtils.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/css/placeholderUtils'>;
}
declare module 'babel-plugin-styled-components/lib/css/preprocess.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/css/preprocess'>;
}
declare module 'babel-plugin-styled-components/lib/css/preprocessInjectGlobal.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/css/preprocessInjectGlobal'>;
}
declare module 'babel-plugin-styled-components/lib/css/preprocessKeyframes.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/css/preprocessKeyframes'>;
}
declare module 'babel-plugin-styled-components/lib/css/preprocessUtils.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/css/preprocessUtils'>;
}
declare module 'babel-plugin-styled-components/lib/index.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/index'>;
}
declare module 'babel-plugin-styled-components/lib/minify/index.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/minify/index'>;
}
declare module 'babel-plugin-styled-components/lib/utils/detectors.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/utils/detectors'>;
}
declare module 'babel-plugin-styled-components/lib/utils/getName.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/utils/getName'>;
}
declare module 'babel-plugin-styled-components/lib/utils/hash.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/utils/hash'>;
}
declare module 'babel-plugin-styled-components/lib/utils/options.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/utils/options'>;
}
declare module 'babel-plugin-styled-components/lib/visitors/displayNameAndId.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/visitors/displayNameAndId'>;
}
declare module 'babel-plugin-styled-components/lib/visitors/minify.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/visitors/minify'>;
}
declare module 'babel-plugin-styled-components/lib/visitors/noParserImport.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/visitors/noParserImport'>;
}
declare module 'babel-plugin-styled-components/lib/visitors/templateLiterals/index.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/visitors/templateLiterals/index'>;
}
declare module 'babel-plugin-styled-components/lib/visitors/templateLiterals/preprocess.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/visitors/templateLiterals/preprocess'>;
}
declare module 'babel-plugin-styled-components/lib/visitors/templateLiterals/transpile.js' {
declare module.exports: $Exports<'babel-plugin-styled-components/lib/visitors/templateLiterals/transpile'>;
}

View File

@ -0,0 +1,32 @@
// flow-typed signature: 652608d2e8431a8c5274bad836ee0926
// flow-typed version: <<STUB>>/babel-plugin-syntax-dynamic-import_v^6.18.0/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
*
* 'babel-plugin-syntax-dynamic-import'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'babel-plugin-syntax-dynamic-import' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'babel-plugin-syntax-dynamic-import/lib/index' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-plugin-syntax-dynamic-import/lib/index.js' {
declare module.exports: $Exports<'babel-plugin-syntax-dynamic-import/lib/index'>;
}

View File

@ -1,5 +1,5 @@
// flow-typed signature: 1ac90a5b65b8621f1c6637100a3a49a0
// flow-typed version: <<STUB>>/babel-plugin-transform-class-properties_v^6.24.1/flow_v0.49.1
// flow-typed signature: b26839abd705c305219fee62938d492b
// flow-typed version: <<STUB>>/babel-plugin-transform-class-properties_v^6.24.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: 883d88f87fe00aad41cc10200f4ed5c7
// flow-typed version: <<STUB>>/babel-plugin-transform-decorators-legacy_v1.3.4/flow_v0.49.1
// flow-typed signature: c7f83286bf05aa71691f77b01cfe5ca8
// flow-typed version: <<STUB>>/babel-plugin-transform-decorators-legacy_v1.3.4/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: c39ed7e0d504b99dbad16f4bc21577b7
// flow-typed version: <<STUB>>/babel-plugin-transform-es2015-destructuring_v^6.23.0/flow_v0.49.1
// flow-typed signature: 9afa5c60629c28d30730ce2df5dcfcd7
// flow-typed version: <<STUB>>/babel-plugin-transform-es2015-destructuring_v^6.23.0/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: fabb91c6625b44603da3815cb1a0f606
// flow-typed version: <<STUB>>/babel-plugin-transform-es2015-modules-commonjs_v^6.24.1/flow_v0.49.1
// flow-typed signature: c96a996d8250423b12b2ed9faec13a86
// flow-typed version: <<STUB>>/babel-plugin-transform-es2015-modules-commonjs_v^6.24.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: 9d5aec989f663e1a1ee84160a9b94c9a
// flow-typed version: <<STUB>>/babel-plugin-transform-object-rest-spread_v^6.23.0/flow_v0.49.1
// flow-typed signature: 51b77fa264d9add521224f44df19df82
// flow-typed version: <<STUB>>/babel-plugin-transform-object-rest-spread_v^6.23.0/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: d717de46f6c57058188f79e90ea26c27
// flow-typed version: <<STUB>>/babel-plugin-transform-regenerator_v^6.24.1/flow_v0.49.1
// flow-typed signature: 246c54ac874037a4d9cffcb766e3bc91
// flow-typed version: <<STUB>>/babel-plugin-transform-regenerator_v^6.24.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: 6faf55e0643acc0d5b765261064df0f4
// flow-typed version: <<STUB>>/babel-polyfill_v^6.13.0/flow_v0.49.1
// flow-typed signature: 5a748d46bf980bce1150ad979eb02e73
// flow-typed version: <<STUB>>/babel-polyfill_v^6.13.0/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: b1c4442700dc843a41b14e8290b7e9d2
// flow-typed version: <<STUB>>/babel-preset-env_v^1.4.0/flow_v0.49.1
// flow-typed signature: b27490fff2d5c4468766643659a3eb2b
// flow-typed version: <<STUB>>/babel-preset-env_v^1.4.0/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:
@ -46,10 +46,18 @@ declare module 'babel-preset-env/lib/normalize-options' {
declare module.exports: any;
}
declare module 'babel-preset-env/lib/targets-parser' {
declare module.exports: any;
}
declare module 'babel-preset-env/lib/transform-polyfill-require-plugin' {
declare module.exports: any;
}
declare module 'babel-preset-env/lib/utils' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-preset-env/data/built-in-features.js' {
declare module.exports: $Exports<'babel-preset-env/data/built-in-features'>;
@ -69,6 +77,12 @@ declare module 'babel-preset-env/lib/module-transformations.js' {
declare module 'babel-preset-env/lib/normalize-options.js' {
declare module.exports: $Exports<'babel-preset-env/lib/normalize-options'>;
}
declare module 'babel-preset-env/lib/targets-parser.js' {
declare module.exports: $Exports<'babel-preset-env/lib/targets-parser'>;
}
declare module 'babel-preset-env/lib/transform-polyfill-require-plugin.js' {
declare module.exports: $Exports<'babel-preset-env/lib/transform-polyfill-require-plugin'>;
}
declare module 'babel-preset-env/lib/utils.js' {
declare module.exports: $Exports<'babel-preset-env/lib/utils'>;
}

View File

@ -1,5 +1,5 @@
// flow-typed signature: 71439ef11c08f129d231c93a25ce7736
// flow-typed version: <<STUB>>/babel-preset-react-hmre_v1.1.1/flow_v0.49.1
// flow-typed signature: c846d354ff1571b99d50a1c57f08f6e6
// flow-typed version: <<STUB>>/babel-preset-react-hmre_v1.1.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: b8a09cacee593afd996e2174c52b3f54
// flow-typed version: <<STUB>>/babel-preset-react_v6.11.1/flow_v0.49.1
// flow-typed signature: ff1392fee98b43939eca4077f29d32a4
// flow-typed version: <<STUB>>/babel-preset-react_v6.11.1/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

View File

@ -1,5 +1,5 @@
// flow-typed signature: 452b03ec25e282c97f4b314724acb4b9
// flow-typed version: <<STUB>>/babel-regenerator-runtime_v6.5.0/flow_v0.49.1
// flow-typed signature: 9feb616713e12a7d3ffecfc3f6a59af1
// flow-typed version: <<STUB>>/babel-regenerator-runtime_v6.5.0/flow_v0.71.0
/**
* This is an autogenerated libdef stub for:

Some files were not shown because too many files have changed in this diff Show More