├── .travis.yml ├── src ├── .noderequirer.json ├── index.js ├── themes │ ├── index.js │ └── inspector.js ├── utils │ ├── isIterable.js │ ├── getType.js │ ├── getInspectedState.js │ └── createStylingFromTheme.js ├── types.js ├── RightSlider.jsx ├── tabs │ ├── getJsonTreeTheme.js │ ├── DiffTab.jsx │ ├── StateTab.jsx │ ├── ActionTab.jsx │ ├── getItemString.js │ └── JSONDiff.jsx ├── redux.js ├── createDiffPatcher.js ├── ActionListHeader.jsx ├── ActionPreviewHeader.jsx ├── ActionPreview.jsx ├── ActionList.jsx ├── ActionListRow.jsx └── DevtoolsInspector.js ├── demo └── src │ ├── .noderequirer.json │ ├── js │ ├── getOptions.js │ ├── index.js │ ├── reducers.js │ └── DemoApp.jsx │ └── index.html ├── demo.gif ├── .gitignore ├── .npmignore ├── 2016-02-23.at.16.16.png ├── flow-typed └── npm │ ├── flow-bin_v0.x.x.js │ ├── raw-loader_vx.x.x.js │ ├── json-loader_vx.x.x.js │ ├── eslint-loader_vx.x.x.js │ ├── imports-loader_vx.x.x.js │ ├── lodash.shuffle_vx.x.x.js │ ├── lodash.debounce_vx.x.x.js │ ├── babel-preset-react_vx.x.x.js │ ├── babel-preset-es2015_vx.x.x.js │ ├── babel-preset-stage-0_vx.x.x.js │ ├── clean-webpack-plugin_vx.x.x.js │ ├── javascript-stringify_vx.x.x.js │ ├── babel_vx.x.x.js │ ├── export-files-webpack-plugin_vx.x.x.js │ ├── hex-rgba_vx.x.x.js │ ├── babel-plugin-transform-flow-strip-types_vx.x.x.js │ ├── react-transform-hmr_vx.x.x.js │ ├── nyan-progress-webpack-plugin_vx.x.x.js │ ├── babel-plugin-transform-runtime_vx.x.x.js │ ├── chokidar_vx.x.x.js │ ├── git-directory-deploy_vx.x.x.js │ ├── pre-commit_vx.x.x.js │ ├── redux-devtools-themes_vx.x.x.js │ ├── babel-loader_vx.x.x.js │ ├── react-pure-render_vx.x.x.js │ ├── html-webpack-plugin_vx.x.x.js │ ├── dateformat_vx.x.x.js │ ├── redux-devtools_vx.x.x.js │ ├── redux_v3.x.x.js │ ├── babel-eslint_vx.x.x.js │ ├── jss-vendor-prefixer_vx.x.x.js │ ├── react-redux_v4.x.x.js │ ├── jss-nested_vx.x.x.js │ ├── webpack-dev-server_vx.x.x.js │ ├── redux-logger_vx.x.x.js │ ├── redux-devtools-dock-monitor_vx.x.x.js │ ├── babel-cli_vx.x.x.js │ ├── react-router-redux_vx.x.x.js │ ├── react-json-tree_vx.x.x.js │ ├── jss_vx.x.x.js │ ├── eslint-plugin-babel_vx.x.x.js │ ├── babel-core_vx.x.x.js │ ├── react-input-enhancements_vx.x.x.js │ ├── react-base16-styling_vx.x.x.js │ └── jsondiffpatch_vx.x.x.js ├── .flowconfig ├── .babelrc ├── LICENSE ├── .eslintrc ├── webpack.config.js ├── README.md └── package.json /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 6 -------------------------------------------------------------------------------- /src/.noderequirer.json: -------------------------------------------------------------------------------- 1 | { 2 | "import": true 3 | } 4 | -------------------------------------------------------------------------------- /demo/src/.noderequirer.json: -------------------------------------------------------------------------------- 1 | { 2 | "import": true 3 | } 4 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | export { default } from './DevtoolsInspector'; 3 | -------------------------------------------------------------------------------- /src/themes/index.js: -------------------------------------------------------------------------------- 1 | export { default as inspector } from './inspector'; 2 | -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexkuz/redux-devtools-inspector/HEAD/demo.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .DS_Store 4 | lib 5 | yarn.lock 6 | demo/dist -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | static 2 | src 3 | demo 4 | .* 5 | webpack.config.js 6 | index.html 7 | *.gif 8 | *.png 9 | -------------------------------------------------------------------------------- /2016-02-23.at.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexkuz/redux-devtools-inspector/HEAD/2016-02-23.at.16.16.png -------------------------------------------------------------------------------- /src/utils/isIterable.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | export default function isIterable(obj: any): boolean { 3 | return obj !== null && typeof obj === 'object' && !Array.isArray(obj) && 4 | typeof obj[window.Symbol.iterator] === 'function'; 5 | } 6 | -------------------------------------------------------------------------------- /flow-typed/npm/flow-bin_v0.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 6a5610678d4b01e13bbfbbc62bdaf583 2 | // flow-typed version: 3817bc6980/flow-bin_v0.x.x/flow_>=v0.25.x 3 | 4 | declare module "flow-bin" { 5 | declare module.exports: string; 6 | } 7 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [options] 2 | module.file_ext=.js 3 | module.file_ext=.jsx 4 | module.file_ext=.json 5 | esproposal.export_star_as=enable 6 | 7 | [ignore] 8 | .*/node_modules/fbjs/.* 9 | .*/node_modules/jss/.* 10 | .*/build/.* 11 | 12 | [libs] 13 | decls/ -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-0", "react"], 3 | "plugins": ["transform-runtime"], 4 | "env": { 5 | "development": { 6 | "plugins": [["react-transform", { 7 | "transforms": [{ 8 | "transform": "react-transform-hmr", 9 | "imports": ["react"], 10 | "locals": ["module"] 11 | }] 12 | }]] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /demo/src/js/getOptions.js: -------------------------------------------------------------------------------- 1 | export default function getOptions() { 2 | return { 3 | useExtension: window.location.search.indexOf('ext') !== -1, 4 | supportImmutable: window.location.search.indexOf('immutable') !== -1, 5 | theme: do { 6 | const match = window.location.search.match(/theme=([^&]+)/); 7 | match ? match[1] : 'inspector' 8 | }, 9 | dark: window.location.search.indexOf('dark') !== -1 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /src/types.js: -------------------------------------------------------------------------------- 1 | export type Action = { 2 | timestamp: Date, 3 | error: ?string 4 | }; 5 | 6 | export type TabName = 'Action' | 'Diff' | 'State'; 7 | export type Tab = { 8 | name: TabName, 9 | component: React$Component 10 | }; 11 | 12 | export type ReduxState = { 13 | selectedActionId: null | number, 14 | startActionId: null | number, 15 | inspectedActionPath: string[], 16 | inspectedStatePath: string[], 17 | tabName: TabName 18 | }; 19 | 20 | export type MonitorState = { 21 | initialScrollTop: number 22 | }; 23 | -------------------------------------------------------------------------------- /src/themes/inspector.js: -------------------------------------------------------------------------------- 1 | export default { 2 | scheme: 'inspector', 3 | author: 'Alexander Kuznetsov (alexkuz@gmail.com)', 4 | base00: '#181818', 5 | base01: '#282828', 6 | base02: '#383838', 7 | base03: '#585858', 8 | base04: '#b8b8b8', 9 | base05: '#d8d8d8', 10 | base06: '#e8e8e8', 11 | base07: '#FFFFFF', 12 | base08: '#E92F28', 13 | base09: '#dc9656', 14 | base0A: '#f7ca88', 15 | base0B: '#65AD00', 16 | base0C: '#86c1b9', 17 | base0D: '#347BD9', 18 | base0E: '#EC31C0', 19 | base0F: '#a16946' 20 | }; 21 | -------------------------------------------------------------------------------- /src/RightSlider.jsx: -------------------------------------------------------------------------------- 1 | // @flow 2 | import React from 'react'; 3 | 4 | import type { StylingFunction } from 'react-base16-styling'; 5 | 6 | type Props = { 7 | styling: StylingFunction, 8 | shown: boolean, 9 | children?: any, 10 | rotate?: boolean 11 | }; 12 | 13 | const RightSlider = ({ styling, shown, children, rotate }: Props) => 14 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/flow-typed/npm/clean-webpack-plugin_vx.x.x.js:
--------------------------------------------------------------------------------
1 | // flow-typed signature: 70b754b90629d8806d098a8baab4f460
2 | // flow-typed version: < = (props: P) => ?React$Element ): ConnectedComponentClass extends React$Component(
62 | mapStateToProps: MapStateToProps,
63 | mapDispatchToProps: Null,
64 | mergeProps: Null,
65 | options?: ConnectOptions
66 | ): Connector(
76 | mapStateToProps: MapStateToProps,
77 | mapDispatchToProps: MapDispatchToProps,
78 | mergeProps: Null,
79 | options?: ConnectOptions
80 | ): Connector(
83 | mapStateToProps: MapStateToProps,
84 | mapDispatchToProps: MapDispatchToProps,
85 | mergeProps: MergeProps{pkg.description || Package Description}
90 |