diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..900b426 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +build/ +public/gameoflife/ +*.test.js +registerServiceWorker.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9a726b1 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "parser": "babel-eslint", + "plugins": [ + "react" + ], + "extends": "airbnb", + "rules": { + "semi": ["error", "never"] + }, + "env": { + "browser": true, + "es6": true, + "node": true + // "mocha": true + // "mongo": true + // "commonjs": true + } +} diff --git a/package.json b/package.json index a655181..b484266 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,12 @@ "version": "0.1.0", "private": true, "dependencies": { + "antd": "^2.12.1", + "eslint": "^3.19.0", + "eslint-config-airbnb": "^15.0.2", + "eslint-plugin-import": "^2.6.1", + "eslint-plugin-jsx-a11y": "^5.1.1", + "eslint-plugin-react": "^7.1.0", "react": "^15.6.1", "react-dom": "^15.6.1", "react-scripts": "1.0.10" @@ -10,6 +16,7 @@ "scripts": { "start": "react-scripts start", "build": "react-scripts build", + "surge": "surge build paulhoskinson.surge.sh", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" } diff --git a/public/gameoflife/gameoflife.css b/public/gameoflife/gameoflife.css new file mode 100644 index 0000000..c060ec9 --- /dev/null +++ b/public/gameoflife/gameoflife.css @@ -0,0 +1,53 @@ +.cell { + height: 8px; + width: 8px; + + margin: 0; + padding: 0; + border-style: none; +} + +.cell-0 { background-color: #000; } + +.cell-1 { background-color: #fc0; } +.cell-2 { background-color: #f90; } +.cell-3 { background-color: #f50; } +.cell-4 { background-color: #f00; } +.cell-5 { background-color: #c00; } +.cell-6 { background-color: #900; } +.cell-7 { background-color: #00c; } + +body { + font-size: 100%; + font-family: sans-serif; + text-align: center; + max-width: 1000px; + margin: auto; + background: #2f496e; + color: #eee; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +h1 { +} + +button { + margin: 5px; + padding: 8px; + background-color: #333; + color: #fff; + border-color: #666; + font-size: 1.1em; +} + +table { + background-color: #000; + margin: auto; + border-collapse: collapse; + border-style: solid; + border-width: 2px; + border-color: #888; +} diff --git a/public/gameoflife/gameoflife.html b/public/gameoflife/gameoflife.html new file mode 100644 index 0000000..70a1e7f --- /dev/null +++ b/public/gameoflife/gameoflife.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/public/gameoflife/gameoflife.js b/public/gameoflife/gameoflife.js new file mode 100644 index 0000000..589f100 --- /dev/null +++ b/public/gameoflife/gameoflife.js @@ -0,0 +1,307 @@ +// CONSTANTS +const ROWS = 50; // height of board +const COLS = 120; // width +const STEP_INTERVAL = 50; // milliseconds +const RANDOM_DENSITY = 0.37; + +// LIBRARIES: React, Redux, React-Redux +const { Component } = React; +const { PropTypes } = React; +const { createStore } = Redux; +const { combineReducers } = Redux; +const { Provider } = ReactRedux; +const { connect } = ReactRedux; + +// MISC FUNCTIONS + +// Computes next state of board from current state +const advanceBoardHelper = (current) => { + let next = []; + let row, col; + for (row = 0; row < ROWS; row++) { + next.push([]); + for (col = 0; col < COLS; col++) { + const neighbours = (() => { + const rowUp = row === 0 ? ROWS - 1 : row - 1; + const rowDown = row === ROWS - 1 ? 0 : row + 1; + const colLeft = col === 0 ? COLS - 1 : col - 1; + const colRight = col === COLS - 1 ? 0 : col + 1; + let num = 0; + num += current[rowUp][colLeft] > 0 ? 1 : 0; + num += current[rowUp][col] > 0 ? 1 : 0; + num += current[rowUp][colRight] > 0 ? 1 : 0; + num += current[row][colLeft] > 0 ? 1 : 0; + num += current[row][colRight] > 0 ? 1 : 0; + num += current[rowDown][colLeft] > 0 ? 1 : 0; + num += current[rowDown][col] > 0 ? 1 : 0; + num += current[rowDown][colRight] > 0 ? 1 : 0; + return num; + })(); + if (current[row][col] > 0) { + switch (neighbours) { + case 0: + case 1: + next[row].push(0); + break; + case 2: + case 3: + next[row].push(current[row][col] === 7 ? 7 : current[row][col] + 1); + break; + case 4: + case 5: + case 6: + case 7: + case 8: + next[row].push(0); + break; + } + } else { + next[row].push(neighbours == 3 ? 1 : 0); + } + } + } + return next; +}; + +// Randomizes or clears board +const initializeBoardHelper = (randomize = true) => { + let i, j; + let board = []; + for (i = 0; i < ROWS; i++) { + board.push([]); + for (j = 0; j < COLS; j++) { + board[i].push(randomize ? (Math.random() < RANDOM_DENSITY ? 1 : 0) : 0); + } + } + return board; +}; + +// Activate or deactivate a specific cell +const changeCellHelper = (state, cellRow, cellCol, newAge) => { + let boardCopy = []; + for (let i = 0; i < ROWS; i++) { + boardCopy.push(state[i].slice()); + } + boardCopy[cellRow][cellCol] = newAge; + return boardCopy; +} + +// ACTION CREATORS + +const advanceBoard = () => { + return { + type: "ADVANCE_BOARD" + }; +}; + +const initializeBoard = (randomize) => { + return { + type: "INITIALIZE_BOARD", + board: initializeBoardHelper(randomize) + }; +}; + +const simulationStart = () => ({type: "SIMULATION_START"}); +const simulationPause = () => ({type: "SIMULATION_PAUSE"}); + +const cellOn = (row, col) => ({ + type: "CELL_ON", + row, + col +}); +const cellOff = (row, col) => ({ + type: "CELL_OFF", + row, + col +}); + +// COMPONENTS + +// Responsible for the auto advance timer. +// This component only mounts while simulation is +// running and unmounts while paused +let intervalID; +class AutoStep extends Component { + constructor(props) { + super(props); + intervalID = setInterval(props.tick, STEP_INTERVAL); + } + componentWillUnmount() { + clearInterval(intervalID); + } + render() { + return null; + } +} + +// All the control buttons +const Controls = ({ simulating, tick, reinitialize, start, pause }) => ( +
+ {simulating && } + {simulating ? () : ()} + + + +
+); +Controls.propTypes = { + simulating: PropTypes.bool.isRequired, + tick: PropTypes.func.isRequired, + reinitialize: PropTypes.func.isRequired, + start: PropTypes.func.isRequired, + pause: PropTypes.func.isRequired +}; +const mapStateToControlsProps = ({ simulating }) => ({ simulating }); +const mapDispatchToControlsProps = (dispatch) => { + return { + tick: () => dispatch(advanceBoard()), + reinitialize: (randomize) => dispatch(initializeBoard(randomize)), + start: () => dispatch(simulationStart()), + pause: () => dispatch(simulationPause()) + }; +}; +const ControlsContainer = connect(mapStateToControlsProps, mapDispatchToControlsProps)(Controls); + +// Each square on the board is a Cell +const Cell = ({ rowIndex, colIndex, age, handleLeftClick, handleRightClick }) => ( + { + if (e.buttons === 0) { + return; + } + if (e.buttons === 1 && age === 0) { + handleLeftClick(rowIndex, colIndex); + return; + } + if (e.buttons === 2 && age > 0) { + handleRightClick(rowIndex, colIndex); + return; + } + }} + onMouseDown={(e) => { + if (e.button === 0 && age === 0) { + handleLeftClick(rowIndex, colIndex); + } else if (e.button === 2 && age > 0) { + handleRightClick(rowIndex, colIndex); + } + }} + onContextMenu={(e) => { + e.preventDefault(); + }} + /> +); + +const Board = ({ board, tick, handleLeftClick, handleRightClick }) => ( + + + {board.map((row, rowIndex) => ( + + {row.map((age, colIndex) => ( + + ))} + + ))} + +
+); +Board.propTypes = { + board: PropTypes.array.isRequired, + handleLeftClick: PropTypes.func.isRequired, + handleRightClick: PropTypes.func.isRequired +}; +const mapStateToBoardProps = ({ board }) => ({ board }); +const mapDispatchToBoardProps = (dispatch) => { + return { + handleLeftClick: (row, col) => dispatch(cellOn(row, col)), + handleRightClick: (row, col) => dispatch(cellOff(row, col)) + } +}; +const BoardContainer = connect(mapStateToBoardProps, mapDispatchToBoardProps)(Board); + +const GenerationCounter = ({ generation }) => ( +

+ Generation: {generation} +

+); +GenerationCounter.propTypes = { + generation: PropTypes.number.isRequired, +}; +const mapStateToGenerationCounterProps = ({ generation }) => ({ generation }); +const GenerationCounterContainer = connect(mapStateToGenerationCounterProps)(GenerationCounter); + +const GameOfLifeApp = () => ( +
+

Conway's Game of Life (React/Redux)

+ + + +
+); + +// REDUCERS + +const boardReducer = (state = [], action) => { + switch (action.type) { + case "ADVANCE_BOARD": + return advanceBoardHelper(state); + case "INITIALIZE_BOARD": + return action.board; + case "CELL_ON": + return changeCellHelper(state, action.row, action.col, 1); + case "CELL_OFF": + return changeCellHelper(state, action.row, action.col, 0); + default: + return state; + } +}; + +const simulatingReducer = (state = true, action) => { + switch (action.type) { + case "SIMULATION_START": + return true; + case "SIMULATION_PAUSE": + return false; + default: + return state; + } +}; + +const generationReducer = (state = 0, action) => { + switch (action.type) { + case "ADVANCE_BOARD": + return state += 1; + case "INITIALIZE_BOARD": + return 0; + default: + return state; + } +}; + +const reducers = combineReducers({ + board: boardReducer, + simulating: simulatingReducer, + generation: generationReducer +}); + +// APPLICATION WRAPPER + +const initialState = { + board: initializeBoardHelper(true), + simulating: true, + generation: 0 +}; + +ReactDOM.render( + + + , + document.getElementById('app') +); diff --git a/public/manifest.json b/public/manifest.json index be607e4..4d5817b 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,6 +1,6 @@ { - "short_name": "React App", - "name": "Create React App Sample", + "short_name": "Portfolio", + "name": "Portfolio of Web Programming", "icons": [ { "src": "favicon.ico", diff --git a/src/App.js b/src/App.js deleted file mode 100644 index d7d52a7..0000000 --- a/src/App.js +++ /dev/null @@ -1,21 +0,0 @@ -import React, { Component } from 'react'; -import logo from './logo.svg'; -import './App.css'; - -class App extends Component { - render() { - return ( -
-
- logo -

Welcome to React

-
-

- To get started, edit src/App.js and save to reload. -

-
- ); - } -} - -export default App; diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..20712d2 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,20 @@ +import React from 'react' +import logo from './logo.svg' +import './App.css' + +import ProjectLinks from './ProjectLinks' + +const App = () => ( +
+
+ logo +

Welcome to React

+
+

+ To get started, edit src/App.js and save to reload. +

+ +
+) + +export default App diff --git a/src/App.test.js b/src/App.test.js index b84af98..76d121e 100644 --- a/src/App.test.js +++ b/src/App.test.js @@ -1,8 +1,8 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './App'; +import React from 'react' +import ReactDOM from 'react-dom' +import App from './App' it('renders without crashing', () => { - const div = document.createElement('div'); - ReactDOM.render(, div); -}); + const div = document.createElement('div') + ReactDOM.render(, div) +}) diff --git a/src/ProjectLinks.css b/src/ProjectLinks.css new file mode 100644 index 0000000..04d6bef --- /dev/null +++ b/src/ProjectLinks.css @@ -0,0 +1,26 @@ +.header { + font-size: 1.5em; + text-align: center; +} + +.listDiv { + display: flex; + flex-flow: row wrap; + justify-content: space-around; + align-items: flex-start; +} + +.itemDiv { + display: flex; + flex-flow: column nowrap; + align-items: center; +} + +.title { + font-weight: bold; + font-size: 1.2em; +} + +.thumbnail { + max-width: 300px; +} \ No newline at end of file diff --git a/src/ProjectLinks.jsx b/src/ProjectLinks.jsx new file mode 100644 index 0000000..d88a864 --- /dev/null +++ b/src/ProjectLinks.jsx @@ -0,0 +1,47 @@ +import React from 'react' + +import './ProjectLinks.css' + +const projectList = [ + /* template for project entry + { + title: '', + href: '', + thumbnail300: '', + description: '', + }, + */ + { + title: "Conway's Game Of Life (React/Redux Example)", + href: 'https://codepen.io/plhosk/pen/kkqdAa', + thumbnail300: '', + description: "A simple React/Redux implementation of Conway's Game of Life on Codepen", + }, + { + title: 'Game of Life (local)', + href: '/gameoflife/index.html', + thumbnail300: '', + description: 'Locally-hosted Game of Life (same as Codepen version)', + }, +] + +const ProjectLinks = () => ( +
+
+ Portfolio Projects +
+
+ { projectList.length > 0 && ( + projectList.map(project => ( +
+ {project.title} + +
{project.description}
+
+ )) + )} +
+
+) + +export default ProjectLinks diff --git a/src/index.js b/src/index.js index fae3e35..d9aac01 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,9 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import registerServiceWorker from './registerServiceWorker'; +import React from 'react' +import ReactDOM from 'react-dom' +import './index.css' +import App from './App' +import registerServiceWorker from './registerServiceWorker' -ReactDOM.render(, document.getElementById('root')); -registerServiceWorker(); +// eslint-disable-next-line react/jsx-filename-extension +ReactDOM.render(, document.getElementById('root')) +registerServiceWorker() diff --git a/yarn.lock b/yarn.lock index dc9b0c9..839eb5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,6 +47,12 @@ acorn@^5.0.0, acorn@^5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" +add-dom-event-listener@1.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.0.2.tgz#8faed2c41008721cf111da1d30d995b85be42bed" + dependencies: + object-assign "4.x" + address@1.0.2, address@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/address/-/address-1.0.2.tgz#480081e82b587ba319459fef512f516fe03d58af" @@ -131,6 +137,52 @@ ansi-styles@^3.0.0, ansi-styles@^3.1.0: dependencies: color-convert "^1.0.0" +antd@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/antd/-/antd-2.12.1.tgz#e4240d2a42fdbd12a55a85c0ff9cbbc0e7b94cfa" + dependencies: + array-tree-filter "~1.0.0" + babel-runtime "6.x" + classnames "~2.2.0" + create-react-class "^15.5.3" + css-animation "^1.2.5" + dom-closest "^0.2.0" + lodash.debounce "^4.0.8" + moment "^2.18.1" + omit.js "^1.0.0" + prop-types "^15.5.7" + rc-animate "^2.3.6" + rc-calendar "~8.4.1" + rc-cascader "~0.11.3" + rc-checkbox "~2.0.3" + rc-collapse "~1.7.5" + rc-dialog "~6.5.10" + rc-dropdown "~1.4.11" + rc-editor-mention "~0.6.12" + rc-form "~1.4.0" + rc-input-number "~3.6.0" + rc-menu "~5.0.10" + rc-notification "~2.0.0" + rc-pagination "~1.10.0" + rc-progress "~2.1.2" + rc-rate "~2.1.1" + rc-select "~6.8.6" + rc-slider "~8.2.0" + rc-steps "~2.5.1" + rc-switch "~1.5.1" + rc-table "~5.4.0" + rc-tabs "~8.0.0" + rc-time-picker "~2.4.1" + rc-tooltip "~3.4.6" + rc-tree "~1.5.0" + rc-tree-select "~1.10.2" + rc-upload "~2.3.7" + rc-util "^4.0.4" + react-lazy-load "^3.0.10" + react-slick "~0.14.2" + shallowequal "^1.0.1" + warning "~3.0.0" + anymatch@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" @@ -167,6 +219,12 @@ aria-query@^0.5.0: dependencies: ast-types-flow "0.0.7" +aria-query@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" + dependencies: + ast-types-flow "0.0.7" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -212,6 +270,10 @@ array-reduce@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" +array-tree-filter@^1.0.0, array-tree-filter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-1.0.1.tgz#0a8ad1eefd38ce88858632f9cc0423d7634e4d5d" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -268,6 +330,12 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-validator@1.x: + version "1.7.1" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.7.1.tgz#89d3d7a384ca5d05e0f07bf51754d591e2cfec61" + dependencies: + babel-runtime "6.x" + async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -908,7 +976,7 @@ babel-register@^6.24.1: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@6.23.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0: +babel-runtime@6.23.0, babel-runtime@6.x, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: @@ -1201,6 +1269,10 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +can-use-dom@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" + caniuse-api@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" @@ -1290,6 +1362,10 @@ clap@^1.0.9: dependencies: chalk "^1.1.3" +classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@~2.2.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + clean-css@4.1.x: version "4.1.5" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.5.tgz#d09a87a02a5375117589796ae76a063cacdb541a" @@ -1402,6 +1478,16 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +component-classes@1.x, component-classes@^1.2.5, component-classes@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + dependencies: + component-indexof "0.0.3" + +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + compressible@~2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" @@ -1548,7 +1634,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.6.0: +create-react-class@15.x, create-react-class@^15.5.2, create-react-class@^15.5.3, create-react-class@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" dependencies: @@ -1584,6 +1670,12 @@ crypto-browserify@^3.11.0: public-encrypt "^4.0.0" randombytes "^2.0.0" +css-animation@1.x, css-animation@^1.2.5, css-animation@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.3.2.tgz#df515820ef5903733ad2db0999403b3037b8b880" + dependencies: + component-classes "^1.2.5" + css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -1869,12 +1961,30 @@ doctrine@^2.0.0: esutils "^2.0.2" isarray "^1.0.0" +dom-align@1.x: + version "1.6.2" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.6.2.tgz#b14e64917c25de6b4055227339b4d64f4b7db885" + +dom-closest@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-closest/-/dom-closest-0.2.0.tgz#ebd9f91d1bf22e8d6f477876bbcd3ec90216c0cf" + dependencies: + dom-matches ">=1.0.1" + dom-converter@~0.1: version "0.1.4" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" dependencies: utila "~0.3" +dom-matches@>=1.0.1: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-matches/-/dom-matches-2.0.0.tgz#d2728b416a87533980eb089b848d253cf23a758c" + +dom-scroll-into-view@1.x, dom-scroll-into-view@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz#e8f36732dd089b0201a88d7815dc3f88e6d66c7e" + dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -1929,6 +2039,14 @@ dotenv@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" +draft-js@^0.10.0, draft-js@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.10.1.tgz#6f1219d8095729691429ca6fd7a58d2a8be5cb67" + dependencies: + fbjs "^0.8.7" + immutable "~3.7.4" + object-assign "^4.1.0" + duplexer2@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" @@ -1992,6 +2110,10 @@ enhanced-resolve@^3.0.0: object-assign "^4.0.1" tapable "^0.2.5" +enquire.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814" + entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -2109,6 +2231,16 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-config-airbnb-base@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.2.0.tgz#19a9dc4481a26f70904545ec040116876018f853" + +eslint-config-airbnb@^15.0.2: + version "15.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-15.0.2.tgz#7b99fa421d0c15aee3310d647644315b02ea24da" + dependencies: + eslint-config-airbnb-base "^11.2.0" + eslint-config-react-app@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-1.0.5.tgz#98337597bc01cc22991fcbdda07451f3b4511718" @@ -2121,6 +2253,13 @@ eslint-import-resolver-node@^0.2.0: object-assign "^4.0.1" resolve "^1.1.6" +eslint-import-resolver-node@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" + dependencies: + debug "^2.6.8" + resolve "^1.2.0" + eslint-loader@1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.7.1.tgz#50b158dd6272dcefb97e984254837f81a5802ce0" @@ -2132,7 +2271,7 @@ eslint-loader@1.7.1: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-module-utils@^2.0.0: +eslint-module-utils@^2.0.0, eslint-module-utils@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" dependencies: @@ -2160,6 +2299,21 @@ eslint-plugin-import@2.2.0: minimatch "^3.0.3" pkg-up "^1.0.0" +eslint-plugin-import@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + eslint-plugin-jsx-a11y@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.0.3.tgz#4a939f76ec125010528823331bf948cc573380b6" @@ -2172,7 +2326,19 @@ eslint-plugin-jsx-a11y@5.0.3: emoji-regex "^6.1.0" jsx-ast-utils "^1.4.0" -eslint-plugin-react@7.1.0: +eslint-plugin-jsx-a11y@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" + dependencies: + aria-query "^0.7.0" + array-includes "^3.0.3" + ast-types-flow "0.0.7" + axobject-query "^0.1.0" + damerau-levenshtein "^1.0.0" + emoji-regex "^6.1.0" + jsx-ast-utils "^1.4.0" + +eslint-plugin-react@7.1.0, eslint-plugin-react@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.1.0.tgz#27770acf39f5fd49cd0af4083ce58104eb390d4c" dependencies: @@ -2180,7 +2346,7 @@ eslint-plugin-react@7.1.0: has "^1.0.1" jsx-ast-utils "^1.4.1" -eslint@3.19.0: +eslint@3.19.0, eslint@^3.19.0: version "3.19.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" dependencies: @@ -2275,6 +2441,10 @@ eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +eventlistener@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/eventlistener/-/eventlistener-0.0.1.tgz#ed2baabb852227af2bcf889152c72c63ca532eb8" + events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -2413,7 +2583,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.9: +fbjs@^0.8.7, fbjs@^0.8.9: version "0.8.12" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" dependencies: @@ -2507,7 +2677,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: @@ -2734,6 +2904,10 @@ gzip-size@3.0.0: dependencies: duplexer "^0.1.1" +hammerjs@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -2821,6 +2995,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoist-non-react-statics@1.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -2955,6 +3133,14 @@ ignore@^3.2.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" +immutable@^3.7.4, immutable@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" + +immutable@~3.7.4: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3567,6 +3753,10 @@ jest@20.0.4: dependencies: jest-cli "^20.0.4" +jquery@>=1.7.2: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" + js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" @@ -3651,6 +3841,12 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + dependencies: + string-convert "^0.2.0" + json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -3751,6 +3947,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + loader-fs-cache@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" @@ -3786,6 +3991,10 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -3798,10 +4007,34 @@ lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" +lodash.debounce@^4.0.0, lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -3819,11 +4052,15 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" +lodash.throttle@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -4000,6 +4237,10 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdi dependencies: minimist "0.0.8" +moment@2.x, moment@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" @@ -4187,7 +4428,7 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.1.1, object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4210,6 +4451,12 @@ obuf@^1.0.0, obuf@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" +omit.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-1.0.0.tgz#e013cb86a7517b9cf6f7cfb0ddb4297256a99288" + dependencies: + babel-runtime "^6.23.0" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -4408,6 +4655,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pbkdf2@^3.0.3: version "3.0.12" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" @@ -4800,7 +5053,7 @@ promise@7.1.1, promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.10: +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9: version "15.5.10" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" dependencies: @@ -4888,6 +5141,316 @@ range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" +rc-align@2.x: + version "2.3.4" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.3.4.tgz#d83bdab7560f0142e72a3de1d495dab6ba225249" + dependencies: + dom-align "1.x" + prop-types "^15.5.8" + rc-util "4.x" + +rc-animate@2.x, rc-animate@^2.0.2, rc-animate@^2.3.0, rc-animate@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.4.1.tgz#df3e0f56fe106afe4bf52ff408ced241c5178919" + dependencies: + babel-runtime "6.x" + css-animation "^1.3.2" + prop-types "15.x" + +rc-calendar@~8.4.1: + version "8.4.6" + resolved "https://registry.yarnpkg.com/rc-calendar/-/rc-calendar-8.4.6.tgz#55dc45fcc8f91bf6f5bb5632c48b3a48e456f4e5" + dependencies: + babel-runtime "6.x" + classnames "2.x" + create-react-class "^15.5.2" + moment "2.x" + prop-types "^15.5.8" + rc-trigger "1.x" + rc-util "^4.0.4" + +rc-cascader@~0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-0.11.4.tgz#46bf93369a7c4a9185d27f5fffb35f453bede31a" + dependencies: + array-tree-filter "^1.0.0" + prop-types "^15.5.8" + rc-trigger "1.x" + rc-util "4.x" + shallow-equal "^1.0.0" + +rc-checkbox@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.0.3.tgz#436a9d508948e224980f0535ea738b48177a8f25" + dependencies: + babel-runtime "^6.23.0" + classnames "2.x" + prop-types "15.x" + rc-util "^4.0.4" + +rc-collapse@~1.7.5: + version "1.7.6" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-1.7.6.tgz#64433512d921f750df61433e675bb9547ba5ef6b" + dependencies: + classnames "2.x" + css-animation "1.x" + prop-types "^15.5.6" + rc-animate "2.x" + +rc-dialog@~6.5.10: + version "6.5.10" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-6.5.10.tgz#9ee857d1117a30c8fd65a37fed9f5313b04632a3" + dependencies: + babel-runtime "6.x" + create-react-class "^15.5.2" + object-assign "~4.1.0" + rc-animate "2.x" + rc-util "^4.0.4" + +rc-dropdown@~1.4.11: + version "1.4.12" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-1.4.12.tgz#02dea9f73fa579300586b869130aa2bf955ee733" + dependencies: + prop-types "^15.5.8" + rc-trigger "1.x" + +rc-editor-core@~0.7.7: + version "0.7.8" + resolved "https://registry.yarnpkg.com/rc-editor-core/-/rc-editor-core-0.7.8.tgz#ddb82cc83b5871b5a057e50b00d17866cc9dd707" + dependencies: + draft-js "^0.10.0" + immutable "^3.7.4" + lodash "^4.16.5" + prop-types "^15.5.8" + setimmediate "^1.0.5" + +rc-editor-mention@~0.6.12: + version "0.6.12" + resolved "https://registry.yarnpkg.com/rc-editor-mention/-/rc-editor-mention-0.6.12.tgz#5dfa348c5ed9a6b0cf58c15d2b7341bfdf2ba276" + dependencies: + classnames "^2.2.5" + dom-scroll-into-view "^1.2.0" + draft-js "~0.10.0" + immutable "^3.8.1" + prop-types "^15.5.8" + rc-animate "^2.3.0" + rc-editor-core "~0.7.7" + +rc-form@~1.4.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/rc-form/-/rc-form-1.4.3.tgz#4e96ef7a6913bf624f306d08ea2631d8ffc58c81" + dependencies: + async-validator "1.x" + babel-runtime "6.x" + create-react-class "^15.5.3" + dom-scroll-into-view "1.x" + hoist-non-react-statics "1.x" + lodash "^4.17.4" + warning "^3.0.0" + +rc-hammerjs@~0.6.0: + version "0.6.8" + resolved "https://registry.yarnpkg.com/rc-hammerjs/-/rc-hammerjs-0.6.8.tgz#dc50faff35ecce9a822a338d59206a962e09a23d" + dependencies: + babel-runtime "^6.23.0" + hammerjs "^2.0.8" + prop-types "^15.5.9" + +rc-input-number@~3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-3.6.2.tgz#b8b2352a43972485c99c8b58481f446a07097f70" + dependencies: + babel-runtime "^6.23.0" + classnames "^2.2.0" + create-react-class "^15.5.2" + prop-types "^15.5.7" + rc-touchable "^1.0.0" + +"rc-menu@5.x || 4.x", rc-menu@~5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-5.0.10.tgz#266cf12e5844ba2606730b9198422da04d102b7e" + dependencies: + babel-runtime "6.x" + classnames "2.x" + create-react-class "^15.5.2" + dom-scroll-into-view "1.x" + prop-types "^15.5.6" + rc-animate "2.x" + rc-util "^4.0.2" + +rc-notification@~2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-2.0.2.tgz#901a007e15ad6f6f66a8ef23131ec8c3ec51b0ed" + dependencies: + babel-runtime "^6.23.0" + classnames "2.x" + prop-types "^15.5.8" + rc-animate "2.x" + rc-util "^4.0.4" + +rc-pagination@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-1.10.0.tgz#24697b65755a1c2d87553ed4b2daeec994490232" + dependencies: + babel-runtime "^6.23.0" + prop-types "^15.5.7" + +rc-progress@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-2.1.2.tgz#d31ccb1499ae223c0d21d1485650aa4a0d374ce0" + dependencies: + babel-runtime "^6.23.0" + prop-types "^15.5.8" + +rc-rate@~2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.1.1.tgz#88aeda8b3d6470bbae4f6518c652a02a959bddc5" + dependencies: + classnames "^2.2.5" + prop-types "^15.5.8" + +rc-select@~6.8.6: + version "6.8.8" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-6.8.8.tgz#444174a5239e8d082deb930ac502e81b1725f5bd" + dependencies: + babel-runtime "^6.23.0" + classnames "2.x" + component-classes "1.x" + create-react-class "^15.5.2" + dom-scroll-into-view "1.x" + prop-types "^15.5.8" + rc-animate "2.x" + rc-menu "5.x || 4.x" + rc-trigger "1.x" + rc-util "^4.0.4" + warning "2.x" + +rc-slider@~8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-8.2.0.tgz#ae37d17144cad60e1da6eac0ee4ffcfea0b0a6e8" + dependencies: + babel-runtime "6.x" + classnames "^2.2.5" + prop-types "^15.5.4" + rc-tooltip "^3.4.2" + rc-util "^4.0.4" + shallowequal "^1.0.1" + warning "^3.0.0" + +rc-steps@~2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-2.5.1.tgz#c3969aea3fb984cecb977a4a96ab634d756a6dc4" + dependencies: + classnames "^2.2.3" + lodash.debounce "^4.0.8" + prop-types "^15.5.7" + +rc-switch@~1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-1.5.2.tgz#ff5dc7291eb5562211f64482c9e3faa8b8d10f8e" + dependencies: + babel-runtime "^6.23.0" + classnames "^2.2.1" + prop-types "^15.5.6" + +rc-table@~5.4.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-5.4.1.tgz#64758095c24d481f1e18b3b37ed35cad5ce11ddc" + dependencies: + babel-runtime "^6.23.0" + component-classes "^1.2.6" + lodash.get "^4.4.2" + prop-types "^15.5.8" + rc-util "4.x" + shallowequal "^0.2.2" + warning "^3.0.0" + +rc-tabs@~8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-8.0.2.tgz#05fa4b57252df33851e5c250a08bcc6f8e55ceb4" + dependencies: + babel-runtime "6.x" + classnames "2.x" + create-react-class "15.x" + prop-types "15.x" + rc-hammerjs "~0.6.0" + warning "^3.0.0" + +rc-time-picker@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-2.4.1.tgz#074e3d1208e880edb0d99a7b9cc15b93505da8c6" + dependencies: + babel-runtime "6.x" + classnames "2.x" + moment "2.x" + prop-types "^15.5.8" + rc-trigger "1.x" + +rc-tooltip@^3.4.2, rc-tooltip@~3.4.6: + version "3.4.7" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-3.4.7.tgz#ec6cc39a962de96a9147de08a78fb38f93517ff3" + dependencies: + babel-runtime "^6.23.0" + prop-types "^15.5.8" + rc-trigger "1.x" + +rc-touchable@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/rc-touchable/-/rc-touchable-1.2.3.tgz#5f498324e3d0b9ba601a9c4834958eaa2c713618" + dependencies: + babel-runtime "6.x" + +rc-tree-select@~1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-1.10.2.tgz#b47196159483f5c34d471ee841d0dc2da30ae124" + dependencies: + babel-runtime "^6.23.0" + classnames "^2.2.1" + object-assign "^4.0.1" + prop-types "^15.5.8" + rc-animate "^2.0.2" + rc-tree "^1.3.0" + rc-trigger "1.x" + rc-util "^4.0.2" + +rc-tree@^1.3.0, rc-tree@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-1.5.0.tgz#6b700303c4f160ad7f6c438a8fdca57de96a5dd1" + dependencies: + classnames "2.x" + object-assign "4.x" + prop-types "^15.5.8" + rc-animate "2.x" + rc-util "^4.0.2" + +rc-trigger@1.x: + version "1.11.2" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-1.11.2.tgz#5c75a1928814a0595e3d912e0a15ca853df5464d" + dependencies: + babel-runtime "6.x" + create-react-class "15.x" + prop-types "15.x" + rc-align "2.x" + rc-animate "2.x" + rc-util "4.x" + +rc-upload@~2.3.7: + version "2.3.8" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-2.3.8.tgz#eaf35913cfc2dced196dd9421df253f509a38e21" + dependencies: + babel-runtime "6.x" + classnames "^2.2.5" + prop-types "^15.5.7" + warning "2.x" + +rc-util@4.x, rc-util@^4.0.2, rc-util@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.0.4.tgz#99813dd90aee7e29b64939a70ac176ead3f4ff39" + dependencies: + add-dom-event-listener "1.x" + babel-runtime "6.x" + shallowequal "^0.2.2" + rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" @@ -4940,6 +5503,15 @@ react-error-overlay@^1.0.9: settle-promise "1.0.0" source-map "0.5.6" +react-lazy-load@^3.0.10: + version "3.0.12" + resolved "https://registry.yarnpkg.com/react-lazy-load/-/react-lazy-load-3.0.12.tgz#2b841dfc3227e8119d033189d2c960ce384d0cb9" + dependencies: + eventlistener "0.0.1" + lodash.debounce "^4.0.0" + lodash.throttle "^4.0.0" + prop-types "^15.5.8" + react-scripts@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.0.10.tgz#876035594742220f40ffb865a4c7e8dc0fa7ae23" @@ -4983,6 +5555,18 @@ react-scripts@1.0.10: optionalDependencies: fsevents "1.1.2" +react-slick@~0.14.2: + version "0.14.11" + resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.14.11.tgz#c2cbdbe3728c66a2ff4929be96d457e3ea0d80f3" + dependencies: + can-use-dom "^0.1.0" + classnames "^2.2.5" + create-react-class "^15.5.2" + enquire.js "^2.1.6" + json2mq "^0.2.0" + object-assign "^4.1.0" + slick-carousel "^1.6.0" + react@^15.6.1: version "15.6.1" resolved "https://registry.yarnpkg.com/react/-/react-15.6.1.tgz#baa8434ec6780bde997cdc380b79cd33b96393df" @@ -5007,6 +5591,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -5015,6 +5606,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@1.0: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -5238,7 +5837,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: @@ -5418,6 +6017,20 @@ sha.js@^2.4.0, sha.js@^2.4.8: dependencies: inherits "^2.0.1" +shallow-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.0.0.tgz#508d1838b3de590ab8757b011b25e430900945f7" + +shallowequal@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e" + dependencies: + lodash.keys "^3.1.2" + +shallowequal@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.0.2.tgz#1561dbdefb8c01408100319085764da3fcf83f8f" + shell-quote@1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" @@ -5451,6 +6064,12 @@ slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +slick-carousel@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.6.0.tgz#780f378e470f4e6f6bec1aa2bae0475f4f9eb085" + dependencies: + jquery ">=1.7.2" + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -5610,6 +6229,10 @@ strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + string-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" @@ -6071,6 +6694,18 @@ walker@~1.0.5: dependencies: makeerror "1.0.x" +warning@2.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-2.1.0.tgz#21220d9c63afc77a8c92111e011af705ce0c6901" + dependencies: + loose-envify "^1.0.0" + +warning@^3.0.0, warning@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + dependencies: + loose-envify "^1.0.0" + watch@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"