diff --git a/README.md b/README.md index 224c753e2..a844f8200 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,15 @@ SCSS Files } } } +SVG Icons + - This repository uses plugin babel-plugin-inline-react-svg + - The plugin is used to inline-embed svg icons inside the markup + + Steps to adding new icons + - Insert the svg file in the ~/src/assets/images/ directory + - Add a new icon component file in directory ~/src/components/Icons/Icon-Name.jsx and reference it on the global + icon component in the ~/src/components/icons/ directory + - Wrap the svg icon inside an object for caching to optimize on perfomance. ``` ### Writing Tests diff --git a/circle.yml b/circle.yml index bd3cfc63a..d9a7ba478 100644 --- a/circle.yml +++ b/circle.yml @@ -29,7 +29,7 @@ deployment: commands: - ./deploy.sh TEST01 test02: - branch: notifications + branch: bugBash06 owner: appirio-tech commands: - ./deploy.sh TEST02 diff --git a/config/constants/dev.js b/config/constants/dev.js index c73d681ac..ec672937d 100644 --- a/config/constants/dev.js +++ b/config/constants/dev.js @@ -12,7 +12,7 @@ module.exports = { AUTH0_CLIENT_ID : process.env.AUTH0_CLIENT_ID_DEV, domain : 'topcoder-dev.com', DOMAIN : 'topcoder-dev.com', - CONNECT_MESSAGE_API_URL: process.env.CONNECT_MESSAGE_API_URL, + CONNECT_MESSAGE_API_URL: process.env.CONNECT_MESSAGE_API_URL, ENV : 'DEV', PROJECTS_API_URL : 'https://api.topcoder-dev.com', diff --git a/config/webpack/default.js b/config/webpack/default.js index 68fe34300..49fbe7b49 100644 --- a/config/webpack/default.js +++ b/config/webpack/default.js @@ -34,7 +34,7 @@ module.exports = { options: { babelrc: false, presets: [ 'env', 'react', 'stage-2' ], - plugins: [ 'lodash' ] + plugins: ['lodash', 'inline-react-svg'] } }, { test: /\.(coffee|litcoffee|cjsx)$/, @@ -91,7 +91,10 @@ module.exports = { '.gif', '.jpg', '.cjsx' - ] + ], + alias: { + handlebars: 'handlebars/dist/handlebars.min.js' + } }, plugins: [ @@ -111,8 +114,7 @@ module.exports = { // Only emit files when there are no errors new webpack.NoEmitOnErrorsPlugin(), new ExtractCssChunks({ - filename: '[name].css', - justExtract: true + filename: '[name].css' }) ] } diff --git a/config/webpack/development.js b/config/webpack/development.js index 54ab79896..33f7de41b 100644 --- a/config/webpack/development.js +++ b/config/webpack/development.js @@ -26,7 +26,8 @@ module.exports = webpackMerge.strategy({ plugins: [ 'lodash', // add react hot reloader - 'react-hot-loader/babel' + 'react-hot-loader/babel', + 'inline-react-svg' ] } }, { diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index a379aaddd..5ea04cc5d 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -4,6 +4,11 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "Base64": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.1.4.tgz", + "integrity": "sha1-6fbGvvVn/WNepBYqsU3TKedKpt4=" + }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -14,7 +19,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "accepts": { @@ -28,9 +33,9 @@ } }, "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" }, "acorn-dynamic-import": { "version": "2.0.2", @@ -39,6 +44,14 @@ "dev": true, "requires": { "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } } }, "acorn-globals": { @@ -107,17 +120,6 @@ "regex-parser": "2.2.8" }, "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, "lodash.defaults": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", @@ -144,13 +146,15 @@ } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -163,7 +167,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", @@ -196,29 +199,161 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { "micromatch": "2.3.11", "normalize-path": "2.1.1" } }, + "appirio-tech-api-schemas": { + "version": "5.0.70", + "resolved": "https://registry.npmjs.org/appirio-tech-api-schemas/-/appirio-tech-api-schemas-5.0.70.tgz", + "integrity": "sha1-3RtCG/rw8PSokKRTgHSlVYDQy8s=", + "requires": { + "auto-config-fake-server": "2.0.604" + } + }, + "appirio-tech-client-app-layer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/appirio-tech-client-app-layer/-/appirio-tech-client-app-layer-0.1.3.tgz", + "integrity": "sha1-uO5YdHMM2r209RE8NMQvwOsxoOs=", + "requires": { + "axios": "0.8.1", + "history": "1.17.0", + "html-webpack-plugin": "1.7.0", + "humps": "0.6.0", + "isomorphic-fetch": "2.2.1", + "jwt-decode": "1.5.1", + "lodash": "4.17.4", + "normalizr": "1.4.1", + "q": "1.5.1", + "react": "0.14.9", + "react-dom": "0.14.9", + "react-redux": "4.4.8", + "react-router": "1.0.3", + "redux": "3.7.2", + "redux-form": "4.2.2", + "redux-logger": "2.10.2", + "redux-router": "1.0.0", + "redux-thunk": "0.1.0" + }, + "dependencies": { + "axios": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.8.1.tgz", + "integrity": "sha1-4Or+wPNGE5Un3Dt5/cv/gDSiQEU=", + "requires": { + "follow-redirects": "0.0.7" + } + }, + "fbjs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", + "integrity": "sha1-lja3cF9bqWhNRLcveDISVK/IYPc=", + "requires": { + "core-js": "1.2.7", + "loose-envify": "1.3.1", + "promise": "7.3.1", + "ua-parser-js": "0.7.17", + "whatwg-fetch": "0.9.0" + } + }, + "html-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-1.7.0.tgz", + "integrity": "sha1-zQxzx5G9DIxFsk4wAb4zSmt0KXs=", + "requires": { + "bluebird": "3.5.1", + "blueimp-tmpl": "2.5.7", + "html-minifier": "1.5.0", + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "react": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", + "integrity": "sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE=", + "requires": { + "envify": "3.4.1", + "fbjs": "0.6.1" + } + }, + "react-dom": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.9.tgz", + "integrity": "sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM=" + }, + "redux-thunk": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz", + "integrity": "sha1-jjR2BoCLNb+Kkn30YW9v7RAYJuU=" + }, + "whatwg-fetch": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", + "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" + } + } + }, + "appirio-tech-react-components": { + "version": "github:appirio-tech/react-components#d982493c9a46e95bc302fbd76a4b135c644d1434", + "requires": { + "appirio-tech-api-schemas": "5.0.70", + "appirio-tech-client-app-layer": "0.1.3", + "classnames": "2.2.5", + "formsy-react": "0.18.1", + "isomorphic-fetch": "2.2.1", + "lodash": "4.17.4", + "moment": "2.20.1", + "react": "15.6.2", + "react-addons-pure-render-mixin": "15.6.2", + "react-addons-update": "15.6.2", + "react-avatar": "2.5.1", + "react-datetime": "2.7.1", + "react-dom": "15.6.2", + "react-dropzone": "3.13.4", + "react-redux": "4.4.8", + "react-router-dom": "4.2.2", + "react-select": "0.9.1", + "react-switch-button": "1.1.2", + "react-textarea-autosize": "4.3.2", + "redux-thunk": "2.2.0", + "tc-ui": "git+https://github.com/appirio-tech/tc-ui.git#44b6473cc9a6d0386409b297d8c0423f72003e6f", + "uncontrollable": "4.1.0" + }, + "dependencies": { + "formsy-react": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-0.18.1.tgz", + "integrity": "sha1-xS7pW67yiW8VR85t+Nrl/NvZq0A=", + "requires": { + "form-data-to-object": "0.2.0" + } + } + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, "are-we-there-yet": { @@ -232,12 +367,11 @@ } }, "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "requires": { - "underscore": "1.7.0", - "underscore.string": "2.4.0" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -252,7 +386,13 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-find-index": { @@ -274,7 +414,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.9.0" + "es-abstract": "1.10.0" } }, "array-union": { @@ -316,9 +456,9 @@ "dev": true }, "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -336,15 +476,21 @@ } }, "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "ast-types": { @@ -353,13 +499,9 @@ "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" }, "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" }, "async-each": { "version": "1.0.1", @@ -389,6 +531,14 @@ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.0.tgz", "integrity": "sha1-tc01In8WOTWo8d4Q7T66FpQfa+Y=" }, + "auto-config-fake-server": { + "version": "2.0.604", + "resolved": "https://registry.npmjs.org/auto-config-fake-server/-/auto-config-fake-server-2.0.604.tgz", + "integrity": "sha1-FY5RTIR5nRQ5iNw/w7mpkwnNhkY=", + "requires": { + "sinon": "2.0.0-pre" + } + }, "autolinker": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.3.tgz", @@ -401,10 +551,10 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000743", + "caniuse-db": "1.0.30000793", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" }, "dependencies": { @@ -414,16 +564,16 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000743", - "electron-to-chromium": "1.3.24" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } } } }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, "aws4": { @@ -444,7 +594,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, "requires": { "chalk": "1.1.3", "esutils": "2.0.2", @@ -467,13 +616,13 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", - "debug": "2.6.8", + "convert-source-map": "1.5.1", + "debug": "2.6.9", "json5": "0.5.1", "lodash": "4.17.4", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", - "private": "0.1.7", + "private": "0.1.8", "slash": "1.0.0", "source-map": "0.5.7" }, @@ -502,6 +651,12 @@ "trim-right": "1.0.1" }, "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -623,6 +778,35 @@ "babel-types": "6.26.0" } }, + "babel-helper-module-imports": { + "version": "7.0.0-beta.3", + "resolved": "https://registry.npmjs.org/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz", + "integrity": "sha512-bdPrIXbUTYfREhRhjbN8SstwQaj0S4+rW4PKi1f2Wc5fizSh0hGYkfXUdiSSOgyTydm956tAyz4FrG61bqdQyw==", + "dev": true, + "requires": { + "babel-types": "7.0.0-beta.3", + "lodash": "4.17.4" + }, + "dependencies": { + "babel-types": { + "version": "7.0.0-beta.3", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-beta.3.tgz", + "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", @@ -684,32 +868,18 @@ "babel-loader": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha1-9svhInEPGqKvTYgcbVtUNYyiQSY=", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", "dev": true, "requires": { "find-cache-dir": "1.0.0", "loader-utils": "1.1.0", "mkdirp": "0.5.1" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -723,20 +893,36 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-inline-react-svg": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-0.5.2.tgz", + "integrity": "sha1-9MnqU4To0Ip6T5ahnyKl6rDd86k=", + "requires": { + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babylon": "6.18.0", + "lodash.isplainobject": "4.0.6", + "resolve-from": "2.0.0", + "svgo": "0.7.2" + } + }, "babel-plugin-lodash": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.2.11.tgz", - "integrity": "sha1-Icj97J/hg176pzeHPjkCvdZtVwE=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz", + "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", "dev": true, "requires": { + "babel-helper-module-imports": "7.0.0-beta.3", + "babel-types": "6.26.0", "glob": "7.1.2", - "lodash": "4.17.4" + "lodash": "4.17.4", + "require-package-name": "2.0.1" }, "dependencies": { "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -1187,14 +1373,14 @@ "dev": true, "requires": { "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "regenerator-runtime": "0.10.5" }, "dependencies": { "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "regenerator-runtime": { @@ -1206,9 +1392,9 @@ } }, "babel-preset-env": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.0.tgz", - "integrity": "sha1-LeHHgqeAoKXWBdGZyVdZbaQ8ROQ=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", @@ -1238,9 +1424,9 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.4.0", + "browserslist": "2.11.3", "invariant": "2.2.2", - "semver": "5.4.1" + "semver": "5.5.0" } }, "babel-preset-flow": { @@ -1299,17 +1485,17 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", "lodash": "4.17.4", "mkdirp": "0.5.1", - "source-map-support": "0.4.17" + "source-map-support": "0.4.18" }, "dependencies": { "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true } } @@ -1319,14 +1505,14 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" }, "dependencies": { "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" } } }, @@ -1334,7 +1520,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", @@ -1347,14 +1532,13 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", "babel-runtime": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "debug": "2.6.8", + "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" @@ -1364,7 +1548,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", @@ -1375,23 +1558,45 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.0", + "pascalcase": "0.1.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "base62": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.0.tgz", - "integrity": "sha1-MeflYNyEbJ9EwaUx32UU2jVHQVc=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.1.tgz", + "integrity": "sha512-xVtfFHNPUzpCNHygpXFGMlDk3saxXLQcOOQzAAk6ibvlAHgT6WKXLv9rMFhcyEK1n9LuDmp/LxyGW/Fm9L8++g==" }, "base64-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha1-qRlH2h9KUW6jjltOwOw3c2deCIY=", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "dev": true }, "batch": { @@ -1411,9 +1616,9 @@ } }, "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "bignumber.js": { "version": "2.4.0", @@ -1422,9 +1627,9 @@ "dev": true }, "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, "block-stream": { @@ -1437,10 +1642,14 @@ } }, "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "blueimp-tmpl": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-2.5.7.tgz", + "integrity": "sha1-M/sSwTnWVRKuQK+9ji3vjZ25ZJA=" }, "bmp-js": { "version": "0.0.3", @@ -1451,7 +1660,7 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, "body-parser": { @@ -1463,36 +1672,13 @@ "bytes": "3.0.0", "content-type": "1.0.4", "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "http-errors": "1.6.2", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", "type-is": "1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=", - "dev": true - } } }, "bonjour": { @@ -1505,7 +1691,7 @@ "deep-equal": "1.0.1", "dns-equal": "1.0.0", "dns-txt": "2.0.2", - "multicast-dns": "6.1.1", + "multicast-dns": "6.2.2", "multicast-dns-service-types": "1.1.0" } }, @@ -1516,12 +1702,12 @@ "dev": true }, "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "bourbon": { @@ -1575,15 +1761,15 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.0.8", + "browserify-aes": "1.1.1", "browserify-des": "1.0.0", "evp_bytestokey": "1.0.3" }, "dependencies": { "browserify-aes": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", - "integrity": "sha1-yPo7G3WFu3unfFVgtgmW3extUwk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { "buffer-xor": "1.0.3", @@ -1614,7 +1800,7 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -1642,13 +1828,13 @@ } }, "browserslist": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.4.0.tgz", - "integrity": "sha1-aT7pPQHmZGimNI2lSY4BH1ePh/g=", + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000743", - "electron-to-chromium": "1.3.24" + "caniuse-lite": "1.0.30000792", + "electron-to-chromium": "1.3.31" } }, "buffer": { @@ -1671,7 +1857,7 @@ "buffer-indexof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, "buffer-xor": { @@ -1698,6 +1884,68 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, + "cacache": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.2.tgz", + "integrity": "sha512-dljb7dk1jqO5ogE+dRpoR9tpHYv5xz9vPSNunh1+0wRuNdYxmzp9WmsyokgW/DUF1FDRVA/TMsmxt027R8djbQ==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.1.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -1714,20 +1962,18 @@ "dev": true }, "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-1.2.2.tgz", + "integrity": "sha1-Gsp8TRlTWaLOmVV5NDPG5VQlEfI=", "requires": { - "no-case": "2.3.1", + "sentence-case": "1.1.3", "upper-case": "1.1.3" } }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" }, "camelcase-keys": { "version": "2.1.0", @@ -1754,7 +2000,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000743", + "caniuse-db": "1.0.30000793", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -1765,22 +2011,22 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000743", - "electron-to-chromium": "1.3.24" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } } } }, "caniuse-db": { - "version": "1.0.30000743", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000743.tgz", - "integrity": "sha1-vI3yolfPkboCQyImYpWvPe2FIwY=", + "version": "1.0.30000793", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000793.tgz", + "integrity": "sha1-PADGbkI6ehkHx92Wdpp4sq+opy4=", "dev": true }, "caniuse-lite": { - "version": "1.0.30000743", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000743.tgz", - "integrity": "sha1-9PXGdQZ2/49hROpARWw3KdU0F2k=", + "version": "1.0.30000792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", + "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=", "dev": true }, "caseless": { @@ -1793,7 +2039,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, "requires": { "align-text": "0.1.4", "lazy-cache": "1.0.4" @@ -1805,7 +2050,7 @@ "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "dev": true, "requires": { - "assertion-error": "1.0.2", + "assertion-error": "1.1.0", "deep-eql": "0.1.3", "type-detect": "1.0.0" } @@ -1819,7 +2064,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -1828,11 +2072,39 @@ "supports-color": "2.0.0" } }, + "change-case": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-2.3.1.tgz", + "integrity": "sha1-LE/ePwY7tB0AzWjg1aCdthy+iU8=", + "requires": { + "camel-case": "1.2.2", + "constant-case": "1.1.2", + "dot-case": "1.1.2", + "is-lower-case": "1.1.3", + "is-upper-case": "1.1.2", + "lower-case": "1.1.4", + "lower-case-first": "1.0.2", + "param-case": "1.1.2", + "pascal-case": "1.1.2", + "path-case": "1.1.2", + "sentence-case": "1.1.3", + "snake-case": "1.1.2", + "swap-case": "1.1.2", + "title-case": "1.1.2", + "upper-case": "1.1.3", + "upper-case-first": "1.1.2" + } + }, "change-emitter": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, "cheerio": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", @@ -1845,56 +2117,6 @@ "htmlparser2": "3.8.3", "jsdom": "7.2.2", "lodash": "4.17.4" - }, - "dependencies": { - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.3.0", - "domutils": "1.5.1", - "entities": "1.0.0", - "readable-stream": "1.1.14" - }, - "dependencies": { - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", - "dev": true - } - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } } }, "chokidar": { @@ -1905,7 +2127,6 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.1", "is-binary-path": "1.0.1", @@ -1914,10 +2135,16 @@ "readdirp": "2.1.0" } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { "inherits": "2.0.1", @@ -1927,7 +2154,7 @@ "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "cjsx-loader": { @@ -1938,36 +2165,143 @@ "requires": { "coffee-react-transform": "4.0.0", "loader-utils": "0.2.17" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } } }, "clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", - "dev": true, + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "requires": { "chalk": "1.1.3" } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "classnames": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", - "dev": true, + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", "requires": { - "source-map": "0.5.7" + "commander": "2.8.1", + "source-map": "0.4.4" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": "1.0.1" + } } } }, @@ -1990,25 +2324,16 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, "requires": { "center-align": "0.1.3", "right-align": "0.1.3", "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - } } }, "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", "dev": true }, "clone-deep": { @@ -2050,9 +2375,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, "requires": { - "q": "1.5.0" + "q": "1.5.1" } }, "code-point-at": { @@ -2064,23 +2388,10 @@ "coffee-loader": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.8.0.tgz", - "integrity": "sha1-7EjnMn2o46mQR6mdm9z8rBLfNpQ=", + "integrity": "sha512-jMxsuxagYouuhTcf1EoLz8pONTIl5gwuyIdTIOCuArGLQiNc2fS6G7KfTfadb8+hiOfwslhD60wjih2knTnAww==", "dev": true, "requires": { "loader-utils": "1.1.0" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } } }, "coffee-react-transform": { @@ -2092,7 +2403,17 @@ "coffeescript": { "version": "1.12.7", "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", - "integrity": "sha1-5X7kxIZ89/YGv8Sg8tVQwJgd3Sc=" + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } }, "color": { "version": "0.11.4", @@ -2100,15 +2421,15 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", + "clone": "1.0.3", + "color-convert": "1.9.1", "color-string": "0.3.0" } }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -2143,8 +2464,7 @@ "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "combined-stream": { "version": "1.0.5", @@ -2175,13 +2495,13 @@ "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", "requires": { "commander": "2.9.0", - "detective": "4.5.0", + "detective": "4.7.1", "glob": "5.0.15", "graceful-fs": "4.1.11", - "iconv-lite": "0.4.18", + "iconv-lite": "0.4.19", "mkdirp": "0.5.1", - "private": "0.1.7", - "q": "1.5.0", + "private": "0.1.8", + "q": "1.5.1", "recast": "0.11.23" } }, @@ -2193,15 +2513,21 @@ "component-indexof": "0.0.3" } }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, "component-indexof": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" }, "compressible": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz", - "integrity": "sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo=", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", "dev": true, "requires": { "mime-db": "1.30.0" @@ -2215,34 +2541,37 @@ "requires": { "accepts": "1.3.4", "bytes": "3.0.0", - "compressible": "2.0.11", + "compressible": "2.0.12", "debug": "2.6.9", "on-headers": "1.0.1", "safe-buffer": "5.1.1", "vary": "1.1.2" + } + }, + "compression-webpack-plugin": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-1.1.3.tgz", + "integrity": "sha512-DIvTIkihu1tyoPdoan5Lh9GVvXgcNMDEgXSfyjlAriW3UaILoPhUFHFTU7Zsui+rPEexmFNlTyiLe0TCkQFJGg==", + "dev": true, + "requires": { + "async": "2.6.0", + "cacache": "10.0.2", + "find-cache-dir": "1.0.0", + "serialize-javascript": "1.4.0", + "webpack-sources": "1.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "ms": "2.0.0" + "lodash": "4.17.4" } } } }, - "compression-webpack-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz", - "integrity": "sha1-fwoq+fZCtPh7WYlRajuem0G7Sz8=", - "dev": true, - "requires": { - "async": "2.4.1", - "webpack-sources": "1.0.1" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2252,7 +2581,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, "requires": { "inherits": "2.0.1", "readable-stream": "2.0.6", @@ -2260,9 +2588,9 @@ } }, "connect-history-api-fallback": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", - "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", "dev": true }, "console-browserify": { @@ -2280,6 +2608,15 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "constant-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.2.tgz", + "integrity": "sha1-jsLKW6ND4Aqjjb9OIA/VrJB+/WM=", + "requires": { + "snake-case": "1.1.2", + "upper-case": "1.1.3" + } + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2295,13 +2632,13 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "cookie": { @@ -2316,6 +2653,26 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", @@ -2324,8 +2681,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { "version": "4.0.0", @@ -2346,7 +2702,7 @@ "cipher-base": "1.0.4", "inherits": "2.0.1", "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" }, "dependencies": { "ripemd160": { @@ -2360,9 +2716,9 @@ } }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha1-mPZIgEdLdPSji42p08Dy0QRjPn0=", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { "inherits": "2.0.1", @@ -2382,7 +2738,7 @@ "inherits": "2.0.1", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" }, "dependencies": { "ripemd160": { @@ -2396,9 +2752,9 @@ } }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha1-mPZIgEdLdPSji42p08Dy0QRjPn0=", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { "inherits": "2.0.1", @@ -2408,11 +2764,11 @@ } }, "create-react-class": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", - "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", + "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1" }, @@ -2457,13 +2813,29 @@ "which": "1.3.0" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } } }, "crypto-browserify": { @@ -2478,6 +2850,27 @@ "sha.js": "2.2.6" } }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "requires": { + "inherits": "2.0.1", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, "css-animation": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.4.1.tgz", @@ -2494,9 +2887,9 @@ "dev": true }, "css-loader": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", - "integrity": "sha1-Xy7pid0y7dkHcX+VMxdlYWCZnBs=", + "version": "0.28.9", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.9.tgz", + "integrity": "sha512-r3dgelMm/mkPz5Y7m9SeiGE46i2VsEU/OYbez+1llfxtv8b2y5/b5StaeEvPK3S5tlNQI+tDW/xDIhKJoZgDtw==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2506,8 +2899,8 @@ "loader-utils": "1.1.0", "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-modules-extract-imports": "1.1.0", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.2.0", "postcss-modules-local-by-default": "1.2.0", "postcss-modules-scope": "1.1.0", "postcss-modules-values": "1.3.0", @@ -2515,17 +2908,6 @@ "source-list-map": "2.0.0" }, "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2593,7 +2975,7 @@ "defined": "1.0.0", "has": "1.0.1", "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-calc": "5.3.1", "postcss-colormin": "2.2.2", "postcss-convert-values": "2.6.1", @@ -2634,7 +3016,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, "requires": { "clap": "1.2.3", "source-map": "0.5.7" @@ -2643,8 +3024,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -2673,13 +3053,19 @@ "array-find-index": "1.0.2" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.30" + "es5-ext": "0.10.38" } }, "dashdash": { @@ -2689,14 +3075,6 @@ "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "date-now": { @@ -2706,9 +3084,9 @@ "dev": true }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -2716,19 +3094,23 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "decorate-component-with-props": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decorate-component-with-props/-/decorate-component-with-props-1.0.2.tgz", - "integrity": "sha1-V2TTz2pYaFpSIgG60xv/DLUx5f4=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decorate-component-with-props/-/decorate-component-with-props-1.1.0.tgz", + "integrity": "sha512-tTYQojixN64yK3/WBODMfvss/zbmyUx9HQXhzSxZiSiofeekVeRyyuToy9BCiTMrVEIKWxTcla2t3y5qdaUF7Q==" }, "deep-diff": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.4.tgz", - "integrity": "sha1-qsXDmVIjar5fA3ojSQYLoBsArkg=", - "dev": true + "integrity": "sha1-qsXDmVIjar5fA3ojSQYLoBsArkg=" }, "deep-eql": { "version": "0.1.3", @@ -2755,7 +3137,7 @@ "deep-freeze-node": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/deep-freeze-node/-/deep-freeze-node-1.1.3.tgz", - "integrity": "sha1-zpwUsyEOb1YHpXglT0tT/gHdlGc=", + "integrity": "sha512-CrA+1BVGfs9ZrGFMYtHfFHncWivh9XPb+6g8bLOzYPJmW8FmUs1dXLjALzU1SMqOMdoD5pQJARXtzxfeLqE9HQ==", "dev": true }, "deep-is": { @@ -2774,6 +3156,15 @@ "object-keys": "1.0.11" } }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -2791,7 +3182,7 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" }, "dependencies": { "object-assign": { @@ -2799,6 +3190,12 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, @@ -2815,9 +3212,9 @@ "dev": true }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, "des.js": { @@ -2852,11 +3249,11 @@ "dev": true }, "detective": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", - "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "requires": { - "acorn": "4.0.13", + "acorn": "5.3.0", "defined": "1.0.0" } }, @@ -2874,7 +3271,7 @@ "requires": { "bn.js": "4.11.8", "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "dns-equal": { @@ -2884,9 +3281,9 @@ "dev": true }, "dns-packet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", - "integrity": "sha1-qKJr7HZGQ4lj/Ibgb4+LFtbIv3o=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "dev": true, "requires": { "ip": "1.1.5", @@ -2913,9 +3310,9 @@ } }, "dom-align": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.6.5.tgz", - "integrity": "sha1-SIkO43Vj3UPTtYC3XPt5pqyPoAQ=" + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.6.7.tgz", + "integrity": "sha512-FrHttKVCqdHaDyVjygY+8kRhcNOJEdvAkc2ltppJUz71ekgpzIOuLgsOIKVqzdETI2EocmW2DzF+uP365qcR5Q==" }, "dom-converter": { "version": "0.1.4", @@ -2935,9 +3332,9 @@ } }, "dom-helpers": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.2.1.tgz", - "integrity": "sha1-MgPgf+0he9H0JLAZc1WC/Deyglo=" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" }, "dom-serializer": { "version": "0.1.0", @@ -2976,9 +3373,9 @@ "dev": true }, "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "dev": true, "requires": { "domelementtype": "1.3.0" @@ -2994,12 +3391,20 @@ "domelementtype": "1.3.0" } }, - "draft-js": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.10.1.tgz", - "integrity": "sha1-bxIZ2AlXKWkUKcpv16WNKovly2c=", + "dot-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.2.tgz", + "integrity": "sha1-HnOCaQDeKNbeVIC8HeMdCEKwa+w=", + "requires": { + "sentence-case": "1.1.3" + } + }, + "draft-js": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.10.5.tgz", + "integrity": "sha512-LE6jSCV9nkPhfVX2ggcRLA4FKs6zWq9ceuO/88BpXdNCS7mjRTgs0NsV6piUCJX9YxMsB9An33wnkMmU2sD2Zg==", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "immutable": "3.7.6", "object-assign": "4.1.1" }, @@ -3012,11 +3417,11 @@ } }, "draft-js-drag-n-drop-plugin": { - "version": "2.0.0-rc5", - "resolved": "https://registry.npmjs.org/draft-js-drag-n-drop-plugin/-/draft-js-drag-n-drop-plugin-2.0.0-rc5.tgz", - "integrity": "sha1-ciLc165WAtplxXaN8ta+wOMnW2A=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/draft-js-drag-n-drop-plugin/-/draft-js-drag-n-drop-plugin-2.0.1.tgz", + "integrity": "sha512-8vtmshiI0fPHcPLQrKqlqGpPpMM7rlrZZNHUFLLDn1lJ7YrPGLz/43yum9y7Trfa+1Oy7I6azDN27ZtWniUTPw==", "requires": { - "decorate-component-with-props": "1.0.2", + "decorate-component-with-props": "1.1.0", "find-with-regex": "1.0.2", "immutable": "3.7.6", "prop-types": "15.6.0", @@ -3024,11 +3429,11 @@ } }, "draft-js-image-plugin": { - "version": "2.0.0-rc5", - "resolved": "https://registry.npmjs.org/draft-js-image-plugin/-/draft-js-image-plugin-2.0.0-rc5.tgz", - "integrity": "sha1-12KWVqN7bbdYAzpIA4x4RFczL/c=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/draft-js-image-plugin/-/draft-js-image-plugin-2.0.1.tgz", + "integrity": "sha512-0mXvtSz2IHnk5zAq/D6YDVw7ul7kytotgIm7T+iprbDeURwvsgMRB9cvrA1SVAMS66NNU3rnA1unrGLq5xmkiQ==", "requires": { - "decorate-component-with-props": "1.0.2", + "decorate-component-with-props": "1.1.0", "find-with-regex": "1.0.2", "immutable": "3.7.6", "prop-types": "15.6.0", @@ -3040,7 +3445,7 @@ "resolved": "https://registry.npmjs.org/draft-js-link-plugin/-/draft-js-link-plugin-1.2.2.tgz", "integrity": "sha1-AZOfpiKneM2xQPn8KM1exM3k6uM=", "requires": { - "decorate-component-with-props": "1.0.2", + "decorate-component-with-props": "1.1.0", "linkify-it": "2.0.0", "tlds": "1.159.0" }, @@ -3060,12 +3465,25 @@ } } }, + "draft-js-mention-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/draft-js-mention-plugin/-/draft-js-mention-plugin-2.0.1.tgz", + "integrity": "sha512-MFJHf8QmtWmiMSVoZynNbM3HLBPc23fPeO8yenV4trC6C5o258gmY7XzH4z5yEjYH3f5yMLlLz6QspEkvd4uzg==", + "requires": { + "decorate-component-with-props": "1.1.0", + "find-with-regex": "1.0.2", + "immutable": "3.7.6", + "lodash.escaperegexp": "4.1.2", + "prop-types": "15.6.0", + "union-class-names": "1.0.0" + } + }, "draft-js-plugins-editor": { - "version": "2.0.0-rc5", - "resolved": "https://registry.npmjs.org/draft-js-plugins-editor/-/draft-js-plugins-editor-2.0.0-rc5.tgz", - "integrity": "sha1-/sOa5ID5T7fwEkehI26zxnF1o+Q=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/draft-js-plugins-editor/-/draft-js-plugins-editor-2.0.4.tgz", + "integrity": "sha512-XvfhH2nNMAoeWb5++S5Qhe1sYcDBKsFDCX5CW4Jdobz2ivjssnpCrJNZ9nwmnEC2nKAUephSbrnIwqtcvTQ+Gg==", "requires": { - "decorate-component-with-props": "1.0.2", + "decorate-component-with-props": "1.1.0", "find-with-regex": "1.0.2", "immutable": "3.7.6", "prop-types": "15.6.0", @@ -3077,6 +3495,18 @@ "resolved": "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-0.1.7.tgz", "integrity": "sha1-4raSfKYg7fGFWkv8HPHSEICnDxY=" }, + "duplexify": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.1", + "readable-stream": "2.0.6", + "stream-shift": "1.0.0" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -3094,9 +3524,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.24", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz", - "integrity": "sha1-m3uIuwXOufoBahd4M8wt3jiPIbY=", + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz", + "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA==", "dev": true }, "element-class": { @@ -3125,9 +3555,9 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, "encoding": { @@ -3135,7 +3565,16 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.18" + "iconv-lite": "0.4.19" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" } }, "enhanced-resolve": { @@ -3173,12 +3612,12 @@ } }, "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", + "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", "dev": true, "requires": { - "prr": "0.0.0" + "prr": "1.0.1" } }, "error-ex": { @@ -3200,9 +3639,9 @@ } }, "es-abstract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", - "integrity": "sha1-aQgpoHyuNrIi5/2bdcDQVz6yUic=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "dev": true, "requires": { "es-to-primitive": "1.1.1", @@ -3224,23 +3663,23 @@ } }, "es5-ext": { - "version": "0.10.30", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", - "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "version": "0.10.38", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", + "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", "dev": true, "requires": { - "es6-iterator": "2.0.1", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", + "es5-ext": "0.10.38", "es6-symbol": "3.1.1" } }, @@ -3251,8 +3690,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -3271,8 +3710,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" } @@ -3284,7 +3723,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30" + "es5-ext": "0.10.38" } }, "es6-weak-map": { @@ -3294,8 +3733,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, @@ -3308,13 +3747,12 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha1-mBGi8mXcHNOJRCDuNxcGS2MriFI=", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", "dev": true, "optional": true, "requires": { @@ -3351,14 +3789,6 @@ "es6-weak-map": "2.0.2", "esrecurse": "4.2.0", "estraverse": "4.2.0" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } } }, "eslint": { @@ -3369,21 +3799,21 @@ "requires": { "chalk": "1.1.3", "concat-stream": "1.5.2", - "debug": "2.6.8", + "debug": "2.6.9", "doctrine": "1.5.0", "es6-map": "0.1.5", "escope": "3.6.0", - "espree": "3.5.0", + "espree": "3.5.2", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "1.3.1", "glob": "7.1.2", "globals": "9.18.0", - "ignore": "3.3.5", + "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "0.12.0", - "is-my-json-valid": "2.16.1", - "is-resolvable": "1.0.0", + "is-my-json-valid": "2.17.1", + "is-resolvable": "1.1.0", "js-yaml": "3.7.0", "json-stable-stringify": "1.0.1", "levn": "0.3.0", @@ -3402,16 +3832,10 @@ "user-home": "2.0.0" }, "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -3431,21 +3855,13 @@ "dev": true }, "espree": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", - "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", "dev": true, "requires": { - "acorn": "5.1.1", + "acorn": "5.3.0", "acorn-jsx": "3.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha1-U/4WERH5EquZnuiHqQoLxSgi/XU=", - "dev": true - } } }, "esprima-fb": { @@ -3463,12 +3879,6 @@ "object-assign": "4.1.1" }, "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3481,14 +3891,12 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true, - "optional": true + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "etag": { "version": "1.8.1", @@ -3503,7 +3911,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30" + "es5-ext": "0.10.38" } }, "eventemitter3": { @@ -3529,7 +3937,7 @@ "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { "md5.js": "1.3.4", @@ -3606,9 +4014,9 @@ } }, "express": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.1.tgz", - "integrity": "sha1-azO1YBg8myU7e2IUTfM6RlSsntA=", + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "dev": true, "requires": { "accepts": "1.3.4", @@ -3619,8 +4027,8 @@ "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", "finalhandler": "1.1.0", @@ -3649,19 +4057,10 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=", + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true } } @@ -3672,6 +4071,15 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -3681,14 +4089,47 @@ "is-extglob": "1.0.0" } }, + "extract-css-chunks-webpack-plugin": { + "version": "github:birdofpreyru/extract-css-chunks-webpack-plugin#b1d48e1354104f1533eb88dfe6359d88282e965b", + "dev": true, + "requires": { + "ajv": "4.11.2", + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "style-loader": "0.18.2", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.2.tgz", + "integrity": "sha1-8WbDwRy8bLncwQKlvP5bcslSh+Y=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + } + } + }, "extract-zip": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.5.tgz", - "integrity": "sha1-maBnNbbqIOqbcF13ms/8yHz/BEA=", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", "dev": true, "requires": { "concat-stream": "1.6.0", - "debug": "2.2.0", + "debug": "2.6.9", "mkdirp": "0.5.0", "yauzl": "2.4.1" }, @@ -3704,15 +4145,6 @@ "typedarray": "0.0.6" } }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -3728,16 +4160,10 @@ "minimist": "0.0.8" } }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -3752,7 +4178,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -3772,6 +4198,12 @@ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "dev": true }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -3792,7 +4224,7 @@ "requires": { "async": "1.5.2", "cheerio": "0.19.0", - "clone": "1.0.2", + "clone": "1.0.3", "colors": "1.1.2", "harmony-reflect": "1.5.1", "image-size": "0.4.0", @@ -3847,15 +4279,6 @@ "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=", "dev": true }, - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, "domutils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", @@ -3865,120 +4288,17 @@ "domelementtype": "1.3.0" } }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.3.0", - "domutils": "1.5.1", - "entities": "1.0.0", - "readable-stream": "1.1.14" - }, - "dependencies": { - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", - "dev": true - } - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, "lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true } } }, @@ -4006,16 +4326,30 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -4025,6 +4359,26 @@ "has-flag": "1.0.0" } }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dev": true, + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, "webpack": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", @@ -4033,7 +4387,7 @@ "requires": { "acorn": "3.3.0", "async": "1.5.2", - "clone": "1.0.2", + "clone": "1.0.3", "enhanced-resolve": "0.9.1", "interpret": "0.6.6", "loader-utils": "0.2.17", @@ -4064,13 +4418,13 @@ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-2.1.1.tgz", "integrity": "sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU=", "requires": { - "fbjs": "0.8.14" + "fbjs": "0.8.16" } }, "fbjs": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.14.tgz", - "integrity": "sha1-0dviviVMNakeCfMfnNUKQLKg7Rw=", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { "core-js": "1.2.7", "isomorphic-fetch": "2.2.1", @@ -4078,7 +4432,7 @@ "object-assign": "4.1.1", "promise": "7.3.1", "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" + "ua-parser-js": "0.7.17" }, "dependencies": { "object-assign": { @@ -4121,7 +4475,7 @@ "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", "dev": true, "requires": { - "flat-cache": "1.2.2", + "flat-cache": "1.3.0", "object-assign": "4.1.1" }, "dependencies": { @@ -4136,23 +4490,10 @@ "file-loader": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", - "integrity": "sha1-T/HfKK84cZpgmAk7iMgscdF5SjQ=", + "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", "dev": true, "requires": { "loader-utils": "1.1.0" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } } }, "file-type": { @@ -4173,9 +4514,9 @@ "integrity": "sha1-gquFC5lEsSJY82F/5RbUfUileVw=" }, "filesize": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.10.tgz", - "integrity": "sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8=" + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" }, "fill-range": { "version": "2.2.3", @@ -4197,23 +4538,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "find-cache-dir": { @@ -4223,7 +4553,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.0.0", + "make-dir": "1.1.0", "pkg-dir": "2.0.0" } }, @@ -4246,13 +4576,13 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-2.0.1.tgz", "integrity": "sha1-cOKRiKdL4MPIlAnu0fqVd5B64y8=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { "circular-json": "0.3.3", @@ -4267,893 +4597,153 @@ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", "dev": true }, - "follow-redirects": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, "requires": { - "debug": "2.6.8", - "stream-consume": "0.1.0" - } - }, - "for-each": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", - "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", - "dev": true, - "requires": { - "is-function": "1.0.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "form-data-to-object": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", - "integrity": "sha1-96jmjd2RChEApl4lrGpIQUP/gWg=" - }, - "formsy-react": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-0.19.5.tgz", - "integrity": "sha1-dgpXrAETRC499MMJw2ON2SlX544=", - "requires": { - "form-data-to-object": "0.2.0" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", - "optional": true, - "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.39" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } + "inherits": "2.0.1", + "readable-stream": "2.0.6" + } + }, + "follow-redirects": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "requires": { + "debug": "2.6.9", + "stream-consume": "0.1.0" + } + }, + "for-each": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", + "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", + "dev": true, + "requires": { + "is-function": "1.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "form-data-to-object": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data-to-object/-/form-data-to-object-0.2.0.tgz", + "integrity": "sha1-96jmjd2RChEApl4lrGpIQUP/gWg=" + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "requires": { + "samsam": "1.1.2" + } + }, + "formsy-react": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/formsy-react/-/formsy-react-0.19.5.tgz", + "integrity": "sha1-dgpXrAETRC499MMJw2ON2SlX544=", + "requires": { + "form-data-to-object": "0.2.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.1", + "readable-stream": "2.0.6" + } + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" } }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.0.6" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, "fstream": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", @@ -5163,13 +4753,13 @@ "graceful-fs": "4.1.11", "inherits": "2.0.1", "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "gauge": { @@ -5250,6 +4840,12 @@ } } }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -5257,14 +4853,6 @@ "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "glob": { @@ -5306,21 +4894,12 @@ "requires": { "min-document": "2.19.0", "process": "0.5.2" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } } }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", - "dev": true + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, "globby": { "version": "5.0.0", @@ -5339,7 +4918,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -5355,6 +4934,12 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, @@ -5372,7 +4957,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -5407,20 +4992,38 @@ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", "dev": true }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.6.4" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "harmony-reflect": { @@ -5442,7 +5045,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -5459,6 +5061,66 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "hash-base": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", @@ -5471,7 +5133,7 @@ "hash.js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { "inherits": "2.0.3", @@ -5497,22 +5159,21 @@ } }, "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" } }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.0.0.tgz", + "integrity": "sha1-baWyZdfyw7XkgHSRaODhWdBXKNo=" }, "history": { "version": "1.17.0", @@ -5547,9 +5208,9 @@ } }, "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", "dev": true }, "hoist-non-react-statics": { @@ -5570,7 +5231,7 @@ "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "hpack.js": { @@ -5598,27 +5259,108 @@ "dev": true }, "html-minifier": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.5.tgz", - "integrity": "sha1-O9yUJ+Y4u+Pb3pbA65iLBE8Cc54=", - "dev": true, + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-1.5.0.tgz", + "integrity": "sha1-vrBf2cw0CUWGXBD0Cu30aa9LFTQ=", "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.11.0", - "he": "1.1.1", + "change-case": "2.3.1", + "clean-css": "3.4.28", + "commander": "2.9.0", + "concat-stream": "1.5.2", + "he": "1.0.0", "ncname": "1.0.0", - "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.1.3" + "uglify-js": "2.6.4" + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.8", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" }, "dependencies": { + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "html-minifier": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", + "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.8" + } + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5626,31 +5368,31 @@ "dev": true }, "uglify-js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.3.tgz", - "integrity": "sha1-1h8EU7RxjKsBWB8xYqqQurdSC0I=", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.8.tgz", + "integrity": "sha512-X0jAGtpSZRtd4RhbVNuGHyjZNa/h2MrVkKrR3Ew5iL2MJw6d7FmBke+fhVCALWySv1ygHnjjROG1KI1FAPvddw==", "dev": true, "requires": { - "commander": "2.11.0", - "source-map": "0.5.7" + "commander": "2.13.0", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } } } }, - "html-webpack-plugin": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", - "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "html-minifier": "3.5.5", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "pretty-error": "2.1.1", - "toposort": "1.0.3" - } - }, "html5-uploader": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/html5-uploader/-/html5-uploader-0.1.1.tgz", @@ -5660,25 +5402,23 @@ } }, "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "dev": true, "requires": { "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" }, "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true }, "isarray": { "version": "0.0.1", @@ -5687,9 +5427,9 @@ "dev": true }, "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -5718,6 +5458,12 @@ "statuses": "1.3.1" }, "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -5733,9 +5479,9 @@ } }, "http-parser-js": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.8.tgz", - "integrity": "sha1-dj91xLdxoLtEZTsHBwv/bKe8VWE=", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", "dev": true }, "http-proxy": { @@ -5786,12 +5532,12 @@ } }, "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", "sshpk": "1.13.1" } @@ -5802,10 +5548,15 @@ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", "dev": true }, + "humps": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/humps/-/humps-0.6.0.tgz", + "integrity": "sha1-phchA4bwRF0SLOtNlBSho5saHpQ=" + }, "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha1-I9hlaxaq5nQqwpcy6o8DNqR4nPI=" + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "icss-replace-symbols": { "version": "1.1.0", @@ -5819,27 +5570,38 @@ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, "requires": { - "postcss": "6.0.12" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "has-flag": { @@ -5849,26 +5611,26 @@ "dev": true }, "postcss": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", - "integrity": "sha1-awFVCJ0tIS971qDOzUxYwAdANTU=", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -5882,10 +5644,16 @@ "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", "dev": true }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, "ignore": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", - "integrity": "sha1-xOcVRV9gc6jX5drnLS/J1xZj26Y=", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, "ignore-styles": { @@ -5905,6 +5673,16 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -6026,6 +5804,23 @@ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6038,13 +5833,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -6061,12 +5856,48 @@ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", "dev": true }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -6127,24 +5958,24 @@ "is-extglob": "1.0.0" } }, + "is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", + "requires": { + "lower-case": "1.1.4" + } + }, "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha1-WoRnd+LCYg0eaRBOXToDsfYIjxE=", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", "dev": true, "requires": { "generate-function": "2.0.0", "generate-object-property": "1.2.0", "jsonpointer": "4.0.1", "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } } }, "is-number": { @@ -6156,6 +5987,26 @@ "kind-of": "3.2.2" } }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "dev": true, + "requires": { + "is-number": "3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -6168,13 +6019,13 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "1.0.1" } }, "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "1.0.2" @@ -6189,7 +6040,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" @@ -6215,6 +6066,11 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -6231,13 +6087,15 @@ } }, "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retina": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-retina/-/is-retina-1.0.3.tgz", + "integrity": "sha1-10AbKGvqKuN/Ykd1iN5QTQuGR+M=" }, "is-stream": { "version": "1.1.0", @@ -6265,6 +6123,14 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", + "requires": { + "upper-case": "1.1.3" + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -6280,8 +6146,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -6303,7 +6168,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.2", + "node-fetch": "1.7.3", "whatwg-fetch": "2.0.3" } }, @@ -6313,6 +6178,30 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, "jimp": { "version": "0.2.28", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", @@ -6326,12 +6215,12 @@ "file-type": "3.9.0", "jpeg-js": "0.2.0", "load-bmfont": "1.3.0", - "mime": "1.3.4", + "mime": "1.6.0", "mkdirp": "0.5.1", "pixelmatch": "4.0.2", - "pngjs": "3.3.0", + "pngjs": "3.3.1", "read-chunk": "1.0.1", - "request": "2.81.0", + "request": "2.83.0", "stream-to-buffer": "0.1.0", "tinycolor2": "1.4.1", "url-regex": "3.2.0" @@ -6344,9 +6233,9 @@ "dev": true }, "js-base64": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", - "integrity": "sha1-p5qSNmY3K1gPjif1GEXG9+j7+68=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.1.tgz", + "integrity": "sha512-2h586r2I/CqU7z1aa1kBgWaVAXWAZK+zHnceGi/jFgn7+7VSluxYer/i3xOZVearCxxXvyDkLtTBo+OeJCA3kA==", "dev": true }, "js-cookie": { @@ -6363,26 +6252,15 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, "requires": { "argparse": "1.0.9", "esprima": "2.7.3" }, "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" } } }, @@ -6408,10 +6286,10 @@ "escodegen": "1.9.0", "nwmatcher": "1.4.3", "parse5": "1.5.1", - "request": "2.81.0", + "request": "2.83.0", "sax": "1.2.4", "symbol-tree": "3.2.2", - "tough-cookie": "2.3.2", + "tough-cookie": "2.3.3", "webidl-conversions": "2.0.1", "whatwg-url-compat": "0.6.5", "xml-name-validator": "2.0.1" @@ -6427,15 +6305,15 @@ } }, "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, "json-schema": { @@ -6513,14 +6391,6 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "jstransform": { @@ -6528,26 +6398,39 @@ "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", "requires": { - "base62": "1.2.0", + "base62": "1.2.1", "commoner": "0.10.8", "esprima-fb": "15001.1.0-dev-harmony-fb", "object-assign": "2.1.1", "source-map": "0.4.4" } }, + "jwt-decode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-1.5.1.tgz", + "integrity": "sha1-vajYcxubc57otKMaDQJcqUrpLTs=", + "requires": { + "Base64": "0.1.4" + } + }, "kew": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", "dev": true }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "klaw": { @@ -6562,8 +6445,7 @@ "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, "lcid": { "version": "1.0.0", @@ -6599,20 +6481,12 @@ "dev": true, "requires": { "buffer-equal": "0.0.1", - "mime": "1.3.4", + "mime": "1.6.0", "parse-bmfont-ascii": "1.0.6", "parse-bmfont-binary": "1.0.6", "parse-bmfont-xml": "1.1.3", - "xhr": "2.4.0", + "xhr": "2.4.1", "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } } }, "load-json-file": { @@ -6626,6 +6500,14 @@ "pify": "2.3.0", "pinkie-promise": "2.0.1", "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "loader-runner": { @@ -6635,23 +6517,13 @@ "dev": true }, "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "requires": { - "big.js": "3.1.3", + "big.js": "3.2.0", "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } + "json5": "0.5.1" } }, "locate-path": { @@ -6741,6 +6613,11 @@ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -6751,6 +6628,11 @@ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -6792,16 +6674,20 @@ "dev": true }, "loglevel": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.5.0.tgz", - "integrity": "sha1-OGOYSiwya5hvu5ZfN4dYptyKQyQ=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, "loose-envify": { "version": "1.3.1", @@ -6824,13 +6710,20 @@ "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lower-case-first": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", + "requires": { + "lower-case": "1.1.4" + } }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -6844,20 +6737,35 @@ "dev": true }, "make-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", - "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "3.0.0" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, "material-colors": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.5.tgz", @@ -6869,6 +6777,16 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "1.1.6" + } + }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -6912,7 +6830,7 @@ "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", "dev": true, "requires": { - "errno": "0.1.4", + "errno": "0.1.6", "readable-stream": "2.0.6" } }, @@ -7001,7 +6919,7 @@ "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -7009,9 +6927,9 @@ } }, "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { @@ -7059,7 +6977,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "1.1.8" } @@ -7069,6 +6987,45 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mississippi": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "dev": true, + "requires": { + "concat-stream": "1.5.2", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", @@ -7144,30 +7101,6 @@ "minimatch": "0.3.0" } }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true - } - } - }, "lru-cache": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", @@ -7205,9 +7138,23 @@ "dev": true }, "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } }, "ms": { "version": "2.0.0", @@ -7215,12 +7162,12 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multicast-dns": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.1.1.tgz", - "integrity": "sha1-bn3oalcIcqsXBYrepxYLvsqBTd4=", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.2.tgz", + "integrity": "sha512-xTO41ApiRHMVDBYhNL9bEhx7kRf1hq3OqPOnOy8bpTi0JZSxVPDre7ZRpTHLDlxmhf6d/FL+10E8VX1QRd+0DA==", "dev": true, "requires": { - "dns-packet": "1.2.2", + "dns-packet": "1.3.1", "thunky": "0.1.0" } }, @@ -7237,15 +7184,54 @@ "dev": true }, "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true + }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } }, "ncname": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true, "requires": { "xml-char-classes": "1.0.0" } @@ -7257,28 +7243,28 @@ "dev": true }, "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { "lower-case": "1.1.4" } }, "nock": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/nock/-/nock-8.2.1.tgz", - "integrity": "sha1-ZMxl4b3TiT9Yy6fhq/3Dj0DwNko=", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/nock/-/nock-8.2.2.tgz", + "integrity": "sha512-f4s5qR4Eg/NgaLuBYTThc/abl5mohCgIvnGdHkoqR5WgRe5amjFQTU2aia085OE8o3OAY7ZerDkRAeXfR720TA==", "dev": true, "requires": { "chai": "3.5.0", - "debug": "2.6.8", + "debug": "2.6.9", "deep-equal": "1.0.1", "json-stringify-safe": "5.0.1", "lodash": "4.9.0", "mkdirp": "0.5.1", "propagate": "0.4.0", - "qs": "6.4.0" + "qs": "6.5.1" }, "dependencies": { "lodash": { @@ -7298,9 +7284,9 @@ } }, "node-fetch": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.2.tgz", - "integrity": "sha1-xU6arFfkModSM1JfPIkcQVn/79c=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { "encoding": "0.1.12", "is-stream": "1.1.0" @@ -7326,8 +7312,8 @@ "nopt": "3.0.6", "npmlog": "4.1.2", "osenv": "0.1.4", - "request": "2.81.0", - "rimraf": "2.6.1", + "request": "2.83.0", + "rimraf": "2.6.2", "semver": "5.3.0", "tar": "2.2.1", "which": "1.3.0" @@ -7336,7 +7322,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -7377,13 +7363,21 @@ "querystring-es3": "0.2.1", "readable-stream": "2.0.6", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", + "stream-http": "2.8.0", "string_decoder": "0.10.31", "timers-browserify": "2.0.4", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" + }, + "dependencies": { + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + } } }, "node-neat": { @@ -7402,7 +7396,7 @@ "dev": true, "requires": { "debug": "2.2.0", - "xml2js": "0.4.19" + "xml2js": "0.4.17" }, "dependencies": { "debug": { @@ -7423,9 +7417,9 @@ } }, "node-sass": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", - "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", + "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", "dev": true, "requires": { "async-foreach": "0.1.3", @@ -7440,18 +7434,66 @@ "lodash.mergewith": "4.6.0", "meow": "3.7.0", "mkdirp": "0.5.1", - "nan": "2.7.0", + "nan": "2.8.0", "node-gyp": "3.6.2", "npmlog": "4.1.2", - "request": "2.81.0", + "request": "2.79.0", "sass-graph": "2.2.4", - "stdout-stream": "1.4.0" + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" }, "dependencies": { + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -7461,6 +7503,96 @@ "once": "1.4.0", "path-is-absolute": "1.0.1" } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true } } }, @@ -7476,12 +7608,12 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", + "semver": "5.5.0", "validate-npm-package-license": "3.0.1" } }, @@ -7520,6 +7652,21 @@ } } }, + "normalizr": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/normalizr/-/normalizr-1.4.1.tgz", + "integrity": "sha1-qjh8JGXxNhHK86rkK6+Y9wXoos4=", + "requires": { + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -7532,7 +7679,7 @@ "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { "are-we-there-yet": "1.1.4", @@ -7565,7 +7712,7 @@ "nwmatcher": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", - "integrity": "sha1-ZDSOOz2A8DW0CsEVY9J4+LctuJw=", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", "dev": true, "optional": true }, @@ -7580,6 +7727,65 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, "object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", @@ -7592,14 +7798,48 @@ "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", "dev": true }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "obuf": { @@ -7638,14 +7878,23 @@ "dev": true }, "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha1-cs4jBqF9vqWP8QQYUzUrSo/HdRk=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", "dev": true, "requires": { "is-wsl": "1.1.0" } }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.2" + } + }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -7733,10 +7982,13 @@ "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -7744,13 +7996,19 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, "p-map": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "pako": { @@ -7759,13 +8017,55 @@ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "no-case": "2.3.1" + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "param-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.2.tgz", + "integrity": "sha1-3LCRpDwlm5Io8cNB57akTqC/l0M=", + "requires": { + "sentence-case": "1.1.3" } }, "parse-asn1": { @@ -7774,17 +8074,17 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.8", + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", "pbkdf2": "3.0.14" }, "dependencies": { "browserify-aes": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", - "integrity": "sha1-yPo7G3WFu3unfFVgtgmW3extUwk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { "buffer-xor": "1.0.3", @@ -7816,7 +8116,7 @@ "dev": true, "requires": { "xml-parse-from-string": "1.0.1", - "xml2js": "0.4.19" + "xml2js": "0.4.17" } }, "parse-glob": { @@ -7856,7 +8156,7 @@ "integrity": "sha1-9cKtfHmTSQmGAgooTBmu5FlxH/I=", "dev": true, "requires": { - "pngjs": "3.3.0" + "pngjs": "3.3.1" } }, "parse5": { @@ -7872,12 +8172,41 @@ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, + "pascal-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.2.tgz", + "integrity": "sha1-Pl1kogBDgwp8STRMLXS0G+DJyZs=", + "requires": { + "camel-case": "1.2.2", + "upper-case-first": "1.1.2" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, + "path-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-1.1.2.tgz", + "integrity": "sha1-UM5roNO+090LXCqcRVNpdDRAlRQ=", + "requires": { + "sentence-case": "1.1.3" + } + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -7902,10 +8231,19 @@ "dev": true }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } }, "path-type": { "version": "1.1.0", @@ -7916,19 +8254,27 @@ "graceful-fs": "4.1.11", "pify": "2.3.0", "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "pbkdf2": { "version": "3.0.14", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha1-o14TxkeZsGzhUyD0WcIw5o5zut4=", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { "create-hash": "1.1.3", "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" }, "dependencies": { "ripemd160": { @@ -7942,9 +8288,9 @@ } }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha1-mPZIgEdLdPSji42p08Dy0QRjPn0=", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { "inherits": "2.0.1", @@ -7971,43 +8317,34 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "phantomjs-prebuilt": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz", - "integrity": "sha1-IPhugtM0nFBZF1J3RbekEeCLOQM=", + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", + "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", "dev": true, "requires": { - "es6-promise": "4.0.5", - "extract-zip": "1.6.5", + "es6-promise": "4.2.2", + "extract-zip": "1.6.6", "fs-extra": "1.0.0", "hasha": "2.2.0", "kew": "0.7.0", "progress": "1.1.8", - "request": "2.81.0", + "request": "2.83.0", "request-progress": "2.0.1", - "which": "1.2.14" + "which": "1.3.0" }, "dependencies": { "es6-promise": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", - "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz", + "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==", "dev": true - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true, - "requires": { - "isexe": "2.0.0" - } } } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -8031,7 +8368,7 @@ "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", "dev": true, "requires": { - "pngjs": "3.3.0" + "pngjs": "3.3.1" } }, "pkg-dir": { @@ -8050,15 +8387,15 @@ "dev": true }, "pn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", - "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, "pngjs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.0.tgz", - "integrity": "sha1-H1cwwYnJSTO4G+2iqy+OKFUmOo8=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.1.tgz", + "integrity": "sha512-ggXCTsqHRIsGMkHlCEhbHhUmNTA2r1lpkE0NL4Q9S8spkXbm4vE9TVmPso2AGYn90Gltdz8W5CyzhcIGg2Gejg==", "dev": true }, "portfinder": { @@ -8068,7 +8405,7 @@ "dev": true, "requires": { "async": "1.5.2", - "debug": "2.6.8", + "debug": "2.6.9", "mkdirp": "0.5.1" }, "dependencies": { @@ -8080,14 +8417,20 @@ } } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" }, @@ -8115,7 +8458,7 @@ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-message-helpers": "2.0.0", "reduce-css-calc": "1.3.0" } @@ -8127,7 +8470,7 @@ "dev": true, "requires": { "colormin": "1.1.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8137,7 +8480,7 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8147,7 +8490,7 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-duplicates": { @@ -8156,7 +8499,7 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-empty": { @@ -8165,7 +8508,7 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-overridden": { @@ -8174,7 +8517,7 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-discard-unused": { @@ -8183,7 +8526,7 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" } }, @@ -8193,7 +8536,7 @@ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqid": "4.1.1" } }, @@ -8204,7 +8547,7 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8214,7 +8557,7 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-merge-rules": { @@ -8225,7 +8568,7 @@ "requires": { "browserslist": "1.7.7", "caniuse-api": "1.6.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3", "vendors": "1.0.1" }, @@ -8236,8 +8579,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000743", - "electron-to-chromium": "1.3.24" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } } } @@ -8255,7 +8598,7 @@ "dev": true, "requires": { "object-assign": "4.1.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" }, "dependencies": { @@ -8273,7 +8616,7 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8284,7 +8627,7 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "uniqs": "2.0.0" } @@ -8297,37 +8640,48 @@ "requires": { "alphanum-sort": "1.0.2", "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-selector-parser": "2.2.3" } }, "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "dev": true, "requires": { - "postcss": "6.0.12" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "has-flag": { @@ -8337,26 +8691,26 @@ "dev": true }, "postcss": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", - "integrity": "sha1-awFVCJ0tIS971qDOzUxYwAdANTU=", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -8371,27 +8725,38 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.12" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "has-flag": { @@ -8401,26 +8766,26 @@ "dev": true }, "postcss": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", - "integrity": "sha1-awFVCJ0tIS971qDOzUxYwAdANTU=", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -8435,27 +8800,38 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.12" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "has-flag": { @@ -8465,26 +8841,26 @@ "dev": true }, "postcss": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", - "integrity": "sha1-awFVCJ0tIS971qDOzUxYwAdANTU=", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -8499,27 +8875,38 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.12" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha1-rFvs8U+iG5nGySynp9fP1bF+dD4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "has-flag": { @@ -8529,26 +8916,26 @@ "dev": true }, "postcss": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz", - "integrity": "sha1-awFVCJ0tIS971qDOzUxYwAdANTU=", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { - "chalk": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.4.0" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -8562,7 +8949,7 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-normalize-url": { @@ -8573,7 +8960,7 @@ "requires": { "is-absolute-url": "2.1.0", "normalize-url": "1.9.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8583,7 +8970,7 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8593,7 +8980,7 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8603,7 +8990,7 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "5.2.17" + "postcss": "5.2.18" } }, "postcss-reduce-transforms": { @@ -8613,7 +9000,7 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0" } }, @@ -8635,7 +9022,7 @@ "dev": true, "requires": { "is-svg": "2.1.0", - "postcss": "5.2.17", + "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "svgo": "0.7.2" } @@ -8647,7 +9034,7 @@ "dev": true, "requires": { "alphanum-sort": "1.0.2", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" } }, @@ -8664,7 +9051,7 @@ "dev": true, "requires": { "has": "1.0.1", - "postcss": "5.2.17", + "postcss": "5.2.18", "uniqs": "2.0.0" } }, @@ -8697,21 +9084,20 @@ } }, "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", "dev": true }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "progress": { "version": "1.1.8", @@ -8722,11 +9108,17 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { "asap": "2.0.6" } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, "prop-types": { "version": "15.6.0", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", @@ -8737,20 +9129,6 @@ "object-assign": "4.1.1" }, "dependencies": { - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" - } - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -8775,9 +9153,9 @@ } }, "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, "pseudomap": { @@ -8796,7 +9174,46 @@ "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } } }, "punycode": { @@ -8806,14 +9223,14 @@ "dev": true }, "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true }, "query-string": { @@ -8851,9 +9268,9 @@ "dev": true }, "raf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.3.2.tgz", - "integrity": "sha1-DBO+C1tJtG921maSSNUnzysC/ic=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", "requires": { "performance-now": "2.1.0" } @@ -8866,7 +9283,7 @@ "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -8888,7 +9305,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -8899,17 +9316,27 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } }, "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha1-3ACaJGuNCaF3tLegrne8Vw9LG3k=", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", "dev": true, "requires": { + "randombytes": "2.0.6", "safe-buffer": "5.1.1" } }, @@ -8929,30 +9356,23 @@ "http-errors": "1.6.2", "iconv-lite": "0.4.19", "unpipe": "1.0.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=", - "dev": true - } } }, "rc-align": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-2.3.4.tgz", - "integrity": "sha1-2Dvat1YPAULnKj3h1JXatroiUkk=", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-2.3.5.tgz", + "integrity": "sha512-V1AN/gMNiJ3vOzbY/H3CTxhzYH+Ri2KlsEpo1SN8/SYmI4I/ZfQpScFAgmERuIGcLStA2sOEeBNVpH2FaOd2hA==", "requires": { - "dom-align": "1.6.5", + "babel-runtime": "6.26.0", + "dom-align": "1.6.7", "prop-types": "15.6.0", - "rc-util": "4.2.0" + "rc-util": "4.3.1" } }, "rc-animate": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.4.1.tgz", - "integrity": "sha1-3z4PVv4Qav5L9S/0CM7SQcUXiRk=", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.4.4.tgz", + "integrity": "sha512-DjJLTUQj7XKKcuS8cczN0uOLfuSmgrVXFGieP1SZc87xUUTFGh8B/KjNmEtlfvxkSrSuVfb2rrEPER4SqKUtEA==", "requires": { "babel-runtime": "6.26.0", "css-animation": "1.4.1", @@ -8960,15 +9380,15 @@ } }, "rc-slider": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-8.3.5.tgz", - "integrity": "sha1-QfiKuV3r4IkTne7nEgxuFRJgtS0=", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-8.6.0.tgz", + "integrity": "sha512-Ek68lWlMZm2b9N0AevvBvd/1GRG+n/kvf2wpvSz4xkXawc2SXpF64auU2qF6eyvv98qhGFoDeyCELMATYddJkA==", "requires": { "babel-runtime": "6.26.0", "classnames": "2.2.5", "prop-types": "15.6.0", "rc-tooltip": "3.7.0", - "rc-util": "4.2.0", + "rc-util": "4.3.1", "shallowequal": "1.0.2", "warning": "3.0.0" }, @@ -8986,30 +9406,30 @@ "rc-tooltip": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-3.7.0.tgz", - "integrity": "sha1-OvvxCYZffNz+Q3UvPz9QH3vjeqo=", + "integrity": "sha512-xEoUMatXp8OEL61UFH0+NrC39nkKzpOBhLrJCnnRpDRduU8L3DOhF6CNlIMkvg68hxlGGdquFtFw2t+1xNLX5A==", "requires": { "babel-runtime": "6.26.0", "prop-types": "15.6.0", - "rc-trigger": "2.2.2" + "rc-trigger": "2.3.3" } }, "rc-trigger": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-2.2.2.tgz", - "integrity": "sha1-sMZms3zOTtJzAKfnENZ790RNEq0=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-2.3.3.tgz", + "integrity": "sha512-j8MHq0jES4vXShFbSExyty/WVR238lrZzUfsSaIDeiziBIiUAOP6SR2HBEi2gSGK239Jm3bWIJvwGA85kFMgmQ==", "requires": { "babel-runtime": "6.26.0", - "create-react-class": "15.6.0", + "create-react-class": "15.6.2", "prop-types": "15.6.0", - "rc-align": "2.3.4", - "rc-animate": "2.4.1", - "rc-util": "4.2.0" + "rc-align": "2.3.5", + "rc-animate": "2.4.4", + "rc-util": "4.3.1" } }, "rc-util": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.2.0.tgz", - "integrity": "sha1-2s7FBzVnWiEfHJRXEwapDouXJI8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.3.1.tgz", + "integrity": "sha512-OVNMKLePnwn0dCX/Gpc+/kGEDpmMo1Rfesg9xFcAckRd+D+YwVqV+dUJMHugP+4nRtbXi55o0HwPlkKIApYfQA==", "requires": { "add-dom-event-listener": "1.0.2", "babel-runtime": "6.26.0", @@ -9028,12 +9448,12 @@ } }, "react": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/react/-/react-15.6.1.tgz", - "integrity": "sha1-uqhDTsZ4C96ZfNw4C3nNM7ljk98=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", + "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", "requires": { - "create-react-class": "15.6.0", - "fbjs": "0.8.14", + "create-react-class": "15.6.2", + "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", "prop-types": "15.6.0" @@ -9046,20 +9466,36 @@ } } }, - "react-addons-css-transition-group": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.6.0.tgz", - "integrity": "sha1-aYh89uSHTSXNZuIqaZ4p8NZIq6A=", - "requires": { - "react-transition-group": "1.2.0" - } - }, - "react-addons-pure-render-mixin": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-pure-render-mixin/-/react-addons-pure-render-mixin-15.6.0.tgz", - "integrity": "sha1-hLoChjDN+JI50W8btNmP6GVlGBM=", + "react-addons-css-transition-group": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.6.2.tgz", + "integrity": "sha1-nkN2vPQLUhfRTsaFUwgc7ksIptY=", + "requires": { + "react-transition-group": "1.2.1" + } + }, + "react-addons-pure-render-mixin": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-pure-render-mixin/-/react-addons-pure-render-mixin-15.6.2.tgz", + "integrity": "sha1-a4P0C2s27kBzXL1hJes/E84c3ck=", + "requires": { + "fbjs": "0.8.16", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "react-addons-shallow-compare": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz", + "integrity": "sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "object-assign": "4.1.1" }, "dependencies": { @@ -9070,12 +9506,12 @@ } } }, - "react-addons-shallow-compare": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.0.tgz", - "integrity": "sha1-t6Tl/58nBMIM9obdigXdCLJt4lI=", + "react-addons-update": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-update/-/react-addons-update-15.6.2.tgz", + "integrity": "sha1-5TdTxbNIh5dFEMiC1/sHWFHV5QQ=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "object-assign": "4.1.1" }, "dependencies": { @@ -9086,22 +9522,33 @@ } } }, + "react-avatar": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/react-avatar/-/react-avatar-2.5.1.tgz", + "integrity": "sha512-bwH5pWY6uxaKZt+IZBfD+SU3Dpy3FaKbmAzrOI4N8SATUPLXOdGaJHWUl6Vl8hHSwWSsoLh/m7xYHdnn0lofZw==", + "requires": { + "babel-runtime": "6.26.0", + "is-retina": "1.0.3", + "md5": "2.2.1" + } + }, "react-circular-progressbar": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-0.5.0.tgz", - "integrity": "sha1-dLZ4YkMfP6XkbzgIdOQoT18yG5o=", + "integrity": "sha512-4W+9xS7BBUq/VZ9kq/zcRJvR/1hRnCDTTM5ZqhTJF79hd5lwj6JorsUnFxOj9Wb2//F+oEpt2kF3CBlfB1c6Zg==", "requires": { "prop-types": "15.6.0" } }, "react-color": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.13.5.tgz", - "integrity": "sha1-dBy/or/KHoawjROIYFHqIBdBQEM=", + "version": "2.13.8", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.13.8.tgz", + "integrity": "sha1-vMWPeaciub/DfEAuaM0Y8mlwruQ=", "requires": { "lodash": "4.17.4", "material-colors": "1.2.5", - "reactcss": "1.2.2", + "prop-types": "15.6.0", + "reactcss": "1.2.3", "tinycolor2": "1.4.1" } }, @@ -9128,11 +9575,11 @@ "dev": true }, "react-dom": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.1.tgz", - "integrity": "sha1-LLDtQZEDjlPCCes6eaI+Kkz5lHA=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", + "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", "requires": { - "fbjs": "0.8.14", + "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", "prop-types": "15.6.0" @@ -9146,9 +9593,9 @@ } }, "react-dom-factories": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/react-dom-factories/-/react-dom-factories-1.0.1.tgz", - "integrity": "sha1-xQaSrF/xrbOdht/m2+NIXaz1hFU=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-dom-factories/-/react-dom-factories-1.0.2.tgz", + "integrity": "sha1-63cFxNs2+1AbOqOP91lhaqD/luA=" }, "react-dotdotdot": { "version": "1.1.0", @@ -9168,23 +9615,30 @@ } }, "react-hot-loader": { - "version": "3.0.0-beta.7", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.0.0-beta.7.tgz", - "integrity": "sha1-1YR7gWXXMcTVsw2G1dRxYieg+oM=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz", + "integrity": "sha512-d7nZf78irxoGN5PY4zd6CSgZiroOhvIWzRast3qwTn4sSnBwlt08kV8WMQ9mitmxEdlCTwZt+5ClrRSjxWguMQ==", "dev": true, "requires": { - "babel-template": "6.26.0", "global": "4.3.2", "react-deep-force-update": "2.1.1", "react-proxy": "3.0.0-alpha.1", "redbox-react": "1.5.0", - "source-map": "0.4.4" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "react-infinite-scroller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/react-infinite-scroller/-/react-infinite-scroller-1.1.1.tgz", - "integrity": "sha1-lXrGkv25DgLKJlxrWX0bXGyc5Co=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/react-infinite-scroller/-/react-infinite-scroller-1.1.3.tgz", + "integrity": "sha512-fBnsmZ05y/5Jp0CiLCoUI9/WChK1CHET6w2hf/bPFlfP49wgBZBwhqMNy8Y+eC2yp4Gh8uGTh/m955ohuT4dxA==", "requires": { "prop-types": "15.6.0" } @@ -9213,7 +9667,7 @@ "core-js": "1.2.7", "loose-envify": "1.3.1", "promise": "7.3.1", - "ua-parser-js": "0.7.14", + "ua-parser-js": "0.7.17", "whatwg-fetch": "0.9.0" } }, @@ -9243,17 +9697,25 @@ } } }, + "react-lazy-cache": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/react-lazy-cache/-/react-lazy-cache-3.0.1.tgz", + "integrity": "sha1-DcZNON8XZ+93Z4xclBkAZMsRsM0=", + "requires": { + "deep-equal": "1.0.1" + } + }, "react-modal": { "version": "1.9.7", "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-1.9.7.tgz", - "integrity": "sha1-B+9WeQuVPjuY7x4pieNHmDxyhx0=", + "integrity": "sha512-oZNqI0ZnPD7NnfObrCMz2hxHTAw5oEuhZJ+gnyFNIQB2rR8h1YbLQTfhms1mtSJigb0J23OOWElHjXYYaKO+wg==", "requires": { - "create-react-class": "15.6.0", + "create-react-class": "15.6.2", "element-class": "0.2.2", "exenv": "1.2.0", "lodash.assign": "4.2.0", "prop-types": "15.6.0", - "react-dom-factories": "1.0.1" + "react-dom-factories": "1.0.2" } }, "react-onclickoutside": { @@ -9285,7 +9747,7 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.8.tgz", "integrity": "sha1-57wd0QDotk6WrIIS2xEyObni4I8=", "requires": { - "create-react-class": "15.6.0", + "create-react-class": "15.6.2", "hoist-non-react-statics": "1.2.0", "invariant": "2.2.2", "lodash": "4.17.4", @@ -9294,60 +9756,18 @@ } }, "react-router": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-2.8.1.tgz", - "integrity": "sha1-c+lJH2zrMW0Pd5gpCBhj43juTtc=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-1.0.3.tgz", + "integrity": "sha1-mA7KoFW4bkfIZUjCMq4FqIpB8Lc=", "requires": { - "history": "2.1.2", - "hoist-non-react-statics": "1.2.0", "invariant": "2.2.2", - "loose-envify": "1.3.1", - "warning": "3.0.0" - }, - "dependencies": { - "history": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz", - "integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=", - "requires": { - "deep-equal": "1.0.1", - "invariant": "2.2.2", - "query-string": "3.0.3", - "warning": "2.1.0" - }, - "dependencies": { - "warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", - "requires": { - "loose-envify": "1.3.1" - } - } - } - }, - "query-string": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz", - "integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=", - "requires": { - "strict-uri-encode": "1.1.0" - } - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "1.3.1" - } - } + "warning": "2.1.0" } }, "react-router-dom": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", - "integrity": "sha1-yKgd863Fi7qKdngulGy9Tq5km40=", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", "requires": { "history": "4.7.2", "invariant": "2.2.2", @@ -9360,7 +9780,7 @@ "history": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", - "integrity": "sha1-IrXH8xYzxbgCHH9KipVKwTnujVs=", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", "requires": { "invariant": "2.2.2", "loose-envify": "1.3.1", @@ -9374,23 +9794,10 @@ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "requires": { - "isarray": "0.0.1" - } - }, "react-router": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", - "integrity": "sha1-Yfez43cNrrJAYtrj7t7xsFQVWYY=", + "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", "requires": { "history": "4.7.2", "hoist-non-react-statics": "2.3.1", @@ -9412,29 +9819,26 @@ } }, "react-s-alert": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-s-alert/-/react-s-alert-1.3.0.tgz", - "integrity": "sha1-2BIkpHTxXonDXA6mwqc/Iyp2cSg=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/react-s-alert/-/react-s-alert-1.4.1.tgz", + "integrity": "sha512-+cSpVPe6YeGklhlo7zbVlB0Z6jdiU9HPmEVzp5nIhNm9lvdL7rVO2Jx09pCwT99GmODyoN0iNhbQku6r7six8A==", "requires": { "babel-runtime": "6.26.0" } }, "react-scroll": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/react-scroll/-/react-scroll-1.5.4.tgz", - "integrity": "sha1-jFxM7WWVU74fo5lZd2yFBV/OsTc=", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/react-scroll/-/react-scroll-1.7.6.tgz", + "integrity": "sha512-EIUyzMAcvPpv/3HhUlqP3EbgswwALCHnO3yGnC3gHu1P6HYCkPcTXty5tAKLekDcM/2eM7ZUArnkF6MU73vSNw==", "requires": { - "object-assign": "4.1.1", "prop-types": "15.6.0" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - } } }, + "react-scroll-lock-component": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/react-scroll-lock-component/-/react-scroll-lock-component-1.1.2.tgz", + "integrity": "sha512-eQlHhpBe05uYb/stNTmKdW6LgM90ybiVIZlZDZUlfBSMFIhZqtf4aQUuH4VhwI0wmdjl34QIA62jIV6VPJpEwA==" + }, "react-select": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/react-select/-/react-select-0.9.1.tgz", @@ -9445,28 +9849,41 @@ } }, "react-stickynode": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/react-stickynode/-/react-stickynode-1.3.1.tgz", - "integrity": "sha1-3i83lYy3vlTxaK51T7csrvhmCgQ=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-stickynode/-/react-stickynode-1.4.0.tgz", + "integrity": "sha512-36Rm+wt9rF+InkF/iT+Je1DCCCJyNd610FvS45JA3cFhbzKqrt4ZE6/oPv160Anlp/ppmbkFgRcmSq4mwlb78A==", "requires": { "classnames": "2.2.5", "prop-types": "15.6.0", - "react-addons-shallow-compare": "15.6.0", - "subscribe-ui-event": "1.0.14" + "react-addons-shallow-compare": "15.6.2", + "subscribe-ui-event": "1.1.1" } }, + "react-switch-button": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/react-switch-button/-/react-switch-button-1.1.2.tgz", + "integrity": "sha1-jOhPaUa046k3PnttasjngNl/L08=" + }, "react-text-truncate": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-text-truncate/-/react-text-truncate-0.8.3.tgz", "integrity": "sha1-MRA4dTHpNE/13aXCXDfsfZ4Bf38=" }, + "react-textarea-autosize": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-4.3.2.tgz", + "integrity": "sha1-lipSxoys6uQIwYrOzsKQSbgeQvo=", + "requires": { + "prop-types": "15.6.0" + } + }, "react-transition-group": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.0.tgz", - "integrity": "sha1-tR/JIbDDg1p+98Vxx5/ILHPpIE8=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", + "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", "requires": { "chain-function": "1.0.0", - "dom-helpers": "3.2.1", + "dom-helpers": "3.3.1", "loose-envify": "1.3.1", "prop-types": "15.6.0", "warning": "3.0.0" @@ -9488,9 +9905,9 @@ "integrity": "sha1-KNz8l5WbOPCKWna4ChWpSY07AHw=" }, "reactcss": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.2.tgz", - "integrity": "sha1-QbDvQ+AdVIgDV8NLEawVMSCTUO8=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", + "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", "requires": { "lodash": "4.17.4" } @@ -9547,7 +9964,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.1", @@ -9587,7 +10003,7 @@ "requires": { "ast-types": "0.9.6", "esprima": "3.1.3", - "private": "0.1.7", + "private": "0.1.8", "source-map": "0.5.7" }, "dependencies": { @@ -9609,7 +10025,7 @@ "integrity": "sha1-ET1qx+KcpmTP/+wWtoHd3fFSULw=", "requires": { "change-emitter": "0.1.6", - "fbjs": "0.8.14", + "fbjs": "0.8.16", "hoist-non-react-statics": "1.2.0", "symbol-observable": "0.2.4" }, @@ -9624,13 +10040,13 @@ "redbox-react": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.5.0.tgz", - "integrity": "sha1-BNqxFVfSZlG/NWKmfCKs5WxdOWc=", + "integrity": "sha512-mdxArOI3sF8K5Nay5NG+lv/VW516TbXjjd4h1wcV1Iy4IMDQPnCayjoQXBAycAFSME4nyXRUXCjHxsw2rYpVRw==", "dev": true, "requires": { "error-stack-parser": "1.3.6", "object-assign": "4.1.1", "prop-types": "15.6.0", - "sourcemapped-stacktrace": "1.1.7" + "sourcemapped-stacktrace": "1.1.8" }, "dependencies": { "object-assign": { @@ -9690,34 +10106,55 @@ "redux": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { "lodash": "4.17.4", "lodash-es": "4.17.4", "loose-envify": "1.3.1", - "symbol-observable": "1.0.4" + "symbol-observable": "1.1.0" + } + }, + "redux-form": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/redux-form/-/redux-form-4.2.2.tgz", + "integrity": "sha1-uK43pAcJBvRdvTCwcinxoQvyXLA=", + "requires": { + "deep-equal": "1.0.1", + "hoist-non-react-statics": "1.2.0", + "is-promise": "2.1.0", + "react-lazy-cache": "3.0.1" } }, "redux-logger": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-2.10.2.tgz", "integrity": "sha1-PFpfCm8yV3wd6t9mVfJX+CxsOTc=", - "dev": true, "requires": { "deep-diff": "0.3.4" } }, "redux-mock-store": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.2.3.tgz", - "integrity": "sha1-GzrSmdqRy0G6MNaOO28CRHX7nhs=", - "dev": true + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.4.0.tgz", + "integrity": "sha512-y+SGh/SONWwqs4DiyHjd0H6NMgz368wXDiUjSHuOnMEr4dN9PmjV6N3bNvxoILaIQ7zeVKclLyxsCQ2TwGZfEw==", + "dev": true, + "requires": { + "lodash.isplainobject": "4.0.6" + } }, "redux-promise-middleware": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux-promise-middleware/-/redux-promise-middleware-4.2.1.tgz", "integrity": "sha1-UMSW+bVGpotR+oUJvi4K1pvnYkY=" }, + "redux-router": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redux-router/-/redux-router-1.0.0.tgz", + "integrity": "sha1-PBZ240Qb7FD+jZJFfAF8tjaZM08=", + "requires": { + "deep-equal": "1.0.1" + } + }, "redux-segment": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/redux-segment/-/redux-segment-1.6.2.tgz", @@ -9731,34 +10168,43 @@ "regenerate": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha1-DDNtOYBVPXVcObWGrjsgqknIK38=", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha1-flT+W1zNXWYk6mJVw0c74JC4AuE=" + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "private": "0.1.7" + "private": "0.1.8" } }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, "regex-parser": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.8.tgz", @@ -9789,21 +10235,12 @@ "dev": true, "requires": { "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } } }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" }, "remarkable": { "version": "1.7.1", @@ -9812,6 +10249,17 @@ "requires": { "argparse": "0.1.16", "autolinker": "0.15.3" + }, + "dependencies": { + "argparse": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "requires": { + "underscore": "1.7.0", + "underscore.string": "2.4.0" + } + } } }, "remove-trailing-separator": { @@ -9833,6 +10281,54 @@ "utila": "0.3.3" }, "dependencies": { + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.1", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, "utila": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", @@ -9850,8 +10346,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -9869,41 +10364,33 @@ "dev": true }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "dev": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", "mime-types": "2.1.17", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.2", + "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - }, - "dependencies": { - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - } + "uuid": "3.2.1" } }, "request-progress": { @@ -9927,6 +10414,12 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", + "dev": true + }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -9935,6 +10428,14 @@ "requires": { "caller-path": "0.1.0", "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } } }, "requires-port": { @@ -9971,16 +10472,32 @@ } } }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" }, "resolve-pathname": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", - "integrity": "sha1-fpriHtgV/WOrGJre7mTcgx7vqHk=" + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" }, "resolve-url": { "version": "0.2.1", @@ -9988,14 +10505,14 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "resolve-url-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.1.0.tgz", - "integrity": "sha1-J8lcwWpDU5I/29wtuvXu8iIyxHc=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.2.1.tgz", + "integrity": "sha512-ywToZt/yttp4qG/SiiGMLAgaGuSaWSujAaf3WCadXehvQLxIgKFmMOSegaoH9Laa70Ayl4kti0zCAqLR48H/Mw==", "dev": true, "requires": { "adjust-sourcemap-loader": "1.1.0", "camelcase": "4.1.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "loader-utils": "1.1.0", "lodash.defaults": "4.2.0", "rework": "1.0.1", @@ -10010,17 +10527,6 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -10051,30 +10557,9 @@ "dependencies": { "convert-source-map": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", - "dev": true - }, - "css": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", - "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", - "dev": true, - "requires": { - "inherits": "2.0.1", - "source-map": "0.1.43", - "source-map-resolve": "0.3.1", - "urix": "0.1.0" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true } } }, @@ -10088,15 +10573,14 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, "requires": { "align-text": "0.1.4" } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -10105,7 +10589,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -10133,6 +10617,15 @@ "once": "1.4.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -10147,9 +10640,14 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=" + }, "sass-graph": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", @@ -10182,7 +10680,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -10219,39 +10717,31 @@ "sass-loader": { "version": "6.0.6", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", - "integrity": "sha1-6dXmwfFV+qMqSybXqbcQfCJeQPk=", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", "dev": true, "requires": { - "async": "2.4.1", + "async": "2.6.0", "clone-deep": "0.3.0", "loader-utils": "1.1.0", "lodash.tail": "4.1.1", "pify": "3.0.0" }, "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "lodash": "4.17.4" } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "schema-utils": { "version": "0.3.0", @@ -10259,21 +10749,7 @@ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "dev": true, "requires": { - "ajv": "5.2.3" - }, - "dependencies": { - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - } + "ajv": "5.5.2" } }, "scss-tokenizer": { @@ -10282,7 +10758,7 @@ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", "dev": true, "requires": { - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.4.4" } }, @@ -10302,21 +10778,21 @@ } }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "send": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha1-pw4coh0TgsEdDZ9iMd6ygQgNerM=", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "destroy": "1.0.4", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.2", @@ -10328,23 +10804,28 @@ "statuses": "1.3.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true } } }, + "sentence-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.3.tgz", + "integrity": "sha1-gDSq/CFFdy06vhUJqkLJ4QQtwTk=", + "requires": { + "lower-case": "1.1.4" + } + }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -10358,26 +10839,15 @@ "http-errors": "1.6.2", "mime-types": "2.1.17", "parseurl": "1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "serve-static": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha1-TFfVNASnYdjy58HooYpH2/J4pxk=", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "dev": true, "requires": { - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "parseurl": "1.3.2", "send": "0.16.1" @@ -10389,12 +10859,33 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -10403,7 +10894,7 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, "sha.js": { @@ -10430,7 +10921,7 @@ "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -10444,7 +10935,7 @@ "shallowequal": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz", - "integrity": "sha1-FWHb3vuMAUCBADGQhXZNo/z4P48=" + "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw==" }, "shebang-command": { "version": "1.2.0", @@ -10479,6 +10970,18 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "sinon": { + "version": "2.0.0-pre", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.0.0-pre.tgz", + "integrity": "sha1-GCk7APsvFVyZ6OW0bjH36t4ygV0=", + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "text-encoding": "0.5.2", + "util": "0.10.3" + } + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -10491,45 +10994,188 @@ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", "dev": true }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, + "snake-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.2.tgz", + "integrity": "sha1-DC8l4wUVjZoY09l3BmGH/vilpmo=", "requires": { - "hoek": "2.16.3" + "sentence-case": "1.1.3" } }, - "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", "dev": true, "requires": { - "faye-websocket": "0.10.0", - "uuid": "2.0.3" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" }, "dependencies": { - "uuid": { + "atob": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, "sockjs-client": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "eventsource": "0.1.6", "faye-websocket": "0.11.1", "inherits": "2.0.1", "json3": "3.3.2", - "url-parse": "1.1.9" + "url-parse": "1.2.0" }, "dependencies": { "faye-websocket": { @@ -10555,7 +11201,7 @@ "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU=", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true }, "source-map": { @@ -10578,9 +11224,9 @@ } }, "source-map-support": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.17.tgz", - "integrity": "sha1-byFQVT5jdTddDMsxgFAreMGLpDA=", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { "source-map": "0.5.7" @@ -10600,9 +11246,9 @@ "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=" }, "sourcemapped-stacktrace": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.7.tgz", - "integrity": "sha1-F+BTdP94txqdia05daSfInJbqTU=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.8.tgz", + "integrity": "sha512-OkVoI7GQOLl/laR1qsSo1c87tS8kF2VXhQq2SrQCDdXufBAcm8FgXogWso96ciMYoDtTw1Dn70CVdwYzoYs6Pg==", "dev": true, "requires": { "source-map": "0.5.6" @@ -10643,7 +11289,7 @@ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "handle-thing": "1.2.5", "http-deceiver": "1.2.7", "safe-buffer": "5.1.1", @@ -10657,7 +11303,7 @@ "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", "dev": true, "requires": { - "debug": "2.6.8", + "debug": "2.6.9", "detect-node": "2.0.3", "hpack.js": "2.1.6", "obuf": "1.1.1", @@ -10675,7 +11321,7 @@ "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -10690,7 +11336,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -10698,11 +11344,40 @@ } } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.13.1", @@ -10718,14 +11393,15 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + } + }, + "ssri": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.1.0.tgz", + "integrity": "sha512-TevC8fgxQKTfQ1nWtM9GNzr3q5rrHNntG9CDMH1k3QhSZI6Kb+NbjLRs8oPFZa2Hgo7zoekL+UTvoEk7tsbjQg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" } }, "stackframe": { @@ -10734,6 +11410,84 @@ "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -10764,10 +11518,20 @@ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=" }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha1-QKBQ7I3DtTsz2ZCUFcAsC/Gr+60=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", @@ -10780,7 +11544,7 @@ "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -10803,20 +11567,20 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true } } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, "stream-to": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", @@ -10851,8 +11615,7 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "stringstream": { "version": "0.0.5", @@ -10864,7 +11627,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -10902,34 +11664,21 @@ "style-loader": { "version": "0.18.2", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", - "integrity": "sha1-zDFFmvvNbYC3Ig7lSykan9Zv9es=", + "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", "dev": true, "requires": { "loader-utils": "1.1.0", "schema-utils": "0.3.0" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } } }, "subscribe-ui-event": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/subscribe-ui-event/-/subscribe-ui-event-1.0.14.tgz", - "integrity": "sha1-xQYQS8Ncert2LrNHtZVEKiVnJn8=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/subscribe-ui-event/-/subscribe-ui-event-1.1.1.tgz", + "integrity": "sha1-4OSqd9xIh0PucL/+uBN21TPUgG8=", "requires": { "eventemitter3": "2.0.3", "lodash": "4.17.4", - "raf": "3.3.2" + "raf": "3.4.0" }, "dependencies": { "eventemitter3": { @@ -10942,8 +11691,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svg-react-loader": { "version": "0.4.5", @@ -10956,54 +11704,6 @@ "rx": "4.1.0", "traverse": "0.6.6", "xml2js": "0.4.17" - }, - "dependencies": { - "css": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", - "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", - "requires": { - "inherits": "2.0.1", - "source-map": "0.1.43", - "source-map-resolve": "0.3.1", - "urix": "0.1.0" - } - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "requires": { - "amdefine": "1.0.1" - } - }, - "xml2js": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", - "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", - "requires": { - "sax": "1.2.4", - "xmlbuilder": "4.2.1" - } - }, - "xmlbuilder": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", - "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", - "requires": { - "lodash": "4.17.4" - } - } } }, "svg2png": { @@ -11012,8 +11712,8 @@ "integrity": "sha1-omRNaLAjGsAK9DGqFjcU/xcQZEc=", "dev": true, "requires": { - "phantomjs-prebuilt": "2.1.15", - "pn": "1.0.0", + "phantomjs-prebuilt": "2.1.16", + "pn": "1.1.0", "yargs": "3.32.0" }, "dependencies": { @@ -11061,7 +11761,6 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, "requires": { "coa": "1.0.4", "colors": "1.1.2", @@ -11072,10 +11771,19 @@ "whet.extend": "0.9.9" } }, + "swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", + "requires": { + "lower-case": "1.1.4", + "upper-case": "1.1.3" + } + }, "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz", + "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==" }, "symbol-tree": { "version": "3.2.2", @@ -11098,6 +11806,16 @@ "string-width": "2.1.1" }, "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -11113,7 +11831,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -11169,7 +11887,7 @@ "@uirouter/angularjs": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-1.0.5.tgz", - "integrity": "sha1-ulWTeKyYElX5qWISt+9R+4LsSbg=", + "integrity": "sha512-VXNgZxBSfgntz9XsxbB0vkzkUQGUYJnF3S7clVtD4YCzRJnRNWywyYjx7zP2JJc6yBMLYmi8fjSUsQZp39uosg==", "requires": { "@uirouter/core": "5.0.5" } @@ -11177,7 +11895,7 @@ "@uirouter/core": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-5.0.5.tgz", - "integrity": "sha1-T6+ui4nhvuMhsO0y5pq2ZUfAVcY=" + "integrity": "sha512-z7zOXZKEFOloIeSMtsDpudWWfXd7L2qmhyxOAve4ZGFYwBn98zYBd2R4CIlPWMpcm4ZwfhIMTVUxCDgSSXrPKw==" }, "Base64": { "version": "https://registry.npmjs.org/Base64/-/Base64-0.1.4.tgz", @@ -12508,7 +13226,6 @@ "requires": { "anymatch": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "async-each": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "fsevents": "1.1.3", "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "is-binary-path": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -17765,11 +18482,11 @@ } }, "tc-ui": { - "version": "git+https://github.com/appirio-tech/tc-ui.git#6b398671e48193a7cbf8ed616c1f82922f991faf", + "version": "git+https://github.com/appirio-tech/tc-ui.git#44b6473cc9a6d0386409b297d8c0423f72003e6f", "requires": { "classnames": "2.2.5", "lodash": "4.17.4", - "moment": "2.18.1", + "moment": "2.20.1", "node-neat": "1.7.2", "react": "0.14.9", "react-datetime": "2.7.1", @@ -17789,10 +18506,39 @@ "core-js": "1.2.7", "loose-envify": "1.3.1", "promise": "7.3.1", - "ua-parser-js": "0.7.14", + "ua-parser-js": "0.7.17", "whatwg-fetch": "0.9.0" } }, + "history": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz", + "integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=", + "requires": { + "deep-equal": "1.0.1", + "invariant": "2.2.2", + "query-string": "3.0.3", + "warning": "2.1.0" + }, + "dependencies": { + "warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", + "requires": { + "loose-envify": "1.3.1" + } + } + } + }, + "query-string": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz", + "integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=", + "requires": { + "strict-uri-encode": "1.1.0" + } + }, "react": { "version": "0.14.9", "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", @@ -17807,6 +18553,26 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.9.tgz", "integrity": "sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM=" }, + "react-router": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-2.8.1.tgz", + "integrity": "sha1-c+lJH2zrMW0Pd5gpCBhj43juTtc=", + "requires": { + "history": "2.1.2", + "hoist-non-react-statics": "1.2.0", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "warning": "3.0.0" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "1.3.1" + } + }, "whatwg-fetch": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", @@ -17814,6 +18580,11 @@ } } }, + "text-encoding": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.5.2.tgz", + "integrity": "sha1-hbRmCBnwiHd2CUZVUWkP6hN9gko=" + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -17831,6 +18602,48 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "thunky": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", @@ -17846,70 +18659,187 @@ "timers-browserify": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha1-lspT9LeUpefA4b18yIo3Ipj6AeY=", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", "dev": true, "requires": { "setimmediate": "1.0.5" } }, - "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" - }, - "tlds": { - "version": "1.196.0", - "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.196.0.tgz", - "integrity": "sha1-SddN29H53zAjizv+9N+Chitbu0g=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-ico": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/to-ico/-/to-ico-1.1.2.tgz", - "integrity": "sha1-yzhIXxNvS+yJ4l+Jeh1gjAlik+k=", + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, + "title-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-1.1.2.tgz", + "integrity": "sha1-+uSmrlRr+iLQg6DuqRCkDRLtT1o=", + "requires": { + "sentence-case": "1.1.3", + "upper-case": "1.1.3" + } + }, + "tlds": { + "version": "1.199.0", + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.199.0.tgz", + "integrity": "sha512-NM0jUhibJjEX4g0+1ETxOhuODIDpyvCC0A2BjxrTfMUMZ+uRZc6ZnJl9SmFtAW1s5iQgQIxezFpUij6/6OiRbg==" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-ico": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/to-ico/-/to-ico-1.1.2.tgz", + "integrity": "sha1-yzhIXxNvS+yJ4l+Jeh1gjAlik+k=", + "dev": true, + "requires": { + "arrify": "1.0.1", + "image-size": "0.5.5", + "parse-png": "1.1.2", + "resize-img": "1.1.2" + }, + "dependencies": { + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true + } + } + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "arrify": "1.0.1", - "image-size": "0.5.5", - "parse-png": "1.1.2", - "resize-img": "1.1.2" + "is-number": "3.0.0", + "repeat-string": "1.6.1" }, "dependencies": { - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } } } }, - "to-iso-string": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", - "dev": true - }, "toposort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", - "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", "dev": true }, "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { "punycode": "1.4.1" @@ -17945,11 +18875,29 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } }, "tty-browserify": { "version": "0.0.0", @@ -18001,13 +18949,12 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "ua-parser-js": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", - "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=" + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uc.micro": { "version": "1.0.3", @@ -18015,10 +18962,9 @@ "integrity": "sha1-ftUNXg+an7ClczeSWfKndFjVAZI=" }, "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "dev": true, + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", + "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", "requires": { "async": "0.2.10", "source-map": "0.5.7", @@ -18026,25 +18972,17 @@ "yargs": "3.10.0" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" }, "uglifyjs-webpack-plugin": { "version": "0.4.6", @@ -18054,7 +18992,7 @@ "requires": { "source-map": "0.5.7", "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" + "webpack-sources": "1.1.0" }, "dependencies": { "source-map": { @@ -18076,6 +19014,14 @@ } } }, + "uncontrollable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", + "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=", + "requires": { + "invariant": "2.2.2" + } + }, "underscore": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", @@ -18091,6 +19037,32 @@ "resolved": "https://registry.npmjs.org/union-class-names/-/union-class-names-1.0.0.tgz", "integrity": "sha1-kllgitrMOQlKKwz+FseOYgBheEc=" }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -18112,17 +19084,88 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", + "requires": { + "upper-case": "1.1.3" + } }, "urix": { "version": "0.1.0", @@ -18148,9 +19191,9 @@ } }, "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", "dev": true, "requires": { "querystringify": "1.0.0", @@ -18174,6 +19217,100 @@ "ip-regex": "1.0.3" } }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", @@ -18187,7 +19324,6 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, "requires": { "inherits": "2.0.1" } @@ -18195,8 +19331,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "utila": { "version": "0.4.0", @@ -18211,9 +19346,9 @@ "dev": true }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", "dev": true }, "validate-npm-package-license": { @@ -18229,7 +19364,7 @@ "value-equal": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", - "integrity": "sha1-xb3S9U7gk8BIOdcc4uR1imiQq8c=" + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" }, "vary": { "version": "1.1.2", @@ -18252,14 +19387,6 @@ "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "vinyl": { @@ -18268,7 +19395,7 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.2", + "clone": "1.0.3", "clone-stats": "0.0.1", "replace-ext": "0.0.1" } @@ -18297,7 +19424,7 @@ "dev": true, "requires": { "commander": "2.9.0", - "debug": "2.6.8", + "debug": "2.6.9", "gaze": "1.1.2" } }, @@ -18337,57 +19464,39 @@ "optional": true }, "webpack": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", - "integrity": "sha1-qJqSn77iBdNaT6LMSHvpy+yImLw=", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.3.0", "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.3", - "ajv-keywords": "2.1.0", - "async": "2.4.1", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", "enhanced-resolve": "3.4.1", "escope": "3.6.0", - "interpret": "1.0.4", + "interpret": "1.1.0", "json-loader": "0.5.7", "json5": "0.5.1", "loader-runner": "2.3.0", "loader-utils": "1.1.0", "memory-fs": "0.4.1", "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", + "node-libs-browser": "2.1.0", "source-map": "0.5.7", - "supports-color": "4.4.0", + "supports-color": "4.5.0", "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", "watchpack": "1.4.0", - "webpack-sources": "1.0.1", + "webpack-sources": "1.1.0", "yargs": "8.0.2" }, "dependencies": { - "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha1-kRy1PgNoB88Pp3jcXTcPvYZCRtc=", - "dev": true - }, - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "ansi-regex": { @@ -18396,6 +19505,24 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -18427,9 +19554,9 @@ } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha1-lIlF78Z1ekANbl5a9HGU0QBkJ58=", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -18441,7 +19568,8 @@ "inherits": "2.0.1", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6", + "randomfill": "1.0.3" } }, "enhanced-resolve": { @@ -18462,33 +19590,28 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" } }, "memory-fs": { @@ -18497,39 +19620,62 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.4", + "errno": "0.1.6", "readable-stream": "2.0.6" } }, "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { "assert": "1.4.1", - "browserify-zlib": "0.1.4", + "browserify-zlib": "0.2.0", "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", + "crypto-browserify": "3.12.0", "domain-browser": "1.1.7", "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.0.6", + "readable-stream": "2.3.3", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", "timers-browserify": "2.0.4", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + } } }, "object-assign": { @@ -18538,10 +19684,16 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -18549,6 +19701,12 @@ "mem": "1.1.0" } }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -18558,6 +19716,18 @@ "pify": "2.3.0" } }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -18588,7 +19758,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -18612,6 +19782,15 @@ } } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -18619,9 +19798,9 @@ "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -18639,7 +19818,7 @@ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { - "async": "2.4.1", + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" } @@ -18701,13 +19880,13 @@ } }, "webpack-dev-middleware": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", - "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", "dev": true, "requires": { "memory-fs": "0.4.1", - "mime": "1.3.4", + "mime": "1.6.0", "path-is-absolute": "1.0.1", "range-parser": "1.2.0", "time-stamp": "2.0.0" @@ -18719,50 +19898,112 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.4", + "errno": "0.1.6", "readable-stream": "2.0.6" } } } }, "webpack-dev-server": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz", - "integrity": "sha1-eskyC2GwDrZbIQnxXIJ0f8W5NYU=", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz", + "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==", "dev": true, "requires": { "ansi-html": "0.0.7", "array-includes": "3.0.3", "bonjour": "3.5.0", - "chokidar": "1.7.0", + "chokidar": "2.0.0", "compression": "1.7.1", - "connect-history-api-fallback": "1.3.0", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", "del": "3.0.0", - "express": "4.16.1", + "express": "4.16.2", "html-entities": "1.2.1", "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", "internal-ip": "1.2.0", "ip": "1.1.5", - "loglevel": "1.5.0", - "opn": "5.1.0", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.2.0", "portfinder": "1.0.13", "selfsigned": "1.10.1", "serve-index": "1.9.1", - "sockjs": "0.3.18", + "sockjs": "0.3.19", "sockjs-client": "1.1.4", "spdy": "3.4.7", "strip-ansi": "3.0.1", - "supports-color": "4.4.0", - "webpack-dev-middleware": "1.12.0", + "supports-color": "5.1.0", + "webpack-dev-middleware": "1.12.2", "yargs": "6.6.0" }, "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "glob-parent": "3.1.0", + "inherits": "2.0.1", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -18774,6 +20015,15 @@ "wrap-ansi": "2.1.0" } }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", @@ -18785,13 +20035,76 @@ "is-path-in-cwd": "1.0.0", "p-map": "1.2.0", "pify": "3.0.0", - "rimraf": "2.6.1" + "rimraf": "2.6.2" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -18802,6 +20115,27 @@ "path-is-absolute": "1.0.1" } }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", @@ -18829,22 +20163,143 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -18883,28 +20338,28 @@ } }, "webpack-merge": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.0.tgz", - "integrity": "sha1-atciI7PguDflMeRZfBmfkJNhUR4=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz", + "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==", "dev": true, "requires": { "lodash": "4.17.4" } }, "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha1-xzVkNqTRMSO+LiQmoF0drZy+Zc8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { "source-list-map": "2.0.0", - "source-map": "0.5.7" + "source-map": "0.6.1" }, "dependencies": { "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } @@ -18915,14 +20370,14 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.8", - "websocket-extensions": "0.1.2" + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz", - "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, "whatwg-fetch": { @@ -18943,13 +20398,12 @@ "whet.extend": { "version": "0.9.9", "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -18964,7 +20418,7 @@ "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { "string-width": "1.0.2" @@ -18973,14 +20427,12 @@ "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, "wrap-ansi": { "version": "2.1.0", @@ -19007,30 +20459,21 @@ } }, "xhr": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz", - "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.1.tgz", + "integrity": "sha512-pAIU5vBr9Hiy5cpFIbPnwf0C18ZF86DBsZKrlsf87N5De/JbA6RJ83UP/cv+aljl4S40iRVMqP4pr4sF9Dnj0A==", "dev": true, "requires": { "global": "4.3.2", "is-function": "1.0.1", "parse-headers": "2.0.1", "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } } }, "xml-char-classes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=" }, "xml-name-validator": { "version": "2.0.1", @@ -19046,19 +20489,26 @@ "dev": true }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", - "dev": true, + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", "requires": { "sax": "1.2.4", - "xmlbuilder": "9.0.4" + "xmlbuilder": "4.2.1" } }, "xmlbuilder": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz", - "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "requires": { + "lodash": "4.17.4" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "y18n": { @@ -19077,7 +20527,6 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, "requires": { "camelcase": "1.2.1", "cliui": "2.1.0", diff --git a/package.json b/package.json index d95acdcf5..7e3ae5c4f 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "dependencies": { "appirio-tech-react-components": "github:appirio-tech/react-components#feature/connectv2", "axios": "^0.13.1", + "babel-plugin-inline-react-svg": "^0.5.2", "classnames": "^2.2.3", "coffeescript": "^1.12.7", "draft-js": "^0.10.1", @@ -62,6 +63,7 @@ "draft-js-image-plugin": "^2.0.0-rc2", "draft-js-link-plugin": "^1.2.2", "draft-js-plugins-editor": "^2.0.0-rc2", + "draft-js-mention-plugin": "^2.0.0-rc2", "draft-js-utils": "^0.1.7", "fbemitter": "^2.1.1", "fbjs": "^0.8.12", @@ -69,6 +71,7 @@ "filesize": "^3.3.0", "flat": "^2.0.1", "formsy-react": "^0.19.5", + "handlebars": "^4.0.11", "history": "^1.17.0", "html5-uploader": "^0.1.1", "isomorphic-fetch": "^2.2.1", @@ -94,6 +97,7 @@ "react-router-dom": "^4.2.2", "react-s-alert": "^1.1.4", "react-scroll": "^1.5.4", + "react-scroll-lock-component": "^1.1.2", "react-select": "^0.9.1", "react-stickynode": "^1.2.1", "react-text-truncate": "^0.8.3", diff --git a/src/api/projectMembers.js b/src/api/projectMembers.js index eae22d952..252df38c0 100644 --- a/src/api/projectMembers.js +++ b/src/api/projectMembers.js @@ -10,6 +10,7 @@ export function getMembersById (userIds) { const url = `${TC_API_URL}/v3/members/_search/?fields=` + encodeURIComponent(fields) + `&query=${encodeURIComponent(query)}` + + '&limit=' + userIds.length return axios.get(url) .then(resp => { return resp.data.result.content diff --git a/src/assets/icons/Device-iPhone.svg b/src/assets/icons/Device-iPhone.svg new file mode 100644 index 000000000..c54eb2c25 --- /dev/null +++ b/src/assets/icons/Device-iPhone.svg @@ -0,0 +1,86 @@ + + + + +Device-iPhone +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/FileList/images/aac.svg b/src/assets/icons/aac.svg similarity index 100% rename from src/components/FileList/images/aac.svg rename to src/assets/icons/aac.svg diff --git a/src/components/FileList/images/ai.svg b/src/assets/icons/ai.svg similarity index 100% rename from src/components/FileList/images/ai.svg rename to src/assets/icons/ai.svg diff --git a/src/assets/images/arrow-6px-carret-down-active.svg b/src/assets/icons/arrow-6px-carret-down-active.svg similarity index 100% rename from src/assets/images/arrow-6px-carret-down-active.svg rename to src/assets/icons/arrow-6px-carret-down-active.svg diff --git a/src/assets/images/arrow-6px-carret-down-normal.svg b/src/assets/icons/arrow-6px-carret-down-normal.svg similarity index 100% rename from src/assets/images/arrow-6px-carret-down-normal.svg rename to src/assets/icons/arrow-6px-carret-down-normal.svg diff --git a/src/assets/images/arrow-9px-carret-down-normal.svg b/src/assets/icons/arrow-9px-carret-down-normal.svg similarity index 100% rename from src/assets/images/arrow-9px-carret-down-normal.svg rename to src/assets/icons/arrow-9px-carret-down-normal.svg diff --git a/src/components/Grid/images/arrow-down-big.svg b/src/assets/icons/arrow-down-big.svg similarity index 100% rename from src/components/Grid/images/arrow-down-big.svg rename to src/assets/icons/arrow-down-big.svg diff --git a/src/components/Grid/images/arrow-left.svg b/src/assets/icons/arrow-left.svg similarity index 100% rename from src/components/Grid/images/arrow-left.svg rename to src/assets/icons/arrow-left.svg diff --git a/src/components/Grid/images/arrow-right.svg b/src/assets/icons/arrow-right.svg similarity index 100% rename from src/components/Grid/images/arrow-right.svg rename to src/assets/icons/arrow-right.svg diff --git a/src/components/Grid/images/arrow-up-big.svg b/src/assets/icons/arrow-up-big.svg similarity index 100% rename from src/components/Grid/images/arrow-up-big.svg rename to src/assets/icons/arrow-up-big.svg diff --git a/src/assets/images/arrows-16px-1_minimal-down.svg b/src/assets/icons/arrows-16px-1_minimal-down.svg similarity index 100% rename from src/assets/images/arrows-16px-1_minimal-down.svg rename to src/assets/icons/arrows-16px-1_minimal-down.svg diff --git a/src/assets/images/arrows-16px-1_minimal-left.svg b/src/assets/icons/arrows-16px-1_minimal-left.svg similarity index 100% rename from src/assets/images/arrows-16px-1_minimal-left.svg rename to src/assets/icons/arrows-16px-1_minimal-left.svg diff --git a/src/assets/images/arrows-16px-1_minimal-right.svg b/src/assets/icons/arrows-16px-1_minimal-right.svg similarity index 100% rename from src/assets/images/arrows-16px-1_minimal-right.svg rename to src/assets/icons/arrows-16px-1_minimal-right.svg diff --git a/src/assets/images/arrows-16px-1_minimal-up.svg b/src/assets/icons/arrows-16px-1_minimal-up.svg similarity index 100% rename from src/assets/images/arrows-16px-1_minimal-up.svg rename to src/assets/icons/arrows-16px-1_minimal-up.svg diff --git a/src/assets/images/arrows-16px-1_share-66.svg b/src/assets/icons/arrows-16px-1_share-66.svg similarity index 100% rename from src/assets/images/arrows-16px-1_share-66.svg rename to src/assets/icons/arrows-16px-1_share-66.svg diff --git a/src/assets/images/arrows-16px-1_tail-down.svg b/src/assets/icons/arrows-16px-1_tail-down.svg similarity index 100% rename from src/assets/images/arrows-16px-1_tail-down.svg rename to src/assets/icons/arrows-16px-1_tail-down.svg diff --git a/src/assets/images/arrows-16px-1_tail-left.svg b/src/assets/icons/arrows-16px-1_tail-left.svg similarity index 100% rename from src/assets/images/arrows-16px-1_tail-left.svg rename to src/assets/icons/arrows-16px-1_tail-left.svg diff --git a/src/assets/images/arrows-16px-1_tail-right.svg b/src/assets/icons/arrows-16px-1_tail-right.svg similarity index 100% rename from src/assets/images/arrows-16px-1_tail-right.svg rename to src/assets/icons/arrows-16px-1_tail-right.svg diff --git a/src/assets/images/arrows-16px-1_tail-up.svg b/src/assets/icons/arrows-16px-1_tail-up.svg similarity index 100% rename from src/assets/images/arrows-16px-1_tail-up.svg rename to src/assets/icons/arrows-16px-1_tail-up.svg diff --git a/src/assets/images/arrows-16px-2_log-out.svg b/src/assets/icons/arrows-16px-2_log-out.svg similarity index 100% rename from src/assets/images/arrows-16px-2_log-out.svg rename to src/assets/icons/arrows-16px-2_log-out.svg diff --git a/src/assets/images/arrows-16px-2_select-84.svg b/src/assets/icons/arrows-16px-2_select-84.svg similarity index 100% rename from src/assets/images/arrows-16px-2_select-84.svg rename to src/assets/icons/arrows-16px-2_select-84.svg diff --git a/src/assets/images/arrows-16px-3_small-down.svg b/src/assets/icons/arrows-16px-3_small-down.svg similarity index 100% rename from src/assets/images/arrows-16px-3_small-down.svg rename to src/assets/icons/arrows-16px-3_small-down.svg diff --git a/src/assets/images/arrows-16px-4_priority-high.svg b/src/assets/icons/arrows-16px-4_priority-high.svg similarity index 100% rename from src/assets/images/arrows-16px-4_priority-high.svg rename to src/assets/icons/arrows-16px-4_priority-high.svg diff --git a/src/assets/images/arrows-16px-4_priority-low.svg b/src/assets/icons/arrows-16px-4_priority-low.svg similarity index 100% rename from src/assets/images/arrows-16px-4_priority-low.svg rename to src/assets/icons/arrows-16px-4_priority-low.svg diff --git a/src/assets/images/arrows-9px-carret-down-expanded.svg b/src/assets/icons/arrows-9px-carret-down-expanded.svg similarity index 100% rename from src/assets/images/arrows-9px-carret-down-expanded.svg rename to src/assets/icons/arrows-9px-carret-down-expanded.svg diff --git a/src/assets/images/arrows-undo.svg b/src/assets/icons/arrows-undo.svg similarity index 100% rename from src/assets/images/arrows-undo.svg rename to src/assets/icons/arrows-undo.svg diff --git a/src/components/FileList/images/ase.svg b/src/assets/icons/ase.svg similarity index 100% rename from src/components/FileList/images/ase.svg rename to src/assets/icons/ase.svg diff --git a/src/components/FileList/images/asp.svg b/src/assets/icons/asp.svg similarity index 100% rename from src/components/FileList/images/asp.svg rename to src/assets/icons/asp.svg diff --git a/src/components/FileList/images/aspx.svg b/src/assets/icons/aspx.svg similarity index 100% rename from src/components/FileList/images/aspx.svg rename to src/assets/icons/aspx.svg diff --git a/src/projects/detail/components/FeatureSelector/images/audio.svg b/src/assets/icons/audio.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/audio.svg rename to src/assets/icons/audio.svg diff --git a/src/components/FileList/images/avi.svg b/src/assets/icons/avi.svg similarity index 100% rename from src/components/FileList/images/avi.svg rename to src/assets/icons/avi.svg diff --git a/src/components/FileList/images/bmp.svg b/src/assets/icons/bmp.svg similarity index 100% rename from src/components/FileList/images/bmp.svg rename to src/assets/icons/bmp.svg diff --git a/src/components/FileList/images/c++.svg b/src/assets/icons/c++.svg similarity index 100% rename from src/components/FileList/images/c++.svg rename to src/assets/icons/c++.svg diff --git a/src/components/FileList/images/cad.svg b/src/assets/icons/cad.svg similarity index 100% rename from src/components/FileList/images/cad.svg rename to src/assets/icons/cad.svg diff --git a/src/components/FileList/images/cfm.svg b/src/assets/icons/cfm.svg similarity index 100% rename from src/components/FileList/images/cfm.svg rename to src/assets/icons/cfm.svg diff --git a/src/components/FileList/images/cgi.svg b/src/assets/icons/cgi.svg similarity index 100% rename from src/components/FileList/images/cgi.svg rename to src/assets/icons/cgi.svg diff --git a/src/assets/images/check-dark.svg b/src/assets/icons/check-dark.svg similarity index 100% rename from src/assets/images/check-dark.svg rename to src/assets/icons/check-dark.svg diff --git a/src/assets/images/check-orange.svg b/src/assets/icons/check-orange.svg similarity index 100% rename from src/assets/images/check-orange.svg rename to src/assets/icons/check-orange.svg diff --git a/src/assets/images/check-white.svg b/src/assets/icons/check-white.svg similarity index 100% rename from src/assets/images/check-white.svg rename to src/assets/icons/check-white.svg diff --git a/src/assets/images/check.svg b/src/assets/icons/check.svg similarity index 100% rename from src/assets/images/check.svg rename to src/assets/icons/check.svg diff --git a/src/assets/images/coder-broken.svg b/src/assets/icons/coder-broken.svg similarity index 100% rename from src/assets/images/coder-broken.svg rename to src/assets/icons/coder-broken.svg diff --git a/src/assets/images/coder-welcome.svg b/src/assets/icons/coder-welcome.svg similarity index 100% rename from src/assets/images/coder-welcome.svg rename to src/assets/icons/coder-welcome.svg diff --git a/src/assets/images/connect-logo-mono.svg b/src/assets/icons/connect-logo-mono.svg similarity index 100% rename from src/assets/images/connect-logo-mono.svg rename to src/assets/icons/connect-logo-mono.svg diff --git a/src/components/FileList/images/csh.svg b/src/assets/icons/csh.svg similarity index 100% rename from src/components/FileList/images/csh.svg rename to src/assets/icons/csh.svg diff --git a/src/components/FileList/images/css.svg b/src/assets/icons/css.svg similarity index 100% rename from src/components/FileList/images/css.svg rename to src/assets/icons/css.svg diff --git a/src/components/FileList/images/csv.svg b/src/assets/icons/csv.svg similarity index 100% rename from src/components/FileList/images/csv.svg rename to src/assets/icons/csv.svg diff --git a/src/projects/detail/components/FeatureSelector/images/custom-features.svg b/src/assets/icons/custom-features.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/custom-features.svg rename to src/assets/icons/custom-features.svg diff --git a/src/components/FileList/images/default.svg b/src/assets/icons/default.svg similarity index 100% rename from src/components/FileList/images/default.svg rename to src/assets/icons/default.svg diff --git a/src/assets/images/design-16px_code-active.svg b/src/assets/icons/design-16px_code-active.svg similarity index 100% rename from src/assets/images/design-16px_code-active.svg rename to src/assets/icons/design-16px_code-active.svg diff --git a/src/assets/images/design-16px_code.svg b/src/assets/icons/design-16px_code.svg similarity index 100% rename from src/assets/images/design-16px_code.svg rename to src/assets/icons/design-16px_code.svg diff --git a/src/assets/images/desktop.svg b/src/assets/icons/desktop.svg similarity index 100% rename from src/assets/images/desktop.svg rename to src/assets/icons/desktop.svg diff --git a/src/components/FileList/images/dmg.svg b/src/assets/icons/dmg.svg similarity index 100% rename from src/components/FileList/images/dmg.svg rename to src/assets/icons/dmg.svg diff --git a/src/components/FileList/images/doc.svg b/src/assets/icons/doc.svg similarity index 100% rename from src/components/FileList/images/doc.svg rename to src/assets/icons/doc.svg diff --git a/src/components/FileList/images/docx.svg b/src/assets/icons/docx.svg similarity index 100% rename from src/components/FileList/images/docx.svg rename to src/assets/icons/docx.svg diff --git a/src/projects/detail/components/FeatureSelector/images/ecommerce.svg b/src/assets/icons/ecommerce.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/ecommerce.svg rename to src/assets/icons/ecommerce.svg diff --git a/src/components/FileList/images/eps.svg b/src/assets/icons/eps.svg similarity index 100% rename from src/components/FileList/images/eps.svg rename to src/assets/icons/eps.svg diff --git a/src/components/FileList/images/epub.svg b/src/assets/icons/epub.svg similarity index 100% rename from src/components/FileList/images/epub.svg rename to src/assets/icons/epub.svg diff --git a/src/components/FileList/images/exe.svg b/src/assets/icons/exe.svg similarity index 100% rename from src/components/FileList/images/exe.svg rename to src/assets/icons/exe.svg diff --git a/src/assets/images/exit.svg b/src/assets/icons/exit.svg similarity index 100% rename from src/assets/images/exit.svg rename to src/assets/icons/exit.svg diff --git a/src/assets/images/external-link.svg b/src/assets/icons/external-link.svg similarity index 100% rename from src/assets/images/external-link.svg rename to src/assets/icons/external-link.svg diff --git a/src/assets/images/files-16px_single-folded-content.svg b/src/assets/icons/files-16px_single-folded-content.svg similarity index 100% rename from src/assets/images/files-16px_single-folded-content.svg rename to src/assets/icons/files-16px_single-folded-content.svg diff --git a/src/components/FileList/images/flash.svg b/src/assets/icons/flash.svg similarity index 100% rename from src/components/FileList/images/flash.svg rename to src/assets/icons/flash.svg diff --git a/src/components/FileList/images/flv.svg b/src/assets/icons/flv.svg similarity index 100% rename from src/components/FileList/images/flv.svg rename to src/assets/icons/flv.svg diff --git a/src/components/FileList/images/font.svg b/src/assets/icons/font.svg similarity index 100% rename from src/components/FileList/images/font.svg rename to src/assets/icons/font.svg diff --git a/src/projects/detail/components/FeatureSelector/images/general-building-blocks.svg b/src/assets/icons/general-building-blocks.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/general-building-blocks.svg rename to src/assets/icons/general-building-blocks.svg diff --git a/src/components/FileList/images/gif.svg b/src/assets/icons/gif.svg similarity index 100% rename from src/components/FileList/images/gif.svg rename to src/assets/icons/gif.svg diff --git a/src/components/FileList/images/gpx.svg b/src/assets/icons/gpx.svg similarity index 100% rename from src/components/FileList/images/gpx.svg rename to src/assets/icons/gpx.svg diff --git a/src/assets/icons/grid-list-ico.svg b/src/assets/icons/grid-list-ico.svg new file mode 100644 index 000000000..04b7cd61b --- /dev/null +++ b/src/assets/icons/grid-list-ico.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/ground-shadow.svg b/src/assets/icons/ground-shadow.svg similarity index 100% rename from src/assets/images/ground-shadow.svg rename to src/assets/icons/ground-shadow.svg diff --git a/src/components/FileList/images/gzip.svg b/src/assets/icons/gzip.svg similarity index 100% rename from src/components/FileList/images/gzip.svg rename to src/assets/icons/gzip.svg diff --git a/src/projects/detail/components/FeatureSelector/images/help-me.svg b/src/assets/icons/help-me.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/help-me.svg rename to src/assets/icons/help-me.svg diff --git a/src/components/FileList/images/html.svg b/src/assets/icons/html.svg similarity index 100% rename from src/components/FileList/images/html.svg rename to src/assets/icons/html.svg diff --git a/src/assets/images/icon-add-color.svg b/src/assets/icons/icon-add-color.svg similarity index 100% rename from src/assets/images/icon-add-color.svg rename to src/assets/icons/icon-add-color.svg diff --git a/src/assets/icons/icon-arrow-priority-high.svg b/src/assets/icons/icon-arrow-priority-high.svg new file mode 100644 index 000000000..3a0b59a50 --- /dev/null +++ b/src/assets/icons/icon-arrow-priority-high.svg @@ -0,0 +1,4 @@ + + IconArrowPriorityHigh + + \ No newline at end of file diff --git a/src/assets/images/icon-chat-active.svg b/src/assets/icons/icon-chat-active.svg similarity index 100% rename from src/assets/images/icon-chat-active.svg rename to src/assets/icons/icon-chat-active.svg diff --git a/src/assets/images/icon-chat-hover.svg b/src/assets/icons/icon-chat-hover.svg similarity index 100% rename from src/assets/images/icon-chat-hover.svg rename to src/assets/icons/icon-chat-hover.svg diff --git a/src/assets/images/icon-chat.svg b/src/assets/icons/icon-chat.svg similarity index 100% rename from src/assets/images/icon-chat.svg rename to src/assets/icons/icon-chat.svg diff --git a/src/projects/detail/components/FeatureSelector/images/icon-check-solid.svg b/src/assets/icons/icon-check-solid.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/icon-check-solid.svg rename to src/assets/icons/icon-check-solid.svg diff --git a/src/assets/icons/icon-close.svg b/src/assets/icons/icon-close.svg new file mode 100644 index 000000000..f1cd51cfb --- /dev/null +++ b/src/assets/icons/icon-close.svg @@ -0,0 +1,10 @@ + + Fill 75 + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/assets/images/icon-dashboard-active.svg b/src/assets/icons/icon-dashboard-active.svg similarity index 100% rename from src/assets/images/icon-dashboard-active.svg rename to src/assets/icons/icon-dashboard-active.svg diff --git a/src/assets/images/icon-dashboard-hover.svg b/src/assets/icons/icon-dashboard-hover.svg similarity index 100% rename from src/assets/images/icon-dashboard-hover.svg rename to src/assets/icons/icon-dashboard-hover.svg diff --git a/src/assets/images/icon-dashboard.svg b/src/assets/icons/icon-dashboard.svg similarity index 100% rename from src/assets/images/icon-dashboard.svg rename to src/assets/icons/icon-dashboard.svg diff --git a/src/assets/images/icon-direct-arrow.svg b/src/assets/icons/icon-direct-arrow.svg similarity index 100% rename from src/assets/images/icon-direct-arrow.svg rename to src/assets/icons/icon-direct-arrow.svg diff --git a/src/assets/images/icon-dont-know.svg b/src/assets/icons/icon-dont-know.svg similarity index 100% rename from src/assets/images/icon-dont-know.svg rename to src/assets/icons/icon-dont-know.svg diff --git a/src/components/Grid/images/icon-drop-down.svg b/src/assets/icons/icon-drop-down.svg similarity index 100% rename from src/components/Grid/images/icon-drop-down.svg rename to src/assets/icons/icon-drop-down.svg diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg new file mode 100644 index 000000000..49f00e5d3 --- /dev/null +++ b/src/assets/icons/icon-edit.svg @@ -0,0 +1,10 @@ + + Fill 146 + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/assets/images/icon-flat-color.svg b/src/assets/icons/icon-flat-color.svg similarity index 100% rename from src/assets/images/icon-flat-color.svg rename to src/assets/icons/icon-flat-color.svg diff --git a/src/assets/images/icon-hammer-active.svg b/src/assets/icons/icon-hammer-active.svg similarity index 100% rename from src/assets/images/icon-hammer-active.svg rename to src/assets/icons/icon-hammer-active.svg diff --git a/src/assets/images/icon-hammer-hover.svg b/src/assets/icons/icon-hammer-hover.svg similarity index 100% rename from src/assets/images/icon-hammer-hover.svg rename to src/assets/icons/icon-hammer-hover.svg diff --git a/src/assets/images/icon-hammer.svg b/src/assets/icons/icon-hammer.svg similarity index 100% rename from src/assets/images/icon-hammer.svg rename to src/assets/icons/icon-hammer.svg diff --git a/src/assets/icons/icon-leave.svg b/src/assets/icons/icon-leave.svg new file mode 100644 index 000000000..4f0522e7f --- /dev/null +++ b/src/assets/icons/icon-leave.svg @@ -0,0 +1,10 @@ + + exit + Created with Sketch. + + + + + + + diff --git a/src/assets/images/icon-platform-lg.svg b/src/assets/icons/icon-platform-lg.svg similarity index 100% rename from src/assets/images/icon-platform-lg.svg rename to src/assets/icons/icon-platform-lg.svg diff --git a/src/assets/images/icon-platform-md.svg b/src/assets/icons/icon-platform-md.svg similarity index 100% rename from src/assets/images/icon-platform-md.svg rename to src/assets/icons/icon-platform-md.svg diff --git a/src/assets/images/icon-platform-sm.svg b/src/assets/icons/icon-platform-sm.svg similarity index 100% rename from src/assets/images/icon-platform-sm.svg rename to src/assets/icons/icon-platform-sm.svg diff --git a/src/assets/images/icon-question.svg b/src/assets/icons/icon-question.svg similarity index 100% rename from src/assets/images/icon-question.svg rename to src/assets/icons/icon-question.svg diff --git a/src/assets/images/icon-ruler-pencil-active.svg b/src/assets/icons/icon-ruler-pencil-active.svg similarity index 100% rename from src/assets/images/icon-ruler-pencil-active.svg rename to src/assets/icons/icon-ruler-pencil-active.svg diff --git a/src/assets/images/icon-ruler-pencil-hover.svg b/src/assets/icons/icon-ruler-pencil-hover.svg similarity index 100% rename from src/assets/images/icon-ruler-pencil-hover.svg rename to src/assets/icons/icon-ruler-pencil-hover.svg diff --git a/src/assets/images/icon-ruler-pencil.svg b/src/assets/icons/icon-ruler-pencil.svg similarity index 100% rename from src/assets/images/icon-ruler-pencil.svg rename to src/assets/icons/icon-ruler-pencil.svg diff --git a/src/assets/images/icon-sans-serif.svg b/src/assets/icons/icon-sans-serif.svg similarity index 100% rename from src/assets/images/icon-sans-serif.svg rename to src/assets/icons/icon-sans-serif.svg diff --git a/src/assets/icons/icon-save.svg b/src/assets/icons/icon-save.svg new file mode 100644 index 000000000..859f1e0c6 --- /dev/null +++ b/src/assets/icons/icon-save.svg @@ -0,0 +1,10 @@ + + Fill 88 + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/assets/images/icon-serif.svg b/src/assets/icons/icon-serif.svg similarity index 100% rename from src/assets/images/icon-serif.svg rename to src/assets/icons/icon-serif.svg diff --git a/src/assets/images/icon-solid.svg b/src/assets/icons/icon-solid.svg similarity index 100% rename from src/assets/images/icon-solid.svg rename to src/assets/icons/icon-solid.svg diff --git a/src/assets/icons/icon-tc-spec-icon-type-color-home.svg b/src/assets/icons/icon-tc-spec-icon-type-color-home.svg new file mode 100644 index 000000000..4af876c1f --- /dev/null +++ b/src/assets/icons/icon-tc-spec-icon-type-color-home.svg @@ -0,0 +1,8 @@ + + IconTcSpecIconTypeColorHome + + + + + + \ No newline at end of file diff --git a/src/assets/icons/icon-tc-spec-icon-type-glyph-home.svg b/src/assets/icons/icon-tc-spec-icon-type-glyph-home.svg new file mode 100644 index 000000000..dab900d46 --- /dev/null +++ b/src/assets/icons/icon-tc-spec-icon-type-glyph-home.svg @@ -0,0 +1,5 @@ + + IconTcSpecIconTypeGlyphHome + + + \ No newline at end of file diff --git a/src/assets/icons/icon-tc-spec-icon-type-outline-home.svg b/src/assets/icons/icon-tc-spec-icon-type-outline-home.svg new file mode 100644 index 000000000..529646a54 --- /dev/null +++ b/src/assets/icons/icon-tc-spec-icon-type-outline-home.svg @@ -0,0 +1,5 @@ + + IconTcSpecIconTypeOutlineHome + + + \ No newline at end of file diff --git a/src/assets/icons/icon-tc-spec-type-sans-serif.svg b/src/assets/icons/icon-tc-spec-type-sans-serif.svg new file mode 100644 index 000000000..98e4a84c3 --- /dev/null +++ b/src/assets/icons/icon-tc-spec-type-sans-serif.svg @@ -0,0 +1,4 @@ + + IconTcSpecTypeSansSerif + + \ No newline at end of file diff --git a/src/assets/icons/icon-tc-spec-type-serif.svg b/src/assets/icons/icon-tc-spec-type-serif.svg new file mode 100644 index 000000000..6579baae8 --- /dev/null +++ b/src/assets/icons/icon-tc-spec-type-serif.svg @@ -0,0 +1,4 @@ + + IconTcSpecTypeSerif + + \ No newline at end of file diff --git a/src/assets/icons/icon-tech-outline-desktop.svg b/src/assets/icons/icon-tech-outline-desktop.svg new file mode 100644 index 000000000..33d708dca --- /dev/null +++ b/src/assets/icons/icon-tech-outline-desktop.svg @@ -0,0 +1,4 @@ + + IconTechOutlineDesktop + + \ No newline at end of file diff --git a/src/assets/icons/icon-tech-outline-mobile.svg b/src/assets/icons/icon-tech-outline-mobile.svg new file mode 100644 index 000000000..c3d4c04f0 --- /dev/null +++ b/src/assets/icons/icon-tech-outline-mobile.svg @@ -0,0 +1,4 @@ + + IconTechOutlineMobile + + \ No newline at end of file diff --git a/src/assets/icons/icon-tech-outline-tablet.svg b/src/assets/icons/icon-tech-outline-tablet.svg new file mode 100644 index 000000000..9ffca013a --- /dev/null +++ b/src/assets/icons/icon-tech-outline-tablet.svg @@ -0,0 +1,4 @@ + + IconTechOutlineTablet + + \ No newline at end of file diff --git a/src/assets/icons/icon-tech-outline-watch-apple.svg b/src/assets/icons/icon-tech-outline-watch-apple.svg new file mode 100644 index 000000000..edf8fb99d --- /dev/null +++ b/src/assets/icons/icon-tech-outline-watch-apple.svg @@ -0,0 +1,4 @@ + + IconTechOutlineWatchApple + + \ No newline at end of file diff --git a/src/assets/images/icon-test-structured.svg b/src/assets/icons/icon-test-structured.svg similarity index 100% rename from src/assets/images/icon-test-structured.svg rename to src/assets/icons/icon-test-structured.svg diff --git a/src/assets/images/icon-test-unstructured.svg b/src/assets/icons/icon-test-unstructured.svg similarity index 100% rename from src/assets/images/icon-test-unstructured.svg rename to src/assets/icons/icon-test-unstructured.svg diff --git a/src/assets/images/icon-thin-line.svg b/src/assets/icons/icon-thin-line.svg similarity index 100% rename from src/assets/images/icon-thin-line.svg rename to src/assets/icons/icon-thin-line.svg diff --git a/src/assets/icons/icon-trash.svg b/src/assets/icons/icon-trash.svg new file mode 100644 index 000000000..2d7bc330a --- /dev/null +++ b/src/assets/icons/icon-trash.svg @@ -0,0 +1,10 @@ + + Combined Shape + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/icon-ui-bold-add.svg b/src/assets/icons/icon-ui-bold-add.svg new file mode 100644 index 000000000..785bf7a04 --- /dev/null +++ b/src/assets/icons/icon-ui-bold-add.svg @@ -0,0 +1,4 @@ + + IconUIBoldAdd + + \ No newline at end of file diff --git a/src/assets/icons/icon-ui-check-bold.svg b/src/assets/icons/icon-ui-check-bold.svg new file mode 100644 index 000000000..cd4c02e45 --- /dev/null +++ b/src/assets/icons/icon-ui-check-bold.svg @@ -0,0 +1,4 @@ + + IconUICheckBold + + \ No newline at end of file diff --git a/src/assets/icons/icon-ui-pencil.svg b/src/assets/icons/icon-ui-pencil.svg new file mode 100644 index 000000000..dbd563ea8 --- /dev/null +++ b/src/assets/icons/icon-ui-pencil.svg @@ -0,0 +1,4 @@ + + IconUIPencil + + \ No newline at end of file diff --git a/src/assets/icons/icon-ui-trash-simple.svg b/src/assets/icons/icon-ui-trash-simple.svg new file mode 100644 index 000000000..a71d98bb5 --- /dev/null +++ b/src/assets/icons/icon-ui-trash-simple.svg @@ -0,0 +1,4 @@ + + IconUITrashSimple + + \ No newline at end of file diff --git a/src/assets/icons/icon-users-delete.svg b/src/assets/icons/icon-users-delete.svg new file mode 100644 index 000000000..a34e0964c --- /dev/null +++ b/src/assets/icons/icon-users-delete.svg @@ -0,0 +1,5 @@ + + IconUsersDelete + + + \ No newline at end of file diff --git a/src/assets/icons/icon-x-mark.svg b/src/assets/icons/icon-x-mark.svg new file mode 100644 index 000000000..8c8b9621d --- /dev/null +++ b/src/assets/icons/icon-x-mark.svg @@ -0,0 +1,10 @@ + + x-mark + X Mark + + + + + + + \ No newline at end of file diff --git a/src/components/FileList/images/ics.svg b/src/assets/icons/ics.svg similarity index 100% rename from src/components/FileList/images/ics.svg rename to src/assets/icons/ics.svg diff --git a/src/components/FileList/images/iso.svg b/src/assets/icons/iso.svg similarity index 100% rename from src/components/FileList/images/iso.svg rename to src/assets/icons/iso.svg diff --git a/src/components/FileList/images/jar.svg b/src/assets/icons/jar.svg similarity index 100% rename from src/components/FileList/images/jar.svg rename to src/assets/icons/jar.svg diff --git a/src/components/FileList/images/java.svg b/src/assets/icons/java.svg similarity index 100% rename from src/components/FileList/images/java.svg rename to src/assets/icons/java.svg diff --git a/src/components/FileList/images/jpg.svg b/src/assets/icons/jpg.svg similarity index 100% rename from src/components/FileList/images/jpg.svg rename to src/assets/icons/jpg.svg diff --git a/src/components/FileList/images/js.svg b/src/assets/icons/js.svg similarity index 100% rename from src/components/FileList/images/js.svg rename to src/assets/icons/js.svg diff --git a/src/components/FileList/images/jsp.svg b/src/assets/icons/jsp.svg similarity index 100% rename from src/components/FileList/images/jsp.svg rename to src/assets/icons/jsp.svg diff --git a/src/projects/detail/components/FeatureSelector/images/location.svg b/src/assets/icons/location.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/location.svg rename to src/assets/icons/location.svg diff --git a/src/components/FileList/images/log.svg b/src/assets/icons/log.svg similarity index 100% rename from src/components/FileList/images/log.svg rename to src/assets/icons/log.svg diff --git a/src/projects/detail/components/FeatureSelector/images/login-reg.svg b/src/assets/icons/login-reg.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/login-reg.svg rename to src/assets/icons/login-reg.svg diff --git a/src/assets/images/logo-cn-web.svg b/src/assets/icons/logo-cn-web.svg similarity index 100% rename from src/assets/images/logo-cn-web.svg rename to src/assets/icons/logo-cn-web.svg diff --git a/src/components/FileList/images/max.svg b/src/assets/icons/max.svg similarity index 100% rename from src/components/FileList/images/max.svg rename to src/assets/icons/max.svg diff --git a/src/components/FileList/images/md.svg b/src/assets/icons/md.svg similarity index 100% rename from src/components/FileList/images/md.svg rename to src/assets/icons/md.svg diff --git a/src/assets/images/media-16px-1_image-02-active.svg b/src/assets/icons/media-16px-1_image-02-active.svg similarity index 100% rename from src/assets/images/media-16px-1_image-02-active.svg rename to src/assets/icons/media-16px-1_image-02-active.svg diff --git a/src/assets/images/media-16px-1_image-02.svg b/src/assets/icons/media-16px-1_image-02.svg similarity index 100% rename from src/assets/images/media-16px-1_image-02.svg rename to src/assets/icons/media-16px-1_image-02.svg diff --git a/src/components/FileList/images/mkv.svg b/src/assets/icons/mkv.svg similarity index 100% rename from src/components/FileList/images/mkv.svg rename to src/assets/icons/mkv.svg diff --git a/src/components/FileList/images/mov.svg b/src/assets/icons/mov.svg similarity index 100% rename from src/components/FileList/images/mov.svg rename to src/assets/icons/mov.svg diff --git a/src/components/FileList/images/mp3.svg b/src/assets/icons/mp3.svg similarity index 100% rename from src/components/FileList/images/mp3.svg rename to src/assets/icons/mp3.svg diff --git a/src/components/FileList/images/mp4.svg b/src/assets/icons/mp4.svg similarity index 100% rename from src/components/FileList/images/mp4.svg rename to src/assets/icons/mp4.svg diff --git a/src/components/FileList/images/mpg.svg b/src/assets/icons/mpg.svg similarity index 100% rename from src/components/FileList/images/mpg.svg rename to src/assets/icons/mpg.svg diff --git a/src/assets/images/notification-member-added.svg b/src/assets/icons/notification-member-added.svg similarity index 100% rename from src/assets/images/notification-member-added.svg rename to src/assets/icons/notification-member-added.svg diff --git a/src/assets/images/notification-new-posts.svg b/src/assets/icons/notification-new-posts.svg similarity index 100% rename from src/assets/images/notification-new-posts.svg rename to src/assets/icons/notification-new-posts.svg diff --git a/src/assets/images/notification-new-project.svg b/src/assets/icons/notification-new-project.svg similarity index 100% rename from src/assets/images/notification-new-project.svg rename to src/assets/icons/notification-new-project.svg diff --git a/src/assets/images/notification-review-pending.svg b/src/assets/icons/notification-review-pending.svg similarity index 100% rename from src/assets/images/notification-review-pending.svg rename to src/assets/icons/notification-review-pending.svg diff --git a/src/assets/images/notification-updates.svg b/src/assets/icons/notification-updates.svg similarity index 100% rename from src/assets/images/notification-updates.svg rename to src/assets/icons/notification-updates.svg diff --git a/src/assets/images/notification-warning.svg b/src/assets/icons/notification-warning.svg similarity index 100% rename from src/assets/images/notification-warning.svg rename to src/assets/icons/notification-warning.svg diff --git a/src/projects/detail/components/FeatureSelector/images/notifications.svg b/src/assets/icons/notifications.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/notifications.svg rename to src/assets/icons/notifications.svg diff --git a/src/components/FileList/images/obj.svg b/src/assets/icons/obj.svg similarity index 100% rename from src/components/FileList/images/obj.svg rename to src/assets/icons/obj.svg diff --git a/src/components/FileList/images/otf.svg b/src/assets/icons/otf.svg similarity index 100% rename from src/components/FileList/images/otf.svg rename to src/assets/icons/otf.svg diff --git a/src/projects/detail/components/FeatureSelector/images/payments.svg b/src/assets/icons/payments.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/payments.svg rename to src/assets/icons/payments.svg diff --git a/src/components/FileList/images/pdf.svg b/src/assets/icons/pdf.svg similarity index 100% rename from src/components/FileList/images/pdf.svg rename to src/assets/icons/pdf.svg diff --git a/src/assets/images/phone.svg b/src/assets/icons/phone.svg similarity index 100% rename from src/assets/images/phone.svg rename to src/assets/icons/phone.svg diff --git a/src/components/FileList/images/php.svg b/src/assets/icons/php.svg similarity index 100% rename from src/components/FileList/images/php.svg rename to src/assets/icons/php.svg diff --git a/src/components/FileList/images/png.svg b/src/assets/icons/png.svg similarity index 100% rename from src/components/FileList/images/png.svg rename to src/assets/icons/png.svg diff --git a/src/assets/images/pointer-new-project.svg b/src/assets/icons/pointer-new-project.svg similarity index 100% rename from src/assets/images/pointer-new-project.svg rename to src/assets/icons/pointer-new-project.svg diff --git a/src/components/FileList/images/pptx.svg b/src/assets/icons/pptx.svg similarity index 100% rename from src/components/FileList/images/pptx.svg rename to src/assets/icons/pptx.svg diff --git a/src/assets/images/product-analytics-algorithm-optimization.svg b/src/assets/icons/product-analytics-algorithm-optimization.svg similarity index 100% rename from src/assets/images/product-analytics-algorithm-optimization.svg rename to src/assets/icons/product-analytics-algorithm-optimization.svg diff --git a/src/assets/images/product-analytics-computer-vision.svg b/src/assets/icons/product-analytics-computer-vision.svg similarity index 100% rename from src/assets/images/product-analytics-computer-vision.svg rename to src/assets/icons/product-analytics-computer-vision.svg diff --git a/src/assets/images/product-analytics-data-exploration.svg b/src/assets/icons/product-analytics-data-exploration.svg similarity index 100% rename from src/assets/images/product-analytics-data-exploration.svg rename to src/assets/icons/product-analytics-data-exploration.svg diff --git a/src/assets/images/product-analytics-predictive-analytics.svg b/src/assets/icons/product-analytics-predictive-analytics.svg similarity index 100% rename from src/assets/images/product-analytics-predictive-analytics.svg rename to src/assets/icons/product-analytics-predictive-analytics.svg diff --git a/src/assets/images/product-app-app.svg b/src/assets/icons/product-app-app.svg similarity index 100% rename from src/assets/images/product-app-app.svg rename to src/assets/icons/product-app-app.svg diff --git a/src/assets/images/product-cat-analytics.svg b/src/assets/icons/product-cat-analytics.svg similarity index 100% rename from src/assets/images/product-cat-analytics.svg rename to src/assets/icons/product-cat-analytics.svg diff --git a/src/assets/images/product-cat-app.svg b/src/assets/icons/product-cat-app.svg similarity index 100% rename from src/assets/images/product-cat-app.svg rename to src/assets/icons/product-cat-app.svg diff --git a/src/assets/images/product-cat-chatbot.svg b/src/assets/icons/product-cat-chatbot.svg similarity index 100% rename from src/assets/images/product-cat-chatbot.svg rename to src/assets/icons/product-cat-chatbot.svg diff --git a/src/assets/images/product-cat-design.svg b/src/assets/icons/product-cat-design.svg similarity index 100% rename from src/assets/images/product-cat-design.svg rename to src/assets/icons/product-cat-design.svg diff --git a/src/assets/images/product-cat-development.svg b/src/assets/icons/product-cat-development.svg similarity index 100% rename from src/assets/images/product-cat-development.svg rename to src/assets/icons/product-cat-development.svg diff --git a/src/assets/images/product-cat-qa.svg b/src/assets/icons/product-cat-qa.svg similarity index 100% rename from src/assets/images/product-cat-qa.svg rename to src/assets/icons/product-cat-qa.svg diff --git a/src/assets/images/product-cat-website.svg b/src/assets/icons/product-cat-website.svg similarity index 100% rename from src/assets/images/product-cat-website.svg rename to src/assets/icons/product-cat-website.svg diff --git a/src/assets/images/product-chatbot-chatbot.svg b/src/assets/icons/product-chatbot-chatbot.svg similarity index 100% rename from src/assets/images/product-chatbot-chatbot.svg rename to src/assets/icons/product-chatbot-chatbot.svg diff --git a/src/assets/images/product-chatbot-watson.svg b/src/assets/icons/product-chatbot-watson.svg similarity index 100% rename from src/assets/images/product-chatbot-watson.svg rename to src/assets/icons/product-chatbot-watson.svg diff --git a/src/assets/images/product-design-app-visual.svg b/src/assets/icons/product-design-app-visual.svg similarity index 100% rename from src/assets/images/product-design-app-visual.svg rename to src/assets/icons/product-design-app-visual.svg diff --git a/src/assets/images/product-design-infographic.svg b/src/assets/icons/product-design-infographic.svg similarity index 100% rename from src/assets/images/product-design-infographic.svg rename to src/assets/icons/product-design-infographic.svg diff --git a/src/assets/images/product-design-other.svg b/src/assets/icons/product-design-other.svg similarity index 100% rename from src/assets/images/product-design-other.svg rename to src/assets/icons/product-design-other.svg diff --git a/src/assets/images/product-design-wireframes.svg b/src/assets/icons/product-design-wireframes.svg similarity index 100% rename from src/assets/images/product-design-wireframes.svg rename to src/assets/icons/product-design-wireframes.svg diff --git a/src/assets/images/product-dev-front-end-dev.svg b/src/assets/icons/product-dev-front-end-dev.svg similarity index 100% rename from src/assets/images/product-dev-front-end-dev.svg rename to src/assets/icons/product-dev-front-end-dev.svg diff --git a/src/assets/images/product-dev-integration.svg b/src/assets/icons/product-dev-integration.svg similarity index 100% rename from src/assets/images/product-dev-integration.svg rename to src/assets/icons/product-dev-integration.svg diff --git a/src/assets/images/product-dev-other.svg b/src/assets/icons/product-dev-other.svg similarity index 100% rename from src/assets/images/product-dev-other.svg rename to src/assets/icons/product-dev-other.svg diff --git a/src/assets/images/product-dev-prototype.svg b/src/assets/icons/product-dev-prototype.svg similarity index 100% rename from src/assets/images/product-dev-prototype.svg rename to src/assets/icons/product-dev-prototype.svg diff --git a/src/assets/images/product-other-design.svg b/src/assets/icons/product-other-design.svg similarity index 100% rename from src/assets/images/product-other-design.svg rename to src/assets/icons/product-other-design.svg diff --git a/src/assets/images/product-qa-consulting.svg b/src/assets/icons/product-qa-consulting.svg similarity index 100% rename from src/assets/images/product-qa-consulting.svg rename to src/assets/icons/product-qa-consulting.svg diff --git a/src/assets/images/product-qa-crowd-testing.svg b/src/assets/icons/product-qa-crowd-testing.svg similarity index 100% rename from src/assets/images/product-qa-crowd-testing.svg rename to src/assets/icons/product-qa-crowd-testing.svg diff --git a/src/assets/images/product-qa-digital-accessability.svg b/src/assets/icons/product-qa-digital-accessability.svg similarity index 100% rename from src/assets/images/product-qa-digital-accessability.svg rename to src/assets/icons/product-qa-digital-accessability.svg diff --git a/src/assets/images/product-qa-health-check.svg b/src/assets/icons/product-qa-health-check.svg similarity index 100% rename from src/assets/images/product-qa-health-check.svg rename to src/assets/icons/product-qa-health-check.svg diff --git a/src/assets/images/product-qa-mobility-testing.svg b/src/assets/icons/product-qa-mobility-testing.svg similarity index 100% rename from src/assets/images/product-qa-mobility-testing.svg rename to src/assets/icons/product-qa-mobility-testing.svg diff --git a/src/assets/images/product-qa-os-automation.svg b/src/assets/icons/product-qa-os-automation.svg similarity index 100% rename from src/assets/images/product-qa-os-automation.svg rename to src/assets/icons/product-qa-os-automation.svg diff --git a/src/assets/images/product-qa-website-performance.svg b/src/assets/icons/product-qa-website-performance.svg similarity index 100% rename from src/assets/images/product-qa-website-performance.svg rename to src/assets/icons/product-qa-website-performance.svg diff --git a/src/assets/images/product-website-website.svg b/src/assets/icons/product-website-website.svg similarity index 100% rename from src/assets/images/product-website-website.svg rename to src/assets/icons/product-website-website.svg diff --git a/src/assets/images/promote.svg b/src/assets/icons/promote.svg similarity index 100% rename from src/assets/images/promote.svg rename to src/assets/icons/promote.svg diff --git a/src/assets/images/ps-active.svg b/src/assets/icons/ps-active.svg similarity index 100% rename from src/assets/images/ps-active.svg rename to src/assets/icons/ps-active.svg diff --git a/src/assets/images/ps-cancelled.svg b/src/assets/icons/ps-cancelled.svg similarity index 100% rename from src/assets/images/ps-cancelled.svg rename to src/assets/icons/ps-cancelled.svg diff --git a/src/assets/images/ps-completed.svg b/src/assets/icons/ps-completed.svg similarity index 100% rename from src/assets/images/ps-completed.svg rename to src/assets/icons/ps-completed.svg diff --git a/src/assets/images/ps-draft.svg b/src/assets/icons/ps-draft.svg similarity index 100% rename from src/assets/images/ps-draft.svg rename to src/assets/icons/ps-draft.svg diff --git a/src/assets/images/ps-in_review.svg b/src/assets/icons/ps-in_review.svg similarity index 100% rename from src/assets/images/ps-in_review.svg rename to src/assets/icons/ps-in_review.svg diff --git a/src/assets/images/ps-paused.svg b/src/assets/icons/ps-paused.svg similarity index 100% rename from src/assets/images/ps-paused.svg rename to src/assets/icons/ps-paused.svg diff --git a/src/assets/images/ps-reviewed.svg b/src/assets/icons/ps-reviewed.svg similarity index 100% rename from src/assets/images/ps-reviewed.svg rename to src/assets/icons/ps-reviewed.svg diff --git a/src/components/FileList/images/psd.svg b/src/assets/icons/psd.svg similarity index 100% rename from src/components/FileList/images/psd.svg rename to src/assets/icons/psd.svg diff --git a/src/components/FileList/images/py.svg b/src/assets/icons/py.svg similarity index 100% rename from src/components/FileList/images/py.svg rename to src/assets/icons/py.svg diff --git a/src/components/FileList/images/rar.svg b/src/assets/icons/rar.svg similarity index 100% rename from src/components/FileList/images/rar.svg rename to src/assets/icons/rar.svg diff --git a/src/components/FileList/images/raw.svg b/src/assets/icons/raw.svg similarity index 100% rename from src/components/FileList/images/raw.svg rename to src/assets/icons/raw.svg diff --git a/src/components/FileList/images/rb.svg b/src/assets/icons/rb.svg similarity index 100% rename from src/components/FileList/images/rb.svg rename to src/assets/icons/rb.svg diff --git a/src/components/FileList/images/rss.svg b/src/assets/icons/rss.svg similarity index 100% rename from src/components/FileList/images/rss.svg rename to src/assets/icons/rss.svg diff --git a/src/components/FileList/images/rtf.svg b/src/assets/icons/rtf.svg similarity index 100% rename from src/components/FileList/images/rtf.svg rename to src/assets/icons/rtf.svg diff --git a/src/projects/detail/components/FeatureSelector/images/security-minimal.svg b/src/assets/icons/security-minimal.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/security-minimal.svg rename to src/assets/icons/security-minimal.svg diff --git a/src/assets/icons/settings-icon-mail.svg b/src/assets/icons/settings-icon-mail.svg new file mode 100644 index 000000000..54ee7b0e5 --- /dev/null +++ b/src/assets/icons/settings-icon-mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/settings-icon-web.svg b/src/assets/icons/settings-icon-web.svg new file mode 100644 index 000000000..464a860aa --- /dev/null +++ b/src/assets/icons/settings-icon-web.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/FileList/images/sketch.svg b/src/assets/icons/sketch.svg similarity index 100% rename from src/components/FileList/images/sketch.svg rename to src/assets/icons/sketch.svg diff --git a/src/projects/detail/components/FeatureSelector/images/social.svg b/src/assets/icons/social.svg similarity index 100% rename from src/projects/detail/components/FeatureSelector/images/social.svg rename to src/assets/icons/social.svg diff --git a/src/components/FileList/images/sql.svg b/src/assets/icons/sql.svg similarity index 100% rename from src/components/FileList/images/sql.svg rename to src/assets/icons/sql.svg diff --git a/src/components/FileList/images/srt.svg b/src/assets/icons/srt.svg similarity index 100% rename from src/components/FileList/images/srt.svg rename to src/assets/icons/srt.svg diff --git a/src/components/Grid/images/status-active.svg b/src/assets/icons/status-active.svg similarity index 100% rename from src/components/Grid/images/status-active.svg rename to src/assets/icons/status-active.svg diff --git a/src/components/Grid/images/status-done.svg b/src/assets/icons/status-done.svg similarity index 100% rename from src/components/Grid/images/status-done.svg rename to src/assets/icons/status-done.svg diff --git a/src/components/Grid/images/status-draft.svg b/src/assets/icons/status-draft.svg similarity index 100% rename from src/components/Grid/images/status-draft.svg rename to src/assets/icons/status-draft.svg diff --git a/src/components/Grid/images/status-error.svg b/src/assets/icons/status-error.svg similarity index 100% rename from src/components/Grid/images/status-error.svg rename to src/assets/icons/status-error.svg diff --git a/src/assets/icons/status-ico.svg b/src/assets/icons/status-ico.svg new file mode 100644 index 000000000..0834ad5b7 --- /dev/null +++ b/src/assets/icons/status-ico.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/FileList/images/svg.svg b/src/assets/icons/svg.svg similarity index 100% rename from src/components/FileList/images/svg.svg rename to src/assets/icons/svg.svg diff --git a/src/assets/images/tablet.svg b/src/assets/icons/tablet.svg similarity index 100% rename from src/assets/images/tablet.svg rename to src/assets/icons/tablet.svg diff --git a/src/assets/images/tc-carret-down.svg b/src/assets/icons/tc-carret-down.svg similarity index 100% rename from src/assets/images/tc-carret-down.svg rename to src/assets/icons/tc-carret-down.svg diff --git a/src/assets/images/tc-carret-up.svg b/src/assets/icons/tc-carret-up.svg similarity index 100% rename from src/assets/images/tc-carret-up.svg rename to src/assets/icons/tc-carret-up.svg diff --git a/src/assets/images/tc-text-16-bold-active.svg b/src/assets/icons/tc-text-16-bold-active.svg similarity index 100% rename from src/assets/images/tc-text-16-bold-active.svg rename to src/assets/icons/tc-text-16-bold-active.svg diff --git a/src/assets/images/tc-text-16-bold.svg b/src/assets/icons/tc-text-16-bold.svg similarity index 100% rename from src/assets/images/tc-text-16-bold.svg rename to src/assets/icons/tc-text-16-bold.svg diff --git a/src/assets/images/tc-text-16-italic-active.svg b/src/assets/icons/tc-text-16-italic-active.svg similarity index 100% rename from src/assets/images/tc-text-16-italic-active.svg rename to src/assets/icons/tc-text-16-italic-active.svg diff --git a/src/assets/images/tc-text-16-italic.svg b/src/assets/icons/tc-text-16-italic.svg similarity index 100% rename from src/assets/images/tc-text-16-italic.svg rename to src/assets/icons/tc-text-16-italic.svg diff --git a/src/assets/images/tc-text-16-underline-active.svg b/src/assets/icons/tc-text-16-underline-active.svg similarity index 100% rename from src/assets/images/tc-text-16-underline-active.svg rename to src/assets/icons/tc-text-16-underline-active.svg diff --git a/src/assets/images/tc-text-16-underline.svg b/src/assets/icons/tc-text-16-underline.svg similarity index 100% rename from src/assets/images/tc-text-16-underline.svg rename to src/assets/icons/tc-text-16-underline.svg diff --git a/src/assets/images/tech-32-outline_desktop.svg b/src/assets/icons/tech-32-outline_desktop.svg similarity index 100% rename from src/assets/images/tech-32-outline_desktop.svg rename to src/assets/icons/tech-32-outline_desktop.svg diff --git a/src/assets/images/tech-32-outline_mobile.svg b/src/assets/icons/tech-32-outline_mobile.svg similarity index 100% rename from src/assets/images/tech-32-outline_mobile.svg rename to src/assets/icons/tech-32-outline_mobile.svg diff --git a/src/assets/images/tech-32-outline_tablet-button.svg b/src/assets/icons/tech-32-outline_tablet-button.svg similarity index 100% rename from src/assets/images/tech-32-outline_tablet-button.svg rename to src/assets/icons/tech-32-outline_tablet-button.svg diff --git a/src/assets/images/tech-32-outline_watch-circle.svg b/src/assets/icons/tech-32-outline_watch-circle.svg similarity index 100% rename from src/assets/images/tech-32-outline_watch-circle.svg rename to src/assets/icons/tech-32-outline_watch-circle.svg diff --git a/src/assets/images/tech-32-outline_watch-time.svg b/src/assets/icons/tech-32-outline_watch-time.svg similarity index 100% rename from src/assets/images/tech-32-outline_watch-time.svg rename to src/assets/icons/tech-32-outline_watch-time.svg diff --git a/src/assets/images/tech-32px-outline-work-project.svg b/src/assets/icons/tech-32px-outline-work-project.svg similarity index 100% rename from src/assets/images/tech-32px-outline-work-project.svg rename to src/assets/icons/tech-32px-outline-work-project.svg diff --git a/src/assets/images/tech-48px-outline_desktop.svg b/src/assets/icons/tech-48px-outline_desktop.svg similarity index 100% rename from src/assets/images/tech-48px-outline_desktop.svg rename to src/assets/icons/tech-48px-outline_desktop.svg diff --git a/src/assets/images/tech-48px-outline_mobile.svg b/src/assets/icons/tech-48px-outline_mobile.svg similarity index 100% rename from src/assets/images/tech-48px-outline_mobile.svg rename to src/assets/icons/tech-48px-outline_mobile.svg diff --git a/src/assets/images/tech-48px-outline_tablet-button.svg b/src/assets/icons/tech-48px-outline_tablet-button.svg similarity index 100% rename from src/assets/images/tech-48px-outline_tablet-button.svg rename to src/assets/icons/tech-48px-outline_tablet-button.svg diff --git a/src/assets/images/tech-48px-outline_watch-circle.svg b/src/assets/icons/tech-48px-outline_watch-circle.svg similarity index 100% rename from src/assets/images/tech-48px-outline_watch-circle.svg rename to src/assets/icons/tech-48px-outline_watch-circle.svg diff --git a/src/assets/images/tech-48px-outline_watch-time.svg b/src/assets/icons/tech-48px-outline_watch-time.svg similarity index 100% rename from src/assets/images/tech-48px-outline_watch-time.svg rename to src/assets/icons/tech-48px-outline_watch-time.svg diff --git a/src/assets/images/text-16px_list-bullet-active.svg b/src/assets/icons/text-16px_list-bullet-active.svg similarity index 100% rename from src/assets/images/text-16px_list-bullet-active.svg rename to src/assets/icons/text-16px_list-bullet-active.svg diff --git a/src/assets/images/text-16px_list-bullet.svg b/src/assets/icons/text-16px_list-bullet.svg similarity index 100% rename from src/assets/images/text-16px_list-bullet.svg rename to src/assets/icons/text-16px_list-bullet.svg diff --git a/src/assets/images/text-16px_list-numbers-active.svg b/src/assets/icons/text-16px_list-numbers-active.svg similarity index 100% rename from src/assets/images/text-16px_list-numbers-active.svg rename to src/assets/icons/text-16px_list-numbers-active.svg diff --git a/src/assets/images/text-16px_list-numbers.svg b/src/assets/icons/text-16px_list-numbers.svg similarity index 100% rename from src/assets/images/text-16px_list-numbers.svg rename to src/assets/icons/text-16px_list-numbers.svg diff --git a/src/assets/images/text-16px_quote-active.svg b/src/assets/icons/text-16px_quote-active.svg similarity index 100% rename from src/assets/images/text-16px_quote-active.svg rename to src/assets/icons/text-16px_quote-active.svg diff --git a/src/assets/images/text-16px_quote.svg b/src/assets/icons/text-16px_quote.svg similarity index 100% rename from src/assets/images/text-16px_quote.svg rename to src/assets/icons/text-16px_quote.svg diff --git a/src/components/FileList/images/tif.svg b/src/assets/icons/tif.svg similarity index 100% rename from src/components/FileList/images/tif.svg rename to src/assets/icons/tif.svg diff --git a/src/components/FileList/images/tiff.svg b/src/assets/icons/tiff.svg similarity index 100% rename from src/components/FileList/images/tiff.svg rename to src/assets/icons/tiff.svg diff --git a/src/components/FileList/images/ttf.svg b/src/assets/icons/ttf.svg similarity index 100% rename from src/components/FileList/images/ttf.svg rename to src/assets/icons/ttf.svg diff --git a/src/components/FileList/images/txt.svg b/src/assets/icons/txt.svg similarity index 100% rename from src/components/FileList/images/txt.svg rename to src/assets/icons/txt.svg diff --git a/src/assets/images/ui-16px-1_attach-86.svg b/src/assets/icons/ui-16px-1_attach-86.svg similarity index 100% rename from src/assets/images/ui-16px-1_attach-86.svg rename to src/assets/icons/ui-16px-1_attach-86.svg diff --git a/src/assets/images/ui-16px-1_bold-add.svg b/src/assets/icons/ui-16px-1_bold-add.svg similarity index 100% rename from src/assets/images/ui-16px-1_bold-add.svg rename to src/assets/icons/ui-16px-1_bold-add.svg diff --git a/src/assets/images/ui-16px-1_bold-delete.svg b/src/assets/icons/ui-16px-1_bold-delete.svg similarity index 100% rename from src/assets/images/ui-16px-1_bold-delete.svg rename to src/assets/icons/ui-16px-1_bold-delete.svg diff --git a/src/assets/images/ui-16px-1_bold-remove.svg b/src/assets/icons/ui-16px-1_bold-remove.svg similarity index 100% rename from src/assets/images/ui-16px-1_bold-remove.svg rename to src/assets/icons/ui-16px-1_bold-remove.svg diff --git a/src/assets/images/ui-16px-1_check-bold.svg b/src/assets/icons/ui-16px-1_check-bold.svg similarity index 100% rename from src/assets/images/ui-16px-1_check-bold.svg rename to src/assets/icons/ui-16px-1_check-bold.svg diff --git a/src/assets/images/ui-16px-1_check-simple.svg b/src/assets/icons/ui-16px-1_check-simple.svg similarity index 100% rename from src/assets/images/ui-16px-1_check-simple.svg rename to src/assets/icons/ui-16px-1_check-simple.svg diff --git a/src/assets/images/ui-16px-1_edit-73.svg b/src/assets/icons/ui-16px-1_edit-73.svg similarity index 100% rename from src/assets/images/ui-16px-1_edit-73.svg rename to src/assets/icons/ui-16px-1_edit-73.svg diff --git a/src/assets/images/ui-16px-1_pencil.svg b/src/assets/icons/ui-16px-1_pencil.svg similarity index 100% rename from src/assets/images/ui-16px-1_pencil.svg rename to src/assets/icons/ui-16px-1_pencil.svg diff --git a/src/assets/images/ui-16px-1_settings-gear-64.svg b/src/assets/icons/ui-16px-1_settings-gear-64.svg similarity index 100% rename from src/assets/images/ui-16px-1_settings-gear-64.svg rename to src/assets/icons/ui-16px-1_settings-gear-64.svg diff --git a/src/assets/images/ui-16px-1_trash-simple.svg b/src/assets/icons/ui-16px-1_trash-simple.svg similarity index 100% rename from src/assets/images/ui-16px-1_trash-simple.svg rename to src/assets/icons/ui-16px-1_trash-simple.svg diff --git a/src/assets/images/ui-16px-1_zoom.svg b/src/assets/icons/ui-16px-1_zoom.svg similarity index 100% rename from src/assets/images/ui-16px-1_zoom.svg rename to src/assets/icons/ui-16px-1_zoom.svg diff --git a/src/assets/images/ui-16px-2_chat.svg b/src/assets/icons/ui-16px-2_chat.svg similarity index 100% rename from src/assets/images/ui-16px-2_chat.svg rename to src/assets/icons/ui-16px-2_chat.svg diff --git a/src/assets/images/ui-16px-2_grid-45-gray.svg b/src/assets/icons/ui-16px-2_grid-45-gray.svg similarity index 100% rename from src/assets/images/ui-16px-2_grid-45-gray.svg rename to src/assets/icons/ui-16px-2_grid-45-gray.svg diff --git a/src/assets/images/ui-16px-2_grid-45.svg b/src/assets/icons/ui-16px-2_grid-45.svg similarity index 100% rename from src/assets/images/ui-16px-2_grid-45.svg rename to src/assets/icons/ui-16px-2_grid-45.svg diff --git a/src/assets/images/ui-16px-2_link-69.svg b/src/assets/icons/ui-16px-2_link-69.svg similarity index 100% rename from src/assets/images/ui-16px-2_link-69.svg rename to src/assets/icons/ui-16px-2_link-69.svg diff --git a/src/assets/images/ui-16px-e-2_calendar-add.svg b/src/assets/icons/ui-16px-e-2_calendar-add.svg similarity index 100% rename from src/assets/images/ui-16px-e-2_calendar-add.svg rename to src/assets/icons/ui-16px-e-2_calendar-add.svg diff --git a/src/assets/images/ui-16px-e_round-e-alert.svg b/src/assets/icons/ui-16px-e_round-e-alert.svg similarity index 100% rename from src/assets/images/ui-16px-e_round-e-alert.svg rename to src/assets/icons/ui-16px-e_round-e-alert.svg diff --git a/src/assets/images/ui-16px-e_round-e-help.svg b/src/assets/icons/ui-16px-e_round-e-help.svg similarity index 100% rename from src/assets/images/ui-16px-e_round-e-help.svg rename to src/assets/icons/ui-16px-e_round-e-help.svg diff --git a/src/assets/images/ui-16px-e_round-e-info.svg b/src/assets/icons/ui-16px-e_round-e-info.svg similarity index 100% rename from src/assets/images/ui-16px-e_round-e-info.svg rename to src/assets/icons/ui-16px-e_round-e-info.svg diff --git a/src/assets/images/ui-9px-1_check-orange.svg b/src/assets/icons/ui-9px-1_check-orange.svg similarity index 100% rename from src/assets/images/ui-9px-1_check-orange.svg rename to src/assets/icons/ui-9px-1_check-orange.svg diff --git a/src/assets/images/ui-bell.svg b/src/assets/icons/ui-bell.svg similarity index 100% rename from src/assets/images/ui-bell.svg rename to src/assets/icons/ui-bell.svg diff --git a/src/assets/icons/ui-filters.svg b/src/assets/icons/ui-filters.svg new file mode 100644 index 000000000..b0e107dc0 --- /dev/null +++ b/src/assets/icons/ui-filters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/user-add.svg b/src/assets/icons/user-add.svg similarity index 100% rename from src/assets/images/user-add.svg rename to src/assets/icons/user-add.svg diff --git a/src/assets/images/user-remove.svg b/src/assets/icons/user-remove.svg similarity index 100% rename from src/assets/images/user-remove.svg rename to src/assets/icons/user-remove.svg diff --git a/src/assets/images/username-icon.svg b/src/assets/icons/username-icon.svg similarity index 100% rename from src/assets/images/username-icon.svg rename to src/assets/icons/username-icon.svg diff --git a/src/assets/images/users-16px_add-27.svg b/src/assets/icons/users-16px_add-27.svg similarity index 100% rename from src/assets/images/users-16px_add-27.svg rename to src/assets/icons/users-16px_add-27.svg diff --git a/src/assets/images/users-16px_delete-28.svg b/src/assets/icons/users-16px_delete-28.svg similarity index 100% rename from src/assets/images/users-16px_delete-28.svg rename to src/assets/icons/users-16px_delete-28.svg diff --git a/src/assets/images/users-16px_multiple-11.svg b/src/assets/icons/users-16px_multiple-11.svg similarity index 100% rename from src/assets/images/users-16px_multiple-11.svg rename to src/assets/icons/users-16px_multiple-11.svg diff --git a/src/assets/images/users-16px_single-01.svg b/src/assets/icons/users-16px_single-01.svg similarity index 100% rename from src/assets/images/users-16px_single-01.svg rename to src/assets/icons/users-16px_single-01.svg diff --git a/src/assets/images/watch-android.svg b/src/assets/icons/watch-android.svg similarity index 100% rename from src/assets/images/watch-android.svg rename to src/assets/icons/watch-android.svg diff --git a/src/assets/images/watch-apple.svg b/src/assets/icons/watch-apple.svg similarity index 100% rename from src/assets/images/watch-apple.svg rename to src/assets/icons/watch-apple.svg diff --git a/src/components/FileList/images/wav.svg b/src/assets/icons/wav.svg similarity index 100% rename from src/components/FileList/images/wav.svg rename to src/assets/icons/wav.svg diff --git a/src/assets/images/x-mark-big.svg b/src/assets/icons/x-mark-big.svg similarity index 100% rename from src/assets/images/x-mark-big.svg rename to src/assets/icons/x-mark-big.svg diff --git a/src/assets/images/x-mark.svg b/src/assets/icons/x-mark.svg similarity index 100% rename from src/assets/images/x-mark.svg rename to src/assets/icons/x-mark.svg diff --git a/src/components/FileList/images/xlsx.svg b/src/assets/icons/xlsx.svg similarity index 100% rename from src/components/FileList/images/xlsx.svg rename to src/assets/icons/xlsx.svg diff --git a/src/components/FileList/images/xml.svg b/src/assets/icons/xml.svg similarity index 100% rename from src/components/FileList/images/xml.svg rename to src/assets/icons/xml.svg diff --git a/src/components/FileList/images/zip.svg b/src/assets/icons/zip.svg similarity index 100% rename from src/components/FileList/images/zip.svg rename to src/assets/icons/zip.svg diff --git a/src/assets/images/avatar-coder.png b/src/assets/images/avatar-coder.png index 62ed123b0..0743745e3 100644 Binary files a/src/assets/images/avatar-coder.png and b/src/assets/images/avatar-coder.png differ diff --git a/src/assets/images/avatar-coder.svg b/src/assets/images/avatar-coder.svg new file mode 100644 index 000000000..543e26beb --- /dev/null +++ b/src/assets/images/avatar-coder.svg @@ -0,0 +1,19 @@ + + + + avatar-coder + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/avatar-corrie.png b/src/assets/images/avatar-corrie.png deleted file mode 100644 index 64e7fe9ee..000000000 Binary files a/src/assets/images/avatar-corrie.png and /dev/null differ diff --git a/src/assets/images/avatar-patrick.png b/src/assets/images/avatar-patrick.png deleted file mode 100644 index cfc0e7fa6..000000000 Binary files a/src/assets/images/avatar-patrick.png and /dev/null differ diff --git a/src/assets/images/grid-list-ico.svg b/src/assets/images/grid-list-ico.svg deleted file mode 100644 index 15b4813ca..000000000 --- a/src/assets/images/grid-list-ico.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/src/assets/images/icon-filter.png b/src/assets/images/icon-filter.png deleted file mode 100644 index c9177e04b..000000000 Binary files a/src/assets/images/icon-filter.png and /dev/null differ diff --git a/src/assets/images/icons-sprites.png b/src/assets/images/icons-sprites.png deleted file mode 100755 index 7cfcc55c2..000000000 Binary files a/src/assets/images/icons-sprites.png and /dev/null differ diff --git a/src/assets/images/profile1.jpg b/src/assets/images/profile1.jpg deleted file mode 100644 index e8da36aef..000000000 Binary files a/src/assets/images/profile1.jpg and /dev/null differ diff --git a/src/assets/images/profile2.jpg b/src/assets/images/profile2.jpg deleted file mode 100644 index ab1a69883..000000000 Binary files a/src/assets/images/profile2.jpg and /dev/null differ diff --git a/src/assets/images/profile3.jpg b/src/assets/images/profile3.jpg deleted file mode 100644 index fbff21d6d..000000000 Binary files a/src/assets/images/profile3.jpg and /dev/null differ diff --git a/src/assets/images/profile4.jpg b/src/assets/images/profile4.jpg deleted file mode 100644 index 053ba2d28..000000000 Binary files a/src/assets/images/profile4.jpg and /dev/null differ diff --git a/src/assets/images/profile5.jpg b/src/assets/images/profile5.jpg deleted file mode 100644 index 1171cfb51..000000000 Binary files a/src/assets/images/profile5.jpg and /dev/null differ diff --git a/src/assets/images/profile6.jpg b/src/assets/images/profile6.jpg deleted file mode 100644 index 660482621..000000000 Binary files a/src/assets/images/profile6.jpg and /dev/null differ diff --git a/src/assets/images/status-ico.svg b/src/assets/images/status-ico.svg deleted file mode 100644 index d9517503c..000000000 --- a/src/assets/images/status-ico.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/src/components/ActionCard/ActionCard.scss b/src/components/ActionCard/ActionCard.scss index 4dbada782..6dca0d69b 100644 --- a/src/components/ActionCard/ActionCard.scss +++ b/src/components/ActionCard/ActionCard.scss @@ -1,5 +1,4 @@ @import "tc-includes"; - .action-card { padding: $base-unit*4 0; box-shadow: 0px 1px 3px 0px $tc-gray-30; @@ -14,65 +13,67 @@ padding: $base-unit*2 $base-unit*6; } - .edit-toggle-container { - display: inline; - float: right; + .edit-toggle-container { + display: inline; + float: right; + + .edit-toggle { + background-size: 15px; + user-select: none; + position: relative; + margin-left: auto; + border-radius: 20px; + font-family: 'Roboto', Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 12px; + color: $tc-white; + line-height: 20px; + height: 20px; + padding: 0 25px 0 25px; + cursor: pointer; + } - .edit-toggle { - background-size: 15px; - user-select: none; - position: relative; - margin-left: auto; - border-radius: 20px; - font-family: 'Roboto', Helvetica, Arial, sans-serif; - font-weight: 500; - font-size: 12px; - color: $tc-white; - line-height: 20px; - height: 20px; - padding: 0 25px 0 25px; - cursor: pointer; - } - .dropdown-menu-list a{ - text-decoration:none; - font-weight:400; - padding:0px; - &:hover{ - background:transparent; - } - } - .dropdown-menu-list li{ - padding:0px 20px 0 20px; - &:hover{ - background:$tc-gray-10; - } + .dropdown-menu-list a { + text-decoration: none; + font-weight: 400; + padding: 0px; + + &:hover { + background: transparent; } + } - + .dropdown-menu-list li { + padding: 0px 20px 0 20px; - .pointer-shadow .dropdown-menu-list{ - transform:translate(-50%,0%); - } - .pointer-shadow .dropdown-menu-list::before { - content: ''; - display: block; - position: absolute; - top: -4px; - right:18px; - margin-left:-24px; - width: 12px; - height: 12px; - background: $tc-white; - transform: rotate(-135deg); - z-index: 999; + &:hover { + background: $tc-gray-10; } + } - .pointer-shadow.hide{ - display:none; - } + .pointer-shadow .dropdown-menu-list { + transform: translate(-50%, 0%); + } + .pointer-shadow .dropdown-menu-list::before { + content: ''; + display: block; + position: absolute; + top: -4px; + right: 18px; + margin-left: -24px; + width: 12px; + height: 12px; + background: $tc-white; + transform: rotate(-135deg); + z-index: 999; } + .pointer-shadow.hide { + display: none; + } + } + .card-header { display: flex; align-items: center; @@ -94,12 +95,12 @@ position: relative; div { - display: inline + display: inline; } - .edit-toggle-container{ + .edit-toggle-container { .edit-dropdown { - top: 5px !important + top: 5px !important; } } } @@ -124,7 +125,7 @@ &::before { content: " · "; } - + a { color: $tc-gray-70; } @@ -136,7 +137,7 @@ } } - .topicBody{ + .topicBody { width: calc(100% - 40px); } @@ -147,7 +148,7 @@ line-height: $base-unit*5; padding: 10px 0; word-break: break-word; - overflow-x:auto; + overflow-x: auto; &.comment-section { margin-bottom: -50px; @@ -203,14 +204,17 @@ } } } - p{ + + p { line-height: 1.5em; } - sup{ + + sup { font-size: 0.5em; vertical-align: text-top; } - sub{ + + sub { font-size: 0.5em; vertical-align: text-bottom; } @@ -234,7 +238,6 @@ margin-bottom: -10px; width: calc(100% - 40px); - &.self { background: $tc-dark-blue-10; @@ -243,22 +246,20 @@ } &:before { - width: 0; - height: 0; + width: 0; + height: 0; border-top: 12px solid transparent; - border-bottom: 12px solid transparent; - - border-right:12px solid $tc-dark-blue-10; + border-bottom: 12px solid transparent; + border-right: 12px solid $tc-dark-blue-10; content: ''; display: block; position: absolute; top: 10px; left: -6px; - transform: rotate(-90deg); z-index: 18; } - position:relative; + position: relative; } .comment-body { @@ -278,9 +279,9 @@ } } - .commentEdit{ - padding-left:0px; - padding-right:0px; + .commentEdit { + padding-left: 0px; + padding-right: 0px; } .comment-form { @@ -336,7 +337,7 @@ padding: 12px 15px; background: $tc-gray-neutral-light; border: 1px solid $tc-gray-20; - border-top: 1px solid $tc-dark-blue-90; + border-top: 1px solid $tc-dark-blue; display: flex; .textarea-buttons { @@ -349,7 +350,7 @@ display: inline-block; border: none; background-color: transparent; - padding:0px; + padding: 0px; } .button { @@ -360,8 +361,8 @@ width: 1px; height: 20px; background-color: $tc-gray-30; - margin-left:8px; - margin-right:8px; + margin-left: 8px; + margin-right: 8px; } button { @@ -379,8 +380,10 @@ .tc-btn { margin-left: auto; } + .tc-btns { margin-left: auto; + .tc-btn { margin-left: 10px; } @@ -425,9 +428,9 @@ } } -.dashboard-container{ - .action-card{ - &.modal{ +.dashboard-container { + .action-card { + &.modal { padding: $base-unit*4 0; } } @@ -509,6 +512,11 @@ height: 40px; border-radius: 33px; } + + .Tooltip { + height: 35px; + width: 35px; + } } .buttons { @@ -531,26 +539,6 @@ opacity: 1.0; } } - - .btn-user-remove { - background: url('../../assets/images/user-remove.svg') no-repeat; - } - - .btn-promote { - background: url('../../assets/images/promote.svg') no-repeat; - } - - .btn-leave { - background: url('../../assets/images/exit.svg') no-repeat; - } - - .btn-edit { - background: url('../../assets/images/ui-16px-1_pencil.svg') no-repeat; - } - - .btn-remove { - background: url('../../assets/images/ui-16px-1_trash-simple.svg') no-repeat; - } } } @@ -588,9 +576,12 @@ } } } -.comment-panel-body, .topic-panel-body { + +.comment-panel-body, +.topic-panel-body { position: relative; } + .editing-layer { z-index: 21; top: 0; @@ -600,6 +591,7 @@ position: absolute; background-color: whitesmoke; opacity: 0.7; + div { text-align: center; color: green; @@ -625,58 +617,55 @@ color: $tc-dark-blue-70; letter-spacing: 0; } + &:before { - width: 0; - height: 0; + width: 0; + height: 0; border-top: 12px solid transparent; - border-bottom: 12px solid transparent; - - border-right:12px solid $tc-dark-blue-10; + border-bottom: 12px solid transparent; + border-right: 12px solid $tc-dark-blue-10; content: ''; display: block; position: absolute; top: 10px; left: -6px; - transform: rotate(-90deg); z-index: 18; } } -.delete-post-dialog{ - +.delete-post-dialog { padding: 50px 40px 50px 40px; - top : 50%; - left : 50%; - right : auto; - bottom : auto; - transform : translate(-50%, -50%); - position:absolute; + top: 50%; + left: 50%; + right: auto; + bottom: auto; + transform: translate(-50%, -50%); + position: absolute; background: white; - - box-shadow: 0 2px 9px 0 rgba($tc-gray-90,0.15); + box-shadow: 0 2px 9px 0 rgba($tc-gray-90, 0.15); border-radius: 6px; } -.delete-post-dialog-overlay{ - background : rgba($tc-gray-90, 0.6); - z-index:20; - position : fixed; - top : 0; - left : 0; - right : 0; - bottom : 0; +.delete-post-dialog-overlay { + background: rgba($tc-gray-90, 0.6); + z-index: 20; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; } -.modal-title{ +.modal-title { font-family: Roboto-Medium; font-size: 20px; color: $tc-gray-80; line-height: 30px; } -.modal-body{ - margin-top:20px; +.modal-body { + margin-top: 20px; font-family: Roboto-Regular; font-size: 15px; color: $tc-gray-60; @@ -684,16 +673,17 @@ } .action-btn { - margin-left:10px; + margin-left: 10px; } -.action-area{ - margin-top:45px; +.action-area { + margin-top: 45px; } -.dropdownContainer{ - display:inline; - .down-layer{ - top:22px; +.dropdownContainer { + display: inline; + + .down-layer { + top: 22px; } -} \ No newline at end of file +} diff --git a/src/components/ActionCard/AddComment.jsx b/src/components/ActionCard/AddComment.jsx index 9ebc7744c..1fd075fd7 100644 --- a/src/components/ActionCard/AddComment.jsx +++ b/src/components/ActionCard/AddComment.jsx @@ -25,7 +25,7 @@ export default class AddComment extends React.Component { } render() { - const { className, avatarUrl, authorName, placeholder, isAdding, hasError } = this.props + const { className, avatarUrl, authorName, placeholder, isAdding, hasError, allMembers } = this.props return ( ) } @@ -52,5 +53,6 @@ AddComment.propTypes = { authorName: PropTypes.string.isRequired, placeholder: PropTypes.string, hasError: PropTypes.bool, - isAdding: PropTypes.bool + isAdding: PropTypes.bool, + allMembers: PropTypes.object } diff --git a/src/components/ActionCard/Comment.jsx b/src/components/ActionCard/Comment.jsx index 02e87b916..a938c80b8 100644 --- a/src/components/ActionCard/Comment.jsx +++ b/src/components/ActionCard/Comment.jsx @@ -2,10 +2,11 @@ import React from 'react' import PropTypes from 'prop-types' import cn from 'classnames' import Panel from '../Panel/Panel' -import { Avatar } from 'appirio-tech-react-components' +import UserTooltip from '../User/UserTooltip' import RichTextArea from '../RichTextArea/RichTextArea' import { Link } from 'react-router-dom' import CommentEditToggle from './CommentEditToggle' +import _ from 'lodash' class Comment extends React.Component { @@ -50,9 +51,11 @@ class Comment extends React.Component { } render() { - const {message, avatarUrl, authorName, date, edited, children, active, self, isSaving, hasError, readonly} = this.props + const {message, author, date, edited, children, active, self, isSaving, hasError, readonly, allMembers} = this.props const messageAnchor = `comment-${message.id}` const messageLink = window.location.pathname.substr(0, window.location.pathname.indexOf('#')) + `#${messageAnchor}` + const authorName = author ? (author.firstName + ' ' + author.lastName) : 'Connect user' + const avatarUrl = _.get(author, 'photoURL', null) if (this.state.editMode) { const content = message.newContent === null || message.newContent === undefined ? message.rawContent : message.newContent @@ -71,6 +74,7 @@ class Comment extends React.Component { avatarUrl={avatarUrl} authorName={authorName} cancelEdit={this.cancelEdit} + allMembers={allMembers} /> ) } @@ -78,7 +82,7 @@ class Comment extends React.Component { return (
- +
@@ -101,7 +105,7 @@ class Comment extends React.Component { {message && message.isDeletingComment &&
Deleting post ...
-
+
}
@@ -111,15 +115,11 @@ class Comment extends React.Component { Comment.propTypes = { /** - * The user avatar url - */ - avatarUrl: PropTypes.string, - /** - * The author name + * The author (user object) */ - authorName: PropTypes.string.isRequired, + author: PropTypes.object.isRequired, /** - * The comment date (formatted) + * The comment date (formatted) */ date: PropTypes.string.isRequired, /** @@ -165,7 +165,8 @@ Comment.propTypes = { /** * The readonly flag */ - readonly: PropTypes.bool + readonly: PropTypes.bool, + allMembers: PropTypes.object.isRequired } export default Comment diff --git a/src/components/ActionCard/CommentEditToggle.jsx b/src/components/ActionCard/CommentEditToggle.jsx index 18b0fcfd2..979e93375 100644 --- a/src/components/ActionCard/CommentEditToggle.jsx +++ b/src/components/ActionCard/CommentEditToggle.jsx @@ -3,7 +3,8 @@ import PropTypes from 'prop-types' import cn from 'classnames' import { Dropdown, DropdownItem } from 'appirio-tech-react-components' import Modal from 'react-modal' -import SVGIconImage from '../SVGIconImage' +import EditComment from '../../assets/icons/ui-16px-1_edit-73.svg' + export default class CommentEditToggle extends React.Component { @@ -41,8 +42,7 @@ export default class CommentEditToggle extends React.Component {
- - +
    diff --git a/src/components/AvatarGroup/AvatarGroup.jsx b/src/components/AvatarGroup/AvatarGroup.jsx index 1c6c548a3..290a37833 100644 --- a/src/components/AvatarGroup/AvatarGroup.jsx +++ b/src/components/AvatarGroup/AvatarGroup.jsx @@ -1,5 +1,5 @@ import _ from 'lodash' -import {Avatar} from 'appirio-tech-react-components' +import UserTooltip from '../User/UserTooltip' import React from 'react' import PT from 'prop-types' import './AvatarGroup.scss' @@ -7,11 +7,7 @@ import './AvatarGroup.scss' function AvatarGroup({ users }) { const renderAvatar = (user, index) => { return ( - + ) } return ( diff --git a/src/components/AvatarGroup/AvatarGroup.scss b/src/components/AvatarGroup/AvatarGroup.scss index e14a56f47..7fae3e0c5 100644 --- a/src/components/AvatarGroup/AvatarGroup.scss +++ b/src/components/AvatarGroup/AvatarGroup.scss @@ -3,7 +3,13 @@ .AvatarGroup { display: flex; - .Avatar + .Avatar { + .Tooltip + .Tooltip { margin-left: $base_unit; } -} \ No newline at end of file + + .Tooltip.customer-data .stack-avatar-1, + .Tooltip.customer-data .stack-avatar-2, + .Tooltip.customer-data .stack-avatar-3 { + margin-left: 0; + } +} diff --git a/src/components/CoderBot/CoderBot.jsx b/src/components/CoderBot/CoderBot.jsx index fca8dea8d..b8eca2ee1 100644 --- a/src/components/CoderBot/CoderBot.jsx +++ b/src/components/CoderBot/CoderBot.jsx @@ -1,6 +1,9 @@ import React from 'react' import PropTypes from 'prop-types' import './CoderBot.scss' +import CoderBroken from '../../assets/icons/coder-broken.svg' + + const getHeading = code => { switch(code) { @@ -30,6 +33,7 @@ const CoderBot = ({code, message}) => {

    { getHeading(code) }

    + {code !== 200 && code}
diff --git a/src/components/CoderBot/CoderBot.scss b/src/components/CoderBot/CoderBot.scss index 9ffd82e38..08aa6512c 100644 --- a/src/components/CoderBot/CoderBot.scss +++ b/src/components/CoderBot/CoderBot.scss @@ -16,7 +16,11 @@ min-width: 768px; width: 970px; margin: 20px auto 0; - background: $tc-white url('../../assets/images/coder-broken.svg') no-repeat 18% 85%; + background: #ffffff; + .icon-coder-broken { + margin: 6% 20%; + float: left; + } background-size: 307px 300px; a{ color: $tc-dark-blue; diff --git a/src/components/ColorSelector/ColorSelector.jsx b/src/components/ColorSelector/ColorSelector.jsx index 4185d2c41..a710c4a07 100644 --- a/src/components/ColorSelector/ColorSelector.jsx +++ b/src/components/ColorSelector/ColorSelector.jsx @@ -1,10 +1,12 @@ import React from 'react' import PropTypes from 'prop-types' -import './ColorSelector.scss' import { SketchPicker } from 'react-color' import { HOC as hoc } from 'formsy-react' import {PROJECT_MAX_COLORS} from '../../config/constants' -import { Icons } from 'appirio-tech-react-components' +import CloseIcon from '../../assets/icons/icon-close.svg' +import AddColor from '../../assets/icons/icon-add-color.svg' +import './ColorSelector.scss' + class ColorSelector extends React.Component { @@ -52,7 +54,7 @@ class ColorSelector extends React.Component { style={{backgroundColor: color}} > - + )} @@ -61,8 +63,9 @@ class ColorSelector extends React.Component { this.setState({isPickerVisible: true})} - className="color-card color-card-add" + className="color-card" > + {isPickerVisible &&
e.stopPropagation()}> -1) { - isDropdown = true - break - } - - currNode = currNode.parentNode - - if(!currNode) - break - } while(currNode.tagName) - - if(!isDropdown) { - this.setState({ isHidden: true }) - } - } - - onClick(evt) { - const dropdownClicked = document.createEvent('Event') - dropdownClicked.initEvent('dropdownClicked', true, false) - - document.dispatchEvent(dropdownClicked) - - this.setState({ isHidden: !this.state.isHidden }) - evt.stopPropagation() - } - - onClickOtherDropdown() { - this.setState({ isHidden: true }) - } - - componentDidMount() { - document.removeEventListener('click', this.onClickOutside) - document.removeEventListener('dropdownClicked', this.onClickOtherDropdown) - - document.addEventListener('click', this.onClickOutside) - document.addEventListener('dropdownClicked', this.onClickOtherDropdown) - } - - componentWillUnmount() { - document.removeEventListener('click', this.onClickOutside) - document.removeEventListener('dropdownClicked', this.onClickOtherDropdown) - } - - render() { - const { className, pointerShadow, noPointer, pointerLeft, noAutoclose } = this.props - const ddClasses = classNames('dropdown-wrap', { - [`${className}`] : true, - [`${ this.props.theme }`] : true, - hide : this.state.isHidden - }) - const ndClasses = classNames('Dropdown', { - 'pointer-shadow' : pointerShadow, - 'pointer-hide' : noPointer, - 'pointer-left' : pointerLeft, - 'no-autoclose' : noAutoclose - }) - - return ( -
{} : this.onClick } ref="Dropdown"> - { - this.props.children.map((child, index) => { - if (child.props.className.indexOf('dropdown-menu-header') > -1) - return noAutoclose ? React.cloneElement(child, { - onClick: this.onClick, - key: child.props.key || index - }) : child - }) - } - -
- { - this.props.children.map((child) => { - if (child.props.className.indexOf('dropdown-menu-list') > -1) - return child - }) - } -
-
- ) - } -} - -Dropdown.propTypes = { - children: PropTypes.array.isRequired -} - -export default Dropdown diff --git a/src/components/Dropdown/Dropdown.scss b/src/components/Dropdown/Dropdown.scss deleted file mode 100644 index 9f12ed615..000000000 --- a/src/components/Dropdown/Dropdown.scss +++ /dev/null @@ -1,162 +0,0 @@ -@import 'tc-includes'; - - -.dropdown-wrap { - cursor: pointer; - position: relative; -} - -.Dropdown { - background-color: #fff; - box-shadow: 0 2px 7px rgba(0, 0, 0, 0.17); - border-radius: 5px; - display: inline-block; - position: absolute; - left: 0; - top: 5px; - width: 100%; - z-index: 2; - - ul { - height: 100%; - width: 100%; - position: relative; - z-index: 10; - background-color: #fff; - padding: 11px 20px; - border-radius: 5px; - - li { - list-style: none; - } - - li a { - color: #394146; - font-family: "Roboto", Arial, Helvetica, sans-serif; - font-size: 12px; - display: block; - line-height: 26px; - } - } -} - -.Dropdown.no-autoclose { - cursor: default; -} - -.dropdown-wrap.default { - border: 1px solid $tc-gray-20; - display: flex; - align-items: center; - padding: calc(2 * #{$base_unit}); - position: relative; - - .Dropdown { - ul.dropdown-menu-list { - padding: 10px 0px; - li { - padding: 0 20px; - @include ellipsis; - } - - li:hover { - background-color: $tc-gray-neutral-dark; - } - } - } -} - -.dropdown-wrap.default::after { - content: " "; - width: 10px; - height: 10px; - display: block; - right: 10px; - top: 50%; - position: absolute; - transform: translateY(-50%) rotate(45deg); - border-bottom: 2px solid $tc-gray-20; - border-right: 2px solid $tc-gray-20; -} - -.dropdown-wrap.hide .Dropdown { - display: none; -} - -.Dropdown.pointer-left:before { - right: initial; - left: 15px; -} - -.UserDropdownMenu .Dropdown.pointer-shadow { - margin-top: 35px; - - &:before { - content: ''; - display: block; - position: absolute; - top: -6px; - right: 24px; - width: 12px; - height: 12px; - background: #FFFFFF; - border-right: 1px solid $tc-gray-20;; - border-bottom: 1px solid $tc-gray-20;; - transform: rotate(-135deg); - z-index:999; - } -} - -.Dropdown.pointer-hide:before { - display: none; -} - -.new-theme { - text-align: left; - height: 30px; - color: $tc-black; - background: $tc-gray-neutral-light; - border: 1px solid $tc-gray-20; - @include roboto; - font-size: 13px; - line-height: 20px; - width: 100%; - border-radius: 2px; - position: relative; - - .dropdown-menu-header { - width: 100%; - border: 0; - height: 28px; - line-height: 28px; - margin: 0; - padding: 0 0 0 10px; - color: $tc-gray-50; - font-size: 13px; - } - &:after{ - display: block; - content: ''; - position: absolute; - width: 10px; - height: 14px; - right: 11px; - top: 50%; - margin-top: -7px; - background: url("./icon-select.png") left top no-repeat; - background-size: 10px 14px; - z-index:2; - } - .Dropdown { - ul.dropdown-menu-list { - padding: 10px 0px; - li { - padding: 0 20px; - @include ellipsis; - } - li:hover { - background-color: $tc-gray-neutral-dark; - } - } - } -} diff --git a/src/components/Dropdown/arrow-dropdown.png b/src/components/Dropdown/arrow-dropdown.png deleted file mode 100644 index 2aa5059e9..000000000 Binary files a/src/components/Dropdown/arrow-dropdown.png and /dev/null differ diff --git a/src/components/Dropdown/icon-select.png b/src/components/Dropdown/icon-select.png deleted file mode 100644 index 8b58102b3..000000000 Binary files a/src/components/Dropdown/icon-select.png and /dev/null differ diff --git a/src/components/Feed/Feed.jsx b/src/components/Feed/Feed.jsx index bcabff3fc..b9fee19f8 100644 --- a/src/components/Feed/Feed.jsx +++ b/src/components/Feed/Feed.jsx @@ -5,7 +5,7 @@ import cn from 'classnames' import ActionCard from '../ActionCard/ActionCard' import Panel from '../Panel/Panel' import FeedComments from './FeedComments' -import { Avatar } from 'appirio-tech-react-components' +import UserTooltip from '../User/UserTooltip' import {Link} from 'react-router-dom' import CommentEditToggle from '../ActionCard/CommentEditToggle' import RichTextArea from '../RichTextArea/RichTextArea' @@ -43,7 +43,7 @@ class Feed extends React.Component { const { id, user, currentUser, date, topicMessage, totalComments, hasMoreComments, onLoadMoreComments, isLoadingComments, allowComments, comments, unread, children, onNewCommentChange, onAddNewComment, isAddingComment, onSaveMessageChange, - onEditMessage, onSaveMessage, isSavingTopic, onDeleteMessage, onDeleteTopic, isDeletingTopic, error, permalink + onEditMessage, onSaveMessage, isSavingTopic, onDeleteMessage, onDeleteTopic, isDeletingTopic, error, permalink, allMembers } = this.props const {editTopicMode} = this.state let authorName = user.firstName @@ -71,12 +71,14 @@ class Feed extends React.Component { avatarUrl={user.photoURL} authorName={authorName} cancelEdit={this.cancelEditTopic} + allMembers={allMembers} /> )} {!editTopicMode && (
- + {/* */} +
@@ -118,6 +120,7 @@ class Feed extends React.Component { onSaveMessageChange={onSaveMessageChange} onSaveMessage={onSaveMessage} onDeleteMessage={onDeleteMessage} + allMembers={allMembers} /> {children} {isDeletingTopic && diff --git a/src/components/Feed/FeedComments.jsx b/src/components/Feed/FeedComments.jsx index 18bda90a9..31534d06b 100644 --- a/src/components/Feed/FeedComments.jsx +++ b/src/components/Feed/FeedComments.jsx @@ -1,4 +1,3 @@ -import _ from 'lodash' import React from 'react' import PropTypes from 'prop-types' import moment from 'moment' @@ -31,7 +30,7 @@ class FeedComments extends React.Component { render() { const { comments, currentUser, totalComments, onLoadMoreComments, isLoadingComments, hasMoreComments, onAddNewComment, - onNewCommentChange, error, avatarUrl, isAddingComment, allowComments, onSaveMessage, onDeleteMessage + onNewCommentChange, error, avatarUrl, isAddingComment, allowComments, onSaveMessage, onDeleteMessage, allMembers } = this.props let authorName = currentUser.firstName if (authorName && currentUser.lastName) { @@ -75,8 +74,7 @@ class FeedComments extends React.Component {
@@ -99,6 +98,7 @@ class FeedComments extends React.Component { authorName={authorName} isAdding={isAddingComment} hasError={error} + allMembers={allMembers} />}
) diff --git a/src/components/Feed/NewPost.jsx b/src/components/Feed/NewPost.jsx index 7b499c2a3..9c4a67e37 100644 --- a/src/components/Feed/NewPost.jsx +++ b/src/components/Feed/NewPost.jsx @@ -11,7 +11,7 @@ class NewPost extends React.Component { } render() { - const {currentUser, titlePlaceholder, isCreating, hasError} = this.props + const {currentUser, allMembers, titlePlaceholder, isCreating, hasError} = this.props let authorName = currentUser.firstName if (authorName && currentUser.lastName) { authorName += ' ' + currentUser.lastName @@ -33,6 +33,7 @@ class NewPost extends React.Component { hasError={hasError} avatarUrl={currentUser.photoURL} authorName={authorName} + allMembers={allMembers} /> ) } @@ -41,10 +42,11 @@ class NewPost extends React.Component { NewPost.propTypes = { currentUser: PropTypes.object.isRequired, + allMembers: PropTypes.object.isRequired, onPost: PropTypes.func.isRequired, onNewPostChange: PropTypes.func.isRequired, hasError: PropTypes.bool, isCreating: PropTypes.bool } -export default NewPost +export default NewPost \ No newline at end of file diff --git a/src/components/Feed/draftjs.scss b/src/components/Feed/draftjs.scss index bc0e0491d..a5cc1ef4d 100644 --- a/src/components/Feed/draftjs.scss +++ b/src/components/Feed/draftjs.scss @@ -1,6 +1,5 @@ @import "tc-includes"; - .collapsedEditor { display: none !important; } @@ -36,18 +35,20 @@ &:focus, &.focus { - border: 1px solid $tc-dark-blue-90; + border: 1px solid $tc-dark-blue; outline: none; - box-shadow: inset 0px 0px 2px 1px rgba($tc-light-blue-70,0.4); + box-shadow: inset 0px 0px 2px 1px rgba($tc-light-blue-70, 0.4); } transition: .15s all; + blockquote { @include roboto-medium; font-weight: 600; margin: $base-unit*2 0 $base-unit*2 $base-unit*6; padding: $base-unit*3 0 $base-unit*3 $base-unit*3; - border-left: $corner-radius * 2 solid $tc-gray-10 + border-left: $corner-radius * 2 solid $tc-gray-10; } + figure img { max-width: 600px; } @@ -55,15 +56,17 @@ .public-DraftStyleDefault-ul, .public-DraftStyleDefault-ol { - margin: $base-unit*2 0 $base-unit*2 $base-unit*6 + margin: $base-unit*2 0 $base-unit*2 $base-unit*6; } .public-DraftStyleDefault-ol { list-style-type: decimal; } + .public-DraftStyleDefault-ul { list-style-type: disc; } + .public-DraftStyleDefault-pre { background: $tc-gray-neutral-light; padding: 10px; @@ -74,27 +77,33 @@ border: 1px solid $tc-gray-10; border-radius: 4px; } + .public-DraftStyleDefault-block { white-space: pre-wrap; } .draftjs-post { - ul, ol { - margin: $base-unit*2 0 $base-unit*2 $base-unit*6 + ul, + ol { + margin: $base-unit*2 0 $base-unit*2 $base-unit*6; } + ul { list-style-type: disc; } + ol { list-style-type: decimal; } + blockquote { @include roboto-medium; font-weight: 600; margin: $base-unit*2 0 $base-unit*2 $base-unit*6; padding: $base-unit*3 0 $base-unit*3 $base-unit*3; - border-left: $corner-radius * 2 solid $tc-gray-10 + border-left: $corner-radius * 2 solid $tc-gray-10; } + pre { background: $tc-gray-neutral-light; padding: 10px; @@ -106,12 +115,15 @@ border-radius: 4px; white-space: inherit; } + strong { font-weight: bold; } + em { font-style: italic; } + img { max-width: 600px; } diff --git a/src/components/FileList/FileListItem.jsx b/src/components/FileList/FileListItem.jsx index 8f421dd6f..74894a356 100644 --- a/src/components/FileList/FileListItem.jsx +++ b/src/components/FileList/FileListItem.jsx @@ -3,11 +3,14 @@ import React from 'react' import PropTypes from 'prop-types' import filesize from 'filesize' import moment from 'moment' -import { Icons, Tooltip } from 'appirio-tech-react-components' +import { Tooltip } from 'appirio-tech-react-components' import UserWithName from '../User/UserWithName' import { TOOLTIP_DEFAULT_DELAY } from '../../config/constants' +import TrashIcon from '../../assets/icons/icon-trash.svg' +import CloseIcon from '../../assets/icons/icon-close.svg' +import EditIcon from '../../assets/icons/icon-edit.svg' +import SaveIcon from '../../assets/icons/icon-save.svg' -const { TrashIcon, CloseIcon, EditIcon, SaveIcon } = Icons export default class FileListItem extends React.Component { @@ -123,9 +126,9 @@ export default class FileListItem extends React.Component { const { isEditing } = this.state let iconPath try { - iconPath = require('./images/' + this.props.contentType.split('/')[1] +'.svg') + iconPath = require('../../assets/icons/' + this.props.contentType.split('/')[1] +'.svg') } catch(err) { - iconPath = require('./images/default.svg') + iconPath = require('../../assets/icons/default.svg') } return ( diff --git a/src/components/Grid/GridView.scss b/src/components/Grid/GridView.scss index 2cfbccf5f..7fd0eedef 100644 --- a/src/components/Grid/GridView.scss +++ b/src/components/Grid/GridView.scss @@ -89,14 +89,6 @@ margin-top: -12px; } - &.icon-up::after { - background: url("./images/arrow-up-big.svg") no-repeat right center; - } - - &.icon-down::after { - background: url("./images/arrow-down-big.svg") no-repeat right center; - } - &a:hover { cursor: pointer; } @@ -247,35 +239,18 @@ left: 0; margin-top: -12px; } - - &.status-draft, - &.gray { - background: url("./images/status-draft.svg") no-repeat 0 center; - } - - &.status-active, - &.green { - background: url("./images/status-active.svg") no-repeat 0 center; - } - - &.status-error, - &.red { - background: url("./images/status-error.svg") no-repeat 0 center; - } - - &.status-done, - &.black { - background: url("./images/status-done.svg") no-repeat 0 center; - } } .project-status-title { position: relative; display: block; - background: url('../../assets/images/status-ico.svg') no-repeat; background-position: center center; - height: 20px; - width: 20px; + height: 16px; + width: 16px; + + & * { + fill: $tc-gray-40; + } } .drop-down { @@ -290,13 +265,12 @@ display: block; &.active { - color: $tc-dark-blue-90; + color: $tc-dark-blue; } &:after { font-size: 0; line-height: 0; - background: url('./images/icon-drop-down.svg') no-repeat 0 0; width: 9px; height: 12px; content: ""; @@ -482,7 +456,6 @@ &:before { font-size: 0; line-height: 0; - background: url("./images/arrow-left.svg") no-repeat 0 0; width: 12px; height: 12px; content: ""; @@ -501,7 +474,6 @@ &:after { font-size: 0; line-height: 0; - background: url("./images/arrow-right.svg") no-repeat 0 0; width: 12px; height: 12px; content: ""; diff --git a/src/components/Grid/ListHeader.jsx b/src/components/Grid/ListHeader.jsx index 3efcbf56a..42da0373c 100644 --- a/src/components/Grid/ListHeader.jsx +++ b/src/components/Grid/ListHeader.jsx @@ -2,6 +2,8 @@ import React from 'react' import PropTypes from 'prop-types' import _ from 'lodash' import cn from 'classnames' +import Down from '../../assets/icons/arrow-down-big.svg' +import Up from '../../assets/icons/arrow-up-big.svg' const HeaderItem = ({item, onItemClick, currentSortField}) => { @@ -16,6 +18,11 @@ const HeaderItem = ({item, onItemClick, currentSortField}) => {
{ item.sortable ? + if (sortClasses === 'icon-up') { + + } else { + + } {item.headerLabel} : item.headerLabel diff --git a/src/components/Grid/PaginationBar.jsx b/src/components/Grid/PaginationBar.jsx index eeb21206f..e71aef637 100644 --- a/src/components/Grid/PaginationBar.jsx +++ b/src/components/Grid/PaginationBar.jsx @@ -4,6 +4,8 @@ import cn from 'classnames' import _ from 'lodash' import { branch, renderComponent } from 'recompose' import { Tooltip } from 'appirio-tech-react-components' +import BtnPrev from '../../assets/icons/arrow-left.svg' +import BtnNext from '../../assets/icons/arrow-left.svg' const NUMBER_OF_PILLS = 5 @@ -160,11 +162,21 @@ const PaginationBar = enhance(({onPageChange, currentPageNum, totalCount, pageSi return (
) diff --git a/src/components/Home/Home.scss b/src/components/Home/Home.scss index f0eca512a..97efd6543 100644 --- a/src/components/Home/Home.scss +++ b/src/components/Home/Home.scss @@ -2,92 +2,104 @@ @import '../../styles/variables'; .content-home { - margin: $base-unit*4; + margin: $base-unit*4; - .container { - display: flex; - justify-content: space-around; - max-width: 1200px; - width: auto; - margin: auto; - padding: $base-unit*12 $base-unit*9 $base-unit*18; - background: $tc-white; - box-shadow: 0 1px 3px 0px rgba($tc-black,.2); - border-radius: $corner-radius; - @media screen and (max-width: $screen-rg - 1) { - flex-direction: column; - width: 100%; - padding:$base-unit*6 $base-unit*12 $base-unit*6; - .content-container{ - padding: $base-unit*15 0 0 0; - } - } - @media screen and (max-width: $screen-md - 174) { - img{ - width:100%; - height: auto; - } - .image-container{ - min-width: 100%; - } - } - } - .image-container{ - text-align: center; - min-width: $base-unit*86; - } - .content-container{ - padding: $base-unit*7 0 0 $base-unit*17; - .button-bar{ - display: flex; - flex-direction: column; - padding-top:$base-unit*6; + .container { + display: flex; + justify-content: space-around; + max-width: 1200px; + width: auto; + margin: auto; + padding: $base-unit*12 $base-unit*9 $base-unit*18; + background: $tc-white; + box-shadow: 0 1px 3px 0px rgba($tc-black, .2); + border-radius: $corner-radius; - a.tc-link { - text-align: center; - color: $tc-dark-blue-90; - @include roboto; - font-size: 13px; - margin: 0 auto; - display: inline-block; - margin-top: 10px; - } - } - h1{ - @include tc-heading-extra-large; - @include roboto-medium; - color: $tc-black; - letter-spacing: 0; - padding: 0 0 $base-unit*6; - text-align: center; - } - p{ - @include roboto; - font-size: $tc-body-large; - color: $tc-gray-70; - letter-spacing: 0; - line-height: $base-unit * 6; - padding-bottom: $base-unit*6; - } - .tc-btn{ - color: $tc-dark-blue-30; - height:$base-unit*8; - width: $base-unit*50; - text-align: center; - margin: 0 auto; - line-height: 38px; - @include roboto-medium; - font-size: $tc-label-lg; - display: block; - margin-bottom: $base-unit * 4; - &:hover { - color:$tc-white; - background-image: linear-gradient($tc-dark-blue-70 0%, $tc-dark-blue-90 100%) !important; - } - &:active { - color:$tc-white; - background-image: linear-gradient($tc-dark-blue-70 0%, $tc-dark-blue-90 100%) !important; - } - } - } + @media screen and (max-width: $screen-rg - 1) { + flex-direction: column; + width: 100%; + padding: $base-unit*6 $base-unit*12 $base-unit*6; + + .content-container { + padding: $base-unit*15 0 0 0; + } + } + + @media screen and (max-width: $screen-md - 174) { + img { + width: 100%; + height: auto; + } + + .image-container { + min-width: 100%; + } + } + } + + .image-container { + text-align: center; + min-width: $base-unit*86; + } + + .content-container { + padding: $base-unit*7 0 0 $base-unit*17; + + .button-bar { + display: flex; + flex-direction: column; + padding-top: $base-unit*6; + + a.tc-link { + text-align: center; + color: $tc-dark-blue; + @include roboto; + font-size: 13px; + margin: 0 auto; + display: inline-block; + margin-top: 10px; + } + } + + h1 { + @include tc-heading-extra-large; + @include roboto-medium; + color: $tc-black; + letter-spacing: 0; + padding: 0 0 $base-unit*6; + text-align: center; + } + + p { + @include roboto; + font-size: $tc-body-large; + color: $tc-gray-70; + letter-spacing: 0; + line-height: $base-unit * 6; + padding-bottom: $base-unit*6; + } + + .tc-btn { + color: $tc-dark-blue-30; + height: $base-unit*8; + width: $base-unit*50; + text-align: center; + margin: 0 auto; + line-height: 38px; + @include roboto-medium; + font-size: $tc-label-lg; + display: block; + margin-bottom: $base-unit * 4; + + &:hover { + color: $tc-white; + background-image: linear-gradient($tc-dark-blue-70 0%, $tc-dark-blue 100%) !important; + } + + &:active { + color: $tc-white; + background-image: linear-gradient($tc-dark-blue-70 0%, $tc-dark-blue 100%) !important; + } + } + } } \ No newline at end of file diff --git a/src/components/LinksMenu/LinksMenu.jsx b/src/components/LinksMenu/LinksMenu.jsx index ae4233798..7aea00c86 100644 --- a/src/components/LinksMenu/LinksMenu.jsx +++ b/src/components/LinksMenu/LinksMenu.jsx @@ -6,6 +6,8 @@ import AddLink from './AddLink' import DeleteLinkModal from './DeleteLinkModal' import uncontrollable from 'uncontrollable' import cn from 'classnames' +import BtnRemove from '../../assets/icons/ui-16px-1_trash-simple.svg' + const LinksMenu = ({ links, limit, canDelete, isAddingNewLink, onAddingNewLink, onAddNewLink, onChangeLimit, linkToDelete, onDeleteIntent, onDelete }) => ( = 0) })}> @@ -53,7 +55,9 @@ const LinksMenu = ({ links, limit, canDelete, isAddingNewLink, onAddingNewLink,
  • {link.title} {canDelete &&
    -
    }
  • ) diff --git a/src/components/Maintenance/Maintenance.scss b/src/components/Maintenance/Maintenance.scss index 1bdf7b0a2..faf714d6f 100644 --- a/src/components/Maintenance/Maintenance.scss +++ b/src/components/Maintenance/Maintenance.scss @@ -16,7 +16,7 @@ min-width: 768px; width: 970px; margin: 20px auto 0; - background: $tc-white url('../../assets/images/coder-broken.svg') no-repeat 18% 85%; + background: $tc-white url('../../assets/icons/coder-broken.svg') no-repeat 18% 85%; background-size: 307px 300px; a{ color: $tc-dark-blue; diff --git a/src/components/MessageList/MessagingEmptyState.jsx b/src/components/MessageList/MessagingEmptyState.jsx index 90b4e8dcf..f36b9c951 100644 --- a/src/components/MessageList/MessagingEmptyState.jsx +++ b/src/components/MessageList/MessagingEmptyState.jsx @@ -2,16 +2,16 @@ import React from 'react' import './MessagingEmptyState.scss' import Panel from '../Panel/Panel' import Comment from '../ActionCard/Comment' -import { Icons } from 'appirio-tech-react-components' +import CloseIcon from '../../assets/icons/icon-close.svg' const MessagingEmptyState = ({ currentUser, onClose }) => (
    - + (
    - + + + {children}
    ) diff --git a/src/components/Modal/Modal.scss b/src/components/Modal/Modal.scss index 618d0ee33..9d01fdae3 100644 --- a/src/components/Modal/Modal.scss +++ b/src/components/Modal/Modal.scss @@ -1,11 +1,12 @@ @import "tc-includes"; @import "../../styles/variables"; - +// TODO: unused css .modal { background: $tc-gray-neutral-light; border-radius: $corner-radius; position: relative; padding: $base-unit*2 0; + .btn-close { position: absolute; display: block; @@ -13,15 +14,16 @@ height: 15px; top: $base-unit*3; right: $base-unit*3; - background: url('../../assets/images/x-mark-big.svg') no-repeat 0 0; background-size: $tc-heading-extra-small; } + .modal-title { @include roboto-bold; font-size: $tc-label-lg; padding: $base-unit*2 $base-unit*4 0 $base-unit*4; line-height: $base-unit*4; text-align: center; + &.title-muted { @include roboto-medium; color: $tc-gray-50; @@ -30,15 +32,18 @@ padding-top: $base-unit; padding-bottom: $base-unit; } + &.danger { color: $tc-red; } } + .modal-body { @include roboto; font-size: $tc-label-md; line-height: $base-unit * 4; margin: $base-unit*2 $base-unit*4; + input { display: block; height: 38px; @@ -47,59 +52,70 @@ background: $tc-gray-neutral-light; border-color: $tc-gray-20; @include tc-label-md; - @include placeholder{ + @include placeholder { text-transform: none; } + &[disabled] { color: $tc-gray-20; background: $tc-white; } + &:hover { border-color: $tc-gray-40; background: $tc-gray-neutral-light; } + &:focus { background: $tc-white !important; - border-color: $tc-dark-blue-90 !important; + border-color: $tc-dark-blue !important; } + &.error { border-left: 3px solid $tc-red-70 !important; background: $tc-gray-neutral-light !important; + &:focus { background: $tc-white !important; - border-color: $tc-dark-blue-90 !important; + border-color: $tc-dark-blue !important; } } } + .modal-inline-form { display: flex; margin-bottom: $base-unit*2; + button { margin-left: $base-unit; } + .input-icon-group { position: relative; flex-grow: 1; display: flex; border: 1px solid $tc-gray-20; box-shadow: inset 0px 0px 2px 0px rgba($tc-gray-30, 0.2); + input { flex-grow: 1; display: inline-block; border: none; box-shadow: none; } + .input-icon { height: 30px; margin: 4px; + &:empty { width: 36px; - background: url('../../assets/images/username-icon.svg') no-repeat; background-size: 30px 30px; background-color: $tc-gray-20; background-position: center; border-radius: 34px; } + img { width: 30px; height: 30px; @@ -108,6 +124,7 @@ } } } + .message { text-align: center; margin-bottom: $base-unit*4; @@ -120,15 +137,17 @@ } .btn-cancel { - border: 1px solid $tc-dark-blue-90; + border: 1px solid $tc-dark-blue; box-shadow: 0px 0px 3px 0px $tc-dark-blue-30; } } } + .form-group { - margin-top: 20px; - margin-bottom: 15px; - } + margin-top: 20px; + margin-bottom: 15px; + } + .center-buttons { text-align: center; } diff --git a/src/components/NotificationItem/NotificationItem.jsx b/src/components/NotificationItem/NotificationItem.jsx index bbf72999a..e8c210493 100644 --- a/src/components/NotificationItem/NotificationItem.jsx +++ b/src/components/NotificationItem/NotificationItem.jsx @@ -7,10 +7,44 @@ import React from 'react' import PropTypes from 'prop-types' import _ from 'lodash' import { NOTIFICATION_TYPE } from '../../config/constants' -import SVGIconImage from '../SVGIconImage' import moment from 'moment' import { Link } from 'react-router-dom' import './NotificationItem.scss' +import Check from '../../assets/icons/check.svg' +import IconNotificationMememberAdded from '../../assets/icons/notification-member-added.svg' +import IconNotificationNewPosts from '../../assets/icons/notification-new-posts.svg' +import IconNotificationNewProject from '../../assets/icons/notification-new-project.svg' +import IconNotificationReviewPending from '../../assets/icons/notification-review-pending.svg' +import IconNotificationUpdates from '../../assets/icons/notification-updates.svg' +import IconNotificationWarning from '../../assets/icons/notification-warning.svg' + +/** + * @parmas {string} type notification type + * @parmas {string} class name + */ +const NotificationIcons = ({ type, className }) => { + switch(type){ + case 'member-added': + return + case 'new-posts': + return + case 'new-project': + return + case 'review-pending': + return + case 'updates': + return + case 'warning': + return + default: + return 'undefined icon' + } +} + +NotificationIcons.propTypes = { + type: PropTypes.string.isRequired, + className: PropTypes.string.isRequired +} /** * Format date @@ -40,10 +74,13 @@ const formatDate = (date) => { return format } + const NotificationItem = (props) => { const notificationItem = (
    -
    +
    + +

    {formatDate(props.date)}

    @@ -55,7 +92,7 @@ const NotificationItem = (props) => { props.onReadToggleClick(props.id) }} > - +
    diff --git a/src/components/NotificationItem/NotificationItem.scss b/src/components/NotificationItem/NotificationItem.scss index a48da8f89..45d67f94a 100644 --- a/src/components/NotificationItem/NotificationItem.scss +++ b/src/components/NotificationItem/NotificationItem.scss @@ -68,7 +68,7 @@ background-color: $tc-dark-blue-30; svg { - fill: $tc-dark-blue-90; + fill: $tc-dark-blue; } } diff --git a/src/components/NotificationsDropdown/NotificationsDropdown.jsx b/src/components/NotificationsDropdown/NotificationsDropdown.jsx index a583fa8bb..465ba327d 100644 --- a/src/components/NotificationsDropdown/NotificationsDropdown.jsx +++ b/src/components/NotificationsDropdown/NotificationsDropdown.jsx @@ -5,16 +5,19 @@ */ import React from 'react' import PropTypes from 'prop-types' -import SVGIconImage from '../SVGIconImage' -import Dropdown from '../Dropdown/Dropdown' +import { Dropdown } from 'appirio-tech-react-components' import cn from 'classnames' +import Bell from '../../assets/icons/ui-bell.svg' + const NotificationsDropdown = (props) => { return (
    -
    +
    + +
    diff --git a/src/components/NotificationsDropdown/NotificationsDropdown.scss b/src/components/NotificationsDropdown/NotificationsDropdown.scss index aa136e2c1..5322a855a 100644 --- a/src/components/NotificationsDropdown/NotificationsDropdown.scss +++ b/src/components/NotificationsDropdown/NotificationsDropdown.scss @@ -48,7 +48,7 @@ position: relative; width: 32px; - > svg > g > g { + .icon-ui-bell path { fill: $tc-white; } } diff --git a/src/components/NotificationsDropdown/NotificationsDropdownContainer.jsx b/src/components/NotificationsDropdown/NotificationsDropdownContainer.jsx index 769da618c..573fd5a2f 100644 --- a/src/components/NotificationsDropdown/NotificationsDropdownContainer.jsx +++ b/src/components/NotificationsDropdown/NotificationsDropdownContainer.jsx @@ -6,13 +6,14 @@ import React from 'react' import { Link } from 'react-router-dom' import { connect } from 'react-redux' -import { sumBy } from 'lodash' -import { getNotifications, markAllNotificationsRead, toggleNotificationRead } from '../../routes/notifications/actions' +import _ from 'lodash' +import { getNotifications, markAllNotificationsRead, toggleNotificationRead, toggleBundledNotificationRead } from '../../routes/notifications/actions' import { splitNotificationsBySources, filterReadNotifications, limitQuantityInSources } from '../../routes/notifications/helpers/notifications' import NotificationsSection from '../NotificationsSection/NotificationsSection' import NotificationsEmpty from '../NotificationsEmpty/NotificationsEmpty' import NotificationsDropdownHeader from '../NotificationsDropdownHeader/NotificationsDropdownHeader' import NotificationsDropdown from './NotificationsDropdown' +import ScrollLock from 'react-scroll-lock-component' import { NOTIFCATIONS_DROPDOWN_PER_SOURCE, NOTIFCATIONS_DROPDOWN_MAX_TOTAL, REFRESH_NOTIFICATIONS_INTERVAL } from '../../config/constants' import './NotificationsDropdown.scss' @@ -32,7 +33,7 @@ class NotificationsDropdownContainer extends React.Component { return null } - const { sources, notifications, markAllNotificationsRead, toggleNotificationRead, pending } = this.props + const { sources, notifications, markAllNotificationsRead, toggleNotificationRead, pending, toggleBundledNotificationRead } = this.props const notReadNotifications = filterReadNotifications(notifications) const notificationsBySources = limitQuantityInSources( splitNotificationsBySources(sources, notReadNotifications), @@ -42,13 +43,21 @@ class NotificationsDropdownContainer extends React.Component { const globalSource = notificationsBySources.length > 0 && notificationsBySources[0].id === 'global' ? notificationsBySources[0] : null const projectSources = notificationsBySources.length > 1 && globalSource ? notificationsBySources.slice(1) : notificationsBySources const hasUnread = notReadNotifications.length > 0 - const olderNotificationsCount = sumBy(projectSources, 'total') - sumBy(projectSources, 'notifications.length') + const olderNotificationsCount = _.sumBy(projectSources, 'total') - _.sumBy(projectSources, 'notifications.length') // we have to give Dropdown component some time // before removing notification item node from the list // otherwise dropdown thinks we clicked outside and closes dropdown const toggleNotificationReadWithDelay = (notificationId) => { if (!pending) { - setTimeout(() => toggleNotificationRead(notificationId), 0) + const notification = _.find(notReadNotifications, { id: notificationId }) + setTimeout(() => { + // if it's bundled notification, then toggle all notifications inside the bundle + if (notification.bundledIds) { + toggleBundledNotificationRead(notificationId, notification.bundledIds) + } else { + toggleNotificationRead(notificationId) + } + }, 0) } } @@ -64,24 +73,26 @@ class NotificationsDropdownContainer extends React.Component {
    ) : ([ -
    - {globalSource && globalSource.notifications.length && - - } - {projectSources.filter(source => source.notifications.length > 0).map(source => - - )} -
    , + +
    + {globalSource && globalSource.notifications.length && + + } + {projectSources.filter(source => source.notifications.length > 0).map(source => + + )} +
    +
    , { olderNotificationsCount > 0 ? @@ -100,7 +111,8 @@ const mapStateToProps = ({ notifications }) => notifications const mapDispatchToProps = { getNotifications, markAllNotificationsRead, - toggleNotificationRead + toggleNotificationRead, + toggleBundledNotificationRead } export default connect(mapStateToProps, mapDispatchToProps)(NotificationsDropdownContainer) diff --git a/src/components/NotificationsEmpty/NotificationsEmpty.jsx b/src/components/NotificationsEmpty/NotificationsEmpty.jsx index 7cc141df2..ad4a2df63 100644 --- a/src/components/NotificationsEmpty/NotificationsEmpty.jsx +++ b/src/components/NotificationsEmpty/NotificationsEmpty.jsx @@ -3,12 +3,16 @@ */ import React from 'react' import PropTypes from 'prop-types' -import SVGIconImage from '../SVGIconImage' import './NotificationsEmpty.scss' +import Bell from '../../assets/icons/ui-bell.svg' + + const NotificationsEmpty = (props) => (
    -
    +
    + +

    Good job! You’re all caught up

    {props.children &&
    {props.children}
    }
    diff --git a/src/components/Panel/Panel.jsx b/src/components/Panel/Panel.jsx index a00953422..9ce0a5918 100644 --- a/src/components/Panel/Panel.jsx +++ b/src/components/Panel/Panel.jsx @@ -1,7 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' import { defaultProps } from 'recompose' -import { Icons } from 'appirio-tech-react-components' +import IconUIBoldAdd from '../../assets/icons/icon-ui-bold-add.svg' +import IconUITrashSimple from '../../assets/icons/icon-ui-trash-simple.svg' import './Panel.scss' import cn from 'classnames' @@ -29,8 +30,8 @@ Title.propTypes = { const ActionBtn = ({children, onClick, type}) => ( - { type === 'add' && } - { type === 'remove' && } + { type === 'add' && } + { type === 'remove' && } ) diff --git a/src/components/Panel/Panel.scss b/src/components/Panel/Panel.scss index df0d9cbac..dbbaffcfb 100644 --- a/src/components/Panel/Panel.scss +++ b/src/components/Panel/Panel.scss @@ -49,8 +49,8 @@ svg { fill: $tc-white; - width: 12px; - height: 12px; + width: 8px; + height: 8px; } } diff --git a/src/components/ProjectStatus/ProjectStatus.jsx b/src/components/ProjectStatus/ProjectStatus.jsx index bd68ec718..6bd4ac86f 100644 --- a/src/components/ProjectStatus/ProjectStatus.jsx +++ b/src/components/ProjectStatus/ProjectStatus.jsx @@ -2,12 +2,48 @@ import React from 'react' import PropTypes from 'prop-types' import cn from 'classnames' import './ProjectStatus.scss' +import IconStatusActive from '../../assets/icons/ps-active.svg' +import IconStatusDraft from '../../assets/icons/ps-draft.svg' +import IconStatusReview from '../../assets/icons/ps-in_review.svg' +import IconStatusReviewed from '../../assets/icons/ps-reviewed.svg' +import IconStatusCancelled from '../../assets/icons/ps-cancelled.svg' +import IconStatusPaused from '../../assets/icons/ps-paused.svg' +import IconStatusCompleted from '../../assets/icons/ps-completed.svg' + + +/** + * @params {string} status project status + */ +const StatusIcons = ({ status }) => { + switch(status){ + case 'active': + return + case 'draft': + return + case 'in_review': + return + case 'reviewed': + return + case 'cancelled': + return + case 'completed': + return + case 'paused': + return + default: + return 'undefined icon' + } +} + +StatusIcons.propTypes = { + status: PropTypes.string +} /*eslint-enable camelcase */ const ProjectStatus = ({ status, showText, withoutLabel, unifiedHeader = true }) => { return (
    -
    + {showText && ({withoutLabel ? status.fullName : status.name})}
    ) diff --git a/src/components/ProjectStatus/ProjectStatus.scss b/src/components/ProjectStatus/ProjectStatus.scss index d401b05b9..c1e6803f0 100644 --- a/src/components/ProjectStatus/ProjectStatus.scss +++ b/src/components/ProjectStatus/ProjectStatus.scss @@ -1,6 +1,5 @@ @import 'tc-includes'; $status-height: 20px; - .ProjectStatus { position: relative; height: $status-height; @@ -20,69 +19,6 @@ $status-height: 20px; } } - &.ps-draft { - .status-icon { - i { - background: url('../../assets/images/ps-draft.svg') no-repeat -7px -4px; - // background-size: cover; - } - } - } - - &.ps-in_review { - .status-icon { - i { - background: url('../../assets/images/ps-in_review.svg') no-repeat -7px -4px; - // background-size: cover; - } - } - } - - &.ps-reviewed { - .status-icon { - i { - background: url('../../assets/images/ps-reviewed.svg') no-repeat -7px -4px; - // background-size: cover; - } - } - } - - &.ps-active { - .status-icon { - i { - background: url('../../assets/images/ps-active.svg') no-repeat; - // background-size: cover; - } - } - } - - &.ps-cancelled { - .status-icon { - i { - background: url('../../assets/images/ps-cancelled.svg') no-repeat -7px -4px; - // background-size: cover; - } - } - } - - &.ps-completed { - .status-icon { - i { - background: url('../../assets/images/ps-completed.svg') no-repeat -7px -4px; - // background-size: cover; - } - } - } - - &.ps-paused { - .status-icon { - i { - background: url('../../assets/images/ps-paused.svg') no-repeat -7px -4px; - // background-size: cover; - } - } - } - .status-label { position: relative; @include tc-label-xs; @@ -141,11 +77,6 @@ $status-height: 20px; } } - &.active { - &::after { - background: url('../../assets/images/arrows-9px-carret-down-expanded.svg') no-repeat 50% 50%; - } - } &.unified-header { background-color: $tc-gray-40; @@ -200,7 +131,7 @@ $status-height: 20px; font-size: $tc-label-md; text-align: left; line-height: 30px; - padding: 5px 16px 5px 10px; + padding: 5px 16px 5px 2px; white-space: nowrap; &:hover { @@ -211,6 +142,11 @@ $status-height: 20px; background: $tc-dark-blue-10; } + svg.active-status-icon { + margin-left: 7px; + margin-right: 10px; + } + .status-label { color: $tc-gray-80; padding-right: 0px; diff --git a/src/components/ProjectStatus/ProjectStatusChangeConfirmation.jsx b/src/components/ProjectStatus/ProjectStatusChangeConfirmation.jsx index 998e14aa0..182d41173 100644 --- a/src/components/ProjectStatus/ProjectStatusChangeConfirmation.jsx +++ b/src/components/ProjectStatus/ProjectStatusChangeConfirmation.jsx @@ -1,99 +1,123 @@ -import React from 'react' +import React, { Component } from 'react' import PropTypes from 'prop-types' import {SelectDropdown} from 'appirio-tech-react-components' -import uncontrollable from 'uncontrollable' +import cn from 'classnames' import { PROJECT_STATUS_COMPLETED, PROJECT_STATUS_CANCELLED } from '../../config/constants' import './ProjectStatusChangeConfirmation.scss' -const ProjectStatusChangeConfirmation = ({ - newStatus, - onCancel, - onConfirm, - onReasonUpdate, - statusChangeReason, - emptyCancelReason, - showEmptyReasonError - }) => { - let confirmText - let titleStatus - switch(newStatus) { - case PROJECT_STATUS_COMPLETED: - confirmText = 'Close Project' - titleStatus = 'close' - break - case PROJECT_STATUS_CANCELLED: - confirmText = 'Cancel Project' - titleStatus = 'cancel' - break - default: - confirmText = 'Confirm' - titleStatus = 'close' +class ProjectStatusChangeConfirmation extends Component { + + constructor(props) { + super(props) + this.state = {showUp:false, emptyCancelReason:false} + this.handleReasonChange = this.handleReasonChange.bind(this) + this.handleConfirm = this.handleConfirm.bind(this) + this.shouldDropdownUp = this.shouldDropdownUp.bind(this) + } - const cancelReasons = [ - { value: null, title: '-- Select Reason --'}, - { value: 'spam', title: 'Spam'}, - { value: 'demo', title: 'Demo/Test'}, - { value: 'competitor', title: 'Customer selected competitor'}, - { value: 'price', title: 'Price too high'}, - { value: 'customer-inhouse', title: 'Being done in-house'}, - { value: 'customer-inactivity', title: 'Customer not responsive'}, - { value: 'non-community', title: 'Poor community fit'}, - { value: 'by-choice', title: 'Declined by us'} - ] - const handleReasonChange = (option) => { + + componentWillMount(){ + let confirmText + let titleStatus + switch(this.props.newStatus) { + case PROJECT_STATUS_COMPLETED: + confirmText = 'Close Project' + titleStatus = 'close' + break + case PROJECT_STATUS_CANCELLED: + confirmText = 'Cancel Project' + titleStatus = 'cancel' + break + default: + confirmText = 'Confirm' + titleStatus = 'close' + } + this.cancelReasons = [ + { value: null, title: '-- Select Reason --'}, + { value: 'spam', title: 'Spam'}, + { value: 'demo', title: 'Demo/Test'}, + { value: 'competitor', title: 'Customer selected competitor'}, + { value: 'price', title: 'Price too high'}, + { value: 'customer-inhouse', title: 'Being done in-house'}, + { value: 'customer-inactivity', title: 'Customer not responsive'}, + { value: 'non-community', title: 'Poor community fit'}, + { value: 'by-choice', title: 'Declined by us'} + ] + this.confirmText = confirmText + this.titleStatus = titleStatus + + } + + handleReasonChange(option){ // after reason change, remove the error - showEmptyReasonError(false) + this.setState({emptyCancelReason:false}) // update reason in parent component - onReasonUpdate(option) + this.props.onReasonUpdate(option) } - const handleConfirm = () => { + handleConfirm(){ // if new status is cancelled but cancel reason is not set, show error - if (newStatus === PROJECT_STATUS_CANCELLED && !statusChangeReason) { - showEmptyReasonError(true) + if (this.props.newStatus === PROJECT_STATUS_CANCELLED && !this.props.statusChangeReason) { + this.setState({emptyCancelReason:true}) } else { // otherwise update the status - onConfirm() + this.props.onConfirm() } } - return ( -
    -
    - You are about to { titleStatus } the project -
    -
    -

    - This action will permanently change the status of your project and cannot be undone. -

    + shouldDropdownUp(){ + if (this.wrapper) { + const bounds = this.wrapper.getBoundingClientRect() + const windowHeight = window.innerHeight - { newStatus === PROJECT_STATUS_CANCELLED && -
    - -
    - + return bounds.top > windowHeight / 2 + } + + return false + } + + render() { + const { newStatus, onCancel } = this.props + this.shouldDropdownUp() + return ( +
    { if (input && ! this.wrapper){this.wrapper = input; this.setState({showUp:this.shouldDropdownUp()}) }}}> +
    + You are about to { this.titleStatus } the project +
    +
    +

    + This action will permanently change the status of your project and cannot be undone. +

    + + { newStatus === PROJECT_STATUS_CANCELLED && +
    + +
    + +
    + { this.state.emptyCancelReason &&
    Please select reason to cancel the project
    }
    - { emptyCancelReason &&
    Please select reason to cancel the project
    } -
    - } + } -
    - - +
    + + +
    -
    - ) + ) + } } ProjectStatusChangeConfirmation.propTypes = { + newStatus: PropTypes.string.isRequired, onCancel: PropTypes.func.isRequired, - onConfirm: PropTypes.func.isRequired + onConfirm: PropTypes.func.isRequired, + onReasonUpdate: PropTypes.func.isRequired, + statusChangeReason: PropTypes.string } -export default uncontrollable(ProjectStatusChangeConfirmation, { - emptyCancelReason: 'showEmptyReasonError' -}) +export default ProjectStatusChangeConfirmation \ No newline at end of file diff --git a/src/components/ProjectStatus/ProjectStatusChangeConfirmation.scss b/src/components/ProjectStatus/ProjectStatusChangeConfirmation.scss index 4867bd9b5..da7c0b3aa 100644 --- a/src/components/ProjectStatus/ProjectStatusChangeConfirmation.scss +++ b/src/components/ProjectStatus/ProjectStatusChangeConfirmation.scss @@ -25,4 +25,9 @@ width: 100%; } } + + &.dropdown-up { + top: auto; + bottom: 320px; + } } \ No newline at end of file diff --git a/src/components/ProjectStatus/editableProjectStatus.js b/src/components/ProjectStatus/editableProjectStatus.js index 0cd83d6fd..7aa6b8df8 100644 --- a/src/components/ProjectStatus/editableProjectStatus.js +++ b/src/components/ProjectStatus/editableProjectStatus.js @@ -5,12 +5,13 @@ import ProjectStatus from './ProjectStatus' import cn from 'classnames' import _ from 'lodash' import { enhanceDropdown } from 'appirio-tech-react-components' -import SVGIconImage from '../SVGIconImage' import { PROJECT_STATUS, PROJECT_STATUS_COMPLETED, PROJECT_STATUS_CANCELLED } from '../../config/constants' +import CarretDownNormal9px from '../../assets/icons/arrow-9px-carret-down-normal.svg' + const hocStatusDropdown = (CompositeComponent) => { class StatusDropdown extends Component { @@ -42,7 +43,9 @@ const hocStatusDropdown = (CompositeComponent) => { withoutLabel={withoutLabel} unifiedHeader={unifiedHeader} /> - { canEdit && } + { canEdit && + + }
    { isOpen && canEdit &&
    @@ -124,7 +127,7 @@ const editableProjectStatus = (CompositeComponent) => class extends Component { const { canEdit } = this.props const ProjectStatusDropdown = canEdit ? enhanceDropdown(hocStatusDropdown(CompositeComponent)) : hocStatusDropdown(CompositeComponent) return ( -
    +
    { showStatusChangeDialog && diff --git a/src/components/ProjectStatusSection/ProjectStatusSection.scss b/src/components/ProjectStatusSection/ProjectStatusSection.scss index 196639312..d29b2116a 100644 --- a/src/components/ProjectStatusSection/ProjectStatusSection.scss +++ b/src/components/ProjectStatusSection/ProjectStatusSection.scss @@ -1,5 +1,4 @@ @import "tc-includes"; - .project-status-section { display: flex; border-top: 1px solid $tc-gray-10; @@ -59,12 +58,7 @@ display: block; height: 12px; width: 12px; - background: url('../../assets/images/ui-16px-e_round-e-alert.svg') no-repeat 50% 50%; background-size: 12px 12px; - // -webkit-mask: url('../../assets/images/ui-16px-e_round-e-alert.svg') no-repeat 50% 50%; - // background-color: $tc-white; - // mask-size: 12px; - // -webkit-mask-size: 12px; } } @@ -77,12 +71,7 @@ display: block; height: 12px; width: 12px; - background: url('../../assets/images/ui-16px-1_check-simple.svg') no-repeat 50% 50%; background-size: 12px 12px; - // -webkit-mask: url('../../assets/images/ui-16px-1_check-simple.svg') no-repeat 50% 50%; - // background-color: $tc-white; - // mask-size: 12px; - // -webkit-mask-size: 12px; } } } @@ -123,12 +112,7 @@ display: block; height: 12px; width: 12px; - background: url('../../assets/images/ui-16px-e_round-e-alert.svg') no-repeat 50% 50%; background-size: 12px 12px; - // -webkit-mask: url('../../assets/images/ui-16px-e_round-e-alert.svg') no-repeat 50% 50%; - // background-color: $tc-white; - // mask-size: 12px; - // -webkit-mask-size: 12px; } } @@ -141,21 +125,11 @@ display: block; height: 12px; width: 12px; - background: url('../../assets/images/ui-16px-1_check-simple.svg') no-repeat 50% 50%; background-size: 12px 12px; - // -webkit-mask: url('../../assets/images/ui-16px-1_check-simple.svg') no-repeat 50% 50%; - // background-color: $tc-white; - // mask-size: 12px; - // -webkit-mask-size: 12px; } } &.editable { cursor: pointer; - &:hover { - &::after { - background: url('../../assets/images/arrows-9px-carret-down-expanded.svg') no-repeat 50% 50%; - } - } &::after { content: ''; display: inline-block; @@ -165,15 +139,8 @@ right: 10px; top: 8px; background-size: 9px 4px; - background: url('../../assets/images/arrow-9px-carret-down-normal.svg') no-repeat 50% 50%; } } - &.active { - &::after { - background: url('../../assets/images/arrows-9px-carret-down-expanded.svg') no-repeat 50% 50%; - } - } - } } @@ -185,7 +152,6 @@ ul { padding: 0; li { - background: url("../../assets/images/icon-direct-arrow.svg") no-repeat 0 center; padding-left: $base-unit*6; } } diff --git a/src/components/ProjectType/ProjectType.jsx b/src/components/ProjectType/ProjectType.jsx index eea20756f..8c2d56a51 100644 --- a/src/components/ProjectType/ProjectType.jsx +++ b/src/components/ProjectType/ProjectType.jsx @@ -6,16 +6,18 @@ import PanelProject from '../PanelProject/PanelProject' import TextTruncate from 'react-text-truncate' import { findCategory } from '../../config/projectWizard' import {Link} from 'react-router-dom' +import WorkProject from '../../assets/icons/tech-32px-outline-work-project.svg' const deviceMap = { - phone:
    Phone
    , - tablet:
    Tablet
    , - desktop:
    Desktop
    , - wearable:
    Apple Watch
    , - 'apple-watch':
    Apple Watch
    , - 'android-watch':
    Android Watch
    + phone:
    Phone
    , + tablet:
    Tablet
    , + desktop:
    Desktop
    , + wearable:
    Apple Watch
    , + 'apple-watch':
    Apple Watch
    , + 'android-watch':
    Android Watch
    } + /*eslint-enable camelcase */ const ProjectType = ({projectId, type, description, devices}) => ( @@ -32,7 +34,10 @@ const ProjectType = ({projectId, type, description, devices}) => (
    {type === 'generic' && -
    Work Project
    } +
    + + Work Project +
    } {type !== 'generic' &&
    {devices.slice(0, 3).map((device) => deviceMap[device])} diff --git a/src/components/ProjectType/ProjectType.scss b/src/components/ProjectType/ProjectType.scss index db8b3a109..1b62a966e 100644 --- a/src/components/ProjectType/ProjectType.scss +++ b/src/components/ProjectType/ProjectType.scss @@ -1,5 +1,4 @@ @import 'tc-includes'; - .project-icons{ @include roboto; font-size: $tc-label-md; @@ -22,24 +21,4 @@ width: 40px; background-size: 32px; } - - .icon-work-project{ - background: url('../../assets/images/tech-32px-outline-work-project.svg') no-repeat center top; - width: 120px; - } - .icon-iphone{ - background: url('../../assets/images/tech-32-outline_mobile.svg') no-repeat center top; - } - .icon-ipad{ - background: url('../../assets/images/tech-32-outline_tablet-button.svg') no-repeat center top; - } - .icon-web{ - background: url('../../assets/images/tech-32-outline_desktop.svg') no-repeat center top; - } - .icon-apple-watch{ - background: url('../../assets/images/tech-32-outline_watch-time.svg') no-repeat center top; - } - .icon-android-wear{ - background: url('../../assets/images/tech-32-outline_watch-circle.svg') no-repeat center top; - } } \ No newline at end of file diff --git a/src/components/RichTextArea/RichTextArea.jsx b/src/components/RichTextArea/RichTextArea.jsx index 0c31407d4..a0a4c9c4e 100644 --- a/src/components/RichTextArea/RichTextArea.jsx +++ b/src/components/RichTextArea/RichTextArea.jsx @@ -1,5 +1,3 @@ - - import React from 'react' import PropTypes from 'prop-types' import Editor, {composeDecorators} from 'draft-js-plugins-editor' @@ -18,9 +16,13 @@ import stateToMarkdown from '../../helpers/stateToMarkdown' import 'draft-js-link-plugin/lib/plugin.css' import EditorIcons from './EditorIcons' import './RichTextArea.scss' +import 'draft-js-mention-plugin/lib/plugin.css' +import createMentionPlugin, { defaultSuggestionsFilter } from 'draft-js-mention-plugin' +import _ from 'lodash' const linkPlugin = createLinkPlugin() const blockDndPlugin = createBlockDndPlugin() + const decorator = composeDecorators( blockDndPlugin.decorator ) @@ -51,7 +53,7 @@ const blocks = [ class RichTextArea extends React.Component { constructor(props) { super(props) - this.state = {editorExpanded: false, editorState: EditorState.createEmpty(), titleValue: ''} + this.state = {editorExpanded: false, editorState: EditorState.createEmpty(), titleValue: '', suggestions: [], allSuggestions:[]} this.onTitleChange = this.onTitleChange.bind(this) this.onEditorChange = this.onEditorChange.bind(this) this.handleKeyCommand = this.handleKeyCommand.bind(this) @@ -64,6 +66,11 @@ class RichTextArea extends React.Component { this.getEditorState = this.getEditorState.bind(this) this.setEditorState = this.setEditorState.bind(this) this.setUploadState = this.setUploadState.bind(this) + this.onSearchChange = this.onSearchChange.bind(this) + this.onAddMention = this.onAddMention.bind(this) + this.mentionPlugin = createMentionPlugin({mentionPrefix: '@'}) + this.plugins = plugins.slice(0) + this.plugins.push(this.mentionPlugin) } componentDidMount() { @@ -72,12 +79,15 @@ class RichTextArea extends React.Component { } componentWillMount() { + const suggestions = _.map(_.values(this.props.allMembers), (e) => { return {name: e.firstName + ' ' + e.lastName, handle: e.handle, userId: e.userId, link:'/users/'+e.handle} }) this.setState({ editorExpanded: this.props.editMode, titleValue: this.props.title || '', editorState: this.props.content ? EditorState.createWithContent(markdownToState(this.props.content)) : EditorState.createEmpty(), currentMDContent: this.props.content, - oldMDContent: this.props.oldContent + oldMDContent: this.props.oldContent, + suggestions, + allSuggestions:suggestions }) } @@ -86,6 +96,7 @@ class RichTextArea extends React.Component { } componentWillReceiveProps(nextProps) { + if (nextProps.isCreating !== this.props.isCreating && !nextProps.isCreating && !nextProps.hasError) { this.clearState() } else if ((nextProps.isGettingComment !== this.props.isGettingComment && !nextProps.isGettingComment) @@ -201,12 +212,20 @@ class RichTextArea extends React.Component { return } const title = this.state.titleValue + const content = this.state.currentMDContent + if ((this.props.disableTitle || title) && content) { this.props.onPost({title, content}) } } - + onSearchChange({value}){ + this.setState({ + suggestions: defaultSuggestionsFilter(value, this.state.allSuggestions) + }) + } + onAddMention() { + } cancelEdit() { this.props.cancelEdit() } @@ -220,6 +239,7 @@ class RichTextArea extends React.Component { this.setState({uploading}) } render() { + const {MentionSuggestions} = this.mentionPlugin const {className, avatarUrl, authorName, titlePlaceholder, contentPlaceholder, editMode, isCreating, isGettingComment, disableTitle} = this.props const {editorExpanded, editorState, titleValue, oldMDContent, currentMDContent, uploading} = this.state let canSubmit = (disableTitle || titleValue.trim()) @@ -232,6 +252,28 @@ class RichTextArea extends React.Component { const currentEntity = getCurrentEntity(editorState) const disableForCodeBlock = blockType === 'code-block' + const Entry = (props) => { + const { + mention, + theme, + searchValue, // eslint-disable-line no-unused-vars + isFocused, // eslint-disable-line no-unused-vars + ...parentProps + } = props + + return ( +
    +
    +
    +
    + {mention.get('name') +' - '+mention.get('handle')} +
    +
    +
    +
    + ) + } + return (
    {(isCreating || isGettingComment) && @@ -258,15 +300,23 @@ class RichTextArea extends React.Component { />
    {!isGettingComment && - +
    + + +
    }
    @@ -358,7 +408,8 @@ RichTextArea.propTypes = { oldTitle: PropTypes.string, oldContent: PropTypes.string, title: PropTypes.string, - content: PropTypes.string + content: PropTypes.string, + allMembers: PropTypes.object } -export default RichTextArea +export default RichTextArea \ No newline at end of file diff --git a/src/components/SVGIconImage.jsx b/src/components/SVGIconImage.jsx deleted file mode 100644 index 212e330f7..000000000 --- a/src/components/SVGIconImage.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' - - -const SVGIconImage = ({ filePath }) => { - const Icon = require(`!svg-react-loader?name=Icon!../assets/images/${filePath}.svg`) - return ( - - ) -} - -SVGIconImage.propTypes = { - filePath: PropTypes.string -} - -export default SVGIconImage diff --git a/src/components/TeamManagement/AddTeamMember.jsx b/src/components/TeamManagement/AddTeamMember.jsx index 8a6cfab21..00a6e8b54 100644 --- a/src/components/TeamManagement/AddTeamMember.jsx +++ b/src/components/TeamManagement/AddTeamMember.jsx @@ -2,12 +2,10 @@ import React from 'react' import PropTypes from 'prop-types' import AutoCompleteInput from './AutoCompleteInput' import cn from 'classnames' -import { Icons } from 'appirio-tech-react-components' +import XMarkIcon from '../../assets/icons/icon-x-mark.svg' import { PROJECT_ROLE_CUSTOMER } from '../../config/constants' import Scroll from 'react-scroll' -const { XMarkIcon } = Icons - const AddTeamMember = (props) => { const { isAddingTeamMember, onAddNewMember, onToggleAddTeamMember, onKeywordChange, selectedNewMember, error, @@ -15,6 +13,7 @@ const AddTeamMember = (props) => { } = props const onTypeChangeCustomer = () => onFilterTypeChange('customer') const onTypeChangeCopilot = () => onFilterTypeChange('copilot') + const onTypeChangeManager = () => onFilterTypeChange('manager') const onBtnClose = () => { onKeywordChange('') onToggleAddTeamMember(false) @@ -42,6 +41,23 @@ const AddTeamMember = (props) => { Add a Team Member
    + {(currentUser.isManager || currentUser.isCopilot) &&
    +
      +
    • + Member +
    • +
    • + Copilot +
    • + {currentUser.isManager ? ( +
    • + Manager +
    • + ) : ( + null + )} +
    +
    }
    ) diff --git a/src/components/TeamManagement/AutoCompleteInput.jsx b/src/components/TeamManagement/AutoCompleteInput.jsx index 3a1306708..1530b3ef9 100644 --- a/src/components/TeamManagement/AutoCompleteInput.jsx +++ b/src/components/TeamManagement/AutoCompleteInput.jsx @@ -1,9 +1,11 @@ import React from 'react' -import PropTypes from 'prop-types' +import PT from 'prop-types' import ReactDOM from 'react-dom' import uncontrollable from 'uncontrollable' import { Avatar } from 'appirio-tech-react-components' import { AUTOCOMPLETE_TRIGGER_LENGTH } from '../../config/constants' +import InputIcon from '../../assets/icons/username-icon.svg' + class AutoCompleteInput extends React.Component { @@ -60,7 +62,8 @@ class AutoCompleteInput extends React.Component {
    } - + + {selectedNewMember && } { let icon switch (props.type) { case 'user-remove': - icon = + icon = break case 'leave': - icon = + icon = break case 'promote': - icon = + icon = break } return ( @@ -77,7 +80,7 @@ const MemberRow = ({ member, currentMember, currentUser, onMemberDelete, onChang return (
    - +
    {member.firstName} {member.lastName} {member === currentMember && (you) } diff --git a/src/components/TeamManagement/TeamManagement.scss b/src/components/TeamManagement/TeamManagement.scss index 9a3e84ece..b88ebb2ef 100644 --- a/src/components/TeamManagement/TeamManagement.scss +++ b/src/components/TeamManagement/TeamManagement.scss @@ -97,18 +97,6 @@ $tc-body-extra-small: 12px; opacity: 1.0; } } - - .btn-user-remove { - // @include icon('user-remove.svg'); - } - - .btn-promote { - // @include icon('promote.svg'); - } - - .btn-leave { - // @include icon('exit.svg'); - } } &.add-team-member { @@ -121,7 +109,6 @@ $tc-body-extra-small: 12px; padding-left: 10px; width: 40px; height: 40px; - // @include icon('user-add.svg'); border: 2px solid $tc-gray-50; background-position: center; background-size: 16px; @@ -181,7 +168,6 @@ $tc-body-extra-small: 12px; position: absolute; top: $base-unit*3; right: $base-unit*3; - // @include icon('x-mark-big.svg'); background-size: $tc-heading-extra-small; overflow: hidden; } @@ -233,7 +219,7 @@ $tc-body-extra-small: 12px; &:focus { background: $tc-white !important; - border-color: $tc-dark-blue-90 !important; + border-color: $tc-dark-blue !important; } &.error { @@ -242,7 +228,7 @@ $tc-body-extra-small: 12px; &:focus { background: $tc-white !important; - border-color: $tc-dark-blue-90 !important; + border-color: $tc-dark-blue !important; } } } @@ -294,7 +280,6 @@ $tc-body-extra-small: 12px; &:empty { flex-shrink: 0; width: 30px; - // @include icon('username-icon.svg'); background-size: 30px 30px; background-color: $tc-gray-20; background-position: center; @@ -354,11 +339,11 @@ $tc-body-extra-small: 12px; width: 160px; list-style-type: none; padding: 0; - margin: 10px 0 0 0; + margin: 10px 0 10px 0; ul { display: flex; - width: 160px; + width: 200px; } li { @@ -385,7 +370,7 @@ $tc-body-extra-small: 12px; &.active { cursor: default; - background: $tc-dark-blue-90; + background: $tc-dark-blue; color: $tc-white; // box-shadow: inset 0px 1px 3px 0px rgba($tc-gray-80,0.38); a { diff --git a/src/components/TopBar/NewProjectNavLink.jsx b/src/components/TopBar/NewProjectNavLink.jsx index e4ea6e270..29acfe502 100644 --- a/src/components/TopBar/NewProjectNavLink.jsx +++ b/src/components/TopBar/NewProjectNavLink.jsx @@ -1,8 +1,9 @@ import React from 'react' import PropTypes from 'prop-types' import { Link } from 'react-router-dom' -import SVGIconImage from '../SVGIconImage' import './NewProjectNavLink.scss' +import BoldAdd from '../../assets/icons/ui-16px-1_bold-add.svg' + const NewProjectNavLink = ({ compact=false, returnUrl }) => { if (compact) { @@ -13,7 +14,9 @@ const NewProjectNavLink = ({ compact=false, returnUrl }) => { search: returnUrl ? '?returnUrl=' + returnUrl : '' }} className="new-project-link" > -
    +
    + +
    ) } else { diff --git a/src/components/TopBar/ProjectToolBar.js b/src/components/TopBar/ProjectToolBar.js index 84facbeba..94cc9fd8b 100644 --- a/src/components/TopBar/ProjectToolBar.js +++ b/src/components/TopBar/ProjectToolBar.js @@ -2,52 +2,149 @@ require('./ProjectToolBar.scss') import _ from 'lodash' import React from 'react' -import PropTypes from 'prop-types' -import { NavLink } from 'react-router-dom' +import PT from 'prop-types' +import { NavLink, withRouter } from 'react-router-dom' import { connect } from 'react-redux' import ReactDOM from 'react-dom' import NotificationsDropdown from '../NotificationsDropdown/NotificationsDropdownContainer' -import SVGIconImage from '../SVGIconImage' import NewProjectNavLink from './NewProjectNavLink' +import Dashboard from '../../assets/icons/icon-dashboard.svg' +import DashboardActive from '../../assets/icons/icon-dashboard-active.svg' +import Specification from '../../assets/icons/icon-ruler-pencil.svg' +import SpecificationActive from '../../assets/icons/icon-ruler-pencil-active.svg' +import Chat from '../../assets/icons/icon-chat.svg' +import ChatActive from '../../assets/icons/icon-chat-active.svg' +import TailLeft from '../../assets/icons/arrows-16px-1_tail-left.svg' function isEllipsisActive(el) { return (el.offsetWidth < el.scrollWidth) } + class ProjectToolBar extends React.Component { constructor(props) { super(props) this.state = { - isTooltipVisible: false + isTooltipVisible: false, + dashboardIcon: '', + specificationIcon: '', + activePage: 'dashboard', + activeDashboard: 'not-active', + activeSpecification: 'not-active', + activeMessages: 'not-active' } this.onNameEnter = this.onNameEnter.bind(this) this.onNameLeave = this.onNameLeave.bind(this) } + setActivePage() { + const path = this.props.location.pathname + const activeDashboardPage = path.search('projects') > 0 + const activeSpecificationPage = path.search('specification') > 0 + const activeChatPage = path.search('discussions') > 0 + + if (activeSpecificationPage) { + this.state.activePage = 'specification' + this.state.specificationIcon = + this.state.dashboardIcon = + this.state.messagesIcon = + } else + if (activeDashboardPage) { + this.state.activePage = 'dashboard' + this.state.dashboardIcon = + this.state.specificationIcon = + this.state.messagesIcon = + } + else + if (activeChatPage) { + this.state.activePage = 'discussions' + this.state.dashboardIcon = + this.state.specificationIcon = + this.state.messagesIcon = + } + } + + onDashboardEnter() { + if (this.state.activePage === 'dashboard') { return } + this.setState({ + activeDashboard: 'active' + }) + } + + onDashboardLeave() { + if (this.state.activePage === 'dashboard') { return } + this.setState({ + activeDashboard: 'not-active' + }) + } + + onSpecificationEnter() { + if (this.state.activePage === 'specification') { return } + this.setState({ + activeSpecification: 'active' + }) + } + + onSpecificationLeave() { + if (this.state.activePage === 'specification') { return } + this.setState({ + activeSpecification: 'not-active' + }) + } + + onMessagesEnter() { + if (this.state.activePage === 'discussions') { return } + this.setState({ + activeMessages: 'active' + }) + } + + onMessagesLeave() { + if (this.state.activePage === 'discussions') { return } + this.setState({ + activeMessages: 'not-active' + }) + } + onNameEnter() { const el = ReactDOM.findDOMNode(this.refs.name) if (isEllipsisActive(el)) { - this.setState({isTooltipVisible: true}) + this.setState({ isTooltipVisible: true }) } } onNameLeave() { - this.setState({isTooltipVisible: false}) + this.setState({ isTooltipVisible: false }) + } + + componentWillMount() { + this.props.history.listen(() => { + this.setActivePage() + this.state.activeSpecification = this.state.activePage === 'dashboard' ? 'not-active' : this.state.activeSpecification, + this.state.activeDashboard = this.state.activePage === 'specification' ? 'not-active' : this.state.activeDashboard + }) + } + + componentWillUpdate() { + this.setActivePage() } render() { // TODO: removing isPowerUser until link challenges is needed once again. const { renderLogoSection, userMenu, project } = this.props - const {isTooltipVisible} = this.state + const { isTooltipVisible } = this.state + this.setActivePage() return (
    - { renderLogoSection() } + {renderLogoSection()} {project &&
    - View All Projects + + + View All Projects
    }
    {project &&
    @@ -57,11 +154,15 @@ class ProjectToolBar extends React.Component {
    {project && } - { userMenu } + {userMenu}
    @@ -84,23 +187,23 @@ class ProjectToolBar extends React.Component { } ProjectToolBar.propTypes = { - project: PropTypes.object, - isPowerUser: PropTypes.bool, + project: PT.object, + isPowerUser: PT.bool, /** * Function which render the logo section in the top bar */ - renderLogoSection : PropTypes.func.isRequired + renderLogoSection: PT.func.isRequired } const mapStateToProps = ({ projectState, loadUser }) => { return { - project : projectState.project, - userRoles : _.get(loadUser, 'user.roles', []), - user : loadUser.user + project: projectState.project, + userRoles: _.get(loadUser, 'user.roles', []), + user: loadUser.user } } -const actionsToBind = { } +const actionsToBind = {} // export default ProjectToolBar -export default connect(mapStateToProps, actionsToBind)(ProjectToolBar) +export default connect(mapStateToProps, actionsToBind)(withRouter(ProjectToolBar)) diff --git a/src/components/TopBar/ProjectToolBar.scss b/src/components/TopBar/ProjectToolBar.scss index 90bb4dea9..d7974001b 100644 --- a/src/components/TopBar/ProjectToolBar.scss +++ b/src/components/TopBar/ProjectToolBar.scss @@ -39,15 +39,16 @@ color: $tc-gray-50; text-transform: uppercase; - svg {// Back arrow + .icon-tail-left {// Back arrow fill: $tc-gray-50; height: 13px; margin-right: 10px; + margin-right: 12px; } &:hover, &.hover{ text-decoration: none; color: $tc-orange-30; - svg {// Back arrow + .icon-tail-left {// Back arrow fill: $tc-orange-30; } } @@ -125,6 +126,12 @@ margin: 0; padding: 0; } + li#active a i svg g { + fill: #fee3d0 !important; + } + li#active a i svg path { + fill: #fee3d0 !important; + } ul li{ padding: 0 15px; height: 20px; @@ -143,62 +150,88 @@ position: relative; padding-left: 26px; /* menu icons */ - >i{ + >svg{ display: block; width: 16px; height: 16px; position: absolute; left: 0; top: 2px; - &.icon-dashboard{ - background: url("../../styles/i/icon-dashboard.svg") left top no-repeat; - } - &.icon-specification{ - background: url("../../styles/i/icon-ruler-pencil.svg") left top no-repeat; - } - &.icon-challenges{ - background: url("../../styles/i/icon-hammer.svg") left top no-repeat; - } - &.icon-messages{ - background: url("../../styles/i/icon-chat.svg") left top no-repeat; - } } } + + .icon-dashboard { + width: 16px; + height: 16px; + } + #active svg.icon-dashboard g { + color: #fee3d0 !important; + } + #active svg.icon-dashboard-active g { + color: #fee3d0 !important; + } + .icon-dashboard-hover { + color: $tc-orange-30; + } + .icon-dashboard-active { + color: $tc-orange-70; + } + + .icon-specification { + width: 16px; + height: 16px; + } + #active svg.icon-specification g { + color: #fee3d0 !important; + } + #active svg.icon-specification-active g { + color: #fee3d0 !important; + } + li#active a i svg g { + fill: #fee3d0 !important; + } + .icon-specification-hover { + color: $tc-orange-30; + } + .icon-specification-active { + color: $tc-orange-70; + } + + .icon-messages { + width: 16px; + height: 16px; + } + #active a i svg g { + color: #fee3d0 !important; + } + .icon-messages-hover { + color: $tc-orange-30; + } + .icon-messages-active { + color: $tc-orange-70; + } + + .icon-challenges { + width: 16px; + height: 16px; + } + #active a i svg g { + color: #fee3d0 !important; + } + .icon-challenges-hover { + color: $tc-orange-30; + } + .icon-challenges-active { + color: $tc-orange-70; + } + &:hover, &.hover{ a, a:hover{ color: $tc-orange-30; - >i{ - &.icon-dashboard{ - background: url("../../styles/i/icon-dashboard-hover.svg") left top no-repeat; - } - &.icon-specification{ - background: url("../../styles/i/icon-ruler-pencil-hover.svg") left top no-repeat; - } - &.icon-challenges{ - background: url("../../styles/i/icon-hammer-hover.svg") left top no-repeat; - } - &.icon-messages{ - background: url("../../styles/i/icon-chat-hover.svg") left top no-repeat; - } - } } } a.active, a.active:hover{ color: $tc-orange-70; - >i{ - &.icon-dashboard{ - background: url("../../styles/i/icon-dashboard-active.svg") left top no-repeat; - } - &.icon-specification{ - background: url("../../styles/i/icon-ruler-pencil-active.svg") left top no-repeat; - } - &.icon-challenges{ - background: url("../../styles/i/icon-hammer-active.svg") left top no-repeat; - } - &.icon-messages{ - background: url("../../styles/i/icon-chat-active.svg") left top no-repeat; - } - } } } } @@ -271,7 +304,12 @@ } a { padding-left: 16px; - text-indent: -9999px; + span { + display: none; + } + svg { + position:relative; + } } } } diff --git a/src/components/TopBar/ProjectsToolBar.js b/src/components/TopBar/ProjectsToolBar.js index 1e6ecc63a..50c5ba048 100644 --- a/src/components/TopBar/ProjectsToolBar.js +++ b/src/components/TopBar/ProjectsToolBar.js @@ -11,7 +11,7 @@ import { SearchBar, MenuBar, SwitchButton } from 'appirio-tech-react-components' import Filters from './Filters' import NotificationsDropdown from '../NotificationsDropdown/NotificationsDropdownContainer' import NewProjectNavLink from './NewProjectNavLink' - +import SearchFilter from '../../assets/icons/ui-filters.svg' import { projectSuggestions, loadProjects, setInfiniteAutoload } from '../../projects/actions/loadProjects' @@ -194,7 +194,7 @@ class ProjectsToolBar extends Component { href="javascript:" className={cn('tc-btn tc-btn-sm', {active: isFilterVisible})} onClick={ this.toggleFilter } - >Filters { noOfFilters > 0 && { noOfFilters } } + >Filters { noOfFilters > 0 && { noOfFilters } }
    }
    diff --git a/src/components/TopBar/ProjectsToolBar.scss b/src/components/TopBar/ProjectsToolBar.scss index 0a896a8a4..2a920dd72 100644 --- a/src/components/TopBar/ProjectsToolBar.scss +++ b/src/components/TopBar/ProjectsToolBar.scss @@ -80,7 +80,7 @@ $tc-body-large: 20px; display: flex; align-items: center; // justify-content: center; - padding: 0 2 * $base-unit 0 34px; + padding: 0 2 * $base-unit 0 10px; text-align: left; color: $tc-gray-40; background-color: transparent; @@ -88,26 +88,17 @@ $tc-body-large: 20px; border: 0; font-size: 12px; position: relative; - - &:before { - display: block; - content: ''; - width: 14px; - height: 16px; - position: absolute; - top: 7px; - left: 10px; - background: url("../../styles/i/icon-filter.png") left top no-repeat; - background-size: 14px 32px; + + svg.icon-search-filter { + margin-right: 10px; } &.active { background: $tc-gray-80; box-shadow: inset 0px 1px 3px 0px $tc-rgba-10; - &:before { - background: url("../../styles/i/icon-filter.png") left -16px no-repeat; - background-size: 14px 32px; + svg.icon-search-filter g { + fill: #fff; } } } @@ -116,7 +107,7 @@ $tc-body-large: 20px; width: 15px; height: 15px; margin-left: $base-unit; - background-color: $tc-dark-blue-90; + background-color: $tc-dark-blue; border-radius: 26px; color: $tc-white; display: flex; diff --git a/src/components/TopBar/SectionToolBar.jsx b/src/components/TopBar/SectionToolBar.jsx index 4d8bcc1b2..eceff1499 100644 --- a/src/components/TopBar/SectionToolBar.jsx +++ b/src/components/TopBar/SectionToolBar.jsx @@ -10,13 +10,15 @@ import React from 'react' import PropTypes from 'prop-types' import { Link } from 'react-router-dom' -import SVGIconImage from '../SVGIconImage' import './SectionToolBar.scss' +import ConnectLogoMono from '../../assets/icons/connect-logo-mono.svg' +import XMark from '../../assets/icons/x-mark.svg' + const SectionToolBar = (props) => { - const logo = + const logo = const title =
    {props.title}
    - const close = + const close = const menu = props.menu ?
    {props.menu}
    : null return ( diff --git a/src/components/TopBar/SectionToolBar.scss b/src/components/TopBar/SectionToolBar.scss index 512341825..3ae55386a 100644 --- a/src/components/TopBar/SectionToolBar.scss +++ b/src/components/TopBar/SectionToolBar.scss @@ -35,14 +35,16 @@ &:hover { background-color: #55a5ff; - > svg { + .icon-x-mark { fill: $tc-white; + margin: -6px; } } - > svg { - fill: $tc-black; - } + .icon-x-mark { + fill: $tc-black; + margin: -6px; + } } > .section > .menu { @@ -66,9 +68,10 @@ align-items: center; display: flex; - > svg { + .icon-connect-logo-mono { height: auto; width: 53px; + margin-top: 13px; path { fill: $tc-gray-10; diff --git a/src/components/TopBar/TopBarContainer.js b/src/components/TopBar/TopBarContainer.js index 45da07670..e2ba61a18 100644 --- a/src/components/TopBar/TopBarContainer.js +++ b/src/components/TopBar/TopBarContainer.js @@ -3,7 +3,6 @@ import { connect } from 'react-redux' import { Link, withRouter } from 'react-router-dom' import _ from 'lodash' import { UserDropdown } from 'appirio-tech-react-components' -import SVGIconImage from '../SVGIconImage' import { ACCOUNTS_APP_LOGIN_URL, ACCOUNTS_APP_REGISTER_URL, @@ -13,8 +12,10 @@ import { ROLE_CONNECT_ADMIN, DOMAIN } from '../../config/constants' +import ConnectLogoMono from '../../assets/icons/connect-logo-mono.svg' require('./TopBarContainer.scss') + class TopBarContainer extends React.Component { constructor(props) { @@ -42,7 +43,7 @@ class TopBarContainer extends React.Component { return (
    - + {comp}
    @@ -65,6 +66,7 @@ class TopBarContainer extends React.Component { const isHomePage = this.props.match.path === '/' const loginUrl = `${ACCOUNTS_APP_LOGIN_URL}?retUrl=${window.location.protocol}//${window.location.host}/` const registerUrl = !isHomePage ? ACCOUNTS_APP_REGISTER_URL : null + const profileUrl = `https://${DOMAIN}/settings/profile/` const logoutClick = (evt) => { evt.preventDefault() @@ -74,6 +76,7 @@ class TopBarContainer extends React.Component { const userMenuItems = [ [ + { label: 'Profile Settings', link: profileUrl, absolute: true, id: 0}, { label: 'Help', link: 'https://help.topcoder.com/hc/en-us', absolute: true, id: 0 } ], [ diff --git a/src/components/TopBar/TopBarContainer.scss b/src/components/TopBar/TopBarContainer.scss index a3de3d34d..7013d66b6 100644 --- a/src/components/TopBar/TopBarContainer.scss +++ b/src/components/TopBar/TopBarContainer.scss @@ -40,7 +40,7 @@ // width: 60px; // height: 36px; - > svg { + .icon-connect-logo-mono { height: auto; width: 53px; @@ -130,7 +130,7 @@ top: 50%; margin-top: -4px; height: 7.5px; - //background: url("../../styles/i/arrow-down-black.png") right center no-repeat; + // background: url("../../styles/i/arrow-down-black.png") right center no-repeat; background-size: 10px 7.5px; } } diff --git a/src/components/User/UserTooltip.jsx b/src/components/User/UserTooltip.jsx index 4432fd3d6..13d5b8e79 100644 --- a/src/components/User/UserTooltip.jsx +++ b/src/components/User/UserTooltip.jsx @@ -1,22 +1,24 @@ import React from 'react' import PropTypes from 'prop-types' -import _ from 'lodash' import { Tooltip } from 'appirio-tech-react-components' -import UserAvatar from './UserAvatar' +import { Avatar } from 'appirio-tech-react-components' import { DOMAIN } from '../../../config/constants' require('./UserTooltip.scss') -const UserTooltip = ({ usr, id, previewAvatar }) => { - const rating = _.get(usr, 'maxRating.rating', 0) - const theme = `customer-data level-${id}` +const UserTooltip = ({ usr, id, previewAvatar, size }) => { + const theme = `customer-data size-${size}` const tooltipMargin = previewAvatar ? -(100 + (id * 20)) : 0 return (
    { previewAvatar ? (
    - +
    ) : {usr.firstName} {usr.lastName} } @@ -25,7 +27,10 @@ const UserTooltip = ({ usr, id, previewAvatar }) => {
    @@ -51,10 +56,12 @@ UserTooltip.propTypes = { PropTypes.string, PropTypes.number ]).isRequired, - previewAvatar: PropTypes.bool + previewAvatar: PropTypes.bool, + size: PropTypes.number } UserTooltip.defaultProps = { + size: 30, previewAvatar: false } diff --git a/src/components/User/UserTooltip.scss b/src/components/User/UserTooltip.scss index 36ae2feed..9063ee114 100644 --- a/src/components/User/UserTooltip.scss +++ b/src/components/User/UserTooltip.scss @@ -1,38 +1,19 @@ @import 'tc-includes'; - .Tooltip { &.customer-data { - - &.level-0 { - - .tooltip-target { - z-index: 3; - } - - .tooltip-container { - margin-left: -40px; + .tooltip-target { + .Avatar { + height: 30px; + width: 30px; } } - &.level-1 { - + &.size-35 { .tooltip-target { - z-index: 2; - } - - .tooltip-container { - margin-left: -60px; - } - } - - &.level-2 { - - .tooltip-target { - z-index: 1; - } - - .tooltip-container { - margin-left: -80px; + .Avatar { + height: 35px; + width: 35px; + } } } @@ -41,12 +22,12 @@ } .stack-avatar-1 { - margin-left: -10px; + margin-left: -5px; z-index: 2; } .stack-avatar-2 { - margin-left: -10px; + margin-left: -5px; z-index: 1; } @@ -64,28 +45,29 @@ } } + .tooltip-pointer { + background-color: $tc-white; + display: block; + } + + [data-placement="top"] .tooltip-pointer { + border-right: 1px solid rgba($tc-black, 0.2); + border-bottom: 1px solid rgba($tc-black, 0.2); + bottom: -11px !important; + } + + [data-placement="bottom"] .tooltip-pointer { + border-left: 1px solid rgba($tc-black, 0.2); + border-top: 1px solid rgba($tc-black, 0.2); + top: -11px !important; + } + .tooltip-content-container { background-color: $tc-white; width: 400px; padding-top: 20px; padding-left: 20px; - .tooltip-pointer { - background-color: $tc-white; - - &.downward-pointer { - border-right: 1px solid rgba($tc-black, 0.2); - border-bottom: 1px solid rgba($tc-black, 0.2); - bottom: -11px !important; - } - - &.upward-pointer { - border-left: 1px solid rgba($tc-black, 0.2); - border-top: 1px solid rgba($tc-black, 0.2); - top: -11px !important; - } - } - .tooltip-body { color: $tc-black; overflow: hidden; @@ -172,12 +154,11 @@ .ext-link { position: relative; font-size: 11px; - color: $tc-dark-blue-90; + color: $tc-dark-blue; padding-right: 20px; &:after { content: ""; - background: url('./images/external-link.svg') no-repeat 0 0; width: 13px; height: 13px; position: absolute; diff --git a/src/components/Wizard/Wizard.jsx b/src/components/Wizard/Wizard.jsx index 7abb05f56..517658b95 100644 --- a/src/components/Wizard/Wizard.jsx +++ b/src/components/Wizard/Wizard.jsx @@ -1,9 +1,11 @@ import React from 'react' import PT from 'prop-types' import ModalControl from '../ModalControl' -import SVGIconImage from '../SVGIconImage' +import TailLeft from '../../assets/icons/arrows-16px-1_tail-left.svg' +import XMark from '../../assets/icons/x-mark.svg' import './Wizard.scss' + function Wizard(props) { const { step, shouldRenderBackButton, onStepChange, showModal, onCancel } = props let backControl @@ -12,7 +14,7 @@ function Wizard(props) { backControl = ( } + icon={} label="back" onClick={() => onStepChange(step - 1)} /> @@ -22,7 +24,7 @@ function Wizard(props) { modalCloseControl = ( } + icon={} label="esc" onClick={ onCancel } /> diff --git a/src/config/constants.js b/src/config/constants.js index 7f6971bf2..3008fcbd4 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -52,6 +52,7 @@ export const GET_PROJECTS_SUCCESS = 'GET_PROJECTS_SUCCESS' export const GET_PROJECTS_FAILURE = 'GET_PROJECTS_FAILURE' export const SET_PROJECTS_SEARCH_CRITERIA = 'SET_PROJECTS_SEARCH_CRITERIA' export const SET_PROJECTS_INFINITE_AUTOLOAD = 'SET_PROJECTS_INFINITE_AUTOLOAD' +export const SET_PROJECTS_LIST_VIEW = 'SET_PROJECTS_LIST_VIEW' // Delete project @@ -226,6 +227,11 @@ export const PROJECT_STATUS = [ {color: 'red', name: 'Paused', fullName: 'Project is paused', value: PROJECT_STATUS_PAUSED, order: 7, dropDownOrder: 7 } ] +// this defines default criteria to filter projects for projects list +export const PROJECT_LIST_DEFAULT_CRITERIA = { + sort: 'updatedAt desc' +} + export const NOTIFICATION_TYPE = { WARNING: 'warning', NEW_PROJECT: 'new-project', @@ -235,6 +241,12 @@ export const NOTIFICATION_TYPE = { MEMBER_ADDED: 'member-added' } +// projects list view types +export const PROJECTS_LIST_VIEW = { + GRID: 'grid', + CARD: 'card' +} + /* * Project member role */ diff --git a/src/config/projectQuestions/app_dev.v1.0.js b/src/config/projectQuestions/app_dev.v1.0.js index 68baa0846..37ee9ce3a 100644 --- a/src/config/projectQuestions/app_dev.v1.0.js +++ b/src/config/projectQuestions/app_dev.v1.0.js @@ -1,5 +1,14 @@ +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineDesktop from '../../assets/icons/icon-tech-outline-desktop.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' +import IconTcSpecTypeSerif from '../../assets/icons/icon-tc-spec-type-serif.svg' +import IconTcSpecTypeSansSerif from '../../assets/icons/icon-tc-spec-type-sans-serif.svg' +import IconTcSpecIconTypeColorHome from '../../assets/icons/icon-tc-spec-icon-type-color-home.svg' +import IconTcSpecIconTypeOutlineHome from '../../assets/icons/icon-tc-spec-icon-type-outline-home.svg' +import IconTcSpecIconTypeGlyphHome from '../../assets/icons/icon-tc-spec-icon-type-glyph-home.svg' import { findProduct} from '../projectWizard' const isFileRequired = (project, subSections) => { @@ -55,10 +64,10 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { @@ -179,8 +188,8 @@ const sections = [ description: 'The typography used in your designs will fit within these broad font styles', type: 'tiled-radio-group', options: [ - {value: 'serif', title: 'Serif', icon: Icons.IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, - {value: 'sanSerif', title: 'Sans Serif', icon: Icons.IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} + {value: 'serif', title: 'Serif', icon: IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, + {value: 'sanSerif', title: 'Sans Serif', icon: IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} ], fieldName: 'details.designSpecification.fontStyle' }, @@ -198,9 +207,9 @@ const sections = [ description: 'Icons within your designs will follow these styles', type: 'tiled-radio-group', options: [ - {value: 'flatColor', title: 'Flat Color', icon: Icons.IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, - {value: 'thinLine', title: 'Thin Line', icon: Icons.IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, - {value: 'solidLine', title: 'Solid Line', icon: Icons.IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} + {value: 'flatColor', title: 'Flat Color', icon: IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, + {value: 'thinLine', title: 'Thin Line', icon: IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, + {value: 'solidLine', title: 'Solid Line', icon: IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} ], fieldName: 'details.designSpecification.iconStyle' } @@ -318,10 +327,10 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { diff --git a/src/config/projectQuestions/avd.v1.0.js b/src/config/projectQuestions/avd.v1.0.js index a088a1128..af99f5856 100644 --- a/src/config/projectQuestions/avd.v1.0.js +++ b/src/config/projectQuestions/avd.v1.0.js @@ -1,6 +1,9 @@ -import React from 'react' +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineDesktop from '../../assets/icons/icon-tech-outline-desktop.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' import NumberText from '../../components/NumberText/NumberText' import { findProduct} from '../projectWizard' @@ -69,10 +72,10 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'Phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'Wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'Phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'Wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { @@ -285,10 +288,10 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'Phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'Wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'Phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'Wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { diff --git a/src/config/projectQuestions/generic_chatbot.v1.0.js b/src/config/projectQuestions/generic_chatbot.v1.0.js index 8ef68d350..529ce89cc 100644 --- a/src/config/projectQuestions/generic_chatbot.v1.0.js +++ b/src/config/projectQuestions/generic_chatbot.v1.0.js @@ -1,5 +1,4 @@ import _ from 'lodash' -// import { Icons } from 'appirio-tech-react-components' import { findProduct} from '../projectWizard' const isFileRequired = (project, subSections) => { diff --git a/src/config/projectQuestions/ibm_chatbot.v1.0.js b/src/config/projectQuestions/ibm_chatbot.v1.0.js index 41122b9ce..6c9c5e1c8 100644 --- a/src/config/projectQuestions/ibm_chatbot.v1.0.js +++ b/src/config/projectQuestions/ibm_chatbot.v1.0.js @@ -1,5 +1,4 @@ import _ from 'lodash' -// import { Icons } from 'appirio-tech-react-components' import { findProduct} from '../projectWizard' const isFileRequired = (project, subSections) => { @@ -68,6 +67,25 @@ const sections = [ {value: 'false', label: 'No'} ] }, + { + icon: 'question', + required: true, + title: 'Does your organization currently have a chatbot?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.hasChatbot', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + title: 'If yes, can you provide some brief specifics about your current chatbot?', + description: '', + type: 'textbox', + fieldName: 'details.appDefinition.existingChatbotDesc' + }, { icon: 'question', title: 'What capabilities does the chatbot need to support?', @@ -179,6 +197,25 @@ export const basicSections = [ {value: 'false', label: 'No'} ] }, + { + icon: 'question', + required: true, + title: 'Does your organization currently have a chatbot?', + description: '', + type: 'radio-group', + fieldName: 'details.appDefinition.hasChatbot', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ] + }, + { + icon: 'question', + title: 'If yes, can you provide some brief specifics about your current chatbot?', + description: '', + type: 'textbox', + fieldName: 'details.appDefinition.existingChatbotDesc' + }, { icon: 'question', required: true, diff --git a/src/config/projectQuestions/mobility_testing.v1.0.js b/src/config/projectQuestions/mobility_testing.v1.0.js index db0c57ee1..6ef282303 100644 --- a/src/config/projectQuestions/mobility_testing.v1.0.js +++ b/src/config/projectQuestions/mobility_testing.v1.0.js @@ -1,6 +1,8 @@ +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' -// import NumberText from '../../components/NumberText/NumberText' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' import { findProduct} from '../projectWizard' @@ -112,9 +114,9 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] } ] @@ -405,9 +407,9 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] } /*{ @@ -420,7 +422,7 @@ export const basicSections = [ {value: 'upto5', title: 'configurations', icon: NumberText, iconOptions: { number: '5' }, desc: 'or fewer'}, {value: 'upTo10', title: 'configurations', icon: NumberText, iconOptions: { number: '10' }, desc: 'or fewer'}, {value: 'upTo20', title: 'configurations', icon: NumberText, iconOptions: { number: '20' }, desc: 'or fewer'}, - {value: 'dontKnow', title: 'Do not know', icon: SVGIconImage, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: 'We will find the best fit for you.'} + {value: 'dontKnow', title: 'Do not know', iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: 'We will find the best fit for you.'} ] } { diff --git a/src/config/projectQuestions/real_world_testing.v1.0.js b/src/config/projectQuestions/real_world_testing.v1.0.js index 2a9e6d314..90d1925ad 100644 --- a/src/config/projectQuestions/real_world_testing.v1.0.js +++ b/src/config/projectQuestions/real_world_testing.v1.0.js @@ -1,9 +1,15 @@ +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' -import SVGIconImage from '../../components/SVGIconImage' -// import NumberText from '../../components/NumberText/NumberText' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineDesktop from '../../assets/icons/icon-tech-outline-desktop.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' import { findProduct} from '../projectWizard' +import IconDontKnow from '../../assets/icons/icon-dont-know.svg' +import IconTestStructured from '../../assets/icons/icon-test-structured.svg' +import IconTestUnstructured from '../../assets/icons/icon-test-unstructured.svg' + const isFileRequired = (project, subSections) => { const subSection = _.find(subSections, (s) => s.type === 'questions') @@ -56,9 +62,9 @@ const sections = [ fieldName: 'details.appDefinition.testType', type: 'tiled-radio-group', options: [ - {value: 'unstructured', title: 'Unstructured', icon: SVGIconImage, iconOptions: { filePath: 'icon-test-unstructured', fill: '#00000'}, desc: '', price: 6000}, - {value: 'structured', title: 'Structured', icon: SVGIconImage, iconOptions: { filePath: 'icon-test-structured', fill: '#00000'}, desc: '', price: 4000}, - {value: 'dontKnow', title: 'Do not know', icon: SVGIconImage, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: ''} + {value: 'unstructured', title: 'Unstructured', icon: IconTestUnstructured, iconOptions: { filePath: 'icon-test-unstructured', fill: '#00000'}, desc: '', price: 6000}, + {value: 'structured', title: 'Structured', icon: IconTestStructured, iconOptions: { filePath: 'icon-test-structured', fill: '#00000'}, desc: '', price: 4000}, + {value: 'dontKnow', title: 'Do not know', icon: IconDontKnow, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: ''} ] }, { @@ -106,10 +112,10 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] } ] @@ -404,9 +410,9 @@ export const basicSections = [ fieldName: 'details.appDefinition.testType', type: 'tiled-radio-group', options: [ - {value: 'unstructured', title: 'Unstructured', icon: SVGIconImage, iconOptions: { filePath: 'icon-test-unstructured', fill: '#00000'}, desc: ''}, - {value: 'structured', title: 'Structured', icon: SVGIconImage, iconOptions: { filePath: 'icon-test-structured', fill: '#00000'}, desc: ''}, - {value: 'dontKnow', title: 'Do not know', icon: SVGIconImage, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: ''} + {value: 'unstructured', title: 'Unstructured', icon: IconTestUnstructured, iconOptions: { filePath: 'icon-test-unstructured', fill: '#00000'}, desc: ''}, + {value: 'structured', title: 'Structured', icon: IconTestStructured, iconOptions: { filePath: 'icon-test-structured', fill: '#00000'}, desc: ''}, + {value: 'dontKnow', title: 'Do not know', icon: IconDontKnow, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: ''} ] }, { @@ -455,10 +461,10 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] } /*{ @@ -471,7 +477,7 @@ export const basicSections = [ {value: 'upto5', title: 'configurations', icon: NumberText, iconOptions: { number: '5' }, desc: 'or fewer'}, {value: 'upTo10', title: 'configurations', icon: NumberText, iconOptions: { number: '10' }, desc: 'or fewer'}, {value: 'upTo20', title: 'configurations', icon: NumberText, iconOptions: { number: '20' }, desc: 'or fewer'}, - {value: 'dontKnow', title: 'Do not know', icon: SVGIconImage, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: 'We will find the best fit for you.'} + {value: 'dontKnow', title: 'Do not know', icon: IconTestUnstructured, iconOptions: { filePath: 'icon-dont-know', fill: '#00000'}, desc: 'We will find the best fit for you.'} ] } { diff --git a/src/config/projectQuestions/topcoder.v1.js b/src/config/projectQuestions/topcoder.v1.js index 1d974cb85..250349b8a 100644 --- a/src/config/projectQuestions/topcoder.v1.js +++ b/src/config/projectQuestions/topcoder.v1.js @@ -1,5 +1,10 @@ +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +import IconTcSpecTypeSerif from '../../assets/icons/icon-tc-spec-type-serif.svg' +import IconTcSpecTypeSansSerif from '../../assets/icons/icon-tc-spec-type-sans-serif.svg' +import IconTcSpecIconTypeColorHome from '../../assets/icons/icon-tc-spec-icon-type-color-home.svg' +import IconTcSpecIconTypeOutlineHome from '../../assets/icons/icon-tc-spec-icon-type-outline-home.svg' +import IconTcSpecIconTypeGlyphHome from '../../assets/icons/icon-tc-spec-icon-type-glyph-home.svg' const isFileRequired = (project, subSections) => { const subSection = _.find(subSections, (s) => s.type === 'questions') @@ -102,8 +107,8 @@ const sections = [ description: 'The typography used in your designs will fit within these broad font styles', type: 'tiled-radio-group', options: [ - {value: 'serif', title: 'Serif', icon: Icons.IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, - {value: 'sanSerif', title: 'Sans Serif', icon: Icons.IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} + {value: 'serif', title: 'Serif', icon: IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, + {value: 'sanSerif', title: 'Sans Serif', icon: IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} ], fieldName: 'details.designSpecification.fontStyle' }, @@ -121,9 +126,9 @@ const sections = [ description: 'Icons within your designs will follow these styles', type: 'tiled-radio-group', options: [ - {value: 'flatColor', title: 'Flat Color', icon: Icons.IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, - {value: 'thinLine', title: 'Thin Line', icon: Icons.IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, - {value: 'solidLine', title: 'Solid Line', icon: Icons.IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} + {value: 'flatColor', title: 'Flat Color', icon: IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, + {value: 'thinLine', title: 'Thin Line', icon: IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, + {value: 'solidLine', title: 'Solid Line', icon: IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} ], fieldName: 'details.designSpecification.iconStyle' } diff --git a/src/config/projectQuestions/visual_design.v1.0.js b/src/config/projectQuestions/visual_design.v1.0.js index a5280ea76..29d4953a7 100644 --- a/src/config/projectQuestions/visual_design.v1.0.js +++ b/src/config/projectQuestions/visual_design.v1.0.js @@ -1,6 +1,14 @@ -import React from 'react' +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineDesktop from '../../assets/icons/icon-tech-outline-desktop.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' +import IconTcSpecTypeSerif from '../../assets/icons/icon-tc-spec-type-serif.svg' +import IconTcSpecTypeSansSerif from '../../assets/icons/icon-tc-spec-type-sans-serif.svg' +import IconTcSpecIconTypeColorHome from '../../assets/icons/icon-tc-spec-icon-type-color-home.svg' +import IconTcSpecIconTypeOutlineHome from '../../assets/icons/icon-tc-spec-icon-type-outline-home.svg' +import IconTcSpecIconTypeGlyphHome from '../../assets/icons/icon-tc-spec-icon-type-glyph-home.svg' import NumberText from '../../components/NumberText/NumberText' import { findProduct} from '../projectWizard' @@ -71,10 +79,10 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'Phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'Wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'Phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'Wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { @@ -209,8 +217,8 @@ const sections = [ description: 'The typography used in your designs will fit within these broad font styles', type: 'tiled-radio-group', options: [ - {value: 'serif', title: 'Serif', icon: Icons.IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, - {value: 'sanSerif', title: 'Sans Serif', icon: Icons.IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} + {value: 'serif', title: 'Serif', icon: IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, + {value: 'sanSerif', title: 'Sans Serif', icon: IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} ], fieldName: 'details.designSpecification.fontStyle' }, @@ -228,9 +236,9 @@ const sections = [ description: 'Icons within your designs will follow these styles', type: 'tiled-radio-group', options: [ - {value: 'flatColor', title: 'Flat Color', icon: Icons.IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, - {value: 'thinLine', title: 'Thin Line', icon: Icons.IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, - {value: 'solidLine', title: 'Solid Line', icon: Icons.IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} + {value: 'flatColor', title: 'Flat Color', icon: IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, + {value: 'thinLine', title: 'Thin Line', icon: IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, + {value: 'solidLine', title: 'Solid Line', icon: IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} ], fieldName: 'details.designSpecification.iconStyle' } @@ -304,10 +312,10 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'Phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'Wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'Phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'Wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { diff --git a/src/config/projectQuestions/website.v1.0.js b/src/config/projectQuestions/website.v1.0.js index 0134f9b55..5ffdc87d9 100644 --- a/src/config/projectQuestions/website.v1.0.js +++ b/src/config/projectQuestions/website.v1.0.js @@ -1,5 +1,14 @@ +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineDesktop from '../../assets/icons/icon-tech-outline-desktop.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' +import IconTcSpecTypeSerif from '../../assets/icons/icon-tc-spec-type-serif.svg' +import IconTcSpecTypeSansSerif from '../../assets/icons/icon-tc-spec-type-sans-serif.svg' +import IconTcSpecIconTypeColorHome from '../../assets/icons/icon-tc-spec-icon-type-color-home.svg' +import IconTcSpecIconTypeOutlineHome from '../../assets/icons/icon-tc-spec-icon-type-outline-home.svg' +import IconTcSpecIconTypeGlyphHome from '../../assets/icons/icon-tc-spec-icon-type-glyph-home.svg' import { findProduct} from '../projectWizard' const isFileRequired = (project, subSections) => { @@ -55,10 +64,10 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { @@ -134,8 +143,8 @@ const sections = [ description: 'The typography used in your designs will fit within these broad font styles', type: 'tiled-radio-group', options: [ - {value: 'serif', title: 'Serif', icon: Icons.IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, - {value: 'sanSerif', title: 'Sans Serif', icon: Icons.IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} + {value: 'serif', title: 'Serif', icon: IconTcSpecTypeSerif, iconOptions: { fill: '#00000'}, desc: 'formal, old style'}, + {value: 'sanSerif', title: 'Sans Serif', icon: IconTcSpecTypeSansSerif, iconOptions: { fill: '#00000'}, desc: 'clean, modern, informal'} ], fieldName: 'details.designSpecification.fontStyle' }, @@ -153,9 +162,9 @@ const sections = [ description: 'Icons within your designs will follow these styles', type: 'tiled-radio-group', options: [ - {value: 'flatColor', title: 'Flat Color', icon: Icons.IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, - {value: 'thinLine', title: 'Thin Line', icon: Icons.IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, - {value: 'solidLine', title: 'Solid Line', icon: Icons.IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} + {value: 'flatColor', title: 'Flat Color', icon: IconTcSpecIconTypeColorHome, iconOptions: { fill: '#00000'}, desc: 'playful'}, + {value: 'thinLine', title: 'Thin Line', icon: IconTcSpecIconTypeOutlineHome, iconOptions: { fill: '#00000'}, desc: 'modern'}, + {value: 'solidLine', title: 'Solid Line', icon: IconTcSpecIconTypeGlyphHome, iconOptions: { fill: '#00000'}, desc: 'classic'} ], fieldName: 'details.designSpecification.iconStyle' } @@ -273,10 +282,10 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { diff --git a/src/config/projectQuestions/wireframes.v1.0.js b/src/config/projectQuestions/wireframes.v1.0.js index e40b359e0..8faf97ff1 100644 --- a/src/config/projectQuestions/wireframes.v1.0.js +++ b/src/config/projectQuestions/wireframes.v1.0.js @@ -1,6 +1,9 @@ -import React from 'react' +import React from 'react' // eslint-disable-line no-unused-vars import _ from 'lodash' -import { Icons } from 'appirio-tech-react-components' +import IconTechOutlineMobile from '../../assets/icons/icon-tech-outline-mobile.svg' +import IconTechOutlineTablet from '../../assets/icons/icon-tech-outline-tablet.svg' +import IconTechOutlineDesktop from '../../assets/icons/icon-tech-outline-desktop.svg' +import IconTechOutlineWatchApple from '../../assets/icons/icon-tech-outline-watch-apple.svg' import NumberText from '../../components/NumberText/NumberText' import { findProduct} from '../projectWizard' @@ -69,10 +72,10 @@ const sections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'Phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'Wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'Phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'Wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { @@ -285,10 +288,10 @@ export const basicSections = [ fieldName: 'details.appDefinition.primaryTarget', type: 'tiled-radio-group', options: [ - {value: 'Phone', title: 'Phone', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Tablet', title: 'Tablet', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, - {value: 'Desktop', title: 'Desktop', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, - {value: 'Wearable', title: 'Wearable', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} + {value: 'Phone', title: 'Phone', icon: IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Tablet', title: 'Tablet', icon: IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: 'iOS, Android, Hybrid'}, + {value: 'Desktop', title: 'Desktop', icon: IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: 'all OS'}, + {value: 'Wearable', title: 'Wearable', icon: IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'Watch OS, Android Wear'} ] }, { diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 84bb7d8bc..d020e94f1 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -48,7 +48,7 @@ const products = { formDesclaimer: 'IBM is receiving compensation from Topcoder for referring customers to IBM Watson Conversation Service.', icon: 'product-chatbot-watson', id: 'watson_chatbot', - aliases: ['watson_chatbot'], + aliases: ['watson_chatbot', 'watson-chatbot'], hidden: true }, Chatbot: { diff --git a/src/helpers/markdownToState.js b/src/helpers/markdownToState.js index 6efa3bb69..6cf0a82f7 100644 --- a/src/helpers/markdownToState.js +++ b/src/helpers/markdownToState.js @@ -65,6 +65,20 @@ const DefaultBlockTypes = { // meethod that returns the draftjs key + any data needed. const DefaultBlockEntities = { link_open: (item) => { //eslint-disable-line + + if (item.title && item.title.startsWith('@')){ + return { + type: 'mention', + mutability: 'MUTABLE', + data: { + mention: new Map([ + ['name', item.title.slice(1)], + ['link', item.href] + ]) + } + } + } + return { type: 'LINK', mutability: 'MUTABLE', diff --git a/src/helpers/stateToMarkdown.js b/src/helpers/stateToMarkdown.js index b92875bde..41e5c5f15 100644 --- a/src/helpers/stateToMarkdown.js +++ b/src/helpers/stateToMarkdown.js @@ -243,6 +243,11 @@ class MarkupGenerator { const src = data.src || '' const alt = data.alt ? ` "${escapeTitle(data.alt)}"` : '' return `![${alt}](${encodeURL(src)})` + } else if (entity !== null && entity.getType().toLowerCase() === 'mention') { + const data = entity.getData() + const url = data.mention.get('link') || '' + const title = data.mention.get('handle') ? ` "@${escapeTitle(data.mention.get('handle'))}"` : '' + return `[${content}](${encodeURL(url)}${title})` } else { return content } diff --git a/src/projects/actions/loadProjects.js b/src/projects/actions/loadProjects.js index 94b662824..3adab5169 100644 --- a/src/projects/actions/loadProjects.js +++ b/src/projects/actions/loadProjects.js @@ -4,7 +4,8 @@ import { SET_SEARCH_TERM, SET_PROJECTS_SEARCH_CRITERIA, CLEAR_PROJECT_SUGGESTIONS_SEARCH, PROJECT_SUGGESTIONS_SEARCH_SUCCESS, ROLE_CONNECT_COPILOT, ROLE_CONNECT_MANAGER, ROLE_ADMINISTRATOR, ROLE_CONNECT_ADMIN, - SET_PROJECTS_INFINITE_AUTOLOAD + SET_PROJECTS_INFINITE_AUTOLOAD, + SET_PROJECTS_LIST_VIEW } from '../../config/constants' import { getProjects } from '../../api/projects' import { loadMembers } from '../../actions/members' @@ -111,6 +112,12 @@ export function setInfiniteAutoload(infiniteAutload) { } } +export function setProjectsListView(projectsListView) { + return (dispatch) => { + dispatch({ type: SET_PROJECTS_LIST_VIEW, payload: projectsListView }) + } +} + /** export function loadProjects(searchTerm) { return { diff --git a/src/projects/create/components/IncompleteProjectConfirmation.js b/src/projects/create/components/IncompleteProjectConfirmation.js index 8f7e9706f..e15daeea5 100644 --- a/src/projects/create/components/IncompleteProjectConfirmation.js +++ b/src/projects/create/components/IncompleteProjectConfirmation.js @@ -1,14 +1,15 @@ import React from 'react' import PT from 'prop-types' -import SVGIconImage from '../../../components/SVGIconImage' import './IncompleteProjectConfirmation.scss' +import ConnectLogoMono from '../../../assets/icons/connect-logo-mono.svg' + function IncompleteProjectConfirmation({ loadIncompleteProject, removeIncompleteProject }) { // const isLoggedIn = userRoles && userRoles.length return (
    - +

    Welcome back!

    You started a project with us recently.
    diff --git a/src/projects/create/components/ProductCard.scss b/src/projects/create/components/ProductCard.scss index b014543e9..a526bc564 100644 --- a/src/projects/create/components/ProductCard.scss +++ b/src/projects/create/components/ProductCard.scss @@ -45,6 +45,7 @@ letter-spacing: -0.4px; @include transition; } + .icon-wrapper { svg { fill: $tc-gray-70; @@ -52,7 +53,7 @@ &:hover { svg { - fill: $tc-dark-blue-90; + fill: $tc-dark-blue; } } } diff --git a/src/projects/create/components/ProjectTypeCard.scss b/src/projects/create/components/ProjectTypeCard.scss index fafe67f91..c9361354a 100644 --- a/src/projects/create/components/ProjectTypeCard.scss +++ b/src/projects/create/components/ProjectTypeCard.scss @@ -60,7 +60,7 @@ } svg { - fill: $tc-dark-blue-90; + fill: $tc-dark-blue; } } diff --git a/src/projects/create/components/SelectProduct.js b/src/projects/create/components/SelectProduct.js index 2bf2647cb..0c32e53ea 100644 --- a/src/projects/create/components/SelectProduct.js +++ b/src/projects/create/components/SelectProduct.js @@ -2,9 +2,118 @@ import React from 'react' import PT from 'prop-types' import config from '../../../config/projectWizard' import ProductCard from './ProductCard' -import SVGIconImage from '../../../components/SVGIconImage' import { findCategory } from '../../../config/projectWizard' import './SelectProduct.scss' +import IconAnalyticsAlgorithmOptimization from '../../../assets/icons/product-analytics-algorithm-optimization.svg' +import IconAnalyticsComputerVision from '../../../assets/icons/product-analytics-computer-vision.svg' +import IconAnalyticsDataExploration from '../../../assets/icons/product-analytics-data-exploration.svg' +import IconAnalyticsPredictiveAnalytics from '../../../assets/icons/product-analytics-predictive-analytics.svg' +import IconAppApp from '../../../assets/icons/product-app-app.svg' +import IconCatAnalytics from '../../../assets/icons/product-cat-analytics.svg' +import IconCatApp from '../../../assets/icons/product-cat-app.svg' +import IconCatChatbot from '../../../assets/icons/product-cat-chatbot.svg' +import IconCatDesign from '../../../assets/icons/product-cat-design.svg' +import IconCatDevelopment from '../../../assets/icons/product-cat-development.svg' +import IconCatQa from '../../../assets/icons/product-cat-qa.svg' +import IconCatWebsite from '../../../assets/icons/product-cat-website.svg' +import IconChatbotChatbot from '../../../assets/icons/product-chatbot-chatbot.svg' +import IconChatbotWatson from '../../../assets/icons/product-chatbot-watson.svg' +import IconDesignAppVisual from '../../../assets/icons/product-design-app-visual.svg' +import IconDesignInfographic from '../../../assets/icons/product-design-infographic.svg' +import IconDesignOther from '../../../assets/icons/product-design-other.svg' +import IconDesignWireframes from '../../../assets/icons/product-design-wireframes.svg' +import IconDevFrontendDev from '../../../assets/icons/product-dev-front-end-dev.svg' +import IconDevIntegration from '../../../assets/icons/product-dev-integration.svg' +import IconDevOther from '../../../assets/icons/product-dev-other.svg' +import IconDevPrototype from '../../../assets/icons/product-dev-prototype.svg' +import IconOtherDesign from '../../../assets/icons/product-other-design.svg' +import IconQaConsulting from '../../../assets/icons/product-qa-consulting.svg' +import IconQaCrowdTesting from '../../../assets/icons/product-qa-crowd-testing.svg' +import IconQaDigitalAccessability from '../../../assets/icons/product-qa-digital-accessability.svg' +import IconQaHelthCheck from '../../../assets/icons/product-qa-health-check.svg' +import IconQaMobilityTesting from '../../../assets/icons/product-qa-mobility-testing.svg' +import IconQaOsAutomation from '../../../assets/icons/product-qa-os-automation.svg' +import IconQaWebsitePrerfomance from '../../../assets/icons/product-qa-website-performance.svg' +import IconWebsiteWebsite from '../../../assets/icons/product-website-website.svg' +import IconOutlineWorkProject from '../../../assets/icons/tech-32px-outline-work-project.svg' + +/** + * @params {string} type project type + */ +const ProjectTypeIcons = ({ type }) => { + switch (type) { + case 'product-analytics-algorithm-optimization': + return + case 'product-analytics-computer-vision': + return + case 'product-analytics-data-exploration': + return + case 'product-analytics-predictive-analytics': + return + case 'product-app-app': + return + case 'product-cat-analytics': + return + case 'product-cat-app': + return + case 'product-cat-chatbot': + return + case 'product-cat-design': + return + case 'product-cat-development': + return + case 'product-cat-qa': + return + case 'product-cat-website': + return + case 'product-chatbot-chatbot': + return + case 'product-chatbot-watson': + return + case 'product-design-app-visual': + return + case 'product-design-infographic': + return + case 'product-design-other': + return + case 'product-design-wireframes': + return + case 'product-dev-front-end-dev': + return + case 'product-dev-integration': + return + case 'product-dev-other': + return + case 'product-dev-prototype': + return + case 'product-other-design': + return + case 'product-qa-consulting': + return + case 'product-qa-crowd-testing': + return + case 'product-qa-digital-accessability': + return + case 'product-qa-health-check': + return + case 'product-qa-mobility-testing': + return + case 'product-qa-os-automation': + return + case 'product-qa-website-performance': + return + case 'product-website-website': + return + case 'tech-32px-outline-work-project': + return + default: + return 'undefined icon' + } +} + +ProjectTypeIcons.propTypes = { + type: PT.string +} function SelectProduct(props) { const { projectType } = props @@ -18,7 +127,7 @@ function SelectProduct(props) { // don't render disabled items for selection // don't render hidden items as well, hidden items can be reached via direct link though if (item.disabled || item.hidden) continue - const icon = + const icon = cards.push( { + switch(type){ + case 'product-analytics-algorithm-optimization': + return + case 'product-analytics-computer-vision': + return + case 'product-analytics-data-exploration': + return + case 'product-analytics-predictive-analytics': + return + case 'product-app-app': + return + case 'product-cat-analytics': + return + case 'product-cat-app': + return + case 'product-cat-chatbot': + return + case 'product-cat-design': + return + case 'product-cat-development': + return + case 'product-cat-qa': + return + case 'product-cat-website': + return + case 'product-chatbot-chatbot': + return + case 'product-chatbot-watson': + return + case 'product-design-app-visual': + return + case 'product-design-infographic': + return + case 'product-design-other': + return + case 'product-design-wireframes': + return + case 'product-dev-front-end-dev': + return + case 'product-dev-integration': + return + case 'product-dev-other': + return + case 'product-dev-prototype': + return + case 'product-other-design': + return + case 'product-qa-consulting': + return + case 'product-qa-crowd-testing': + return + case 'product-qa-digital-accessability': + return + case 'product-qa-health-check': + return + case 'product-qa-mobility-testing': + return + case 'product-qa-os-automation': + return + case 'product-qa-website-performance': + return + case 'product-website-website': + return + case 'tech-32px-outline-work-project': + return + default: + return 'undefined icon' + } +} + +ProjectTypeIcons.propTypes = { + type: PT.string.isRequired +} function SelectProjectType(props) { const cards = [] for (const key in config) { const item = config[key] - const icon = + const icon = const products = findProductsOfCategory(item.id, false) || [] // don't render disabled items for selection // don't render hidden items as well, hidden items can be reached via direct link though @@ -29,7 +139,7 @@ function SelectProjectType(props) { return (
    - +

    Create a new project

    diff --git a/src/projects/detail/ProjectDetail.jsx b/src/projects/detail/ProjectDetail.jsx index 2c14aa221..a54f983cb 100644 --- a/src/projects/detail/ProjectDetail.jsx +++ b/src/projects/detail/ProjectDetail.jsx @@ -48,7 +48,7 @@ class ProjectDetail extends Component { this.props.loadProjectDashboard(projectId) } - componentWillReceiveProps({isProcessing, isLoading, error, project, match}) { + componentWillReceiveProps({isProcessing, isLoading, error, project, match, location}) { // handle just deleted projects if (! (error || isLoading || isProcessing) && _.isEmpty(project)) this.props.history.push('/projects/') @@ -60,6 +60,11 @@ class ProjectDetail extends Component { if (this.props.match.params.projectId !== match.params.projectId) { this.props.loadProjectDashboard(match.params.projectId) } + + // reload project details if navigating by Link to same page + if (this.props.location.key !== location.key) { + this.props.loadProjectDashboard(match.params.projectId) + } } getProjectRoleForCurrentUser({currentUserId, project}) { diff --git a/src/projects/detail/components/EditProjectForm.jsx b/src/projects/detail/components/EditProjectForm.jsx index 70a9913df..5a9145a7a 100644 --- a/src/projects/detail/components/EditProjectForm.jsx +++ b/src/projects/detail/components/EditProjectForm.jsx @@ -6,8 +6,8 @@ import _ from 'lodash' import { unflatten } from 'flat' import update from 'react-addons-update' import FeaturePicker from './FeatureSelector/FeaturePicker' -import { Formsy, Icons } from 'appirio-tech-react-components' - +import { Formsy } from 'appirio-tech-react-components' +import XMarkIcon from '../../../assets/icons/icon-x-mark.svg' import SpecSection from './SpecSection' import { HOC as hoc } from 'formsy-react' @@ -33,7 +33,7 @@ const FeaturePickerModal = ({ project, isEdittable, showFeaturesDialog, hideFeat isEdittable={isEdittable} onSave={ setFormValue } />
    - Save and close + Save and close
    ) diff --git a/src/projects/detail/components/FeatureSelector/CustomFeatureForm.jsx b/src/projects/detail/components/FeatureSelector/CustomFeatureForm.jsx index ad5734e2c..aee10db2b 100644 --- a/src/projects/detail/components/FeatureSelector/CustomFeatureForm.jsx +++ b/src/projects/detail/components/FeatureSelector/CustomFeatureForm.jsx @@ -4,7 +4,10 @@ import _ from 'lodash' import cn from 'classnames' import Panel from '../../../../components/Panel/Panel' import DeleteFeatureModal from './DeleteFeatureModal' -import { Icons, Formsy, TCFormFields, SwitchButton } from 'appirio-tech-react-components' +import { Formsy, TCFormFields, SwitchButton } from 'appirio-tech-react-components' +import IconUIPencil from '../../../../assets/icons/icon-ui-pencil.svg' +import IconUITrashSimple from '../../../../assets/icons/icon-ui-trash-simple.svg' + require('./FeatureForm.scss') @@ -109,8 +112,8 @@ class CustomFeatureForm extends Component { /> }
    - - + +
    } diff --git a/src/projects/detail/components/FeatureSelector/FeaturePicker.jsx b/src/projects/detail/components/FeatureSelector/FeaturePicker.jsx index 837dcefdd..ef9bcce68 100644 --- a/src/projects/detail/components/FeatureSelector/FeaturePicker.jsx +++ b/src/projects/detail/components/FeatureSelector/FeaturePicker.jsx @@ -7,35 +7,47 @@ import PickerFeatureList from './PickerFeatureList' import DefaultFeatureForm from './DefaultFeatureForm' import CustomFeatureForm from './CustomFeatureForm' import FeaturePreview from './FeaturePreview' +import IconLoginReg from '../../../../assets/icons/login-reg.svg' +import IconGeneralBuildingBlocks from '../../../../assets/icons/general-building-blocks.svg' +import IconEcommerce from '../../../../assets/icons/ecommerce.svg' +import IconSocial from '../../../../assets/icons/social.svg' +import IconCustomFeatures from '../../../../assets/icons/custom-features.svg' +import IconSecurityMinimal from '../../../../assets/icons/security-minimal.svg' +import IconLocation from '../../../../assets/icons/location.svg' +import IconPayment from '../../../../assets/icons/payments.svg' +import IconNotifications from '../../../../assets/icons/notifications.svg' +import IconAudio from '../../../../assets/icons/audio.svg' require('./FeaturePicker.scss') + + const categoriesList = [ { id: 'login_registration', label: 'Login & Registration', order: 1, - icon: require('./images/login-reg.svg') + icon: IconLoginReg }, { id: 'general_building_blocks', label: 'General Building Blocks', order: 2, - icon: require('./images/general-building-blocks.svg') + icon: IconGeneralBuildingBlocks }, { id: 'ecommerce', label: 'Ecommerce', order: 3, - icon : require('./images/ecommerce.svg') + icon: IconEcommerce }, { id: 'social', label: 'Social', order: 4, - icon: require('./images/social.svg') + icon: IconSocial }, { id: 'custom', label: 'Custom Features', order: 5, - icon: require('./images/custom-features.svg') + icon: IconCustomFeatures } ] @@ -46,147 +58,147 @@ const AVAILABLE_FEATURES = [ title: 'Email Login', description: 'Allow users to register and log in using their email address and a password. Users can also change their password or recover a forgotten one.', custom: null, - icon: require('./images/login-reg.svg') + icon: IconLoginReg }, { categoryId: 'login_registration', id: 'social_login', title: 'Social Login', description: 'Allow users to register and log in using third-party services such as Facebook, Twitter, and Google. Please specify below the ones that you would like to use.', - icon: require('./images/security-minimal.svg') + icon: IconSecurityMinimal }, { categoryId: 'login_registration', id: 'invitations', title: 'Invitations', description: 'Allow users to invite others to use your app. This functionality is especially useful if you are building a social application or provide incentives for users to invite their friends. Invitations can be sent via email or text message. Please specify your preference below.', - icon: require('./images/login-reg.svg') + icon: IconLoginReg }, { categoryId: 'login_registration', id: 'introductions', title: 'Introductions', description: 'Present your app and inform users of core functionality using a series of introductory screens before they sign up.', - icon: require('./images/location.svg') + icon: IconLocation }, { categoryId: 'login_registration', id: 'onboarding', title: 'Onboarding', description: 'Virtually walk your users through your application. This functionality is especially useful if you need new users to set up an account or express preferences after they sign up.', - icon: require('./images/social.svg') + icon: IconSocial }, { categoryId: 'general_building_blocks', id: 'search', title: 'Search', description: 'Provide the ability to search your app for specific content, such as products, members, or locations. Please specify below if you also would like autocomplete--suggesting appropriate search terms as a user starts typing.', - icon: require('./images/ecommerce.svg') + icon: IconEcommerce }, { categoryId: 'general_building_blocks', id: 'geolocation_features', title: 'Geolocation Features', description: 'Add this feature if your app has any geographic location-based functionality, such as showing store locations on a map or illustrating the progress of a delivery. Please specify your desired functionality below.', - icon: require('./images/payments.svg') + icon: IconPayment }, { categoryId: 'general_building_blocks', id: 'camera_audio_video', title: 'Camera (Audio & Video)', description: 'Add this feature if your app will require using the camera to capture audio or video. Please specify your desired usage below.', - icon: require('./images/notifications.svg') + icon: IconNotifications }, { categoryId: 'general_building_blocks', id: 'file_upload', title: 'File Upload', description: 'Allow users to upload photos or other files. Please specify your desired usage below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'notifications', title: 'Notifications', description: 'Take advantage of notifications; for example, remind users to do certain tasks or update them on new content. Please specify your desired functionality below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'sharing', title: 'Sharing', description: 'Allow users to share content from your app using common options, such as email, text message, or Facebook. Please specify your desired usage below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'tags', title: 'Tags', description: 'Allow users to tag products, people or content; for example, in order to classify and easily retrieve notes. Please specify your desired functionality below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'admin_functionality', title: 'Admin Functionality', description: 'Add this feature if your app will have users that serve as administrators and require special access rights. Please specify your desired usage below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'account_settings', title: 'Account Settings', description: 'Allow your users to adjust settings or specify preferences, such as communication frequency. Please specify your desired functionality below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'dashboard', title: 'Dashboard', description: 'Customize your users’ home screen with personalized content or basic performance indicators, such as number of wins or progress toward a goal. Please specify your desired usage below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'general_building_blocks', id: 'help', title: 'Help', description: 'Include a section dedicated to FAQ or Help content.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'ecommerce', id: 'marketplace', title: 'Marketplace', description: 'Allow users to buy, sell, or rent products or services. Please provide details below regarding how your marketplace should work. ', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'ecommerce', id: 'rations_reviews', title: 'Ratings & Reviews', description: 'Let users rate or review people, products, or services. Please specify your desired usage below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'ecommerce', id: 'payments', title: 'Payments', description: 'Allow users to pay in some way; for example, using credit cards, PayPal, or Bitcoin. Please specify your desired functionality below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'ecommerce', id: 'shopping_cart', title: 'Shopping Cart', description: 'Allow users to save items before purchasing. Please specify your desired usage below.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'ecommerce', id: 'product_listing', title: 'Product Listing', description: 'Add this feature to shows lists of product or services, with individual detail pages for each one. Please specify below your desired usage and the information you would like in a product listing.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'social', id: 'activity_feed', title: 'Activity Feed', description: 'Show your users an activity feed of some kind, as they’re used to seeing on Facebook and Twitter, for example. Please specify below your desired usage and the information that a user should see in the activity feed.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'social', id: 'profiles', title: 'Profiles', description: 'Add this feature if your app requires users to have a profile, including the ability to edit it. Please specify below your desired usage and the information you need in the profile.', - icon: require('./images/audio.svg') + icon: IconAudio }, { categoryId: 'social', id: 'messaging', title: 'Messaging', description: 'Allow direct communication between two or more users. Please specify your desired functionality below.', - icon: require('./images/audio.svg') + icon: IconAudio } ] const categorizedFeatureSet = _.groupBy(AVAILABLE_FEATURES, val => val.categoryId) diff --git a/src/projects/detail/components/FeatureSelector/FeaturePreview.jsx b/src/projects/detail/components/FeatureSelector/FeaturePreview.jsx index 0636f90b0..4b69a57d5 100644 --- a/src/projects/detail/components/FeatureSelector/FeaturePreview.jsx +++ b/src/projects/detail/components/FeatureSelector/FeaturePreview.jsx @@ -1,34 +1,50 @@ import React from 'react' +import DeviceIphone from '../../../../assets/icons/Device-iPhone.svg' require('./FeaturePreview.scss') -const FeaturePreview = props => { - const { feature, addingCustomFeature } = props - let previewImg = null - if (!feature && !addingCustomFeature) { - previewImg = require('./images/Default-preview.png') - } else if (addingCustomFeature || feature.categoryId === 'custom') { - previewImg = require('./images/Custom-feature.png') - } else { - // TODO change image names to match feature id - previewImg = require('./images/' + feature.title + '.png') + +class FeaturePreview extends React.Component { + constructor(props) { + super(props) + this.state = {maskUrl: ''} + } + + componentDidMount() { + document.querySelector('.mask').href.baseVal = this.state.maskUrl } - // // if feature is activated and is not a customer feature - // if (feature && feature.type !== 'custom') { - // previewImg = require('./images/' + feature.title + '.png') - // } else if ((feature && feature.custom) || addingCustomFeature) { // if active/non-active custom feature - // previewImg = require('./images/Custom-feature.png') - // } else { - // previewImg = require('./images/Default-preview.png') - // } - return ( -
    -
    - + componentDidUpdate() { + document.querySelector('.mask').href.baseVal = this.state.maskUrl + } + + render() { + + const { feature, addingCustomFeature } = this.props + let previewImg = null + if (!feature && !addingCustomFeature) { + previewImg = require('./images/Default-preview.png') + } else if (addingCustomFeature || feature.categoryId === 'custom') { + previewImg = require('./images/Custom-feature.png') + } else { + // TODO change image names to match feature id + previewImg = require('./images/' + feature.title + '.png') + } + this.state.maskUrl = previewImg + // // if feature is activated and is not a customer feature + // if (feature && feature.type !== 'custom') { + // previewImg = require('./images/' + feature.title + '.png') + // } else if ((feature && feature.custom) || addingCustomFeature) { // if active/non-active custom feature + // previewImg = require('./images/Custom-feature.png') + // } else { + // previewImg = require('./images/Default-preview.png') + // } + return ( +
    +
    -
    - ) + ) + } } export default FeaturePreview diff --git a/src/projects/detail/components/FeatureSelector/FeaturePreview.scss b/src/projects/detail/components/FeatureSelector/FeaturePreview.scss index f0b6d33ad..1659cb4d9 100644 --- a/src/projects/detail/components/FeatureSelector/FeaturePreview.scss +++ b/src/projects/detail/components/FeatureSelector/FeaturePreview.scss @@ -3,28 +3,26 @@ .feature-preview { text-align: center; // padding: (8 * $base-unit) (12 * $base-unit) ; - // background: url('./images/Device-iPhone.svg') no-repeat; + // background: url('p') no-repeat; background-color: $tc-gray-neutral-light; background-position: 50% 22px; padding: 8 * $base-unit; border-left: 1px solid $tc-dark-blue-30; min-width: 260px; display: block; + position: relative; - .feature-preview-img { - background: url('./images/Device-iPhone.svg') no-repeat; + .icon-feature-preview-img { /*padding: (8 * $base-unit) (12 * $base-unit) ;*/ - padding: 22% 7%; width: 100%; max-width: 273px; - background-size: contain; } - + img { - display: inline-block; - width: 100%; - max-width: 235px; /*max-height: 500px;*/ } +} +.mask { + margin: 100px; } \ No newline at end of file diff --git a/src/projects/detail/components/FeatureSelector/FlattenedFeatureList.jsx b/src/projects/detail/components/FeatureSelector/FlattenedFeatureList.jsx index 1aa28ba5c..130cbadbe 100644 --- a/src/projects/detail/components/FeatureSelector/FlattenedFeatureList.jsx +++ b/src/projects/detail/components/FeatureSelector/FlattenedFeatureList.jsx @@ -1,8 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' import FeaturePicker from './FeaturePicker' +import IconCustomFeatures from '../../../../assets/icons/custom-features.svg' require('./FlattenedFeatureList.scss') + const allFeaturesMap = FeaturePicker.ALL_FEATURES_MAP const FlattenedFeatureList = ({ addedFeatures }) => { @@ -14,7 +16,7 @@ const FlattenedFeatureList = ({ addedFeatures }) => { if (f.disabled) return const feature = f.categoryId === 'custom' ? f : allFeaturesMap[f.id] if (feature.categoryId === 'custom') { - feature.icon = require('./images/custom-features.svg') + feature.icon = IconCustomFeatures } childrenDom.push(
    diff --git a/src/projects/detail/components/FeatureSelector/PickerFeatureList.jsx b/src/projects/detail/components/FeatureSelector/PickerFeatureList.jsx index 83ffa77ab..62cd03a00 100644 --- a/src/projects/detail/components/FeatureSelector/PickerFeatureList.jsx +++ b/src/projects/detail/components/FeatureSelector/PickerFeatureList.jsx @@ -1,6 +1,6 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { Icons } from 'appirio-tech-react-components' +import IconUICheckBold from '../../../../assets/icons/icon-ui-check-bold.svg' import classNames from 'classnames' import _ from 'lodash' require('./PickerFeatureList.scss') @@ -36,7 +36,7 @@ class PickerFeatureList extends Component {
    { feature.title } - { isActive && } + { isActive && }
    diff --git a/src/projects/detail/components/FeatureSelector/images/Device-iPhone.svg b/src/projects/detail/components/FeatureSelector/images/Device-iPhone.svg deleted file mode 100755 index e1e807c54..000000000 --- a/src/projects/detail/components/FeatureSelector/images/Device-iPhone.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - Device-iPhone - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/projects/detail/components/SidebarNav.jsx b/src/projects/detail/components/SidebarNav.jsx index 31f60d3e3..891d25465 100644 --- a/src/projects/detail/components/SidebarNav.jsx +++ b/src/projects/detail/components/SidebarNav.jsx @@ -3,7 +3,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { Link as DirectLink } from 'react-scroll' import cn from 'classnames' -import { Icons } from 'appirio-tech-react-components' +import IconUICheckBold from '../../../assets/icons/icon-ui-check-bold.svg' require('./SidebarNav.scss') @@ -29,7 +29,7 @@ const renderSubNavItems = (child, idx) => {
  • {name} {required && *} - { isComplete ? : showProgress && `${progress[0]} of ${progress[1]}`} + { isComplete ? : showProgress && `${progress[0]} of ${progress[1]}`}
  • ) diff --git a/src/projects/detail/containers/FeedContainer.js b/src/projects/detail/containers/FeedContainer.js index d67e3d095..633fffc3f 100644 --- a/src/projects/detail/containers/FeedContainer.js +++ b/src/projects/detail/containers/FeedContainer.js @@ -28,7 +28,7 @@ const ScrollableFeed = Helpers.Element(Feed) const SYSTEM_USER = { firstName: CODER_BOT_USER_FNAME, lastName: CODER_BOT_USER_LNAME, - photoURL: require('../../../assets/images/avatar-coder.png') + photoURL: require('../../../assets/images/avatar-coder.svg') } const isSystemUser = (userId) => [DISCOURSE_BOT_USERID, CODER_BOT_USERID].indexOf(userId) > -1 @@ -338,7 +338,7 @@ class FeedView extends React.Component { } render () { - const {currentUser, project, currentMemberRole, isCreatingFeed, error } = this.props + const {currentUser, project, currentMemberRole, isCreatingFeed, error, allMembers} = this.props const { feeds } = this.state const showDraftSpec = project.status === PROJECT_STATUS_DRAFT && currentMemberRole === PROJECT_ROLE_CUSTOMER const onLeaveMessage = this.onLeave() || '' @@ -366,6 +366,7 @@ class FeedView extends React.Component { onTopicChange={this.onTopicChange.bind(this, item.id)} onSaveTopic={this.onSaveTopic.bind(this, item.id)} onDeleteTopic={this.onDeleteTopic.bind(this, item.id)} + allMembers={allMembers} > {item.sendForReview &&
    @@ -383,6 +384,7 @@ class FeedView extends React.Component { /> [DISCOURSE_BOT_USERID, CODER_BOT_USERID].indexOf(userId) > -1 diff --git a/src/projects/detail/containers/ProjectInfoContainer.js b/src/projects/detail/containers/ProjectInfoContainer.js index 970b28a60..1583414ad 100644 --- a/src/projects/detail/containers/ProjectInfoContainer.js +++ b/src/projects/detail/containers/ProjectInfoContainer.js @@ -46,12 +46,12 @@ class ProjectInfoContainer extends React.Component { this.setDuration(project) } - onChangeStatus(status, reason) { + onChangeStatus(projectId, status, reason) { const delta = {status} if (reason && status === PROJECT_STATUS_CANCELLED) { delta.cancelReason = reason } - this.props.updateProject(this.props.project.id, delta) + this.props.updateProject(projectId, delta) } onAddNewLink(link) { diff --git a/src/projects/detail/containers/Specification.scss b/src/projects/detail/containers/Specification.scss index b8b609560..ec41a5e46 100644 --- a/src/projects/detail/containers/Specification.scss +++ b/src/projects/detail/containers/Specification.scss @@ -952,7 +952,7 @@ $sideBarMaxWidth: 360px; right: 10px; width: 15px; height: 15px; - background: $tc-dark-blue-90; + background: $tc-dark-blue; border-radius: 2px; } diff --git a/src/projects/detail/containers/SpecificationContainer.jsx b/src/projects/detail/containers/SpecificationContainer.jsx index 3f4e22470..eff47a15c 100644 --- a/src/projects/detail/containers/SpecificationContainer.jsx +++ b/src/projects/detail/containers/SpecificationContainer.jsx @@ -12,7 +12,6 @@ import EditProjectForm from '../components/EditProjectForm' import { findProduct } from '../../../config/projectWizard' import { updateProject, fireProjectDirty, fireProjectDirtyUndo } from '../../actions/project' import spinnerWhileLoading from '../../../components/LoadingSpinner' -// import { Icons } from 'appirio-tech-react-components' import typeToSpecification from '../../../config/projectSpecification/typeToSpecification' require('./Specification.scss') diff --git a/src/projects/list/components/Projects/NewProjectCard.jsx b/src/projects/list/components/Projects/NewProjectCard.jsx index ac96ed466..92b31c457 100644 --- a/src/projects/list/components/Projects/NewProjectCard.jsx +++ b/src/projects/list/components/Projects/NewProjectCard.jsx @@ -1,8 +1,9 @@ import React from 'react' import {Link} from 'react-router-dom' -import SVGIconImage from '../../../../components/SVGIconImage' import './ProjectCard.scss' +import BoldAdd from '../../../../assets/icons/ui-16px-1_bold-add.svg' + function NewProjectCard() { return ( @@ -11,7 +12,7 @@ function NewProjectCard() {
    -
    +
    New Project
    diff --git a/src/projects/list/components/Projects/ProjectCard.jsx b/src/projects/list/components/Projects/ProjectCard.jsx index 382813c34..abce8629a 100644 --- a/src/projects/list/components/Projects/ProjectCard.jsx +++ b/src/projects/list/components/Projects/ProjectCard.jsx @@ -1,19 +1,23 @@ import React from 'react' import PT from 'prop-types' -import {Link} from 'react-router-dom' +import { withRouter } from 'react-router-dom' import { getProjectRoleForCurrentUser } from '../../../../helpers/projectHelper' import AvatarGroup from '../../../../components/AvatarGroup/AvatarGroup' import ProjectCardHeader from './ProjectCardHeader' import ProjectCardBody from './ProjectCardBody' import './ProjectCard.scss' -function ProjectCard({ project, duration, disabled, currentUser }) { - +function ProjectCard({ project, duration, disabled, currentUser, history, onChangeStatus}) { let className = `ProjectCard ${ disabled ? 'disabled' : 'enabled'}` if (!project) return null const currentMemberRole = getProjectRoleForCurrentUser({ project, currentUserId: currentUser.userId}) return ( - +
    { + history.push(`/projects/${project.id}/`) + }} + >
    - +
    ) } @@ -42,4 +47,4 @@ ProjectCard.propTypes = { // duration: PT.object.isRequired, } -export default ProjectCard +export default withRouter(ProjectCard) diff --git a/src/projects/list/components/Projects/ProjectCard.scss b/src/projects/list/components/Projects/ProjectCard.scss index c87a04b2b..5b51307e5 100644 --- a/src/projects/list/components/Projects/ProjectCard.scss +++ b/src/projects/list/components/Projects/ProjectCard.scss @@ -2,6 +2,7 @@ .ProjectCard { display: flex; + cursor: pointer; flex-direction: column; height: 100%; background-color: $tc-white; @@ -9,7 +10,7 @@ padding: 4 * $base_unit; &:hover { - box-shadow: 0 2px 9px 0 rgba($tc-gray-90,0.15); + box-shadow: 0 2px 9px 0 rgba($tc-gray-90, 0.15); } &.NewProjectCard { @@ -20,7 +21,7 @@ box-shadow: none; .card-body .new-project-button .new-project-icon { - @include background-gradient($tc-dark-blue-70, $tc-dark-blue-90); + @include background-gradient($tc-dark-blue-70, $tc-dark-blue); } } @@ -32,7 +33,7 @@ .new-project-button { @include tc-label-md; text-transform: uppercase; - color: $tc-dark-blue-90; + color: $tc-dark-blue; display: flex; justify-content: center; flex-direction: column; @@ -41,9 +42,10 @@ .new-project-icon { width: 40px; height: 40px; - background-color: $tc-dark-blue-90; + background-color: $tc-dark-blue; border-radius: 100%; padding: 12px; + svg { fill: $tc-white; } diff --git a/src/projects/list/components/Projects/ProjectCardBody.jsx b/src/projects/list/components/Projects/ProjectCardBody.jsx index c88a88b6d..e1d25547a 100644 --- a/src/projects/list/components/Projects/ProjectCardBody.jsx +++ b/src/projects/list/components/Projects/ProjectCardBody.jsx @@ -39,6 +39,7 @@ function ProjectCardBody({ project, duration, currentMemberRole, descLinesCount canEdit={canEdit} unifiedHeader={false} onChangeStatus={onChangeStatus} + projectId={project.id} /> } {(project.status === PROJECT_STATUS_ACTIVE && progress !== 0) && diff --git a/src/projects/list/components/Projects/ProjectCardBody.scss b/src/projects/list/components/Projects/ProjectCardBody.scss index c53e5dbf6..e9ffb89b7 100644 --- a/src/projects/list/components/Projects/ProjectCardBody.scss +++ b/src/projects/list/components/Projects/ProjectCardBody.scss @@ -2,16 +2,17 @@ .project-card-body { flex: 2; + .project-description { overflow: hidden; // max-height: 180px; // min-height: 180px; color: $tc-gray-80; @include tc-label-md; - + .read-more-link { white-space: nowrap; - color: $tc-dark-blue-90; + color: $tc-dark-blue; } } @@ -35,11 +36,12 @@ .project-progress { display: flex; + .progress-text { text-transform: uppercase; margin-left: 10px; line-height: 16px; - } + } } } } diff --git a/src/projects/list/components/Projects/ProjectCardHeader.jsx b/src/projects/list/components/Projects/ProjectCardHeader.jsx index 076fe9ed7..a0522b02e 100644 --- a/src/projects/list/components/Projects/ProjectCardHeader.jsx +++ b/src/projects/list/components/Projects/ProjectCardHeader.jsx @@ -4,8 +4,117 @@ import React from 'react' import PT from 'prop-types' import TextTruncate from 'react-text-truncate' import { findProduct } from '../../../../config/projectWizard' -import SVGIconImage from '../../../../components/SVGIconImage' import './ProjectCardHeader.scss' +import IconAnalyticsAlgorithmOptimization from '../../../../assets/icons/product-analytics-algorithm-optimization.svg' +import IconAnalyticsComputerVision from '../../../../assets/icons/product-analytics-computer-vision.svg' +import IconAnalyticsDataExploration from '../../../../assets/icons/product-analytics-data-exploration.svg' +import IconAnalyticsPredictiveAnalytics from '../../../../assets/icons/product-analytics-predictive-analytics.svg' +import IconAppApp from '../../../../assets/icons/product-app-app.svg' +import IconCatAnalytics from '../../../../assets/icons/product-cat-analytics.svg' +import IconCatApp from '../../../../assets/icons/product-cat-app.svg' +import IconCatChatbot from '../../../../assets/icons/product-cat-chatbot.svg' +import IconCatDesign from '../../../../assets/icons/product-cat-design.svg' +import IconCatDevelopment from '../../../../assets/icons/product-cat-development.svg' +import IconCatQa from '../../../../assets/icons/product-cat-qa.svg' +import IconCatWebsite from '../../../../assets/icons/product-cat-website.svg' +import IconChatbotChatbot from '../../../../assets/icons/product-chatbot-chatbot.svg' +import IconChatbotWatson from '../../../../assets/icons/product-chatbot-watson.svg' +import IconDesignAppVisual from '../../../../assets/icons/product-design-app-visual.svg' +import IconDesignInfographic from '../../../../assets/icons/product-design-infographic.svg' +import IconDesignOther from '../../../../assets/icons/product-design-other.svg' +import IconDesignWireframes from '../../../../assets/icons/product-design-wireframes.svg' +import IconDevFrontendDev from '../../../../assets/icons/product-dev-front-end-dev.svg' +import IconDevIntegration from '../../../../assets/icons/product-dev-integration.svg' +import IconDevOther from '../../../../assets/icons/product-dev-other.svg' +import IconDevPrototype from '../../../../assets/icons/product-dev-prototype.svg' +import IconOtherDesign from '../../../../assets/icons/product-other-design.svg' +import IconQaConsulting from '../../../../assets/icons/product-qa-consulting.svg' +import IconQaCrowdTesting from '../../../../assets/icons/product-qa-crowd-testing.svg' +import IconQaDigitalAccessability from '../../../../assets/icons/product-qa-digital-accessability.svg' +import IconQaHelthCheck from '../../../../assets/icons/product-qa-health-check.svg' +import IconQaMobilityTesting from '../../../../assets/icons/product-qa-mobility-testing.svg' +import IconQaOsAutomation from '../../../../assets/icons/product-qa-os-automation.svg' +import IconQaWebsitePrerfomance from '../../../../assets/icons/product-qa-website-performance.svg' +import IconWebsiteWebsite from '../../../../assets/icons/product-website-website.svg' +import IconOutlineWorkProject from '../../../../assets/icons/tech-32px-outline-work-project.svg' + +/** + * @params {string} type project type + */ +const ProjectTypeIcons = ({ type }) => { + switch(type){ + case 'product-analytics-algorithm-optimization': + return + case 'product-analytics-computer-vision': + return + case 'product-analytics-data-exploration': + return + case 'product-analytics-predictive-analytics': + return + case 'product-app-app': + return + case 'product-cat-analytics': + return + case 'product-cat-app': + return + case 'product-cat-chatbot': + return + case 'product-cat-design': + return + case 'product-cat-development': + return + case 'product-cat-qa': + return + case 'product-cat-website': + return + case 'product-chatbot-chatbot': + return + case 'product-chatbot-watson': + return + case 'product-design-app-visual': + return + case 'product-design-infographic': + return + case 'product-design-other': + return + case 'product-design-wireframes': + return + case 'product-dev-front-end-dev': + return + case 'product-dev-integration': + return + case 'product-dev-other': + return + case 'product-dev-prototype': + return + case 'product-other-design': + return + case 'product-qa-consulting': + return + case 'product-qa-crowd-testing': + return + case 'product-qa-digital-accessability': + return + case 'product-qa-health-check': + return + case 'product-qa-mobility-testing': + return + case 'product-qa-os-automation': + return + case 'product-qa-website-performance': + return + case 'product-website-website': + return + case 'tech-32px-outline-work-project': + return + default: + return 'undefined icon' + } +} + +ProjectTypeIcons.propTypes = { + type: PT.string.isRequired +} function ProjectCardHeader({ project }) { if (!project) return null @@ -17,7 +126,9 @@ function ProjectCardHeader({ project }) { return (
    -
    +
    + +
    ) diff --git a/src/projects/list/components/Projects/ProjectDirectLinks.scss b/src/projects/list/components/Projects/ProjectDirectLinks.scss index 8f2155fa7..3a48a6531 100644 --- a/src/projects/list/components/Projects/ProjectDirectLinks.scss +++ b/src/projects/list/components/Projects/ProjectDirectLinks.scss @@ -11,8 +11,9 @@ ul { padding: 0; li { - background: url("../../assets/images/icon-direct-arrow.svg") no-repeat 0 center; - padding-left: $base-unit*6; + .icon-direct-arrow { + margin-right: 20px; + } } } } \ No newline at end of file diff --git a/src/projects/list/components/Projects/ProjectListNavHeader.jsx b/src/projects/list/components/Projects/ProjectListNavHeader.jsx index a609cdf4e..0fe74bde0 100644 --- a/src/projects/list/components/Projects/ProjectListNavHeader.jsx +++ b/src/projects/list/components/Projects/ProjectListNavHeader.jsx @@ -1,8 +1,11 @@ require('./ProjectListNavHeader.scss') import React, { Component } from 'react' -import PropTypes from 'prop-types' +import PT from 'prop-types' import { PROJECT_STATUS } from '../../../../config/constants' +import CardView from '../../../../assets/icons/ui-16px-2_grid-45-gray.svg' +import GridView from '../../../../assets/icons/grid-list-ico.svg' + export default class ProjectListNavHeader extends Component { @@ -56,10 +59,14 @@ export default class ProjectListNavHeader extends Component {
    - + + +
    - + + +
    @@ -67,6 +74,6 @@ export default class ProjectListNavHeader extends Component { } } ProjectListNavHeader.propTypes = { - applyFilters: PropTypes.func.isRequired, - changeView: PropTypes.func.isRequired + applyFilters: PT.func.isRequired, + changeView: PT.func.isRequired } diff --git a/src/projects/list/components/Projects/ProjectListNavHeader.scss b/src/projects/list/components/Projects/ProjectListNavHeader.scss index 0462cbfc1..fd9958345 100644 --- a/src/projects/list/components/Projects/ProjectListNavHeader.scss +++ b/src/projects/list/components/Projects/ProjectListNavHeader.scss @@ -9,6 +9,7 @@ margin-top: 30px; margin-left: 20px; margin-right: 20px; + .left-wrapper { flex: 1 1 auto; display: flex; @@ -16,34 +17,42 @@ flex-wrap: nowrap; justify-content: flex-start; align-content: flex-start; + .list-nav-item { flex: 0 1 auto; } } + .right-wrapper { flex: 1 1 20%; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: flex-end; + .list-nav-item { flex: 1; } } + .list-nav-item { position: relative; display: block; + &.nav-icon { flex: 0 0 46px; } } + .list-nav-btn { position: relative; display: inline-block; background-color: transparent; + &:focus { outline: 0; } + &.lg { padding: 0 15px; margin-right: 5px; @@ -54,12 +63,13 @@ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; - } + &.sm { width: 36px; height: 30px; } + &.active, &:hover { color: $tc-black; @@ -69,43 +79,46 @@ border-radius: 6px; box-shadow: 0px 1px 3px 0px $tc-gray-30; } + &.right { justify-content: flex-end; } - &.grid-view-ico { - position: relative; - i { - font-size: 0; - line-height: 0; - background: url('./images/grid-list-ico.svg') no-repeat 0 0; - width: 16px; - height: 14px; - display: block; - position: absolute; - top: 8px; - left: 10px; + + &.active { + .grid-view-ico g, + .card-view-ico path { + fill: $tc-black; } } - &.card-view-ico { + + .grid-view-ico { position: relative; - i { - font-size: 0; - line-height: 0; - background: url('./images/ui-16px-2_grid-45-gray.svg') no-repeat 0 0; - width: 16px; - height: 16px; - display: block; - position: absolute; - top: 7px; - left: 10px; - } + font-size: 0; + line-height: 0; + width: 16px; + height: 16px; + display: block; + position: absolute; + top: 8px; + left: 10px; + } + + .card-view-ico { + position: relative; + font-size: 0; + line-height: 0; + width: 16px; + height: 16px; + display: block; + position: absolute; + top: 7px; + left: 10px; + &:hover i, &.active i { font-size: 0; line-height: 0; - background: url('./images/ui-16px-2_grid-45.svg') no-repeat 0 0; } } } - } diff --git a/src/projects/list/components/Projects/ProjectListProjectColHeader.jsx b/src/projects/list/components/Projects/ProjectListProjectColHeader.jsx index 204d13bd8..7cae09314 100644 --- a/src/projects/list/components/Projects/ProjectListProjectColHeader.jsx +++ b/src/projects/list/components/Projects/ProjectListProjectColHeader.jsx @@ -1,7 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' import _ from 'lodash' -import { Dropdown, DropdownItem } from 'appirio-tech-react-components' +import cn from 'classnames' +import { Dropdown } from 'appirio-tech-react-components' +import IconCarretDownActive from '../../assets/icons/arrow-6px-carret-down-active.svg' +import IconCarretDownNormal from '../../../../assets/icons/arrow-6px-carret-down-normal.svg' +import IconCheckDark from '../../../../assets/icons/check-dark.svg' const options = [ { val: 'best match', label: 'Best Match' }, @@ -10,30 +14,65 @@ const options = [ { val: 'name', label: 'Name A-Z' } ] -const ProjectListProjectColHeader = ({currentSortField, sortHandler}) => { - const cur = _.find(options, o => currentSortField.indexOf(o.val) > -1) - || options[0] - - return ( -
    - Projects - - {cur.label} -
    -
      - { - options.map((item, i) => - - ) - } -
    -
    -
    -
    - ) +class ProjectListProjectColHeader extends React.Component { + + constructor(props) { + super(props) + this.state = { focused: false } + } + + toggleFocusState() { + this.state.focused = !this.state.focused + this.forceUpdate() + } + + onOutsideClick(ev) { + const currNode = ev.target + + if (currNode.className.indexOf('dropdown') > -1) { + return + } + + this.state.focused = false + this.forceUpdate() + } + + componentDidMount() { + document.addEventListener('click', ev => this.onOutsideClick(ev)) + } + + render() { + const {currentSortField, sortHandler} = this.props + const cur = _.find(options, o => currentSortField.indexOf(o.val) > -1) + || options[0] + + return ( +
    + Projects + + this.toggleFocusState(ev)}> + {cur.label} + {!this.state.focused? : } + +
    +
      + { + options.map((item, i) => { + const activeClass = cn({ + active: item.val === currentSortField + }) + return (
    • + {activeClass? : ''} + {item.label} +
    • ) + }) + } +
    +
    +
    +
    + ) + } } diff --git a/src/projects/list/components/Projects/ProjectListTimeSortColHeader.jsx b/src/projects/list/components/Projects/ProjectListTimeSortColHeader.jsx index 002c29b8d..ccf9fd629 100644 --- a/src/projects/list/components/Projects/ProjectListTimeSortColHeader.jsx +++ b/src/projects/list/components/Projects/ProjectListTimeSortColHeader.jsx @@ -1,7 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' import _ from 'lodash' -import { Dropdown, DropdownItem } from 'appirio-tech-react-components' +import cn from 'classnames' +import { Dropdown } from 'appirio-tech-react-components' +import IconCarretDownActive from '../../../../assets/icons/arrow-6px-carret-down-active.svg' +import IconCarretDownNormal from '../../../../assets/icons/arrow-6px-carret-down-normal.svg' +import IconCheckDark from '../../../../assets/icons/check-dark.svg' const options = [ { val: 'updatedAt desc', label: 'Last Updated' }, @@ -9,29 +13,67 @@ const options = [ { val: 'createdAt desc', label: 'Newest First' } ] -const ProjectListTimeSortColHeader = ({currentSortField, sortHandler}) => { - const cur = _.find(options, o => currentSortField === o.val) - || options[0] - - return ( -
    - - {cur.label} -
    -
      - { - options.map((item, i) => - - ) - } -
    -
    -
    -
    - ) + +class ProjectListTimeSortColHeader extends React.Component { + + constructor(props) { + super(props) + this.state = { focused: false } + } + + toggleFocusState() { + this.setState({ + focused: !this.state.focused + }) + } + + onOutsideClick(ev) { + const currNode = ev.target + + if(typeof currNode.className === 'string' && currNode.className.indexOf('dropdown') > -1) { + return + } + + this.setState({ + focused: false + }) + } + + componentDidMount() { + document.addEventListener('click', ev => this.onOutsideClick(ev)) + } + + render() { + const cur = _.find(options, o => currentSortField === o.val) + || options[0] + const {currentSortField, sortHandler} = this.props + + return ( +
    + + this.toggleFocusState(ev)}> + {cur.label} + {!this.state.focused? : } + +
    +
      + { + options.map((item, i) => { + const activeClass = cn({ + active: item.val === currentSortField + }) + return (
    • + {activeClass? : ''} + {item.label} +
    • ) + }) + } +
    +
    +
    +
    + ) + } } diff --git a/src/projects/list/components/Projects/ProjectManagerAvatars.jsx b/src/projects/list/components/Projects/ProjectManagerAvatars.jsx index e84ccee4c..7e4b1fd6f 100644 --- a/src/projects/list/components/Projects/ProjectManagerAvatars.jsx +++ b/src/projects/list/components/Projects/ProjectManagerAvatars.jsx @@ -9,13 +9,14 @@ const ProjectManagerAvatars = ({ managers }) => { let extM = false if (!managers || !managers.length) return
    Unclaimed
    - if (managers.length > 3) { - extM = managers.length - 3 - managers.length = 3 + const uniqManagers = _.uniqBy(managers, 'userId') + if (uniqManagers.length > 3) { + extM = uniqManagers.length - 3 + uniqManagers.length = 3 } return (
    - {_.uniqBy(managers, 'userId').map((user, i) => { + {uniqManagers.map((user, i) => { return (
    diff --git a/src/projects/list/components/Projects/ProjectSegmentSelect.jsx b/src/projects/list/components/Projects/ProjectSegmentSelect.jsx index ab3dcf62b..b491c9175 100644 --- a/src/projects/list/components/Projects/ProjectSegmentSelect.jsx +++ b/src/projects/list/components/Projects/ProjectSegmentSelect.jsx @@ -1,7 +1,10 @@ import React from 'react' import PropTypes from 'prop-types' import _ from 'lodash' -import { Dropdown, DropdownItem } from 'appirio-tech-react-components' +import cn from 'classnames' +import { Dropdown } from 'appirio-tech-react-components' +import IconCheckDark from '../../assets/icons/check-dark.svg' + const options = [ { val: 'enterprise', label: 'Enterprise' }, @@ -10,32 +13,38 @@ const options = [ { val: 'qaas', label: 'Wipro QAaS' }, { val: 'emea', label: 'Wipro Digital EMEA' } ] -const setSegment = (segment) => { - return segment -} -const ProjectSegmentSelect = ({currentSegment}) => { - const cur = _.find(options, o => currentSegment === o.val) - || options[0] - - return ( -
    - - {cur.label} -
    -
      - { - options.map((item, i) => - - ) - } -
    -
    -
    -
    - ) + + +class ProjectSegmentSelect extends React.Component { + + render() { + const {currentSegment, currentSortField, sortHandler} = this.props + const cur = _.find(options, o => currentSegment === o.val) + || options[0] + + return ( +
    + + {cur.label} +
    +
      + { + options.map((item, i) => { + const activeClass = cn({ + active: item.val === currentSortField + }) + return (
    • + {activeClass? : ''} + {item.label} +
    • ) + }) + } +
    +
    +
    +
    + ) + } } diff --git a/src/projects/list/components/Projects/Projects.jsx b/src/projects/list/components/Projects/Projects.jsx index b03656516..ec65fb0ad 100755 --- a/src/projects/list/components/Projects/Projects.jsx +++ b/src/projects/list/components/Projects/Projects.jsx @@ -7,18 +7,13 @@ import CoderBot from '../../../../components/CoderBot/CoderBot' import ProjectListNavHeader from './ProjectListNavHeader' import ProjectsGridView from './ProjectsGridView' import ProjectsCardView from './ProjectsCardView' -import { loadProjects, setInfiniteAutoload } from '../../../actions/loadProjects' +import { loadProjects, setInfiniteAutoload, setProjectsListView } from '../../../actions/loadProjects' import _ from 'lodash' import querystring from 'query-string' import { updateProject } from '../../../actions/project' -import { ROLE_CONNECT_MANAGER, ROLE_CONNECT_COPILOT, ROLE_ADMINISTRATOR, -ROLE_CONNECT_ADMIN, PROJECT_STATUS, PROJECT_STATUS_CANCELLED } from '../../../../config/constants' - -/* - Definiing default project criteria. This is used to later to determine if - walkthrough component should be rendered instead of no results - */ -const defaultCriteria = {sort: 'updatedAt desc'} +import { ROLE_CONNECT_MANAGER, ROLE_CONNECT_COPILOT, ROLE_ADMINISTRATOR, + ROLE_CONNECT_ADMIN, PROJECT_STATUS, PROJECT_STATUS_CANCELLED, PROJECT_STATUS_ACTIVE, + PROJECT_LIST_DEFAULT_CRITERIA, PROJECTS_LIST_VIEW } from '../../../../config/constants' const page500 = compose( withProps({code:500}) @@ -105,6 +100,12 @@ class Projects extends Component { // perform initial load only if there are not projects already loaded // otherwise we will get projects duplicated in store if (projects.length === 0) { + // for powerful user filter by 'active' status by default + // we cannot put it to PROJECT_LIST_DEFAULT_CRITERIA because + // it would apply for both powerful and regular users + if (props.isPowerUser && !criteria.status) { + criteria.status = PROJECT_STATUS_ACTIVE + } this.routeWithParams(criteria) } } @@ -148,11 +149,11 @@ class Projects extends Component { } render() { - const { isPowerUser, isLoading, totalCount, criteria, currentUser } = this.props + const { isPowerUser, isLoading, totalCount, criteria, currentUser, projectsListView, setProjectsListView } = this.props // show walk through if user is customer and no projects were returned // for default filters const showWalkThrough = !isLoading && totalCount === 0 && - _.isEqual(criteria, defaultCriteria) && + _.isEqual(criteria, PROJECT_LIST_DEFAULT_CRITERIA) && !isPowerUser const getStatusCriteriaText = (criteria) => { return (_.find(PROJECT_STATUS, { value: criteria.status }) || { name: ''}).name @@ -171,16 +172,17 @@ class Projects extends Component { // onPageChange={this.onPageChange} // sortHandler={this.sortHandler} onPageChange={this.onPageChange} + onChangeStatus={this.onChangeStatus} projectsStatus={getStatusCriteriaText(criteria)} /> ) let projectsView - const chosenView = this.state.selectedView || 'grid' + const chosenView = projectsListView const currentStatus = this.state.status || null if (isPowerUser) { - if (chosenView === 'grid') { + if (chosenView === PROJECTS_LIST_VIEW.GRID) { projectsView = gridView - } else if (chosenView === 'card') { + } else if (chosenView === PROJECTS_LIST_VIEW.CARD) { projectsView = cardView } } else { @@ -191,7 +193,7 @@ class Projects extends Component {
    {(isPowerUser && !showWalkThrough) && - } + } { showWalkThrough ? : projectsView }
    @@ -225,11 +227,12 @@ const mapStateToProps = ({ projectSearch, members, loadUser, projectState }) => pageNum : projectSearch.pageNum, criteria : projectSearch.criteria, infiniteAutoload: projectSearch.infiniteAutoload, + projectsListView: projectSearch.projectsListView, isPowerUser, gridView : isPowerUser } } -const actionsToBind = { loadProjects, setInfiniteAutoload, updateProject } +const actionsToBind = { loadProjects, setInfiniteAutoload, updateProject, setProjectsListView } export default withRouter(connect(mapStateToProps, actionsToBind)(Projects)) diff --git a/src/projects/list/components/Projects/ProjectsCardView.jsx b/src/projects/list/components/Projects/ProjectsCardView.jsx index e9572d249..ce50b4cb7 100644 --- a/src/projects/list/components/Projects/ProjectsCardView.jsx +++ b/src/projects/list/components/Projects/ProjectsCardView.jsx @@ -14,7 +14,7 @@ require('./ProjectsGridView.scss') const ProjectsCardView = props => { //const { projects, members, totalCount, criteria, pageNum, applyFilters, sortHandler, onPageChange, error, isLoading, onNewProjectIntent } = props // TODO: use applyFilters and onNewProjectIntent. Temporary delete to avoid lint errors. - const { projects, members, currentUser, onPageChange, pageNum, totalCount, infiniteAutoload, setInfiniteAutoload, isLoading, projectsStatus } = props + const { projects, members, currentUser, onPageChange, pageNum, totalCount, infiniteAutoload, setInfiniteAutoload, isLoading, projectsStatus, onChangeStatus } = props // const currentSortField = _.get(criteria, 'sort', '') // annotate projects with member data @@ -36,6 +36,7 @@ const ProjectsCardView = props => { project={project} currentUser={currentUser} duration={duration} + onChangeStatus={onChangeStatus} />
    ) } diff --git a/src/projects/list/components/Projects/ProjectsGridView.jsx b/src/projects/list/components/Projects/ProjectsGridView.jsx index f45ebcc8d..e0185bd00 100644 --- a/src/projects/list/components/Projects/ProjectsGridView.jsx +++ b/src/projects/list/components/Projects/ProjectsGridView.jsx @@ -12,12 +12,125 @@ import { findProduct } from '../../../../config/projectWizard' import TextTruncate from 'react-text-truncate' import ProjectStatus from '../../../../components/ProjectStatus/ProjectStatus' import editableProjectStatus from '../../../../components/ProjectStatus/editableProjectStatus' -import SVGIconImage from '../../../../components/SVGIconImage' import ProjectManagerAvatars from './ProjectManagerAvatars' +import IconProjectStatusTitle from '../../../../assets/icons/status-ico.svg' +import IconAnalyticsAlgorithmOptimization from '../../../../assets/icons/product-analytics-algorithm-optimization.svg' +import IconAnalyticsComputerVision from '../../../../assets/icons/product-analytics-computer-vision.svg' +import IconAnalyticsDataExploration from '../../../../assets/icons/product-analytics-data-exploration.svg' +import IconAnalyticsPredictiveAnalytics from '../../../../assets/icons/product-analytics-predictive-analytics.svg' +import IconAppApp from '../../../../assets/icons/product-app-app.svg' +import IconCatAnalytics from '../../../../assets/icons/product-cat-analytics.svg' +import IconCatApp from '../../../../assets/icons/product-cat-app.svg' +import IconCatChatbot from '../../../../assets/icons/product-cat-chatbot.svg' +import IconCatDesign from '../../../../assets/icons/product-cat-design.svg' +import IconCatDevelopment from '../../../../assets/icons/product-cat-development.svg' +import IconCatQa from '../../../../assets/icons/product-cat-qa.svg' +import IconCatWebsite from '../../../../assets/icons/product-cat-website.svg' +import IconChatbotChatbot from '../../../../assets/icons/product-chatbot-chatbot.svg' +import IconChatbotWatson from '../../../../assets/icons/product-chatbot-watson.svg' +import IconDesignAppVisual from '../../../../assets/icons/product-design-app-visual.svg' +import IconDesignInfographic from '../../../../assets/icons/product-design-infographic.svg' +import IconDesignOther from '../../../../assets/icons/product-design-other.svg' +import IconDesignWireframes from '../../../../assets/icons/product-design-wireframes.svg' +import IconDevFrontendDev from '../../../../assets/icons/product-dev-front-end-dev.svg' +import IconDevIntegration from '../../../../assets/icons/product-dev-integration.svg' +import IconDevOther from '../../../../assets/icons/product-dev-other.svg' +import IconDevPrototype from '../../../../assets/icons/product-dev-prototype.svg' +import IconOtherDesign from '../../../../assets/icons/product-other-design.svg' +import IconQaConsulting from '../../../../assets/icons/product-qa-consulting.svg' +import IconQaCrowdTesting from '../../../../assets/icons/product-qa-crowd-testing.svg' +import IconQaDigitalAccessability from '../../../../assets/icons/product-qa-digital-accessability.svg' +import IconQaHelthCheck from '../../../../assets/icons/product-qa-health-check.svg' +import IconQaMobilityTesting from '../../../../assets/icons/product-qa-mobility-testing.svg' +import IconQaOsAutomation from '../../../../assets/icons/product-qa-os-automation.svg' +import IconQaWebsitePrerfomance from '../../../../assets/icons/product-qa-website-performance.svg' +import IconWebsiteWebsite from '../../../../assets/icons/product-website-website.svg' +import IconOutlineWorkProject from '../../../../assets/icons/tech-32px-outline-work-project.svg' require('./ProjectsGridView.scss') const EnhancedProjectStatus = editableProjectStatus(ProjectStatus) + + +/** + * @params {string} class name + */ +const ProjectTypeIcons = ({ type }) => { + switch(type){ + case 'product-analytics-algorithm-optimization': + return + case 'product-analytics-computer-vision': + return + case 'product-analytics-data-exploration': + return + case 'product-analytics-predictive-analytics': + return + case 'product-app-app': + return + case 'product-cat-analytics': + return + case 'product-cat-app': + return + case 'product-cat-chatbot': + return + case 'product-cat-design': + return + case 'product-cat-development': + return + case 'product-cat-qa': + return + case 'product-cat-website': + return + case 'product-chatbot-chatbot': + return + case 'product-chatbot-watson': + return + case 'product-design-app-visual': + return + case 'product-design-infographic': + return + case 'product-design-other': + return + case 'product-design-wireframes': + return + case 'product-dev-front-end-dev': + return + case 'product-dev-integration': + return + case 'product-dev-other': + return + case 'product-dev-prototype': + return + case 'product-other-design': + return + case 'product-qa-consulting': + return + case 'product-qa-crowd-testing': + return + case 'product-qa-digital-accessability': + return + case 'product-qa-health-check': + return + case 'product-qa-mobility-testing': + return + case 'product-qa-os-automation': + return + case 'product-qa-website-performance': + return + case 'product-website-website': + return + case 'tech-32px-outline-work-project': + return + default: + return 'undefined icon' + } +} + +ProjectTypeIcons.propTypes = { + className: PropTypes.string +} + + const ProjectsGridView = props => { const { projects, members, totalCount, criteria, pageNum, sortHandler, onPageChange, error, isLoading, infiniteAutoload, setInfiniteAutoload, projectsStatus, onChangeStatus } = props @@ -56,7 +169,7 @@ const ProjectsGridView = props => { return (
    - +
    ) @@ -144,7 +257,7 @@ const ProjectsGridView = props => { } }, { id: 'status', - headerLabel:
    , + headerLabel: , sortable: false, classes: 'item-status', renderText: item => { diff --git a/src/projects/list/components/Projects/ProjectsGridView.scss b/src/projects/list/components/Projects/ProjectsGridView.scss index 201a5209a..2d26a5bb7 100644 --- a/src/projects/list/components/Projects/ProjectsGridView.scss +++ b/src/projects/list/components/Projects/ProjectsGridView.scss @@ -1,5 +1,4 @@ @import 'tc-includes'; - .flex-data { .flex-row { .item-id { @@ -89,7 +88,7 @@ color: $tc-black; &:focus { - color: $tc-dark-blue-90; + color: $tc-dark-blue; } } } @@ -226,7 +225,6 @@ &:after { font-size: 0; line-height: 0; - background: url('./images/check-dark.svg') no-repeat 0 0; width: 9px; height: 7px; content: ""; @@ -240,14 +238,13 @@ .status-header { position: relative; - color: $tc-dark-blue-90; + color: $tc-dark-blue; font-size: 13px; font-weight: 400; &:after { font-size: 0; line-height: 0; - background: url('./images/arrow-6px-carret-down-active.svg') no-repeat 0 0; width: 10px; height: 6px; content: ""; @@ -312,6 +309,7 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + width: 178px; &:hover { background-color: $tc-dark-blue-30; @@ -332,7 +330,7 @@ color: $tc-gray-60; &:focus { - color: $tc-dark-blue-90; + color: $tc-dark-blue; } } @@ -367,9 +365,6 @@ display: inline-block; margin-top: 3px; - &.yellow-light { - background: $tc-gold-30; - } } .txt-gray-sm { @@ -422,28 +417,33 @@ z-index: 1; &:focus { - color: $tc-dark-blue-90; + color: $tc-dark-blue; outline: 0; z-index: 3; + } - &:after { - font-size: 0; - line-height: 0; - background: url('./images/arrow-6px-carret-down-active.svg') no-repeat 0 0; - width: 10px; - height: 6px; - content: ""; - display: block; - position: absolute; - top: 5px; - right: 0; - } + .icon-carret-down-active g g { + color: rgb(6, 129, 255) !important; + } + + .icon-carret-down-active { + color: $tc-dark-blue-90; + outline: 0; + z-index: 3; + font-size: 0; + line-height: 0; + width: 10px; + height: 6px; + content: ""; + display: block; + position: absolute; + top: 5px; + right: 0; } - &:after { + .icon-carret-down-normal { font-size: 0; line-height: 0; - background: url('./images/arrow-6px-carret-down-normal.svg') no-repeat 0 0; width: 10px; height: 6px; content: ""; @@ -482,24 +482,23 @@ } } + .icon-check-dark { + font-size: 0; + line-height: 0; + width: 9px; + height: 7px; + content: ""; + display: block; + position: absolute; + top: 11px; + left: 6px; + } + &.active, &.active:hover { position: relative; @include roboto-bold; background: $tc-gray-neutral-light; - - &:after { - font-size: 0; - line-height: 0; - background: url('./images/check-dark.svg') no-repeat 0 0; - width: 9px; - height: 7px; - content: ""; - display: block; - position: absolute; - top: 11px; - left: 6px; - } } } } diff --git a/src/projects/list/components/Walkthrough/Walkthrough.jsx b/src/projects/list/components/Walkthrough/Walkthrough.jsx index 125f38017..665cca824 100644 --- a/src/projects/list/components/Walkthrough/Walkthrough.jsx +++ b/src/projects/list/components/Walkthrough/Walkthrough.jsx @@ -1,19 +1,24 @@ import React from 'react' import PropTypes from 'prop-types' import './Walkthrough.scss' +import IconShadow from '../../../../assets/icons/ground-shadow.svg' +import IconRobot from '../../../../assets/icons/coder-welcome.svg' +import IconTextImg from '../../../../assets/icons/pointer-new-project.svg' + + const Walkthrough = ({currentUser}) => (
    - +
    - - + +

    010010010010100101001000100100101
    Bzzt …I mean… Hello, {currentUser.firstName}!

    -

    Welcome to Connect! I’m Coder the Robot. I see you have no projects yet. To get you started, press the “New Project” and let’s build something.

    +

    Welcome to Connect! I’m Coder the Robot. I see you have no projects yet. To get you started, press the “New Project” icon and let’s build something.

    diff --git a/src/projects/list/components/Walkthrough/Walkthrough.scss b/src/projects/list/components/Walkthrough/Walkthrough.scss index f5f0e67cc..bff3dc288 100644 --- a/src/projects/list/components/Walkthrough/Walkthrough.scss +++ b/src/projects/list/components/Walkthrough/Walkthrough.scss @@ -10,7 +10,6 @@ padding: 20px 86px; .text-img{ - background: url('../../../../assets/images/pointer-new-project.svg') no-repeat 0 0; background-size: 100% 100%; position: absolute; display:block; @@ -100,7 +99,6 @@ } } .robot{ - background: url('../../../../assets/images/coder-welcome.svg') no-repeat 0 0; background-size: 238px 281px; position: absolute; width: 238px; @@ -111,7 +109,6 @@ z-index:2; } .shadow{ - background: url('../../../../assets/images/ground-shadow.svg') no-repeat 0 0; background-size: 960px 11px; position: absolute; width: 960px; diff --git a/src/projects/reducers/projectSearch.js b/src/projects/reducers/projectSearch.js index be99c3365..32551d61f 100644 --- a/src/projects/reducers/projectSearch.js +++ b/src/projects/reducers/projectSearch.js @@ -2,7 +2,10 @@ import { PROJECT_SEARCH_PENDING, PROJECT_SEARCH_SUCCESS, PROJECT_SEARCH_FAILURE, GET_PROJECTS_PENDING, GET_PROJECTS_SUCCESS, GET_PROJECTS_FAILURE, LOAD_MORE_PROJECTS, CLEAR_PROJECT_SEARCH, SET_PROJECTS_SEARCH_CRITERIA, - SET_PROJECTS_INFINITE_AUTOLOAD + SET_PROJECTS_INFINITE_AUTOLOAD, + SET_PROJECTS_LIST_VIEW, + PROJECTS_LIST_VIEW, + PROJECT_LIST_DEFAULT_CRITERIA } from '../../config/constants' import update from 'react-addons-update' @@ -12,9 +15,9 @@ export const initialState = { error: false, totalCount: 0, pageNum: 1, - criteria: { - sort: 'updatedAt desc' - } + // make a copy of constant to avoid unintentional modifications + criteria: {...PROJECT_LIST_DEFAULT_CRITERIA}, + projectsListView: PROJECTS_LIST_VIEW.GRID } export default function(state = initialState, action) { @@ -71,6 +74,11 @@ export default function(state = initialState, action) { infiniteAutoload: action.payload }) + case SET_PROJECTS_LIST_VIEW: + return Object.assign({}, state, { + projectsListView: action.payload + }) + default: return state } diff --git a/src/routes/notifications/actions/index.js b/src/routes/notifications/actions/index.js index 10e7e728d..7d886f0ea 100644 --- a/src/routes/notifications/actions/index.js +++ b/src/routes/notifications/actions/index.js @@ -68,6 +68,21 @@ export const toggleNotificationRead = (notificationId) => (dispatch) => { }) } +export const toggleBundledNotificationRead = (bundledNotificationId, bundledIds) => (dispatch) => { + dispatch({ + type: NOTIFICATIONS_PENDING + }) + + notificationsService.markNotificationsRead(bundledIds.join('-')).then(() => { + dispatch({ + type: TOGGLE_NOTIFICATION_READ, + payload: bundledNotificationId + }) + }).catch(err => { + Alert.error(`Failed to mark notification read. ${err.message}`) + }) +} + export const viewOlderNotifications = (sourceId) => (dispatch) => dispatch({ type: VIEW_OLDER_NOTIFICATIONS_SUCCESS, payload: sourceId diff --git a/src/routes/notifications/constants/notifications.js b/src/routes/notifications/constants/notifications.js index c6ca3094d..72d2c6da0 100644 --- a/src/routes/notifications/constants/notifications.js +++ b/src/routes/notifications/constants/notifications.js @@ -1,3 +1,9 @@ +/** + * Notifications rules + * + * Templates for `text`, `bundledText` and `GOTO` are handlebars templates. + * There are several custom Handlebars helpers defined in `../helpers/notifications.js` + */ import { NOTIFICATION_TYPE, ROLE_CONNECT_COPILOT, ROLE_CONNECT_MANAGER, ROLE_ADMINISTRATOR, @@ -5,197 +11,348 @@ import { } from '../../../config/constants' const GOTO = { - PROJECT_DASHBOARD: '/projects/[projectId]', - PROJECT_SPECIFICATION: '/projects/[projectId]/specification', - TOPIC: '/projects/[projectId]/#feed-[topicId]', - POST: '/projects/[projectId]/#comment-[postId]', - FILE_LIST: '/projects/[projectId]/specification#appDefinition-files' + PROJECT_DASHBOARD: '/projects/{{projectId}}', + PROJECT_SPECIFICATION: '/projects/{{projectId}}/specification', + TOPIC: '/projects/{{projectId}}/#feed-{{topicId}}', + POST: '/projects/{{projectId}}/#comment-{{postId}}', + FILE_LIST: '/projects/{{projectId}}/specification#appDefinition-files' } +// each notification can be displayed differently depend on WHO see them +// that's why each notification can have several rules to display which describe user roles +// NOTE for each version of notification have to repeat ALL rules, even if some rules are not changed export const NOTIFICATIONS = [ // Outside project { eventType: 'notifications.connect.project.created', type: NOTIFICATION_TYPE.NEW_PROJECT, - text: 'Your Project was created successfully', - projectRoles: [PROJECT_ROLE_OWNER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'Your Project was created successfully', + projectRoles: [PROJECT_ROLE_OWNER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.submittedForReview', type: NOTIFICATION_TYPE.REVIEW_PENDING, - text: 'Your project is now in review', - projectRoles: [PROJECT_ROLE_OWNER] - }, - { - eventType: 'notifications.connect.project.submittedForReview', - type: NOTIFICATION_TYPE.REVIEW_PENDING, - text: 'Project is available for review', - topcoderRoles: [ROLE_CONNECT_MANAGER, ROLE_ADMINISTRATOR], - goTo: GOTO.PROJECT_SPECIFICATION + rules: [{ + text: 'Your project is now in review', + projectRoles: [PROJECT_ROLE_OWNER] + }, { + text: 'Project is available for review', + topcoderRoles: [ROLE_CONNECT_MANAGER, ROLE_ADMINISTRATOR], + goTo: GOTO.PROJECT_SPECIFICATION + }] }, { eventType: 'notifications.connect.project.approved', type: NOTIFICATION_TYPE.UPDATES, - text: 'Your project was approved, work would soon start', - projectRoles: [PROJECT_ROLE_OWNER] - }, - { - eventType: 'notifications.connect.project.approved', - type: NOTIFICATION_TYPE.UPDATES, - text: 'Project is available for pickup', - topcoderRoles: [ROLE_CONNECT_COPILOT, ROLE_ADMINISTRATOR], - goTo: GOTO.PROJECT_DASHBOARD - }, - { - eventType: 'notifications.connect.project.approved', - type: NOTIFICATION_TYPE.UPDATES, - text: 'Project was approved', - projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'Your project was approved, work would soon start', + projectRoles: [PROJECT_ROLE_OWNER] + }, { + text: 'Project is available for pickup', + topcoderRoles: [ROLE_CONNECT_COPILOT, ROLE_ADMINISTRATOR], + goTo: GOTO.PROJECT_DASHBOARD + }, { + text: 'Project was approved', + projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.paused', type: NOTIFICATION_TYPE.REVIEW_PENDING, - text: 'Your project was paused', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], - goTo: GOTO.PROJECT_DASHBOARD - }, - { - eventType: 'notifications.connect.project.paused', - type: NOTIFICATION_TYPE.REVIEW_PENDING, - text: 'A project was paused', - topcoderRoles: [ROLE_ADMINISTRATOR], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'Your project was paused', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }, { + text: 'A project was paused', + topcoderRoles: [ROLE_ADMINISTRATOR], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.completed', type: NOTIFICATION_TYPE.UPDATES, - text: 'Your project completed successfully!', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], - goTo: GOTO.PROJECT_DASHBOARD - }, - { - eventType: 'notifications.connect.project.completed', - type: NOTIFICATION_TYPE.UPDATES, - text: 'A project was completed', - topcoderRoles: [ROLE_ADMINISTRATOR], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'Your project completed successfully!', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.PROJECT_DASHBOARD + }, { + text: 'A project was completed', + topcoderRoles: [ROLE_ADMINISTRATOR], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.canceled', type: NOTIFICATION_TYPE.WARNING, - text: 'Your project was canceled. If you think that was a mistake...', - projectRoles: [PROJECT_ROLE_OWNER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'Your project was canceled. If you think that was a mistake...', + projectRoles: [PROJECT_ROLE_OWNER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, // User management { eventType: 'notifications.connect.project.member.joined', type: NOTIFICATION_TYPE.MEMBER_ADDED, - text: 'A new team member joined your project', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'A new team member joined your project', + shouldBundle: true, + bundledText: '{{bundledCount}} new team members joined your project', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.member.left', type: NOTIFICATION_TYPE.WARNING, - text: '[userHandle] left a project', - projectRoles: [PROJECT_ROLE_MANAGER] + rules: [{ + text: '{{userHandle}} left a project', + shouldBundle: true, + bundledText: '{{bundledCount}} team members left your project', + projectRoles: [PROJECT_ROLE_MANAGER] + }] + }, { + version: 2, + eventType: 'notifications.connect.project.member.left', + type: NOTIFICATION_TYPE.WARNING, + rules: [{ + text: '{{userFullName}} left a project', + shouldBundle: true, + bundledText: '{{bundledCount}} team members left your project', + projectRoles: [PROJECT_ROLE_MANAGER] + }] }, { eventType: 'notifications.connect.project.member.removed', type: NOTIFICATION_TYPE.WARNING, - text: '[userHandle] was removed from project', - projectRoles: [PROJECT_ROLE_MANAGER] + rules: [{ + text: '{{userHandle}} was removed from project', + shouldBundle: true, + bundledText: '{{bundledCount}} team members were removed from your project', + projectRoles: [PROJECT_ROLE_MANAGER] + }, { + text: 'You were removed from a project', + toUserHandle: true + }] }, { + version: 2, eventType: 'notifications.connect.project.member.removed', type: NOTIFICATION_TYPE.WARNING, - text: 'You were removed from a project', - toUserHandle: true + rules: [{ + text: '{{userFullName}} was removed from project', + shouldBundle: true, + bundledText: '{{bundledCount}} team members were removed from your project', + projectRoles: [PROJECT_ROLE_MANAGER] + }, { + text: 'You were removed from a project', + toUserHandle: true + }] }, { eventType: 'notifications.connect.project.member.assignedAsOwner', type: NOTIFICATION_TYPE.MEMBER_ADDED, - text: 'You are now the owner of project', - toUserHandle: true, - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'You are now the owner of project', + toUserHandle: true, + goTo: GOTO.PROJECT_DASHBOARD + }, { + text: 'Project owner was changed to {{userHandle}}', + projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { + version: 2, eventType: 'notifications.connect.project.member.assignedAsOwner', type: NOTIFICATION_TYPE.MEMBER_ADDED, - text: 'Project owner was changed to [userHandle]', - projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'You are now the owner of project', + toUserHandle: true, + goTo: GOTO.PROJECT_DASHBOARD + }, { + text: 'Project owner was changed to {{userFullName}}', + projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.member.copilotJoined', type: NOTIFICATION_TYPE.MEMBER_ADDED, - text: 'A copilot joined your project team', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'A copilot joined your project team', + shouldBundle: true, + bundledText: '{{bundledCount}} copilots joined your project team', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.member.managerJoined', type: NOTIFICATION_TYPE.MEMBER_ADDED, - text: 'A manager joined your project team', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: 'A manager joined your project team', + shouldBundle: true, + bundledText: '{{bundledCount}} managers joined your project team', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.topic.created', type: NOTIFICATION_TYPE.NEW_POSTS, - text: '[userHandle] created a new post ', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], - goTo: GOTO.TOPIC + rules: [{ + text: '{{userHandle}} created a new post ', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.TOPIC + }] + }, { + version: 2, + eventType: 'notifications.connect.project.topic.created', + type: NOTIFICATION_TYPE.NEW_POSTS, + rules: [{ + text: '{{userFullName}} created a new post ', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.TOPIC + }] }, { eventType: 'notifications.connect.project.post.created', type: NOTIFICATION_TYPE.NEW_POSTS, - text: '[userHandle] responded to your post', - toTopicStarter: true, - goTo: GOTO.POST + rules: [{ + text: '{{userHandle}} responded to your post', + shouldBundle: true, + bundledText: '{{#showMore __history__ 3}}{{userHandle}}{{/showMore}} created {{bundledCount}} new posts to your topic', + toTopicStarter: true, + goTo: GOTO.POST + }, { + text: '{{userHandle}} responded to a post', + shouldBundle: true, + bundledText: '{{#showMore __history__ 3}}{{userHandle}}{{/showMore}} created {{bundledCount}} new posts', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.POST + }] }, { + version: 2, eventType: 'notifications.connect.project.post.created', type: NOTIFICATION_TYPE.NEW_POSTS, - text: '[userHandle] responded to a post', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], - goTo: GOTO.POST + rules: [{ + text: '{{userFullName}} responded to your post', + shouldBundle: true, + bundledText: '{{#showMore __history__ 3}}{{fallback userFullName userHandle}}{{/showMore}} created {{bundledCount}} new posts to your topic', + toTopicStarter: true, + goTo: GOTO.POST + }, { + text: '{{userFullName}} responded to a post', + shouldBundle: true, + bundledText: '{{#showMore __history__ 3}}{{fallback userFullName userHandle}}{{/showMore}} created {{bundledCount}} new posts', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.POST + }] + }, + + { + version: 2, + eventType: 'notifications.connect.project.post.mention', + type: NOTIFICATION_TYPE.NEW_POSTS, + rules: [{ + text: '{{userFullName}} mentioned your in a post', + toUserHandle: true, + goTo: GOTO.POST + }] }, { eventType: 'notifications.connect.project.linkCreated', type: NOTIFICATION_TYPE.NEW_POSTS, - text: '[userHandle] added to your project', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], - goTo: GOTO.PROJECT_DASHBOARD + rules: [{ + text: '{{userHandle}} added to your project', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.PROJECT_DASHBOARD + }] + }, { + version: 2, + eventType: 'notifications.connect.project.linkCreated', + type: NOTIFICATION_TYPE.NEW_POSTS, + rules: [{ + text: '{{userFullName}} added to your project', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.PROJECT_DASHBOARD + }] }, { eventType: 'notifications.connect.project.fileUploaded', type: NOTIFICATION_TYPE.NEW_POSTS, - text: '[userHandle] added a new file', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], - goTo: GOTO.FILE_LIST + rules: [{ + text: '{{userHandle}} added a new file', + shouldBundle: true, + bundledText: '{{bundledCount}} new files were added', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.FILE_LIST + }] + }, { + version: 2, + eventType: 'notifications.connect.project.fileUploaded', + type: NOTIFICATION_TYPE.NEW_POSTS, + rules: [{ + text: '{{userFullName}} added a new file', + shouldBundle: true, + bundledText: '{{bundledCount}} new files were added', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.FILE_LIST + }] }, { eventType: 'notifications.connect.project.specificationModified', type: NOTIFICATION_TYPE.UPDATES, - text: '[userHandle] updated the project specification', - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], - goTo: GOTO.PROJECT_SPECIFICATION + rules: [{ + text: '{{userHandle}} updated the project specification', + shouldBundle: true, + bundledText: 'Project specification is modified', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.PROJECT_SPECIFICATION + }] + }, { + version: 2, + eventType: 'notifications.connect.project.specificationModified', + type: NOTIFICATION_TYPE.UPDATES, + rules: [{ + text: '{{userFullName}} updated the project specification', + shouldBundle: true, + bundledText: 'Project specification is modified', + projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + goTo: GOTO.PROJECT_SPECIFICATION + }] } ] + +// create a flat list of all possible notifications (expand notification rules) +export const NOTIFICATION_RULES = (() => { + const notificationRules = [] + + NOTIFICATIONS.forEach((notification) => { + notification.rules.forEach((notificationRule) => { + notificationRules.push({ ...notification, ...notificationRule }) + }) + }) + + return notificationRules +})() diff --git a/src/routes/notifications/containers/NotificationsContainer.jsx b/src/routes/notifications/containers/NotificationsContainer.jsx index 3de0fac26..72f9c574f 100644 --- a/src/routes/notifications/containers/NotificationsContainer.jsx +++ b/src/routes/notifications/containers/NotificationsContainer.jsx @@ -7,7 +7,8 @@ import _ from 'lodash' import { connect } from 'react-redux' import { Link } from 'react-router-dom' import Sticky from 'react-stickynode' -import { getNotifications, setNotificationsFilterBy, markAllNotificationsRead, toggleNotificationRead, viewOlderNotifications } from '../actions' +import { getNotifications, setNotificationsFilterBy, markAllNotificationsRead, + toggleNotificationRead, viewOlderNotifications, toggleBundledNotificationRead } from '../actions' import FooterV2 from '../../../components/FooterV2/FooterV2' import NotificationsSection from '../../../components/NotificationsSection/NotificationsSection' import NotificationsSectionTitle from '../../../components/NotificationsSectionTitle/NotificationsSectionTitle' @@ -35,7 +36,8 @@ class NotificationsContainer extends React.Component { return null } const { sources, notifications, filterBy, setNotificationsFilterBy, - markAllNotificationsRead, toggleNotificationRead, viewOlderNotifications, oldSourceIds, pending } = this.props + markAllNotificationsRead, toggleNotificationRead, viewOlderNotifications, + oldSourceIds, pending, toggleBundledNotificationRead } = this.props const notReadNotifications = filterReadNotifications(notifications) const notificationsBySources = splitNotificationsBySources(sources, notReadNotifications, oldSourceIds) let globalSource = notificationsBySources.length > 0 && notificationsBySources[0].id === 'global' ? notificationsBySources[0] : null @@ -49,6 +51,18 @@ class NotificationsContainer extends React.Component { } } + const toggleNotificationOrBundleRead = (notificationId) => { + if (!pending) { + const notification = _.find(notReadNotifications, { id: notificationId }) + // if it's bundled notification, then toggle all notifications inside the bundle + if (notification.bundledIds) { + toggleBundledNotificationRead(notificationId, notification.bundledIds) + } else { + toggleNotificationRead(notificationId) + } + } + } + return (
    @@ -57,7 +71,7 @@ class NotificationsContainer extends React.Component { {...globalSource} isGlobal onMarkAllClick={() => !pending && markAllNotificationsRead('global', notifications)} - onReadToggleClick={(id) => !pending && toggleNotificationRead(id)} + onReadToggleClick={toggleNotificationOrBundleRead} onViewOlderClick={() => viewOlderNotifications(globalSource.id)} /> } @@ -67,7 +81,7 @@ class NotificationsContainer extends React.Component { key={source.id} {...source} onMarkAllClick={() => !pending && markAllNotificationsRead(source.id, notifications)} - onReadToggleClick={(id) => !pending && toggleNotificationRead(id)} + onReadToggleClick={toggleNotificationOrBundleRead} onViewOlderClick={() => viewOlderNotifications(source.id)} /> )} @@ -119,7 +133,8 @@ const mapDispatchToProps = { setNotificationsFilterBy, markAllNotificationsRead, toggleNotificationRead, - viewOlderNotifications + viewOlderNotifications, + toggleBundledNotificationRead } export default connect(mapStateToProps, mapDispatchToProps)(NotificationsContainerWithLoaderAndAuth) diff --git a/src/routes/notifications/helpers/notifications.js b/src/routes/notifications/helpers/notifications.js index 2907cb44a..59cb96384 100644 --- a/src/routes/notifications/helpers/notifications.js +++ b/src/routes/notifications/helpers/notifications.js @@ -3,11 +3,66 @@ */ import _ from 'lodash' import { OLD_NOTIFICATION_TIME } from '../../../config/constants' -import { NOTIFICATIONS } from '../constants/notifications' +import { NOTIFICATION_RULES } from '../constants/notifications' +import Handlebars from 'handlebars' // how many milliseconds in one minute const MILLISECONDS_IN_MINUTE = 60000 +/** + * Handlebars helper to display limited quantity of item and text +N more + * + * Example: + * ``` + * {{#showMore __history__ 3}}{{userHandle}}{{/showMore}} + * ``` + * Gets 3 items from `__history__` array and render them comma-separated. + * If there are more than 3 items, adds '+N more'. Output can be: + * ``` + * userHandle1, userHandle1, userHandle3 +7 more + * ``` + * + * @param {Array} items list of items + * @param {Number} max max items to display + * @param {Object} options handlebars options + */ +const handlebarsShowMoreHelper = (items, max, options) => { + const renderedItems = items.map(options.fn) + const uniqRenderedItems = _.uniq(renderedItems) + const maxRenderedItems = uniqRenderedItems.slice(0, max) + const restItemsCount = uniqRenderedItems.length - maxRenderedItems.length + + let out = maxRenderedItems.join(', ') + + if (restItemsCount > 0) { + out += ` +${restItemsCount} more` + } + + return out +} + +/** + * Handlebars helper which displays fallback value if the value is not provided (falsy) + * + * Example: + * ``` + * {{fallback userFullName userHandle}} + * ``` + * Will output `userHandle` if `userFullName` is not provided + * + * @param {String} value value + * @param {String} fallbackValue fallback value + */ +const handlebarsFallbackHelper = (value, fallbackValue) => { + const out = value || fallbackValue + + return new Handlebars.SafeString(out) +} + +// register handlebars helpers +Handlebars.registerHelper('showMore', handlebarsShowMoreHelper) +Handlebars.registerHelper('fallback', handlebarsFallbackHelper) + /** * Get notification filters by sources * @@ -103,28 +158,6 @@ export const limitQuantityInSources = (notificationsBySources, maxPerSource, max return notificationsBySourceLimited } -/** - * Render template with [variable] placeholders - * - * @param {String} templateStr template - * @param {Object} values values for template placeholders - * - * @return {String} rendered template - */ -const renderTemplate = (templateStr, values) => { - const regexp = /\[([^\]]+)\]/g - let output = templateStr - let match - - while (match = regexp.exec(templateStr)) { // eslint-disable-line no-cond-assign - if (values[match[1]]) { - output = output.replace(match[0], values[match[1]]) - } - } - - return output -} - /** * Get a rule for notification * @@ -133,9 +166,13 @@ const renderTemplate = (templateStr, values) => { * @return {Object} notification rule */ const getNotificationRule = (notification) => { - const notificationRule = _.find(NOTIFICATIONS, (_notificationRule) => { + const notificationRule = _.find(NOTIFICATION_RULES, (_notificationRule) => { let match = _notificationRule.eventType === notification.eventType + if (notification.version) { + match = match && _notificationRule.version === notification.version + } + if (notification.contents.toTopicStarter) { match = match && _notificationRule.toTopicStarter } @@ -156,12 +193,95 @@ const getNotificationRule = (notification) => { }) if (!notificationRule) { - throw new Error(`Cannot find notification rule for eventType ${notification.eventType}.`) + throw new Error(`Cannot find notification rule for eventType '${notification.eventType}' version '${notification.version}'.`) } return notificationRule } +/** + * Compare notification rules ignoring version + * + * @param {Object} rule1 notification rule 1 + * @param {Object} rule2 notification rule 2 + * + * @returns {Boolean} true if rules are equal + */ +const isNotificationRuleEqual = (rule1, rule2) => { + /** + * Properties which distinguish one rule from another + * + * @type {Array} + */ + const ESSENTIAL_RULE_PROPERTIES = ['eventType', 'toTopicStarter', 'toUserHandle', 'projectRole', 'topcoderRole'] + const essentialRule1 = _.pick(rule1, ESSENTIAL_RULE_PROPERTIES) + const essentialRule2 = _.pick(rule2, ESSENTIAL_RULE_PROPERTIES) + + return _.isEqual(essentialRule1, essentialRule2) +} + +/** + * Bundle same type notifications for the same project + * + * @param {Array<{notification, notificationRule}>} notificationsWithRules list of notification with rules + * + * @returns {Array<{notification, notificationRule}>} bundled notifications with rules + */ +const bundleNotifications = (notificationsWithRules) => { + /** + * List of `contents` properties for which we want to keep the whole history + * + * @type {Array} + */ + const PROPERTIES_KEEP_IN_HISTORY = ['userHandle', 'userFullName'] + const bundledNotificationsWithRules = [] + + // starting from the latest notifications + // find older notifications with the same notification rule and the same project + _.reverse(notificationsWithRules).forEach((notificationWithRule) => { + // if notifications doesn't have to be bundled, add it to notifications list as it is + if (!notificationWithRule.notificationRule.shouldBundle) { + bundledNotificationsWithRules.push(notificationWithRule) + } + + // try to find existent notification in the list to which we can bundle current one + const existentNotificationWithRule = _.find(bundledNotificationsWithRules, (bundledNotificationWithRule) => ( + // same source id means same project + bundledNotificationWithRule.notification.sourceId === notificationWithRule.notification.sourceId + // same notification rule means same type + && isNotificationRuleEqual(bundledNotificationWithRule.notificationRule, notificationWithRule.notificationRule) + )) + + // if already have notification of the same type, update it instead of adding new notification to the list + if (existentNotificationWithRule) { + // if haven't bundled any notifications yet, then init properties which only bundled notifications has + if (!existentNotificationWithRule.notification.bundledIds) { + existentNotificationWithRule.notification.bundledIds = [ + existentNotificationWithRule.notification.id + ] + existentNotificationWithRule.notification.contents.bundledCount = 1 + existentNotificationWithRule.notification.contents.__history__ = [ + _.pick(existentNotificationWithRule.notification.contents, PROPERTIES_KEEP_IN_HISTORY) + ] + } + + // at this point bundled notification is initialized, + // so we just update values of bundled notifications + existentNotificationWithRule.notification.bundledIds.push( + notificationWithRule.notification.id + ) + existentNotificationWithRule.notification.contents.bundledCount += 1 + existentNotificationWithRule.notification.contents.__history__.push( + _.pick(notificationWithRule.notification.contents, PROPERTIES_KEEP_IN_HISTORY) + ) + } else { + bundledNotificationsWithRules.push(notificationWithRule) + } + }) + + return bundledNotificationsWithRules +} + /** * Prepare notifications * @@ -170,7 +290,7 @@ const getNotificationRule = (notification) => { * @return {Array} notification list */ export const prepareNotifications = (rowNotifications) => { - const notifications = rowNotifications.map((rowNotification) => ({ + const notificationsWithRules = rowNotifications.map((rowNotification) => ({ id: `${rowNotification.id}`, sourceId: rowNotification.contents.projectId ? `${rowNotification.contents.projectId}` : 'global', sourceName: rowNotification.contents.projectId ? (rowNotification.contents.projectName || 'project') : 'Global', @@ -178,17 +298,39 @@ export const prepareNotifications = (rowNotifications) => { date: rowNotification.createdAt, isRead: rowNotification.read, isOld: new Date().getTime() - OLD_NOTIFICATION_TIME * MILLISECONDS_IN_MINUTE > new Date(rowNotification.createdAt).getTime(), - contents: rowNotification.contents + contents: rowNotification.contents, + version: rowNotification.version })).map((notification) => { const notificationRule = getNotificationRule(notification) // populate notification data notification.type = notificationRule.type - notification.text = renderTemplate(notificationRule.text, notification.contents) - notification.goto = renderTemplate(notificationRule.goTo, notification.contents) + if (notificationRule.goTo){ + const renderGoTo = Handlebars.compile(notificationRule.goTo) + notification.goto = renderGoTo(notification.contents) + } - return notification + return { + notification, + notificationRule + } }) + const bundledNotificationsWithRules = bundleNotifications(notificationsWithRules) + + // render notifications texts + bundledNotificationsWithRules.forEach((bundledNotificationWithRule) => { + const { notification, notificationRule } = bundledNotificationWithRule + const textTpl = notification.contents.bundledCount + // if text for bundled notification is not defined, just use regular text + ? (notificationRule.bundledText || notificationRule.text) + : notificationRule.text + + const renderText = Handlebars.compile(textTpl) + notification.text = renderText(notification.contents) + }) + + const notifications = _.map(bundledNotificationsWithRules, 'notification') + return notifications } diff --git a/src/routes/settings/routes/notifications/components/NotificationSettingsForm.jsx b/src/routes/settings/routes/notifications/components/NotificationSettingsForm.jsx index 85b717ff5..e504f83fd 100644 --- a/src/routes/settings/routes/notifications/components/NotificationSettingsForm.jsx +++ b/src/routes/settings/routes/notifications/components/NotificationSettingsForm.jsx @@ -5,10 +5,11 @@ import React from 'react' import PropTypes from 'prop-types' import { Formsy, SwitchButton } from 'appirio-tech-react-components' import BtnGroup from '../../../../../components/BtnGroup/BtnGroup' -import iconWeb from '../../../../../assets/images/icon-web.png' +import IconSettingsWeb from '../../../../../assets/icons/settings-icon-web.svg' import './NotificationSettingsForm.scss' import _ from 'lodash' + // list of the notification groups and related event types // TODO move it to constants and reuse the same list in services/settings.js const topics = [ @@ -138,7 +139,9 @@ class NotificationSettingsForm extends React.Component { Notifications - Web + + + Web {/* as email notification currently not supported, hide them for now */} {/*Email*/} diff --git a/src/routes/settings/routes/notifications/components/NotificationSettingsForm.scss b/src/routes/settings/routes/notifications/components/NotificationSettingsForm.scss index d3090ab98..a07f7db92 100644 --- a/src/routes/settings/routes/notifications/components/NotificationSettingsForm.scss +++ b/src/routes/settings/routes/notifications/components/NotificationSettingsForm.scss @@ -73,6 +73,7 @@ .th-with-icon { display: inline-block; + height: 0; > img, > span { @@ -82,6 +83,7 @@ > span { margin-left: 10px; + margin-bottom: 10px; } } diff --git a/src/routes/settings/routes/profile/components/ProfileSettingsForm.jsx b/src/routes/settings/routes/profile/components/ProfileSettingsForm.jsx index ab113a364..e814fbe38 100644 --- a/src/routes/settings/routes/profile/components/ProfileSettingsForm.jsx +++ b/src/routes/settings/routes/profile/components/ProfileSettingsForm.jsx @@ -4,11 +4,13 @@ import React from 'react' import PropTypes from 'prop-types' import { Formsy, TCFormFields } from 'appirio-tech-react-components' -import SVGIconImage from '../../../../../components/SVGIconImage' import TextInputWithCounter from '../../../../../components/TextInputWithCounter/TextInputWithCounter' import ProfileSeetingsAvatar from './ProfileSeetingsAvatar' import { MAX_USERNAME_LENGTH } from '../../../../../config/constants' import './ProfileSettingsForm.scss' +import IconImage from '../../assets/icons/users-16px_single-01.svg' + + const ProfileSettingsForm = (props) => { const { username, photoSrc, firstname, lastname, company, mobilephone1, mobilephone2 } = props @@ -22,7 +24,7 @@ const ProfileSettingsForm = (props) => {
    -
    +
    diff --git a/src/routes/settings/routes/system/components/ChangeEmailForm.jsx b/src/routes/settings/routes/system/components/ChangeEmailForm.jsx index 4e177e793..05f5fdd55 100644 --- a/src/routes/settings/routes/system/components/ChangeEmailForm.jsx +++ b/src/routes/settings/routes/system/components/ChangeEmailForm.jsx @@ -8,11 +8,11 @@ import React from 'react' import PropTypes from 'prop-types' import _ from 'lodash' -import LoadingIndicator from '../../../../../components/LoadingIndicator/LoadingIndicator' -import SVGIconImage from '../../../../../components/SVGIconImage' import { EMAIL_AVAILABILITY_CHECK_DEBOUNCE } from '../../../../../config/constants' import { Formsy, TCFormFields } from 'appirio-tech-react-components' import './ChangeEmailForm.scss' +import IconCheck from '../../assets/icons/check.svg' + class ChangeEmailForm extends React.Component { constructor(props) { @@ -111,7 +111,7 @@ class ChangeEmailForm extends React.Component { />
    {isCheckingCurrentEmail && } - {isEmailChanged && currentEmailAvailable && } + {isEmailChanged && currentEmailAvailable && }
    diff --git a/src/styles/i/icon-chat-active.svg b/src/styles/i/icon-chat-active.svg deleted file mode 100644 index f1781765d..000000000 --- a/src/styles/i/icon-chat-active.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-chat-hover.svg b/src/styles/i/icon-chat-hover.svg deleted file mode 100644 index d1862e111..000000000 --- a/src/styles/i/icon-chat-hover.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-chat.svg b/src/styles/i/icon-chat.svg deleted file mode 100644 index 24c1e317a..000000000 --- a/src/styles/i/icon-chat.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-dashboard-active.svg b/src/styles/i/icon-dashboard-active.svg deleted file mode 100644 index f77f869d2..000000000 --- a/src/styles/i/icon-dashboard-active.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-dashboard-hover.svg b/src/styles/i/icon-dashboard-hover.svg deleted file mode 100644 index b1aea1687..000000000 --- a/src/styles/i/icon-dashboard-hover.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-dashboard.svg b/src/styles/i/icon-dashboard.svg deleted file mode 100644 index 2c284931a..000000000 --- a/src/styles/i/icon-dashboard.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-direct-arrow.svg b/src/styles/i/icon-direct-arrow.svg deleted file mode 100644 index f9b5e5a84..000000000 --- a/src/styles/i/icon-direct-arrow.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - Shape - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/src/styles/i/icon-hammer-active.svg b/src/styles/i/icon-hammer-active.svg deleted file mode 100644 index 89d617429..000000000 --- a/src/styles/i/icon-hammer-active.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-hammer-hover.svg b/src/styles/i/icon-hammer-hover.svg deleted file mode 100644 index a1231e407..000000000 --- a/src/styles/i/icon-hammer-hover.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-hammer.svg b/src/styles/i/icon-hammer.svg deleted file mode 100644 index 3312a0e37..000000000 --- a/src/styles/i/icon-hammer.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/src/styles/i/icon-ruler-pencil-active.svg b/src/styles/i/icon-ruler-pencil-active.svg deleted file mode 100644 index f98f6aa2e..000000000 --- a/src/styles/i/icon-ruler-pencil-active.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/styles/i/icon-ruler-pencil-hover.svg b/src/styles/i/icon-ruler-pencil-hover.svg deleted file mode 100644 index 2e1645bbb..000000000 --- a/src/styles/i/icon-ruler-pencil-hover.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/styles/i/icon-ruler-pencil.svg b/src/styles/i/icon-ruler-pencil.svg deleted file mode 100644 index 7fb99648c..000000000 --- a/src/styles/i/icon-ruler-pencil.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file