Full Code of zj-wukewei/Hot for AI

master 7a3b3acc804d cached
203 files
575.0 KB
137.1k tokens
1215 symbols
1 requests
Download .txt
Showing preview only (644K chars total). Download the full file or copy to clipboard to get everything.
Repository: zj-wukewei/Hot
Branch: master
Commit: 7a3b3acc804d
Files: 203
Total size: 575.0 KB

Directory structure:
gitextract_j2m0kka4/

├── .flowconfig
├── .gitignore
├── .vscode/
│   ├── launchReactNative.js
│   ├── settings.json
│   └── typings/
│       ├── react/
│       │   ├── react-addons-create-fragment.d.ts
│       │   ├── react-addons-css-transition-group.d.ts
│       │   ├── react-addons-linked-state-mixin.d.ts
│       │   ├── react-addons-perf.d.ts
│       │   ├── react-addons-pure-render-mixin.d.ts
│       │   ├── react-addons-test-utils.d.ts
│       │   ├── react-addons-transition-group.d.ts
│       │   ├── react-addons-update.d.ts
│       │   ├── react-dom.d.ts
│       │   ├── react-global.d.ts
│       │   └── react.d.ts
│       └── react-native/
│           └── react-native.d.ts
├── README.md
├── app/
│   ├── .gitignore
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── wkw/
│       │               └── hot/
│       │                   └── ApplicationTest.java
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── wkw/
│       │   │           └── hot/
│       │   │               ├── adapter/
│       │   │               │   └── FragmentAdapter.java
│       │   │               ├── base/
│       │   │               │   ├── BaseActivity.java
│       │   │               │   ├── BaseFragment.java
│       │   │               │   ├── BaseLazyFragment.java
│       │   │               │   ├── BaseLoadMoreAdapter.java
│       │   │               │   ├── BaseOnScrollListener.java
│       │   │               │   ├── BasePresenter.java
│       │   │               │   ├── ILoadingView.java
│       │   │               │   ├── IPresenter.java
│       │   │               │   ├── IView.java
│       │   │               │   └── page/
│       │   │               │       ├── BaseLazyPageFragment.java
│       │   │               │       ├── BaseListAdapter.java
│       │   │               │       ├── BasePageFragment.java
│       │   │               │       └── IDataVIew.java
│       │   │               ├── cache/
│       │   │               │   ├── CacheLoader.java
│       │   │               │   ├── DiskCache.java
│       │   │               │   ├── ICache.java
│       │   │               │   ├── MemoryCache.java
│       │   │               │   └── NetworkCache.java
│       │   │               ├── common/
│       │   │               │   └── Constants.java
│       │   │               ├── data/
│       │   │               │   ├── DataManager.java
│       │   │               │   └── api/
│       │   │               │       └── HotApi.java
│       │   │               ├── entity/
│       │   │               │   ├── ListPopularEntity.java
│       │   │               │   ├── PagePopularEntity.java
│       │   │               │   └── PopularEntity.java
│       │   │               ├── mapper/
│       │   │               │   └── PopularModelDataMapper.java
│       │   │               ├── model/
│       │   │               │   └── PopularModel.java
│       │   │               ├── navigator/
│       │   │               │   └── Navigator.java
│       │   │               ├── reject/
│       │   │               │   ├── ContextLife.java
│       │   │               │   ├── PerActivity.java
│       │   │               │   ├── PerFragment.java
│       │   │               │   ├── component/
│       │   │               │   │   ├── ActivityComponent.java
│       │   │               │   │   ├── AppComponent.java
│       │   │               │   │   └── FragmentComponent.java
│       │   │               │   └── module/
│       │   │               │       ├── ActivityModule.java
│       │   │               │       ├── AppModule.java
│       │   │               │       └── FragmentModule.java
│       │   │               ├── ui/
│       │   │               │   ├── AboutActivity.java
│       │   │               │   ├── App.java
│       │   │               │   ├── item/
│       │   │               │   │   ├── ItemAdapter.java
│       │   │               │   │   ├── ItemContract.java
│       │   │               │   │   ├── ItemFragment.java
│       │   │               │   │   └── ItemPresenter.java
│       │   │               │   ├── main/
│       │   │               │   │   ├── MainActivity.java
│       │   │               │   │   ├── MainContract.java
│       │   │               │   │   └── MainPresenter.java
│       │   │               │   ├── react/
│       │   │               │   │   └── MyReactActivity.java
│       │   │               │   ├── search/
│       │   │               │   │   └── SearchActivity.java
│       │   │               │   └── web/
│       │   │               │       ├── WebActivity.java
│       │   │               │       ├── WebContract.java
│       │   │               │       └── WebPresenter.java
│       │   │               └── utils/
│       │   │                   ├── GlideManager.java
│       │   │                   └── Logger.java
│       │   └── res/
│       │       ├── drawable/
│       │       │   ├── custom_cursor.xml
│       │       │   ├── progress_bar_bg.xml
│       │       │   └── side_nav_bar.xml
│       │       ├── drawable-v21/
│       │       │   ├── ic_menu_camera.xml
│       │       │   ├── ic_menu_gallery.xml
│       │       │   ├── ic_menu_manage.xml
│       │       │   ├── ic_menu_send.xml
│       │       │   ├── ic_menu_share.xml
│       │       │   └── ic_menu_slideshow.xml
│       │       ├── layout/
│       │       │   ├── activity_about.xml
│       │       │   ├── activity_main.xml
│       │       │   ├── activity_search.xml
│       │       │   ├── activity_web.xml
│       │       │   ├── app_bar_main.xml
│       │       │   ├── fragment_item.xml
│       │       │   ├── fragment_list.xml
│       │       │   ├── layout_item.xml
│       │       │   ├── layout_toolbar_view.xml
│       │       │   └── nav_header_main.xml
│       │       ├── menu/
│       │       │   ├── activity_main_drawer.xml
│       │       │   ├── main.xml
│       │       │   └── menu_web.xml
│       │       ├── values/
│       │       │   ├── arrays.xml
│       │       │   ├── colors.xml
│       │       │   ├── dimens.xml
│       │       │   ├── drawables.xml
│       │       │   ├── strings.xml
│       │       │   └── styles.xml
│       │       ├── values-v21/
│       │       │   └── styles.xml
│       │       └── values-w820dp/
│       │           └── dimens.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── wkw/
│                       └── hot/
│                           └── ExampleUnitTest.java
├── build.gradle
├── common_lib/
│   ├── .gitignore
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── wkw/
│       │               └── common_lib/
│       │                   └── ApplicationTest.java
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── wkw/
│       │   │           └── common_lib/
│       │   │               ├── Ext.java
│       │   │               ├── image/
│       │   │               │   ├── ImageConfig.java
│       │   │               │   ├── ImageLoader.java
│       │   │               │   ├── ImageLoaderStrategy.java
│       │   │               │   └── glide/
│       │   │               │       ├── GlideImageConfig.java
│       │   │               │       └── GlideImageLoaderStrategy.java
│       │   │               ├── network/
│       │   │               │   ├── AccessPoint.java
│       │   │               │   ├── Network.java
│       │   │               │   ├── NetworkDash.java
│       │   │               │   ├── NetworkObserver.java
│       │   │               │   ├── NetworkState.java
│       │   │               │   ├── NetworkStateListener.java
│       │   │               │   ├── NetworkType.java
│       │   │               │   ├── ServiceProvider.java
│       │   │               │   └── WifiDash.java
│       │   │               ├── rx/
│       │   │               │   ├── ApiResponse.java
│       │   │               │   ├── ProgressSubscriber.java
│       │   │               │   ├── RxBus.java
│       │   │               │   ├── RxResultHelper.java
│       │   │               │   ├── RxSubscriber.java
│       │   │               │   ├── SchedulersCompat.java
│       │   │               │   └── error/
│       │   │               │       ├── DefaultErrorBundle.java
│       │   │               │       ├── ErrorBundle.java
│       │   │               │       ├── ErrorHanding.java
│       │   │               │       ├── NetworkConnectionException.java
│       │   │               │       └── ServerException.java
│       │   │               ├── sp/
│       │   │               │   ├── Once.java
│       │   │               │   └── PersistedMap.java
│       │   │               ├── utils/
│       │   │               │   ├── AndroidUtils.java
│       │   │               │   ├── AppManager.java
│       │   │               │   ├── AppUtils.java
│       │   │               │   ├── DialogUtil.java
│       │   │               │   ├── HtmlUtils.java
│       │   │               │   ├── NetWorkUtils.java
│       │   │               │   ├── ProcessUtils.java
│       │   │               │   ├── PropertyUtils.java
│       │   │               │   ├── Singleton.java
│       │   │               │   ├── StringUtils.java
│       │   │               │   ├── ThreadUtils.java
│       │   │               │   ├── ToashUtils.java
│       │   │               │   └── ViewUtils.java
│       │   │               └── widget/
│       │   │                   ├── ClearEditText.java
│       │   │                   ├── CustomTabHost.java
│       │   │                   ├── ProgressLayout.java
│       │   │                   ├── TimerButton.java
│       │   │                   └── loadmore/
│       │   │                       ├── DefaultEmptyItem.java
│       │   │                       ├── DefaultFootItem.java
│       │   │                       ├── EmptyFootItem.java
│       │   │                       ├── EmptyItem.java
│       │   │                       ├── FootItem.java
│       │   │                       ├── OnLoadMoreListener.java
│       │   │                       ├── RecyclerViewUtils.java
│       │   │                       └── RecyclerViewWithFooter.java
│       │   └── res/
│       │       ├── layout/
│       │       │   ├── layout_error_view.xml
│       │       │   ├── layout_loading_footer_view.xml
│       │       │   ├── layout_loading_view.xml
│       │       │   ├── layout_no_data_view.xml
│       │       │   ├── rv_with_footer_empty_layout.xml
│       │       │   └── rv_with_footer_loading.xml
│       │       └── values/
│       │           ├── attrs.xml
│       │           ├── dimens.xml
│       │           ├── rv_with_footer_strings.xml
│       │           └── strings.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── wkw/
│                       └── common_lib/
│                           └── ExampleUnitTest.java
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── index.android.js
├── js/
│   ├── actions/
│   │   └── newsList.js
│   ├── components/
│   │   ├── Header.js
│   │   └── LoadingView.js
│   ├── constants/
│   │   ├── ActionTypes.js
│   │   └── Urls.js
│   ├── containes/
│   │   ├── App.js
│   │   ├── NewsContaines.js
│   │   └── WebViewContaines.js
│   ├── pages/
│   │   ├── News.js
│   │   └── WebViewPage.js
│   ├── reducers/
│   │   ├── index.js
│   │   └── newsList.js
│   ├── rootApp.js
│   ├── store/
│   │   └── store.js
│   └── utils/
│       ├── CommonUtil.js
│       ├── Services.js
│       └── ToastUtil.js
├── package.json
├── settings.gradle
├── tsconfig.json
└── version.gradle

================================================
FILE CONTENTS
================================================

================================================
FILE: .flowconfig
================================================
[ignore]

# We fork some components by platform.
.*/*.android.js

# Ignore templates with `@flow` in header
.*/local-cli/generator.*

# Ignore malformed json
.*/node_modules/y18n/test/.*\.json

# Ignore the website subdir
<PROJECT_ROOT>/website/.*

# Ignore BUCK generated dirs
<PROJECT_ROOT>/\.buckd/

# Ignore unexpected extra @providesModule
.*/node_modules/commoner/test/source/widget/share.js

# Ignore duplicate module providers
# For RN Apps installed via npm, "Libraries" folder is inside node_modules/react-native but in the source repo it is in the root
.*/Libraries/react-native/React.js
.*/Libraries/react-native/ReactNative.js
.*/node_modules/jest-runtime/build/__tests__/.*

[include]

[libs]
Libraries/react-native/react-native-interface.js
flow/

[options]
module.system=haste

esproposal.class_static_fields=enable
esproposal.class_instance_fields=enable

experimental.strict_type_args=true

munge_underscores=true

module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub'
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'

suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FixMe

suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(30\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(30\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy

unsafe.enable_getters_and_setters=true

[version]
^0.30.0


================================================
FILE: .gitignore
================================================
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
/node_modules
/projectFilesBackup1
.idea
/projectFilesBackup

================================================
FILE: .vscode/launchReactNative.js
================================================
// This file is automatically generated by vscode-react-native@0.1.6
// Please do not modify it manually. All changes will be lost.
try {
    var path = require("path");
    var Launcher = require("/Users/wukewei/.vscode/extensions/vsmobile.vscode-react-native-0.1.6/out/debugger/launcher.js").Launcher;
    new Launcher(path.resolve(__dirname, "..")).launch();
} catch (e) {
    throw new Error("Unable to launch application. Try deleting .vscode/launchReactNative.js and restarting vscode.");
}

================================================
FILE: .vscode/settings.json
================================================
// 将设置放入此文件中以覆盖默认值和用户设置。
{
}

================================================
FILE: .vscode/typings/react/react-addons-create-fragment.d.ts
================================================
// Type definitions for React v0.14 (react-addons-create-fragment)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    namespace __Addons {
        export function createFragment(object: { [key: string]: ReactNode }): ReactFragment;
    }
}

declare module "react-addons-create-fragment" {
    export = __React.__Addons.createFragment;
}


================================================
FILE: .vscode/typings/react/react-addons-css-transition-group.d.ts
================================================
// Type definitions for React v0.14 (react-addons-css-transition-group)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />
/// <reference path="react-addons-transition-group.d.ts" />

declare namespace __React {
    interface CSSTransitionGroupTransitionName {
        enter: string;
        enterActive?: string;
        leave: string;
        leaveActive?: string;
        appear?: string;
        appearActive?: string;
    }

    interface CSSTransitionGroupProps extends TransitionGroupProps {
        transitionName: string | CSSTransitionGroupTransitionName;
        transitionAppear?: boolean;
        transitionAppearTimeout?: number;
        transitionEnter?: boolean;
        transitionEnterTimeout?: number;
        transitionLeave?: boolean;
        transitionLeaveTimeout?: number;
    }

    type CSSTransitionGroup = ComponentClass<CSSTransitionGroupProps>;

    namespace __Addons {
        export var CSSTransitionGroup: __React.CSSTransitionGroup;
    }
}

declare module "react-addons-css-transition-group" {
    var CSSTransitionGroup: __React.CSSTransitionGroup;
    type CSSTransitionGroup = __React.CSSTransitionGroup;
    export = CSSTransitionGroup;
}


================================================
FILE: .vscode/typings/react/react-addons-linked-state-mixin.d.ts
================================================
// Type definitions for React v0.14 (react-addons-linked-state-mixin)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    interface ReactLink<T> {
        value: T;
        requestChange(newValue: T): void;
    }

    interface LinkedStateMixin extends Mixin<any, any> {
        linkState<T>(key: string): ReactLink<T>;
    }

    interface HTMLAttributes {
        checkedLink?: ReactLink<boolean>;
        valueLink?: ReactLink<boolean | string | number>;
    }

    namespace __Addons {
        export var LinkedStateMixin: LinkedStateMixin;
    }
}

declare module "react-addons-linked-state-mixin" {
    var LinkedStateMixin: __React.LinkedStateMixin;
    type LinkedStateMixin = __React.LinkedStateMixin;
    export = LinkedStateMixin;
}


================================================
FILE: .vscode/typings/react/react-addons-perf.d.ts
================================================
// Type definitions for React v0.14 (react-addons-perf)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    interface ComponentPerfContext {
        current: string;
        owner: string;
    }

    interface NumericPerfContext {
        [key: string]: number;
    }

    interface Measurements {
        exclusive: NumericPerfContext;
        inclusive: NumericPerfContext;
        render: NumericPerfContext;
        counts: NumericPerfContext;
        writes: NumericPerfContext;
        displayNames: {
            [key: string]: ComponentPerfContext;
        };
        totalTime: number;
    }

    namespace __Addons {
        namespace Perf {
            export function start(): void;
            export function stop(): void;
            export function printInclusive(measurements: Measurements[]): void;
            export function printExclusive(measurements: Measurements[]): void;
            export function printWasted(measurements: Measurements[]): void;
            export function printDOM(measurements: Measurements[]): void;
            export function getLastMeasurements(): Measurements[];
        }
    }
}

declare module "react-addons-perf" {
    import Perf = __React.__Addons.Perf;
    export = Perf;
}


================================================
FILE: .vscode/typings/react/react-addons-pure-render-mixin.d.ts
================================================
// Type definitions for React v0.14 (react-addons-pure-render-mixin)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    interface PureRenderMixin extends Mixin<any, any> {}

    namespace __Addons {
        export var PureRenderMixin: PureRenderMixin;
    }
}

declare module "react-addons-pure-render-mixin" {
    var PureRenderMixin: __React.PureRenderMixin;
    type PureRenderMixin = __React.PureRenderMixin;
    export = PureRenderMixin;
}


================================================
FILE: .vscode/typings/react/react-addons-test-utils.d.ts
================================================
// Type definitions for React v0.14 (react-addons-test-utils)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    interface SyntheticEventData {
        altKey?: boolean;
        button?: number;
        buttons?: number;
        clientX?: number;
        clientY?: number;
        changedTouches?: TouchList;
        charCode?: boolean;
        clipboardData?: DataTransfer;
        ctrlKey?: boolean;
        deltaMode?: number;
        deltaX?: number;
        deltaY?: number;
        deltaZ?: number;
        detail?: number;
        getModifierState?(key: string): boolean;
        key?: string;
        keyCode?: number;
        locale?: string;
        location?: number;
        metaKey?: boolean;
        pageX?: number;
        pageY?: number;
        relatedTarget?: EventTarget;
        repeat?: boolean;
        screenX?: number;
        screenY?: number;
        shiftKey?: boolean;
        targetTouches?: TouchList;
        touches?: TouchList;
        view?: AbstractView;
        which?: number;
    }

    interface EventSimulator {
        (element: Element, eventData?: SyntheticEventData): void;
        (component: Component<any, any>, eventData?: SyntheticEventData): void;
    }

    interface MockedComponentClass {
        new(): any;
    }

    class ShallowRenderer {
        getRenderOutput<E extends ReactElement<any>>(): E;
        getRenderOutput(): ReactElement<any>;
        render(element: ReactElement<any>, context?: any): void;
        unmount(): void;
    }

    namespace __Addons {
        namespace TestUtils {
            namespace Simulate {
                export var blur: EventSimulator;
                export var change: EventSimulator;
                export var click: EventSimulator;
                export var cut: EventSimulator;
                export var doubleClick: EventSimulator;
                export var drag: EventSimulator;
                export var dragEnd: EventSimulator;
                export var dragEnter: EventSimulator;
                export var dragExit: EventSimulator;
                export var dragLeave: EventSimulator;
                export var dragOver: EventSimulator;
                export var dragStart: EventSimulator;
                export var drop: EventSimulator;
                export var focus: EventSimulator;
                export var input: EventSimulator;
                export var keyDown: EventSimulator;
                export var keyPress: EventSimulator;
                export var keyUp: EventSimulator;
                export var mouseDown: EventSimulator;
                export var mouseEnter: EventSimulator;
                export var mouseLeave: EventSimulator;
                export var mouseMove: EventSimulator;
                export var mouseOut: EventSimulator;
                export var mouseOver: EventSimulator;
                export var mouseUp: EventSimulator;
                export var paste: EventSimulator;
                export var scroll: EventSimulator;
                export var submit: EventSimulator;
                export var touchCancel: EventSimulator;
                export var touchEnd: EventSimulator;
                export var touchMove: EventSimulator;
                export var touchStart: EventSimulator;
                export var wheel: EventSimulator;
            }

            export function renderIntoDocument(
                element: DOMElement<any>): Element;
            export function renderIntoDocument<P>(
                element: ReactElement<P>): Component<P, any>;
            export function renderIntoDocument<C extends Component<any, any>>(
                element: ReactElement<any>): C;

            export function mockComponent(
                mocked: MockedComponentClass, mockTagName?: string): typeof TestUtils;

            export function isElementOfType(
                element: ReactElement<any>, type: ReactType): boolean;
            export function isDOMComponent(instance: ReactInstance): boolean;
            export function isCompositeComponent(instance: ReactInstance): boolean;
            export function isCompositeComponentWithType(
                instance: ReactInstance,
                type: ComponentClass<any>): boolean;

            export function findAllInRenderedTree(
                root: Component<any, any>,
                fn: (i: ReactInstance) => boolean): ReactInstance[];

            export function scryRenderedDOMComponentsWithClass(
                root: Component<any, any>,
                className: string): Element[];
            export function findRenderedDOMComponentWithClass(
                root: Component<any, any>,
                className: string): Element;

            export function scryRenderedDOMComponentsWithTag(
                root: Component<any, any>,
                tagName: string): Element[];
            export function findRenderedDOMComponentWithTag(
                root: Component<any, any>,
                tagName: string): Element;

            export function scryRenderedComponentsWithType<P>(
                root: Component<any, any>,
                type: ComponentClass<P>): Component<P, {}>[];
            export function scryRenderedComponentsWithType<C extends Component<any, any>>(
                root: Component<any, any>,
                type: ComponentClass<any>): C[];

            export function findRenderedComponentWithType<P>(
                root: Component<any, any>,
                type: ComponentClass<P>): Component<P, {}>;
            export function findRenderedComponentWithType<C extends Component<any, any>>(
                root: Component<any, any>,
                type: ComponentClass<any>): C;

            export function createRenderer(): ShallowRenderer;
        }
    }
}

declare module "react-addons-test-utils" {
    import TestUtils = __React.__Addons.TestUtils;
    export = TestUtils;
}


================================================
FILE: .vscode/typings/react/react-addons-transition-group.d.ts
================================================
// Type definitions for React v0.14 (react-addons-transition-group)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {

    interface TransitionGroupProps {
        component?: ReactType;
        childFactory?: (child: ReactElement<any>) => ReactElement<any>;
    }

    type TransitionGroup = ComponentClass<TransitionGroupProps>;

    namespace __Addons {
        export var TransitionGroup: __React.TransitionGroup;
    }
}

declare module "react-addons-transition-group" {
    var TransitionGroup: __React.TransitionGroup;
    type TransitionGroup = __React.TransitionGroup;
    export = TransitionGroup;
}


================================================
FILE: .vscode/typings/react/react-addons-update.d.ts
================================================
// Type definitions for React v0.14 (react-addons-update)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    interface UpdateSpecCommand {
        $set?: any;
        $merge?: {};
        $apply?(value: any): any;
    }

    interface UpdateSpecPath {
        [key: string]: UpdateSpec;
    }

    type UpdateSpec = UpdateSpecCommand | UpdateSpecPath;

    interface UpdateArraySpec extends UpdateSpecCommand {
        $push?: any[];
        $unshift?: any[];
        $splice?: any[][];
    }

    namespace __Addons {
        export function update(value: any[], spec: UpdateArraySpec): any[];
        export function update(value: {}, spec: UpdateSpec): any;
    }
}

declare module "react-addons-update" {
    export = __React.__Addons.update;
}


================================================
FILE: .vscode/typings/react/react-dom.d.ts
================================================
// Type definitions for React v0.14 (react-dom)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />

declare namespace __React {
    namespace __DOM {
        function findDOMNode<E extends Element>(instance: ReactInstance): E;
        function findDOMNode(instance: ReactInstance): Element;

        function render<P>(
            element: DOMElement<P>,
            container: Element,
            callback?: (element: Element) => any): Element;
        function render<P, S>(
            element: ClassicElement<P>,
            container: Element,
            callback?: (component: ClassicComponent<P, S>) => any): ClassicComponent<P, S>;
        function render<P, S>(
            element: ReactElement<P>,
            container: Element,
            callback?: (component: Component<P, S>) => any): Component<P, S>;

        function unmountComponentAtNode(container: Element): boolean;

        var version: string;

        function unstable_batchedUpdates<A, B>(callback: (a: A, b: B) => any, a: A, b: B): void;
        function unstable_batchedUpdates<A>(callback: (a: A) => any, a: A): void;
        function unstable_batchedUpdates(callback: () => any): void;

        function unstable_renderSubtreeIntoContainer<P>(
            parentComponent: Component<any, any>,
            nextElement: DOMElement<P>,
            container: Element,
            callback?: (element: Element) => any): Element;
        function unstable_renderSubtreeIntoContainer<P, S>(
            parentComponent: Component<any, any>,
            nextElement: ClassicElement<P>,
            container: Element,
            callback?: (component: ClassicComponent<P, S>) => any): ClassicComponent<P, S>;
        function unstable_renderSubtreeIntoContainer<P, S>(
            parentComponent: Component<any, any>,
            nextElement: ReactElement<P>,
            container: Element,
            callback?: (component: Component<P, S>) => any): Component<P, S>;
    }

    namespace __DOMServer {
        function renderToString(element: ReactElement<any>): string;
        function renderToStaticMarkup(element: ReactElement<any>): string;
        var version: string;
    }
}

declare module "react-dom" {
    import DOM = __React.__DOM;
    export = DOM;
}

declare module "react-dom/server" {
    import DOMServer = __React.__DOMServer;
    export = DOMServer;
}


================================================
FILE: .vscode/typings/react/react-global.d.ts
================================================
// Type definitions for React v0.14 (namespace)
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

/// <reference path="react.d.ts" />
/// <reference path="react-dom.d.ts" />
/// <reference path="react-addons-create-fragment.d.ts" />
/// <reference path="react-addons-css-transition-group.d.ts" />
/// <reference path="react-addons-linked-state-mixin.d.ts" />
/// <reference path="react-addons-perf.d.ts" />
/// <reference path="react-addons-pure-render-mixin.d.ts" />
/// <reference path="react-addons-test-utils.d.ts" />
/// <reference path="react-addons-transition-group.d.ts" />
/// <reference path="react-addons-update.d.ts" />

import React = __React;
import ReactDOM = __React.__DOM;

declare namespace __React {
    export import addons = __React.__Addons;
}


================================================
FILE: .vscode/typings/react/react.d.ts
================================================
// Type definitions for React v0.14
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

declare namespace __React {

    //
    // React Elements
    // ----------------------------------------------------------------------

    type ReactType = string | ComponentClass<any> | StatelessComponent<any>;

    interface ReactElement<P extends Props<any>> {
        type: string | ComponentClass<P> | StatelessComponent<P>;
        props: P;
        key: string | number;
        ref: string | ((component: Component<P, any> | Element) => any);
    }

    interface ClassicElement<P> extends ReactElement<P> {
        type: ClassicComponentClass<P>;
        ref: string | ((component: ClassicComponent<P, any>) => any);
    }

    interface DOMElement<P extends Props<Element>> extends ReactElement<P> {
        type: string;
        ref: string | ((element: Element) => any);
    }

    interface ReactHTMLElement extends DOMElement<HTMLProps<HTMLElement>> {
        ref: string | ((element: HTMLElement) => any);
    }

    interface ReactSVGElement extends DOMElement<SVGProps> {
        ref: string | ((element: SVGElement) => any);
    }

    //
    // Factories
    // ----------------------------------------------------------------------

    interface Factory<P> {
        (props?: P, ...children: ReactNode[]): ReactElement<P>;
    }

    interface ClassicFactory<P> extends Factory<P> {
        (props?: P, ...children: ReactNode[]): ClassicElement<P>;
    }

    interface DOMFactory<P extends Props<Element>> extends Factory<P> {
        (props?: P, ...children: ReactNode[]): DOMElement<P>;
    }

    type HTMLFactory = DOMFactory<HTMLProps<HTMLElement>>;
    type SVGFactory = DOMFactory<SVGProps>;

    //
    // React Nodes
    // http://facebook.github.io/react/docs/glossary.html
    // ----------------------------------------------------------------------

    type ReactText = string | number;
    type ReactChild = ReactElement<any> | ReactText;

    // Should be Array<ReactNode> but type aliases cannot be recursive
    type ReactFragment = {} | Array<ReactChild | any[] | boolean>;
    type ReactNode = ReactChild | ReactFragment | boolean;

    //
    // Top Level API
    // ----------------------------------------------------------------------

    function createClass<P, S>(spec: ComponentSpec<P, S>): ClassicComponentClass<P>;

    function createFactory<P>(type: string): DOMFactory<P>;
    function createFactory<P>(type: ClassicComponentClass<P>): ClassicFactory<P>;
    function createFactory<P>(type: ComponentClass<P> | StatelessComponent<P>): Factory<P>;

    function createElement<P>(
        type: string,
        props?: P,
        ...children: ReactNode[]): DOMElement<P>;
    function createElement<P>(
        type: ClassicComponentClass<P>,
        props?: P,
        ...children: ReactNode[]): ClassicElement<P>;
    function createElement<P>(
        type: ComponentClass<P> | StatelessComponent<P>,
        props?: P,
        ...children: ReactNode[]): ReactElement<P>;

    function cloneElement<P>(
        element: DOMElement<P>,
        props?: P,
        ...children: ReactNode[]): DOMElement<P>;
    function cloneElement<P>(
        element: ClassicElement<P>,
        props?: P,
        ...children: ReactNode[]): ClassicElement<P>;
    function cloneElement<P>(
        element: ReactElement<P>,
        props?: P,
        ...children: ReactNode[]): ReactElement<P>;

    function isValidElement(object: {}): boolean;

    var DOM: ReactDOM;
    var PropTypes: ReactPropTypes;
    var Children: ReactChildren;

    //
    // Component API
    // ----------------------------------------------------------------------

    type ReactInstance = Component<any, any> | Element;

    // Base component for plain JS classes
    class Component<P, S> implements ComponentLifecycle<P, S> {
        constructor(props?: P, context?: any);
        setState(f: (prevState: S, props: P) => S, callback?: () => any): void;
        setState(state: S, callback?: () => any): void;
        forceUpdate(callBack?: () => any): void;
        render(): JSX.Element;
        props: P;
        state: S;
        context: {};
        refs: {
            [key: string]: ReactInstance
        };
    }

    interface ClassicComponent<P, S> extends Component<P, S> {
        replaceState(nextState: S, callback?: () => any): void;
        isMounted(): boolean;
        getInitialState?(): S;
    }

    interface ChildContextProvider<CC> {
        getChildContext(): CC;
    }

    //
    // Class Interfaces
    // ----------------------------------------------------------------------

    interface StatelessComponent<P> {
        (props?: P, context?: any): ReactElement<any>;
        propTypes?: ValidationMap<P>;
        contextTypes?: ValidationMap<any>;
        defaultProps?: P;
        displayName?: string;
    }

    interface ComponentClass<P> {
        new(props?: P, context?: any): Component<P, any>;
        propTypes?: ValidationMap<P>;
        contextTypes?: ValidationMap<any>;
        childContextTypes?: ValidationMap<any>;
        defaultProps?: P;
    }

    interface ClassicComponentClass<P> extends ComponentClass<P> {
        new(props?: P, context?: any): ClassicComponent<P, any>;
        getDefaultProps?(): P;
        displayName?: string;
    }

    //
    // Component Specs and Lifecycle
    // ----------------------------------------------------------------------

    interface ComponentLifecycle<P, S> {
        componentWillMount?(): void;
        componentDidMount?(): void;
        componentWillReceiveProps?(nextProps: P, nextContext: any): void;
        shouldComponentUpdate?(nextProps: P, nextState: S, nextContext: any): boolean;
        componentWillUpdate?(nextProps: P, nextState: S, nextContext: any): void;
        componentDidUpdate?(prevProps: P, prevState: S, prevContext: any): void;
        componentWillUnmount?(): void;
    }

    interface Mixin<P, S> extends ComponentLifecycle<P, S> {
        mixins?: Mixin<P, S>;
        statics?: {
            [key: string]: any;
        };

        displayName?: string;
        propTypes?: ValidationMap<any>;
        contextTypes?: ValidationMap<any>;
        childContextTypes?: ValidationMap<any>;

        getDefaultProps?(): P;
        getInitialState?(): S;
    }

    interface ComponentSpec<P, S> extends Mixin<P, S> {
        render(): ReactElement<any>;

        [propertyName: string]: any;
    }

    //
    // Event System
    // ----------------------------------------------------------------------

    interface SyntheticEvent {
        bubbles: boolean;
        cancelable: boolean;
        currentTarget: EventTarget;
        defaultPrevented: boolean;
        eventPhase: number;
        isTrusted: boolean;
        nativeEvent: Event;
        preventDefault(): void;
        stopPropagation(): void;
        target: EventTarget;
        timeStamp: Date;
        type: string;
    }

    interface ClipboardEvent extends SyntheticEvent {
        clipboardData: DataTransfer;
    }

    interface CompositionEvent extends SyntheticEvent {
        data: string;
    }

    interface DragEvent extends SyntheticEvent {
        dataTransfer: DataTransfer;
    }

    interface FocusEvent extends SyntheticEvent {
        relatedTarget: EventTarget;
    }

    interface FormEvent extends SyntheticEvent {
    }

    interface KeyboardEvent extends SyntheticEvent {
        altKey: boolean;
        charCode: number;
        ctrlKey: boolean;
        getModifierState(key: string): boolean;
        key: string;
        keyCode: number;
        locale: string;
        location: number;
        metaKey: boolean;
        repeat: boolean;
        shiftKey: boolean;
        which: number;
    }

    interface MouseEvent extends SyntheticEvent {
        altKey: boolean;
        button: number;
        buttons: number;
        clientX: number;
        clientY: number;
        ctrlKey: boolean;
        getModifierState(key: string): boolean;
        metaKey: boolean;
        pageX: number;
        pageY: number;
        relatedTarget: EventTarget;
        screenX: number;
        screenY: number;
        shiftKey: boolean;
    }

    interface TouchEvent extends SyntheticEvent {
        altKey: boolean;
        changedTouches: TouchList;
        ctrlKey: boolean;
        getModifierState(key: string): boolean;
        metaKey: boolean;
        shiftKey: boolean;
        targetTouches: TouchList;
        touches: TouchList;
    }

    interface UIEvent extends SyntheticEvent {
        detail: number;
        view: AbstractView;
    }

    interface WheelEvent extends SyntheticEvent {
        deltaMode: number;
        deltaX: number;
        deltaY: number;
        deltaZ: number;
    }

    //
    // Event Handler Types
    // ----------------------------------------------------------------------

    interface EventHandler<E extends SyntheticEvent> {
        (event: E): void;
    }

    type ReactEventHandler = EventHandler<SyntheticEvent>;

    type ClipboardEventHandler = EventHandler<ClipboardEvent>;
    type CompositionEventHandler = EventHandler<CompositionEvent>;
    type DragEventHandler = EventHandler<DragEvent>;
    type FocusEventHandler = EventHandler<FocusEvent>;
    type FormEventHandler = EventHandler<FormEvent>;
    type KeyboardEventHandler = EventHandler<KeyboardEvent>;
    type MouseEventHandler = EventHandler<MouseEvent>;
    type TouchEventHandler = EventHandler<TouchEvent>;
    type UIEventHandler = EventHandler<UIEvent>;
    type WheelEventHandler = EventHandler<WheelEvent>;

    //
    // Props / DOM Attributes
    // ----------------------------------------------------------------------

    interface Props<T> {
        children?: ReactNode;
        key?: string | number;
        ref?: string | ((component: T) => any);
    }

    interface HTMLProps<T> extends HTMLAttributes, Props<T> {
    }

    interface SVGProps extends SVGAttributes, Props<SVGElement> {
    }

    interface DOMAttributes {
        dangerouslySetInnerHTML?: {
            __html: string;
        };

        // Clipboard Events
        onCopy?: ClipboardEventHandler;
        onCut?: ClipboardEventHandler;
        onPaste?: ClipboardEventHandler;

        // Composition Events
        onCompositionEnd?: CompositionEventHandler;
        onCompositionStart?: CompositionEventHandler;
        onCompositionUpdate?: CompositionEventHandler;

        // Focus Events
        onFocus?: FocusEventHandler;
        onBlur?: FocusEventHandler;

        // Form Events
        onChange?: FormEventHandler;
        onInput?: FormEventHandler;
        onSubmit?: FormEventHandler;

        // Image Events
        onLoad?: ReactEventHandler;
        onError?: ReactEventHandler; // also a Media Event

        // Keyboard Events
        onKeyDown?: KeyboardEventHandler;
        onKeyPress?: KeyboardEventHandler;
        onKeyUp?: KeyboardEventHandler;

        // Media Events
        onAbort?: ReactEventHandler;
        onCanPlay?: ReactEventHandler;
        onCanPlayThrough?: ReactEventHandler;
        onDurationChange?: ReactEventHandler;
        onEmptied?: ReactEventHandler;
        onEncrypted?: ReactEventHandler;
        onEnded?: ReactEventHandler;
        onLoadedData?: ReactEventHandler;
        onLoadedMetadata?: ReactEventHandler;
        onLoadStart?: ReactEventHandler;
        onPause?: ReactEventHandler;
        onPlay?: ReactEventHandler;
        onPlaying?: ReactEventHandler;
        onProgress?: ReactEventHandler;
        onRateChange?: ReactEventHandler;
        onSeeked?: ReactEventHandler;
        onSeeking?: ReactEventHandler;
        onStalled?: ReactEventHandler;
        onSuspend?: ReactEventHandler;
        onTimeUpdate?: ReactEventHandler;
        onVolumeChange?: ReactEventHandler;
        onWaiting?: ReactEventHandler;

        // MouseEvents
        onClick?: MouseEventHandler;
        onContextMenu?: MouseEventHandler;
        onDoubleClick?: MouseEventHandler;
        onDrag?: DragEventHandler;
        onDragEnd?: DragEventHandler;
        onDragEnter?: DragEventHandler;
        onDragExit?: DragEventHandler;
        onDragLeave?: DragEventHandler;
        onDragOver?: DragEventHandler;
        onDragStart?: DragEventHandler;
        onDrop?: DragEventHandler;
        onMouseDown?: MouseEventHandler;
        onMouseEnter?: MouseEventHandler;
        onMouseLeave?: MouseEventHandler;
        onMouseMove?: MouseEventHandler;
        onMouseOut?: MouseEventHandler;
        onMouseOver?: MouseEventHandler;
        onMouseUp?: MouseEventHandler;

        // Selection Events
        onSelect?: ReactEventHandler;

        // Touch Events
        onTouchCancel?: TouchEventHandler;
        onTouchEnd?: TouchEventHandler;
        onTouchMove?: TouchEventHandler;
        onTouchStart?: TouchEventHandler;

        // UI Events
        onScroll?: UIEventHandler;

        // Wheel Events
        onWheel?: WheelEventHandler;
    }

    // This interface is not complete. Only properties accepting
    // unitless numbers are listed here (see CSSProperty.js in React)
    interface CSSProperties {
        boxFlex?: number;
        boxFlexGroup?: number;
        columnCount?: number;
        flex?: number | string;
        flexGrow?: number;
        flexShrink?: number;
        fontWeight?: number | string;
        lineClamp?: number;
        lineHeight?: number | string;
        opacity?: number;
        order?: number;
        orphans?: number;
        widows?: number;
        zIndex?: number;
        zoom?: number;

        fontSize?: number | string;

        // SVG-related properties
        fillOpacity?: number;
        strokeOpacity?: number;
        strokeWidth?: number;

        // Remaining properties auto-extracted from http://docs.webplatform.org.
        // License: http://docs.webplatform.org/wiki/Template:CC-by-3.0
        /**
         * Aligns a flex container's lines within the flex container when there is extra space in the cross-axis, similar to how justify-content aligns individual items within the main-axis.
         */
        alignContent?: any;

        /**
         * Sets the default alignment in the cross axis for all of the flex container's items, including anonymous flex items, similarly to how justify-content aligns items along the main axis.
         */
        alignItems?: any;

        /**
         * Allows the default alignment to be overridden for individual flex items.
         */
        alignSelf?: any;

        /**
         * This property allows precise alignment of elements, such as graphics, that do not have a baseline-table or lack the desired baseline in their baseline-table. With the alignment-adjust property, the position of the baseline identified by the alignment-baseline can be explicitly determined. It also determines precisely the alignment point for each glyph within a textual element.
         */
        alignmentAdjust?: any;

        alignmentBaseline?: any;

        /**
         * Defines a length of time to elapse before an animation starts, allowing an animation to begin execution some time after it is applied.
         */
        animationDelay?: any;

        /**
         * Defines whether an animation should run in reverse on some or all cycles.
         */
        animationDirection?: any;

        /**
         * Specifies how many times an animation cycle should play.
         */
        animationIterationCount?: any;

        /**
         * Defines the list of animations that apply to the element.
         */
        animationName?: any;

        /**
         * Defines whether an animation is running or paused.
         */
        animationPlayState?: any;

        /**
         * Allows changing the style of any element to platform-based interface elements or vice versa.
         */
        appearance?: any;

        /**
         * Determines whether or not the “back” side of a transformed element is visible when facing the viewer.
         */
        backfaceVisibility?: any;

        /**
         * This property describes how the element's background images should blend with each other and the element's background color.
         * The value is a list of blend modes that corresponds to each background image. Each element in the list will apply to the corresponding element of background-image. If a property doesn’t have enough comma-separated values to match the number of layers, the UA must calculate its used value by repeating the list of values until there are enough.
         */
        backgroundBlendMode?: any;

        backgroundColor?: any;
        
        backgroundComposite?: any;

        /**
         * Applies one or more background images to an element. These can be any valid CSS image, including url() paths to image files or CSS gradients.
         */
        backgroundImage?: any;

        /**
         * Specifies what the background-position property is relative to.
         */
        backgroundOrigin?: any;

        /**
         * Sets the horizontal position of a background image.
         */
        backgroundPositionX?: any;

        /**
         * Background-repeat defines if and how background images will be repeated after they have been sized and positioned
         */
        backgroundRepeat?: any;

        /**
         * Obsolete - spec retired, not implemented.
         */
        baselineShift?: any;

        /**
         * Non standard. Sets or retrieves the location of the Dynamic HTML (DHTML) behavior.
         */
        behavior?: any;

        /**
         * Shorthand property that defines the different properties of all four sides of an element's border in a single declaration. It can be used to set border-width, border-style and border-color, or a subset of these.
         */
        border?: any;

        /**
         * Defines the shape of the border of the bottom-left corner.
         */
        borderBottomLeftRadius?: any;

        /**
         * Defines the shape of the border of the bottom-right corner.
         */
        borderBottomRightRadius?: any;

        /**
         * Sets the width of an element's bottom border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width.
         */
        borderBottomWidth?: any;

        /**
         * Border-collapse can be used for collapsing the borders between table cells
         */
        borderCollapse?: any;

        /**
         * The CSS border-color property sets the color of an element's four borders. This property can have from one to four values, made up of the elementary properties:     •       border-top-color
         *      •       border-right-color
         *      •       border-bottom-color
         *      •       border-left-color The default color is the currentColor of each of these values.
         * If you provide one value, it sets the color for the element. Two values set the horizontal and vertical values, respectively. Providing three values sets the top, vertical, and bottom values, in that order. Four values set all for sides: top, right, bottom, and left, in that order.
         */
        borderColor?: any;

        /**
         * Specifies different corner clipping effects, such as scoop (inner curves), bevel (straight cuts) or notch (cut-off rectangles). Works along with border-radius to specify the size of each corner effect.
         */
        borderCornerShape?: any;

        /**
         * The property border-image-source is used to set the image to be used instead of the border style. If this is set to none the border-style is used instead.
         */
        borderImageSource?: any;

        /**
         * The border-image-width CSS property defines the offset to use for dividing the border image in nine parts, the top-left corner, central top edge, top-right-corner, central right edge, bottom-right corner, central bottom edge, bottom-left corner, and central right edge. They represent inward distance from the top, right, bottom, and left edges.
         */
        borderImageWidth?: any;

        /**
         * Shorthand property that defines the border-width, border-style and border-color of an element's left border in a single declaration. Note that you can use the corresponding longhand properties to set specific individual properties of the left border — border-left-width, border-left-style and border-left-color.
         */
        borderLeft?: any;

        /**
         * The CSS border-left-color property sets the color of an element's left border. This page explains the border-left-color value, but often you will find it more convenient to fix the border's left color as part of a shorthand set, either border-left or border-color.
         * Colors can be defined several ways. For more information, see Usage.
         */
        borderLeftColor?: any;

        /**
         * Sets the style of an element's left border. To set all four borders, use the shorthand property, border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style.
         */
        borderLeftStyle?: any;

        /**
         * Sets the width of an element's left border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width.
         */
        borderLeftWidth?: any;

        /**
         * Shorthand property that defines the border-width, border-style and border-color of an element's right border in a single declaration. Note that you can use the corresponding longhand properties to set specific individual properties of the right border — border-right-width, border-right-style and border-right-color.
         */
        borderRight?: any;

        /**
         * Sets the color of an element's right border. This page explains the border-right-color value, but often you will find it more convenient to fix the border's right color as part of a shorthand set, either border-right or border-color.
         * Colors can be defined several ways. For more information, see Usage.
         */
        borderRightColor?: any;

        /**
         * Sets the style of an element's right border. To set all four borders, use the shorthand property, border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style.
         */
        borderRightStyle?: any;

        /**
         * Sets the width of an element's right border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width.
         */
        borderRightWidth?: any;

        /**
         * Specifies the distance between the borders of adjacent cells.
         */
        borderSpacing?: any;

        /**
         * Sets the style of an element's four borders. This property can have from one to four values. With only one value, the value will be applied to all four borders; otherwise, this works as a shorthand property for each of border-top-style, border-right-style, border-bottom-style, border-left-style, where each border style may be assigned a separate value.
         */
        borderStyle?: any;

        /**
         * Shorthand property that defines the border-width, border-style and border-color of an element's top border in a single declaration. Note that you can use the corresponding longhand properties to set specific individual properties of the top border — border-top-width, border-top-style and border-top-color.
         */
        borderTop?: any;

        /**
         * Sets the color of an element's top border. This page explains the border-top-color value, but often you will find it more convenient to fix the border's top color as part of a shorthand set, either border-top or border-color.
         * Colors can be defined several ways. For more information, see Usage.
         */
        borderTopColor?: any;

        /**
         * Sets the rounding of the top-left corner of the element.
         */
        borderTopLeftRadius?: any;

        /**
         * Sets the rounding of the top-right corner of the element.
         */
        borderTopRightRadius?: any;

        /**
         * Sets the style of an element's top border. To set all four borders, use the shorthand property, border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style.
         */
        borderTopStyle?: any;

        /**
         * Sets the width of an element's top border. To set all four borders, use the border-width shorthand property which sets the values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width.
         */
        borderTopWidth?: any;

        /**
         * Sets the width of an element's four borders. This property can have from one to four values. This is a shorthand property for setting values simultaneously for border-top-width, border-right-width, border-bottom-width, and border-left-width.
         */
        borderWidth?: any;

        /**
         * Obsolete.
         */
        boxAlign?: any;

        /**
         * Breaks a box into fragments creating new borders, padding and repeating backgrounds or lets it stay as a continuous box on a page break, column break, or, for inline elements, at a line break.
         */
        boxDecorationBreak?: any;

        /**
         * Deprecated
         */
        boxDirection?: any;

        /**
         * Do not use. This property has been replaced by the flex-wrap property.
         * Gets or sets a value that specifies the direction to add successive rows or columns when the value of box-lines is set to multiple.
         */
        boxLineProgression?: any;

        /**
         * Do not use. This property has been replaced by the flex-wrap property.
         * Gets or sets a value that specifies whether child elements wrap onto multiple lines or columns based on the space available in the object.
         */
        boxLines?: any;

        /**
         * Do not use. This property has been replaced by flex-order.
         * Specifies the ordinal group that a child element of the object belongs to. This ordinal value identifies the display order (along the axis defined by the box-orient property) for the group.
         */
        boxOrdinalGroup?: any;

        /**
         * The CSS break-after property allows you to force a break on multi-column layouts. More specifically, it allows you to force a break after an element. It allows you to determine if a break should occur, and what type of break it should be. The break-after CSS property describes how the page, column or region break behaves after the generated box. If there is no generated box, the property is ignored.
         */
        breakAfter?: any;

        /**
         * Control page/column/region breaks that fall above a block of content
         */
        breakBefore?: any;

        /**
         * Control page/column/region breaks that fall within a block of content
         */
        breakInside?: any;

        /**
         * The clear CSS property specifies if an element can be positioned next to or must be positioned below the floating elements that precede it in the markup.
         */
        clear?: any;

        /**
         * Deprecated; see clip-path.
         * Lets you specify the dimensions of an absolutely positioned element that should be visible, and the element is clipped into this shape, and displayed.
         */
        clip?: any;

        /**
         * Clipping crops an graphic, so that only a portion of the graphic is rendered, or filled. This clip-rule property, when used with the clip-path property, defines which clip rule, or algorithm, to use when filling the different parts of a graphics.
         */
        clipRule?: any;

        /**
         * The color property sets the color of an element's foreground content (usually text), accepting any standard CSS color from keywords and hex values to RGB(a) and HSL(a).
         */
        color?: any;

        /**
         * Specifies how to fill columns (balanced or sequential).
         */
        columnFill?: any;

        /**
         * The column-gap property controls the width of the gap between columns in multi-column elements.
         */
        columnGap?: any;

        /**
         * Sets the width, style, and color of the rule between columns.
         */
        columnRule?: any;

        /**
         * Specifies the color of the rule between columns.
         */
        columnRuleColor?: any;

        /**
         * Specifies the width of the rule between columns.
         */
        columnRuleWidth?: any;

        /**
         * The column-span CSS property makes it possible for an element to span across all columns when its value is set to all. An element that spans more than one column is called a spanning element.
         */
        columnSpan?: any;

        /**
         * Specifies the width of columns in multi-column elements.
         */
        columnWidth?: any;

        /**
         * This property is a shorthand property for setting column-width and/or column-count.
         */
        columns?: any;

        /**
         * The counter-increment property accepts one or more names of counters (identifiers), each one optionally followed by an integer which specifies the value by which the counter should be incremented (e.g. if the value is 2, the counter increases by 2 each time it is invoked).
         */
        counterIncrement?: any;

        /**
         * The counter-reset property contains a list of one or more names of counters, each one optionally followed by an integer (otherwise, the integer defaults to 0.) Each time the given element is invoked, the counters specified by the property are set to the given integer.
         */
        counterReset?: any;

        /**
         * The cue property specifies sound files (known as an "auditory icon") to be played by speech media agents before and after presenting an element's content; if only one file is specified, it is played both before and after. The volume at which the file(s) should be played, relative to the volume of the main element, may also be specified. The icon files may also be set separately with the cue-before and cue-after properties.
         */
        cue?: any;

        /**
         * The cue-after property specifies a sound file (known as an "auditory icon") to be played by speech media agents after presenting an element's content; the volume at which the file should be played may also be specified. The shorthand property cue sets cue sounds for both before and after the element is presented.
         */
        cueAfter?: any;

        /**
         * The direction CSS property specifies the text direction/writing direction. The rtl is used for Hebrew or Arabic text, the ltr is for other languages.
         */
        direction?: any;

        /**
         * This property specifies the type of rendering box used for an element. It is a shorthand property for many other display properties.
         */
        display?: any;

        /**
         * The ‘fill’ property paints the interior of the given graphical element. The area to be painted consists of any areas inside the outline of the shape. To determine the inside of the shape, all subpaths are considered, and the interior is determined according to the rules associated with the current value of the ‘fill-rule’ property. The zero-width geometric outline of a shape is included in the area to be painted.
         */
        fill?: any;

        /**
         * The ‘fill-rule’ property indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape. For a simple, non-intersecting path, it is intuitively clear what region lies "inside"; however, for a more complex path, such as a path that intersects itself or where one subpath encloses another, the interpretation of "inside" is not so obvious.
         * The ‘fill-rule’ property provides two options for how the inside of a shape is determined:
         */
        fillRule?: any;

        /**
         * Applies various image processing effects. This property is largely unsupported. See Compatibility section for more information.
         */
        filter?: any;

        /**
         * Obsolete, do not use. This property has been renamed to align-items.
         * Specifies the alignment (perpendicular to the layout axis defined by the flex-direction property) of child elements of the object.
         */
        flexAlign?: any;

        /**
         * The flex-basis CSS property describes the initial main size of the flex item before any free space is distributed according to the flex factors described in the flex property (flex-grow and flex-shrink).
         */
        flexBasis?: any;

        /**
         * The flex-direction CSS property describes how flex items are placed in the flex container, by setting the direction of the flex container's main axis.
         */
        flexDirection?: any;

        /**
         * The flex-flow CSS property defines the flex container's main and cross axis. It is a shorthand property for the flex-direction and flex-wrap properties.
         */
        flexFlow?: any;

        /**
         * Do not use. This property has been renamed to align-self
         * Specifies the alignment (perpendicular to the layout axis defined by flex-direction) of child elements of the object.
         */
        flexItemAlign?: any;

        /**
         * Do not use. This property has been renamed to align-content.
         * Specifies how a flexbox's lines align within the flexbox when there is extra space along the axis that is perpendicular to the axis defined by the flex-direction property.
         */
        flexLinePack?: any;

        /**
         * Gets or sets a value that specifies the ordinal group that a flexbox element belongs to. This ordinal value identifies the display order for the group.
         */
        flexOrder?: any;

        /**
         * Elements which have the style float are floated horizontally. These elements can move as far to the left or right of the containing element. All elements after the floating element will flow around it, but elements before the floating element are not impacted. If several floating elements are placed after each other, they will float next to each other as long as there is room.
         */
        float?: any;

        /**
         * Flows content from a named flow (specified by a corresponding flow-into) through selected elements to form a dynamic chain of layout regions.
         */
        flowFrom?: any;

        /**
         * The font property is shorthand that allows you to do one of two things: you can either set up six of the most mature font properties in one line, or you can set one of a choice of keywords to adopt a system font setting.
         */
        font?: any;

        /**
         * The font-family property allows one or more font family names and/or generic family names to be specified for usage on the selected element(s)' text. The browser then goes through the list; for each character in the selection it applies the first font family that has an available glyph for that character.
         */
        fontFamily?: any;

        /**
         * The font-kerning property allows contextual adjustment of inter-glyph spacing, i.e. the spaces between the characters in text. This property controls <bold>metric kerning</bold> - that utilizes adjustment data contained in the font. Optical Kerning is not supported as yet.
         */
        fontKerning?: any;

        /**
         * The font-size-adjust property adjusts the font-size of the fallback fonts defined with font-family, so that the x-height is the same no matter what font is used. This preserves the readability of the text when fallback happens.
         */
        fontSizeAdjust?: any;

        /**
         * Allows you to expand or condense the widths for a normal, condensed, or expanded font face.
         */
        fontStretch?: any;

        /**
         * The font-style property allows normal, italic, or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face. Oblique faces can be simulated by artificially sloping the glyphs of the regular face.
         */
        fontStyle?: any;

        /**
         * This value specifies whether the user agent is allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces.
         */
        fontSynthesis?: any;

        /**
         * The font-variant property enables you to select the small-caps font within a font family.
         */
        fontVariant?: any;

        /**
         * Fonts can provide alternate glyphs in addition to default glyph for a character. This property provides control over the selection of these alternate glyphs.
         */
        fontVariantAlternates?: any;

        /**
         * Lays out one or more grid items bound by 4 grid lines. Shorthand for setting grid-column-start, grid-column-end, grid-row-start, and grid-row-end in a single declaration.
         */
        gridArea?: any;

        /**
         * Controls a grid item's placement in a grid area, particularly grid position and a grid span. Shorthand for setting grid-column-start and grid-column-end in a single declaration.
         */
        gridColumn?: any;

        /**
         * Controls a grid item's placement in a grid area as well as grid position and a grid span. The grid-column-end property (with grid-row-start, grid-row-end, and grid-column-start) determines a grid item's placement by specifying the grid lines of a grid item's grid area.
         */
        gridColumnEnd?: any;

        /**
         * Determines a grid item's placement by specifying the starting grid lines of a grid item's grid area . A grid item's placement in a grid area consists of a grid position and a grid span. See also ( grid-row-start, grid-row-end, and grid-column-end)
         */
        gridColumnStart?: any;

        /**
         * Gets or sets a value that indicates which row an element within a Grid should appear in. Shorthand for setting grid-row-start and grid-row-end in a single declaration.
         */
        gridRow?: any;

        /**
         * Determines a grid item’s placement by specifying the block-end. A grid item's placement in a grid area consists of a grid position and a grid span. The grid-row-end property (with grid-row-start, grid-column-start, and grid-column-end) determines a grid item's placement by specifying the grid lines of a grid item's grid area.
         */
        gridRowEnd?: any;

        /**
         * Specifies a row position based upon an integer location, string value, or desired row size.
         * css/properties/grid-row is used as short-hand for grid-row-position and grid-row-position
         */
        gridRowPosition?: any;

        gridRowSpan?: any;

        /**
         * Specifies named grid areas which are not associated with any particular grid item, but can be referenced from the grid-placement properties. The syntax of the grid-template-areas property also provides a visualization of the structure of the grid, making the overall layout of the grid container easier to understand.
         */
        gridTemplateAreas?: any;

        /**
         * Specifies (with grid-template-rows) the line names and track sizing functions of the grid. Each sizing function can be specified as a length, a percentage of the grid container’s size, a measurement of the contents occupying the column or row, or a fraction of the free space in the grid.
         */
        gridTemplateColumns?: any;

        /**
         * Specifies (with grid-template-columns) the line names and track sizing functions of the grid. Each sizing function can be specified as a length, a percentage of the grid container’s size, a measurement of the contents occupying the column or row, or a fraction of the free space in the grid.
         */
        gridTemplateRows?: any;

        /**
         * Sets the height of an element. The content area of the element height does not include the padding, border, and margin of the element.
         */
        height?: any;

        /**
         * Specifies the minimum number of characters in a hyphenated word
         */
        hyphenateLimitChars?: any;

        /**
         * Indicates the maximum number of successive hyphenated lines in an element. The ‘no-limit’ value means that there is no limit.
         */
        hyphenateLimitLines?: any;

        /**
         * Specifies the maximum amount of trailing whitespace (before justification) that may be left in a line before hyphenation is triggered to pull part of a word from the next line back up into the current one.
         */
        hyphenateLimitZone?: any;

        /**
         * Specifies whether or not words in a sentence can be split by the use of a manual or automatic hyphenation mechanism.
         */
        hyphens?: any;

        imeMode?: any;

        layoutGrid?: any;

        layoutGridChar?: any;

        layoutGridLine?: any;

        layoutGridMode?: any;

        layoutGridType?: any;

        /**
         * Sets the left edge of an element
         */
        left?: any;

        /**
         * The letter-spacing CSS property specifies the spacing behavior between text characters.
         */
        letterSpacing?: any;

        /**
         * Deprecated. Gets or sets line-breaking rules for text in selected languages such as Japanese, Chinese, and Korean.
         */
        lineBreak?: any;

        /**
         * Shorthand property that sets the list-style-type, list-style-position and list-style-image properties in one declaration.
         */
        listStyle?: any;

        /**
         * This property sets the image that will be used as the list item marker. When the image is available, it will replace the marker set with the 'list-style-type' marker. That also means that if the image is not available, it will show the style specified by list-style-property
         */
        listStyleImage?: any;

        /**
         * Specifies if the list-item markers should appear inside or outside the content flow.
         */
        listStylePosition?: any;

        /**
         * Specifies the type of list-item marker in a list.
         */
        listStyleType?: any;

        /**
         * The margin property is shorthand to allow you to set all four margins of an element at once. Its equivalent longhand properties are margin-top, margin-right, margin-bottom and margin-left. Negative values are also allowed.
         */
        margin?: any;

        /**
         * margin-bottom sets the bottom margin of an element.
         */
        marginBottom?: any;

        /**
         * margin-left sets the left margin of an element.
         */
        marginLeft?: any;

        /**
         * margin-right sets the right margin of an element.
         */
        marginRight?: any;

        /**
         * margin-top sets the top margin of an element.
         */
        marginTop?: any;

        /**
         * The marquee-direction determines the initial direction in which the marquee content moves.
         */
        marqueeDirection?: any;

        /**
         * The 'marquee-style' property determines a marquee's scrolling behavior.
         */
        marqueeStyle?: any;

        /**
         * This property is shorthand for setting mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-composite and mask-size. Omitted values are set to their original properties' initial values.
         */
        mask?: any;

        /**
         * This property is shorthand for setting mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, and mask-border-repeat. Omitted values are set to their original properties' initial values.
         */
        maskBorder?: any;

        /**
         * This property specifies how the images for the sides and the middle part of the mask image are scaled and tiled. The first keyword applies to the horizontal sides, the second one applies to the vertical ones. If the second keyword is absent, it is assumed to be the same as the first, similar to the CSS border-image-repeat property.
         */
        maskBorderRepeat?: any;

        /**
         * This property specifies inward offsets from the top, right, bottom, and left edges of the mask image, dividing it into nine regions: four corners, four edges, and a middle. The middle image part is discarded and treated as fully transparent black unless the fill keyword is present. The four values set the top, right, bottom and left offsets in that order, similar to the CSS border-image-slice property.
         */
        maskBorderSlice?: any;

        /**
         * Specifies an image to be used as a mask. An image that is empty, fails to download, is non-existent, or cannot be displayed is ignored and does not mask the element.
         */
        maskBorderSource?: any;

        /**
         * This property sets the width of the mask box image, similar to the CSS border-image-width property.
         */
        maskBorderWidth?: any;

        /**
         * Determines the mask painting area, which defines the area that is affected by the mask. The painted content of an element may be restricted to this area.
         */
        maskClip?: any;

        /**
         * For elements rendered as a single box, specifies the mask positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes box-decoration-break operates on to determine the mask positioning area(s).
         */
        maskOrigin?: any;

        /**
         * This property must not be used. It is no longer included in any standard or standard track specification, nor is it implemented in any browser. It is only used when the text-align-last property is set to size. It controls allowed adjustments of font-size to fit line content.
         */
        maxFontSize?: any;

        /**
         * Sets the maximum height for an element. It prevents the height of the element to exceed the specified value. If min-height is specified and is greater than max-height, max-height is overridden.
         */
        maxHeight?: any;

        /**
         * Sets the maximum width for an element. It limits the width property to be larger than the value specified in max-width.
         */
        maxWidth?: any;

        /**
         * Sets the minimum height for an element. It prevents the height of the element to be smaller than the specified value. The value of min-height overrides both max-height and height.
         */
        minHeight?: any;

        /**
         * Sets the minimum width of an element. It limits the width property to be not smaller than the value specified in min-width.
         */
        minWidth?: any;

        /**
         * The CSS outline property is a shorthand property for setting one or more of the individual outline properties outline-style, outline-width and outline-color in a single rule. In most cases the use of this shortcut is preferable and more convenient.
         * Outlines differ from borders in the following ways:  •       Outlines do not take up space, they are drawn above the content.
         *      •       Outlines may be non-rectangular. They are rectangular in Gecko/Firefox. Internet Explorer attempts to place the smallest contiguous outline around all elements or shapes that are indicated to have an outline. Opera draws a non-rectangular shape around a construct.
         */
        outline?: any;

        /**
         * The outline-color property sets the color of the outline of an element. An outline is a line that is drawn around elements, outside the border edge, to make the element stand out.
         */
        outlineColor?: any;

        /**
         * The outline-offset property offsets the outline and draw it beyond the border edge.
         */
        outlineOffset?: any;

        /**
         * The overflow property controls how extra content exceeding the bounding box of an element is rendered. It can be used in conjunction with an element that has a fixed width and height, to eliminate text-induced page distortion.
         */
        overflow?: any;

        /**
         * Specifies the preferred scrolling methods for elements that overflow.
         */
        overflowStyle?: any;

        /**
         * The overflow-x property is a specific case of the generic overflow property. It controls how extra content exceeding the x-axis of the bounding box of an element is rendered.
         */
        overflowX?: any;

        /**
         * The padding optional CSS property sets the required padding space on one to four sides of an element. The padding area is the space between an element and its border. Negative values are not allowed but decimal values are permitted. The element size is treated as fixed, and the content of the element shifts toward the center as padding is increased.
         * The padding property is a shorthand to avoid setting each side separately (padding-top, padding-right, padding-bottom, padding-left).
         */
        padding?: any;

        /**
         * The padding-bottom CSS property of an element sets the padding space required on the bottom of an element. The padding area is the space between the content of the element and its border. Contrary to margin-bottom values, negative values of padding-bottom are invalid.
         */
        paddingBottom?: any;

        /**
         * The padding-left CSS property of an element sets the padding space required on the left side of an element. The padding area is the space between the content of the element and its border. Contrary to margin-left values, negative values of padding-left are invalid.
         */
        paddingLeft?: any;

        /**
         * The padding-right CSS property of an element sets the padding space required on the right side of an element. The padding area is the space between the content of the element and its border. Contrary to margin-right values, negative values of padding-right are invalid.
         */
        paddingRight?: any;

        /**
         * The padding-top CSS property of an element sets the padding space required on the top of an element. The padding area is the space between the content of the element and its border. Contrary to margin-top values, negative values of padding-top are invalid.
         */
        paddingTop?: any;

        /**
         * The page-break-after property is supported in all major browsers. With CSS3, page-break-* properties are only aliases of the break-* properties. The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation.
         */
        pageBreakAfter?: any;

        /**
         * The page-break-before property sets the page-breaking behavior before an element. With CSS3, page-break-* properties are only aliases of the break-* properties. The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation.
         */
        pageBreakBefore?: any;

        /**
         * Sets the page-breaking behavior inside an element. With CSS3, page-break-* properties are only aliases of the break-* properties. The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation.
         */
        pageBreakInside?: any;

        /**
         * The pause property determines how long a speech media agent should pause before and after presenting an element. It is a shorthand for the pause-before and pause-after properties.
         */
        pause?: any;

        /**
         * The pause-after property determines how long a speech media agent should pause after presenting an element. It may be replaced by the shorthand property pause, which sets pause time before and after.
         */
        pauseAfter?: any;

        /**
         * The pause-before property determines how long a speech media agent should pause before presenting an element. It may be replaced by the shorthand property pause, which sets pause time before and after.
         */
        pauseBefore?: any;

        /**
         * The perspective property defines how far an element is placed from the view on the z-axis, from the screen to the viewer.
         * Perspective defines how an object is viewed. In graphic arts, perspective is the representation on a flat surface of what the viewer's eye would see in a 3D space. (See Wikipedia for more information about graphical perspective and for related illustrations.)
         * The illusion of perspective on a flat surface, such as a computer screen, is created by projecting points on the flat surface as they would appear if the flat surface were a window through which the viewer was looking at the object. In discussion of virtual environments, this flat surface is called a projection plane.
         */
        perspective?: any;

        /**
         * The perspective-origin property establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.
         * When used with perspective, perspective-origin changes the appearance of an object, as if a viewer were looking at it from a different origin. An object appears differently if a viewer is looking directly at it versus looking at it from below, above, or from the side. Thus, the perspective-origin is like a vanishing point.
         * The default value of perspective-origin is 50% 50%. This displays an object as if the viewer's eye were positioned directly at the center of the screen, both top-to-bottom and left-to-right. A value of 0% 0% changes the object as if the viewer was looking toward the top left angle. A value of 100% 100% changes the appearance as if viewed toward the bottom right angle.
         */
        perspectiveOrigin?: any;

        /**
         * The pointer-events property allows you to control whether an element can be the target for the pointing device (e.g, mouse, pen) events.
         */
        pointerEvents?: any;

        /**
         * The position property controls the type of positioning used by an element within its parent elements. The effect of the position property depends on a lot of factors, for example the position property of parent elements.
         */
        position?: any;

        /**
         * Obsolete: unsupported.
         * This property determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, so that its "ink" lines up with the first glyph in the line above and below.
         */
        punctuationTrim?: any;

        /**
         * Sets the type of quotation marks for embedded quotations.
         */
        quotes?: any;

        /**
         * Controls whether the last region in a chain displays additional 'overset' content according its default overflow property, or if it displays a fragment of content as if it were flowing into a subsequent region.
         */
        regionFragment?: any;

        /**
         * The rest-after property determines how long a speech media agent should pause after presenting an element's main content, before presenting that element's exit cue sound. It may be replaced by the shorthand property rest, which sets rest time before and after.
         */
        restAfter?: any;

        /**
         * The rest-before property determines how long a speech media agent should pause after presenting an intro cue sound for an element, before presenting that element's main content. It may be replaced by the shorthand property rest, which sets rest time before and after.
         */
        restBefore?: any;

        /**
         * Specifies the position an element in relation to the right side of the containing element.
         */
        right?: any;

        rubyAlign?: any;

        rubyPosition?: any;

        /**
         * Defines the alpha channel threshold used to extract a shape from an image. Can be thought of as a "minimum opacity" threshold; that is, a value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque.
         */
        shapeImageThreshold?: any;

        /**
         * A future level of CSS Shapes will define a shape-inside property, which will define a shape to wrap content within the element. See Editor's Draft <http://dev.w3.org/csswg/css-shapes/> and CSSWG wiki page on next-level plans <http://wiki.csswg.org/spec/css-shapes>
         */
        shapeInside?: any;

        /**
         * Adds a margin to a shape-outside. In effect, defines a new shape that is the smallest contour around all the points that are the shape-margin distance outward perpendicular to each point on the underlying shape. For points where a perpendicular direction is not defined (e.g., a triangle corner), takes all points on a circle centered at the point and with a radius of the shape-margin distance. This property accepts only non-negative values.
         */
        shapeMargin?: any;

        /**
         * Declares a shape around which text should be wrapped, with possible modifications from the shape-margin property. The shape defined by shape-outside and shape-margin changes the geometry of a float element's float area.
         */
        shapeOutside?: any;

        /**
         * The speak property determines whether or not a speech synthesizer will read aloud the contents of an element.
         */
        speak?: any;

        /**
         * The speak-as property determines how the speech synthesizer interprets the content: words as whole words or as a sequence of letters, numbers as a numerical value or a sequence of digits, punctuation as pauses in speech or named punctuation characters.
         */
        speakAs?: any;

        /**
         * The tab-size CSS property is used to customise the width of a tab (U+0009) character.
         */
        tabSize?: any;

        /**
         * The 'table-layout' property controls the algorithm used to lay out the table cells, rows, and columns.
         */
        tableLayout?: any;

        /**
         * The text-align CSS property describes how inline content like text is aligned in its parent block element. text-align does not control the alignment of block elements itself, only their inline content.
         */
        textAlign?: any;

        /**
         * The text-align-last CSS property describes how the last line of a block element or a line before line break is aligned in its parent block element.
         */
        textAlignLast?: any;

        /**
         * The text-decoration CSS property is used to set the text formatting to underline, overline, line-through or blink. 
         * underline and overline decorations are positioned under the text, line-through over it.
         */
        textDecoration?: any;

        /**
         * Sets the color of any text decoration, such as underlines, overlines, and strike throughs.
         */
        textDecorationColor?: any;

        /**
         * Sets what kind of line decorations are added to an element, such as underlines, overlines, etc.
         */
        textDecorationLine?: any;

        textDecorationLineThrough?: any;

        textDecorationNone?: any;

        textDecorationOverline?: any;

        /**
         * Specifies what parts of an element’s content are skipped over when applying any text decoration.
         */
        textDecorationSkip?: any;

        /**
         * This property specifies the style of the text decoration line drawn on the specified element. The intended meaning for the values are the same as those of the border-style-properties.
         */
        textDecorationStyle?: any;

        textDecorationUnderline?: any;

        /**
         * The text-emphasis property will apply special emphasis marks to the elements text. Slightly similar to the text-decoration property only that this property can have affect on the line-height. It also is noted that this is shorthand for text-emphasis-style and for text-emphasis-color.
         */
        textEmphasis?: any;

        /**
         * The text-emphasis-color property specifies the foreground color of the emphasis marks.
         */
        textEmphasisColor?: any;

        /**
         * The text-emphasis-style property applies special emphasis marks to an element's text.
         */
        textEmphasisStyle?: any;

        /**
         * This property helps determine an inline box's block-progression dimension, derived from the text-height and font-size properties for non-replaced elements, the height or the width for replaced elements, and the stacked block-progression dimension for inline-block elements. The block-progression dimension determines the position of the padding, border and margin for the element.
         */
        textHeight?: any;

        /**
         * Specifies the amount of space horizontally that should be left on the first line of the text of an element. This horizontal spacing is at the beginning of the first line and is in respect to the left edge of the containing block box.
         */
        textIndent?: any;

        textJustifyTrim?: any;

        textKashidaSpace?: any;

        /**
         * The text-line-through property is a shorthand property for text-line-through-style, text-line-through-color and text-line-through-mode. (Considered obsolete; use text-decoration instead.)
         */
        textLineThrough?: any;

        /**
         * Specifies the line colors for the line-through text decoration.
         * (Considered obsolete; use text-decoration-color instead.)
         */
        textLineThroughColor?: any;

        /**
         * Sets the mode for the line-through text decoration, determining whether the text decoration affects the space characters or not.
         * (Considered obsolete; use text-decoration-skip instead.)
         */
        textLineThroughMode?: any;

        /**
         * Specifies the line style for line-through text decoration.
         * (Considered obsolete; use text-decoration-style instead.)
         */
        textLineThroughStyle?: any;

        /**
         * Specifies the line width for the line-through text decoration.
         */
        textLineThroughWidth?: any;

        /**
         * The text-overflow shorthand CSS property determines how overflowed content that is not displayed is signaled to the users. It can be clipped, display an ellipsis ('…', U+2026 HORIZONTAL ELLIPSIS) or a Web author-defined string. It covers the two long-hand properties text-overflow-mode and text-overflow-ellipsis
         */
        textOverflow?: any;

        /**
         * The text-overline property is the shorthand for the text-overline-style, text-overline-width, text-overline-color, and text-overline-mode properties.
         */
        textOverline?: any;

        /**
         * Specifies the line color for the overline text decoration.
         */
        textOverlineColor?: any;

        /**
         * Sets the mode for the overline text decoration, determining whether the text decoration affects the space characters or not.
         */
        textOverlineMode?: any;

        /**
         * Specifies the line style for overline text decoration.
         */
        textOverlineStyle?: any;

        /**
         * Specifies the line width for the overline text decoration.
         */
        textOverlineWidth?: any;

        /**
         * The text-rendering CSS property provides information to the browser about how to optimize when rendering text. Options are: legibility, speed or geometric precision.
         */
        textRendering?: any;

        /**
         * Obsolete: unsupported.
         */
        textScript?: any;

        /**
         * The CSS text-shadow property applies one or more drop shadows to the text and <text-decorations> of an element. Each shadow is specified as an offset from the text, along with optional color and blur radius values.
         */
        textShadow?: any;

        /**
         * This property transforms text for styling purposes. (It has no effect on the underlying content.)
         */
        textTransform?: any;

        /**
         * Unsupported.
         * This property will add a underline position value to the element that has an underline defined.
         */
        textUnderlinePosition?: any;

        /**
         * After review this should be replaced by text-decoration should it not?
         * This property will set the underline style for text with a line value for underline, overline, and line-through.
         */
        textUnderlineStyle?: any;

        /**
         * This property specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's containing block. For relatively positioned boxes, the offset is with respect to the top edges of the box itself (i.e., the box is given a position in the normal flow, then offset from that position according to these properties).
         */
        top?: any;

        /**
         * Determines whether touch input may trigger default behavior supplied by the user agent, such as panning or zooming.
         */
        touchAction?: any;

        /**
         * CSS transforms allow elements styled with CSS to be transformed in two-dimensional or three-dimensional space. Using this property, elements can be translated, rotated, scaled, and skewed. The value list may consist of 2D and/or 3D transform values.
         */
        transform?: any;

        /**
         * This property defines the origin of the transformation axes relative to the element to which the transformation is applied.
         */
        transformOrigin?: any;

        /**
         * This property allows you to define the relative position of the origin of the transformation grid along the z-axis.
         */
        transformOriginZ?: any;

        /**
         * This property specifies how nested elements are rendered in 3D space relative to their parent.
         */
        transformStyle?: any;

        /**
         * The transition CSS property is a shorthand property for transition-property, transition-duration, transition-timing-function, and transition-delay. It allows to define the transition between two states of an element.
         */
        transition?: any;

        /**
         * Defines when the transition will start. A value of ‘0s’ means the transition will execute as soon as the property is changed. Otherwise, the value specifies an offset from the moment the property is changed, and the transition will delay execution by that offset.
         */
        transitionDelay?: any;

        /**
         * The 'transition-duration' property specifies the length of time a transition animation takes to complete.
         */
        transitionDuration?: any;

        /**
         * The 'transition-property' property specifies the name of the CSS property to which the transition is applied.
         */
        transitionProperty?: any;

        /**
         * Sets the pace of action within a transition
         */
        transitionTimingFunction?: any;

        /**
         * The unicode-bidi CSS property specifies the level of embedding with respect to the bidirectional algorithm.
         */
        unicodeBidi?: any;

        /**
         * unicode-range allows you to set a specific range of characters to be downloaded from a font (embedded using @font-face) and made available for use on the current page.
         */
        unicodeRange?: any;

        /**
         * This is for all the high level UX stuff.
         */
        userFocus?: any;

        /**
         * For inputing user content
         */
        userInput?: any;

        /**
         * The vertical-align property controls how inline elements or text are vertically aligned compared to the baseline. If this property is used on table-cells it controls the vertical alignment of content of the table cell.
         */
        verticalAlign?: any;

        /**
         * The visibility property specifies whether the boxes generated by an element are rendered.
         */
        visibility?: any;

        /**
         * The voice-balance property sets the apparent position (in stereo sound) of the synthesized voice for spoken media.
         */
        voiceBalance?: any;

        /**
         * The voice-duration property allows the author to explicitly set the amount of time it should take a speech synthesizer to read an element's content, for example to allow the speech to be synchronized with other media. With a value of auto (the default) the length of time it takes to read the content is determined by the content itself and the voice-rate property.
         */
        voiceDuration?: any;

        /**
         * The voice-family property sets the speaker's voice used by a speech media agent to read an element. The speaker may be specified as a named character (to match a voice option in the speech reading software) or as a generic description of the age and gender of the voice. Similar to the font-family property for visual media, a comma-separated list of fallback options may be given in case the speech reader does not recognize the character name or cannot synthesize the requested combination of generic properties.
         */
        voiceFamily?: any;

        /**
         * The voice-pitch property sets pitch or tone (high or low) for the synthesized speech when reading an element; the pitch may be specified absolutely or relative to the normal pitch for the voice-family used to read the text.
         */
        voicePitch?: any;

        /**
         * The voice-range property determines how much variation in pitch or tone will be created by the speech synthesize when reading an element. Emphasized text, grammatical structures and punctuation may all be rendered as changes in pitch, this property determines how strong or obvious those changes are; large ranges are associated with enthusiastic or emotional speech, while small ranges are associated with flat or mechanical speech.
         */
        voiceRange?: any;

        /**
         * The voice-rate property sets the speed at which the voice synthesized by a speech media agent will read content.
         */
        voiceRate?: any;

        /**
         * The voice-stress property sets the level of vocal emphasis to be used for synthesized speech reading the element.
         */
        voiceStress?: any;

        /**
         * The voice-volume property sets the volume for spoken content in speech media. It replaces the deprecated volume property.
         */
        voiceVolume?: any;

        /**
         * The white-space property controls whether and how white space inside the element is collapsed, and whether lines may wrap at unforced "soft wrap" opportunities.
         */
        whiteSpace?: any;

        /**
         * Obsolete: unsupported.
         */
        whiteSpaceTreatment?: any;

        /**
         * Specifies the width of the content area of an element. The content area of the element width does not include the padding, border, and margin of the element.
         */
        width?: any;

        /**
         * The word-break property is often used when there is long generated content that is strung together without and spaces or hyphens to beak apart. A common case of this is when there is a long URL that does not have any hyphens. This case could potentially cause the breaking of the layout as it could extend past the parent element.
         */
        wordBreak?: any;

        /**
         * The word-spacing CSS property specifies the spacing behavior between "words".
         */
        wordSpacing?: any;

        /**
         * An alias of css/properties/overflow-wrap, word-wrap defines whether to break words when the content exceeds the boundaries of its container.
         */
        wordWrap?: any;

        /**
         * Specifies how exclusions affect inline content within block-level elements. Elements lay out their inline content in their content area but wrap around exclusion areas.
         */
        wrapFlow?: any;

        /**
         * Set the value that is used to offset the inner wrap shape from other shapes. Inline content that intersects a shape with this property will be pushed by this shape's margin.
         */
        wrapMargin?: any;

        /**
         * Obsolete and unsupported. Do not use.
         * This CSS property controls the text when it reaches the end of the block in which it is enclosed.
         */
        wrapOption?: any;

        /**
         * writing-mode specifies if lines of text are laid out horizontally or vertically, and the direction which lines of text and blocks progress.
         */
        writingMode?: any;


        [propertyName: string]: any;
    }

    interface HTMLAttributes extends DOMAttributes {
        // React-specific Attributes
        defaultChecked?: boolean;
        defaultValue?: string | string[];

        // Standard HTML Attributes
        accept?: string;
        acceptCharset?: string;
        accessKey?: string;
        action?: string;
        allowFullScreen?: boolean;
        allowTransparency?: boolean;
        alt?: string;
        async?: boolean;
        autoComplete?: string;
        autoFocus?: boolean;
        autoPlay?: boolean;
        capture?: boolean;
        cellPadding?: number | string;
        cellSpacing?: number | string;
        charSet?: string;
        challenge?: string;
        checked?: boolean;
        classID?: string;
        className?: string;
        cols?: number;
        colSpan?: number;
        content?: string;
        contentEditable?: boolean;
        contextMenu?: string;
        controls?: boolean;
        coords?: string;
        crossOrigin?: string;
        data?: string;
        dateTime?: string;
        default?: boolean;
        defer?: boolean;
        dir?: string;
        disabled?: boolean;
        download?: any;
        draggable?: boolean;
        encType?: string;
        form?: string;
        formAction?: string;
        formEncType?: string;
        formMethod?: string;
        formNoValidate?: boolean;
        formTarget?: string;
        frameBorder?: number | string;
        headers?: string;
        height?: number | string;
        hidden?: boolean;
        high?: number;
        href?: string;
        hrefLang?: string;
        htmlFor?: string;
        httpEquiv?: string;
        icon?: string;
        id?: string;
        inputMode?: string;
        integrity?: string;
        is?: string;
        keyParams?: string;
        keyType?: string;
        kind?: string;
        label?: string;
        lang?: string;
        list?: string;
        loop?: boolean;
        low?: number;
        manifest?: string;
        marginHeight?: number;
        marginWidth?: number;
        max?: number | string;
        maxLength?: number;
        media?: string;
        mediaGroup?: string;
        method?: string;
        min?: number | string;
        minLength?: number;
        multiple?: boolean;
        muted?: boolean;
        name?: string;
        noValidate?: boolean;
        open?: boolean;
        optimum?: number;
        pattern?: string;
        placeholder?: string;
        poster?: string;
        preload?: string;
        radioGroup?: string;
        readOnly?: boolean;
        rel?: string;
        required?: boolean;
        role?: string;
        rows?: number;
        rowSpan?: number;
        sandbox?: string;
        scope?: string;
        scoped?: boolean;
        scrolling?: string;
        seamless?: boolean;
        selected?: boolean;
        shape?: string;
        size?: number;
        sizes?: string;
        span?: number;
        spellCheck?: boolean;
        src?: string;
        srcDoc?: string;
        srcLang?: string;
        srcSet?: string;
        start?: number;
        step?: number | string;
        style?: CSSProperties;
        summary?: string;
        tabIndex?: number;
        target?: string;
        title?: string;
        type?: string;
        useMap?: string;
        value?: string | string[];
        width?: number | string;
        wmode?: string;
        wrap?: string;

        // RDFa Attributes
        about?: string;
        datatype?: string;
        inlist?: any;
        prefix?: string;
        property?: string;
        resource?: string;
        typeof?: string;
        vocab?: string;

        // Non-standard Attributes
        autoCapitalize?: string;
        autoCorrect?: string;
        autoSave?: string;
        color?: string;
        itemProp?: string;
        itemScope?: boolean;
        itemType?: string;
        itemID?: string;
        itemRef?: string;
        results?: number;
        security?: string;
        unselectable?: boolean;
    }

    interface SVGAttributes extends HTMLAttributes {
        clipPath?: string;
        cx?: number | string;
        cy?: number | string;
        d?: string;
        dx?: number | string;
        dy?: number | string;
        fill?: string;
        fillOpacity?: number | string;
        fontFamily?: string;
        fontSize?: number | string;
        fx?: number | string;
        fy?: number | string;
        gradientTransform?: string;
        gradientUnits?: string;
        markerEnd?: string;
        markerMid?: string;
        markerStart?: string;
        offset?: number | string;
        opacity?: number | string;
        patternContentUnits?: string;
        patternUnits?: string;
        points?: string;
        preserveAspectRatio?: string;
        r?: number | string;
        rx?: number | string;
        ry?: number | string;
        spreadMethod?: string;
        stopColor?: string;
        stopOpacity?: number | string;
        stroke?: string;
        strokeDasharray?: string;
        strokeLinecap?: string;
        strokeMiterlimit?: string;
        strokeOpacity?: number | string;
        strokeWidth?: number | string;
        textAnchor?: string;
        transform?: string;
        version?: string;
        viewBox?: string;
        x1?: number | string;
        x2?: number | string;
        x?: number | string;
        xlinkActuate?: string;
        xlinkArcrole?: string;
        xlinkHref?: string;
        xlinkRole?: string;
        xlinkShow?: string;
        xlinkTitle?: string;
        xlinkType?: string;
        xmlBase?: string;
        xmlLang?: string;
        xmlSpace?: string;
        y1?: number | string;
        y2?: number | string;
        y?: number | string;
    }

    //
    // React.DOM
    // ----------------------------------------------------------------------

    interface ReactDOM {
        // HTML
        a: HTMLFactory;
        abbr: HTMLFactory;
        address: HTMLFactory;
        area: HTMLFactory;
        article: HTMLFactory;
        aside: HTMLFactory;
        audio: HTMLFactory;
        b: HTMLFactory;
        base: HTMLFactory;
        bdi: HTMLFactory;
        bdo: HTMLFactory;
        big: HTMLFactory;
        blockquote: HTMLFactory;
        body: HTMLFactory;
        br: HTMLFactory;
        button: HTMLFactory;
        canvas: HTMLFactory;
        caption: HTMLFactory;
        cite: HTMLFactory;
        showapi_res_code: HTMLFactory;
        col: HTMLFactory;
        colgroup: HTMLFactory;
        data: HTMLFactory;
        datalist: HTMLFactory;
        dd: HTMLFactory;
        del: HTMLFactory;
        details: HTMLFactory;
        dfn: HTMLFactory;
        dialog: HTMLFactory;
        div: HTMLFactory;
        dl: HTMLFactory;
        dt: HTMLFactory;
        em: HTMLFactory;
        embed: HTMLFactory;
        fieldset: HTMLFactory;
        figcaption: HTMLFactory;
        figure: HTMLFactory;
        footer: HTMLFactory;
        form: HTMLFactory;
        h1: HTMLFactory;
        h2: HTMLFactory;
        h3: HTMLFactory;
        h4: HTMLFactory;
        h5: HTMLFactory;
        h6: HTMLFactory;
        head: HTMLFactory;
        header: HTMLFactory;
        hr: HTMLFactory;
        html: HTMLFactory;
        i: HTMLFactory;
        iframe: HTMLFactory;
        img: HTMLFactory;
        input: HTMLFactory;
        ins: HTMLFactory;
        kbd: HTMLFactory;
        keygen: HTMLFactory;
        label: HTMLFactory;
        legend: HTMLFactory;
        li: HTMLFactory;
        link: HTMLFactory;
        main: HTMLFactory;
        map: HTMLFactory;
        mark: HTMLFactory;
        menu: HTMLFactory;
        menuitem: HTMLFactory;
        meta: HTMLFactory;
        meter: HTMLFactory;
        nav: HTMLFactory;
        noscript: HTMLFactory;
        object: HTMLFactory;
        ol: HTMLFactory;
        optgroup: HTMLFactory;
        option: HTMLFactory;
        output: HTMLFactory;
        p: HTMLFactory;
        param: HTMLFactory;
        picture: HTMLFactory;
        pre: HTMLFactory;
        progress: HTMLFactory;
        q: HTMLFactory;
        rp: HTMLFactory;
        rt: HTMLFactory;
        ruby: HTMLFactory;
        s: HTMLFactory;
        samp: HTMLFactory;
        script: HTMLFactory;
        section: HTMLFactory;
        select: HTMLFactory;
        small: HTMLFactory;
        source: HTMLFactory;
        span: HTMLFactory;
        strong: HTMLFactory;
        style: HTMLFactory;
        sub: HTMLFactory;
        summary: HTMLFactory;
        sup: HTMLFactory;
        table: HTMLFactory;
        tbody: HTMLFactory;
        td: HTMLFactory;
        textarea: HTMLFactory;
        tfoot: HTMLFactory;
        th: HTMLFactory;
        thead: HTMLFactory;
        time: HTMLFactory;
        title: HTMLFactory;
        tr: HTMLFactory;
        track: HTMLFactory;
        u: HTMLFactory;
        ul: HTMLFactory;
        "var": HTMLFactory;
        video: HTMLFactory;
        wbr: HTMLFactory;

        // SVG
        svg: SVGFactory;
        circle: SVGFactory;
        defs: SVGFactory;
        ellipse: SVGFactory;
        g: SVGFactory;
        image: SVGFactory;
        line: SVGFactory;
        linearGradient: SVGFactory;
        mask: SVGFactory;
        path: SVGFactory;
        pattern: SVGFactory;
        polygon: SVGFactory;
        polyline: SVGFactory;
        radialGradient: SVGFactory;
        rect: SVGFactory;
        stop: SVGFactory;
        text: SVGFactory;
        tspan: SVGFactory;
    }

    //
    // React.PropTypes
    // ----------------------------------------------------------------------

    interface Validator<T> {
        (object: T, key: string, componentName: string): Error;
    }

    interface Requireable<T> extends Validator<T> {
        isRequired: Validator<T>;
    }

    interface ValidationMap<T> {
        [key: string]: Validator<T>;
    }

    interface ReactPropTypes {
        any: Requireable<any>;
        array: Requireable<any>;
        bool: Requireable<any>;
        func: Requireable<any>;
        number: Requireable<any>;
        object: Requireable<any>;
        string: Requireable<any>;
        node: Requireable<any>;
        element: Requireable<any>;
        instanceOf(expectedClass: {}): Requireable<any>;
        oneOf(types: any[]): Requireable<any>;
        oneOfType(types: Validator<any>[]): Requireable<any>;
        arrayOf(type: Validator<any>): Requireable<any>;
        objectOf(type: Validator<any>): Requireable<any>;
        shape(type: ValidationMap<any>): Requireable<any>;
    }

    //
    // React.Children
    // ----------------------------------------------------------------------

    interface ReactChildren {
        map<T>(children: ReactNode, fn: (child: ReactChild, index: number) => T): T[];
        forEach(children: ReactNode, fn: (child: ReactChild, index: number) => any): void;
        count(children: ReactNode): number;
        only(children: ReactNode): ReactElement<any>;
        toArray(children: ReactNode): ReactChild[];
    }

    //
    // Browser Interfaces
    // https://github.com/nikeee/2048-typescript/blob/master/2048/js/touch.d.ts
    // ----------------------------------------------------------------------

    interface AbstractView {
        styleMedia: StyleMedia;
        document: Document;
    }

    interface Touch {
        identifier: number;
        target: EventTarget;
        screenX: number;
        screenY: number;
        clientX: number;
        clientY: number;
        pageX: number;
        pageY: number;
    }

    interface TouchList {
        [index: number]: Touch;
        length: number;
        item(index: number): Touch;
        identifiedTouch(identifier: number): Touch;
    }
}

declare module "react" {
    export = __React;
}

declare namespace JSX {
    import React = __React;

    interface Element extends React.ReactElement<any> { }
    interface ElementClass extends React.Component<any, any> {
        render(): JSX.Element;
    }
    interface ElementAttributesProperty { props: {}; }

    interface IntrinsicAttributes {
        key?: string | number;
    }

    interface IntrinsicClassAttributes<T> {
        ref?: string | ((classInstance: T) => void);
    }

    interface IntrinsicElements {
        // HTML
        a: React.HTMLProps<HTMLAnchorElement>;
        abbr: React.HTMLProps<HTMLElement>;
        address: React.HTMLProps<HTMLElement>;
        area: React.HTMLProps<HTMLAreaElement>;
        article: React.HTMLProps<HTMLElement>;
        aside: React.HTMLProps<HTMLElement>;
        audio: React.HTMLProps<HTMLAudioElement>;
        b: React.HTMLProps<HTMLElement>;
        base: React.HTMLProps<HTMLBaseElement>;
        bdi: React.HTMLProps<HTMLElement>;
        bdo: React.HTMLProps<HTMLElement>;
        big: React.HTMLProps<HTMLElement>;
        blockquote: React.HTMLProps<HTMLElement>;
        body: React.HTMLProps<HTMLBodyElement>;
        br: React.HTMLProps<HTMLBRElement>;
        button: React.HTMLProps<HTMLButtonElement>;
        canvas: React.HTMLProps<HTMLCanvasElement>;
        caption: React.HTMLProps<HTMLElement>;
        cite: React.HTMLProps<HTMLElement>;
        showapi_res_code: React.HTMLProps<HTMLElement>;
        col: React.HTMLProps<HTMLTableColElement>;
        colgroup: React.HTMLProps<HTMLTableColElement>;
        data: React.HTMLProps<HTMLElement>;
        datalist: React.HTMLProps<HTMLDataListElement>;
        dd: React.HTMLProps<HTMLElement>;
        del: React.HTMLProps<HTMLElement>;
        details: React.HTMLProps<HTMLElement>;
        dfn: React.HTMLProps<HTMLElement>;
        dialog: React.HTMLProps<HTMLElement>;
        div: React.HTMLProps<HTMLDivElement>;
        dl: React.HTMLProps<HTMLDListElement>;
        dt: React.HTMLProps<HTMLElement>;
        em: React.HTMLProps<HTMLElement>;
        embed: React.HTMLProps<HTMLEmbedElement>;
        fieldset: React.HTMLProps<HTMLFieldSetElement>;
        figcaption: React.HTMLProps<HTMLElement>;
        figure: React.HTMLProps<HTMLElement>;
        footer: React.HTMLProps<HTMLElement>;
        form: React.HTMLProps<HTMLFormElement>;
        h1: React.HTMLProps<HTMLHeadingElement>;
        h2: React.HTMLProps<HTMLHeadingElement>;
        h3: React.HTMLProps<HTMLHeadingElement>;
        h4: React.HTMLProps<HTMLHeadingElement>;
        h5: React.HTMLProps<HTMLHeadingElement>;
        h6: React.HTMLProps<HTMLHeadingElement>;
        head: React.HTMLProps<HTMLHeadElement>;
        header: React.HTMLProps<HTMLElement>;
        hr: React.HTMLProps<HTMLHRElement>;
        html: React.HTMLProps<HTMLHtmlElement>;
        i: React.HTMLProps<HTMLElement>;
        iframe: React.HTMLProps<HTMLIFrameElement>;
        img: React.HTMLProps<HTMLImageElement>;
        input: React.HTMLProps<HTMLInputElement>;
        ins: React.HTMLProps<HTMLModElement>;
        kbd: React.HTMLProps<HTMLElement>;
        keygen: React.HTMLProps<HTMLElement>;
        label: React.HTMLProps<HTMLLabelElement>;
        legend: React.HTMLProps<HTMLLegendElement>;
        li: React.HTMLProps<HTMLLIElement>;
        link: React.HTMLProps<HTMLLinkElement>;
        main: React.HTMLProps<HTMLElement>;
        map: React.HTMLProps<HTMLMapElement>;
        mark: React.HTMLProps<HTMLElement>;
        menu: React.HTMLProps<HTMLElement>;
        menuitem: React.HTMLProps<HTMLElement>;
        meta: React.HTMLProps<HTMLMetaElement>;
        meter: React.HTMLProps<HTMLElement>;
        nav: React.HTMLProps<HTMLElement>;
        noscript: React.HTMLProps<HTMLElement>;
        object: React.HTMLProps<HTMLObjectElement>;
        ol: React.HTMLProps<HTMLOListElement>;
        optgroup: React.HTMLProps<HTMLOptGroupElement>;
        option: React.HTMLProps<HTMLOptionElement>;
        output: React.HTMLProps<HTMLElement>;
        p: React.HTMLProps<HTMLParagraphElement>;
        param: React.HTMLProps<HTMLParamElement>;
        picture: React.HTMLProps<HTMLElement>;
        pre: React.HTMLProps<HTMLPreElement>;
        progress: React.HTMLProps<HTMLProgressElement>;
        q: React.HTMLProps<HTMLQuoteElement>;
        rp: React.HTMLProps<HTMLElement>;
        rt: React.HTMLProps<HTMLElement>;
        ruby: React.HTMLProps<HTMLElement>;
        s: React.HTMLProps<HTMLElement>;
        samp: React.HTMLProps<HTMLElement>;
        script: React.HTMLProps<HTMLElement>;
        section: React.HTMLProps<HTMLElement>;
        select: React.HTMLProps<HTMLSelectElement>;
        small: React.HTMLProps<HTMLElement>;
        source: React.HTMLProps<HTMLSourceElement>;
        span: React.HTMLProps<HTMLSpanElement>;
        strong: React.HTMLProps<HTMLElement>;
        style: React.HTMLProps<HTMLStyleElement>;
        sub: React.HTMLProps<HTMLElement>;
        summary: React.HTMLProps<HTMLElement>;
        sup: React.HTMLProps<HTMLElement>;
        table: React.HTMLProps<HTMLTableElement>;
        tbody: React.HTMLProps<HTMLTableSectionElement>;
        td: React.HTMLProps<HTMLTableDataCellElement>;
        textarea: React.HTMLProps<HTMLTextAreaElement>;
        tfoot: React.HTMLProps<HTMLTableSectionElement>;
        th: React.HTMLProps<HTMLTableHeaderCellElement>;
        thead: React.HTMLProps<HTMLTableSectionElement>;
        time: React.HTMLProps<HTMLElement>;
        title: React.HTMLProps<HTMLTitleElement>;
        tr: React.HTMLProps<HTMLTableRowElement>;
        track: React.HTMLProps<HTMLTrackElement>;
        u: React.HTMLProps<HTMLElement>;
        ul: React.HTMLProps<HTMLUListElement>;
        "var": React.HTMLProps<HTMLElement>;
        video: React.HTMLProps<HTMLVideoElement>;
        wbr: React.HTMLProps<HTMLElement>;

        // SVG
        svg: React.SVGProps;

        circle: React.SVGProps;
        clipPath: React.SVGProps;
        defs: React.SVGProps;
        ellipse: React.SVGProps;
        g: React.SVGProps;
        image: React.SVGProps;
        line: React.SVGProps;
        linearGradient: React.SVGProps;
        mask: React.SVGProps;
        path: React.SVGProps;
        pattern: React.SVGProps;
        polygon: React.SVGProps;
        polyline: React.SVGProps;
        radialGradient: React.SVGProps;
        rect: React.SVGProps;
        stop: React.SVGProps;
        text: React.SVGProps;
        tspan: React.SVGProps;
    }
}


================================================
FILE: .vscode/typings/react-native/react-native.d.ts
================================================
// Type definitions for react-native 0.14
// Project: https://github.com/facebook/react-native
// Definitions by: Bruno Grieder <https://github.com/bgrieder>
// Definitions: https://github.com/borisyankov/DefinitelyTyped

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// USING: these definitions are meant to be used with the TSC compiler target set to ES6
//
// USAGE EXAMPLES: check the RNTSExplorer project at https://github.com/bgrieder/RNTSExplorer
//
// CONTRIBUTING: please open pull requests and make sure that the changes do not break RNTSExplorer (they should not)
// Do not hesitate to open a pull request against RNTSExplorer to provide an example for a case not covered by the current App
//
// CREDITS: This work is based on an original work made by Bernd Paradies: https://github.com/bparadie
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/// <reference path="../react/react.d.ts" />

//so we know what is "original" React
import React = __React;

//react-native "extends" react
declare namespace  __React {


    /**
     * Represents the completion of an asynchronous operation
     * @see lib.es6.d.ts
     */
    export interface Promise<T> {
        /**
         * Attaches callbacks for the resolution and/or rejection of the Promise.
         * @param onfulfilled The callback to execute when the Promise is resolved.
         * @param onrejected The callback to execute when the Promise is rejected.
         * @returns A Promise for the completion of which ever callback is executed.
         */
        then<TResult>( onfulfilled?: ( value: T ) => TResult | Promise<TResult>, onrejected?: ( reason: any ) => TResult | Promise<TResult> ): Promise<TResult>;

        /**
         * Attaches a callback for only the rejection of the Promise.
         * @param onrejected The callback to execute when the Promise is rejected.
         * @returns A Promise for the completion of the callback.
         */
        catch( onrejected?: ( reason: any ) => T | Promise<T> ): Promise<T>;


        // not in lib.es6.d.ts but called by react-native
        done( callback?: ( value: T ) => void ): void;
    }

    export interface PromiseConstructor {
        /**
         * A reference to the prototype.
         */
        prototype: Promise<any>;

        /**
         * Creates a new Promise.
         * @param init A callback used to initialize the promise. This callback is passed two arguments:
         * a resolve callback used resolve the promise with a value or the result of another promise,
         * and a reject callback used to reject the promise with a provided reason or error.
         */
        new <T>( init: ( resolve: ( value?: T | Promise<T> ) => void, reject: ( reason?: any ) => void ) => void ): Promise<T>;

        <T>( init: ( resolve: ( value?: T | Promise<T> ) => void, reject: ( reason?: any ) => void ) => void ): Promise<T>;

        /**
         * Creates a Promise that is resolved with an array of results when all of the provided Promises
         * resolve, or rejected when any Promise is rejected.
         * @param values An array of Promises.
         * @returns A new Promise.
         */
        all<T>( values: (T | Promise<T>)[] ): Promise<T[]>;

        /**
         * Creates a Promise that is resolved with an array of results when all of the provided Promises
         * resolve, or rejected when any Promise is rejected.
         * @param values An array of values.
         * @returns A new Promise.
         */
        all( values: Promise<void>[] ): Promise<void>;

        /**
         * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
         * or rejected.
         * @param values An array of Promises.
         * @returns A new Promise.
         */
        race<T>( values: (T | Promise<T>)[] ): Promise<T>;

        /**
         * Creates a new rejected promise for the provided reason.
         * @param reason The reason the promise was rejected.
         * @returns A new rejected Promise.
         */
        reject( reason: any ): Promise<void>;

        /**
         * Creates a new rejected promise for the provided reason.
         * @param reason The reason the promise was rejected.
         * @returns A new rejected Promise.
         */
        reject<T>( reason: any ): Promise<T>;

        /**
         * Creates a new resolved promise for the provided value.
         * @param value A promise.
         * @returns A promise whose internal state matches the provided promise.
         */
        resolve<T>( value: T | Promise<T> ): Promise<T>;

        /**
         * Creates a new resolved promise .
         * @returns A resolved promise.
         */
        resolve(): Promise<void>;
    }

    // @see lib.es6.d.ts
    export var Promise: PromiseConstructor;

    //TODO: BGR: Replace with ComponentClass ?
    // node_modules/react-tools/src/classic/class/ReactClass.js
    export interface ReactClass<D, P, S> {
        // TODO:
    }

    // see react-jsx.d.ts
    export function createElement<P>( type: React.ReactType,
                                      props?: P,
                                      ...children: React.ReactNode[] ): React.ReactElement<P>;


    export type Runnable = ( appParameters: any ) => void;


    // Similar to React.SyntheticEvent except for nativeEvent
    interface NativeSyntheticEvent<T> {
        bubbles: boolean
        cancelable: boolean
        currentTarget: EventTarget
        defaultPrevented: boolean
        eventPhase: number
        isTrusted: boolean
        nativeEvent: T
        preventDefault(): void
        stopPropagation(): void
        target: EventTarget
        timeStamp: Date
        type: string
    }

    export interface NativeTouchEvent {
        /**
         * Array of all touch events that have changed since the last event
         */
        changedTouches: NativeTouchEvent[]

        /**
         * The ID of the touch
         */
        identifier: string

        /**
         * The X position of the touch, relative to the element
         */
        locationX: number

        /**
         * The Y position of the touch, relative to the element
         */
        locationY: number

        /**
         * The X position of the touch, relative to the screen
         */
        pageX: number

        /**
         * The Y position of the touch, relative to the screen
         */
        pageY: number

        /**
         * The node id of the element receiving the touch event
         */
        target: string

        /**
         * A time identifier for the touch, useful for velocity calculation
         */
        timestamp: number

        /**
         * Array of all current touches on the screen
         */
        touches : NativeTouchEvent[]
    }

    export interface GestureResponderEvent extends NativeSyntheticEvent<NativeTouchEvent> {
    }


    export interface  PointProperties {
        x: number
        y: number
    }

    export interface Insets {
        top?: number
        left?: number
        bottom?: number
        right?: number
    }

    /**
     * //FIXME: need to find documentation on which compoenent is a native (i.e. non composite component)
     */
    export interface NativeComponent {
        setNativeProps: ( props: Object ) => void
    }

    /**
     * //FIXME: need to find documentation on which component is a TTouchable and can implement that interface
     * @see React.DOMAtributes
     */
    export interface Touchable {
        onTouchStart?: ( event: GestureResponderEvent ) => void
        onTouchMove?: ( event: GestureResponderEvent ) => void
        onTouchEnd?: ( event: GestureResponderEvent ) => void
        onTouchCancel?: ( event: GestureResponderEvent ) => void
        onTouchEndCapture?: ( event: GestureResponderEvent ) => void
    }

    export type AppConfig = {
        appKey: string;
        component: ReactClass<any, any, any>;
        run?: Runnable;
    }

    // https://github.com/facebook/react-native/blob/master/Libraries/AppRegistry/AppRegistry.js
    export class AppRegistry {
        static registerConfig( config: AppConfig[] ): void;

        static registerComponent( appKey: string, getComponentFunc: () => React.ComponentClass<any> ): string;

        static registerRunnable( appKey: string, func: Runnable ): string;

        static runApplication( appKey: string, appParameters: any ): void;
    }

    export interface LayoutAnimationTypes {
        spring: string
        linear: string
        easeInEaseOut: string
        easeIn: string
        easeOut: string
    }

    export interface LayoutAnimationProperties {
        opacity: string
        scaleXY: string
    }

    export interface LayoutAnimationAnim {
        duration?: number
        delay?: number
        springDamping?: number
        initialVelocity?: number
        type?: string //LayoutAnimationTypes
        property?: string //LayoutAnimationProperties
    }

    export interface LayoutAnimationConfig {
        duration: number
        create?: LayoutAnimationAnim
        update?: LayoutAnimationAnim
        delete?: LayoutAnimationAnim
    }

    export interface LayoutAnimationStatic {

        configureNext: ( config: LayoutAnimationConfig, onAnimationDidEnd?: () => void, onError?: ( error?: any ) => void ) => void
        create: ( duration: number, type?: string, creationProp?: string ) => LayoutAnimationConfig
        Types: LayoutAnimationTypes
        Properties: LayoutAnimationProperties
        configChecker: ( conf: {config: LayoutAnimationConfig}, name: string, next: string ) => void
        Presets : {
            easeInEaseOut: LayoutAnimationConfig
            linear:LayoutAnimationConfig
            spring: LayoutAnimationConfig
        }
    }


    /**
     * Flex Prop Types
     * @see https://facebook.github.io/react-native/docs/flexbox.html#proptypes
     * @see LayoutPropTypes.js
     */
    export interface FlexStyle {

        alignItems?: string;  //enum('flex-start', 'flex-end', 'center', 'stretch')
        alignSelf?: string// enum('auto', 'flex-start', 'flex-end', 'center', 'stretch')
        borderBottomWidth?: number
        borderLeftWidth?: number
        borderRightWidth?: number
        borderTopWidth?: number
        borderWidth?: number
        bottom?: number
        flex?: number
        flexDirection?: string // enum('row', 'column')
        flexWrap?: string // enum('wrap', 'nowrap')
        height?: number
        justifyContent?: string // enum('flex-start', 'flex-end', 'center', 'space-between', 'space-around')
        left?: number
        margin?: number
        marginBottom?: number
        marginHorizontal?: number
        marginLeft?: number
        marginRight?: number
        marginTop?: number
        marginVertical?: number
        padding?: number
        paddingBottom?: number
        paddingHorizontal?: number
        paddingLeft?: number
        paddingRight?: number
        paddingTop?: number
        paddingVertical?: number
        position?: string // enum('absolute', 'relative')
        right?: number
        top?: number
        width?: number
    }


    export interface TransformsStyle {

        transform?: [{perspective: number}, {rotate: string}, {rotateX: string}, {rotateY: string}, {rotateZ: string}, {scale: number}, {scaleX: number}, {scaleY: number}, {translateX: number}, {translateY: number}, {skewX: string}, {skewY: string}]
        transformMatrix?: Array<number>
        rotation?: number
        scaleX?: number
        scaleY?: number
        translateX?: number
        translateY?: number
    }


    export interface StyleSheetProperties {
        // TODO:
    }

    export interface LayoutRectangle {
        x: number;
        y: number;
        width: number;
        height: number;
    }

    // @see TextProperties.onLayout
    export interface LayoutChangeEvent {
        nativeEvent: {
            layout: LayoutRectangle
        }
    }

    // @see https://facebook.github.io/react-native/docs/text.html#style
    export interface TextStyle extends ViewStyle {
        color?: string
        fontFamily?: string
        fontSize?: number
        fontStyle?: string // 'normal' | 'italic';
        fontWeight?: string // enum("normal", 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900')
        letterSpacing?: number
        lineHeight?: number
        textAlign?: string // enum("auto", 'left', 'right', 'center')
        textDecorationLine?: string // enum("none", 'underline', 'line-through', 'underline line-through')
        textDecorationStyle?: string // enum("solid", 'double', 'dotted', 'dashed')
        textDecorationColor?: string
        writingDirection?: string; //enum("auto", 'ltr', 'rtl')
        //containerBackgroundColor?: string
    }

    export interface TextPropertiesIOS {

        /**
         * When true, no visual change is made when text is pressed down.
         * By default, a gray oval highlights the text on press down.
         */
        suppressHighlighting?: boolean
    }

    // https://facebook.github.io/react-native/docs/text.html#props
    export interface TextProperties extends React.Props<TextProperties> {

        /**
         * Specifies should fonts scale to respect Text Size accessibility setting on iOS.
         */
        allowFontScaling?: boolean

        /**
         * Used to truncate the text with an elipsis after computing the text layout, including line wrapping, such that the total number of lines does not exceed this number.
         */
        numberOfLines?: number

        /**
         * Invoked on mount and layout changes with
         *
         * {nativeEvent: { layout: {x, y, width, height}}}.
         */
        onLayout?: ( event: LayoutChangeEvent ) => void

        /**
         * This function is called on press.
         * Text intrinsically supports press handling with a default highlight state (which can be disabled with suppressHighlighting).
         */
        onPress?: () => void

        /**
         * @see https://facebook.github.io/react-native/docs/text.html#style
         */
        style?: TextStyle

        /**
         * Used to locate this view in end-to-end tests.
         */
        testID?: string
    }

    /**
     * A React component for displaying text which supports nesting, styling, and touch handling.
     */
    export interface TextStatic extends React.ComponentClass<TextProperties> {

    }


    /**
     * IOS Specific properties for TextInput
     * @see https://facebook.github.io/react-native/docs/textinput.html#props
     */
    export interface TextInputIOSProperties {

        /**
         * If true, the text field will blur when submitted.
         * The default value is true.
         */
        blurOnSubmit?: boolean

        /**
         * enum('never', 'while-editing', 'unless-editing', 'always')
         * When the clear button should appear on the right side of the text view
         */
        clearButtonMode?: string

        /**
         * If true, clears the text field automatically when editing begins
         */
        clearTextOnFocus?: boolean

        /**
         * If true, the keyboard disables the return key when there is no text and automatically enables it when there is text.
         * The default value is false.
         */
        enablesReturnKeyAutomatically?: boolean

        /**
         * Callback that is called when a key is pressed.
         * Pressed key value is passed as an argument to the callback handler.
         * Fires before onChange callbacks.
         */
        onKeyPress?: () => void

        /**
         * enum('default', 'go', 'google', 'join', 'next', 'route', 'search', 'send', 'yahoo', 'done', 'emergency-call')
         * Determines how the return key should look.
         */
        returnKeyType?: string

        /**
         * If true, all text will automatically be selected on focus
         */
        selectTextOnFocus?: boolean

        /**
         * //FIXME: requires typing
         * See DocumentSelectionState.js, some state that is responsible for maintaining selection information for a document
         */
        selectionState?: any


    }

    /**
     * Android Specific properties for TextInput
     * @see https://facebook.github.io/react-native/docs/textinput.html#props
     */
    export interface TextInputAndroidProperties {

        /**
         * Sets the number of lines for a TextInput.
         * Use it with multiline set to true to be able to fill the lines.
         */
        numberOfLines?: number

        /**
         * enum('start', 'center', 'end')
         * Set the position of the cursor from where editing will begin.
         */
        textAlign?: string

        /**
         * enum('top', 'center', 'bottom')
         * Aligns text vertically within the TextInput.
         */
        textAlignVertical?: string

        /**
         * The color of the textInput underline.
         */
        underlineColorAndroid?: string
    }


    /**
     * @see https://facebook.github.io/react-native/docs/textinput.html#props
     */
    export interface TextInputProperties extends TextInputIOSProperties, TextInputAndroidProperties, React.Props<TextInputStatic> {

        /**
         * Can tell TextInput to automatically capitalize certain characters.
         *      characters: all characters,
         *      words: first letter of each word
         *      sentences: first letter of each sentence (default)
         *      none: don't auto capitalize anything
         *
         * https://facebook.github.io/react-native/docs/textinput.html#autocapitalize
         */
        autoCapitalize?: string

        /**
         * If false, disables auto-correct.
         * The default value is true.
         */
        autoCorrect?: boolean

        /**
         * If true, focuses the input on componentDidMount.
         * The default value is false.
         */
        autoFocus?: boolean

        /**
         * Provides an initial value that will change when the user starts typing.
         * Useful for simple use-cases where you don't want to deal with listening to events
         * and updating the value prop to keep the controlled state in sync.
         */
        defaultValue?: string

        /**
         * If false, text is not editable. The default value is true.
         */
        editable?: boolean

        /**
         * enum("default", 'numeric', 'email-address', "ascii-capable", 'numbers-and-punctuation', 'url', 'number-pad', 'phone-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search')
         * Determines which keyboard to open, e.g.numeric.
         * The following values work across platforms: - default - numeric - email-address
         */
        keyboardType?: string

        /**
         * Limits the maximum number of characters that can be entered.
         * Use this instead of implementing the logic in JS to avoid flicker.
         */
        maxLength?: number

        /**
         * If true, the text input can be multiple lines. The default value is false.
         */
        multiline?: boolean

        /**
         * Callback that is called when the text input is blurred
         */
        onBlur?: () => void

        /**
         * Callback that is called when the text input's text changes.
         */
        onChange?: ( event: {nativeEvent: {text: string}} ) => void

        /**
         * Callback that is called when the text input's text changes.
         * Changed text is passed as an argument to the callback handler.
         */
        onChangeText?: ( text: string ) => void

        /**
         * Callback that is called when text input ends.
         */
        onEndEditing?: ( event: {nativeEvent: {text: string}} ) => void

        /**
         * Callback that is called when the text input is focused
         */
        onFocus?: () => void

        /**
         * Invoked on mount and layout changes with {x, y, width, height}.
         */
        onLayout?: ( event: {nativeEvent: {x: number, y: number, width: number, height: number}} ) => void

        /**
         * Callback that is called when the text input's submit button is pressed.
         */
        onSubmitEditing?: ( event: {nativeEvent: {text: string}} ) => void

        /**
         * //FIXME: Not part of the doc but found in examples
         */
        password?: boolean

        /**
         * The string that will be rendered before text input has been entered
         */
        placeholder?: string

        /**
         * The text color of the placeholder string
         */
        placeholderTextColor?: string

        /**
         * If true, the text input obscures the text entered so that sensitive text like passwords stay secure.
         * The default value is false.
         */
        secureTextEntry?: boolean

        /**
         * Styles
         */
        style?: TextStyle

        /**
         * Used to locate this view in end-to-end tests
         */
        testID?: string

        /**
         * The value to show for the text input. TextInput is a controlled component,
         * which means the native value will be forced to match this value prop if provided.
         * For most uses this works great, but in some cases this may cause flickering - one common cause is preventing edits by keeping value the same.
         * In addition to simply setting the same value, either set editable={false},
         * or set/update maxLength to prevent unwanted edits without flicker.
         */
        value?: string
    }

    export interface TextInputStatic extends NativeComponent, React.ComponentClass<TextInputProperties> {
        blur: () => void
        focus: () => void
    }


    /**
     * Gesture recognition on mobile devices is much more complicated than web.
     * A touch can go through several phases as the app determines what the user's intention is.
     * For example, the app needs to determine if the touch is scrolling, sliding on a widget, or tapping.
     * This can even change during the duration of a touch. There can also be multiple simultaneous touches.
     *
     * The touch responder system is needed to allow components to negotiate these touch interactions
     * without any additional knowledge about their parent or child components.
     * This system is implemented in ResponderEventPlugin.js, which contains further details and documentation.
     *
     * Best Practices
     * Users can feel huge differences in the usability of web apps vs. native, and this is one of the big causes.
     * Every action should have the following attributes:
     *      Feedback/highlighting- show the user what is handling their touch, and what will happen when they release the gesture
     *      Cancel-ability- when making an action, the user should be able to abort it mid-touch by dragging their finger away
     *
     * These features make users more comfortable while using an app,
     * because it allows people to experiment and interact without fear of making mistakes.
     *
     * TouchableHighlight and Touchable*
     * The responder system can be complicated to use.
     * So we have provided an abstract Touchable implementation for things that should be "tappable".
     * This uses the responder system and allows you to easily configure tap interactions declaratively.
     * Use TouchableHighlight anywhere where you would use a button or link on web.
     */
    export interface GestureResponderHandlers {

        /**
         * A view can become the touch responder by implementing the correct negotiation methods.
         * There are two methods to ask the view if it wants to become responder:
         */

        /**
         * Does this view want to become responder on the start of a touch?
         */
        onStartShouldSetResponder?: ( event: GestureResponderEvent ) => boolean

        /**
         * Called for every touch move on the View when it is not the responder: does this view want to "claim" touch responsiveness?
         */
        onMoveShouldSetResponder?: ( event: GestureResponderEvent ) => boolean

        /**
         * If the View returns true and attempts to become the responder, one of the following will happen:
         */

        /**
         * The View is now responding for touch events.
         * This is the time to highlight and show the user what is happening
         */
        onResponderGrant?: ( event: GestureResponderEvent ) => void

        /**
         * Something else is the responder right now and will not release it
         */
        onResponderReject?: ( event: GestureResponderEvent ) => void

        /**
         * If the view is responding, the following handlers can be called:
         */

        /**
         * The user is moving their finger
         */
        onResponderMove?: ( event: GestureResponderEvent ) => void

        /**
         * Fired at the end of the touch, ie "touchUp"
         */
        onResponderRelease?: ( event: GestureResponderEvent ) => void

        /**
         *  Something else wants to become responder.
         *  Should this view release the responder? Returning true allows release
         */
        onResponderTerminationRequest?: ( event: GestureResponderEvent ) => boolean

        /**
         * The responder has been taken from the View.
         * Might be taken by other views after a call to onResponderTerminationRequest,
         * or might be taken by the OS without asking (happens with control center/ notification center on iOS)
         */
        onResponderTerminate?: ( event: GestureResponderEvent ) => void

        /**
         * onStartShouldSetResponder and onMoveShouldSetResponder are called with a bubbling pattern,
         * where the deepest node is called first.
         * That means that the deepest component will become responder when multiple Views return true for *ShouldSetResponder handlers.
         * This is desirable in most cases, because it makes sure all controls and buttons are usable.
         *
         * However, sometimes a parent will want to make sure that it becomes responder.
         * This can be handled by using the capture phase.
         * Before the responder system bubbles up from the deepest component,
         * it will do a capture phase, firing on*ShouldSetResponderCapture.
         * So if a parent View wants to prevent the child from becoming responder on a touch start,
         * it should have a onStartShouldSetResponderCapture handler which returns true.
         */
        onStartShouldSetResponderCapture?: ( event: GestureResponderEvent ) => boolean

        /**
         * onStartShouldSetResponder and onMoveShouldSetResponder are called with a bubbling pattern,
         * where the deepest node is called first.
         * That means that the deepest component will become responder when multiple Views return true for *ShouldSetResponder handlers.
         * This is desirable in most cases, because it makes sure all controls and buttons are usable.
         *
         * However, sometimes a parent will want to make sure that it becomes responder.
         * This can be handled by using the capture phase.
         * Before the responder system bubbles up from the deepest component,
         * it will do a capture phase, firing on*ShouldSetResponderCapture.
         * So if a parent View wants to prevent the child from becoming responder on a touch start,
         * it should have a onStartShouldSetResponderCapture handler which returns true.
         */
        onMoveShouldSetResponderCapture?: () => void;

    }

    // @see https://facebook.github.io/react-native/docs/view.html#style
    export interface ViewStyle extends FlexStyle, TransformsStyle {
        backgroundColor?: string;
        borderBottomColor?: string;
        borderBottomLeftRadius?: number;
        borderBottomRightRadius?: number;
        borderColor?: string;
        borderLeftColor?: string;
        borderRadius?: number;
        borderRightColor?: string;
        borderTopColor?: string;
        borderTopLeftRadius?: number;
        borderTopRightRadius?: number;
        opacity?: number;
        overflow?: string; // enum('visible', 'hidden')
        shadowColor?: string;
        shadowOffset?: {width: number, height: number};
        shadowOpacity?: number;
        shadowRadius?: number;
    }


    export interface ViewPropertiesIOS {

        /**
         * Provides additional traits to screen reader.
         * By default no traits are provided unless specified otherwise in element
         *
         * @enum('none', 'button', 'link', 'header', 'search', 'image', 'selected', 'plays', 'key', 'text','summary', 'disabled', 'frequentUpdates', 'startsMedia', 'adjustable', 'allowsDirectInteraction', 'pageTurn')
         */
        accessibilityTraits?: string | string[];

        /**
         * Whether this view should be rendered as a bitmap before compositing.
         *
         * On iOS, this is useful for animations and interactions that do not modify this component's dimensions nor its children;
         * for example, when translating the position of a static view, rasterization allows the renderer to reuse a cached bitmap of a static view
         * and quickly composite it during each frame.
         *
         * Rasterization incurs an off-screen drawing pass and the bitmap consumes memory.
         * Test and measure when using this property.
         */
        shouldRasterizeIOS?: boolean
    }

    export interface ViewPropertiesAndroid {

        /**
         * Indicates to accessibility services to treat UI component like a native one.
         * Works for Android only.
         *
         * @enum('none', 'button', 'radiobutton_checked', 'radiobutton_unchecked' )
         */
        accessibilityComponentType?: string


        /**
         * Indicates to accessibility services whether the user should be notified when this view changes.
         * Works for Android API >= 19 only.
         * See http://developer.android.com/reference/android/view/View.html#attr_android:accessibilityLiveRegion for references.
         */
        accessibilityLiveRegion?: string

        /**
         * Views that are only used to layout their children or otherwise don't draw anything
         * may be automatically removed from the native hierarchy as an optimization.
         * Set this property to false to disable this optimization and ensure that this View exists in the native view hierarchy.
         */
        collapsable?: boolean


        /**
         * Controls how view is important for accessibility which is if it fires accessibility events
         * and if it is reported to accessibility services that query the screen.
         * Works for Android only. See http://developer.android.com/reference/android/R.attr.html#importantForAccessibility for references.
         *
         * Possible values:
         *      'auto' - The system determines whether the view is important for accessibility - default (recommended).
         *      'yes' - The view is important for accessibility.
         *      'no' - The view is not important for accessibility.
         *      'no-hide-descendants' - The view is not important for accessibility, nor are any of its descendant views.
         */
        importantForAccessibility?: string


        /**
         * Whether this view needs to rendered offscreen and composited with an alpha in order to preserve 100% correct colors and blending behavior.
         * The default (false) falls back to drawing the component and its children
         * with an alpha applied to the paint used to draw each element instead of rendering the full component offscreen and compositing it back with an alpha value.
         * This default may be noticeable and undesired in the case where the View you are setting an opacity on
         * has multiple overlapping elements (e.g. multiple overlapping Views, or text and a background).
         *
         * Rendering offscreen to preserve correct alpha behavior is extremely expensive
         * and hard to debug for non-native developers, which is why it is not turned on by default.
         * If you do need to enable this property for an animation,
         * consider combining it with renderToHardwareTextureAndroid if the view contents are static (i.e. it doesn't need to be redrawn each frame).
         * If that property is enabled, this View will be rendered off-screen once,
         * saved in a hardware texture, and then composited onto the screen with an alpha each frame without having to switch rendering targets on the GPU.
         */
        needsOffscreenAlphaCompositing?: boolean


        /**
         * Whether this view should render itself (and all of its children) into a single hardware texture on the GPU.
         *
         * On Android, this is useful for animations and interactions that only modify opacity, rotation, translation, and/or scale:
         * in those cases, the view doesn't have to be redrawn and display lists don't need to be re-executed. The texture can just be
         * re-used and re-composited with different parameters. The downside is that this can use up limited video memory, so this prop should be set back to false at the end of the interaction/animation.
         */
        renderToHardwareTextureAndroid?: boolean;

    }

    /**
     * @see https://facebook.github.io/react-native/docs/view.html#props
     */
    export interface ViewProperties extends ViewPropertiesAndroid, ViewPropertiesIOS, GestureResponderHandlers, Touchable, React.Props<ViewStatic> {

        /**
         * Overrides the text that's read by the screen reader when the user interacts with the element. By default, the label is constructed by traversing all the children and accumulating all the Text nodes separated by space.
         */
        accessibilityLabel?: string;

        /**
         * When true, indicates that the view is an accessibility element.
         * By default, all the touchable elements are accessible.
         */
        accessible?: boolean;

        /**
         * When `accessible` is true, the system will try to invoke this function when the user performs accessibility tap gesture.
         */
        onAcccessibilityTap?: () => void;

        /**
         * Invoked on mount and layout changes with
         *
         * {nativeEvent: { layout: {x, y, width, height}}}.
         */
        onLayout?: ( event: LayoutChangeEvent ) => void;

        /**
         * When accessible is true, the system will invoke this function when the user performs the magic tap gesture.
         */
        onMagicTap?: () => void;

        /**
         *
         * In the absence of auto property, none is much like CSS's none value. box-none is as if you had applied the CSS class:
         *
         * .box-none {
         *   pointer-events: none;
         * }
         * .box-none * {
         *   pointer-events: all;
         * }
         *
         * box-only is the equivalent of
         *
         * .box-only {
         *   pointer-events: all;
         * }
         * .box-only * {
         *   pointer-events: none;
         * }
         *
         * But since pointerEvents does not affect layout/appearance, and we are already deviating from the spec by adding additional modes,
         * we opt to not include pointerEvents on style. On some platforms, we would need to implement it as a className anyways. Using style or not is an implementation detail of the platform.
         */
        pointerEvents?: string;

        /**
         *
         * This is a special performance property exposed by RCTView and is useful for scrolling content when there are many subviews,
         * most of which are offscreen. For this property to be effective, it must be applied to a view that contains many subviews that extend outside its bound.
         * The subviews must also have overflow: hidden, as should the containing view (or one of its superviews).
         */
        removeClippedSubviews?: boolean

        style?: ViewStyle;

        /**
         * Used to locate this view in end-to-end tests.
         */
        testID?: string;
    }

    /**
     * The most fundamental component for building UI, View is a container that supports layout with flexbox, style, some touch handling,
     * and accessibility controls, and is designed to be nested inside other views and to have 0 to many children of any type.
     * View maps directly to the native view equivalent on whatever platform React is running on,
     * whether that is a UIView, <div>, android.view, etc.
     */
    export interface ViewStatic extends NativeComponent, React.ComponentClass<ViewProperties> {

    }

    /**
     * //FIXME: No documentation extracted from showapi_res_code comment on WebView.ios.js
     */
    export interface NavState {

        url?: string
        title?: string
        loading?: boolean
        canGoBack?: boolean
        canGoForward?: boolean;

        [key: string]: any
    }

    export interface WebViewPropertiesAndroid {

        /**
         * Used for android only, JS is enabled by default for WebView on iOS
         */
        javaScriptEnabledAndroid?: boolean
    }

    export interface WebViewPropertiesIOS {

        /**
         * Used for iOS only, sets whether the webpage scales to fit the view and the user can change the scale
         */
        scalesPageToFit?: boolean
    }

    /**
     * @see https://facebook.github.io/react-native/docs/webview.html#props
     */
    export interface WebViewProperties extends WebViewPropertiesAndroid, WebViewPropertiesIOS, React.Props<WebViewStatic> {

        automaticallyAdjustContentInsets?: boolean

        bounces?: boolean

        contentInset?: Insets

        html?: string

        /**
         * Sets the JS to be injected when the webpage loads.
         */
        injectedJavaScript?: string

        onNavigationStateChange?: ( event: NavState ) => void

        /**
         * Allows custom handling of any webview requests by a JS handler.
         * Return true or false from this method to continue loading the request.
         */
        onShouldStartLoadWithRequest?: () => boolean

        /**
         * view to show if there's an error
         */
        renderError?: () => ViewStatic

        /**
         * loading indicator to show
         */
        renderLoading?: () => ViewStatic

        scrollEnabled?: boolean

        startInLoadingState?: boolean

        style?: ViewStyle

        url: string
    }


    export interface WebViewStatic extends React.ComponentClass<WebViewProperties> {

        goBack: () => void
        goForward: () => void
        reload: () => void
    }


    /**
     * @see
     */
    export interface SegmentedControlIOSProperties {
        /// TODO
    }


    export interface NavigatorIOSProperties extends React.Props<NavigatorIOSStatic> {

        /**
         * NavigatorIOS uses "route" objects to identify child views, their props, and navigation bar configuration.
         * "push" and all the other navigation operations expect routes to be like this
         */
        initialRoute?: Route

        /**
         * The default wrapper style for components in the navigator.
         * A common use case is to set the backgroundColor for every page
         */
        itemWrapperStyle?: ViewStyle

        /**
         * A Boolean value that indicates whether the navigation bar is hidden
         */
        navigationBarHidden?: boolean

        /**
         * A Boolean value that indicates whether to hide the 1px hairline shadow
         */
        shadowHidden?: boolean

        /**
         * The color used for buttons in the navigation bar
         */
        tintColor?: string

        /**
         * The text color of the navigation bar title
         */
        titleTextColor?: string

        /**
         * A Boolean value that indicates whether the navigation bar is translucent
         */
        translucent?: boolean

        /**
         * NOT IN THE DOC BUT IN THE EXAMPLES
         */
        style?: ViewStyle
    }

    /**
     * A navigator is an object of navigation functions that a view can call.
     * It is passed as a prop to any component rendered by NavigatorIOS.
     *
     * Navigator functions are also available on the NavigatorIOS component:
     *
     * @see https://facebook.github.io/react-native/docs/navigatorios.html#navigator
     */
    export interface NavigationIOS {
        /**
         * Navigate forward to a new route
         */
        push: ( route: Route ) => void

        /**
         * Go back one page
         */
        pop: () => void

        /**
         * Go back N pages at once. When N=1, behavior matches pop()
         */
        popN: ( n: number ) => void

        /**
         * Replace the route for the current page and immediately load the view for the new route
         */
        replace: ( route: Route ) => void

        /**
         * Replace the route/view for the previous page
         */
        replacePrevious: ( route: Route ) => void

        /**
         * Replaces the previous route/view and transitions back to it
         */
        replacePreviousAndPop: ( route: Route ) => void

        /**
         * Replaces the top item and popToTop
         */
        resetTo: ( route: Route ) => void

        /**
         * Go back to the item for a particular route object
         */
        popToRoute( route: Route ): void

        /**
         * Go back to the top item
         */
        popToTop(): void
    }

    export interface NavigatorIOSStatic extends NavigationIOS, React.ComponentClass<NavigatorIOSProperties> {
    }


    /**
     * @see https://facebook.github.io/react-native/docs/activityindicatorios.html#props
     */
    export interface ActivityIndicatorIOSProperties extends React.Props<ActivityIndicatorIOSStatic> {

        /**
         * Whether to show the indicator (true, the default) or hide it (false).
         */
        animating?: boolean

        /**
         * The foreground color of the spinner (default is gray).
         */
        color?: string

        /**
         * Whether the indicator should hide when not animating (true by default).
         */
        hidesWhenStopped?: boolean

        /**
         * Invoked on mount and layout changes with
         */
        onLayout?: ( event: {nativeEvent: { layout: {x: number, y: number , width: number, height: number}}} ) => void

        /**
         * Size of the indicator.
         * Small has a height of 20, large has a height of 36.
         *
         * enum('small', 'large')
         */
        size?: string

        style?: ViewStyle
    }

    export interface ActivityIndicatorIOSStatic extends React.ComponentClass<ActivityIndicatorIOSProperties> {
    }


    export interface DatePickerIOSProperties extends React.Props<DatePickerIOSStatic> {

        /**
         * The currently selected date.
         */
        date?: Date


        /**
         * Maximum date.
         * Restricts the range of possible date/time values.
         */
        maximumDate?: Date

        /**
         * Maximum date.
         * Restricts the range of possible date/time values.
         */
        minimumDate?: Date

        /**
         *  enum(1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
         *  The interval at which minutes can be selected.
         */
        minuteInterval?: number

        /**
         *  enum('date', 'time', 'datetime')
         *  The date picker mode.
         */
        mode?: string

        /**
         * Date change handler.
         * This is called when the user changes the date or time in the UI.
         * The first and only argument is a Date object representing the new date and time.
         */
        onDateChange?: ( newDate: Date ) => void

        /**
         * Timezone offset in minutes.
         * By default, the date picker will use the device's timezone. With this parameter, it is possible to force a certain timezone offset.
         * For instance, to show times in Pacific Standard Time, pass -7 * 60.
         */
        timeZoneOffsetInMinutes?: number

    }

    export interface DatePickerIOSStatic extends React.ComponentClass<DatePickerIOSProperties> {
    }


    /**
     * @see PickerIOS.ios.js
     */
    export interface PickerIOSItemProperties extends React.Props<PickerIOSItemStatic> {
        value?: string | number
        label?: string
    }

    /**
     * @see PickerIOS.ios.js
     */
    export interface PickerIOSItemStatic extends React.ComponentClass<PickerIOSItemProperties> {
    }


    /**
     * @see https://facebook.github.io/react-native/docs/pickerios.html
     * @see PickerIOS.ios.js
     */
    export interface PickerIOSProperties extends React.Props<PickerIOSStatic> {

        onValueChange?: ( value: string | number ) => void

        selectedValue?: string | number

        style?: ViewStyle
    }

    /**
     * @see https://facebook.github.io/react-native/docs/pickerios.html
     * @see PickerIOS.ios.js
     */
    export interface PickerIOSStatic extends React.ComponentClass<PickerIOSProperties> {

        Item: PickerIOSItemStatic
    }


    /**
     * @see https://facebook.github.io/react-native/docs/sliderios.html
     */
    export interface SliderIOSProperties extends React.Props<SliderIOSStatic> {

        /**
         * If true the user won't be able to move the slider. Default value is false.
         */
        disabled?: boolean

        /**
         * Initial maximum value of the slider. Default value is 1.
         */
        maximumValue?: number

        /**
         * The color used for the track to the right of the button. Overrides the default blue gradient image.
         */
        maximumTrackTintColor?: string

        /**
         * Initial minimum value of the slider. Default value is 0.
         */
        minimumValue?: number

        /**
         * The color used for the track to the left of the button. Overrides the default blue gradient image.
         */
        minimumTrackTintColor?: string

        /**
         * Callback called when the user finishes changing the value (e.g. when the slider is released).
         */
        onSlidingComplete?: () => void

        /**
         * Callback continuously called while the user is dragging the slider.
         */
        onValueChange?: ( value: number ) => void

        /**
         * Step value of the slider.
         * The value should be between 0 and (maximumValue - minimumValue).
         * Default value is 0.
         */
        step?: number

        /**
         * Used to style and layout the Slider.
         * @see StyleSheet.js and ViewStylePropTypes.js for more info.
         */
        style?: ViewStyle

        /**
         * Initial value of the slider.
         * The value should be between minimumValue and maximumValue, which default to 0 and 1 respectively.
         * Default value is 0.
         *
         * This is not a controlled component, e.g. if you don't update the value, the component won't be reset to its inital value.
         */
        value?: number
    }

    export interface SliderIOSStatic extends React.ComponentClass<SliderIOSProperties> {

    }

    /**
     * //FIXME: no dcumentation, inferred
     * @see SwitchIOS.ios.js
     */
    export interface SwitchIOSStyle extends ViewStyle {
        height?: number
        width?: number
    }


    /**
     * https://facebook.github.io/react-native/docs/switchios.html#props
     */
    export interface SwitchIOSProperties extends React.Props<SwitchIOSStatic> {

        /**
         * If true the user won't be able to toggle the switch. Default value is false.
         */
        disabled?: boolean

        /**
         * Background color when the switch is turned on.
         */
        onTintColor?: string

        /**
         * Callback that is called when the user toggles the switch.
         */
        onValueChange?: ( value: boolean ) => void

        /**
         * Background color for the switch round button.
         */
        thumbTintColor?: string

        /**
         * Background color when the switch is turned off.
         */
        tintColor?: string

        /**
         * The value of the switch, if true the switch will be turned on. Default value is false.
         */
        value?: boolean

        style?: SwitchIOSStyle
    }

    /**
     *
     * Use SwitchIOS to render a boolean input on iOS.
     *
     * This is a controlled component, so you must hook in to the onValueChange callback and update the value prop in order for the component to update,
     * otherwise the user's change will be reverted immediately to reflect props.value as the source of truth.
     *
     * @see https://facebook.github.io/react-native/docs/switchios.html
     */
    export interface SwitchIOSStatic extends React.ComponentClass<SwitchIOSProperties> {

    }


    /**
     * @see ImageResizeMode.js
     */
    export interface ImageResizeModeStatic {
        /**
         * contain - The image will be resized such that it will be completely
         * visible, contained within the frame of the View.
         */
        contain: string
        /**
         * cover - The image will be resized such that the entire area of the view
         * is covered by the image, potentially clipping parts of the image.
         */
        cover: string
        /**
         * stretch - The image will be stretched to fill the entire frame of the
         * view without clipping.  This may change the aspect ratio of the image,
         * distoring it.  Only supported on iOS.
         */
        stretch: string
    }

    /**
     * Image style
     * @see https://facebook.github.io/react-native/docs/image.html#style
     */
    export interface ImageStyle extends FlexStyle, TransformsStyle {
        resizeMode?: string //Object.keys(ImageResizeMode)
        backgroundColor?: string
        borderColor?: string
        borderWidth?: number
        borderRadius?: number
        overflow?: string // enum('visible', 'hidden')
        tintColor?: string
        opacity?: number
    }

    export interface ImagePropertiesIOS {
        /**
         * The text that's read by the screen reader when the user interacts with the image.
         */
        accessibilityLabel?: string;

        /**
         * When true, indicates the image is an accessibility element.
         */
        accessible?: boolean;

        /**
         * When the image is resized, the corners of the size specified by capInsets will stay a fixed size,
         * but the center content and borders of the image will be stretched.
         * This is useful for creating resizable rounded buttons, shadows, and other resizable assets.
         * More info on Apple documentation
         */
        capInsets?: Insets

        /**
         * A static image to display while downloading the final image off the network.
         */
        defaultSource?: {uri: string}

        /**
         * Invoked on load error with {nativeEvent: {error}}
         */
        onError?: ( error: {nativeEvent: any} ) => void

        /**
         * Invoked when load completes successfully
         */
        onLoad?: () => void

        /**
         * Invoked when load either succeeds or fails
         */
        onLoadEnd?: () => void

        /**
         * Invoked on load start
         */
        onLoadStart?: () => void

        /**
         * Invoked on download progress with {nativeEvent: {loaded, total}}
         */
        onProgress?: ()=> void
    }

    /**
     * @see https://facebook.github.io/react-native/docs/image.html
     */
    export interface ImageProperties extends ImagePropertiesIOS, React.Props<Image> {
        /**
         * onLayout function
         *
         * Invoked on mount and layout changes with
         *
         * {nativeEvent: { layout: {x, y, width, height}}}.
         */
        onLayout?: ( event: LayoutChangeEvent ) => void;


        /**
         * Determines how to resize the image when the frame doesn't match the raw image dimensions.
         *
         * enum('cover', 'contain', 'stretch')
         */
        resizeMode?: string;

        /**
         * uri is a string representing the resource identifier for the image,
         * which could be an http address, a local file path,
         * or the name of a static image resource (which should be wrapped in the require('image!name') function).
         */
        source: {uri: string} | string;

        /**
         *
         * Style
         */
        style?:  ImageStyle;

        /**
         * A unique identifier for this element to be used in UI Automation testing scripts.
         */
        testID?: string;

    }

    export interface ImageStatic extends React.ComponentClass<ImageProperties> {
        uri: string;
        resizeMode: ImageResizeModeStatic
    }


    /**
     * @see https://facebook.github.io/react-native/docs/listview.html#props
     */
    export interface ListViewProperties extends ScrollViewProperties, React.Props<ListViewStatic> {

        dataSource?: ListViewDataSource

        /**
         * How many rows to render on initial component mount.  Use this to make
         * it so that the first screen worth of data apears at one time instead of
         * over the course of multiple frames.
         */
        initialListSize?: number

        /**
         * (visibleRows, changedRows) => void
         *
         * Called when the set of visible rows changes.  `visibleRows` maps
         * { sectionID: { rowID: true }} for all the visible rows, and
         * `changedRows` maps { sectionID: { rowID: true | false }} for the rows
         * that have changed their visibility, with true indicating visible, and
         * false indicating the view has moved out of view.
         */
        onChangeVisibleRows?: ( visibleRows: Array<{[sectionId: string]: {[rowID: string]: boolean}}>, changedRows: Array<{[sectionId: string]: {[rowID: string]: boolean}}> ) => void

        /**
         * Called when all rows have been rendered and the list has been scrolled
         * to within onEndReachedThreshold of the bottom.  The native scroll
         * event is provided.
         */
        onEndReached?: () => void

        /**
         * Threshold in pixels for onEndReached.
         */
        onEndReachedThreshold?: number

        /**
         * Number of rows to render per event loop.
         */
        pageSize?: number

        /**
         * An experimental performance optimization for improving scroll perf of
         * large lists, used in conjunction with overflow: 'hidden' on the row
         * containers.  Use at your own risk.
         */
        removeClippedSubviews?: boolean

        /**
         * () => renderable
         *
         * The header and footer are always rendered (if these props are provided)
         * on every render pass.  If they are expensive to re-render, wrap them
         * in StaticContainer or other mechanism as appropriate.  Footer is always
         * at the bottom of the list, and header at the top, on every render pass.
         */
        renderFooter?: () => React.ReactElement<any>

        /**
         * () => renderable
         *
         * The header and footer are always rendered (if these props are provided)
         * on every render pass.  If they are expensive to re-render, wrap them
         * in StaticContainer or other mechanism as appropriate.  Footer is always
         * at the bottom of the list, and header at the top, on every render pass.
         */
        renderHeader?: () => React.ReactElement<any>

        /**
         * (rowData, sectionID, rowID) => renderable
         * Takes a data entry from the data source and its ids and should return
         * a renderable component to be rendered as the row.  By default the data
         * is exactly what was put into the data source, but it's also possible to
         * provide custom extractors.
         */
        renderRow?: ( rowData: any, sectionID: string | number, rowID: string | number, highlightRow?: boolean ) => React.ReactElement<any>


        /**
         * A function that returns the scrollable component in which the list rows are rendered.
         * Defaults to returning a ScrollView with the given props.
         */
        renderScrollComponent?: ( props: ScrollViewProperties ) => React.ReactElement<ScrollViewProperties>

        /**
         * (sectionData, sectionID) => renderable
         *
         * If provided, a sticky header is rendered for this section.  The sticky
         * behavior means that it will scroll with the content at the top of the
         * section until it reaches the top of the screen, at which point it will
         * stick to the top until it is pushed off the screen by the next section
         * header.
         */
        renderSectionHeader?: ( sectionData: any, sectionId: string | number ) => React.ReactElement<any>


        /**
         * (sectionID, rowID, adjacentRowHighlighted) => renderable
         * If provided, a renderable component to be rendered as the separator below each row
         * but not the last row if there is a section header below.
         * Take a sectionID and rowID of the row above and whether its adjacent row is highlighted.
         */
        renderSeparator?: ( sectionID: string | number, rowID: string | number, adjacentRowHighlighted?: boolean ) => React.ReactElement<any>

        /**
         * How early to start rendering rows before they come on screen, in
         * pixels.
         */
        scrollRenderAheadDistance?: number
    }

    export interface ListViewStatic extends React.ComponentClass<ListViewProperties> {
        DataSource: ListViewDataSource;
    }


    export interface MapViewAnnotation {
        latitude?: number
        longitude?: number
        animateDrop?: boolean
        title?: string
        subtitle?: string
        hasLeftCallout?: boolean
        hasRightCallout?: boolean
        onLeftCalloutPress?: () => void
        onRightCalloutPress?: () => void
        id?: string
    }

    export interface MapViewRegion {
        latitude: number
        longitude: number
        latitudeDelta: number
        longitudeDelta: number
    }

    export interface MapViewPropertiesIOS {

        /**
         * If false points of interest won't be displayed on the map.
         * Default value is true.
         */
        showsPointsOfInterest?: boolean
    }

    export interface MapViewProperties extends MapViewPropertiesIOS, Touchable, React.Props<MapViewStatic> {

        /**
         * Map annotations with title/subtitle.
         */
        annotations?: MapViewAnnotation[]

        /**
         * Insets for the map's legal label, originally at bottom left of the map. See EdgeInsetsPropType.js for more information.
         */
        legalLabelInsets?: Insets

        /**
         * The map type to be displayed.
         *     standard: standard road map (default)
         *     satellite: satellite view
         *     hybrid: satellite view with roads and points of interest overlayed
         *
         * enum('standard', 'satellite', 'hybrid')
         */
        mapType?: string

        /**
         * Maximum size of area that can be displayed.
         */
        maxDelta?: number

        /**
         * Minimum size of area that can be displayed.
         */
        minDelta?: number

        /**
         * Callback that is called once, when the user taps an annotation.
         */
        onAnnotationPress?: () => void

        /**
         * Callback that is called continuously when the user is dragging the map.
         */
        onRegionChange?: ( region: MapViewRegion ) => void

        /**
         * Callback that is called once, when the user is done moving the map.
         */
        onRegionChangeComplete?: ( region: MapViewRegion ) => void

        /**
         * When this property is set to true and a valid camera is associated with the map,
         * the camera’s pitch angle is used to tilt the plane of the map.
         *
         * When this property is set to false, the camera’s pitch angle is ignored and
         * the map is always displayed as if the user is looking straight down onto it.
         */
        pitchEnabled?: boolean

        /**
         * The region to be displayed by the map.
         * The region is defined by the center coordinates and the span of coordinates to display.
         */
        region?: MapViewRegion

        /**
         * When this property is set to true and a valid camera is associated with the map,
         * the camera’s heading angle is used to rotate the plane of the map around its center point.
         *
         * When this property is set to false, the camera’s heading angle is ignored and the map is always oriented
         * so that true north is situated at the top of the map view
         */
        rotateEnabled?: boolean

        /**
         * If false the user won't be able to change the map region being displayed.
         * Default value is true.
         */
        scrollEnabled?: boolean

        /**
         * If true the app will ask for the user's location and focus on it.
         * Default value is false.
         *
         * NOTE: You need to add NSLocationWhenInUseUsageDescription key in Info.plist to enable geolocation,
         * otherwise it is going to fail silently!
         */
        showsUserLocation?: boolean

        /**
         * Used to style and layout the MapView.
         * See StyleSheet.js and ViewStylePropTypes.js for more info.
         */
        style?: ViewStyle

        /**
         * If false the user won't be able to pinch/zoom the map.
         * Default value is true.
         */
        zoomEnabled?: boolean
    }

    /**
     * @see https://facebook.github.io/react-native/docs/mapview.html#content
     */
    export interface MapViewStatic extends React.ComponentClass<MapViewProperties> {
    }


    export interface TouchableWithoutFeedbackAndroidProperties {

        /**
         * Indicates to accessibility services to treat UI component like a native one.
         * Works for Android only.
         *
         * @enum('none', 'button', 'radiobutton_checked', 'radiobutton_unchecked' )
         */
        accessibilityComponentType?: string
    }

    export interface TouchableWithoutFeedbackIOSProperties {

        /**
         * Provides additional traits to screen reader.
         * By default no traits are provided unless specified otherwise in element
         *
         * @enum('none', 'button', 'link', 'header', 'search', 'image', 'selected', 'plays', 'key', 'text','summary', 'disabled', 'frequentUpdates', 'startsMedia', 'adjustable', 'allowsDirectInteraction', 'pageTurn')
         */
        accessibilityTraits?: string | string[];

    }

    /**
     * @see https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html#props
     */
    export interface TouchableWithoutFeedbackProperties extends TouchableWithoutFeedbackAndroidProperties, TouchableWithoutFeedbackIOSProperties {


        /**
         * Called when the touch is released, but not if cancelled (e.g. by a scroll that steals the responder lock).
         */
        accessible?: boolean

        /**
         * Delay in ms, from onPressIn, before onLongPress is called.
         */
        delayLongPress?: number;

        /**
         * Delay in ms, from the start of the touch, before onPressIn is called.
         */
        delayPressIn?: number;

        /**
         * Delay in ms, from the release of the touch, before onPressOut is called.
         */
        delayPressOut?: number;

        /**
         * Invoked on mount and layout changes with
         * {nativeEvent: {layout: {x, y, width, height}}}
         */
        onLayout?: ( event: LayoutChangeEvent ) => void

        onLongPress?: () => void;

        /**
         * Called when the touch is released,
         * but not if cancelled (e.g. by a scroll that steals the responder lock).
         */
        onPress?: () => void;

        onPressIn?: () => void;

        onPressOut?: () => void;

        /**
         * //FIXME: not in doc but available in exmaples
         */
        style?: ViewStyle
    }


    export interface TouchableWithoutFeedbackProps extends TouchableWithoutFeedbackProperties, React.Props<TouchableWithoutFeedbackStatic> {

    }

    /**
     * Do not use unless you have a very good reason.
     * All the elements that respond to press should have a visual feedback when touched.
     * This is one of the primary reason a "web" app doesn't feel "native".
     *
     * @see https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html
     */
    export interface TouchableWithoutFeedbackStatic extends React.ComponentClass<TouchableWithoutFeedbackProps> {

    }


    /**
     * @see https://facebook.github.io/react-native/docs/touchablehighlight.html#props
     */
    export interface TouchableHighlightProperties extends TouchableWithoutFeedbackProperties, React.Props<TouchableHighlightStatic> {

        /**
         * Determines what the opacity of the wrapped view should be when touch is active.
         */
        activeOpacity?: number

        /**
         *
         * Called immediately after the underlay is hidden
         */
        onHideUnderlay?: () => void

        /**
         * Called immediately after the underlay is shown
         */
        onShowUnderlay?: () => void

        /**
         * @see https://facebook.github.io/react-native/docs/view.html#style
         */
        style?: ViewStyle


        /**
         * The color of the underlay that will show through when the touch is active.
         */
        underlayColor?: string
    }

    /**
     * A wrapper for making views respond properly to touches.
     * On press down, the opacity of the wrapped view is decreased,
     * which allows the underlay color to show through, darkening or tinting the view.
     * The underlay comes from adding a view to the view hierarchy,
     * which can sometimes cause unwanted visual artifacts if not used correctly,
     * for example if the backgroundColor of the wrapped view isn't explicitly set to an opaque color.
     *
     * NOTE: TouchableHighlight supports only one child
     * If you wish to have several child components, wrap them in a View.
     *
     * @see https://facebook.github.io/react-native/docs/touchablehighlight.html
     */
    export interface TouchableHighlightStatic extends React.ComponentClass<TouchableHighlightProperties> {
    }


    /**
     * @see https://facebook.github.io/react-native/docs/touchableopacity.html#props
     */
    export interface TouchableOpacityProperties extends TouchableWithoutFeedbackProperties, React.Props<TouchableOpacityStatic> {
        /**
         * Determines what the opacity of the wrapped view should be when touch is active.
         * Defaults to 0.2
         */
        activeOpacity?: number
    }

    /**
     * A wrapper for making views respond properly to touches.
     * On press down, the opacity of the wrapped view is decreased, dimming it.
     * This is done without actually changing the view hierarchy,
     * and in general is easy to add to an app without weird side-effects.
     *
     * @see https://facebook.github.io/react-native/docs/touchableopacity.html
     */
    export interface TouchableOpacityStatic extends React.ComponentClass<TouchableOpacityProperties> {
    }


    /**
     * @see https://facebook.github.io/react-native/docs/touchableopacity.html#props
     */
    export interface TouchableNativeFeedbackProperties extends TouchableWithoutFeedbackProperties, React.Props<TouchableNativeFeedbackStatic> {
        /**
         * Determines the type of background drawable that's going to be used to display feedback.
         * It takes an object with type property and extra data depending on the type.
         * It's recommended to use one of the following static methods to generate that dictionary:
         *      1) TouchableNativeFeedback.SelectableBackground() - will create object that represents android theme's default background for selectable elements (?android:attr/selectableItemBackground)
         *      2) TouchableNativeFeedback.SelectableBackgroundBorderless() - will create object that represent android theme's default background for borderless selectable elements (?android:attr/selectableItemBackgroundBorderless). Available on android API level 21+
         *      3) TouchableNativeFeedback.Ripple(color, borderless) - will create object that represents ripple drawable with specified color (as a string). If property borderless evaluates to true the ripple will render outside of the view bounds (see native actionbar buttons as an example of that behavior). This background type is available on Android API level 21+
         */
        background?: any
    }

    /**
     * A wrapper for making views respond properly to touches (Android only).
     * On Android this component uses native state drawable to display touch feedback.
     * At the moment it only supports having a single View instance as a child node,
     * as it's implemented by replacing that View with another instance of RCTView node with some additional properties set.
     *
     * Background drawable of native feedback touchable can be customized with background property.
     *
     * @see https://facebook.github.io/react-native/docs/touchablenativefeedback.html#content
     */
    export interface TouchableNativeFeedbackStatic extends React.ComponentClass<TouchableNativeFeedbackProperties> {
        SelectableBackground: () => TouchableNativeFeedbackStatic
        SelectableBackgroundBorderless: () => TouchableNativeFeedbackStatic
        Ripple: ( color: string, borderless?: boolean ) => TouchableNativeFeedbackStatic
    }


    export interface LeftToRightGesture {
        //TODO:
    }

    export interface AnimationInterpolator {
        //TODO:
    }

    // see /NavigatorSceneConfigs.js
    export interface SceneConfig {
        // A list of all gestures that are enabled on this scene
        gestures: {
            pop: LeftToRightGesture,
        },

        // Rebound spring parameters when transitioning FROM this scene
        springFriction: number;
        springTension: number;

        // Velocity to start at when transitioning without gesture
        defaultTransitionVelocity: number;

        // Animation interpolators for horizontal transitioning:
        animationInterpolators: {
            into: AnimationInterpolator,
            out: AnimationInterpolator
        };

    }

    // see /NavigatorSceneConfigs.js
    export interface SceneConfigs {
        FloatFromBottom: SceneConfig;
        FloatFromRight: SceneConfig;
        PushFromRight: SceneConfig;
        FloatFromLeft: SceneConfig;
        HorizontalSwipeJump: SceneConfig;
    }

    export interface Route {
        component?: ComponentClass<ViewProperties>
        id?: string
        title?: string
        passProps?: Object;

        //anything else
        [key: string]: any

        //Commonly found properties
        backButtonTitle?: string
        content?: string
        message?: string;
        index?: number
        onRightButtonPress?: () => void
        rightButtonTitle?: string
        sceneConfig?: SceneConfig
        wrapperStyle?: any
    }


    /**
     * @see https://facebook.github.io/react-native/docs/navigator.html#content
     */
    export interface NavigatorProperties extends React.Props<Navigator> {
        /**
         * Optional function that allows configuration about scene animations and gestures.
         * Will be invoked with the route and should return a scene configuration object
         * @param route
         */
        configureScene?: ( route: Route ) => SceneConfig
        /**
         * Specify a route to start on.
         * A route is an object that the navigator will use to identify each scene to render.
         * initialRoute must be a route in the initialRouteStack if both props are provided.
         * The initialRoute will default to the last item in the initialRouteStack.
         */
        initialRoute?: Route
        /**
         * Provide a set of routes to initially mount.
         * Required if no initialRoute is provided.
         * Otherwise, it will default to an array containing only the initialRoute
         */
        initialRouteStack?: Route[]

        /**
         * Optionally provide a navigation bar that persists across scene transitions
         */
        navigationBar?: React.ReactElement<NavigatorStatic.NavigationBarProperties>

        /**
         * Optionally provide the navigator object from a parent Navigator
         */
        navigator?: Navigator

        /**
         * @deprecated Use navigationContext.addListener('willfocus', callback) instead.
         */
        onDidFocus?: Function

        /**
         * @deprecated Use navigationContext.addListener('willfocus', callback) instead.
         */
        onWillFocus?: Function

        /**
         * Required function which renders the scene for a given route.
         * Will be invoked with the route and the navigator object
         * @param route
         * @param navigator
         */
        renderScene?: ( route: Route, navigator: Navigator ) => React.ReactElement<ViewProperties>

        /**
         * Styles to apply to the container of each scene
         */
        sceneStyle?: ViewStyle

        /**
         * //FIXME: not found in doc but found in examples
         */
        debugOverlay?: boolean

    }

    /**
     * Use Navigator to transition between different scenes in your app.
     * To accomplish this, provide route objects to the navigator to identify each scene,
     * and also a renderScene function that the navigator can use to render the scene for a given route.
     *
     * To change the animation or gesture properties of the scene, provide a configureScene prop to get the config object for a given route.
     * See Navigator.SceneConfigs for default animations and more info on scene config options.
     * @see https://facebook.github.io/react-native/docs/navigator.html
     */
    export interface NavigatorStatic extends React.ComponentClass<NavigatorProperties> {
        SceneConfigs: SceneConfigs;
        NavigationBar: NavigatorStatic.NavigationBarStatic;
        BreadcrumbNavigationBar: NavigatorStatic.BreadcrumbNavigationBarStatic

        getContext( self: any ): NavigatorStatic;

        /**
         * returns the current list of routes
         */
        getCurrentRoutes(): Route[];

        /**
         * Jump backward without unmounting the current scen
         */
        jumpBack(): void;

        /**
         * Jump forward to the next scene in the route stack
         */
        jumpForward(): void;

        /**
         * Transition to an existing scene without unmounting
         */
        jumpTo( route: Route ): void;

        /**
         * Navigate forward to a new scene, squashing any scenes that you could jumpForward to
         */
        push( route: Route ): void;

        /**
         * Transition back and unmount the current scene
         */
        pop(): void;

        /**
         * Replace the current scene with a new route
         */
        replace( route: Route ): void;

        /**
         * Replace a scene as specified by an index
         */
        replaceAtIndex( route: Route, index: number ): void;

        /**
         *  Replace the previous scene
         */
        replacePrevious( route: Route ): void;

        /**
         * Reset every scene with an array of routes
         */
        immediatelyResetRouteStack( routes: Route[] ): void;

        /**
         * Pop to a particular scene, as specified by its route. All scenes after it will be unmounted
         */
        popToRoute( route: Route ): void;

        /**
         * Pop to the first scene in the stack, unmounting every other scene
         */
        popToTop(): void;

    }

    namespace NavigatorStatic {


        export interface NavState {
            routeStack: Route[]
            idStack: number[]
            presentedIndex: number
        }

        export interface NavigationBarStyle {
            //TODO @see NavigationBarStyle.ios.js
        }


        export interface NavigationBarRouteMapper {
            Title: ( route: Route, nav: Navigator, index: number, navState: NavState ) => React.ReactElement<any>;
            LeftButton: ( route: Route, nav: Navigator, index: number, navState: NavState )=> React.ReactElement<any>;
            RightButton: ( route: Route, nav: Navigator, index: number, navState: NavState )=> React.ReactElement<any>;
        }

        /**
         * @see NavigatorNavigationBar.js
         */
        export interface NavigationBarProperties extends React.Props<NavigationBarStatic> {
            navigator?: Navigator
            routeMapper?: NavigationBarRouteMapper
            navState?: NavState
            style?: ViewStyle
        }

        export interface NavigationBarStatic extends React.ComponentClass<NavigationBarProperties> {
            Styles: NavigationBarStyle

        }

        export type NavigationBar = NavigationBarStatic
        export var NavigationBar: NavigationBarStatic


        export interface BreadcrumbNavigationBarStyle {
            //TODO &see NavigatorBreadcrumbNavigationBar.js
        }

        export interface BreadcrumbNavigationBarRouteMapper {
            rightContentForRoute: ( route: Route, navigator: Navigator ) => React.ReactElement<any>
            titleContentForRoute: ( route: Route, navigator: Navigator ) => React.ReactElement<any>
            iconForRoute: ( route: Route, navigator: Navigator ) => React.ReactElement<any>
            //in samples...
            separatorForRoute: ( route: Route, navigator: Navigator ) => React.ReactElement<any>
        }

        /**
         * @see NavigatorNavigationBar.js
         */
        export interface BreadcrumbNavigationBarProperties extends React.Props<BreadcrumbNavigationBarStatic> {
            navigator?: Navigator
            routeMapper?: BreadcrumbNavigationBarRouteMapper
            navState?: NavState
            style?: ViewStyle
        }

        export interface BreadcrumbNavigationBarStatic extends React.ComponentClass<BreadcrumbNavigationBarProperties> {
            Styles: BreadcrumbNavigationBarStyle
        }

        export type BreadcrumbNavigationBar = BreadcrumbNavigationBarStatic
        var BreadcrumbNavigationBar: BreadcrumbNavigationBarStatic

    }


    export interface StyleSheetStatic extends React.ComponentClass<StyleSheetProperties> {
        create<T>( styles: T ): T;
    }

    /**
     * //FIXME: Could not find docs. Inferred from examples and jscode : ListViewDataSource.js
     */
    export interface DataSourceAssetCallback {
        rowHasChanged?: ( r1: any, r2: any ) => boolean
        sectionHeaderHasChanged?: ( h1: any, h2: any ) => boolean
        getRowData?: <T>( dataBlob: any, sectionID: number | string, rowID: number | string ) => T
        getSectionHeaderData?: <T>( dataBlob: any, sectionID: number | string ) => T
    }

    /**
     * //FIXME: Could not find docs. Inferred from examples and js showapi_res_code: ListViewDataSource.js
     */
    export interface ListViewDataSource {
        new( onAsset: DataSourceAssetCallback ): ListViewDataSource;
        /**
         * Clones this `ListViewDataSource` with the specified `dataBlob` and
         * `rowIdentities`. The `dataBlob` is just an aribitrary blob of data. At
         * construction an extractor to get the interesting informatoin was defined
         * (or the default was used).
         *
         * The `rowIdentities` is is a 2D array of identifiers for rows.
         * ie. [['a1', 'a2'], ['b1', 'b2', 'b3'], ...].  If not provided, it's
         * assumed that the keys of the section data are the row identities.
         *
         * Note: This function does NOT clone the data in this data source. It simply
         * passes the functions defined at construction to a new data source with
         * the data specified. If you wish to maintain the existing data you must
         * handle merging of old and new data separately and then pass that into
         * this function as the `dataBlob`.
         */
        cloneWithRows<T>( dataBlob: Array<any> | {[key: string ]: any}, rowIdentities?: Array<string | number> ): ListViewDataSource

        /**
         * This performs the same function as the `cloneWithRows` function but here
         * you also specify what your `sectionIdentities` are. If you don't care
         * about sections you should safely be able to use `cloneWithRows`.
         *
         * `sectionIdentities` is an array of identifiers for  sections.
         * ie. ['s1', 's2', ...].  If not provided, it's assumed that the
         * keys of dataBlob are the section identities.
         *
         * Note: this returns a new object!
         */
        cloneWithRowsAndSections( dataBlob: Array<any> | {[key: string]: any}, sectionIdentities?: Array<string | number>, rowIdentities?: Array<Array<string | number>> ): ListViewDataSource

        getRowCount(): number

        /**
         * Gets the data required to render the row.
         */
        getRowData( sectionIndex: number, rowIndex: number ): any

        /**
         * Gets the rowID at index provided if the dataSource arrays were flattened,
         * or null of out of range indexes.
         */
        getRowIDForFlatIndex( index: number ): string

        /**
         * Gets the sectionID at index provided if the dataSource arrays were flattened,
         * or null for out of range indexes.
         */
        getSectionIDForFlatIndex( index: number ): string

        /**
         * Returns an array containing the number of rows in each section
         */
        getSectionLengths(): Array<number>

        /**
         * Returns if the section header is dirtied and needs to be rerendered
         */
        sectionHeaderShouldUpdate( sectionIndex: number ): boolean

        /**
         * Gets the data required to render the section header
         */
        getSectionHeaderData( sectionIndex: number ): any
    }


    /**
     * @see https://facebook.github.io/react-native/docs/tabbarios-item.html#props
     */
    export interface TabBarItemProperties extends React.Props<TabBarItemStatic> {

        /**
         * Little red bubble that sits at the top right of the icon.
         */
        badge?:  string | number

        /**
         * A custom icon for the tab. It is ignored when a system icon is defined.
         */
        icon?: {uri: string} | string

        /**
         * Callback when this tab is being selected,
         * you should change the state of your component to set selected={true}.
         */
        onPress?: () => void

        /**
         * It specifies whether the children are visible or not. If you see a blank content, you probably forgot to add a selected one.
         */
        selected?: boolean

        /**
         * A custom icon when the tab is selected.
         * It is ignored when a system icon is defined. If left empty, the icon will be tinted in blue.
         */
        selectedIcon?: {uri: string} | string;

        /**
         * React style object.
         */
        style?: ViewStyle

        /**
         * Items comes with a few predefined system icons.
         * Note that if you are using them, the title and selectedIcon will be overridden with the system ones.
         *
         *  enum('bookmarks', 'contacts', 'downloads', 'favorites', 'featured', 'history', 'more', 'most-recent', 'most-viewed', 'recents', 'search', 'top-rated')
         */
        systemIcon: string

        /**
         * Text that appears under the icon. It is ignored when a system icon is defined.
         */
        title?: string

    }

    export interface TabBarItemStatic extends React.ComponentClass<TabBarItemProperties> {
    }

    /**
     * @see https://facebook.github.io/react-native/docs/tabbarios.html#props
     */
    export interface TabBarIOSProperties extends React.Props<TabBarIOSStatic> {

        /**
         * Background color of the tab bar
         */
        barTintColor?: string

        style?: ViewStyle

        /**
         * Color of the currently selected tab icon
         */
        tintColor?: string

        /**
         * A Boolean value that indicates whether the tab bar is translucent
         */
        translucent?: boolean
    }

    export interface TabBarIOSStatic extends React.ComponentClass<TabBarIOSProperties> {
        Item: TabBarItemStatic;
    }


    export interface PixelRatioStatic {
        get(): number;
    }

    export interface DeviceEventSubscriptionStatic {
        remove(): void;
    }

    export interface DeviceEventEmitterStatic {
        addListener<T>( type: string, onReceived: ( data: T ) => void ): DeviceEventSubscription;
    }

    // Used by Dimensions below
    export interface ScaledSize {
        width: number;
        height: number;
        scale: number;
    }


    export interface InteractionManagerStatic {
        runAfterInteractions( fn: () => void ): void;
    }


    export interface ScrollViewStyle extends FlexStyle, TransformsStyle {

        backfaceVisibility?:string //enum('visible', 'hidden')
        backgroundColor?: string
        borderColor?: string
        borderTopColor?: string
        borderRightColor?: string
        borderBottomColor?: string
        borderLeftColor?: string
        borderRadius?: number
        borderTopLeftRadius?: number
        borderTopRightRadius?: number
        borderBottomLeftRadius?: number
        borderBottomRightRadius?: number
        borderStyle?: string //enum('solid', 'dotted', 'dashed')
  
Download .txt
gitextract_j2m0kka4/

├── .flowconfig
├── .gitignore
├── .vscode/
│   ├── launchReactNative.js
│   ├── settings.json
│   └── typings/
│       ├── react/
│       │   ├── react-addons-create-fragment.d.ts
│       │   ├── react-addons-css-transition-group.d.ts
│       │   ├── react-addons-linked-state-mixin.d.ts
│       │   ├── react-addons-perf.d.ts
│       │   ├── react-addons-pure-render-mixin.d.ts
│       │   ├── react-addons-test-utils.d.ts
│       │   ├── react-addons-transition-group.d.ts
│       │   ├── react-addons-update.d.ts
│       │   ├── react-dom.d.ts
│       │   ├── react-global.d.ts
│       │   └── react.d.ts
│       └── react-native/
│           └── react-native.d.ts
├── README.md
├── app/
│   ├── .gitignore
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── wkw/
│       │               └── hot/
│       │                   └── ApplicationTest.java
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── wkw/
│       │   │           └── hot/
│       │   │               ├── adapter/
│       │   │               │   └── FragmentAdapter.java
│       │   │               ├── base/
│       │   │               │   ├── BaseActivity.java
│       │   │               │   ├── BaseFragment.java
│       │   │               │   ├── BaseLazyFragment.java
│       │   │               │   ├── BaseLoadMoreAdapter.java
│       │   │               │   ├── BaseOnScrollListener.java
│       │   │               │   ├── BasePresenter.java
│       │   │               │   ├── ILoadingView.java
│       │   │               │   ├── IPresenter.java
│       │   │               │   ├── IView.java
│       │   │               │   └── page/
│       │   │               │       ├── BaseLazyPageFragment.java
│       │   │               │       ├── BaseListAdapter.java
│       │   │               │       ├── BasePageFragment.java
│       │   │               │       └── IDataVIew.java
│       │   │               ├── cache/
│       │   │               │   ├── CacheLoader.java
│       │   │               │   ├── DiskCache.java
│       │   │               │   ├── ICache.java
│       │   │               │   ├── MemoryCache.java
│       │   │               │   └── NetworkCache.java
│       │   │               ├── common/
│       │   │               │   └── Constants.java
│       │   │               ├── data/
│       │   │               │   ├── DataManager.java
│       │   │               │   └── api/
│       │   │               │       └── HotApi.java
│       │   │               ├── entity/
│       │   │               │   ├── ListPopularEntity.java
│       │   │               │   ├── PagePopularEntity.java
│       │   │               │   └── PopularEntity.java
│       │   │               ├── mapper/
│       │   │               │   └── PopularModelDataMapper.java
│       │   │               ├── model/
│       │   │               │   └── PopularModel.java
│       │   │               ├── navigator/
│       │   │               │   └── Navigator.java
│       │   │               ├── reject/
│       │   │               │   ├── ContextLife.java
│       │   │               │   ├── PerActivity.java
│       │   │               │   ├── PerFragment.java
│       │   │               │   ├── component/
│       │   │               │   │   ├── ActivityComponent.java
│       │   │               │   │   ├── AppComponent.java
│       │   │               │   │   └── FragmentComponent.java
│       │   │               │   └── module/
│       │   │               │       ├── ActivityModule.java
│       │   │               │       ├── AppModule.java
│       │   │               │       └── FragmentModule.java
│       │   │               ├── ui/
│       │   │               │   ├── AboutActivity.java
│       │   │               │   ├── App.java
│       │   │               │   ├── item/
│       │   │               │   │   ├── ItemAdapter.java
│       │   │               │   │   ├── ItemContract.java
│       │   │               │   │   ├── ItemFragment.java
│       │   │               │   │   └── ItemPresenter.java
│       │   │               │   ├── main/
│       │   │               │   │   ├── MainActivity.java
│       │   │               │   │   ├── MainContract.java
│       │   │               │   │   └── MainPresenter.java
│       │   │               │   ├── react/
│       │   │               │   │   └── MyReactActivity.java
│       │   │               │   ├── search/
│       │   │               │   │   └── SearchActivity.java
│       │   │               │   └── web/
│       │   │               │       ├── WebActivity.java
│       │   │               │       ├── WebContract.java
│       │   │               │       └── WebPresenter.java
│       │   │               └── utils/
│       │   │                   ├── GlideManager.java
│       │   │                   └── Logger.java
│       │   └── res/
│       │       ├── drawable/
│       │       │   ├── custom_cursor.xml
│       │       │   ├── progress_bar_bg.xml
│       │       │   └── side_nav_bar.xml
│       │       ├── drawable-v21/
│       │       │   ├── ic_menu_camera.xml
│       │       │   ├── ic_menu_gallery.xml
│       │       │   ├── ic_menu_manage.xml
│       │       │   ├── ic_menu_send.xml
│       │       │   ├── ic_menu_share.xml
│       │       │   └── ic_menu_slideshow.xml
│       │       ├── layout/
│       │       │   ├── activity_about.xml
│       │       │   ├── activity_main.xml
│       │       │   ├── activity_search.xml
│       │       │   ├── activity_web.xml
│       │       │   ├── app_bar_main.xml
│       │       │   ├── fragment_item.xml
│       │       │   ├── fragment_list.xml
│       │       │   ├── layout_item.xml
│       │       │   ├── layout_toolbar_view.xml
│       │       │   └── nav_header_main.xml
│       │       ├── menu/
│       │       │   ├── activity_main_drawer.xml
│       │       │   ├── main.xml
│       │       │   └── menu_web.xml
│       │       ├── values/
│       │       │   ├── arrays.xml
│       │       │   ├── colors.xml
│       │       │   ├── dimens.xml
│       │       │   ├── drawables.xml
│       │       │   ├── strings.xml
│       │       │   └── styles.xml
│       │       ├── values-v21/
│       │       │   └── styles.xml
│       │       └── values-w820dp/
│       │           └── dimens.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── wkw/
│                       └── hot/
│                           └── ExampleUnitTest.java
├── build.gradle
├── common_lib/
│   ├── .gitignore
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src/
│       ├── androidTest/
│       │   └── java/
│       │       └── com/
│       │           └── wkw/
│       │               └── common_lib/
│       │                   └── ApplicationTest.java
│       ├── main/
│       │   ├── AndroidManifest.xml
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── wkw/
│       │   │           └── common_lib/
│       │   │               ├── Ext.java
│       │   │               ├── image/
│       │   │               │   ├── ImageConfig.java
│       │   │               │   ├── ImageLoader.java
│       │   │               │   ├── ImageLoaderStrategy.java
│       │   │               │   └── glide/
│       │   │               │       ├── GlideImageConfig.java
│       │   │               │       └── GlideImageLoaderStrategy.java
│       │   │               ├── network/
│       │   │               │   ├── AccessPoint.java
│       │   │               │   ├── Network.java
│       │   │               │   ├── NetworkDash.java
│       │   │               │   ├── NetworkObserver.java
│       │   │               │   ├── NetworkState.java
│       │   │               │   ├── NetworkStateListener.java
│       │   │               │   ├── NetworkType.java
│       │   │               │   ├── ServiceProvider.java
│       │   │               │   └── WifiDash.java
│       │   │               ├── rx/
│       │   │               │   ├── ApiResponse.java
│       │   │               │   ├── ProgressSubscriber.java
│       │   │               │   ├── RxBus.java
│       │   │               │   ├── RxResultHelper.java
│       │   │               │   ├── RxSubscriber.java
│       │   │               │   ├── SchedulersCompat.java
│       │   │               │   └── error/
│       │   │               │       ├── DefaultErrorBundle.java
│       │   │               │       ├── ErrorBundle.java
│       │   │               │       ├── ErrorHanding.java
│       │   │               │       ├── NetworkConnectionException.java
│       │   │               │       └── ServerException.java
│       │   │               ├── sp/
│       │   │               │   ├── Once.java
│       │   │               │   └── PersistedMap.java
│       │   │               ├── utils/
│       │   │               │   ├── AndroidUtils.java
│       │   │               │   ├── AppManager.java
│       │   │               │   ├── AppUtils.java
│       │   │               │   ├── DialogUtil.java
│       │   │               │   ├── HtmlUtils.java
│       │   │               │   ├── NetWorkUtils.java
│       │   │               │   ├── ProcessUtils.java
│       │   │               │   ├── PropertyUtils.java
│       │   │               │   ├── Singleton.java
│       │   │               │   ├── StringUtils.java
│       │   │               │   ├── ThreadUtils.java
│       │   │               │   ├── ToashUtils.java
│       │   │               │   └── ViewUtils.java
│       │   │               └── widget/
│       │   │                   ├── ClearEditText.java
│       │   │                   ├── CustomTabHost.java
│       │   │                   ├── ProgressLayout.java
│       │   │                   ├── TimerButton.java
│       │   │                   └── loadmore/
│       │   │                       ├── DefaultEmptyItem.java
│       │   │                       ├── DefaultFootItem.java
│       │   │                       ├── EmptyFootItem.java
│       │   │                       ├── EmptyItem.java
│       │   │                       ├── FootItem.java
│       │   │                       ├── OnLoadMoreListener.java
│       │   │                       ├── RecyclerViewUtils.java
│       │   │                       └── RecyclerViewWithFooter.java
│       │   └── res/
│       │       ├── layout/
│       │       │   ├── layout_error_view.xml
│       │       │   ├── layout_loading_footer_view.xml
│       │       │   ├── layout_loading_view.xml
│       │       │   ├── layout_no_data_view.xml
│       │       │   ├── rv_with_footer_empty_layout.xml
│       │       │   └── rv_with_footer_loading.xml
│       │       └── values/
│       │           ├── attrs.xml
│       │           ├── dimens.xml
│       │           ├── rv_with_footer_strings.xml
│       │           └── strings.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── wkw/
│                       └── common_lib/
│                           └── ExampleUnitTest.java
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── index.android.js
├── js/
│   ├── actions/
│   │   └── newsList.js
│   ├── components/
│   │   ├── Header.js
│   │   └── LoadingView.js
│   ├── constants/
│   │   ├── ActionTypes.js
│   │   └── Urls.js
│   ├── containes/
│   │   ├── App.js
│   │   ├── NewsContaines.js
│   │   └── WebViewContaines.js
│   ├── pages/
│   │   ├── News.js
│   │   └── WebViewPage.js
│   ├── reducers/
│   │   ├── index.js
│   │   └── newsList.js
│   ├── rootApp.js
│   ├── store/
│   │   └── store.js
│   └── utils/
│       ├── CommonUtil.js
│       ├── Services.js
│       └── ToastUtil.js
├── package.json
├── settings.gradle
├── tsconfig.json
└── version.gradle
Download .txt
SYMBOL INDEX (1215 symbols across 130 files)

FILE: .vscode/typings/react-native/react-native.d.ts
  type Promise (line 32) | interface Promise<T> {
  type PromiseConstructor (line 53) | interface PromiseConstructor {
  type ReactClass (line 126) | interface ReactClass<D, P, S> {
  type Runnable (line 136) | type Runnable = ( appParameters: any ) => void;
  type NativeSyntheticEvent (line 140) | interface NativeSyntheticEvent<T> {
  type NativeTouchEvent (line 155) | interface NativeTouchEvent {
  type GestureResponderEvent (line 202) | interface GestureResponderEvent extends NativeSyntheticEvent<NativeTouch...
  type PointProperties (line 206) | interface  PointProperties {
  type Insets (line 211) | interface Insets {
  type NativeComponent (line 221) | interface NativeComponent {
  type Touchable (line 229) | interface Touchable {
  type AppConfig (line 237) | type AppConfig = {
  class AppRegistry (line 244) | class AppRegistry {
  type LayoutAnimationTypes (line 254) | interface LayoutAnimationTypes {
  type LayoutAnimationProperties (line 262) | interface LayoutAnimationProperties {
  type LayoutAnimationAnim (line 267) | interface LayoutAnimationAnim {
  type LayoutAnimationConfig (line 276) | interface LayoutAnimationConfig {
  type LayoutAnimationStatic (line 283) | interface LayoutAnimationStatic {
  type FlexStyle (line 303) | interface FlexStyle {
  type TransformsStyle (line 340) | interface TransformsStyle {
  type StyleSheetProperties (line 352) | interface StyleSheetProperties {
  type LayoutRectangle (line 356) | interface LayoutRectangle {
  type LayoutChangeEvent (line 364) | interface LayoutChangeEvent {
  type TextStyle (line 371) | interface TextStyle extends ViewStyle {
  type TextPropertiesIOS (line 387) | interface TextPropertiesIOS {
  type TextProperties (line 397) | interface TextProperties extends React.Props<TextProperties> {
  type TextStatic (line 436) | interface TextStatic extends React.ComponentClass<TextProperties> {
  type TextInputIOSProperties (line 445) | interface TextInputIOSProperties {
  type TextInputAndroidProperties (line 501) | interface TextInputAndroidProperties {
  type TextInputProperties (line 531) | interface TextInputProperties extends TextInputIOSProperties, TextInputA...
  type TextInputStatic (line 663) | interface TextInputStatic extends NativeComponent, React.ComponentClass<...
  type GestureResponderHandlers (line 694) | interface GestureResponderHandlers {
  type ViewStyle (line 786) | interface ViewStyle extends FlexStyle, TransformsStyle {
  type ViewPropertiesIOS (line 807) | interface ViewPropertiesIOS {
  type ViewPropertiesAndroid (line 830) | interface ViewPropertiesAndroid {
  type ViewProperties (line 901) | interface ViewProperties extends ViewPropertiesAndroid, ViewPropertiesIO...
  type ViewStatic (line 978) | interface ViewStatic extends NativeComponent, React.ComponentClass<ViewP...
  type NavState (line 985) | interface NavState {
  type WebViewPropertiesAndroid (line 996) | interface WebViewPropertiesAndroid {
  type WebViewPropertiesIOS (line 1004) | interface WebViewPropertiesIOS {
  type WebViewProperties (line 1015) | interface WebViewProperties extends WebViewPropertiesAndroid, WebViewPro...
  type WebViewStatic (line 1058) | interface WebViewStatic extends React.ComponentClass<WebViewProperties> {
  type SegmentedControlIOSProperties (line 1069) | interface SegmentedControlIOSProperties {
  type NavigatorIOSProperties (line 1074) | interface NavigatorIOSProperties extends React.Props<NavigatorIOSStatic> {
  type NavigationIOS (line 1127) | interface NavigationIOS {
  type NavigatorIOSStatic (line 1174) | interface NavigatorIOSStatic extends NavigationIOS, React.ComponentClass...
  type ActivityIndicatorIOSProperties (line 1181) | interface ActivityIndicatorIOSProperties extends React.Props<ActivityInd...
  type ActivityIndicatorIOSStatic (line 1214) | interface ActivityIndicatorIOSStatic extends React.ComponentClass<Activi...
  type DatePickerIOSProperties (line 1218) | interface DatePickerIOSProperties extends React.Props<DatePickerIOSStati...
  type DatePickerIOSStatic (line 1266) | interface DatePickerIOSStatic extends React.ComponentClass<DatePickerIOS...
  type PickerIOSItemProperties (line 1273) | interface PickerIOSItemProperties extends React.Props<PickerIOSItemStati...
  type PickerIOSItemStatic (line 1281) | interface PickerIOSItemStatic extends React.ComponentClass<PickerIOSItem...
  type PickerIOSProperties (line 1289) | interface PickerIOSProperties extends React.Props<PickerIOSStatic> {
  type PickerIOSStatic (line 1302) | interface PickerIOSStatic extends React.ComponentClass<PickerIOSProperti...
  type SliderIOSProperties (line 1311) | interface SliderIOSProperties extends React.Props<SliderIOSStatic> {
  type SliderIOSStatic (line 1371) | interface SliderIOSStatic extends React.ComponentClass<SliderIOSProperti...
  type SwitchIOSStyle (line 1379) | interface SwitchIOSStyle extends ViewStyle {
  type SwitchIOSProperties (line 1388) | interface SwitchIOSProperties extends React.Props<SwitchIOSStatic> {
  type SwitchIOSStatic (line 1432) | interface SwitchIOSStatic extends React.ComponentClass<SwitchIOSProperti...
  type ImageResizeModeStatic (line 1440) | interface ImageResizeModeStatic {
  type ImageStyle (line 1463) | interface ImageStyle extends FlexStyle, TransformsStyle {
  type ImagePropertiesIOS (line 1474) | interface ImagePropertiesIOS {
  type ImageProperties (line 1527) | interface ImageProperties extends ImagePropertiesIOS, React.Props<Image> {
  type ImageStatic (line 1565) | interface ImageStatic extends React.ComponentClass<ImageProperties> {
  type ListViewProperties (line 1574) | interface ListViewProperties extends ScrollViewProperties, React.Props<L...
  type ListViewStatic (line 1683) | interface ListViewStatic extends React.ComponentClass<ListViewProperties> {
  type MapViewAnnotation (line 1688) | interface MapViewAnnotation {
  type MapViewRegion (line 1701) | interface MapViewRegion {
  type MapViewPropertiesIOS (line 1708) | interface MapViewPropertiesIOS {
  type MapViewProperties (line 1717) | interface MapViewProperties extends MapViewPropertiesIOS, Touchable, Rea...
  type MapViewStatic (line 1819) | interface MapViewStatic extends React.ComponentClass<MapViewProperties> {
  type TouchableWithoutFeedbackAndroidProperties (line 1823) | interface TouchableWithoutFeedbackAndroidProperties {
  type TouchableWithoutFeedbackIOSProperties (line 1834) | interface TouchableWithoutFeedbackIOSProperties {
  type TouchableWithoutFeedbackProperties (line 1849) | interface TouchableWithoutFeedbackProperties extends TouchableWithoutFee...
  type TouchableWithoutFeedbackProps (line 1897) | interface TouchableWithoutFeedbackProps extends TouchableWithoutFeedback...
  type TouchableWithoutFeedbackStatic (line 1908) | interface TouchableWithoutFeedbackStatic extends React.ComponentClass<To...
  type TouchableHighlightProperties (line 1916) | interface TouchableHighlightProperties extends TouchableWithoutFeedbackP...
  type TouchableHighlightStatic (line 1959) | interface TouchableHighlightStatic extends React.ComponentClass<Touchabl...
  type TouchableOpacityProperties (line 1966) | interface TouchableOpacityProperties extends TouchableWithoutFeedbackPro...
  type TouchableOpacityStatic (line 1982) | interface TouchableOpacityStatic extends React.ComponentClass<TouchableO...
  type TouchableNativeFeedbackProperties (line 1989) | interface TouchableNativeFeedbackProperties extends TouchableWithoutFeed...
  type TouchableNativeFeedbackStatic (line 2011) | interface TouchableNativeFeedbackStatic extends React.ComponentClass<Tou...
  type LeftToRightGesture (line 2018) | interface LeftToRightGesture {
  type AnimationInterpolator (line 2022) | interface AnimationInterpolator {
  type SceneConfig (line 2027) | interface SceneConfig {
  type SceneConfigs (line 2049) | interface SceneConfigs {
  type Route (line 2057) | interface Route {
  type NavigatorProperties (line 2081) | interface NavigatorProperties extends React.Props<Navigator> {
  type NavigatorStatic (line 2151) | interface NavigatorStatic extends React.ComponentClass<NavigatorProperti...
  type NavState (line 2223) | interface NavState {
  type NavigationBarStyle (line 2229) | interface NavigationBarStyle {
  type NavigationBarRouteMapper (line 2234) | interface NavigationBarRouteMapper {
  type NavigationBarProperties (line 2243) | interface NavigationBarProperties extends React.Props<NavigationBarStati...
  type NavigationBarStatic (line 2250) | interface NavigationBarStatic extends React.ComponentClass<NavigationBar...
  type NavigationBar (line 2255) | type NavigationBar = NavigationBarStatic
  type BreadcrumbNavigationBarStyle (line 2259) | interface BreadcrumbNavigationBarStyle {
  type BreadcrumbNavigationBarRouteMapper (line 2263) | interface BreadcrumbNavigationBarRouteMapper {
  type BreadcrumbNavigationBarProperties (line 2274) | interface BreadcrumbNavigationBarProperties extends React.Props<Breadcru...
  type BreadcrumbNavigationBarStatic (line 2281) | interface BreadcrumbNavigationBarStatic extends React.ComponentClass<Bre...
  type BreadcrumbNavigationBar (line 2285) | type BreadcrumbNavigationBar = BreadcrumbNavigationBarStatic
  type StyleSheetStatic (line 2291) | interface StyleSheetStatic extends React.ComponentClass<StyleSheetProper...
  type DataSourceAssetCallback (line 2298) | interface DataSourceAssetCallback {
  type ListViewDataSource (line 2308) | interface ListViewDataSource {
  type TabBarItemProperties (line 2380) | interface TabBarItemProperties extends React.Props<TabBarItemStatic> {
  type TabBarItemStatic (line 2429) | interface TabBarItemStatic extends React.ComponentClass<TabBarItemProper...
  type TabBarIOSProperties (line 2435) | interface TabBarIOSProperties extends React.Props<TabBarIOSStatic> {
  type TabBarIOSStatic (line 2455) | interface TabBarIOSStatic extends React.ComponentClass<TabBarIOSProperti...
  type PixelRatioStatic (line 2460) | interface PixelRatioStatic {
  type DeviceEventSubscriptionStatic (line 2464) | interface DeviceEventSubscriptionStatic {
  type DeviceEventEmitterStatic (line 2468) | interface DeviceEventEmitterStatic {
  type ScaledSize (line 2473) | interface ScaledSize {
  type InteractionManagerStatic (line 2480) | interface InteractionManagerStatic {
  type ScrollViewStyle (line 2485) | interface ScrollViewStyle extends FlexStyle, TransformsStyle {
  type ScrollViewIOSProperties (line 2514) | interface ScrollViewIOSProperties {
  type ScrollViewProperties (line 2668) | interface ScrollViewProperties extends ScrollViewIOSProperties, Touchable {
  type ScrollViewProps (line 2741) | interface ScrollViewProps extends ScrollViewProperties, React.Props<Scro...
  type ScrollViewStatic (line 2745) | interface ScrollViewStatic extends React.ComponentClass<ScrollViewProps> {
  type NativeScrollRectangle (line 2750) | interface NativeScrollRectangle {
  type NativeScrollPoint (line 2757) | interface NativeScrollPoint {
  type NativeScrollSize (line 2762) | interface NativeScrollSize {
  type NativeScrollEvent (line 2767) | interface NativeScrollEvent {
  type ActionSheetIOSOptions (line 2785) | interface ActionSheetIOSOptions {
  type ShareActionSheetIOSOptions (line 2795) | interface ShareActionSheetIOSOptions {
  type ActionSheetIOSStatic (line 2804) | interface ActionSheetIOSStatic {
  type AdSupportIOSStatic (line 2813) | interface AdSupportIOSStatic {
  type AlertIOSButton (line 2818) | interface AlertIOSButton {
  type AlertIOSStatic (line 2834) | interface AlertIOSStatic {
  type AppStateIOSStatic (line 2856) | interface AppStateIOSStatic {
  type AsyncStorageStatic (line 2871) | interface AsyncStorageStatic {
  type CameraRollFetchParams (line 2929) | interface CameraRollFetchParams {
  type CameraRollNodeInfo (line 2937) | interface CameraRollNodeInfo {
  type CameraRollEdgeInfo (line 2944) | interface CameraRollEdgeInfo {
  type CameraRollAssetInfo (line 2948) | interface CameraRollAssetInfo {
  type CameraRollStatic (line 2959) | interface CameraRollStatic {
  type FetchableListenable (line 2991) | interface FetchableListenable<T> {
  type NetInfoStatic (line 3019) | interface NetInfoStatic extends FetchableListenable<string> {
  type PanResponderGestureState (line 3033) | interface PanResponderGestureState {
  type PanResponderCallbacks (line 3094) | interface PanResponderCallbacks {
  type PanResponderInstance (line 3110) | interface PanResponderInstance {
  type PanResponderStatic (line 3122) | interface PanResponderStatic {
  type PushNotificationPermissions (line 3157) | interface PushNotificationPermissions {
  type PushNotification (line 3163) | interface PushNotification {
  type PushNotificationIOSStatic (line 3200) | interface PushNotificationIOSStatic {
  type StatusBarStyle (line 3258) | type StatusBarStyle = string
  type StatusBarAnimation (line 3263) | type StatusBarAnimation = string
  type StatusBarIOSStatic (line 3271) | interface StatusBarIOSStatic {
  type VibrationIOSStatic (line 3291) | interface VibrationIOSStatic {
  type ActivityIndicatorIOS (line 3305) | type ActivityIndicatorIOS = ActivityIndicatorIOSStatic
  type DatePickerIOS (line 3308) | type DatePickerIOS = DatePickerIOSStatic
  type Image (line 3311) | type Image = ImageStatic
  type LayoutAnimation (line 3314) | type LayoutAnimation = LayoutAnimationStatic
  type ListView (line 3317) | type ListView = ListViewStatic
  type MapView (line 3320) | type MapView = MapViewStatic
  type Navigator (line 3323) | type Navigator = NavigatorStatic
  type NavigatorIOS (line 3326) | type NavigatorIOS = NavigatorIOSStatic
  type PickerIOS (line 3329) | type PickerIOS = PickerIOSStatic
  type SliderIOS (line 3332) | type SliderIOS = SliderIOSStatic
  type ScrollView (line 3335) | type ScrollView = ScrollViewStatic
  type StyleSheet (line 3338) | type StyleSheet = StyleSheetStatic
  type SwitchIOS (line 3341) | type SwitchIOS = SwitchIOSStatic
  type TabBarIOS (line 3344) | type TabBarIOS = TabBarIOSStatic
  type Text (line 3347) | type Text = TextStatic
  type TextInput (line 3350) | type TextInput = TextInputStatic
  type TouchableHighlight (line 3353) | type TouchableHighlight = TouchableHighlightStatic
  type TouchableNativeFeedback (line 3356) | type TouchableNativeFeedback = TouchableNativeFeedbackStatic
  type TouchableOpacity (line 3359) | type TouchableOpacity = TouchableOpacityStatic
  type TouchableWithoutFeedback (line 3362) | type TouchableWithoutFeedback= TouchableWithoutFeedbackStatic
  type View (line 3365) | type View = ViewStatic
  type WebView (line 3368) | type WebView = WebViewStatic
  type ActionSheetIOS (line 3373) | type ActionSheetIOS = ActionSheetIOSStatic
  type AdSupportIOS (line 3376) | type AdSupportIOS = AdSupportIOSStatic
  type AlertIOS (line 3379) | type AlertIOS = AlertIOSStatic
  type AppStateIOS (line 3382) | type AppStateIOS = AppStateIOSStatic
  type AsyncStorage (line 3385) | type AsyncStorage = AsyncStorageStatic
  type CameraRoll (line 3388) | type CameraRoll = CameraRollStatic
  type NetInfo (line 3391) | type NetInfo = NetInfoStatic
  type PanResponder (line 3394) | type PanResponder = PanResponderStatic
  type PushNotificationIOS (line 3397) | type PushNotificationIOS = PushNotificationIOSStatic
  type StatusBarIOS (line 3400) | type StatusBarIOS = StatusBarIOSStatic
  type VibrationIOS (line 3403) | type VibrationIOS = VibrationIOSStatic
  type DeviceEventSubscription (line 3415) | type DeviceEventSubscription = DeviceEventSubscriptionStatic
  type GlobalStatic (line 3427) | interface GlobalStatic {
  type TestModuleStatic (line 3445) | interface TestModuleStatic {
  type TestModule (line 3453) | type TestModule = TestModuleStatic
  type Dimensions (line 3474) | interface Dimensions {

FILE: .vscode/typings/react/react-addons-css-transition-group.d.ts
  type CSSTransitionGroupTransitionName (line 10) | interface CSSTransitionGroupTransitionName {
  type CSSTransitionGroupProps (line 19) | interface CSSTransitionGroupProps extends TransitionGroupProps {
  type CSSTransitionGroup (line 29) | type CSSTransitionGroup = ComponentClass<CSSTransitionGroupProps>;
  type CSSTransitionGroup (line 38) | type CSSTransitionGroup = __React.CSSTransitionGroup;

FILE: .vscode/typings/react/react-addons-linked-state-mixin.d.ts
  type ReactLink (line 9) | interface ReactLink<T> {
  type LinkedStateMixin (line 14) | interface LinkedStateMixin extends Mixin<any, any> {
  type HTMLAttributes (line 18) | interface HTMLAttributes {
  type LinkedStateMixin (line 30) | type LinkedStateMixin = __React.LinkedStateMixin;

FILE: .vscode/typings/react/react-addons-perf.d.ts
  type ComponentPerfContext (line 9) | interface ComponentPerfContext {
  type NumericPerfContext (line 14) | interface NumericPerfContext {
  type Measurements (line 18) | interface Measurements {

FILE: .vscode/typings/react/react-addons-pure-render-mixin.d.ts
  type PureRenderMixin (line 9) | interface PureRenderMixin extends Mixin<any, any> {}
  type PureRenderMixin (line 18) | type PureRenderMixin = __React.PureRenderMixin;

FILE: .vscode/typings/react/react-addons-test-utils.d.ts
  type SyntheticEventData (line 9) | interface SyntheticEventData {
  type EventSimulator (line 43) | interface EventSimulator {
  type MockedComponentClass (line 48) | interface MockedComponentClass {
  class ShallowRenderer (line 52) | class ShallowRenderer {

FILE: .vscode/typings/react/react-addons-transition-group.d.ts
  type TransitionGroupProps (line 10) | interface TransitionGroupProps {
  type TransitionGroup (line 15) | type TransitionGroup = ComponentClass<TransitionGroupProps>;
  type TransitionGroup (line 24) | type TransitionGroup = __React.TransitionGroup;

FILE: .vscode/typings/react/react-addons-update.d.ts
  type UpdateSpecCommand (line 9) | interface UpdateSpecCommand {
  type UpdateSpecPath (line 15) | interface UpdateSpecPath {
  type UpdateSpec (line 19) | type UpdateSpec = UpdateSpecCommand | UpdateSpecPath;
  type UpdateArraySpec (line 21) | interface UpdateArraySpec extends UpdateSpecCommand {

FILE: .vscode/typings/react/react.d.ts
  type ReactType (line 12) | type ReactType = string | ComponentClass<any> | StatelessComponent<any>;
  type ReactElement (line 14) | interface ReactElement<P extends Props<any>> {
  type ClassicElement (line 21) | interface ClassicElement<P> extends ReactElement<P> {
  type DOMElement (line 26) | interface DOMElement<P extends Props<Element>> extends ReactElement<P> {
  type ReactHTMLElement (line 31) | interface ReactHTMLElement extends DOMElement<HTMLProps<HTMLElement>> {
  type ReactSVGElement (line 35) | interface ReactSVGElement extends DOMElement<SVGProps> {
  type Factory (line 43) | interface Factory<P> {
  type ClassicFactory (line 47) | interface ClassicFactory<P> extends Factory<P> {
  type DOMFactory (line 51) | interface DOMFactory<P extends Props<Element>> extends Factory<P> {
  type HTMLFactory (line 55) | type HTMLFactory = DOMFactory<HTMLProps<HTMLElement>>;
  type SVGFactory (line 56) | type SVGFactory = DOMFactory<SVGProps>;
  type ReactText (line 63) | type ReactText = string | number;
  type ReactChild (line 64) | type ReactChild = ReactElement<any> | ReactText;
  type ReactFragment (line 67) | type ReactFragment = {} | Array<ReactChild | any[] | boolean>;
  type ReactNode (line 68) | type ReactNode = ReactChild | ReactFragment | boolean;
  type ReactInstance (line 116) | type ReactInstance = Component<any, any> | Element;
  class Component (line 119) | class Component<P, S> implements ComponentLifecycle<P, S> {
  type ClassicComponent (line 133) | interface ClassicComponent<P, S> extends Component<P, S> {
  type ChildContextProvider (line 139) | interface ChildContextProvider<CC> {
  type StatelessComponent (line 147) | interface StatelessComponent<P> {
  type ComponentClass (line 155) | interface ComponentClass<P> {
  type ClassicComponentClass (line 163) | interface ClassicComponentClass<P> extends ComponentClass<P> {
  type ComponentLifecycle (line 173) | interface ComponentLifecycle<P, S> {
  type Mixin (line 183) | interface Mixin<P, S> extends ComponentLifecycle<P, S> {
  type ComponentSpec (line 198) | interface ComponentSpec<P, S> extends Mixin<P, S> {
  type SyntheticEvent (line 208) | interface SyntheticEvent {
  type ClipboardEvent (line 223) | interface ClipboardEvent extends SyntheticEvent {
  type CompositionEvent (line 227) | interface CompositionEvent extends SyntheticEvent {
  type DragEvent (line 231) | interface DragEvent extends SyntheticEvent {
  type FocusEvent (line 235) | interface FocusEvent extends SyntheticEvent {
  type FormEvent (line 239) | interface FormEvent extends SyntheticEvent {
  type KeyboardEvent (line 242) | interface KeyboardEvent extends SyntheticEvent {
  type MouseEvent (line 257) | interface MouseEvent extends SyntheticEvent {
  type TouchEvent (line 274) | interface TouchEvent extends SyntheticEvent {
  type UIEvent (line 285) | interface UIEvent extends SyntheticEvent {
  type WheelEvent (line 290) | interface WheelEvent extends SyntheticEvent {
  type EventHandler (line 301) | interface EventHandler<E extends SyntheticEvent> {
  type ReactEventHandler (line 305) | type ReactEventHandler = EventHandler<SyntheticEvent>;
  type ClipboardEventHandler (line 307) | type ClipboardEventHandler = EventHandler<ClipboardEvent>;
  type CompositionEventHandler (line 308) | type CompositionEventHandler = EventHandler<CompositionEvent>;
  type DragEventHandler (line 309) | type DragEventHandler = EventHandler<DragEvent>;
  type FocusEventHandler (line 310) | type FocusEventHandler = EventHandler<FocusEvent>;
  type FormEventHandler (line 311) | type FormEventHandler = EventHandler<FormEvent>;
  type KeyboardEventHandler (line 312) | type KeyboardEventHandler = EventHandler<KeyboardEvent>;
  type MouseEventHandler (line 313) | type MouseEventHandler = EventHandler<MouseEvent>;
  type TouchEventHandler (line 314) | type TouchEventHandler = EventHandler<TouchEvent>;
  type UIEventHandler (line 315) | type UIEventHandler = EventHandler<UIEvent>;
  type WheelEventHandler (line 316) | type WheelEventHandler = EventHandler<WheelEvent>;
  type Props (line 322) | interface Props<T> {
  type HTMLProps (line 328) | interface HTMLProps<T> extends HTMLAttributes, Props<T> {
  type SVGProps (line 331) | interface SVGProps extends SVGAttributes, Props<SVGElement> {
  type DOMAttributes (line 334) | interface DOMAttributes {
  type CSSProperties (line 429) | interface CSSProperties {
  type HTMLAttributes (line 1692) | interface HTMLAttributes extends DOMAttributes {
  type SVGAttributes (line 1843) | interface SVGAttributes extends HTMLAttributes {
  type ReactDOM (line 1905) | interface ReactDOM {
  type Validator (line 2045) | interface Validator<T> {
  type Requireable (line 2049) | interface Requireable<T> extends Validator<T> {
  type ValidationMap (line 2053) | interface ValidationMap<T> {
  type ReactPropTypes (line 2057) | interface ReactPropTypes {
  type ReactChildren (line 2079) | interface ReactChildren {
  type AbstractView (line 2092) | interface AbstractView {
  type Touch (line 2097) | interface Touch {
  type TouchList (line 2108) | interface TouchList {
  type Element (line 2123) | interface Element extends React.ReactElement<any> { }
  type ElementClass (line 2124) | interface ElementClass extends React.Component<any, any> {
  type ElementAttributesProperty (line 2127) | interface ElementAttributesProperty { props: {}; }
  type IntrinsicAttributes (line 2129) | interface IntrinsicAttributes {
  type IntrinsicClassAttributes (line 2133) | interface IntrinsicClassAttributes<T> {
  type IntrinsicElements (line 2137) | interface IntrinsicElements {

FILE: app/src/androidTest/java/com/wkw/hot/ApplicationTest.java
  class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
    method ApplicationTest (line 10) | public ApplicationTest() {

FILE: app/src/main/java/com/wkw/hot/adapter/FragmentAdapter.java
  class FragmentAdapter (line 13) | public class FragmentAdapter extends FragmentPagerAdapter {
    method FragmentAdapter (line 18) | public FragmentAdapter(FragmentManager fm) {
    method addFragment (line 24) | public void addFragment(Fragment fragment, String title) {
    method getItem (line 29) | @Override
    method getCount (line 34) | @Override
    method getPageTitle (line 39) | @Override

FILE: app/src/main/java/com/wkw/hot/base/BaseActivity.java
  class BaseActivity (line 22) | public abstract class BaseActivity<T extends IPresenter> extends AppComp...
    method onCreate (line 29) | @Override
    method setCommonBackToolBack (line 42) | protected void setCommonBackToolBack(Toolbar toolbar, String title) {
    method onDestroy (line 50) | @Override
    method setupActivityComponent (line 62) | protected abstract void setupActivityComponent(AppComponent appCompone...
    method getLayout (line 64) | protected abstract int getLayout();
    method initEventAndData (line 65) | protected abstract void initEventAndData();

FILE: app/src/main/java/com/wkw/hot/base/BaseFragment.java
  class BaseFragment (line 24) | public abstract class BaseFragment<T extends IPresenter> extends Fragmen...
    method onAttach (line 30) | @Override
    method onCreateView (line 38) | @Nullable
    method onViewCreated (line 46) | @Override
    method onActivityCreated (line 54) | @Override
    method onDestroyView (line 60) | @Override
    method onDestroy (line 66) | @Override
    method setupActivityComponent (line 77) | protected abstract void setupActivityComponent(AppComponent appCompone...
    method getLayoutId (line 79) | protected abstract int getLayoutId();
    method initEventAndData (line 80) | protected abstract void initEventAndData();

FILE: app/src/main/java/com/wkw/hot/base/BaseLazyFragment.java
  class BaseLazyFragment (line 11) | public abstract class BaseLazyFragment<T extends IPresenter> extends Bas...
    method onDetach (line 19) | @Override
    method onActivityCreated (line 35) | @Override
    method onResume (line 41) | @Override
    method onPause (line 53) | @Override
    method setUserVisibleHint (line 61) | @Override
    method initPrepare (line 81) | private synchronized void initPrepare() {
    method onFirstUserVisible (line 92) | protected abstract void onFirstUserVisible();
    method onUserVisible (line 97) | protected abstract void onUserVisible();
    method onFirstUserInvisible (line 102) | private void onFirstUserInvisible() {
    method onUserInvisible (line 109) | protected abstract void onUserInvisible();

FILE: app/src/main/java/com/wkw/hot/base/BaseLoadMoreAdapter.java
  class BaseLoadMoreAdapter (line 19) | public abstract class BaseLoadMoreAdapter<T, VH extends RecyclerView.Vie...
    class FooterViewHolder (line 28) | public static class FooterViewHolder extends RecyclerView.ViewHolder {
      method FooterViewHolder (line 32) | public FooterViewHolder(View itemView) {
    method setLoading (line 39) | public void setLoading(boolean loading) {
    method onBindViewHolder (line 43) | @Override
    method onCreateViewHolder (line 58) | @Override
    method onBindItemViewHolder (line 68) | public abstract void onBindItemViewHolder(VH holder, T data, int posit...
    method onCreateItemViewHolder (line 69) | public abstract VH onCreateItemViewHolder(ViewGroup parent, int viewTy...
    method getItemViewType (line 71) | @Override
    method getItemCount (line 80) | @Override
    method addLoadMoreData (line 85) | public void addLoadMoreData(List<T> data) {
    method addRefreshData (line 93) | public void addRefreshData(List<T> data) {
    method canLoadMore (line 101) | public boolean canLoadMore() {

FILE: app/src/main/java/com/wkw/hot/base/BaseOnScrollListener.java
  class BaseOnScrollListener (line 9) | public abstract class BaseOnScrollListener extends RecyclerView.OnScroll...
    method onScrolled (line 12) | @Override
    method onScrollStateChanged (line 19) | @Override
    method onLoadMore (line 28) | public abstract void onLoadMore();

FILE: app/src/main/java/com/wkw/hot/base/BasePresenter.java
  class BasePresenter (line 15) | public abstract class BasePresenter<T extends IView> implements IPresent...
    method attachView (line 20) | @Override
    method unSubscribe (line 27) | protected void unSubscribe() {
    method addSubscribe (line 33) | protected void addSubscribe(Subscription subscription) {
    method detachView (line 40) | @Override

FILE: app/src/main/java/com/wkw/hot/base/ILoadingView.java
  type ILoadingView (line 8) | public interface ILoadingView extends IView {
    method showLoading (line 9) | void showLoading();
    method showContent (line 10) | void showContent();
    method showNotData (line 11) | void showNotData();
    method showError (line 12) | void showError(String msg);
    method context (line 13) | Context context();

FILE: app/src/main/java/com/wkw/hot/base/IPresenter.java
  type IPresenter (line 6) | public interface IPresenter<T extends IView> {
    method attachView (line 7) | void attachView(T view);
    method detachView (line 8) | void detachView();

FILE: app/src/main/java/com/wkw/hot/base/IView.java
  type IView (line 6) | public interface IView {

FILE: app/src/main/java/com/wkw/hot/base/page/BaseLazyPageFragment.java
  class BaseLazyPageFragment (line 12) | public abstract class BaseLazyPageFragment<T extends IPresenter> extends...
    method onDetach (line 20) | @Override
    method onActivityCreated (line 36) | @Override
    method onResume (line 42) | @Override
    method onPause (line 54) | @Override
    method setUserVisibleHint (line 62) | @Override
    method initPrepare (line 82) | private synchronized void initPrepare() {
    method onFirstUserVisible (line 93) | protected abstract void onFirstUserVisible();
    method onUserVisible (line 98) | protected abstract void onUserVisible();
    method onFirstUserInvisible (line 103) | private void onFirstUserInvisible() {
    method onUserInvisible (line 110) | protected abstract void onUserInvisible();

FILE: app/src/main/java/com/wkw/hot/base/page/BaseListAdapter.java
  class BaseListAdapter (line 13) | public abstract class BaseListAdapter<MODEL> extends RecyclerView.Adapter {
    method getItemCount (line 18) | @Override public int getItemCount() {
    method addLoadMoreData (line 22) | public void addLoadMoreData(List<MODEL> data) {
    method addRefreshData (line 28) | public void addRefreshData(List<MODEL> data) {

FILE: app/src/main/java/com/wkw/hot/base/page/BasePageFragment.java
  class BasePageFragment (line 23) | public abstract class BasePageFragment<T extends IPresenter> extends Bas...
    method initEventAndData (line 38) | @Override protected void initEventAndData() {
    method getLayoutId (line 46) | @Override protected int getLayoutId() {
    method showContent (line 65) | @Override public void showContent() {
    method showLoading (line 72) | @Override public void showLoading() {
    method showError (line 83) | @Override public void showError(String msg) {
    method setOnRefresh (line 92) | public void setOnRefresh() {
    method showNotData (line 100) | @Override public void showNotData() {
    method setData (line 111) | public void setData(List data) {
    method context (line 156) | @Override public Context context() {
    method fetchData (line 161) | protected abstract void fetchData(int currentPageIndex);
    method getAdapter (line 164) | protected abstract BaseListAdapter getAdapter();
    method getLayoutManager (line 166) | protected abstract RecyclerView.LayoutManager getLayoutManager();

FILE: app/src/main/java/com/wkw/hot/base/page/IDataVIew.java
  type IDataVIew (line 12) | public interface IDataVIew extends IView{
    method showLoading (line 13) | void showLoading();
    method showContent (line 14) | void showContent();
    method showNotData (line 15) | void showNotData();
    method showError (line 16) | void showError(String msg);
    method context (line 17) | Context context();

FILE: app/src/main/java/com/wkw/hot/cache/CacheLoader.java
  class CacheLoader (line 14) | public class CacheLoader {
    method getApplication (line 17) | public static Application getApplication() {
    method CacheLoader (line 23) | private CacheLoader() {
    method getInstance (line 30) | public static CacheLoader getInstance(Context context) {
    method asDataObservable (line 43) | public <T> Observable<T> asDataObservable(String key, Class<T> cls, Ne...
    method memory (line 58) | private <T> Observable<T> memory(String key, Class<T> cls) {
    method disk (line 70) | private <T> Observable<T> disk(final String key, Class<T> cls) {
    method upNewData (line 84) | public  <T> void upNewData(final String key, T t) {
    method network (line 98) | private <T> Observable<T> network(final String key, Class<T> cls
    method clearMemory (line 115) | public void clearMemory(String key) {
    method clearMemoryDisk (line 121) | public void clearMemoryDisk(String key) {

FILE: app/src/main/java/com/wkw/hot/cache/DiskCache.java
  class DiskCache (line 24) | public class DiskCache implements ICache{
    method DiskCache (line 30) | public DiskCache() {
    method get (line 34) | @Override
    method put (line 60) | @Override
    method isSave (line 83) | private <T> boolean isSave(String fileName, T t) {
    method getDiskData (line 107) | private Object getDiskData(String fileName) {
    method closeSilently (line 136) | private void closeSilently(Closeable closeable) {
    method isCacheDataFailure (line 150) | private boolean isCacheDataFailure(File dataFile) {
    method clearDisk (line 168) | public void clearDisk(String key) {

FILE: app/src/main/java/com/wkw/hot/cache/ICache.java
  type ICache (line 8) | public interface ICache {
    method get (line 9) | <T> Observable<T> get(String key, Class<T> cls);
    method put (line 11) | <T> void put(String key, T t);

FILE: app/src/main/java/com/wkw/hot/cache/MemoryCache.java
  class MemoryCache (line 16) | public class MemoryCache implements ICache{
    method MemoryCache (line 20) | public MemoryCache() {
    method get (line 36) | @Override
    method put (line 60) | @Override
    method clearMemory (line 67) | public void clearMemory(String key) {

FILE: app/src/main/java/com/wkw/hot/cache/NetworkCache.java
  class NetworkCache (line 8) | public abstract class NetworkCache<T> {
    method get (line 9) | public abstract Observable<T> get(String key, final Class<T> cls);

FILE: app/src/main/java/com/wkw/hot/common/Constants.java
  class Constants (line 6) | public class Constants {

FILE: app/src/main/java/com/wkw/hot/data/DataManager.java
  class DataManager (line 26) | public class DataManager {
    method DataManager (line 32) | @Inject
    method getTabs (line 44) | public List<String> getTabs() {
    method getPopular (line 61) | public Observable<List<PopularEntity>> getPopular(int pn, String type) {
    method getCachePopular (line 84) | public Observable<List<PopularEntity>> getCachePopular(String type) {

FILE: app/src/main/java/com/wkw/hot/data/api/HotApi.java
  type HotApi (line 12) | public interface HotApi {
    method getPopular (line 14) | @GET("582-2")

FILE: app/src/main/java/com/wkw/hot/entity/ListPopularEntity.java
  class ListPopularEntity (line 9) | public class ListPopularEntity implements Serializable {
    method ListPopularEntity (line 12) | public ListPopularEntity(List<PopularEntity> data) {

FILE: app/src/main/java/com/wkw/hot/entity/PagePopularEntity.java
  class PagePopularEntity (line 12) | public class PagePopularEntity {
    method getRetCode (line 19) | public int getRetCode() {
    method setRetCode (line 24) | public void setRetCode(int retCode) {
    method getPagebean (line 29) | public Pagebean getPagebean() {
    method setPagebean (line 34) | public void setPagebean(Pagebean pagebean) {
    class Pagebean (line 39) | public static class Pagebean {
      method getMaxResult (line 52) | public int getMaxResult() {
      method setMaxResult (line 57) | public void setMaxResult(int maxResult) {
      method getAllPages (line 62) | public int getAllPages() {
      method setAllPages (line 67) | public void setAllPages(int allPages) {
      method getContentlist (line 72) | public List<PopularEntity> getContentlist() {
      method setContentlist (line 77) | public void setContentlist(List<PopularEntity> contentlist) {
      method getCurrentPage (line 82) | public int getCurrentPage() {
      method setCurrentPage (line 87) | public void setCurrentPage(int currentPage) {
      method getAllNum (line 92) | public int getAllNum() {
      method setAllNum (line 97) | public void setAllNum(int allNum) {

FILE: app/src/main/java/com/wkw/hot/entity/PopularEntity.java
  class PopularEntity (line 9) | public class PopularEntity implements Serializable{
    method toString (line 12) | @Override
    method getCtime (line 42) | public String getCtime() {
    method setCtime (line 46) | public void setCtime(String ctime) {
    method getTitle (line 50) | public String getTitle() {
    method setTitle (line 54) | public void setTitle(String title) {
    method getDescription (line 58) | public String getDescription() {
    method setDescription (line 62) | public void setDescription(String description) {
    method getPicUrl (line 66) | public String getPicUrl() {
    method setPicUrl (line 70) | public void setPicUrl(String picUrl) {
    method getUrl (line 74) | public String getUrl() {
    method setUrl (line 78) | public void setUrl(String url) {

FILE: app/src/main/java/com/wkw/hot/mapper/PopularModelDataMapper.java
  class PopularModelDataMapper (line 15) | public class PopularModelDataMapper {
    method PopularModelDataMapper (line 17) | @Inject
    method transform (line 22) | public PopularModel transform(PopularEntity popularEntity) {
    method transform (line 36) | public List<PopularModel> transform(List<PopularEntity> popularList) {

FILE: app/src/main/java/com/wkw/hot/model/PopularModel.java
  class PopularModel (line 9) | public class PopularModel {
    method toString (line 18) | @Override public String toString() {
    method getCtime (line 29) | public String getCtime() {
    method setCtime (line 34) | public void setCtime(String ctime) {
    method getDescription (line 39) | public String getDescription() {
    method setDescription (line 44) | public void setDescription(String description) {
    method getTitle (line 49) | public String getTitle() {
    method setTitle (line 54) | public void setTitle(String title) {
    method getPicUrl (line 59) | public String getPicUrl() {
    method setPicUrl (line 64) | public void setPicUrl(String picUrl) {
    method getUrl (line 69) | public String getUrl() {
    method setUrl (line 74) | public void setUrl(String url) {

FILE: app/src/main/java/com/wkw/hot/navigator/Navigator.java
  class Navigator (line 12) | public class Navigator {
    method Navigator (line 14) | @Inject
    method navigateToAbout (line 19) | public void navigateToAbout(Context context) {
    method navigateToMyReact (line 25) | public void navigateToMyReact(Context context) {

FILE: app/src/main/java/com/wkw/hot/reject/component/ActivityComponent.java
  type ActivityComponent (line 17) | @PerActivity
    method getDataManager (line 21) | DataManager getDataManager();
    method getActivity (line 23) | Activity getActivity();
    method inject (line 25) | void inject(MainActivity mainActivity);
    method inject (line 26) | void inject(WebActivity webActivity);

FILE: app/src/main/java/com/wkw/hot/reject/component/AppComponent.java
  type AppComponent (line 15) | @Singleton
    method getContext (line 19) | @ContextLife("Application")
    method getDataManager (line 22) | DataManager getDataManager();

FILE: app/src/main/java/com/wkw/hot/reject/component/FragmentComponent.java
  type FragmentComponent (line 15) | @PerFragment
    method getDataManager (line 19) | DataManager getDataManager();
    method getActivity (line 21) | Activity getActivity();
    method inject (line 23) | void inject(ItemFragment itemFragment);

FILE: app/src/main/java/com/wkw/hot/reject/module/ActivityModule.java
  class ActivityModule (line 13) | @Module
    method ActivityModule (line 17) | public ActivityModule(Activity activity) {
    method provideActivity (line 21) | @Provides

FILE: app/src/main/java/com/wkw/hot/reject/module/AppModule.java
  class AppModule (line 29) | @Module
    method AppModule (line 34) | public AppModule(App application) {
    method provideApp (line 39) | @Provides
    method provideOkHttpClient (line 47) | @Provides
    method provideHotApi (line 67) | @Provides
    method provideNavigator (line 81) | @Provides
    method provideCacheLoader (line 87) | @Provides
    method provideDataManager (line 93) | @Provides

FILE: app/src/main/java/com/wkw/hot/reject/module/FragmentModule.java
  class FragmentModule (line 15) | @Module
    method FragmentModule (line 20) | public FragmentModule(Fragment fragment) {
    method provideActivity (line 24) | @Provides

FILE: app/src/main/java/com/wkw/hot/ui/AboutActivity.java
  class AboutActivity (line 20) | public class AboutActivity extends BaseActivity {
    method startActivity (line 29) | public static void startActivity(Context context) {
    method setupActivityComponent (line 34) | @Override
    method getLayout (line 39) | @Override
    method initEventAndData (line 44) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/App.java
  class App (line 26) | public class App extends Application implements ReactApplication{
    method getUseDeveloperSupport (line 32) | @Override
    method getPackages (line 37) | @Override
    method onCreate (line 44) | @Override
    method initImageLoader (line 59) | private void initImageLoader() {
    method initExtension (line 64) | private void initExtension() {
    method getReactNativeHost (line 68) | @Override
    class ExtImpl (line 73) | public static final class ExtImpl extends Ext {
      method getCurOpenId (line 75) | @Override
      method getDeviceInfo (line 80) | @Override
      method getPackageNameForResource (line 85) | @Override
      method getScreenHeight (line 90) | @Override
      method getScreenWidth (line 95) | @Override
      method isAvailable (line 100) | @Override
      method isWap (line 105) | @Override
      method isMobile (line 110) | @Override
      method is2G (line 115) | @Override
      method is3G (line 120) | @Override
      method isWifi (line 125) | @Override
      method isEthernet (line 130) | @Override
    method getAppComponent (line 136) | public static AppComponent getAppComponent() {
    method getAppContext (line 139) | public static App getAppContext() {

FILE: app/src/main/java/com/wkw/hot/ui/item/ItemAdapter.java
  class ItemAdapter (line 25) | public class ItemAdapter extends BaseLoadMoreAdapter<PopularModel, ItemA...
    method setOnItemClickListener (line 30) | public void setOnItemClickListener(OnItemClickListener listener) {
    method onBindItemViewHolder (line 34) | @Override
    method onCreateItemViewHolder (line 47) | @Override
    class ViewHolder (line 54) | public class ViewHolder extends RecyclerView.ViewHolder {
      method ViewHolder (line 64) | public ViewHolder(View itemView) {
    type OnItemClickListener (line 75) | public interface OnItemClickListener {
      method onItemClick (line 76) | void onItemClick(String url, String title);

FILE: app/src/main/java/com/wkw/hot/ui/item/ItemContract.java
  class ItemContract (line 13) | public class ItemContract {
    type View (line 14) | interface View extends ILoadingView {
      method addLoadMoreData (line 15) | void addLoadMoreData(List<PopularModel> data);
      method addRefreshData (line 16) | void addRefreshData(List<PopularModel> data);
    type Presenter (line 18) | interface Presenter extends IPresenter<View> {
      method getListData (line 19) | void getListData(String type);
      method getCacheData (line 20) | void getCacheData(String type);

FILE: app/src/main/java/com/wkw/hot/ui/item/ItemFragment.java
  class ItemFragment (line 33) | public class ItemFragment extends BaseLazyFragment<ItemPresenter> implem...
    method newInstance (line 49) | public static ItemFragment newInstance(String type) {
    method onFirstUserVisible (line 60) | @Override
    method onUserVisible (line 66) | @Override
    method onUserInvisible (line 71) | @Override
    class NetworkChangeListener (line 76) | class NetworkChangeListener implements NetworkStateListener {
      method onNetworkStateChanged (line 78) | @Override
    method setupActivityComponent (line 90) | @Override
    method getLayoutId (line 99) | @Override
    method initEventAndData (line 104) | @Override
    method addLoadMoreData (line 138) | @Override
    method addRefreshData (line 143) | @Override
    method showLoading (line 149) | @Override
    method hideRefreshLayout (line 155) | private void hideRefreshLayout() {
    method showContent (line 163) | @Override
    method showNotData (line 168) | @Override
    method showError (line 173) | @Override
    method context (line 180) | @Override public Context context() {
    method onDelete (line 185) | @OnClick(value = R.id.img_delete)
    method showNetWorkLayout (line 190) | private void showNetWorkLayout() {
    method hideNetWorkLayout (line 195) | private void hideNetWorkLayout() {
    method onDestroy (line 202) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/item/ItemPresenter.java
  class ItemPresenter (line 16) | public class ItemPresenter extends BasePresenter<ItemContract.View> impl...
    method replacePn (line 22) | protected void replacePn() {
    method isRefresh (line 26) | private boolean isRefresh() {
    method ItemPresenter (line 30) | @Inject
    method getListData (line 36) | @Override
    method getCacheData (line 64) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/main/MainActivity.java
  class MainActivity (line 35) | public class MainActivity extends BaseActivity<MainPresenter>
    method setupActivityComponent (line 60) | @Override
    method getLayout (line 70) | @Override
    method initEventAndData (line 75) | @Override
    method onBackPressed (line 119) | @Override
    method onCreateOptionsMenu (line 133) | @Override
    method onOptionsItemSelected (line 144) | @Override
    method onNavigationItemSelected (line 150) | @SuppressWarnings("StatementWithEmptyBody")
    method addTabs (line 165) | @Override
    method onActivityResult (line 176) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/main/MainContract.java
  type MainContract (line 11) | public interface MainContract {
    type View (line 13) | interface View extends IView {
      method addTabs (line 14) | void addTabs(List<String> tabs);
    type Presenter (line 18) | interface Presenter extends IPresenter<View> {
      method getTabs (line 19) | void getTabs();

FILE: app/src/main/java/com/wkw/hot/ui/main/MainPresenter.java
  class MainPresenter (line 10) | public class MainPresenter extends BasePresenter<MainContract.View> impl...
    method MainPresenter (line 13) | @Inject
    method getTabs (line 18) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/react/MyReactActivity.java
  class MyReactActivity (line 9) | public class MyReactActivity extends MrReactActivity {
    method getMainComponentName (line 13) | @Override
    method getReactInfo (line 18) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/search/SearchActivity.java
  class SearchActivity (line 19) | public class SearchActivity extends BaseActivity {
    method startActivity (line 26) | public static void startActivity(Context context, String type) {
    method onCreate (line 33) | @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    method loadFragment (line 44) | private void loadFragment(Fragment fragment) {
    method setupActivityComponent (line 52) | @Override
    method getLayout (line 58) | @Override protected int getLayout() {
    method initEventAndData (line 63) | @Override protected void initEventAndData() {

FILE: app/src/main/java/com/wkw/hot/ui/web/WebActivity.java
  class WebActivity (line 31) | public class WebActivity extends BaseActivity<WebPresenter> implements W...
    method startActivity (line 46) | public static void startActivity(Context context, String url, String t...
    method getLayout (line 54) | @Override
    method initEventAndData (line 59) | @Override
    method onResume (line 76) | @Override
    method onPause (line 82) | @Override
    method onKeyDown (line 88) | @Override
    method setupActivityComponent (line 106) | @Override
    method onCreateOptionsMenu (line 115) | @Override
    method onOptionsItemSelected (line 122) | @Override
    method onDestroy (line 143) | @Override
    class ChromeClient (line 152) | private class ChromeClient extends WebChromeClient {
      method onProgressChanged (line 153) | @Override
      method onReceivedTitle (line 164) | @Override
    class Client (line 169) | private class Client extends WebViewClient {
      method shouldOverrideUrlLoading (line 170) | @Override

FILE: app/src/main/java/com/wkw/hot/ui/web/WebContract.java
  class WebContract (line 9) | public class WebContract {
    type View (line 10) | interface View extends IView {
    type Presenter (line 12) | interface Presenter extends IPresenter<View> {

FILE: app/src/main/java/com/wkw/hot/ui/web/WebPresenter.java
  class WebPresenter (line 10) | public class WebPresenter extends BasePresenter<WebContract.View> implem...
    method WebPresenter (line 13) | @Inject

FILE: app/src/main/java/com/wkw/hot/utils/GlideManager.java
  class GlideManager (line 12) | public class GlideManager {
    method loadListImageView (line 14) | public static void loadListImageView(Context context, String url, Imag...

FILE: app/src/main/java/com/wkw/hot/utils/Logger.java
  class Logger (line 8) | public class Logger {
    method d (line 13) | public static void d(String msg) {
    method i (line 19) | public static void i(String msg) {
    method e (line 24) | public static void e(String msg) {
    method w (line 29) | public static void w(String msg) {
    method v (line 33) | public static void v(String msg) {

FILE: app/src/test/java/com/wkw/hot/ExampleUnitTest.java
  class ExampleUnitTest (line 10) | public class ExampleUnitTest {
    method addition_isCorrect (line 11) | @Test

FILE: common_lib/src/androidTest/java/com/wkw/common_lib/ApplicationTest.java
  class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
    method ApplicationTest (line 10) | public ApplicationTest() {

FILE: common_lib/src/main/java/com/wkw/common_lib/Ext.java
  class Ext (line 12) | public abstract class Ext {
    method g (line 25) | public static Ext g() {
    method init (line 32) | public static void init(Application app, Ext instance) {
    method initVersionCodeAndName (line 40) | private static void initVersionCodeAndName(Context context) {
    method getContext (line 53) | public static Context getContext() {
    method getApplication (line 57) | public static Application getApplication() {
    method getCurOpenId (line 61) | public abstract String getCurOpenId();
    method getDeviceInfo (line 63) | public abstract String getDeviceInfo();
    method getPackageNameForResource (line 65) | public abstract String getPackageNameForResource();
    method getPackageName (line 67) | public String getPackageName() {
    method getVersionCode (line 71) | public int getVersionCode() {
    method getVersionName (line 75) | public String getVersionName() {
    method getBuilderNumber (line 79) | public String getBuilderNumber() {
    method getScreenHeight (line 83) | public abstract int getScreenHeight();
    method getScreenWidth (line 85) | public abstract int getScreenWidth();
    method isAvailable (line 88) | public abstract boolean isAvailable();
    method isWap (line 90) | public abstract boolean isWap();
    method isMobile (line 92) | public abstract boolean isMobile();
    method is2G (line 94) | public abstract boolean is2G();
    method is3G (line 96) | public abstract boolean is3G();
    method isWifi (line 98) | public abstract boolean isWifi();
    method isEthernet (line 100) | public abstract boolean isEthernet();

FILE: common_lib/src/main/java/com/wkw/common_lib/image/ImageConfig.java
  class ImageConfig (line 11) | public class ImageConfig {
    method getUrl (line 19) | public String getUrl() {
    method getImageView (line 24) | public ImageView getImageView() {
    method getPlaceholder (line 29) | public int getPlaceholder() {
    method getErrorPic (line 34) | public int getErrorPic() {

FILE: common_lib/src/main/java/com/wkw/common_lib/image/ImageLoader.java
  class ImageLoader (line 14) | public class ImageLoader {
    method ImageLoader (line 18) | public ImageLoader() {
    method setImageLoaderStragety (line 22) | public void setImageLoaderStragety(ImageLoaderStrategy imageLoaderStra...
    method displayImage (line 27) | public <T extends ImageConfig> void  displayImage(Context context, T c...
    method getInstance (line 33) | public static ImageLoader getInstance() {
    class ImageLoaderInstance (line 38) | public static class ImageLoaderInstance {

FILE: common_lib/src/main/java/com/wkw/common_lib/image/ImageLoaderStrategy.java
  type ImageLoaderStrategy (line 11) | public interface ImageLoaderStrategy<T extends ImageConfig> {
    method loadImage (line 12) | void loadImage(Context context, T t);

FILE: common_lib/src/main/java/com/wkw/common_lib/image/glide/GlideImageConfig.java
  class GlideImageConfig (line 12) | public class GlideImageConfig extends ImageConfig {
    method GlideImageConfig (line 16) | public GlideImageConfig(Builder builder) {
    method getCacheStrategy (line 25) | public int getCacheStrategy() {
    method setCacheStrategy (line 30) | public void setCacheStrategy(int cacheStrategy) {
    method builder (line 34) | public static Builder builder() {
    class Builder (line 38) | public static final class Builder {
      method Builder (line 45) | private Builder() {
      method url (line 48) | public Builder url(String url) {
      method placeholder (line 53) | public Builder placeholder(int placeholder) {
      method errorPic (line 58) | public Builder errorPic(int errorPic){
      method imagerView (line 63) | public Builder imagerView(ImageView imageView) {
      method cacheStrategy (line 68) | public Builder cacheStrategy(int cacheStrategy) {
      method build (line 74) | public GlideImageConfig build() {

FILE: common_lib/src/main/java/com/wkw/common_lib/image/glide/GlideImageLoaderStrategy.java
  class GlideImageLoaderStrategy (line 17) | public class GlideImageLoaderStrategy implements ImageLoaderStrategy<Gli...
    method loadImage (line 19) | @Override public void loadImage(Context context, GlideImageConfig imag...

FILE: common_lib/src/main/java/com/wkw/common_lib/network/AccessPoint.java
  type AccessPoint (line 10) | enum  AccessPoint {
    method AccessPoint (line 70) | AccessPoint(String name, ServiceProvider provider, boolean isWap) {
    method forName (line 85) | public static AccessPoint forName(String name) {
    method getName (line 95) | public String getName() {
    method setName (line 99) | public void setName(String name) {
    method getProvider (line 108) | public ServiceProvider getProvider() {
    method setProvider (line 112) | public void setProvider(ServiceProvider provider) {
    method isWap (line 121) | public boolean isWap() {
    method setWap (line 125) | public void setWap(boolean wap) {

FILE: common_lib/src/main/java/com/wkw/common_lib/network/Network.java
  class Network (line 11) | public class Network extends NetworkDash {
    class Proxy (line 15) | public static abstract class Proxy {
      method getPort (line 16) | public static int getPort() {
      method getHost (line 20) | public static String getHost() {
    class Wifi (line 28) | public static class Wifi extends WifiDash {
    class Dns (line 32) | public static class Dns {
      method getDNS (line 33) | @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)

FILE: common_lib/src/main/java/com/wkw/common_lib/network/NetworkDash.java
  class NetworkDash (line 23) | class NetworkDash {
    method onNetworkChanged (line 35) | @Override
    method isAvailable (line 54) | public static boolean isAvailable() {
    method isAvailableFast (line 67) | public static boolean isAvailableFast() {
    method getAccessPoint (line 81) | public static AccessPoint getAccessPoint() {
    method getLocalIP (line 94) | public static String getLocalIP() {
    method getType (line 104) | public static NetworkType getType() {
    method getApnName (line 123) | public static String getApnName() {
    method getApnNameOrWifi (line 138) | public static String getApnNameOrWifi() {
    method getApnNameOrWifiOrEthernet (line 153) | public static String getApnNameOrWifiOrEthernet() {
    method getProvider (line 173) | public static ServiceProvider getProvider() {
    method getProvider (line 190) | public static ServiceProvider getProvider(boolean useIMSIFirst) {
    method updateIMSIProvider (line 209) | public static ServiceProvider updateIMSIProvider() {
    method getIMSI (line 226) | public static String getIMSI() {
    method getDeviceIdBySlot (line 248) | public static String getDeviceIdBySlot(Context context, int slotID) {
    method getIMSIProvider (line 282) | public static ServiceProvider getIMSIProvider() {
    method isWap (line 295) | public static boolean isWap() {
    method isMobile (line 304) | public static boolean isMobile() {
    method is2G (line 311) | public static boolean is2G() {
    method is3G (line 317) | public static boolean is3G() {
    method isWifi (line 328) | public static boolean isWifi() {
    method isEthernet (line 337) | public static boolean isEthernet() {
    method getCellLevel (line 350) | public static int getCellLevel() {
    method addListener (line 359) | public static void addListener(NetworkStateListener listener) {
    method removeListener (line 370) | public static void removeListener(NetworkStateListener listener) {
    method notifyNetworkStateChange (line 389) | private static void notifyNetworkStateChange() {
    method updateNetworkState (line 410) | public static boolean updateNetworkState() {
    method getCurrState (line 456) | public static NetworkState getCurrState() {
    method getLastState (line 460) | protected static NetworkState getLastState() {
    method setCurrState (line 469) | protected static boolean setCurrState(NetworkState newState) {

FILE: common_lib/src/main/java/com/wkw/common_lib/network/NetworkObserver.java
  class NetworkObserver (line 19) | abstract class NetworkObserver extends BroadcastReceiver{
    method onNetworkChanged (line 29) | public abstract void onNetworkChanged();
    method startListen (line 31) | public void startListen() {
    method stopListen (line 41) | public void stopListen() {
    method getCellLevel (line 52) | public int getCellLevel() {
    method onReceive (line 56) | @Override
    method initSignalListen (line 73) | @SuppressLint("InlinedApi")
    method getCellLevel (line 98) | private int getCellLevel(SignalStrength signalStrength) {
    method getGsmLevel (line 123) | private int getGsmLevel(SignalStrength signalStrength) {
    method getCdmaLevel (line 143) | private int getCdmaLevel(SignalStrength signalStrength) {
    method getEvdoLevel (line 176) | private int getEvdoLevel(SignalStrength signalStrength) {

FILE: common_lib/src/main/java/com/wkw/common_lib/network/NetworkState.java
  class NetworkState (line 11) | public class NetworkState {
    method NetworkState (line 38) | private NetworkState(boolean conn, String apn, AccessPoint ap, Network...
    method NetworkState (line 45) | private NetworkState() {
    method fromNetworkInfo (line 55) | public static NetworkState fromNetworkInfo(NetworkInfo info) {
    method convertMobileType (line 100) | private static NetworkType convertMobileType(int subType) {
    method is3GMobileType (line 135) | @Deprecated
    method equals (line 142) | @Override
    method isConnected (line 154) | public boolean isConnected() {
    method setConnected (line 158) | public void setConnected(boolean connected) {
    method isAvailable (line 162) | public boolean isAvailable() {
    method getApnName (line 166) | public String getApnName() {
    method setApnName (line 174) | public void setApnName(String apnName) {
    method getType (line 178) | public NetworkType getType() {
    method setType (line 182) | public void setType(NetworkType type) {
    method getAccessPoint (line 186) | public AccessPoint getAccessPoint() {
    method setAccessPoint (line 190) | public void setAccessPoint(AccessPoint accessPoint) {
    method getMoreInfo (line 194) | public NetworkInfo getMoreInfo() {
    method setMoreInfo (line 198) | public void setMoreInfo(NetworkInfo moreInfo) {
    method toString (line 202) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/network/NetworkStateListener.java
  type NetworkStateListener (line 6) | public interface NetworkStateListener {
    method onNetworkStateChanged (line 16) | void onNetworkStateChanged(NetworkState lastState, NetworkState newSta...

FILE: common_lib/src/main/java/com/wkw/common_lib/network/NetworkType.java
  type NetworkType (line 6) | public enum NetworkType {
    method NetworkType (line 40) | NetworkType(String friendlyName, boolean available) {
    method getName (line 45) | public String getName() {
    method setName (line 49) | public void setName(String name) {
    method isAvailable (line 53) | public boolean isAvailable() {
    method setAvailable (line 57) | public void setAvailable(boolean available) {

FILE: common_lib/src/main/java/com/wkw/common_lib/network/ServiceProvider.java
  type ServiceProvider (line 9) | public enum  ServiceProvider {
    method ServiceProvider (line 53) | ServiceProvider(String name) {
    method fromIMSI (line 62) | public static ServiceProvider fromIMSI(String IMSI) {
    method getName (line 80) | public String getName() {
    method setName (line 84) | private void setName(String name) {
    method toString (line 88) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/network/WifiDash.java
  class WifiDash (line 13) | public class WifiDash {
    method getBSSID (line 22) | public static String getBSSID() {
    method getSSID (line 51) | public static String getSSID() {
    method getNetworkId (line 73) | public static int getNetworkId() {
    method getSignalLevel (line 95) | public static int getSignalLevel() {
    method queryWifiInfo (line 105) | private static Object queryWifiInfo(Object defValue) {
    method getWifiInfo (line 127) | public static String getWifiInfo() {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/ApiResponse.java
  class ApiResponse (line 6) | public class ApiResponse<T> {
    method getShowapi_res_code (line 14) | public int getShowapi_res_code() {
    method setShowapi_res_code (line 18) | public void setShowapi_res_code(int showapi_res_code) {
    method getShowapi_res_error (line 22) | public String getShowapi_res_error() {
    method setShowapi_res_error (line 26) | public void setShowapi_res_error(String showapi_res_error) {
    method getNewsList (line 30) | public T getNewsList() {
    method setNewsList (line 34) | public void setNewsList(T newsList) {
    method isSuccess (line 38) | public boolean isSuccess() {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/ProgressSubscriber.java
  class ProgressSubscriber (line 15) | public abstract class ProgressSubscriber<T> extends Subscriber<T> {
    method ProgressSubscriber (line 19) | public ProgressSubscriber(Context context, String message) {
    method onStart (line 23) | @Override
    method onCompleted (line 29) | @Override
    method onNext (line 34) | @Override
    method onError (line 39) | @Override
    method showProgress (line 47) | private void showProgress() {
    method dismissProgress (line 53) | private void dismissProgress() {
    method _noNext (line 61) | public abstract void _noNext(T t);
    method _onError (line 62) | public abstract void _onError(String msg);

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/RxBus.java
  class RxBus (line 12) | public class RxBus {
    method RxBus (line 17) | public RxBus() {
    method getDefault (line 21) | public static RxBus getDefault() {
    method post (line 35) | public void post (Object o) {
    method toObserverable (line 39) | public <T> Observable<T> toObserverable (Class<T> eventType) {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/RxResultHelper.java
  class RxResultHelper (line 13) | public class RxResultHelper {
    method handleResult (line 15) | public static <T> Observable.Transformer<ApiResponse<T>, T> handleResu...
    method createData (line 38) | public static <T> Observable<T> createData(final T t) {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/RxSubscriber.java
  class RxSubscriber (line 11) | public abstract class RxSubscriber<T> extends Subscriber<T> {
    method onCompleted (line 14) | @Override
    method onNext (line 19) | @Override
    method onError (line 24) | @Override
    method _noNext (line 29) | public abstract void _noNext(T t);
    method _onError (line 30) | public abstract void _onError(String msg);

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/SchedulersCompat.java
  class SchedulersCompat (line 11) | public class SchedulersCompat {
    method call (line 15) | @Override
    method applyIoSchedulers (line 21) | public static <T> Observable.Transformer<T, T> applyIoSchedulers() {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/error/DefaultErrorBundle.java
  class DefaultErrorBundle (line 6) | public class DefaultErrorBundle implements ErrorBundle {
    method DefaultErrorBundle (line 11) | public DefaultErrorBundle(Exception exception) {
    method getException (line 15) | @Override
    method getErrorMessage (line 20) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/error/ErrorBundle.java
  type ErrorBundle (line 6) | public interface ErrorBundle {
    method getException (line 7) | Exception getException();
    method getErrorMessage (line 8) | String getErrorMessage();

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/error/ErrorHanding.java
  class ErrorHanding (line 11) | public class ErrorHanding {
    method ErrorHanding (line 13) | public ErrorHanding() {
    method handleError (line 16) | public static String handleError(ErrorBundle e) {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/error/NetworkConnectionException.java
  class NetworkConnectionException (line 20) | public class NetworkConnectionException extends Exception {
    method NetworkConnectionException (line 22) | public NetworkConnectionException() {
    method NetworkConnectionException (line 26) | public NetworkConnectionException(final String message) {
    method NetworkConnectionException (line 30) | public NetworkConnectionException(final String message, final Throwabl...
    method NetworkConnectionException (line 34) | public NetworkConnectionException(final Throwable cause) {

FILE: common_lib/src/main/java/com/wkw/common_lib/rx/error/ServerException.java
  class ServerException (line 6) | public class ServerException extends Exception {
    method ServerException (line 10) | public ServerException(int code,String msg) {
    method getCode (line 21) | public int getCode() {

FILE: common_lib/src/main/java/com/wkw/common_lib/sp/Once.java
  class Once (line 18) | @TargetApi(Build.VERSION_CODES.GINGERBREAD)
    method Once (line 27) | private Once() {
    method init (line 35) | public static void init(Context context) {
    method beenDone (line 56) | public static boolean beenDone(@Scope int scope, String tag) {
    method beenDone (line 79) | public static boolean beenDone(TimeUnit timeUnit, long amount, String ...
    method beenDone (line 91) | public static boolean beenDone(long timeSpanInMillis, String tag) {
    method markDone (line 108) | public static void markDone(String tag) {
    method clearDone (line 117) | public static void clearDone(String tag) {
    method clearAll (line 124) | public static void clearAll() {

FILE: common_lib/src/main/java/com/wkw/common_lib/sp/PersistedMap.java
  class PersistedMap (line 14) | @TargetApi(Build.VERSION_CODES.GINGERBREAD)
    method PersistedMap (line 21) | public PersistedMap(Context context, String mapName) {
    method get (line 34) | public Long get(String tag) {
    method put (line 38) | public void put(String tag, long timeSeen) {
    method remove (line 45) | public void remove(String tag) {
    method clear (line 52) | public void clear() {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/AndroidUtils.java
  class AndroidUtils (line 15) | public class AndroidUtils {
    method copyToClipBoard (line 17) | public static void copyToClipBoard(Context context, String text) {
    method openBrowser (line 25) | public static void openBrowser(Context context, String url) {
    method showSystemShareOption (line 44) | public static void showSystemShareOption(Activity context,

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/AppManager.java
  class AppManager (line 10) | public class AppManager {
    method AppManager (line 14) | private AppManager() {}
    method getAppManager (line 17) | public static AppManager getAppManager() {
    method addActivity (line 28) | public void addActivity(Activity activity) {
    method removeActivity (line 35) | public void removeActivity(Activity activity) {
    method curremtActivity (line 42) | public Activity curremtActivity() {
    method finishActivity (line 48) | public void finishActivity(Activity activity) {
    method finishAllActivity (line 55) | public void finishAllActivity() {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/AppUtils.java
  class AppUtils (line 17) | public final class AppUtils {
    method AppUtils (line 20) | private AppUtils() {
    method isForeground (line 24) | public static boolean isForeground(Context context) {
    method isScreenLocked (line 34) | private static boolean isScreenLocked(Context context) {
    method getVersionCode (line 39) | public static int getVersionCode(Context context) {
    method getAppInfoWithFlags (line 58) | public static ApplicationInfo getAppInfoWithFlags(Context ctx, int fla...
    method getSimpleAppInfo (line 72) | public static ApplicationInfo getSimpleAppInfo(Context ctx) {
    method isPackageInstalled (line 83) | public static boolean isPackageInstalled(Context context, String packa...
    method getApplicationMetaInfo (line 101) | public static Bundle getApplicationMetaInfo(Context context) {
    method getApplicationMetaInfo (line 119) | public static Bundle getApplicationMetaInfo(Context context, String pa...

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/DialogUtil.java
  class DialogUtil (line 13) | public class DialogUtil {
    method getDialog (line 21) | public static AlertDialog.Builder getDialog(Context context) {
    method getWaitDialog (line 26) | public static ProgressDialog getWaitDialog(Context context, String mes...
    method getMessageDialog (line 41) | public static AlertDialog.Builder getMessageDialog(Context context, St...
    method getMessageDialog (line 48) | public static AlertDialog.Builder getMessageDialog(Context context, St...
    method getConfirmDialog (line 52) | public static AlertDialog.Builder getConfirmDialog(Context context, St...
    method getConfirmDialog (line 60) | public static AlertDialog.Builder getConfirmDialog(Context context, St...
    method getConfirmDialog (line 68) | public static AlertDialog.Builder getConfirmDialog(Context context,
    method getConfirmDialog (line 77) | public static AlertDialog.Builder getConfirmDialog(Context context,
    method getSelectDialog (line 94) | public static AlertDialog.Builder getSelectDialog(Context context, Str...
    method getSelectDialog (line 104) | public static AlertDialog.Builder getSelectDialog(Context context, Str...
    method getSingleChoiceDialog (line 108) | public static AlertDialog.Builder getSingleChoiceDialog(Context contex...
    method getSingleChoiceDialog (line 118) | public static AlertDialog.Builder getSingleChoiceDialog(Context contex...

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/HtmlUtils.java
  class HtmlUtils (line 8) | public final class HtmlUtils {
    method filterHtml (line 12) | public static String filterHtml(String inputString) {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/NetWorkUtils.java
  class NetWorkUtils (line 27) | public final class NetWorkUtils {
    method isNetworkConnected (line 56) | public static boolean isNetworkConnected() {
    method isNetworkConnected (line 66) | public static boolean isNetworkConnected(Context context) {
    method isWifiConnected (line 71) | public static boolean isWifiConnected() {
    method isWifiConnected (line 81) | public static boolean isWifiConnected(Context context) {
    method isMobileConnected (line 95) | public static boolean isMobileConnected(Context context) {
    method getActiveNetworkInfo (line 117) | public static NetworkInfo getActiveNetworkInfo(Context context) {
    method getActiveNetworkType (line 136) | public static int getActiveNetworkType(Context context) {
    method getNetworkType (line 149) | public static int getNetworkType(Context context, NetworkInfo info) {
    method getProxy (line 200) | public static NetworkProxy getProxy(Context context, boolean apnProxy) {
    method getProxy (line 210) | public static NetworkProxy getProxy(Context context) {
    method getProxyHost (line 222) | @SuppressWarnings("deprecation")
    method getProxyPort (line 233) | @SuppressWarnings("deprecation")
    method getProxyByAPN (line 261) | public static NetworkProxy getProxyByAPN(Context context) {
    method getAPN (line 276) | public static String getAPN(Context context) {
    method getDNS (line 321) | @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
    method int32ToIPStr (line 342) | private static String int32ToIPStr(int ip) {
    method getLocalIP (line 356) | public static String getLocalIP() {
    method isEmpty (line 375) | private static boolean isEmpty(String str) {
    class NetworkProxy (line 382) | public static class NetworkProxy implements Cloneable {
      method NetworkProxy (line 387) | NetworkProxy(String host, int port) {
      method copy (line 392) | final NetworkProxy copy() {
      method toString (line 401) | @Override
      method equals (line 406) | @Override
    class DNS (line 424) | public final static class DNS {
      method DNS (line 428) | DNS() {
      method toString (line 431) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/ProcessUtils.java
  class ProcessUtils (line 17) | public class ProcessUtils {
    method ProcessUtils (line 27) | private ProcessUtils() {
    method myProcessName (line 37) | public static String myProcessName(Context context) {
    method isMainProcess (line 55) | public static boolean isMainProcess(Context context) {
    method killSelf (line 75) | public void killSelf() {
    method killAll (line 82) | public static void killAll(Context context) {
    method killAll (line 91) | public static void killAll(Context context, int... excludePid) {
    method killAll (line 122) | public static void killAll(Context context, String... excludeName) {
    method isForeground (line 155) | public static boolean isForeground(Context context) {
    method collectRunningProcessInfo (line 170) | private static Collection<ActivityManager.RunningAppProcessInfo> colle...
    method collectUniqueSet (line 187) | private static <V> Set<V> collectUniqueSet(V... values) {
    method collectUniqueSet (line 198) | private static Set<Integer> collectUniqueSet(int... values) {
    method obtainProcessName (line 209) | private static String obtainProcessName(Context context) {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/PropertyUtils.java
  class PropertyUtils (line 14) | public final class PropertyUtils {
    method PropertyUtils (line 33) | private PropertyUtils() {
    method get (line 44) | public static String get(String key, String defValue) {
    method getQuickly (line 65) | public static String getQuickly(String key, String defValue) {
    method getWithReflect (line 72) | private static String getWithReflect(String key, String defValue) {
    method getWithCmd (line 86) | private static String getWithCmd(String key, String defValue) {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/Singleton.java
  class Singleton (line 6) | public abstract class Singleton<T, P> {
    method create (line 9) | protected abstract T create(P p);
    method get (line 11) | public final T get(P p) {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/StringUtils.java
  class StringUtils (line 19) | public class StringUtils {
    method createDataFormat (line 36) | public static SimpleDateFormat createDataFormat(String pattern) {
    method join (line 48) | public static String join(String delimiter, Collection<?> segments) {
    method join (line 70) | public static String join(String delimiter, Object... segments) {
    method appendArrayObjectToStringBuilder (line 88) | private static void appendArrayObjectToStringBuilder(StringBuilder str...
    method appendCollectionObjectToStringBuilder (line 95) | private static void appendCollectionObjectToStringBuilder(StringBuilde...
    method appendObjectToStringBuilder (line 102) | private static void appendObjectToStringBuilder(StringBuilder stringBu...
    method isEmpty (line 125) | public static boolean isEmpty(String string) {
    method isNotEmpty (line 135) | public static boolean isNotEmpty(String string) {
    method equal (line 146) | public static boolean equal(String a, String b) {
    method splitToLongArray (line 159) | public static long[] splitToLongArray(String string, String delimiter) {
    method splitToLongList (line 179) | public static List<Long> splitToLongList(String string, String delimit...
    method splitToStringArray (line 196) | public static String[] splitToStringArray(String string, String delimi...
    method splitToStringList (line 208) | public static List<String> splitToStringList(String string, String del...
    method stringFromInputStream (line 232) | public static String stringFromInputStream(InputStream inputStream) {
    method isEmailFormat (line 266) | public static boolean isEmailFormat(String string) {
    method isLoginEmailFormat (line 280) | public static boolean isLoginEmailFormat(String string) {
    method lengthInRange (line 296) | public static boolean lengthInRange(String string, int begin, int end) {
    method validateFilePath (line 306) | public static String validateFilePath(String srcStr) {
    method getCharsLength (line 318) | public static int getCharsLength(String str) {
    method getWordCount (line 340) | public static int getWordCount(String str) {
    method getTimeStr (line 354) | public static String getTimeStr(long time) {
    method startsWithIgnoreCase (line 383) | public static boolean startsWithIgnoreCase(String source, String prefi...
    method endsWithIgnoreCase (line 400) | public static boolean endsWithIgnoreCase(String source, String suffix) {
    method replaceWith (line 422) | public static String replaceWith(String source, Object... keyValueArra...
    method replaceWith (line 453) | public static StringBuilder replaceWith(StringBuilder source, Object.....

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/ThreadUtils.java
  class ThreadUtils (line 16) | public class ThreadUtils {
    method ThreadUtils (line 26) | private ThreadUtils() {
    method post (line 38) | public static void post(Runnable r) {
    method postDelayed (line 53) | public static void postDelayed(Runnable r, long delayMillis) {
    method removeCallbacks (line 64) | public static void removeCallbacks(Runnable r) {
    method runOnUiThread (line 73) | public static void runOnUiThread(Runnable runnable) {
    method isMainThread (line 84) | public static boolean isMainThread() {
    method getMainHandler (line 93) | public static Handler getMainHandler() {
    method addLooperPrinter (line 102) | public static void addLooperPrinter(Printer printer) {
    method addLooperPrinter (line 112) | public static void addLooperPrinter(Looper looper, Printer printer) {
    class PrinterWrapper (line 132) | final static class PrinterWrapper implements Printer {
      method PrinterWrapper (line 140) | PrinterWrapper() {
      method println (line 143) | @Override
      method add (line 158) | public void add(Printer printer) {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/ToashUtils.java
  class ToashUtils (line 14) | public final class ToashUtils {
    method create (line 21) | @Override
    method ToashUtils (line 34) | private ToashUtils() {
    method get (line 44) | public static Toast get(Context context) {
    method show (line 54) | public static void show(Context context, int resId) {
    method show (line 64) | public static void show(Context context, CharSequence msg) {
    method show (line 76) | public static void show(Context context, int resId, int duration) {
    method show (line 88) | public static void show(Context context, CharSequence msg, int duratio...
    method show (line 101) | public static void show(Context context, int resId, int duration, int ...
    method show (line 114) | public static void show(Context context, final CharSequence msg, final...
    method show (line 140) | public static void show(Activity activity, int resId) {
    method show (line 150) | public static void show(@Nullable Activity activity, CharSequence msg) {
    method show (line 162) | public static void show(@Nullable Activity activity, int resId, int du...
    method show (line 174) | public static void show(@Nullable Activity activity, CharSequence msg,...
    method show (line 187) | public static void show(@Nullable Activity activity, int resId, int du...
    method show (line 200) | public static void show(@Nullable Activity activity, final CharSequenc...
    method showImmediately (line 221) | private static void showImmediately(Context context, CharSequence msg,...
    method shouldShow (line 235) | private static boolean shouldShow(Context context) {
    method shouldShow (line 251) | private static boolean shouldShow(Activity activity) {
    method getString (line 273) | private static String getString(Context context, int resId) {

FILE: common_lib/src/main/java/com/wkw/common_lib/utils/ViewUtils.java
  class ViewUtils (line 28) | public final class ViewUtils {
    method ViewUtils (line 49) | private ViewUtils() {
    method findById (line 53) | public static <T extends View> T findById(View view, int id) {
    method preventViewMultipleClick (line 60) | public static void preventViewMultipleClick(final View v, int protecti...
    method setTag (line 76) | public static void setTag(View view, final Object tag) {
    method getTag (line 83) | public static Object getTag(View view) {
    method setTag (line 91) | public static void setTag(View view, int key, final Object tag) {
    method getTag (line 98) | public static Object getTag(View view, int key) {
    method setTagInternal (line 102) | @SuppressWarnings("unchecked")
    method getTagInternal (line 125) | @SuppressWarnings("unchecked")
    method decorate (line 145) | public static void decorate(View hostView, View decorView, int gravity) {
    method decorate (line 160) | public static void decorate(View hostView, View decorView, int gravity...
    method generateHostLayoutParams (line 220) | private static FrameLayout.LayoutParams generateHostLayoutParams(View ...
    method generateDecorLayoutParams (line 230) | private static FrameLayout.LayoutParams generateDecorLayoutParams(int ...
    method newLayoutParams (line 240) | private static FrameLayout.LayoutParams newLayoutParams(ViewGroup.Layo...
    method computeChildIndex (line 251) | private static int computeChildIndex(ViewGroup parent, View child) {
    method capture (line 270) | public static Bitmap capture(View view) {
    method getSpValue (line 290) | public static float getSpValue(float value) {
    method isChildOf (line 296) | public static boolean isChildOf(View c, View p) {
    method getChildPos (line 311) | public static void getChildPos(View child, View parent, int[] posConta...
    method getActivityName (line 346) | public static String getActivityName(Context ctx) {
    method getStatusBarHeight (line 354) | public static int getStatusBarHeight(Context context) {
    method getDensity (line 364) | public static float getDensity() {
    method getScreenWidth (line 368) | public static int getScreenWidth() {
    method getScreenHeight (line 372) | public static int getScreenHeight() {
    method dpToPx (line 381) | public static int dpToPx(float dp) {
    method pxToDp (line 385) | public static int pxToDp(float px) {
    method spToPx (line 389) | public static int spToPx(float sp) {
    method pxTosp (line 394) | public static int pxTosp(float px) {
    method setAlpha (line 402) | public static void setAlpha(View view, float alphaValue) {
    method setViewBackground (line 419) | public static void setViewBackground(View v, Drawable drawable) {
    class DecorateContainer (line 431) | private static class DecorateContainer extends FrameLayout {
      method DecorateContainer (line 435) | public DecorateContainer(Context context, View hostView) {
      method getVisibility (line 440) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/ClearEditText.java
  class ClearEditText (line 23) | public class ClearEditText extends AppCompatEditText
    method ClearEditText (line 28) | public ClearEditText(Context context) {
    method ClearEditText (line 32) | public ClearEditText(Context context, AttributeSet attrs) {
    method ClearEditText (line 36) | public ClearEditText(Context context, AttributeSet attrs, int defStyle...
    method init (line 41) | private void init(Context context, AttributeSet attrs) {
    method onTouchEvent (line 61) | @Override
    method onFocusChange (line 80) | @Override
    method setClearIconVisible (line 94) | private void setClearIconVisible(boolean visible) {
    method onTextChanged (line 103) | @Override
    method beforeTextChanged (line 109) | @Override
    method afterTextChanged (line 114) | @Override
    method setShakeAnimation (line 121) | public void setShakeAnimation() {
    method shakeAnimation (line 131) | public static Animation shakeAnimation(int counts) {

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/CustomTabHost.java
  class CustomTabHost (line 26) | public class CustomTabHost extends TabHost implements TabHost.OnTabChang...
    class TabInfo (line 36) | static final class TabInfo {
      method TabInfo (line 42) | TabInfo(String _tag, Class<?> _class, Bundle _args) {
    class DummyTabFactory (line 49) | static class DummyTabFactory implements TabContentFactory {
      method DummyTabFactory (line 52) | public DummyTabFactory(Context context) {
      method createTabContent (line 56) | @Override
    class SavedState (line 65) | static class SavedState extends BaseSavedState {
      method SavedState (line 68) | SavedState(Parcelable superState) {
      method SavedState (line 72) | private SavedState(Parcel in) {
      method writeToParcel (line 77) | @Override
      method toString (line 83) | @Override
      method createFromParcel (line 92) | public SavedState createFromParcel(Parcel in) {
      method newArray (line 96) | public SavedState[] newArray(int size) {
    method CustomTabHost (line 102) | public CustomTabHost(Context context) {
    method CustomTabHost (line 109) | public CustomTabHost(Context context, AttributeSet attrs) {
    method initFragmentTabHost (line 114) | private void initFragmentTabHost(Context context, AttributeSet attrs) {
    method ensureHierarchy (line 123) | private void ensureHierarchy(Context context) {
    method setup (line 151) | @Override
    method setup (line 158) | public void setup(Context context, FragmentManager manager) {
    method setup (line 166) | public void setup(Context context, FragmentManager manager, int contai...
    method ensureContent (line 182) | private void ensureContent() {
    method setOnTabChangedListener (line 192) | @Override
    method addTab (line 197) | public void addTab(TabSpec tabSpec, Class<?> clss, Bundle args) {
    method onAttachedToWindow (line 220) | @Override
    method onDetachedFromWindow (line 261) | @Override
    method onSaveInstanceState (line 267) | @Override
    method onRestoreInstanceState (line 275) | @Override
    method onTabChanged (line 282) | @Override
    method doTabChanged (line 295) | private FragmentTransaction doTabChanged(String tabId, FragmentTransac...

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/ProgressLayout.java
  class ProgressLayout (line 19) | public class ProgressLayout extends RelativeLayout {
    method ProgressLayout (line 33) | public ProgressLayout(Context context) {
    type State (line 37) | private enum State {
    method ProgressLayout (line 42) | public ProgressLayout(Context context, AttributeSet attrs) {
    method ProgressLayout (line 47) | public ProgressLayout(Context context, AttributeSet attrs, int defStyl...
    method init (line 52) | private void init(AttributeSet attrs) {
    method addView (line 56) | @Override
    method onDetachedFromWindow (line 65) | @Override
    method showLoading (line 72) | public void showLoading() {
    method showContent (line 80) | public void showContent() {
    method showError (line 88) | public void showError(String msg,OnClickListener click) {
    method showNotData (line 100) | public void showNotData(OnClickListener click) {
    method isContent (line 109) | public boolean isContent() {
    method showLoadingView (line 113) | private void showLoadingView() {
    method showErrorView (line 125) | private void showErrorView(String msg) {
    method showNotDataView (line 140) | private void showNotDataView() {
    method hideLoadingView (line 154) | private void hideLoadingView() {
    method hideErrorView (line 160) | private void hideErrorView() {
    method hideNotDataView (line 167) | private void hideNotDataView() {
    method setContentVisibility (line 173) | private void setContentVisibility(boolean visible) {

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/TimerButton.java
  class TimerButton (line 18) | public class TimerButton extends Button {
    method run (line 30) | @Override public void run() {
    method TimerButton (line 43) | public TimerButton(Context context) {
    method TimerButton (line 48) | public TimerButton(Context context, AttributeSet attrs, int defStyleAt...
    method TimerButton (line 53) | public TimerButton(Context context, AttributeSet attrs) {
    method TimerButton (line 58) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    method startTimer (line 63) | public void startTimer(String timerTextFormat,String normalText, long ...
    method setDisableBackground (line 71) | public void setDisableBackground(Drawable disableBackground) {
    method setEnableStatus (line 76) | private void setEnableStatus(boolean enable) {

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/DefaultEmptyItem.java
  class DefaultEmptyItem (line 40) | public class DefaultEmptyItem extends EmptyItem {
    method onCreateView (line 45) | @Override
    method onBindData (line 54) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/DefaultFootItem.java
  class DefaultFootItem (line 39) | public class DefaultFootItem extends FootItem {
    method onCreateView (line 48) | @Override
    method onBindData (line 59) | @Override
    method showPullToLoad (line 82) | public void showPullToLoad(CharSequence message) {
    method showProgressBar (line 100) | public void showProgressBar(CharSequence load) {
    method showEnd (line 120) | public void showEnd(CharSequence end) {

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/EmptyFootItem.java
  class EmptyFootItem (line 35) | public class EmptyFootItem extends FootItem {
    method onCreateView (line 36) | @Override
    method onBindData (line 41) | @Override

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/EmptyItem.java
  class EmptyItem (line 35) | public abstract class EmptyItem {
    method onCreateView (line 40) | abstract View onCreateView(ViewGroup parent);
    method onBindData (line 42) | abstract void onBindData(View view);

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/FootItem.java
  class FootItem (line 35) | public abstract class FootItem {
    method onCreateView (line 41) | public abstract View onCreateView(ViewGroup parent);
    method onBindData (line 43) | public abstract void onBindData(View view, int state);

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/OnLoadMoreListener.java
  type OnLoadMoreListener (line 32) | public interface OnLoadMoreListener {
    method onLoadMore (line 33) | void onLoadMore();

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/RecyclerViewUtils.java
  class RecyclerViewUtils (line 38) | class RecyclerViewUtils {
    method setVerticalLinearLayout (line 42) | public static void setVerticalLinearLayout(RecyclerView rv) {
    method setGridLayout (line 56) | public static void setGridLayout(final RecyclerView rv, int spanCount) {
    method setStaggeredGridLayoutManager (line 80) | public static void setStaggeredGridLayoutManager(RecyclerView rv, int ...

FILE: common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/RecyclerViewWithFooter.java
  class RecyclerViewWithFooter (line 45) | public class RecyclerViewWithFooter extends RecyclerView {
    method onChanged (line 68) | @Override
    method reset (line 74) | private void reset() {
    method onItemRangeChanged (line 78) | @Override
    method onItemRangeChanged (line 85) | @Override
    method onItemRangeInserted (line 92) | @Override
    method onItemRangeRemoved (line 99) | @Override
    method onItemRangeMoved (line 105) | @Override
    method RecyclerViewWithFooter (line 112) | public RecyclerViewWithFooter(Context context) {
    method RecyclerViewWithFooter (line 117) | public RecyclerViewWithFooter(Context context, AttributeSet attrs) {
    method RecyclerViewWithFooter (line 122) | public RecyclerViewWithFooter(Context context, AttributeSet attrs, int...
    method init (line 127) | private void init() {
    method onMeasure (line 131) | @Override
    method setVerticalLinearLayout (line 143) | public void setVerticalLinearLayout() {
    method setGridLayout (line 147) | public void setGridLayout(int span) {
    method setStaggeredGridLayoutManager (line 151) | public void setStaggeredGridLayoutManager(int spanCount) {
    method setOnLoadMoreListener (line 155) | public void setOnLoadMoreListener(OnLoadMoreListener onLoadMoreListene...
    method setAdapter (line 194) | @Override
    method applyLoadingText (line 214) | public RecyclerViewWithFooter applyLoadingText(CharSequence loadText) {
    method applyPullToLoadText (line 219) | public RecyclerViewWithFooter applyPullToLoadText(CharSequence pullToL...
    method applyEndText (line 224) | public RecyclerViewWithFooter applyEndText(CharSequence endText) {
    method applyEmptyText (line 229) | public RecyclerViewWithFooter applyEmptyText(CharSequence emptyText, @...
    method setFootItem (line 235) | public void setFootItem(FootItem footItem) {
    method setEmptyItem (line 250) | public void setEmptyItem(EmptyItem emptyItem) {
    method setPullToLoad (line 265) | public void setPullToLoad() {
    method setLoading (line 277) | public void setLoading() {
    method setEnd (line 291) | public void setEnd(CharSequence end) {
    method setEnd (line 304) | public void setEnd() {
    method setEmpty (line 319) | public void setEmpty(CharSequence empty, @DrawableRes int resId) {
    method setEmpty (line 333) | public void setEmpty() {
    method isEmpty (line 345) | private boolean isEmpty() {
    method isLoadMoreEnable (line 350) | public boolean isLoadMoreEnable() {
    class OnLoadMoreListenerWrapper (line 359) | private class OnLoadMoreListenerWrapper implements OnLoadMoreListener {
      method OnLoadMoreListenerWrapper (line 363) | public OnLoadMoreListenerWrapper(OnLoadMoreListener onLoadMoreListen...
      method onLoadMore (line 367) | @Override
    class LoadMoreAdapter (line 376) | public class LoadMoreAdapter extends RecyclerView.Adapter<RecyclerView...
      method LoadMoreAdapter (line 383) | public LoadMoreAdapter(Adapter adapter) {
      method onCreateViewHolder (line 387) | @Override
      method registerAdapterDataObserver (line 397) | @Override
      method unregisterAdapterDataObserver (line 403) | @Override
      method onBindViewHolder (line 409) | @Override
      method isFootView (line 426) | private boolean isFootView(int position) {
      method getItemViewType (line 430) | @Override
      method getItemCount (line 443) | @Override
      class LoadMoreVH (line 455) | private class LoadMoreVH extends VH {
        method LoadMoreVH (line 459) | public LoadMoreVH() {
        method onBindViewHolder (line 464) | @Override
      class EmptyVH (line 476) | private class EmptyVH extends VH {
        method EmptyVH (line 478) | public EmptyVH() {
        method onBindViewHolder (line 482) | @Override
      class VH (line 489) | class VH extends RecyclerView.ViewHolder {
        method VH (line 491) | public VH(View itemView) {
        method onBindViewHolder (line 495) | public void onBindViewHolder() {

FILE: common_lib/src/test/java/com/wkw/common_lib/ExampleUnitTest.java
  class ExampleUnitTest (line 10) | public class ExampleUnitTest {
    method addition_isCorrect (line 11) | @Test

FILE: js/actions/newsList.js
  function fetchNews (line 8) | function fetchNews(loading, isRefresh, isLoadMore, pn) {
  function fetchNewsList (line 18) | function fetchNewsList(loading, isRefresh, isLoadMore) {
  function receiveNewsList (line 27) | function receiveNewsList(newsList) {

FILE: js/components/Header.js
  method onActionSelected (line 75) | onActionSelected() { }

FILE: js/components/LoadingView.js
  class LoadingView (line 10) | class LoadingView extends Component {
    method render (line 11) | render() {

FILE: js/constants/ActionTypes.js
  constant FE_NEWLIST (line 1) | const FE_NEWLIST = 'FE_NEWLIST';
  constant RE_NEWLIST (line 2) | const RE_NEWLIST = 'RE_NEWLIST';

FILE: js/constants/Urls.js
  constant NEW_LIST (line 1) | const NEW_LIST = 'txapi/tiyu/tiyu';

FILE: js/containes/App.js
  class App (line 16) | class App extends React.Component {
    method constructor (line 17) | constructor(props) {
    method goBack (line 25) | goBack() {
    method renderScene (line 29) | renderScene(route, navigator) {
    method configureScene (line 35) | configureScene(route) {
    method render (line 43) | render() {

FILE: js/containes/NewsContaines.js
  class NewsContainer (line 14) | class NewsContainer extends Component {
    method render (line 16) | render() {
  function mapStateToProps (line 23) | function mapStateToProps(state) {
  function mapDispatchToProp (line 32) | function mapDispatchToProp(dispatch) {

FILE: js/containes/WebViewContaines.js
  class WebContainer (line 8) | class WebContainer extends Component {
    method render (line 10) | render() {
  function mapStateToProps (line 18) | function mapStateToProps(state) {

FILE: js/pages/News.js
  class News (line 23) | class News extends Component {
    method constructor (line 25) | constructor(props) {
    method componentDidMount (line 39) | componentDidMount() {
    method onEndReached (line 46) | onEndReached() {
    method renderItem (line 59) | renderItem(news) {
    method onPress (line 77) | onPress(title, url) {
    method renderFooter (line 87) | renderFooter() {
    method onRefresh (line 102) | onRefresh() {
    method renderContent (line 108) | renderContent() {
    method render (line 136) | render() {

FILE: js/pages/WebViewPage.js
  class WebViewPage (line 12) | class WebViewPage extends Component {
    method render (line 13) | render() {
    method renderLoading (line 36) | renderLoading() {

FILE: js/reducers/newsList.js
  function revicesNewsList (line 10) | function revicesNewsList(state = initialState, action) {

FILE: js/rootApp.js
  class rootApp (line 13) | class rootApp extends Component {
    method render (line 14) | render() {

FILE: js/store/store.js
  function configureStore (line 10) | function configureStore(initialState) {

FILE: js/utils/Services.js
  constant HOST (line 1) | const HOST = "http://apis.baidu.com/";
  function getNewList (line 12) | function getNewList(url, pnSize) {
  function getClient (line 26) | function getClient() {
  function filterStatus (line 34) | function filterStatus(res) {
  function filterJSON (line 42) | function filterJSON(res) {
Condensed preview — 203 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (634K chars).
[
  {
    "path": ".flowconfig",
    "chars": 1675,
    "preview": "[ignore]\n\n# We fork some components by platform.\n.*/*.android.js\n\n# Ignore templates with `@flow` in header\n.*/local-cli"
  },
  {
    "path": ".gitignore",
    "chars": 157,
    "preview": "*.iml\n.gradle\n/local.properties\n/.idea/workspace.xml\n/.idea/libraries\n.DS_Store\n/build\n/captures\n/node_modules\n/projectF"
  },
  {
    "path": ".vscode/launchReactNative.js",
    "chars": 496,
    "preview": "// This file is automatically generated by vscode-react-native@0.1.6\n// Please do not modify it manually. All changes wi"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 28,
    "preview": "// 将设置放入此文件中以覆盖默认值和用户设置。\n{\n}"
  },
  {
    "path": ".vscode/typings/react/react-addons-create-fragment.d.ts",
    "chars": 584,
    "preview": "// Type definitions for React v0.14 (react-addons-create-fragment)\n// Project: http://facebook.github.io/react/\n// Defin"
  },
  {
    "path": ".vscode/typings/react/react-addons-css-transition-group.d.ts",
    "chars": 1392,
    "preview": "// Type definitions for React v0.14 (react-addons-css-transition-group)\n// Project: http://facebook.github.io/react/\n// "
  },
  {
    "path": ".vscode/typings/react/react-addons-linked-state-mixin.d.ts",
    "chars": 990,
    "preview": "// Type definitions for React v0.14 (react-addons-linked-state-mixin)\n// Project: http://facebook.github.io/react/\n// De"
  },
  {
    "path": ".vscode/typings/react/react-addons-perf.d.ts",
    "chars": 1479,
    "preview": "// Type definitions for React v0.14 (react-addons-perf)\n// Project: http://facebook.github.io/react/\n// Definitions by: "
  },
  {
    "path": ".vscode/typings/react/react-addons-pure-render-mixin.d.ts",
    "chars": 692,
    "preview": "// Type definitions for React v0.14 (react-addons-pure-render-mixin)\n// Project: http://facebook.github.io/react/\n// Def"
  },
  {
    "path": ".vscode/typings/react/react-addons-test-utils.d.ts",
    "chars": 6144,
    "preview": "// Type definitions for React v0.14 (react-addons-test-utils)\n// Project: http://facebook.github.io/react/\n// Definition"
  },
  {
    "path": ".vscode/typings/react/react-addons-transition-group.d.ts",
    "chars": 854,
    "preview": "// Type definitions for React v0.14 (react-addons-transition-group)\n// Project: http://facebook.github.io/react/\n// Defi"
  },
  {
    "path": ".vscode/typings/react/react-addons-update.d.ts",
    "chars": 996,
    "preview": "// Type definitions for React v0.14 (react-addons-update)\n// Project: http://facebook.github.io/react/\n// Definitions by"
  },
  {
    "path": ".vscode/typings/react/react-dom.d.ts",
    "chars": 2571,
    "preview": "// Type definitions for React v0.14 (react-dom)\n// Project: http://facebook.github.io/react/\n// Definitions by: Asana <h"
  },
  {
    "path": ".vscode/typings/react/react-global.d.ts",
    "chars": 945,
    "preview": "// Type definitions for React v0.14 (namespace)\n// Project: http://facebook.github.io/react/\n// Definitions by: Asana <h"
  },
  {
    "path": ".vscode/typings/react/react.d.ts",
    "chars": 92073,
    "preview": "// Type definitions for React v0.14\n// Project: http://facebook.github.io/react/\n// Definitions by: Asana <https://asana"
  },
  {
    "path": ".vscode/typings/react-native/react-native.d.ts",
    "chars": 121637,
    "preview": "// Type definitions for react-native 0.14\n// Project: https://github.com/facebook/react-native\n// Definitions by: Bruno "
  },
  {
    "path": "README.md",
    "chars": 437,
    "preview": "# Hot\nthis is a hot project\n这是一个用MVP+Rxjava+Retrofit构建项目,是个微信头条的分享。\n\n##  Screenshot\n\n![image](https://github.com/zj-wuke"
  },
  {
    "path": "app/.gitignore",
    "chars": 7,
    "preview": "/build\n"
  },
  {
    "path": "app/build.gradle",
    "chars": 2101,
    "preview": "apply plugin: 'com.android.application'\napply plugin: 'com.neenbedankt.android-apt'\napply plugin: 'me.tatarka.retrolambd"
  },
  {
    "path": "app/proguard-rules.pro",
    "chars": 665,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /U"
  },
  {
    "path": "app/src/androidTest/java/com/wkw/hot/ApplicationTest.java",
    "chars": 342,
    "preview": "package com.wkw.hot;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\"http://d"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "chars": 1768,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package="
  },
  {
    "path": "app/src/main/java/com/wkw/hot/adapter/FragmentAdapter.java",
    "chars": 985,
    "preview": "package com.wkw.hot.adapter;\n\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentManager;\nimp"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/BaseActivity.java",
    "chars": 2060,
    "preview": "package com.wkw.hot.base;\n\nimport android.app.Activity;\nimport android.os.Bundle;\nimport android.support.annotation.Null"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/BaseFragment.java",
    "chars": 2202,
    "preview": "package com.wkw.hot.base;\n\nimport android.app.Activity;\nimport android.os.Bundle;\nimport android.support.annotation.Null"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/BaseLazyFragment.java",
    "chars": 2873,
    "preview": "package com.wkw.hot.base;\n\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\n\nimport java.lang.reflect.F"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/BaseLoadMoreAdapter.java",
    "chars": 3286,
    "preview": "package com.wkw.hot.base;\n\nimport android.support.v7.widget.RecyclerView;\nimport android.view.LayoutInflater;\nimport and"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/BaseOnScrollListener.java",
    "chars": 925,
    "preview": "package com.wkw.hot.base;\n\nimport android.support.v7.widget.LinearLayoutManager;\nimport android.support.v7.widget.Recycl"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/BasePresenter.java",
    "chars": 1045,
    "preview": "package com.wkw.hot.base;\n\nimport android.app.Activity;\n\nimport com.wkw.common_lib.utils.ToashUtils;\nimport com.wkw.hot."
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/ILoadingView.java",
    "chars": 276,
    "preview": "package com.wkw.hot.base;\n\nimport android.content.Context;\n\n/**\n * Created by wukewei on 16/6/1.\n */\npublic interface IL"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/IPresenter.java",
    "chars": 170,
    "preview": "package com.wkw.hot.base;\n\n/**\n * Created by wukewei on 16/5/26.\n */\npublic interface IPresenter<T extends IView> {\n    "
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/IView.java",
    "chars": 96,
    "preview": "package com.wkw.hot.base;\n\n/**\n * Created by wukewei on 16/5/26.\n */\npublic interface IView {\n}\n"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/page/BaseLazyPageFragment.java",
    "chars": 2959,
    "preview": "package com.wkw.hot.base.page;\n\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport com.wkw.hot.bas"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/page/BaseListAdapter.java",
    "chars": 800,
    "preview": "package com.wkw.hot.base.page;\n\nimport android.support.v7.widget.RecyclerView;\nimport java.util.ArrayList;\nimport java.u"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/page/BasePageFragment.java",
    "chars": 4663,
    "preview": "package com.wkw.hot.base.page;\n\nimport android.content.Context;\nimport android.support.v4.widget.SwipeRefreshLayout;\nimp"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/base/page/IDataVIew.java",
    "chars": 377,
    "preview": "package com.wkw.hot.base.page;\n\nimport android.content.Context;\nimport com.wkw.hot.base.IView;\n\n/**\n * Created by wukewe"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/cache/CacheLoader.java",
    "chars": 3555,
    "preview": "package com.wkw.hot.cache;\n\nimport android.app.Application;\nimport android.content.Context;\nimport android.util.Log;\n\nim"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/cache/DiskCache.java",
    "chars": 4613,
    "preview": "package com.wkw.hot.cache;\n\nimport android.util.Log;\n\nimport com.wkw.hot.ui.App;\n\nimport java.io.Closeable;\nimport java."
  },
  {
    "path": "app/src/main/java/com/wkw/hot/cache/ICache.java",
    "chars": 210,
    "preview": "package com.wkw.hot.cache;\n\nimport rx.Observable;\n\n/**\n * Created by wukewei on 16/6/19.\n */\npublic interface ICache {\n "
  },
  {
    "path": "app/src/main/java/com/wkw/hot/cache/MemoryCache.java",
    "chars": 1844,
    "preview": "package com.wkw.hot.cache;\n\nimport android.text.TextUtils;\nimport android.util.LruCache;\n\nimport com.google.gson.Gson;\n\n"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/cache/NetworkCache.java",
    "chars": 206,
    "preview": "package com.wkw.hot.cache;\n\nimport rx.Observable;\n\n/**\n * Created by wukewei on 16/6/19.\n */\npublic abstract class Netwo"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/common/Constants.java",
    "chars": 459,
    "preview": "package com.wkw.hot.common;\n\n/**\n * Created by wukewei on 16/5/26.\n */\npublic class Constants {\n    public static final "
  },
  {
    "path": "app/src/main/java/com/wkw/hot/data/DataManager.java",
    "chars": 3550,
    "preview": "package com.wkw.hot.data;\n\nimport com.wkw.hot.cache.CacheLoader;\nimport com.wkw.hot.cache.NetworkCache;\nimport com.wkw.h"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/data/api/HotApi.java",
    "chars": 604,
    "preview": "package com.wkw.hot.data.api;\n\nimport com.wkw.common_lib.rx.ApiResponse;\nimport com.wkw.hot.entity.PagePopularEntity;\nim"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/entity/ListPopularEntity.java",
    "chars": 310,
    "preview": "package com.wkw.hot.entity;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by wukewei on 16/6/25.\n"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/entity/PagePopularEntity.java",
    "chars": 2004,
    "preview": "package com.wkw.hot.entity;\n\nimport com.google.gson.annotations.SerializedName;\nimport java.util.List;\n\n/**\n * Created b"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/entity/PopularEntity.java",
    "chars": 1857,
    "preview": "package com.wkw.hot.entity;\n\nimport com.google.gson.annotations.SerializedName;\nimport java.io.Serializable;\n\n/**\n * Cre"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/mapper/PopularModelDataMapper.java",
    "chars": 1413,
    "preview": "package com.wkw.hot.mapper;\n\nimport com.wkw.hot.entity.PopularEntity;\nimport com.wkw.hot.model.PopularModel;\nimport com."
  },
  {
    "path": "app/src/main/java/com/wkw/hot/model/PopularModel.java",
    "chars": 1336,
    "preview": "package com.wkw.hot.model;\n\n/**\n * Created by wukewei on 16/12/2.\n * Email zjwkw1992@163.com\n * GitHub https://github.co"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/navigator/Navigator.java",
    "chars": 747,
    "preview": "package com.wkw.hot.navigator;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport com.wkw.hot.ui.Abo"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/ContextLife.java",
    "chars": 362,
    "preview": "package com.wkw.hot.reject;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.Retention;\n\nimport java"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/PerActivity.java",
    "chars": 260,
    "preview": "package com.wkw.hot.reject;\n\nimport java.lang.annotation.Retention;\nimport static java.lang.annotation.RetentionPolicy.R"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/PerFragment.java",
    "chars": 261,
    "preview": "package com.wkw.hot.reject;\n\nimport java.lang.annotation.Retention;\n\nimport javax.inject.Scope;\n\nimport static java.lang"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/component/ActivityComponent.java",
    "chars": 670,
    "preview": "package com.wkw.hot.reject.component;\n\nimport android.app.Activity;\n\nimport com.wkw.hot.data.DataManager;\nimport com.wkw"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/component/AppComponent.java",
    "chars": 461,
    "preview": "package com.wkw.hot.reject.component;\n\nimport com.wkw.hot.data.DataManager;\nimport com.wkw.hot.reject.ContextLife;\nimpor"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/component/FragmentComponent.java",
    "chars": 544,
    "preview": "package com.wkw.hot.reject.component;\n\nimport android.app.Activity;\n\nimport com.wkw.hot.data.DataManager;\nimport com.wkw"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/module/ActivityModule.java",
    "chars": 460,
    "preview": "package com.wkw.hot.reject.module;\n\nimport android.app.Activity;\n\nimport com.wkw.hot.reject.PerActivity;\n\nimport dagger."
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/module/AppModule.java",
    "chars": 2665,
    "preview": "package com.wkw.hot.reject.module;\n\nimport com.wkw.hot.cache.CacheLoader;\nimport com.wkw.hot.common.Constants;\nimport co"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/reject/module/FragmentModule.java",
    "chars": 551,
    "preview": "package com.wkw.hot.reject.module;\n\nimport android.app.Activity;\nimport android.support.v4.app.Fragment;\n\nimport com.wkw"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/AboutActivity.java",
    "chars": 1506,
    "preview": "package com.wkw.hot.ui;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.support.design.wi"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/App.java",
    "chars": 3474,
    "preview": "package com.wkw.hot.ui;\n\nimport android.app.Application;\n\nimport com.facebook.react.ReactApplication;\nimport com.faceboo"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/item/ItemAdapter.java",
    "chars": 2499,
    "preview": "package com.wkw.hot.ui.item;\n\nimport android.support.v7.widget.CardView;\nimport android.support.v7.widget.RecyclerView;\n"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/item/ItemContract.java",
    "chars": 574,
    "preview": "package com.wkw.hot.ui.item;\n\nimport com.wkw.hot.base.ILoadingView;\nimport com.wkw.hot.base.IPresenter;\nimport com.wkw.h"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/item/ItemFragment.java",
    "chars": 5692,
    "preview": "package com.wkw.hot.ui.item;\n\nimport android.content.Context;\nimport android.os.Bundle;\nimport android.support.v4.widget"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/item/ItemPresenter.java",
    "chars": 2764,
    "preview": "package com.wkw.hot.ui.item;\n\nimport com.wkw.common_lib.rx.RxSubscriber;\nimport com.wkw.hot.base.BasePresenter;\nimport c"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/main/MainActivity.java",
    "chars": 6146,
    "preview": "package com.wkw.hot.ui.main;\n\nimport android.content.Intent;\nimport android.speech.RecognizerIntent;\nimport android.supp"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/main/MainContract.java",
    "chars": 364,
    "preview": "package com.wkw.hot.ui.main;\n\nimport com.wkw.hot.base.IPresenter;\nimport com.wkw.hot.base.IView;\n\nimport java.util.List;"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/main/MainPresenter.java",
    "chars": 548,
    "preview": "package com.wkw.hot.ui.main;\n\nimport com.wkw.hot.base.BasePresenter;\nimport com.wkw.hot.data.DataManager;\nimport javax.i"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/react/MyReactActivity.java",
    "chars": 523,
    "preview": "package com.wkw.hot.ui.react;\n\nimport com.github.markzhai.react.preloader.MrReactActivity;\nimport com.github.markzhai.re"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/search/SearchActivity.java",
    "chars": 1810,
    "preview": "package com.wkw.hot.ui.search;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.os.Bundle;"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/web/WebActivity.java",
    "chars": 5206,
    "preview": "package com.wkw.hot.ui.web;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.support.v7.ap"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/web/WebContract.java",
    "chars": 266,
    "preview": "package com.wkw.hot.ui.web;\n\nimport com.wkw.hot.base.IPresenter;\nimport com.wkw.hot.base.IView;\n\n/**\n * Created by wukew"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/ui/web/WebPresenter.java",
    "chars": 331,
    "preview": "package com.wkw.hot.ui.web;\n\nimport com.wkw.hot.base.BasePresenter;\nimport com.wkw.hot.data.DataManager;\nimport javax.in"
  },
  {
    "path": "app/src/main/java/com/wkw/hot/utils/GlideManager.java",
    "chars": 504,
    "preview": "package com.wkw.hot.utils;\n\nimport android.content.Context;\nimport android.widget.ImageView;\n\nimport com.bumptech.glide."
  },
  {
    "path": "app/src/main/java/com/wkw/hot/utils/Logger.java",
    "chars": 690,
    "preview": "package com.wkw.hot.utils;\n\nimport android.util.Log;\n\n/**\n * Created by wukewei on 16/6/1.\n */\npublic class Logger {\n\n  "
  },
  {
    "path": "app/src/main/res/drawable/custom_cursor.xml",
    "chars": 197,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <size andr"
  },
  {
    "path": "app/src/main/res/drawable/progress_bar_bg.xml",
    "chars": 1245,
    "preview": "<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <item android:id=\"@android:id/background\">\n"
  },
  {
    "path": "app/src/main/res/drawable/side_nav_bar.xml",
    "chars": 290,
    "preview": "<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:shape=\"rectangle\">\n    <gradient\n        a"
  },
  {
    "path": "app/src/main/res/drawable-v21/ic_menu_camera.xml",
    "chars": 583,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "app/src/main/res/drawable-v21/ic_menu_gallery.xml",
    "chars": 437,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "app/src/main/res/drawable-v21/ic_menu_manage.xml",
    "chars": 473,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "app/src/main/res/drawable-v21/ic_menu_send.xml",
    "chars": 313,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "app/src/main/res/drawable-v21/ic_menu_share.xml",
    "chars": 706,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "app/src/main/res/drawable-v21/ic_menu_slideshow.xml",
    "chars": 427,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "app/src/main/res/layout/activity_about.xml",
    "chars": 6115,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.design.widget.CoordinatorLayout xmlns:android=\"http://schemas.an"
  },
  {
    "path": "app/src/main/res/layout/activity_main.xml",
    "chars": 971,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v4.widget.DrawerLayout xmlns:android=\"http://schemas.android.com"
  },
  {
    "path": "app/src/main/res/layout/activity_search.xml",
    "chars": 469,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    andr"
  },
  {
    "path": "app/src/main/res/layout/activity_web.xml",
    "chars": 734,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    andr"
  },
  {
    "path": "app/src/main/res/layout/app_bar_main.xml",
    "chars": 1836,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.design.widget.CoordinatorLayout xmlns:android=\"http://schemas.an"
  },
  {
    "path": "app/src/main/res/layout/fragment_item.xml",
    "chars": 2270,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    andr"
  },
  {
    "path": "app/src/main/res/layout/fragment_list.xml",
    "chars": 824,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.wkw.common_lib.widget.ProgressLayout xmlns:android=\"http://schemas.android.c"
  },
  {
    "path": "app/src/main/res/layout/layout_item.xml",
    "chars": 1511,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.CardView xmlns:android=\"http://schemas.android.com/apk"
  },
  {
    "path": "app/src/main/res/layout/layout_toolbar_view.xml",
    "chars": 804,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.design.widget.AppBarLayout xmlns:android=\"http://schemas.android"
  },
  {
    "path": "app/src/main/res/layout/nav_header_main.xml",
    "chars": 1301,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    andr"
  },
  {
    "path": "app/src/main/res/menu/activity_main_drawer.xml",
    "chars": 1133,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <group and"
  },
  {
    "path": "app/src/main/res/menu/main.xml",
    "chars": 399,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"h"
  },
  {
    "path": "app/src/main/res/menu/menu_web.xml",
    "chars": 677,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"h"
  },
  {
    "path": "app/src/main/res/values/arrays.xml",
    "chars": 271,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string-array name=\"query_suggestions\">\n        <item>科技</item>\n "
  },
  {
    "path": "app/src/main/res/values/colors.xml",
    "chars": 293,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"colorPrimary\">#3F51B5</color>\n    <color name=\"color"
  },
  {
    "path": "app/src/main/res/values/dimens.xml",
    "chars": 721,
    "preview": "<resources>\n    <!-- Default screen margins, per the Android Design guidelines. -->\n    <dimen name=\"nav_header_vertical"
  },
  {
    "path": "app/src/main/res/values/drawables.xml",
    "chars": 614,
    "preview": "<resources xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item name=\"ic_menu_camera\" type=\"drawable\">@"
  },
  {
    "path": "app/src/main/res/values/strings.xml",
    "chars": 2051,
    "preview": "<resources>\n    <string name=\"app_name\">Hot</string>\n\n    <string name=\"navigation_drawer_open\">Open navigation drawer</"
  },
  {
    "path": "app/src/main/res/values/styles.xml",
    "chars": 886,
    "preview": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">"
  },
  {
    "path": "app/src/main/res/values-v21/styles.xml",
    "chars": 327,
    "preview": "<resources>\n\n    <style name=\"AppTheme.NoActionBar\">\n        <item name=\"windowActionBar\">false</item>\n        <item nam"
  },
  {
    "path": "app/src/main/res/values-w820dp/dimens.xml",
    "chars": 358,
    "preview": "<resources>\n    <!-- Example customization of dimensions originally defined in res/values/dimens.xml\n         (such as s"
  },
  {
    "path": "app/src/test/java/com/wkw/hot/ExampleUnitTest.java",
    "chars": 304,
    "preview": "package com.wkw.hot;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.*;\n\n/**\n * To work on unit tests, switch th"
  },
  {
    "path": "build.gradle",
    "chars": 836,
    "preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\napply from: \"version"
  },
  {
    "path": "common_lib/.gitignore",
    "chars": 7,
    "preview": "/build\n"
  },
  {
    "path": "common_lib/build.gradle",
    "chars": 948,
    "preview": "apply plugin: 'com.android.library'\n\nandroid {\n    compileSdkVersion rootProject.ext.android.compileSdkVersion\n    build"
  },
  {
    "path": "common_lib/proguard-rules.pro",
    "chars": 665,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /U"
  },
  {
    "path": "common_lib/src/androidTest/java/com/wkw/common_lib/ApplicationTest.java",
    "chars": 349,
    "preview": "package com.wkw.common_lib;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\"h"
  },
  {
    "path": "common_lib/src/main/AndroidManifest.xml",
    "chars": 342,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.wkw.common_lib\">\n\n    <uses-permis"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/Ext.java",
    "chars": 2601,
    "preview": "package com.wkw.common_lib;\n\nimport android.app.Application;\nimport android.content.Context;\nimport android.content.pm.P"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/image/ImageConfig.java",
    "chars": 593,
    "preview": "package com.wkw.common_lib.image;\n\nimport android.widget.ImageView;\n\n/**\n * Created by wukewei on 16/12/22.\n * Email zjw"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/image/ImageLoader.java",
    "chars": 953,
    "preview": "package com.wkw.common_lib.image;\n\nimport android.content.Context;\nimport com.wkw.common_lib.image.glide.GlideImageConfi"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/image/ImageLoaderStrategy.java",
    "chars": 285,
    "preview": "package com.wkw.common_lib.image;\n\nimport android.content.Context;\n\n/**\n * Created by wukewei on 16/12/22.\n * Email zjwk"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/image/glide/GlideImageConfig.java",
    "chars": 2111,
    "preview": "package com.wkw.common_lib.image.glide;\n\nimport android.widget.ImageView;\nimport com.wkw.common_lib.image.ImageConfig;\n\n"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/image/glide/GlideImageLoaderStrategy.java",
    "chars": 1799,
    "preview": "package com.wkw.common_lib.image.glide;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport com.bumptec"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/AccessPoint.java",
    "chars": 2917,
    "preview": "package com.wkw.common_lib.network;\n\nimport com.wkw.common_lib.utils.StringUtils;\n\nimport java.util.HashMap;\n\n/**\n * Cre"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/Network.java",
    "chars": 861,
    "preview": "package com.wkw.common_lib.network;\n\nimport android.support.annotation.RequiresPermission;\n\nimport com.wkw.common_lib.Ex"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/NetworkDash.java",
    "chars": 12461,
    "preview": "package com.wkw.common_lib.network;\n\nimport android.content.Context;\nimport android.net.ConnectivityManager;\nimport andr"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/NetworkObserver.java",
    "chars": 5899,
    "preview": "package com.wkw.common_lib.network;\n\nimport android.annotation.SuppressLint;\nimport android.content.BroadcastReceiver;\ni"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/NetworkState.java",
    "chars": 6201,
    "preview": "package com.wkw.common_lib.network;\n\nimport android.net.ConnectivityManager;\nimport android.net.NetworkInfo;\n\nimport com"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/NetworkStateListener.java",
    "chars": 373,
    "preview": "package com.wkw.common_lib.network;\n\n/**\n * Created by wukewei on 16/7/25.\n */\npublic interface NetworkStateListener {\n\n"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/NetworkType.java",
    "chars": 1029,
    "preview": "package com.wkw.common_lib.network;\n\n/**\n * Created by wukewei on 16/7/25.\n */\npublic enum NetworkType {\n    /**\n     * "
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/ServiceProvider.java",
    "chars": 1975,
    "preview": "package com.wkw.common_lib.network;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wukewei on 16/7/"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/network/WifiDash.java",
    "chars": 4027,
    "preview": "package com.wkw.common_lib.network;\n\nimport android.content.Context;\nimport android.net.wifi.WifiInfo;\nimport android.ne"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/ApiResponse.java",
    "chars": 993,
    "preview": "package com.wkw.common_lib.rx;\n\n/**\n * Created by wukewei on 16/5/26.\n */\npublic class ApiResponse<T> {\n\n    public stat"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/ProgressSubscriber.java",
    "chars": 1370,
    "preview": "package com.wkw.common_lib.rx;\n\nimport android.app.ProgressDialog;\nimport android.content.Context;\n\nimport com.wkw.commo"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/RxBus.java",
    "chars": 1435,
    "preview": "package com.wkw.common_lib.rx;\n\nimport rx.Observable;\nimport rx.subjects.PublishSubject;\nimport rx.subjects.SerializedSu"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/RxResultHelper.java",
    "chars": 1903,
    "preview": "package com.wkw.common_lib.rx;\n\nimport com.wkw.common_lib.rx.error.NetworkConnectionException;\nimport com.wkw.common_lib"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/RxSubscriber.java",
    "chars": 622,
    "preview": "package com.wkw.common_lib.rx;\n\nimport com.wkw.common_lib.rx.error.DefaultErrorBundle;\nimport com.wkw.common_lib.rx.erro"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/SchedulersCompat.java",
    "chars": 632,
    "preview": "package com.wkw.common_lib.rx;\n\n\nimport rx.Observable;\nimport rx.android.schedulers.AndroidSchedulers;\nimport rx.schedul"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/error/DefaultErrorBundle.java",
    "chars": 574,
    "preview": "package com.wkw.common_lib.rx.error;\n\n/**\n * Created by wukewei on 16/8/17.\n */\npublic class DefaultErrorBundle implemen"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/error/ErrorBundle.java",
    "chars": 173,
    "preview": "package com.wkw.common_lib.rx.error;\n\n/**\n * Created by wukewei on 16/8/17.\n */\npublic interface ErrorBundle {\n    Excep"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/error/ErrorHanding.java",
    "chars": 1142,
    "preview": "package com.wkw.common_lib.rx.error;\n\nimport com.wkw.common_lib.Ext;\n\nimport java.net.ConnectException;\nimport java.net."
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/error/NetworkConnectionException.java",
    "chars": 1138,
    "preview": "/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/rx/error/ServerException.java",
    "chars": 403,
    "preview": "package com.wkw.common_lib.rx.error;\n\n/**\n * Created by wukewei on 16/5/30.\n */\npublic class ServerException extends Exc"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/sp/Once.java",
    "chars": 3563,
    "preview": "package com.wkw.common_lib.sp;\n\nimport android.annotation.TargetApi;\nimport android.content.Context;\nimport android.cont"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/sp/PersistedMap.java",
    "chars": 1614,
    "preview": "package com.wkw.common_lib.sp;\n\nimport android.annotation.TargetApi;\nimport android.content.Context;\nimport android.cont"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/AndroidUtils.java",
    "chars": 1708,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.Activity;\nimport android.content.ClipData;\nimport android.content."
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/AppManager.java",
    "chars": 1573,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.Activity;\n\nimport java.util.Stack;\n\n/**\n * Created by wukewei on 1"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/AppUtils.java",
    "chars": 4648,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.ActivityManager;\nimport android.app.KeyguardManager;\nimport androi"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/DialogUtil.java",
    "chars": 5241,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.ProgressDialog;\nimport android.content.Context;\nimport android.con"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/HtmlUtils.java",
    "chars": 1220,
    "preview": "package com.wkw.common_lib.utils;\n\nimport java.util.regex.Pattern;\n\n/**\n * Created by wukewei on 16/7/25.\n */\npublic fin"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/NetWorkUtils.java",
    "chars": 14845,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.content.Context;\nimport android.database.Cursor;\nimport android.net.Co"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/ProcessUtils.java",
    "chars": 7761,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.ActivityManager;\nimport android.content.Context;\nimport java.util."
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/PropertyUtils.java",
    "chars": 3575,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.text.TextUtils;\nimport android.util.Log;\n\nimport java.io.BufferedReade"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/Singleton.java",
    "chars": 449,
    "preview": "package com.wkw.common_lib.utils;\n\n/**\n * Created by wukewei on 16/7/24.\n */\npublic abstract class Singleton<T, P> {\n   "
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/StringUtils.java",
    "chars": 14172,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.text.TextUtils;\nimport android.text.format.Time;\n\nimport java.io.ByteA"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/ThreadUtils.java",
    "chars": 5000,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.os.Handler;\nimport android.os.Looper;\nimport android.util.Printer;\n\nim"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/ToashUtils.java",
    "chars": 9687,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.support.a"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/utils/ViewUtils.java",
    "chars": 15121,
    "preview": "package com.wkw.common_lib.utils;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.C"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/ClearEditText.java",
    "chars": 4093,
    "preview": "package com.wkw.common_lib.widget;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport androi"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/CustomTabHost.java",
    "chars": 11037,
    "preview": "package com.wkw.test.tabhost;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport android.os."
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/ProgressLayout.java",
    "chars": 5775,
    "preview": "package com.wkw.common_lib.widget;\n\nimport android.content.Context;\nimport android.util.AttributeSet;\nimport android.vie"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/TimerButton.java",
    "chars": 2358,
    "preview": "package com.wkw.common_lib.widget;\n\nimport android.annotation.TargetApi;\nimport android.content.Context;\nimport android."
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/DefaultEmptyItem.java",
    "chars": 2513,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/DefaultFootItem.java",
    "chars": 5171,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/EmptyFootItem.java",
    "chars": 1595,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/EmptyItem.java",
    "chars": 1518,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/FootItem.java",
    "chars": 1592,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/OnLoadMoreListener.java",
    "chars": 1326,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/RecyclerViewUtils.java",
    "chars": 3982,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/java/com/wkw/common_lib/widget/loadmore/RecyclerViewWithFooter.java",
    "chars": 16207,
    "preview": "/*\n * The GPL License (GPL)\n *\n * Copyright (c) 2016 Moduth (https://github.com/moduth)\n *\n * Permission is hereby grant"
  },
  {
    "path": "common_lib/src/main/res/layout/layout_error_view.xml",
    "chars": 768,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    an"
  },
  {
    "path": "common_lib/src/main/res/layout/layout_loading_footer_view.xml",
    "chars": 628,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    andr"
  },
  {
    "path": "common_lib/src/main/res/layout/layout_loading_view.xml",
    "chars": 886,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    an"
  },
  {
    "path": "common_lib/src/main/res/layout/layout_no_data_view.xml",
    "chars": 781,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    an"
  },
  {
    "path": "common_lib/src/main/res/layout/rv_with_footer_empty_layout.xml",
    "chars": 811,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<RelativeLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
  },
  {
    "path": "common_lib/src/main/res/layout/rv_with_footer_loading.xml",
    "chars": 1845,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<RelativeLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
  },
  {
    "path": "common_lib/src/main/res/values/attrs.xml",
    "chars": 191,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <declare-styleable name=\"ClearEditText\">\n        <attr name=\"cle"
  },
  {
    "path": "common_lib/src/main/res/values/dimens.xml",
    "chars": 118,
    "preview": "<resources>\n    <dimen name=\"progress_width\">60dp</dimen>\n    <dimen name=\"progress_height\">60dp</dimen>\n</resources>\n"
  },
  {
    "path": "common_lib/src/main/res/values/rv_with_footer_strings.xml",
    "chars": 262,
    "preview": "<resources>\n    <string name=\"rv_with_footer_pull_load_more\">上拉加载更多</string>\n    <string name=\"rv_with_footer_loading\">加"
  },
  {
    "path": "common_lib/src/main/res/values/strings.xml",
    "chars": 363,
    "preview": "<resources>\n    <string name=\"app_name\">common_lib</string>\n    <string name=\"not_network\">当前无网络连接,请检查网络...</string>\n   "
  },
  {
    "path": "common_lib/src/test/java/com/wkw/common_lib/ExampleUnitTest.java",
    "chars": 311,
    "preview": "package com.wkw.common_lib;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.*;\n\n/**\n * To work on unit tests, sw"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "chars": 233,
    "preview": "#Mon Sep 12 10:05:44 CST 2016\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_"
  },
  {
    "path": "gradle.properties",
    "chars": 784,
    "preview": "## Project-wide Gradle settings.\n#\n# For more details on how to configure your build environment visit\n# http://www.grad"
  },
  {
    "path": "gradlew",
    "chars": 4971,
    "preview": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start "
  },
  {
    "path": "gradlew.bat",
    "chars": 2404,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
  },
  {
    "path": "index.android.js",
    "chars": 230,
    "preview": "/**\n * Sample React Native App\n * https://github.com/facebook/react-native\n * @flow\n */\n\nimport {\n\tAppRegistry,\n} from '"
  },
  {
    "path": "js/actions/newsList.js",
    "chars": 677,
    "preview": "import * as types from \"../constants/ActionTypes.js\";\nimport * as Services from \"../utils/Services.js\";\nimport {\n\tNEW_LI"
  },
  {
    "path": "js/components/Header.js",
    "chars": 1343,
    "preview": "import React, {\n\tPropTypes\n} from 'react';\nimport {\n\tStyleSheet,\n\tToolbarAndroid,\n\tPlatform,\n\tView,\n\tText\n} from 'react-"
  },
  {
    "path": "js/components/LoadingView.js",
    "chars": 542,
    "preview": "import React, {\n\tComponent\n} from 'react';\nimport {\n\tActivityIndicator,\n\tText,\n\tStyleSheet,\n\tView\n} from 'react-native';"
  },
  {
    "path": "js/constants/ActionTypes.js",
    "chars": 79,
    "preview": "export const FE_NEWLIST = 'FE_NEWLIST';\nexport const RE_NEWLIST = 'RE_NEWLIST';"
  },
  {
    "path": "js/constants/Urls.js",
    "chars": 42,
    "preview": "export const NEW_LIST = 'txapi/tiyu/tiyu';"
  },
  {
    "path": "js/containes/App.js",
    "chars": 1203,
    "preview": "import React from 'react';\nimport {\n\tStyleSheet,\n\tNavigator,\n\tStatusBar,\n\tBackAndroid,\n\tView\n} from 'react-native';\nimpo"
  },
  {
    "path": "js/containes/NewsContaines.js",
    "chars": 628,
    "preview": "'use strict';\n\nimport React, {\n  Component\n} from 'react';\nimport {\n  connect\n} from 'react-redux';\nimport News from \".."
  },
  {
    "path": "js/containes/WebViewContaines.js",
    "chars": 395,
    "preview": "import React, {\n  Component\n} from 'react';\nimport {\n  connect\n} from 'react-redux';\nimport WebViewPage from \"../pages/W"
  },
  {
    "path": "js/pages/News.js",
    "chars": 4144,
    "preview": "import React, {\n  Component\n} from 'react';\nimport {\n  StyleSheet,\n  Text,\n  RefreshControl,\n  TouchableOpacity,\n  ListV"
  },
  {
    "path": "js/pages/WebViewPage.js",
    "chars": 1279,
    "preview": "'use strict'\nimport React, {\n    Component\n} from 'react';\nimport {\n    StyleSheet,\n    WebView,\n    View\n} from 'react-"
  },
  {
    "path": "js/reducers/index.js",
    "chars": 164,
    "preview": "'use strict'\nimport {\n\tcombineReducers\n} from 'redux';\nimport news from './newsList.js';\nconst rootReduer = combineReduc"
  },
  {
    "path": "js/reducers/newsList.js",
    "chars": 667,
    "preview": "import * as types from '../constants/ActionTypes';\n\nconst initialState = {\n\tloading: true,\n\tisRefresh: false,\n\tisLoadMor"
  },
  {
    "path": "js/rootApp.js",
    "chars": 364,
    "preview": "import React, {\n\tComponent\n} from 'react';\nimport {\n\tProvider\n} from 'react-redux'\nimport configureStore from './store/s"
  },
  {
    "path": "js/store/store.js",
    "chars": 380,
    "preview": "'use strict';\n\nimport {\n\tcreateStore,\n\tapplyMiddleware\n} from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport"
  },
  {
    "path": "js/utils/CommonUtil.js",
    "chars": 253,
    "preview": "'use strict'\nimport {\n\tBackAndroid\n} from 'react-native';\nexport const naviGoBack = (navigator) => {\n\tif (navigator && n"
  },
  {
    "path": "js/utils/Services.js",
    "chars": 768,
    "preview": "const HOST = \"http://apis.baidu.com/\";\nimport FetchHttpClient, {\n\tquery,\n\theader\n} from 'fetch-http-client';\nimport {\n\tt"
  },
  {
    "path": "js/utils/ToastUtil.js",
    "chars": 295,
    "preview": "import {\n\tToastAndroid\n} from 'react-native';\n\nexport const toastShort = (content) => {\n\tif (content != undefined) {\n\t\tT"
  },
  {
    "path": "package.json",
    "chars": 1050,
    "preview": "{\n  \"name\": \"rn-hot\",\n  \"version\": \"1.0.0\",\n  \"description\": \"react-native hot\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n  "
  },
  {
    "path": "settings.gradle",
    "chars": 30,
    "preview": "include ':app', ':common_lib'\n"
  }
]

// ... and 3 more files (download for full content)

About this extraction

This page contains the full source code of the zj-wukewei/Hot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 203 files (575.0 KB), approximately 137.1k tokens, and a symbol index with 1215 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!