From c2164c93aa0e639c206321b2898efcb415a433fb Mon Sep 17 00:00:00 2001 From: Igor <35524806+igorschoester@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:55:35 +0200 Subject: [PATCH 1/3] Remove yoast-components dependency --- packages/js/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/js/package.json b/packages/js/package.json index ea18dc4293a..0c0528f157f 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -68,7 +68,6 @@ "redux": "^3.7.2", "redux-thunk": "^2.2.0", "styled-components": "^5.3.6", - "yoast-components": "^5.24.0", "yoastseo": "^1.91.1", "yup": "^0.32.11" }, From 9c3035b9b0a7e12e22eb2c391c7dea2818f706a0 Mon Sep 17 00:00:00 2001 From: Igor <35524806+igorschoester@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:56:53 +0200 Subject: [PATCH 2/3] Remove yoast-components from tooling --- .github/workflows/deprecation-check.yml | 2 -- .github/workflows/finish-coveralls.yml | 2 +- .github/workflows/jstest.yml | 1 - admin/class-admin-asset-manager.php | 5 ++--- config/webpack/externals.js | 5 +---- packages/components/README.md | 2 +- 6 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deprecation-check.yml b/.github/workflows/deprecation-check.yml index ff60c82af04..0385c6b7ef8 100644 --- a/.github/workflows/deprecation-check.yml +++ b/.github/workflows/deprecation-check.yml @@ -3,7 +3,6 @@ name: Deprecation check on: pull_request: paths: - - packages/yoast-components/** - packages/babel-preset/** - packages/components/** - packages/e2e-tests/** @@ -32,7 +31,6 @@ jobs: @${{ github.actor }} Please be aware that following packages have been abandoned and are not actively maintained anymore: | Package name | Path | | ------------- | ------------- | - | yoast-components | [packages/yoast-components](https://github.com/Yoast/wordpress-seo/tree/trunk/packages/yoast-components) | | @yoast/babel-preset | [packages/babel-preset](https://github.com/Yoast/wordpress-seo/tree/trunk/packages/babel-preset) | | @yoast/components | [packages/components](https://github.com/Yoast/wordpress-seo/tree/trunk/packages/components) | | @yoast/e2e-tests | [packages/e2e-tests ](https://github.com/Yoast/wordpress-seo/tree/trunk/packages/e2e-tests ) | diff --git a/.github/workflows/finish-coveralls.yml b/.github/workflows/finish-coveralls.yml index 62953b91340..d7561a009e4 100644 --- a/.github/workflows/finish-coveralls.yml +++ b/.github/workflows/finish-coveralls.yml @@ -105,5 +105,5 @@ jobs: COVERALLS_SERVICE_NUMBER: ${{ github.sha }} # Connect all builds together. with: github-token: ${{ secrets.COVERALLS_TOKEN }} - carryforward: "unit-php-7.2,unit-php-8.3,php-7.2-wp-6.3,php-7.2-wp-6.3-ms,php-8.3-wp-trunk,php-8.3-wp-trunk-ms,package-analysis-report,package-browserslist-config,package-components,package-feature-flag,package-helpers,package-js,package-replacement-variable-editor,package-search-metadata-previews,package-social-metadata-forms,package-social-metadata-previews,package-yoast-components,package-yoastseo" + carryforward: "unit-php-7.2,unit-php-8.3,php-7.2-wp-6.3,php-7.2-wp-6.3-ms,php-8.3-wp-trunk,php-8.3-wp-trunk-ms,package-analysis-report,package-browserslist-config,package-components,package-feature-flag,package-helpers,package-js,package-replacement-variable-editor,package-search-metadata-previews,package-social-metadata-forms,package-social-metadata-previews,package-yoastseo" parallel-finished: true diff --git a/.github/workflows/jstest.yml b/.github/workflows/jstest.yml index 564cec3e67b..c93e1570e0b 100644 --- a/.github/workflows/jstest.yml +++ b/.github/workflows/jstest.yml @@ -71,7 +71,6 @@ jobs: - 'search-metadata-previews' - 'social-metadata-forms' - 'social-metadata-previews' - - 'yoast-components' name: "TestJS - ${{ matrix.package }} (full)" diff --git a/admin/class-admin-asset-manager.php b/admin/class-admin-asset-manager.php index 3cbdc3488df..f59953370b9 100644 --- a/admin/class-admin-asset-manager.php +++ b/admin/class-admin-asset-manager.php @@ -360,7 +360,7 @@ protected function scripts_to_be_registered() { 'wp-components', 'wp-element', 'wp-i18n', - self::PREFIX . 'yoast-components', + self::PREFIX . 'components-new-package', self::PREFIX . 'externals-components', ], 'version' => $scripts['installation-success']['version'], @@ -401,7 +401,7 @@ static function ( $dep ) { self::PREFIX . 'externals-redux', self::PREFIX . 'analysis', self::PREFIX . 'react-select', - self::PREFIX . 'yoast-components', + self::PREFIX . 'components-new-package', ], 'version' => $scripts['workouts']['version'], ]; @@ -502,7 +502,6 @@ protected function load_renamed_scripts() { 'helpers' => 'helpers-package', 'jed' => 'jed-package', 'chart.js' => 'chart.js-package', - 'legacy-components' => 'components-package', 'network-admin-script' => 'network-admin', 'redux' => 'redux-package', 'replacement-variable-editor' => 'replacement-variable-editor-package', diff --git a/config/webpack/externals.js b/config/webpack/externals.js index e02dac170b3..7c573273c07 100644 --- a/config/webpack/externals.js +++ b/config/webpack/externals.js @@ -6,7 +6,7 @@ const { * Yoast dependencies, declared as such in the package.json. */ const { dependencies } = require( "../../packages/js/package" ); -const legacyYoastPackages = [ "yoast-components", "yoastseo" ]; +const legacyYoastPackages = [ "yoastseo" ]; const additionalPackages = [ "draft-js", "styled-components", @@ -38,9 +38,6 @@ const yoastExternals = yoastPackages.reduce( ( memo, packageName ) => { case "components": useablePackageName = "components-new"; break; - case "yoast-components": - useablePackageName = "components"; - break; case "yoastseo": useablePackageName = "analysis"; break; diff --git a/packages/components/README.md b/packages/components/README.md index 072addc2472..7b277995d8f 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -10,7 +10,7 @@ The Yoast/Components package is not pre-build. So if you would like to include ` ### Loading Javascript. 1. Install the package by running `yarn add @yoast/components`. -2. Include Yoast/components into the babel-loader of your `webpack.config`. This will look something like this: `include: [ paths.appSrc, /node_modules[/\\](yoast-components|@yoast)[/\\].*/ ]` +2. Include Yoast/components into the babel-loader of your `webpack.config`. This will look something like this: `include: [ paths.appSrc, /node_modules[/\\](@yoast)[/\\].*/ ]` 3. It can be that you will need presets for the `babel-loader`. These are: `presets: [ "@babel/preset-env", "@babel/preset-react" ]` Note that you will also need to install these presets. Run `yarn add --dev @babel/preset-env @babel/preset-react` From f685e618f54794c5ceb721d7aca952d5111be950 Mon Sep 17 00:00:00 2001 From: Igor <35524806+igorschoester@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:57:05 +0200 Subject: [PATCH 3/3] Remove yoast-components --- .eslintrc | 23 - packages/README.md | 2 - packages/yoast-components/.babelrc | 22 - packages/yoast-components/.codeclimate.yml | 20 - packages/yoast-components/.csslintrc | 2 - packages/yoast-components/.editorconfig | 21 - .../.github/ISSUE_TEMPLATE.md | 24 - .../.github/PULL_REQUEST_TEMPLATE.md | 20 - packages/yoast-components/.gitignore | 5 - packages/yoast-components/CHANGELOG.MD | 732 ---------- packages/yoast-components/Gruntfile.js | 34 - packages/yoast-components/LICENSE | 675 --------- packages/yoast-components/README.md | 152 -- .../a11y/examples/example.html | 12 - .../yoast-components/a11y/examples/example.js | 144 -- .../composites/CoursesOverview/Card.js | 1 - .../composites/CoursesOverview/CardBanner.js | 1 - .../composites/CoursesOverview/CardDetails.js | 3 - .../LinkSuggestions/LinkSuggestion.js | 118 -- .../LinkSuggestions/LinkSuggestions.js | 243 ---- .../actions/contentAnalysis.js | 183 --- .../actions/tests/contentAnalysisTest.js | 139 -- .../components/AnalysisList.js | 1 - .../components/AnalysisResult.js | 1 - .../components/ContentAnalysis.js | 1 - .../Plugin/ContentAnalysis/index.js | 6 - .../inclusiveLanguageResultsReducer.js | 98 -- .../contentAnalysis/keywordResultsReducer.js | 144 -- .../readabilityResultsReducer.js | 93 -- .../reducers/contentAnalysisReducer.js | 10 - .../tests/contentAnalysisReducerTest.js | 38 - .../tests/keywordResultsReducerTest.js | 668 --------- .../tests/readabilityResultsReducerTest.js | 316 ----- .../components/CornerstoneToggle.js | 49 - .../tests/CornerstoneToggleTest.js | 12 - .../CornerstoneToggleTest.js.snap | 105 -- .../Plugin/DashboardWidget/index.js | 2 - .../Plugin/Shared/components/ButtonSection.js | 80 -- .../Plugin/Shared/components/Collapsible.js | 1 - .../Plugin/Shared/components/KeywordInput.js | 260 ---- .../Plugin/Shared/tests/KeywordInputTest.js | 38 - .../__snapshots__/KeywordInputTest.js.snap | 168 --- .../yoast-components/config/defaults.json | 11 - .../yoast-components-standalone.min.css | 1 - .../css-dist/yoast-components.min.css | 1 - .../yoast-components/css/accessibility.css | 11 - packages/yoast-components/css/all.css | 1 - packages/yoast-components/css/standalone.css | 13 - packages/yoast-components/forms/index.js | 11 - .../grunt/config/aliases.yaml | 13 - .../yoast-components/grunt/config/clean.js | 7 - .../yoast-components/grunt/config/copy.js | 28 - .../yoast-components/grunt/config/postcss.js | 21 - packages/yoast-components/index.js | 126 -- .../jest/__mocks__/@wordpress/i18n.js | 34 - .../jest/__mocks__/fileMock.js | 1 - .../jest/__mocks__/styleMock.js | 1 - packages/yoast-components/jest/setupTests.js | 2 - packages/yoast-components/package.json | 116 -- .../redux/actions/insights.js | 22 - .../redux/actions/linkSuggestions.js | 21 - .../redux/actions/tests/insightsTest.js | 15 - .../actions/tests/linkSuggestionsTest.js | 16 - .../yoast-components/redux/reducers/index.js | 9 - .../redux/reducers/insights.js | 6 - .../redux/reducers/linkSuggestions.js | 22 - .../redux/reducers/prominentWords.js | 23 - .../redux/reducers/tests/indexTest.js | 31 - .../redux/reducers/tests/insightsTest.js | 23 - .../reducers/tests/linkSuggestionsTest.js | 59 - .../reducers/tests/prominentWordsTest.js | 57 - packages/yoast-components/renovate.json | 12 - .../yoast-components/style-guide/index.js | 5 - .../utils/buildStructuredUrl.js | 44 - packages/yoast-components/utils/i18n.js | 94 -- packages/yoast-components/utils/index.js | 11 - packages/yoast-components/utils/reactUtils.js | 18 - .../utils/tests/buildStructuredUrlTest.js | 30 - yarn.lock | 1238 +---------------- 79 files changed, 40 insertions(+), 6781 deletions(-) delete mode 100644 packages/yoast-components/.babelrc delete mode 100644 packages/yoast-components/.codeclimate.yml delete mode 100644 packages/yoast-components/.csslintrc delete mode 100644 packages/yoast-components/.editorconfig delete mode 100644 packages/yoast-components/.github/ISSUE_TEMPLATE.md delete mode 100644 packages/yoast-components/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 packages/yoast-components/.gitignore delete mode 100644 packages/yoast-components/CHANGELOG.MD delete mode 100644 packages/yoast-components/Gruntfile.js delete mode 100644 packages/yoast-components/LICENSE delete mode 100644 packages/yoast-components/README.md delete mode 100644 packages/yoast-components/a11y/examples/example.html delete mode 100644 packages/yoast-components/a11y/examples/example.js delete mode 100644 packages/yoast-components/composites/CoursesOverview/Card.js delete mode 100644 packages/yoast-components/composites/CoursesOverview/CardBanner.js delete mode 100644 packages/yoast-components/composites/CoursesOverview/CardDetails.js delete mode 100644 packages/yoast-components/composites/LinkSuggestions/LinkSuggestion.js delete mode 100644 packages/yoast-components/composites/LinkSuggestions/LinkSuggestions.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/actions/contentAnalysis.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/actions/tests/contentAnalysisTest.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisList.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisResult.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/components/ContentAnalysis.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/index.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/inclusiveLanguageResultsReducer.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/keywordResultsReducer.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/readabilityResultsReducer.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/contentAnalysisReducerTest.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/keywordResultsReducerTest.js delete mode 100644 packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/readabilityResultsReducerTest.js delete mode 100644 packages/yoast-components/composites/Plugin/CornerstoneContent/components/CornerstoneToggle.js delete mode 100644 packages/yoast-components/composites/Plugin/CornerstoneContent/tests/CornerstoneToggleTest.js delete mode 100644 packages/yoast-components/composites/Plugin/CornerstoneContent/tests/__snapshots__/CornerstoneToggleTest.js.snap delete mode 100644 packages/yoast-components/composites/Plugin/DashboardWidget/index.js delete mode 100644 packages/yoast-components/composites/Plugin/Shared/components/ButtonSection.js delete mode 100644 packages/yoast-components/composites/Plugin/Shared/components/Collapsible.js delete mode 100644 packages/yoast-components/composites/Plugin/Shared/components/KeywordInput.js delete mode 100644 packages/yoast-components/composites/Plugin/Shared/tests/KeywordInputTest.js delete mode 100644 packages/yoast-components/composites/Plugin/Shared/tests/__snapshots__/KeywordInputTest.js.snap delete mode 100644 packages/yoast-components/config/defaults.json delete mode 100644 packages/yoast-components/css-dist/yoast-components-standalone.min.css delete mode 100644 packages/yoast-components/css-dist/yoast-components.min.css delete mode 100644 packages/yoast-components/css/accessibility.css delete mode 100644 packages/yoast-components/css/all.css delete mode 100644 packages/yoast-components/css/standalone.css delete mode 100644 packages/yoast-components/forms/index.js delete mode 100644 packages/yoast-components/grunt/config/aliases.yaml delete mode 100644 packages/yoast-components/grunt/config/clean.js delete mode 100644 packages/yoast-components/grunt/config/copy.js delete mode 100644 packages/yoast-components/grunt/config/postcss.js delete mode 100644 packages/yoast-components/index.js delete mode 100644 packages/yoast-components/jest/__mocks__/@wordpress/i18n.js delete mode 100644 packages/yoast-components/jest/__mocks__/fileMock.js delete mode 100644 packages/yoast-components/jest/__mocks__/styleMock.js delete mode 100644 packages/yoast-components/jest/setupTests.js delete mode 100644 packages/yoast-components/package.json delete mode 100644 packages/yoast-components/redux/actions/insights.js delete mode 100644 packages/yoast-components/redux/actions/linkSuggestions.js delete mode 100644 packages/yoast-components/redux/actions/tests/insightsTest.js delete mode 100644 packages/yoast-components/redux/actions/tests/linkSuggestionsTest.js delete mode 100644 packages/yoast-components/redux/reducers/index.js delete mode 100644 packages/yoast-components/redux/reducers/insights.js delete mode 100644 packages/yoast-components/redux/reducers/linkSuggestions.js delete mode 100644 packages/yoast-components/redux/reducers/prominentWords.js delete mode 100644 packages/yoast-components/redux/reducers/tests/indexTest.js delete mode 100644 packages/yoast-components/redux/reducers/tests/insightsTest.js delete mode 100644 packages/yoast-components/redux/reducers/tests/linkSuggestionsTest.js delete mode 100644 packages/yoast-components/redux/reducers/tests/prominentWordsTest.js delete mode 100644 packages/yoast-components/renovate.json delete mode 100644 packages/yoast-components/style-guide/index.js delete mode 100644 packages/yoast-components/utils/buildStructuredUrl.js delete mode 100644 packages/yoast-components/utils/i18n.js delete mode 100644 packages/yoast-components/utils/index.js delete mode 100644 packages/yoast-components/utils/reactUtils.js delete mode 100644 packages/yoast-components/utils/tests/buildStructuredUrlTest.js diff --git a/.eslintrc b/.eslintrc index 0e0c314591e..bdb48ee2129 100644 --- a/.eslintrc +++ b/.eslintrc @@ -48,29 +48,6 @@ overrides: - "packages/social-metadata-previews/**/*.js" rules: import/no-unresolved: [ "error", { ignore: [ "^@yoast/(components|replacement-variable-editor|social-metadata-forms|style-guide)" ] } ] - - files: - - "packages/yoast-components/**/*.js" - rules: - complexity: [ 1, 6 ] - # A wrapping label is not necessary when there already is an htmlFor attribute. - jsx-a11y/label-has-for: [ "error", { required: "id" } ] - require-jsdoc: 1 - react/button-has-type: 1 - react/default-props-match-prop-types: 1 - react/no-unused-prop-types: 1 - react/no-access-state-in-setstate: 1 - react/no-unused-state: 1 - react/no-deprecated: 0 - react/jsx-no-bind: 1 - react/jsx-no-target-blank: 1 - react/require-default-props: 1 - react/forbid-foreign-prop-types: 1 - import/no-duplicates: 0 - import/named: 0 - import/no-extraneous-dependencies: 0 - import/no-unresolved: [ "error", { ignore: [ "^@yoast/(analysis-report|components|helpers|replacement-variable-editor|search-metadata-previews|style-guide)" ] } ] - env: - jest: true - files: - "packages/**/tests/**/*Test.js" rules: diff --git a/packages/README.md b/packages/README.md index 03b5037ed27..3c26c3548d1 100644 --- a/packages/README.md +++ b/packages/README.md @@ -26,8 +26,6 @@ This monorepo includes reusable packages: - A combination of style constants and functions that can be used to conform to the Yoast corporate identity. - [eslint-config-yoast](eslint) - ESLint configuration for Yoast projects. -- [yoast-components](yoast-components) *[deprecated. replaced by [@yoast/components](packages/components)]* - - All-purpose React components. - [yoastseo](yoastseo) *[Replaces [YoastSEO.js](https://github.com/yoast//yoastseo.js)]* - Text analysis and assessment library in JavaScript. This library can generate interesting metrics about a text and assess these metrics to give you an assessment which can be used to improve the text. diff --git a/packages/yoast-components/.babelrc b/packages/yoast-components/.babelrc deleted file mode 100644 index 107ac2760fc..00000000000 --- a/packages/yoast-components/.babelrc +++ /dev/null @@ -1,22 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "browsers": [ "extends @yoast/browserslist-config" ] - } - } - ] - ], - "plugins": [ - "@babel/plugin-transform-react-jsx" - ], - "env": { - "test": { - "plugins": [ - "babel-plugin-styled-components" - ] - } - } -} diff --git a/packages/yoast-components/.codeclimate.yml b/packages/yoast-components/.codeclimate.yml deleted file mode 100644 index f5f6ecb3581..00000000000 --- a/packages/yoast-components/.codeclimate.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -engines: - csslint: - enabled: true - duplication: - enabled: true - config: - languages: - - javascript - fixme: - enabled: true -ratings: - paths: - - "**.css" - - "**.js" -exclude_paths: -- grunt/**/* -- Gruntfile.js -- "**/*Test.js" -- app/**/* diff --git a/packages/yoast-components/.csslintrc b/packages/yoast-components/.csslintrc deleted file mode 100644 index aacba956e5b..00000000000 --- a/packages/yoast-components/.csslintrc +++ /dev/null @@ -1,2 +0,0 @@ ---exclude-exts=.min.css ---ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes diff --git a/packages/yoast-components/.editorconfig b/packages/yoast-components/.editorconfig deleted file mode 100644 index 92728887917..00000000000 --- a/packages/yoast-components/.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# http://editorconfig.org - -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 4 -tab_width = 4 -indent_style = tab -insert_final_newline = true -trim_trailing_whitespace = true - -[*.txt] -trim_trailing_whitespace = false - -[*.{md,json,yml}] -indent_style = space -indent_size = 2 diff --git a/packages/yoast-components/.github/ISSUE_TEMPLATE.md b/packages/yoast-components/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 8d7dadb07c1..00000000000 --- a/packages/yoast-components/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,24 +0,0 @@ - - -* [ ] I've read and understood the [contribution guidelines](https://github.com/Yoast/wordpress-seo/blob/trunk/.github/CONTRIBUTING.md). -* [ ] I've searched for any related issues and avoided creating a duplicate issue. - -### Please give us a description of what happened. - - - - -### Please describe what you expected to happen and why. - - - - -### How can we reproduce this behavior? -1. -2. -3. - -### Technical info -* yoast-components version: diff --git a/packages/yoast-components/.github/PULL_REQUEST_TEMPLATE.md b/packages/yoast-components/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 5c25e132919..00000000000 --- a/packages/yoast-components/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,20 +0,0 @@ -## Summary - -This PR can be summarized in the following changelog entry: - -* - -## Relevant technical choices: - -* - -## Test instructions - -This PR can be tested by following these steps: - -* - -## UI changes -* [ ] This PR changes the UI in the plugin. I have added the 'UI change' label to this PR. - -Fixes # diff --git a/packages/yoast-components/.gitignore b/packages/yoast-components/.gitignore deleted file mode 100644 index c82993336c2..00000000000 --- a/packages/yoast-components/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -.idea/ -coverage/ -*.log -package-lock.json \ No newline at end of file diff --git a/packages/yoast-components/CHANGELOG.MD b/packages/yoast-components/CHANGELOG.MD deleted file mode 100644 index f3a56eed3ac..00000000000 --- a/packages/yoast-components/CHANGELOG.MD +++ /dev/null @@ -1,732 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -We follow [Semantic Versioning](http://semver.org/). - -## 5.24.1 March 2nd, 2023 -### Bugfixes -* Fixes a security issue. - -## 5.12.1 November 2nd, 2020 -### Bugfixes -* Deprecates `OnboardingWizard`, `MessageBox`, `LoadingIndicator`. Use the `@yoast/configuration-wizard` instead. - -## 5.12.0 October 13th, 2020 -### Enhancements -* Changes the look of the KeyphraseInput component's errors. -* Improves accessibility of the KeyphraseInput component's errors list. -* Adds a `hasError` prop to the KeywordInput component. - -### Bugfixes -* Fixes a bug where the YoastReactSelect component would not show the border and inner shadow correctly. -* Fixes a bug where the font size and weight for the KeywordInput label would not be set correctly. - -## 5.8.0 August 3rd, 2020 -### Enhancements -* Adds a label to the internal linking suggestions, indicating the post type or taxonomy name of the suggested post or term. -* Changes the message the user receives in the internal linking suggestions container. The message now includes a notification to add a title and/or a metadescription (if those are missing) to improve the quality of internal linking suggestions. - -## 5.7.0 July 6th, 2020 -### Enhancements -* Changes the message the user receives in the internal linking suggestions container. The message now includes a notification to add a title and/or a metadescription (if those are missing) to improve the quality of internal linking suggestions. - -## 5.2.0 April 23rd, 2020 -### Added -* Adds a CSS test stub. - -## 4.39.0 January 6th, 2019 -### Other -* Drops IE11 support through configuring Babel to use the preset environment with the own list of supported browsers specified. - -## 4.38.0 November 26th, 2019 -### Other -* Removed the components related to the Help Center and the AlgoliaSearcher package - -## 4.36.0 November 11th, 2019 -### Enhancements -* Improves the `KeywordInput` and `SynonymsInput` styling for consistency with the new WordPress 5.3 admin styles. - -## 4.34.0 October 14th, 2019 -### Fixed -* Fixes a bug where internal linking suggestions were not aligned correctly, but were indented instead. - -## 4.30.0 July 22nd, 2019 -### Added -* In the internal linking suggestions component, adds a check for the presence of the prominent words to determine which of the feedback strings should be rendered. If no prominent words are determined for a text (and hence no suggestions), the old message "Once you add a bit more copy..." is rendered. If prominent words are determined, but still no suggestions could be found, a new message is rendered: "We could not find any relevant articles on your website that you could link your post to.". - -### Other -* Replaced babel-preset-es2015 with babel-preset-env, as babel-preset-es2015 is deprecated. - -## 4.28.0 June 24th, 2019 -### Changed -* Updates the CSS autoprefixer configuration to drop support for old Internet Explorer versions. - -## 4.27.0 June 11th, 2019 -### Changed -* Removes the margin from the `KeywordInput` component. - -## 4.26.0 May 27th, 2019 -### Changed -* Changes `KeywordInput`'s `id` prop to be required - -## 4.25.0 May 14th, 2019 -### Fixed -* Improved handling of the `rel` attribute for links that open in a new browser's tab. - -## 4.24.0 April 29th, 2019 -* The following packages have been split out from `@yoast/yoast-components`. Please use these packages in the future: - * `@yoast/algolia-search-box` - * `@yoast/components` - * `@yoast/configuration-wizard` - * `@yoast/eslint` - * `@yoast/helpers` - * `@yoast/search-metadata-previews` - * `@yoast/social-metadata-previews` - * `@yoast/style-guide` - * `@yoast/social-previews` - -## 4.23.1 April 15th, 2019 -### Other -* Updated the `styled-components` package to v4+. - -## 4.23.0 April 1st, 2019 -### Added -* Adds an autocomplete prop to the following components: `Step`, `Textfield`, and `Input`. - -### Fixed -* Restores the focus indication on the title separators in the onboarding wizard. - -### Other -* Makes the previous and next buttons in the `OnboardingWizard` component look like links. - -## 4.22.0 March 11th, 2019 -### Added -* Adds `keywordForms` field to the `SnippetPreview` and `SnippetEditor` components to be able to highlight word forms of the keyphrase in the preview. -* Adds step-specific hashes to the URL in the `OnboardingWizard` component to make navigation easier. - -### Fixed -* Fixes a bug where the standalone would not load in IE11. - -## 4.21.0 February 25th, 2019 -### Other -* Changed the AnalysisList pressed status check to listen to `result.markerId` instead of `result.id`. -* Upgrades webpack-dev-server to 3.1.14. -* Bumps YoastSEO.js version to 1.48.0. - -## 4.20.0 February 11th, 2019 -### Other -* Changed the default icon for the `Collapsible` component to chevrons. -* Bumps YoastSEO.js version to 1.47.0. - -## 4.19.0 January 21st, 2019 -### Added -* Adds a card component. - -### Removed -* Removes autocomplete functionality from the Keyphrase and Synonyms input fields. - -### Other -* Bumps YoastSEO.js version to 1.46.0. - -## 4.18.1 January 7th, 2019 -### Other -* Change eslint config to make sure tag build passes. - -## 4.18.0 January 7th, 2019 -### Other -* Bumps YoastSEO.js version to 1.45.0. - -## 4.17.0 December 17th, 2018 -### Added -* Adds onBlur and onFocus prop to SynonymsInput component. -* Adds buildStructuredUrl function. -* Adds an exclamation triangle to the SvgIcon component. -* Adds a YoastWarning component that consists of an exclamation triangle followed by a message on a yellow background. - -## 4.16.0 November 19th, 2018 -### Added -* Adds an Id prop to the Collapsible and ButtonSection component. - -### Removed -* Removes logic that remembers what marker button is active from the `ContentAnalysis` components. - -## 4.15.0 November 5th, 2018 -### Added -* Adds a fieldId prop in the `ReplacementVariableEditorStandalone` component, that gets added as an id attribute to the DraftJS editor element with the contenteditable attribute. - -### Other -* Changes `$palette_grey_text` from #646464 to #616161 to have a sufficient color contrast ratio on #dddddd backgrounds. - -## 4.14.1 October 29th, 2018 -### Other -* Bumps YoastSEO.js to 1.41.1. - -## 4.14.0 October 22nd, 2018 -### Added -* Adds an `UpsellButton` component. -* Adds an `UpsellLinkButton` component. -* Adds `label` and `ariaLabel` props to the `KeywordInput` component. -* Adds an id to the `ReplacementVariableEditorStandalone` component. - -### Other -* Replaces the help text in the `SynonymsInput` by a help link icon. - -## 4.13.0 October 8th, 2018 -### Other -* Compatibility with Yoast SEO 8.4. - -## 4.12.1 September 24th, 2018 -### Other -* Compatibility with Yoast SEO 8.3. - -## 4.12.0 September 24th, 2018 -### Other -* Compatibility with Yoast SEO 8.3. - -## 4.11.0 September 10th, 2018 -### Fixed -* Fixes a bug where the placeholder "Modify your meta description by editing it right here" wasn't translatable. - -### Added -* Exposes `AnalysisList` to render a plain list of content analysis results. -* Exposes `renderRatingToColor` which renders a rating received from YoastSEO.js to a color that can be used in CSS. - -## 4.10.1 August 28th, 2018 -### Fixed -* Fixes an incorrect import of `YoastButton` in `index.js`. - -## 4.10.0 August 27th, 2018 -### Added -* Adds a `ButtonSection` component. -* Adds a `loadingSpinner` svg icon. - -### Fixed -* Fixes a bug where an invalid icon warning was thrown because no icon was provided to the `IconsButton`. -* Fixes a bug where only the header of the `ButtonSection` component was clickable, instead of the entire component. - -### Other -* Improves the keyword input field focus style and contrast ratio. - -## 4.9.0 August 13th, 2018 -### Added -* Adds a standalone `LanguageNotice` component. Before, this component was part of the `ContentAnalysis` component. -* Adds a `HelpText` component. -* Adds a label to the `KeywordInput` component. -* Adds an `onBlur` event to the `KeywordInput` component. -* Adds a button to the `KeywordInput` component that allows removal of that keyword section. -* Adds a `ContentOptimizationContainer` component. -* Adds a `SynonymsInput` component. -* Adds a `CornerstoneToggle` component. -* Adds a demo page for the SVG icons rendered by the SvgIcon component to the App. -* Adds a subtitle to the `CollapsibleHeader` component. - -### Removed -* Removes the `helpTextButton` from the `SnippetPreview` component as it has been replaced by a description that is always present. - -### Fixed -* Fixes the styling of the `Collapsible` component for right-to-left languages. -* Fixes a bug where the `Collapsible` component would show scrollbars in Internet Explorer 11. - -### Other -* Increases the font size of the synonyms help text and changes its color. -* Makes it possible to render multi-shape SVG icons. -* Adds clipboard and a11y-speak to the package.json. - -## 4.8.0 July 25th, 2018 -### Added -* Add setOverallSeoScore and setOverallReadabilityScore reducer. -* Add help text to the content analysis in the standalone. -* Add a IconLabeledButton component to render a button with visible textual label. - -### Fixed -* Fix alignment of video in help center when no ads are present. - -## 4.7.0 July 3rd, 2018 -### Added -* Adds synonyms components. - -### Fixes -* Fixes the CSS media query to target IE11 used for the buttons min-height. - -### Removed -* Removes the unused replaceKeyword action. - -## 4.6.2 July 2nd, 2018 -### Fixes -* Fixes a bug where console errors would be thrown because `ref` instead of `innerRef` was used in the `ReplacementVariableEditor`. - -## 4.6.0 July 2nd, 2018 -### Added -* Adds Styled Component's `withTheme` to the `ReplacementVariableEditorStandalone` component in order to set the `textDirectionality ` of the `Editor` based on the language direction that is passed to the theme. - -## 4.5.0 June 29nd, 2018 -### Fixes -* Fixes the styling of the `ModeSwitcher`, `SnippetEditor`, `HelpTextWrapper`, `SnippetPreview` and `StyledSection` for right-to-left languages. [#629](https://github.com/Yoast/yoast-components/pull/629/files) -* Fixes a bug where the snippet variable suggestions would disappear behind the admin menu bar when using a right-to-left language. [#628](https://github.com/Yoast/yoast-components/pull/628/files) -* Fixes the 'insert snippet variable' button alignment by using only CSS and removing the JS widths calculations. [#618](https://github.com/Yoast/yoast-components/pull/618/files) - -## 4.4.0 June 22nd, 2018 - -### Changes -* `ReplacementVariableEditor` adds a space after replacement variable when there is no space yet. [#616](https://github.com/Yoast/yoast-components/pull/616) -* Entities in `ReplacementVariableEditor` can no longer be partially selected. [#607](https://github.com/Yoast/yoast-components/pull/607) - -### Fixes -* Improved change detection of replacement variables in `SnippetEditor`. [#610](https://github.com/Yoast/yoast-components/pull/610/files) - -## 4.3.0 June 22nd, 2018 - -### Added -* Added `ErrorBoundary` component to be used in the `SnippetEditor`. [#605](https://github.com/Yoast/yoast-components/pull/605) - -### Changes -* Let the padding on the `StyledSection` depend on the title. [#606](https://github.com/Yoast/yoast-components/pull/606) -* Implements an option for the paper style in the styled section component. [#612](https://github.com/Yoast/yoast-components/pull/612) -* Moves the margin bottom from the FormSections to the CloseSnippetEditor button. [#615](https://github.com/Yoast/yoast-components/pull/615) - -### Fixes -* Clicking the entire meta description field in `SnippetEditor` will now focus the input. [#600](https://github.com/Yoast/yoast-components/pull/600) -* Improved snippet editor placeholder contrast. [#603](https://github.com/Yoast/yoast-components/pull/603) -* Fixes an issue where in cases with a lot of snippet variables it would sometimes be partially hidden behind the WordPress toolbar. [#604](https://github.com/Yoast/yoast-components/pull/604) -* Handle cut and paste behaviour in the `ReplacementVariableEditor`. [#611](https://github.com/Yoast/yoast-components/pull/611) - -## 4.2.0 June 12nd, 2018 - -### Added -- Implements the draft-js-single-line-plugin in order to keep the Draft-js Editor from creating new blocks on enter presses and pasting newlines. -- Adds a meta description placeholder text. -- Adds a SettingsSnippetEditor component. -- Adds a button to the snippet editor to improve discoverability of the snippet variables. - -### Removed -- Removes logic for decoding separators. This logic has been moved to wordpress-seo. - -### Fixed -- Fixes a bug where the snippet editor fields would stay in an isActive state when blurred. -- Fixes a bug where the progress bars for the snippet title and description wouldn't respond correctly to the content of the input fields. -- Fixes a bug where multiple spaces and spaces at the beginning and end of the snippet description were taken into account for the description length progress calculation. -- Fixes a bug where the snippet variable suggestions would be sometimes positioned outside of the viewport. - -### Other -- Changes the replacement variable editor to automatically replace snippet variables with entities. -- Improves the Help text accessibility and introduces a SlideToggle component based on react-transition-group. - -## 4.1.0 May 23rd, 2018 - -### Changes -* Maximum meta description length now retrieved from `yoastseo`. -* Improve the Snippet Preview rendering with long text. -* Better encode SVG images used as CSS background. -* Snippet editor no longer manages the slug in local state. -* Entire meta description field can now be clicked to focus the editor. -* Removed `react-intl` remnants, which was removed in `v4.0.0`. -* Snippet preview now decodes the separator replacement variable before it is passed along to the renderer. - -## 4.0.2 May 17th, 2018 - -### Added - -* Added metadescription placeholder to `SnippetEditor`. -* Replace the replace vars before measuring the title and description length to get the correct length. - -### Fixes - -* Fixes a problem with the Snippet Editor where it would crash when receiving new content. - -## 4.0.1 May 17th, 2018 - -### Fixes - -* Fixes progress bars in `SnippetEditor`. - -## 4.0.0 May 16th, 2018 - -### Breaking changes - -* Changed library used for translation from `react-intl` to `@wordpress/i18n`. [#494](https://github.com/Yoast/yoast-components/pull/494), [#469](https://github.com/Yoast/yoast-components/pull/496), [#497](https://github.com/Yoast/yoast-components/pull/497), [#498](https://github.com/Yoast/yoast-components/pull/498), [#500](https://github.com/Yoast/yoast-components/pull/500), [#505](https://github.com/Yoast/yoast-components/pull/505), [#506](https://github.com/Yoast/yoast-components/pull/506), [#507](https://github.com/Yoast/yoast-components/pull/507), [#508](https://github.com/Yoast/yoast-components/pull/508) - -### Added - -* Added `HelpText` component. [#480](https://github.com/Yoast/yoast-components/pull/480) -* Added `KeywordInput` component. [#482](https://github.com/Yoast/yoast-components/pull/482) -* Added help text drop down to `SnippetEditor`. [#517](https://github.com/Yoast/yoast-components/pull/517) - -### Changed - -* Added trailing slashes to `SnippetPreview` url desktop preview. [#526](https://github.com/Yoast/yoast-components/pull/526) -* Improved `SnippetEditor` mentions suggestions accessibility. [#525](https://github.com/Yoast/yoast-components/pull/525) -* URL safe characters are preserved in the `SnippetPreview`. [#520](https://github.com/Yoast/yoast-components/pull/520) -* Transliterated keywords are highlighted in title and description in `SnippetPreview`. [#519](https://github.com/Yoast/yoast-components/pull/519), [#521](https://github.com/Yoast/yoast-components/pull/521), [#522](https://github.com/Yoast/yoast-components/pull/522) -* The `SnippetEditor` slug input field has been changed from a `DraftJS` editor to a regular input field. [#515](https://github.com/Yoast/yoast-components/pull/515) -* Dashes and question marks get stripped from the `SnippetEditor` url preview. [#495](https://github.com/Yoast/yoast-components/pull/495) -* Allow optional help text to be passed to the `ContentAnalysis` component. [#480](https://github.com/Yoast/yoast-components/pull/480) -* Upgraded webpack to version `4.7` in the development environment. [#501](https://github.com/Yoast/yoast-components/pull/501) - -### Fixed - -* Replace vars in description and title are converted to mentions on load. [#529](https://github.com/Yoast/yoast-components/pull/529) -* Implemented various styling fixes for the `SnippetEditor` component. [#491](https://github.com/Yoast/yoast-components/pull/491), [#513](https://github.com/Yoast/yoast-components/pull/513), [#513](https://github.com/Yoast/yoast-components/pull/513) - -## 3.5.1 April 25th, 2018 - -### Fixed - -* Removed import reference to a file that no longer exists. - -## 3.5.0 April 24th, 2018 - -### Added - -* Added the jsx-a11y ESLint plugin. [#468](https://github.com/Yoast/yoast-components/pull/468) -* [Collapsible] Added an optional ScreenReaderText after the Collapsible title. [#450](https://github.com/Yoast/yoast-components/pull/464) -* Added a SnippetEditor component. Renders the SnippetPreview component with editor fields to change the data. [#460](https://github.com/Yoast/yoast-components/pull/460) -* Added a ReplacementVariable component. Renders a DraftJS editor with replacement variables as entities. [#460](https://github.com/Yoast/yoast-components/pull/460) -* Added a FormattedScreenReaderMessage component Renders a message translated, but also as screen reader text. Ensures that ScreenReaderText can remain pure and only accept a string. [#460](https://github.com/Yoast/yoast-components/pull/460) - -### Changed - -* Changed the collapsible panel to use up/down arrows instead of the right/down arrows it used. The direction of the arrow now also matches Gutenberg. [#463](https://github.com/Yoast/yoast-components/pull/465) -* [AnalysisCollapsible] Center SVG angles in AnalysisCollapsible. [#462](https://github.com/Yoast/yoast-components/pull/462) - -### Other - -* Updated all dependencies that only had a minor or patch update. [#453](https://github.com/Yoast/yoast-components/pull/453) - -## 3.4.0 April 9th, 2018 - -### Added - -* Added "$color_noindex":"#1e8cbe" to colors.json. -* Added Collapsible and CollapsibleStateless components. -* Added IconsButton component. -* Added YoastModal component based on react-modal to handle all the modal dialogs. - -### Other - -* Refactored AnalysisCollapsible and AnalysisCollapsibleStateless to use the new collapsible. - -## 3.3.0 March 19th, 2018 - -### Added - -* Implements `SnippetPreview` component. This component will show a representation of how Google will show a certain page. - -## 3.2.1 March 16th, 2018 - -### Bugfix -* Fixed the PropType to `func` for the dynamically supplied icon. - -## 3.2.0 March 14th, 2018 - -### Added -* Made it possible to dynamically pass an icon to the Onboarding Wizard component. - -### Other -* Fixed a typo in the readme. - -## 3.1.0 March 1st, 2018 - -### Other -* `react-intl` is now a peer dependency of `yoast-component`. Updated documentation in regards to to using `react-intl`. -* `AnalysisHeaderCollapsible` is now open by default. This means all headers in `ContentAnalysis` are now open by default. - -## 3.0.2 February 22nd, 2018 - -### Other -* Changed `SvgIcon`'s default prop `size` from `16` to `16px` and correctly implemented default props. - -## 3.0.1 February 20th, 2018 - -### Other -* Adds css styles to `SvgIcon` component to fix irregular sizing in `wordpress-seo`. - -## 3.0.0 February 8th, 2018 - -### Breaking changes -* Upgraded peer dependency of React to `16.2`. -* Removed `.svg` files in favour of `SvgIcon` component, as a result `svg-react-loader` is no longer required. -* Removed `composites/SnippetPreview/components/SnippetPreview.js` that ensured backwards compatability to the new `SnippetPreview` component. -* Changed `StyledSection` props. - -### Added -* Added `jest-styled-components` for better testing of `styled-components`. -* Added `SvgIcon` component. - -### Other -* Upgraded peer dependency of React to `16.2`. -* Changed default translation `Good` to `Good results` in `Content Analysis`. -* Refactored `StyledSection` to use `styled-components`. -* Removed `.svg` files. Use `SvgIcon` instead. -* Removed `composites/SnippetPreview/components/SnippetPreview.js` that ensured backwards compatability to the new `SnippetPreview` component. - -## 2.11.7 December 15th, 2017 - -### Added -* Adds a `marksButtonStatus` prop to the `ContentAnalysis` to disable or hide the eye buttons. #409 -* Adds a `marksButtonClassName` prop to the `ContentAnalysis` to use for the tooltips in `wordpress-seo`. #409 - -## 2.11.6 December 4th, 2017 - -### Other -* Expands the `AnalysisCollapsible` that is currently the most urgent in the `ContentAnalysis`. #391 - -## 2.11.5 November 30th, 2017 - -### Other -* Expands all `AnalysisCollapsibles` in the `ContentAnalysis` by default. #393 - -## 2.11.4: November 27th, 2017 - -### Added -* Made it possible to pass the heading level of the `analysisCollapsible`s as a prop to the `ContentAnalysis`. #388 -* Added a language notice in the content analysis for non-admin users that cannot change the language. #389 - -### Fixed -- Avoid to fully re-render the `AnalyisisCollapsible` component to improve accessibility #386 -- Fixed alignment of icons and text in the `ContentAnalysis` component. #390 - -## 2.11.3: November 20th, 2017 - -### Added -* Added flag to run tests sequentially. #376 -* Added `type="button"` attribute to `IconButtonToggle`. #378 - -### Other -* Changed `StackedProgressBar` height to `24px`. #367 -* Changed `onMarkButtonClick` callback in `ContentAnalysis` to return empty string when marker is deselected. #375 -* Made Onboarding Wizard's `previousButton` and `nextButton` focusable. #369 -* Replaced old react string refs with callbacks. #365 -* Remove unnecessary whitespace between `AnalysisResult`s and between `AnalysisCollapsible`s. #382 - -## 2.11.2: November 7th, 2017 - -### Added -* Adds a callback to the mark button in the `ContentAnalysis` component. #372 - -### Other -* Removes min height from the `ContentAnalysis` component. #373 - -## 2.11.1: October 30th, 2017 - -* Allows `AnalysisResult` text to be HTML. #366 - -## 2.11: October 27th, 2017 - -### Added - -#### Components -* `Notification` component. #348 -* `AnalysisResult` component. #352 -* `ContentAnalysis` component. #359 - -#### Other additions -* Added callbacks to notify tab switch in `YoastTabs`. #346 -* `setSeoResultsForKeyword` action and reducer implementation. #355 -* Added default `className` to `VideoDescriptionItem` component. #358 - -## 2.10.3: October 17th, 2017 - -### Added -* `IconButtonToggle` component - -### Other -* Added class names to VideoTutorial component. - -## 2.10.2: October 16th, 2017 - -### Other -* Improved AlgoliaSearcher focus management between search and detail view. -* Help center CSS tweaks. - -## 2.10.1: October 4th, 2017 - -### Added - -#### Other -* Improved the `HelpCenterButton` and the `HelpCenterContainer` styling. #337 - -### Other -* Added class names to the `HelpCenterContainer` and `HelpCenterButton`. #337 - -## 2.10.0: October 3rd, 2017 - -### Added - -#### Components -* `Table` component. #219 -* `SearchResultDetail` component. #243 -* `SearchResults` component. #243 -* `YoastLinkButton` component. #284 -* `VideoTutorial` component. #291 -* `YouTubeVideo` component. #291 -* `YoastTabs` component. #303 -* `AllyNotice` component. #306 -* `HelpCenter` component. #310 -* `HelpCenterButton` component. #318 - -#### Other -* Added translatable label to `SearchBar` component. #243 -* Added `makeOutboundLink` util function. #308 -* Added a prop to the `AlgoliaSearcher` component that can be used to enable live search. #323 -* Added a search button and placeholder text to the `SearchBar` component. #323 - -### Other -* Improved styling and accessibility of the `SearchBar` component. #243 -* Styling improvements for the Onboarding Wizard. #290 -* Fixed two prop warnings that appeared when switching pages in the Onboarding wizard. #293 and #295 -* Improved YoastButton hover and active style. #332 - -## 2.9.3: September 26th, 2017 - -### Other -* Fixed the loading of AMP articles in the Algolia article iFrame. - - -## 2.9.2: September 25th, 2017 - -### Other -* Added trailing slash to knowledge base URL in help center - -## 2.9.1: September 19th, 2017 - -### Added - -#### Other -* Added dashboard widget to development environment. -* Added class names to `WordpressFeed` and `SeoAssessment` components, and also to their children. - -## 2.9.0: September 11th, 2017 - -### Added - -#### Components -* `Icon` component (using `svg-react-loader`, see `README.md`). #218 -* `Button`(#173), `IconButton`(##232), `LinkButton`(#262), `YoastButton`(#257) components. -* `InputField` component (using `DraftJS` ). #204 -* `ListTable`, `Row` and `Cell` component. #219 -* `ProgressBar`component. #172 -* `IFrame` and `ArticleContent` components. #242 -* `StackedProgressBar` component. #270 -* `SeoScoreAssessment(s)` components. #272 -* `WordpressFeed` component. #273 -* `SeoAssessment` component. #281 - -##### Other -* Added `getFeed` RSS reader utility function. #267 -* Added `ContentAnalysis` reducer and actions. #224 -* Added `striptags` utility library. #276 -* Added various documentation. #239 - -### Other -* Improved development environment. (#238, #174 ) - -#### Onboarding wizard -* Added max width for content in Onboarding wizard (#250), and `fullWidth` property for full screen support (#269). -* Changed Onboarding wizard header. #256 -* Added paragraph for additional information to Onboard wizard `Choice component`. #254 - -## 2.8.0: August 8th, 2017 - -### Added - -* Adds aria-current to the onboarding wizard active step. - -### Fixed - -* Removes console errors caused by using React.PropTypes and React.createClass. - -## 2.7.1: July 25th, 2017 - -### Changed - -* Improved README.md to instruct on using yarn instead of npm. - -## 2.7.0: July 6th, 2017 - -### Added - -* [AlgoliaSearch] Added Algolia Search as a new component. -* Adds additional colors - -## 2.6.0: - -### Changed - -* Changes the color blue from #0075b3 to #0066cd. - -## 2.5.0: - -### Added - -* [ConfigurationWizard] Adds possibility to disable navigation on a step page -* [ConfigurationWizard] Adds icons to next, previous and close buttons -* [ConfigurationWizard] Pass `nextStep` and `previousStep` functions to Steps -* Adds Colors for use in my.yoast - -## 2.4.0: February 14th, 2016 - -### Added - -* [Choice] Adds a radio button option to the Choice components. - -### Removed - -* [StyledSection] Removes width from StyledSection to be usable in different contexts. - -## 2.3.0: January 17th, 2016 - -### Changed - -* Removes width from StyledSection. - -## 2.2.0: December 13th, 2016 - -### Added - -* [Loader] Adds Loader component to be used when something is occurring in the background. - -## 2.1.0: November 29th, 2016 - -### Added - -* Adds Sass and JSON colors palette. -* Adds `grunt-scss-to-json` package to generate the JSON colors file. - -### Changed - -* Splits color schemes in a separate Sass file. -* Splits snippet preview colors in a separate Sass file. -* Removes, updates, and adds colors. See the related issue for a [list of colors changes](https://github.com/Yoast/yoast-components/issues/106). -* Adds 2.0.0 as a possibility for react-tap-plugin as a peer dependency. - -## 2.0.0: October 20th, 2016 - -### Breaking changes - -* Changed default server request from a PUT to a POST request. - -## 1.1.0: October 11th, 2016 - -### Added - -* [StyledSection] Adds a StyledSection component. This component is used to render a HTML section including a heading with an icon. -* [CSS] Adds the `file-text-o` font awesome icon. -* [utils] Exports flat `translate` function in the i18n util. - -### Fixed - -* [Label] Adds an `aria-label` attribute. -* [Choice] Passes the screenReaderText to the label as `aria-label`. - -## 1.0.0: September 27th, 2016 - -### Added - -* Implements HTML component. This component is used to render HTML. -* Implements Choice component. This component is used for a choice, like a group of radio buttons or a select box. -* Implements Input component. This component is used to render a text input. -* Implements Wizard component. This component is used to make a wizard from steps that include fields. -* Implements ScreenReaderText component. This component is used to create a text for use with screen readers. -* Implements ScreenReaderShortcut component. This component is used for skipping navigation to screen reader texts. -* Implements Stepper component. This component is used to create step navigation in the wizard. -* Implements StepButton component. This component is used to access a Step in the wizard. diff --git a/packages/yoast-components/Gruntfile.js b/packages/yoast-components/Gruntfile.js deleted file mode 100644 index 8302ed760ce..00000000000 --- a/packages/yoast-components/Gruntfile.js +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable require-jsdoc */ -const path = require( "path" ); -const loadGruntConfig = require( "load-grunt-config" ); - -module.exports = function( grunt ) { - // Define project configuration - const project = { - paths: { - grunt: "grunt/", - get config() { - return this.grunt + "config/"; - }, - }, - files: { - components: [ - "**/*.js", - "*.js", - "!node_modules/**", - "!node_modules/*", - ], - get config() { - return project.paths.config + "*.js"; - }, - grunt: "Gruntfile.js", - }, - pkg: grunt.file.readJSON( "package.json" ), - }; - - // Load Grunt configurations and tasks - loadGruntConfig( grunt, { - configPath: path.join( process.cwd(), project.paths.config ), - data: project, - } ); -}; diff --git a/packages/yoast-components/LICENSE b/packages/yoast-components/LICENSE deleted file mode 100644 index 6b156fe1db9..00000000000 --- a/packages/yoast-components/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/packages/yoast-components/README.md b/packages/yoast-components/README.md deleted file mode 100644 index 2d318955e0d..00000000000 --- a/packages/yoast-components/README.md +++ /dev/null @@ -1,152 +0,0 @@ -# Yoast components - -React components for use within different Yoast React projects. - -## Installation - -You can install yoast-components using npm: - -```bash -npm install yoast-components -``` - -## Usage - -```js -import Input from 'yoast-components/forms/Input' - -// Then you can use the Input component within your React components -``` - -## Requirements - -### Webpack - -If you use `yoast-components` within your own project we recommend using `webpack` with the following loaders and configuration: - -* Babel-loader - * Presets: es2015 and react - -#### Example - -Webpack 2+ configuration: -```js -module.exports = { - // ... - module: { - rules: [ - { - test: /\.jsx?$/, - exclude: /node_modules/, - use: [ { - loader: "babel-loader", - } ], - }, - // ... - ], - }, - // ... -} -``` -`.babelrc`: -```json -{ - "presets": ["es2015", "react"] -} -``` - -### Additional configuration - -In the `entry` of your webpack you should include [babel-polyfill](https://babeljs.io/docs/usage/polyfill/#usage-in-node-browserify-webpack) as the very first element: - -```js -module.exports = { - // ... - entry: [ - "babel-polyfill", - // ... - "your-app-entry.js" - ] - // ... -} -``` - -### Reducers and Middleware - -Some components require implementing a reducer. See which components need what reducers below: - -#### Content analysis - -If you wish to use the content analysis component you should implement the `contentAnalysisReducer`, located in `yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer.js`. In your root reducer this reducer should have the name `contentAnalysis`. -```js -import contentAnalysis from "yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer.js"; -// Your root reducer -combineReducers( { - // ... - contentAnalysis: contentAnalysis, - // ... -} ); -``` - -## Setup -- Run a `yarn install` in the root folder. -- Run `yarn start` in the root folder. -- Go to `http://localhost:3333` - -## Testing - -```bash -yarn test -``` - -## Code style - -To test the code style: - -```bash -grunt check -``` - -## Contributing - -### Folder structure - -Every component should have its own folder named lowercase with the relevant files inside of it. Every component must contain a JavaScript with the component definition in it and exported using `export default [Component]`. Any component can contain a SCSS file for relevant CSS and a README.md explaining how the component works. - -### Translation - -We use [i18n-calypso](https://github.com/Automattic/i18n-calypso) to localize all components. Refer to their documentation about how to use `translate`, `moment` and `numberFormat`. We don't use the mixin provided. Only use the higher order component to wrap components when they are exported, like so: - -```js -import { localize } from 'i18n-calypso' - -export default localize( Component ); -``` - -## Security - -If you discover any security related issues, please email security [at] yoast.com instead of using the issue tracker. - -## Credits - -- [Team Yoast](https://github.com/orgs/Yoast/people) -- [All Contributors](https://github.com/Yoast/yoast-components/graphs/contributors) - -## License - -We follow the GPL. Please see [License](LICENSE) file for more information. - -## Developing within `wordpress-seo`1 -1. With some minor tweaks this can also be used to develop yoast-components within other projects - -If you would like to develop `yoast-components` within the `wordpress-seo` plugin, you can do this quite easily using [`yarn`](https://yarnpkg.com/lang/en/). - -1. Link your `yoast-components` project to `wordpress-seo` using the command line: - 1. In your `yoast-components` project run `yarn link`. - 2. In your `wordpress-seo` project run `yarn link "yoast-components"`. - -Now you can make development easier by having `grunt` watch your files: -1. In `wordpress-seo` open `Gruntfile.js`. -2. Within the configuration object `project`, add the following line to `paths>files>js[]`: - `node_modules/yoast-components/**/*.js` -3. Run `grunt watch` diff --git a/packages/yoast-components/a11y/examples/example.html b/packages/yoast-components/a11y/examples/example.html deleted file mode 100644 index 5ef51510a61..00000000000 --- a/packages/yoast-components/a11y/examples/example.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Title - - -
- - - diff --git a/packages/yoast-components/a11y/examples/example.js b/packages/yoast-components/a11y/examples/example.js deleted file mode 100644 index 0472585acb7..00000000000 --- a/packages/yoast-components/a11y/examples/example.js +++ /dev/null @@ -1,144 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import { ScreenReaderText, ScreenReaderShortcut } from "@yoast/components"; - -class App extends React.Component { - /** - * Renders a screen reader text example. - * - * @returns {ReactElement} The rendered element. - */ - render() { - return ( -
- Below this line is a hidden link to another segment of this page. Tab to view it: - Jump to the list of links -
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut pulvinar mi, ut rhoncus magna. - Etiam eget massa sed urna vulputate vulputate non sed mi. - Etiam sagittis vehicula augue, vitae tincidunt nisi faucibus et. Curabitur id massa arcu. - In sit amet ex nec mauris sollicitudin laoreet. - Integer fermentum nibh nisi, et pharetra augue fermentum elementum. - Aliquam imperdiet lectus eu ante tempor, eu rutrum ex euismod. - Nam neque purus, aliquet faucibus dui in, blandit volutpat velit. -
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut pulvinar mi, ut rhoncus magna. - Etiam eget massa sed urna vulputate vulputate non sed mi. - Etiam sagittis vehicula augue, vitae tincidunt nisi faucibus et. Curabitur id massa arcu. - In sit amet ex nec mauris sollicitudin laoreet. - Integer fermentum nibh nisi, et pharetra augue fermentum elementum. - Aliquam imperdiet lectus eu ante tempor, eu rutrum ex euismod. - Nam neque purus, aliquet faucibus dui in, blandit volutpat velit. -
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut pulvinar mi, ut rhoncus magna. - Etiam eget massa sed urna vulputate vulputate non sed mi. - Etiam sagittis vehicula augue, vitae tincidunt nisi faucibus et. Curabitur id massa arcu. - In sit amet ex nec mauris sollicitudin laoreet. - Integer fermentum nibh nisi, et pharetra augue fermentum elementum. - Aliquam imperdiet lectus eu ante tempor, eu rutrum ex euismod. - Nam neque purus, aliquet faucibus dui in, blandit volutpat velit. -
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut pulvinar mi, ut rhoncus magna. - Etiam eget massa sed urna vulputate vulputate non sed mi. - Etiam sagittis vehicula augue, vitae tincidunt nisi faucibus et. Curabitur id massa arcu. - In sit amet ex nec mauris sollicitudin laoreet. - Integer fermentum nibh nisi, et pharetra augue fermentum elementum. - Aliquam imperdiet lectus eu ante tempor, eu rutrum ex euismod. - Nam neque purus, aliquet faucibus dui in, blandit volutpat velit. -
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut pulvinar mi, ut rhoncus magna. - Etiam eget massa sed urna vulputate vulputate non sed mi. - Etiam sagittis vehicula augue, vitae tincidunt nisi faucibus et. Curabitur id massa arcu. - In sit amet ex nec mauris sollicitudin laoreet. - Integer fermentum nibh nisi, et pharetra augue fermentum elementum. - Aliquam imperdiet lectus eu ante tempor, eu rutrum ex euismod. - Nam neque purus, aliquet faucibus dui in, blandit volutpat velit. -
- -
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- Aliquam dolor odio, ornare ac semper in, ornare a tellus. Sed et varius magna. - Duis et eleifend sem, ac luctus justo. Donec vel eros aliquet, consequat odio ac, interdum tortor. - Etiam placerat ex vel interdum gravida. In hac habitasse platea dictumst. Fusce nec egestas nisi. - Aliquam in leo non justo consequat maximus. Morbi pellentesque et velit eu fringilla. - Suspendisse cursus elit facilisis massa pharetra pellentesque. - Vestibulum aliquam tortor nec lacus blandit laoreet. Cras et posuere elit, sit amet congue nisl. - Donec dolor mauris, feugiat at ipsum venenatis, porttitor fringilla nisl. -
-
- ); - } -} - -ReactDOM.render( , document.getElementById( "container" ) ); diff --git a/packages/yoast-components/composites/CoursesOverview/Card.js b/packages/yoast-components/composites/CoursesOverview/Card.js deleted file mode 100644 index cf4c89aa03b..00000000000 --- a/packages/yoast-components/composites/CoursesOverview/Card.js +++ /dev/null @@ -1 +0,0 @@ -export { Card as default } from "@yoast/components"; diff --git a/packages/yoast-components/composites/CoursesOverview/CardBanner.js b/packages/yoast-components/composites/CoursesOverview/CardBanner.js deleted file mode 100644 index 2dee71760ec..00000000000 --- a/packages/yoast-components/composites/CoursesOverview/CardBanner.js +++ /dev/null @@ -1 +0,0 @@ -export { CardBanner as default } from "@yoast/components"; diff --git a/packages/yoast-components/composites/CoursesOverview/CardDetails.js b/packages/yoast-components/composites/CoursesOverview/CardDetails.js deleted file mode 100644 index e3234d38269..00000000000 --- a/packages/yoast-components/composites/CoursesOverview/CardDetails.js +++ /dev/null @@ -1,3 +0,0 @@ -import { CourseDetails as CardDetails } from "@yoast/components"; - -export default CardDetails; diff --git a/packages/yoast-components/composites/LinkSuggestions/LinkSuggestion.js b/packages/yoast-components/composites/LinkSuggestions/LinkSuggestion.js deleted file mode 100644 index 18b8dda4d1b..00000000000 --- a/packages/yoast-components/composites/LinkSuggestions/LinkSuggestion.js +++ /dev/null @@ -1,118 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import styled from "styled-components"; -import { __, sprintf } from "@wordpress/i18n"; -import { colors } from "@yoast/style-guide"; -import { SvgIcon, ScreenReaderText } from "@yoast/components"; -import { makeOutboundLink } from "@yoast/helpers"; - -const LinkSuggestionWrapper = styled.div` - display: flex; - align-items: center; - min-height: 40px; - margin-bottom: 5px; -`; - -const LinkSuggestionIcon = styled.button` - box-sizing: border-box; - height: 30px; - width: 30px; - background-color: ${ colors.$color_button }; - border-radius: 5px; - cursor: pointer; - outline:none; - margin-right: 8px; - border: 1px solid ${ colors.$color_button_border }; - - &:focus { - box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); - } -`; - -const Link = makeOutboundLink( styled.a` - max-width: 128px; - padding: 6px 0; - margin-right: 8px; -` ); - -const Badge = styled.span` - max-width: 75px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - text-align: center; - display: block; - padding: 3px 8px; - margin-left: auto; - font-size: 0.85em; - background-color: #f3f4f5; - border-radius: 2px; -`; - -/** - * Represents a suggestion component with a copy url to clipboard icon and a text value. - * - * @param {string} value The text value. - * @param {string} url The URL. - * @param {boolean} isActive Whether the URL is already in use in the text. - * @param {string} type The type of suggested object (e.g. post, movie, category, etc.). - * - * @returns {JSX} The rendered suggestion. - * - * @constructor - */ -const LinkSuggestion = ( { value, url, isActive, type } ) => { - const label = __( "Copy link", "wordpress-seo" ); - const ariaLabel = sprintf( - /* translators: %s expands to the link value */ - __( "Copy link to suggested article: %s", "wordpress-seo" ), - value - ); - - /** - * Resets the button aria-label and data-label to their default values. - * - * @param {Object} evt The blur SyntheticEvent on the button. - * - * @returns {void} - */ - const resetLabels = ( evt ) => { - evt.nativeEvent.target.setAttribute( "aria-label", ariaLabel ); - evt.nativeEvent.target.setAttribute( "data-label", label ); - }; - - let icon = "clipboard"; - if ( isActive ) { - icon = "check"; - } - return ( - - - - { label } - - { value } - { type } - - ); -}; - -LinkSuggestion.propTypes = { - value: PropTypes.string.isRequired, - url: PropTypes.string.isRequired, - isActive: PropTypes.bool, - type: PropTypes.string.isRequired, -}; - -LinkSuggestion.defaultProps = { - isActive: false, -}; - -export default LinkSuggestion; diff --git a/packages/yoast-components/composites/LinkSuggestions/LinkSuggestions.js b/packages/yoast-components/composites/LinkSuggestions/LinkSuggestions.js deleted file mode 100644 index 5ee9eb7e5cb..00000000000 --- a/packages/yoast-components/composites/LinkSuggestions/LinkSuggestions.js +++ /dev/null @@ -1,243 +0,0 @@ -/* External dependencies */ -import React from "react"; -import PropTypes from "prop-types"; -import { __ } from "@wordpress/i18n"; -import LinkSuggestion from "./LinkSuggestion"; -import Clipboard from "clipboard"; -import interpolateComponents from "interpolate-components"; -import { speak } from "@wordpress/a11y"; -import styled from "styled-components"; - -/* Internal dependencies */ -import { makeOutboundLink } from "@yoast/helpers"; - -const HelpTextLink = makeOutboundLink(); - -const LinkSuggestionsWrapper = styled.div` - display: table-cell; -`; - -const noRelevantPostsMessage = __( - "We could not find any relevant articles on your website that you could link to from your post.", - "wordpress-seo" -); - -// Translators: Text between {{a}} and {{/a}} will be a link to an article about site structure. -const articleLinkString = __( - "{{a}}Read our article about site structure{{/a}} to learn more about how internal linking can help improve your SEO.", - "wordpress-seo" -); - -// Translators: Text between {{a}} and {{/a}} will be a link to an article about cornerstone content. -const cornerstoneLinkString = __( "Consider linking to these {{a}}cornerstone articles:{{/a}}", "wordpress-seo" ); - -const nonCornerstoneLinkString = __( "Consider linking to these articles:", "wordpress-seo" ); - -/** - * Represents the Suggestions component. - */ -class LinkSuggestions extends React.Component { - /** - * @constructor - * - * @param {Object} props The component props. - * - * @returns {void} - */ - constructor( props ) { - super( props ); - - this.state = { - clipboard: new Clipboard( ".yoast-link-suggestion__copy" ), - }; - - this.state.clipboard.on( "success", this.handleSuccess.bind( this ) ); - this.state.clipboard.on( "error", this.handleError.bind( this ) ); - } - - /** - * @summary Handles visual feedback and keyboard focus on Clipboard copy success. - * - * @param {Object} evt Clipboard.js custom DOM event. - * @returns {void} - */ - handleSuccess( evt ) { - const message = __( "Copied!", "wordpress-seo" ); - - // Move focus back to the Clipboard trigger button. - evt.trigger.focus(); - // Update the button `aria-label` attribute. - evt.trigger.setAttribute( "aria-label", message ); - // Update the button `data-label` attribute. - evt.trigger.setAttribute( "data-label", message ); - // Send audible message to the ARIA live region. - speak( message, "assertive" ); - } - - /** - * @summary Handles visual feedback on Clipboard copy error. - * - * @param {Object} evt Clipboard.js custom DOM event. - * @returns {void} - */ - handleError( evt ) { - const message = __( "Not supported!", "wordpress-seo" ); - - // Update the button `aria-label` attribute. - evt.trigger.el.setAttribute( "aria-label", message ); - // Update the button `data-label` attribute. - evt.trigger.setAttribute( "data-label", message ); - // Send audible message to the ARIA live region. - speak( message, "assertive" ); - } - - /** - * Renders the component for when there are no link suggestions. If there is not enough text to calculate Prominent Words - * or if no Prominent Words could be found, an "Add a bit more copy" message is returned. Otherwise we return a message - * that no relevant posts are found. - * - * @returns {React.Element} The rendered empty list - */ - renderEmptyList() { - let lengthMessage = this.props.customMessages.lengthMessage; - lengthMessage = lengthMessage === "" ? noRelevantPostsMessage : lengthMessage; - - return ( -
-

{ lengthMessage }

-

{ this.props.customMessages.metaMessage }

-

{ this.getArticleLink() }

-
- ); - } - - /** - * @summary Renders the suggestions. - * - * @returns {React.Element} The rendered suggestions HTML. - */ - render() { - const suggestions = this.props.suggestions; - const maximumSuggestions = this.props.maxSuggestions; - - if ( suggestions.length === 0 ) { - return this.renderEmptyList(); - } - if ( suggestions.length > maximumSuggestions ) { - suggestions.length = maximumSuggestions; - } - - const cornerStoneSuggestions = this.getCornerstoneSuggestions(); - const defaultSuggestions = this.getDefaultSuggestions(); - - return ( - - { cornerStoneSuggestions } - { defaultSuggestions } -

{ this.getArticleLink() }

-

{ this.props.customMessages.metaMessage }

-
- ); - } - - /** - * Returns the cornerstone suggestions values. - * - * @returns {React.Element} The values to use. - */ - getCornerstoneSuggestions() { - const suggestions = this.filterSuggestionsByCornerstone( true ); - - if ( suggestions.length === 0 ) { - return null; - } - - const cornerstoneLink = interpolateComponents( { - mixedString: cornerstoneLinkString, - components: { - // eslint-disable-next-line jsx-a11y/anchor-has-content - a: , - }, - } ); - - return this.getSuggestionsList( cornerstoneLink, suggestions ); - } - - /** - * Returns the non cornerstone suggestions values. - * - * @returns {React.Element} The values to use. - */ - getDefaultSuggestions() { - const suggestions = this.filterSuggestionsByCornerstone( false ); - - if ( suggestions.length === 0 ) { - return null; - } - - return this.getSuggestionsList( nonCornerstoneLinkString, suggestions ); - } - - /** - * Returns the message with a link to the Internal Linking article on yoast.com. - * - * @returns {React.Element} The values to use. - */ - getArticleLink() { - return interpolateComponents( { - mixedString: articleLinkString, - components: { - // eslint-disable-next-line jsx-a11y/anchor-has-content - a: , - }, - } ); - } - - /** - * Returns a generated suggestions list based on the given parameters. - * - * @param {string|Object} context The context to show. - * @param {Object[]} suggestions The suggestions to show - * - * @returns {React.Element} The generated component. - */ - getSuggestionsList( context, suggestions ) { - return ( -
-

{ context }

- { suggestions.map( ( suggestion, key ) => ) } -
- ); - } - - /** - * Filters the suggestions by cornerstone or not - * - * @param {bool} isCornerstone Keep only cornerstone or filter all out. - * - * @returns {Object[]} The filtered array. - */ - filterSuggestionsByCornerstone( isCornerstone = true ) { - return this.props.suggestions.filter( - ( suggestion ) => { - return suggestion.isCornerstone === isCornerstone; - } - ); - } -} - -LinkSuggestions.propTypes = { - suggestions: PropTypes.array.isRequired, - maxSuggestions: PropTypes.number, - customMessages: PropTypes.object, -}; - -LinkSuggestions.defaultProps = { - maxSuggestions: 10, - customMessages: { - lengthMessage: "", - metaMessage: "", - }, -}; - -export default LinkSuggestions; diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/actions/contentAnalysis.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/actions/contentAnalysis.js deleted file mode 100644 index 5004afbcd0c..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/actions/contentAnalysis.js +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Action types - */ -const prefix = "CONTENT_ANALYSIS_"; - -export const SET_SEO_RESULTS = `${ prefix }SET_SEO_RESULTS`; -export const SET_SEO_RESULTS_FOR_KEYWORD = `${ prefix }SET_SEO_RESULTS_FOR_KEYWORD`; -export const UPDATE_SEO_RESULT = `${ prefix }UPDATE_SEO_RESULT`; -export const REMOVE_KEYWORD = `${ prefix }REMOVE_KEYWORD`; - -export const SET_READABILITY_RESULTS = `${ prefix }SET_READABILITY_RESULTS`; -export const UPDATE_READABILITY_RESULT = `${ prefix }UPDATE_READABILITY_RESULT`; - -export const SET_INCLUSIVE_LANGUAGE_RESULTS = `${ prefix }SET_INCLUSIVE_LANGUAGE_RESULTS`; -export const UPDATE_INCLUSIVE_LANGUAGE_RESULT = `${ prefix }UPDATE_INCLUSIVE_LANGUAGE_RESULT`; - -export const SET_OVERALL_READABILITY_SCORE = `${ prefix }SET_OVERALL_READABILITY_SCORE`; -export const SET_OVERALL_SEO_SCORE = `${ prefix }SET_OVERALL_SEO_SCORE`; -export const SET_OVERALL_INCLUSIVE_LANGUAGE_SCORE = `${ prefix }SET_OVERALL_INCLUSIVE_LANGUAGE_SCORE`; - -/* - * Action creators - */ - -/** - * An action creator for setting the SEO results for a keyword. - * - * @param {string} keyword The keyword. - * @param {Array} results The SEO results for the keyword. - * - * @returns {Object} A set SEO results for keyword action. - */ -export function setSeoResultsForKeyword( keyword, results ) { - return { - type: SET_SEO_RESULTS_FOR_KEYWORD, - keyword: keyword, - results: results, - }; -} - -/** - * An action creator for setting the SEO results. - * - * @param {Array} resultsPerKeyword The SEO results per keyword. - * - * @returns {Object} A set SEO results action. - */ -export function setSeoResults( resultsPerKeyword ) { - return { - type: SET_SEO_RESULTS, - resultsPerKeyword: resultsPerKeyword, - }; -} - -/** - * An action creator for updating a single SEO result. - * - * @param {string} keyword The focus keyword. - * @param {Object} result The SEO result. - * - * @returns {Object} An update SEO result action. - */ -export function updateSeoResult( keyword, result ) { - return { - type: UPDATE_SEO_RESULT, - keyword: keyword, - result: result, - }; -} - -/** - * An action creator for removing a keyword and its results. - * - * @param {string} keyword The focus keyword. - * - * @returns {Object} A remove keyword action. - */ -export function removeKeyword( keyword ) { - return { - type: REMOVE_KEYWORD, - keyword: keyword, - }; -} - -/** - * An action creator for setting the readability results. - * - * @param {Object} results The readability results. - * - * @returns {Object} A set readability results action. - */ -export function setReadabilityResults( results ) { - return { - type: SET_READABILITY_RESULTS, - results: results, - }; -} - -/** - * An action creator for updating a single readability result. - * - * @param {Object} result The readability result. - * - * @returns {Object} An update readability result action. - */ -export function updateReadabilityResult( result ) { - return { - type: UPDATE_READABILITY_RESULT, - result: result, - }; -} - -/** - * An action creator for setting the inclusive language results. - * - * @param {Object} results The inclusive language results. - * - * @returns {Object} A set inclusive language results action. - */ -export function setInclusiveLanguageResults( results ) { - return { - type: SET_INCLUSIVE_LANGUAGE_RESULTS, - results: results, - }; -} - -/** - * An action creator for updating a single inclusive language result. - * - * @param {Object} result The inclusive language result. - * - * @returns {Object} An update inclusive language result action. - */ -export function updateInclusiveLanguageResult( result ) { - return { - type: UPDATE_INCLUSIVE_LANGUAGE_RESULT, - result: result, - }; -} - -/** - * An action creator for setting the overall score for a readability result. - * - * @param {Object} overallScore The overall score. - * - * @returns {Object} A set overall score action. - */ -export function setOverallReadabilityScore( overallScore ) { - return { - type: SET_OVERALL_READABILITY_SCORE, - overallScore: overallScore, - }; -} - -/** -* An action creator for setting the overall score result. -* -* @param {Object} overallScore The overall score. -* @param {Object} keyword The keyword the overall score is for. -* -* @returns {Object} A set overall score action. -*/ -export function setOverallSeoScore( overallScore, keyword ) { - return { - type: SET_OVERALL_SEO_SCORE, - keyword: keyword, - overallScore: overallScore, - }; -} - -/** - * An action creator for setting the overall score for an inclusive language result. - * - * @param {Object} overallScore The overall score. - * - * @returns {Object} A set overall score action. - */ -export function setOverallInclusiveLanguageScore( overallScore ) { - return { - type: SET_OVERALL_INCLUSIVE_LANGUAGE_SCORE, - overallScore: overallScore, - }; -} diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/actions/tests/contentAnalysisTest.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/actions/tests/contentAnalysisTest.js deleted file mode 100644 index 9c4c5d4362d..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/actions/tests/contentAnalysisTest.js +++ /dev/null @@ -1,139 +0,0 @@ -import { - UPDATE_SEO_RESULT, - UPDATE_READABILITY_RESULT, - REMOVE_KEYWORD, - SET_SEO_RESULTS, - SET_READABILITY_RESULTS, - SET_SEO_RESULTS_FOR_KEYWORD, - SET_OVERALL_READABILITY_SCORE, - SET_OVERALL_SEO_SCORE, - updateSeoResult, - updateReadabilityResult, - setSeoResults, - removeKeyword, - setReadabilityResults, - setSeoResultsForKeyword, - setOverallReadabilityScore, - setOverallSeoScore, -} from "../contentAnalysis"; - -describe( "setSeoResultsForKeyword action creator", function() { - it( "creates the setSeoResultsForKeyword action", function() { - const results = [ - { id: "result", score: 9, description: "This is a great score!", markingIsActive: true }, - { id: "result", score: 3, description: "This is a bad score!", markingIsActive: true }, - ]; - const keyword = "keyword"; - - const expected = { - type: SET_SEO_RESULTS_FOR_KEYWORD, - keyword: keyword, - results: results, - }; - const actual = setSeoResultsForKeyword( "keyword", results ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "updateSeoResult action creator", function() { - it( "creates the updateSeoResult action", function() { - const result = { id: "result", score: 9, description: "This is a great score!", markingIsActive: true }; - const keyword = "keyword"; - - const expected = { - type: UPDATE_SEO_RESULT, - keyword: keyword, - result: result, - }; - const actual = updateSeoResult( "keyword", result ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "updateReadabilityResult action creator", function() { - it( "creates the readabilitySeoResult action", function() { - const result = { id: "result", score: 3, description: "This is a bad score!", markingIsActive: false }; - - const expected = { - type: UPDATE_READABILITY_RESULT, - result: result, - }; - const actual = updateReadabilityResult( result ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "setSeoResults function", function() { - it( "creates the setSeoResults action", function() { - const keyword = "keyword"; - const resultsPerKeyword = [ { - keyword: keyword, - results: [ { id: "result", score: 3, description: "This is a bad score!", markingIsActive: false } ], - } ]; - - const expected = { - type: SET_SEO_RESULTS, - resultsPerKeyword: resultsPerKeyword, - }; - const actual = setSeoResults( resultsPerKeyword ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "setReadabilityResults function", function() { - it( "creates the setReadabilityResults action", function() { - const results = [ { id: "result", score: 3, description: "This is a bad score!", markingIsActive: false } ]; - - const expected = { - type: SET_READABILITY_RESULTS, - results: results, - }; - const actual = setReadabilityResults( results ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "removeKeyword function", function() { - it( "creates the removeKeywordsAction", function() { - const keyword = "keyword"; - - const expected = { - type: REMOVE_KEYWORD, - keyword: keyword, - }; - const actual = removeKeyword( keyword ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "setOverallScore readability function", function() { - it( "creates the setOverallScore for readability results action", function() { - const overallScore = [ - { id: "overallScore", score: 3 }, - ]; - - const expected = { - type: SET_OVERALL_READABILITY_SCORE, - overallScore: overallScore, - }; - const actual = setOverallReadabilityScore( overallScore ); - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "setOverallScore seo function", function() { - it( "creates the setOverallScore for seo results action", function() { - const keyword = "keyword1"; - const overallScore = [ - { id: "overallScore", score: "3" }, - ]; - - const expected = { - type: SET_OVERALL_SEO_SCORE, - keyword: keyword, - overallScore: overallScore, - }; - const actual = setOverallSeoScore( overallScore, keyword ); - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisList.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisList.js deleted file mode 100644 index 3275478c099..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisList.js +++ /dev/null @@ -1 +0,0 @@ -export { AnalysisList as default, renderRatingToColor } from "@yoast/analysis-report"; diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisResult.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisResult.js deleted file mode 100644 index af1499b0f54..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/components/AnalysisResult.js +++ /dev/null @@ -1 +0,0 @@ -export { AnalysisResult as default } from "@yoast/analysis-report"; diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/components/ContentAnalysis.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/components/ContentAnalysis.js deleted file mode 100644 index d88e16f837e..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/components/ContentAnalysis.js +++ /dev/null @@ -1 +0,0 @@ -export { ContentAnalysis as default } from "@yoast/analysis-report"; diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/index.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/index.js deleted file mode 100644 index 75999a502cb..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import AnalysisList, { renderRatingToColor } from "./components/AnalysisList"; - -export { - AnalysisList, - renderRatingToColor, -}; diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/inclusiveLanguageResultsReducer.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/inclusiveLanguageResultsReducer.js deleted file mode 100644 index 4cffe65ec51..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/inclusiveLanguageResultsReducer.js +++ /dev/null @@ -1,98 +0,0 @@ -import { findIndex, isUndefined } from "lodash"; -import { SET_INCLUSIVE_LANGUAGE_RESULTS, - SET_OVERALL_INCLUSIVE_LANGUAGE_SCORE, - UPDATE_INCLUSIVE_LANGUAGE_RESULT, -} from "../../actions/contentAnalysis"; - -/** - * Initial state - */ -const initialState = { - results: [], - overallScore: null, -}; - -/** - * Helper functions - */ - -/** - * Sets the inclusive language results. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The new results. - */ -function setInclusiveLanguageResults( state, action ) { - return Object.assign( {}, state, - { results: action.results } - ); -} - -/** - * Updates an inclusive language result. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The new results. - */ -function updateInclusiveLanguageResult( state, action ) { - // Sets a new inclusive language result if there currently are no results. - if ( isUndefined( state.results ) ) { - return Object.assign( {}, state, - { results: [ action.result ] } - ); - } - const resultIndex = findIndex( state.results, { id: action.result.id } ); - // Replace a result when there already is a result with the given id. - if ( resultIndex !== -1 ) { - const newResults = state.results.filter( function( result ) { - return result !== state.results[ resultIndex ]; - } ); - return Object.assign( {}, state, - { results: newResults.concat( action.result ) } - ); - } - return Object.assign( {}, state, - { results: [ ...state.results, action.result ] } - ); -} - -/** - * Sets the overall score for the inclusive language analysis. - * - * @param {Object} state The state - * @param {Object} action The action - * @returns {Object} The overall score for the inclusive language analysis - */ -export function setOverallInclusiveLanguageScore( state, action ) { - return Object.assign( {}, state, - { overallScore: action.overallScore } - ); -} - -/** - * Reducers - */ - -/** - * A reducer for the inclusive language object. - * - * @param {Object} state The current state of the object. - * @param {Object} action The current action received. - * @returns {Object} The updated inclusive language results object. - */ -export function inclusiveLanguageResultsReducer( state = initialState, action ) { - switch ( action.type ) { - case SET_INCLUSIVE_LANGUAGE_RESULTS: - return setInclusiveLanguageResults( state, action ); - case UPDATE_INCLUSIVE_LANGUAGE_RESULT: - return updateInclusiveLanguageResult( state, action ); - case SET_OVERALL_INCLUSIVE_LANGUAGE_SCORE: - return setOverallInclusiveLanguageScore( state, action ); - default: - return state; - } -} diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/keywordResultsReducer.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/keywordResultsReducer.js deleted file mode 100644 index 66ec739ae2c..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/keywordResultsReducer.js +++ /dev/null @@ -1,144 +0,0 @@ -import { UPDATE_SEO_RESULT, SET_SEO_RESULTS, REMOVE_KEYWORD, SET_SEO_RESULTS_FOR_KEYWORD, - SET_OVERALL_SEO_SCORE } from "../../actions/contentAnalysis"; -import findIndex from "lodash/findIndex"; -import omit from "lodash/omit"; - -/** - * Initial state - */ -const initialState = {}; - -/** - * Helper functions - */ - -/** - * Replaces a result when there already is a result with the given id. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The new results. - */ -function replaceResult( state, action ) { - const newResults = Array.from( state[ action.keyword ].results, ( result ) => { - if ( result.id === action.result.id ) { - return action.result; - } - return result; - } ); - return Object.assign( {}, state, { - [ action.keyword ]: { results: newResults }, - } ); -} - -/** - * Sets results for a new keyword. - * - * @param {Object} state The state. - * @param {Object} keyword The keyword. - * @param {Array} results The SEO analysis results. - * - * @returns {Object} The new results. - */ -function setResultsForNewKeyword( state, keyword, results ) { - return Object.assign( {}, state, { - [ keyword ]: { results: results }, - } ); -} - -/** - * Updates a SEO result. Adds a keyword if it doesn't exist yet and updates it otherwise. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The updated results. - */ -function updateSeoResult( state, action ) { - if ( ! state[ action.keyword ] ) { - return setResultsForNewKeyword( state, action.keyword, [ action.result ] ); - } - - const resultIndex = findIndex( state[ action.keyword ].results, { id: action.result.id } ); - if ( resultIndex !== -1 ) { - return replaceResult( state, action ); - } - - return Object.assign( {}, state, { - [ action.keyword ]: { results: [ ...state[ action.keyword ].results, action.result ] }, - } ); -} - -/** - * Updates all SEO results for a keyword. Adds a keyword if it doesn't exist yet and updates it otherwise. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The updated results. - */ -function updateSeoResultsForKeyword( state, action ) { - if ( ! state[ action.keyword ] ) { - return setResultsForNewKeyword( state, action.keyword, action.results ); - } - - return Object.assign( {}, state, { - [ action.keyword ]: { results: action.results }, - } ); -} - -/** - * Sets the SEO results for one of more keywords. - * - * @param {string} action The action. - * @returns {Object} The SEO results per keyword. - */ -function setSeoResults( action ) { - const resultsPerKeyword = {}; - action.resultsPerKeyword.forEach( function( keywordResultsPair ) { - resultsPerKeyword[ keywordResultsPair.keyword ] = { results: keywordResultsPair.results }; - } ); - return resultsPerKeyword; -} - -/** - * Sets the overall score for SEO results for a keyword. - * - * @param {Object} state The state. - * @param {Object} action The action. - * @returns {Object} The overall score for the keyword. - */ -export function setOverallSeoScore( state, action ) { - return Object.assign( {}, state, { - [ action.keyword ]: { ...state[ action.keyword ], overallScore: action.overallScore }, - } ); -} - -/** - * Reducers - */ - -/** - * A reducer for the keyword results object. - * - * @param {Object} state The current state of the object. - * @param {Object} action The current action received. - * @returns {Object} The updated keywords results object. - */ -export function keywordResultsReducer( state = initialState, action ) { - switch ( action.type ) { - case SET_SEO_RESULTS: - return setSeoResults( action ); - case UPDATE_SEO_RESULT: - return updateSeoResult( state, action ); - case REMOVE_KEYWORD: - return omit( state, action.keyword ); - case SET_SEO_RESULTS_FOR_KEYWORD: - return updateSeoResultsForKeyword( state, action ); - case SET_OVERALL_SEO_SCORE: - return setOverallSeoScore( state, action ); - default: - return state; - } -} diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/readabilityResultsReducer.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/readabilityResultsReducer.js deleted file mode 100644 index bae6c21a0c4..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysis/readabilityResultsReducer.js +++ /dev/null @@ -1,93 +0,0 @@ -import { UPDATE_READABILITY_RESULT, SET_READABILITY_RESULTS, SET_OVERALL_READABILITY_SCORE } from "../../actions/contentAnalysis"; -import findIndex from "lodash/findIndex"; -import isUndefined from "lodash/isUndefined"; - -/** - * Initial state - */ -const initialState = {}; - -/** - * Helper functions - */ - -/** - * Sets the readability results. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The new results. - */ -function setReadabilityResults( state, action ) { - return Object.assign( {}, state, - { results: action.results } - ); -} - -/** - * Updates a readability result. - * - * @param {Object} state The state. - * @param {Object} action The action. - * - * @returns {Object} The new results. - */ -function updateReadabilityResult( state, action ) { - // Sets a new readability result if there currently are no results. - if ( isUndefined( state.results ) ) { - return Object.assign( {}, state, - { results: [ action.result ] } - ); - } - const resultIndex = findIndex( state.results, { id: action.result.id } ); - // Replace a result when there already is a result with the given id. - if ( resultIndex !== -1 ) { - const newResults = state.results.filter( function( result ) { - return result !== state.results[ resultIndex ]; - } ); - return Object.assign( {}, state, - { results: newResults.concat( action.result ) } - ); - } - return Object.assign( {}, state, - { results: [ ...state.results, action.result ] } - ); -} - -/** - * Sets the overall score for the readability analysis. - * - * @param {Object} state The state - * @param {Object} action The action - * @returns {Object} The overall score for the readability analysis - */ -export function setOverallReadabilityScore( state, action ) { - return Object.assign( {}, state, - { overallScore: action.overallScore } - ); -} - -/** - * Reducers - */ - -/** - * A reducer for the readability object. - * - * @param {Object} state The current state of the object. - * @param {Object} action The current action received. - * @returns {Object} The updated readability results object. - */ -export function readabilityResultsReducer( state = initialState, action ) { - switch ( action.type ) { - case SET_READABILITY_RESULTS: - return setReadabilityResults( state, action ); - case UPDATE_READABILITY_RESULT: - return updateReadabilityResult( state, action ); - case SET_OVERALL_READABILITY_SCORE: - return setOverallReadabilityScore( state, action ); - default: - return state; - } -} diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer.js deleted file mode 100644 index 27fdb5122b7..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer.js +++ /dev/null @@ -1,10 +0,0 @@ -import { readabilityResultsReducer } from "./contentAnalysis/readabilityResultsReducer"; -import { keywordResultsReducer } from "./contentAnalysis/keywordResultsReducer"; -import { inclusiveLanguageResultsReducer } from "./contentAnalysis/inclusiveLanguageResultsReducer"; -import { combineReducers } from "redux"; - -export default combineReducers( { - seo: keywordResultsReducer, - readability: readabilityResultsReducer, - inclusiveLanguage: inclusiveLanguageResultsReducer, -} ); diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/contentAnalysisReducerTest.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/contentAnalysisReducerTest.js deleted file mode 100644 index 6b82eed32e3..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/contentAnalysisReducerTest.js +++ /dev/null @@ -1,38 +0,0 @@ -import { UPDATE_SEO_RESULT } from "../../actions/contentAnalysis"; -import contentAnalysisReducer from "../../reducers/contentAnalysisReducer"; - -jest.mock( "../../reducers/contentAnalysis/readabilityResultsReducer", () => { - return { - readabilityResultsReducer: jest.fn( () => { - return { name: "readabilityResultsReducer" }; - } ), - }; -} ); - -jest.mock( "../../reducers/contentAnalysis/keywordResultsReducer", () => { - return { - keywordResultsReducer: jest.fn( () => { - return { name: "keywordResultsReducer" }; - } ), - }; -} ); - -jest.mock( "../../reducers/contentAnalysis/inclusiveLanguageResultsReducer", () => { - return { - inclusiveLanguageResultsReducer: jest.fn( () => { - return { name: "inclusiveLanguageResultsReducer" }; - } ), - }; -} ); - -test( "content analysis reducer with the UPDATE_SEO_RESULT action", () => { - const state = {}; - const action = { - type: UPDATE_SEO_RESULT, - }; - const expected = { inclusiveLanguage: { name: "inclusiveLanguageResultsReducer" }, seo: { name: "keywordResultsReducer" }, - readability: { name: "readabilityResultsReducer" } }; - - const actual = contentAnalysisReducer( state, action ); - expect( actual ).toEqual( expected ); -} ); diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/keywordResultsReducerTest.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/keywordResultsReducerTest.js deleted file mode 100644 index ff522effe83..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/keywordResultsReducerTest.js +++ /dev/null @@ -1,668 +0,0 @@ -import { keywordResultsReducer } from "../contentAnalysis/keywordResultsReducer"; -import { - UPDATE_SEO_RESULT, SET_SEO_RESULTS, REMOVE_KEYWORD, SET_SEO_RESULTS_FOR_KEYWORD, - SET_OVERALL_SEO_SCORE, -} from "../../actions/contentAnalysis"; - -describe( "SET_SEO_RESULTS_FOR_KEYWORD action", () => { - it( "sets seo results for a single keyword in an empty state", () => { - const state = {}; - const action = { - type: SET_SEO_RESULTS_FOR_KEYWORD, - keyword: "thisIsMyKeyword", - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "SET_SEO_RESULTS_FOR_KEYWORD action", () => { - it( "sets seo results for a single keyword in an non-empty state", () => { - const state = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: SET_SEO_RESULTS_FOR_KEYWORD, - keyword: "thisIsMySecondKeyword", - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - thisIsMySecondKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "SET_SEO_RESULTS_FOR_KEYWORD action", () => { - it( "overwrites seo results for a single keyword when there are already results for that keyword", () => { - const state = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: SET_SEO_RESULTS_FOR_KEYWORD, - keyword: "thisIsMyKeyword", - results: [ - { - id: "resultId", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 9, - description: "This is a good score!", - markingIsActive: false, - }, - ], - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 9, - description: "This is a good score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "SET_SEO_RESULTS action", () => { - it( "sets seo results for a single keyword in an empty state", () => { - const state = {}; - const action = { - type: SET_SEO_RESULTS, - resultsPerKeyword: [ { - keyword: "thisIsMyKeyword", - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - } ], - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "sets seo results for multiple keywords in an empty state", () => { - const state = {}; - const action = { - type: SET_SEO_RESULTS, - resultsPerKeyword: [ { - keyword: "thisIsMyKeyword", - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - { - keyword: "thisIsMySecondKeyword", - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - } ], - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - thisIsMySecondKeyword: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites existing seo results in a non-empty state", () => { - const state = { - thisIsMyOldKeyword: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }, - }; - const action = { - type: SET_SEO_RESULTS, - resultsPerKeyword: [ { - keyword: "thisIsMyKeyword", - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - } ], - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "UPDATE_SEO_RESULT action", () => { - it( "adds a new result for a new keyword to an empty state ", () => { - const state = {}; - const action = { - type: UPDATE_SEO_RESULT, - keyword: "thisIsMyKeyword", - result: { id: "resultId", score: 3, description: "This is a bad score!", markingIsActive: false }, - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "adds a result for a new keyword in a non-empty state", () => { - const state = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: UPDATE_SEO_RESULT, - keyword: "thisIsMySecondKeyword", - result: { id: "resultId", score: 9, description: "This is a good score!", markingIsActive: true }, - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - thisIsMySecondKeyword: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "adds a result for an existing keyword", () => { - const state = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - thisIsMySecondKeyword: { - results: [ - { - id: "resultId", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: UPDATE_SEO_RESULT, - keyword: "thisIsMyKeyword", - result: { id: "resultId2", score: 9, description: "This is a good score!", markingIsActive: true }, - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }, - thisIsMySecondKeyword: { - results: [ - { - id: "resultId", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites an existing result", () => { - const state = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: UPDATE_SEO_RESULT, - keyword: "thisIsMyKeyword", - result: { id: "resultId", score: 9, description: "This is a good score!", markingIsActive: true }, - }; - const expected = { - thisIsMyKeyword: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "REMOVE_KEYWORD action", () => { - it( "removes a keyword and its results", () => { - const state = { - keywordToBeRemoved: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }, - keywordToStay: { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: REMOVE_KEYWORD, - keyword: "keywordToBeRemoved", - }; - const expected = { - keywordToStay: { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "SET_OVERALL_SCORE for seo action", () => { - it( "sets overall score for an seo analysis result", () => { - const state = { - keyword: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }, - keyword2: { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - const action = { - type: SET_OVERALL_SEO_SCORE, - keyword: "keyword", - overallScore: "5", - }; - const expected = { - keyword: { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - overallScore: "5", - }, - keyword2: { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }, - }; - - const actual = keywordResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - - -describe( "BOGUS action", () => { - it( "returns the unchanged state when a bogus action is passed to the reducer", () => { - const state = {}; - const action = { - type: "BOGUS", - }; - const expected = state; - - const actual = keywordResultsReducer( state, action ); - expect( actual ).toBe( expected ); - } ); -} ); diff --git a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/readabilityResultsReducerTest.js b/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/readabilityResultsReducerTest.js deleted file mode 100644 index 781952ad14c..00000000000 --- a/packages/yoast-components/composites/Plugin/ContentAnalysis/reducers/tests/readabilityResultsReducerTest.js +++ /dev/null @@ -1,316 +0,0 @@ -import { readabilityResultsReducer } from "../contentAnalysis/readabilityResultsReducer"; -import { - UPDATE_READABILITY_RESULT, SET_READABILITY_RESULTS, - SET_OVERALL_READABILITY_SCORE, -} from "../../actions/contentAnalysis"; - -describe( "SET_READABILITY_RESULTS action", () => { - it( "sets readability results in an empty state", () => { - const state = {}; - const action = { - type: SET_READABILITY_RESULTS, - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }; - const expected = { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites a non-empty state ", () => { - const state = { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }; - const action = { - type: SET_READABILITY_RESULTS, - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }; - const expected = { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 6, - description: "This is a mediocre score!", - markingIsActive: false, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "UPDATE_READABILITY_RESULT action", () => { - it( "adds a new result to an empty state", () => { - const state = {}; - const action = { - type: UPDATE_READABILITY_RESULT, - result: { id: "resultId", score: 3, description: "This is a bad score!", markingIsActive: false }, - }; - const expected = { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "adds results for a new id to a non-empty state", () => { - const state = { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }; - const action = { - type: UPDATE_READABILITY_RESULT, - result: { id: "resultId2", score: 9, description: "This is a good score!", markingIsActive: true }, - }; - const expected = { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId2", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites an existing result", () => { - const state = { - results: [ - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }; - const action = { - type: UPDATE_READABILITY_RESULT, - result: { id: "resultId", score: 9, description: "This is a good score!", markingIsActive: true }, - }; - const expected = { - results: [ - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites an existing result", () => { - const state = { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId3", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }; - const action = { - type: UPDATE_READABILITY_RESULT, - result: { id: "resultId", score: 9, description: "This is a good score!", markingIsActive: true }, - }; - const expected = { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId3", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId", - score: 9, - description: "This is a good score!", - markingIsActive: true, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "SET_OVERALL_SCORE for readability action", () => { - it( "sets overall score for a readability analysis result", () => { - const state = { - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId3", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }; - const action = { - type: SET_OVERALL_READABILITY_SCORE, - overallScore: 5, - }; - const expected = { - overallScore: 5, - results: [ - { - id: "resultId2", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - { - id: "resultId3", - score: 3, - description: "This is a bad score!", - markingIsActive: false, - }, - ], - }; - - const actual = readabilityResultsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "BOGUS action", () => { - it( "doesn't change the state when a bogus action is passed to the reducer", () => { - const state = {}; - const action = { - type: "BOGUS", - }; - const expected = state; - - const actual = readabilityResultsReducer( state, action ); - expect( actual ).toBe( expected ); - } ); -} ); diff --git a/packages/yoast-components/composites/Plugin/CornerstoneContent/components/CornerstoneToggle.js b/packages/yoast-components/composites/Plugin/CornerstoneContent/components/CornerstoneToggle.js deleted file mode 100644 index 8889d0e3774..00000000000 --- a/packages/yoast-components/composites/Plugin/CornerstoneContent/components/CornerstoneToggle.js +++ /dev/null @@ -1,49 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import styled from "styled-components"; -import { Toggle } from "@yoast/components"; -import { __ } from "@wordpress/i18n"; - -const Cornerstone = styled.div` - display: flex; - margin-top: 8px; -`; - -/** - * The CornerstoneToggle Component. - */ -class CornerstoneToggle extends React.Component { - /** - * Renders the CornerstoneToggle component. - * - * @returns {ReactElement} the CornerstoneToggle component. - */ - render() { - return ( - - - - ); - } -} - -CornerstoneToggle.propTypes = { - id: PropTypes.string, - isEnabled: PropTypes.bool, - onSetToggleState: PropTypes.func, - onToggle: PropTypes.func, - disable: PropTypes.bool, - onToggleDisabled: PropTypes.func, -}; - -CornerstoneToggle.defaultProps = { - id: "cornerstone-toggle", -}; - -export default CornerstoneToggle; diff --git a/packages/yoast-components/composites/Plugin/CornerstoneContent/tests/CornerstoneToggleTest.js b/packages/yoast-components/composites/Plugin/CornerstoneContent/tests/CornerstoneToggleTest.js deleted file mode 100644 index 041860d5f49..00000000000 --- a/packages/yoast-components/composites/Plugin/CornerstoneContent/tests/CornerstoneToggleTest.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import renderer from "react-test-renderer"; -import CornerstoneToggle from "../components/CornerstoneToggle"; - -test( "The CornerstoneToggle matches the snapshot", () => { - const component = renderer.create( - {} } checked={ true } /> - ); - - const tree = component.toJSON(); - expect( tree ).toMatchSnapshot(); -} ); diff --git a/packages/yoast-components/composites/Plugin/CornerstoneContent/tests/__snapshots__/CornerstoneToggleTest.js.snap b/packages/yoast-components/composites/Plugin/CornerstoneContent/tests/__snapshots__/CornerstoneToggleTest.js.snap deleted file mode 100644 index 1a54c5a192f..00000000000 --- a/packages/yoast-components/composites/Plugin/CornerstoneContent/tests/__snapshots__/CornerstoneToggleTest.js.snap +++ /dev/null @@ -1,105 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`The CornerstoneToggle matches the snapshot 1`] = ` -.c1 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - width: 100%; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; -} - -.c2 { - margin-right: 16px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - cursor: pointer; -} - -.c3 { - background-color: #ccc; - border-radius: 7px; - height: 14px; - width: 30px; - cursor: pointer; - margin: 0; - outline: 0; -} - -.c3:focus > span { - box-shadow: inset 0 0 0 1px #fff,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8); -} - -.c4 { - background-color: #888; - margin-left: -2px; - box-shadow: 0 2px 2px 2px rgba(0,0,0,0.1); - border-radius: 100%; - height: 20px; - width: 20px; - position: absolute; - margin-top: -3px; -} - -.c5 { - font-size: 14px; - line-height: 20px; - margin-left: 8px; - font-style: italic; -} - -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - margin-top: 8px; -} - -
-
- - Mark as cornerstone content - -
- -
- -
-
-`; diff --git a/packages/yoast-components/composites/Plugin/DashboardWidget/index.js b/packages/yoast-components/composites/Plugin/DashboardWidget/index.js deleted file mode 100644 index 84522d030dd..00000000000 --- a/packages/yoast-components/composites/Plugin/DashboardWidget/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { SiteSEOReport as DashboardWidgetSeoAssessment } from "@yoast/analysis-report"; -export { ArticleList as DashboardWidgetWordpressFeed } from "@yoast/components"; diff --git a/packages/yoast-components/composites/Plugin/Shared/components/ButtonSection.js b/packages/yoast-components/composites/Plugin/Shared/components/ButtonSection.js deleted file mode 100644 index 08d2dbf1799..00000000000 --- a/packages/yoast-components/composites/Plugin/Shared/components/ButtonSection.js +++ /dev/null @@ -1,80 +0,0 @@ -import PropTypes from "prop-types"; -import React from "react"; - -import { - wrapInHeading, - StyledIconsButton, - StyledContainer, - StyledContainerTopLevel, -} from "@yoast/components"; -import { SectionTitle } from "@yoast/components"; - -const StyledHeading = wrapInHeading( StyledIconsButton, { level: 2, fontSize: "1rem", fontWeight: "normal" } ); - -/** - * Base panel. Optionally has a heading around the button. - * - * @param {Object} props The properties for the component. - * @param {string} props.className The name of the CSS class used for alternate styling. - * @param {IconsButton} props.Heading Heading button. May be wrapped or styled or both. - * @param {boolean} props.hasSeparator True displays borders around the section. False means no borders. - * @param {Object} props.prefixIcon Heading icon before the title. - * @param {string} props.subTitle Sub-title for the Heading. - * @param {Object} props.suffixIcon Heading icon after the title. - * @param {string} props.title Title for the Heading. - * @param {string} props.titleScreenReaderText Chance for an extra text to feed to a screenreader. - * - * @returns {ReactElement} A panel that can be clicked to open a modal. - */ -export const ButtonSection = ( props ) => { - const Container = ( props.hasSeparator ) ? StyledContainerTopLevel : StyledContainer; - - return ( - - - - - - ); -}; - -ButtonSection.propTypes = { - hasSeparator: PropTypes.bool, - className: PropTypes.string, - Heading: PropTypes.func, - prefixIcon: PropTypes.shape( { - icon: PropTypes.string, - color: PropTypes.string, - size: PropTypes.string, - } ), - suffixIcon: PropTypes.shape( { - icon: PropTypes.string, - color: PropTypes.string, - size: PropTypes.string, - } ), - subTitle: PropTypes.string, - title: PropTypes.string.isRequired, - titleScreenReaderText: PropTypes.string, - onClick: PropTypes.func.isRequired, - id: PropTypes.string, -}; - -ButtonSection.defaultProps = { - Heading: StyledHeading, - id: null, -}; - -export default ButtonSection; diff --git a/packages/yoast-components/composites/Plugin/Shared/components/Collapsible.js b/packages/yoast-components/composites/Plugin/Shared/components/Collapsible.js deleted file mode 100644 index de103dd50ce..00000000000 --- a/packages/yoast-components/composites/Plugin/Shared/components/Collapsible.js +++ /dev/null @@ -1 +0,0 @@ -export { Collapsible as default, StyledIconsButton } from "@yoast/components"; diff --git a/packages/yoast-components/composites/Plugin/Shared/components/KeywordInput.js b/packages/yoast-components/composites/Plugin/Shared/components/KeywordInput.js deleted file mode 100644 index d9d15ded6cc..00000000000 --- a/packages/yoast-components/composites/Plugin/Shared/components/KeywordInput.js +++ /dev/null @@ -1,260 +0,0 @@ -// External dependencies. -import React from "react"; -import styled from "styled-components"; -import PropTypes from "prop-types"; -import { noop, isEmpty } from "lodash-es"; - -/* Yoast dependencies */ -import { addFocusStyle, SvgIcon, InputField } from "@yoast/components"; -import { getDirectionalStyle } from "@yoast/helpers"; -import { colors } from "@yoast/style-guide"; - -const errorColor = colors.$color_bad; -const backgroundErrorColor = colors.$palette_error_background; -const greyColor = colors.$color_grey_text_light; -const inputErrorColor = colors.$palette_error_text; - -const KeywordInputContainer = styled.div` - display: flex; - flex-direction: column; -`; - -const KeywordFieldLabel = styled.label` - font-size: var(--yoast-font-size-default); - font-weight: var(--yoast-font-weight-bold); - ${ getDirectionalStyle( "margin-right: 4px", "margin-left: 4px" ) }; -`; - -const KeywordFieldLabelContainer = styled.span` - margin-bottom: 0.5em; -`; - -const KeywordField = styled( InputField )` - flex: 1 !important; - box-sizing: border-box; - max-width: 100%; - margin: 0; // Reset margins inherited from WordPress. - - // Hide native X in Edge and IE11. - &::-ms-clear { - display: none; - } - - &.has-error { - border-color: ${ errorColor } !important; - background-color: ${ backgroundErrorColor } !important; - - &:focus { - box-shadow: 0 0 2px ${ errorColor } !important; - } - } -`; - -const ErrorList = styled.ul` - color: ${ inputErrorColor }; - list-style-type: disc; - list-style-position: outside; - margin: 0; - margin-left: 1.2em; -`; - -const ErrorListItem = styled.li` - color: ${ inputErrorColor }; - margin: 0 0 0.5em 0; -`; - -const BorderlessButton = addFocusStyle( - styled.button` - border: 1px solid transparent; - box-shadow: none; - background: none; - flex: 0 0 32px; - height: 32px; - max-width: 32px; - padding: 0; - cursor: pointer; - ` -); - -BorderlessButton.propTypes = { - type: PropTypes.string, - focusColor: PropTypes.string, - focusBackgroundColor: PropTypes.string, - focusBorderColor: PropTypes.string, -}; - -BorderlessButton.defaultProps = { - type: "button", - focusColor: colors.$color_button_text_hover, - focusBackgroundColor: "transparent", - focusBorderColor: colors.$color_blue, -}; - -const RemoveIcon = styled( SvgIcon )` - margin-top: 4px; -`; - -export const YoastInputButtonContainer = styled.div` - display: flex; - flex-direction: row; - align-items: center; - - &.has-remove-keyword-button { - ${ KeywordField } { - ${ getDirectionalStyle( "padding-right: 40px", "padding-left: 40px" ) }; - } - - ${ BorderlessButton } { - ${ getDirectionalStyle( "margin-left: -32px", "margin-right: -32px" ) }; - } - } -`; - -/** - * An input component for the keyphrase. - */ -class KeywordInput extends React.Component { - /** - * Constructs a KeywordInput component. - * - * @param {Object} props The props for the KeywordInput. - * @param {string} props.id The id of the KeywordInput. - * @param {string} props.label The label of the KeywordInput. - * @param {boolean} props.showLabel Toggle between an actual label or an aria-label on the input. - * @param {string} props.keyword The initial keyword passed to the state. - * @param {Function} props.onChange The function that is triggered when the keyword input field is changed. - * - * @returns {void} - */ - constructor( props ) { - super( props ); - - this.handleChange = this.handleChange.bind( this ); - } - - /** - * Handles changes in the KeywordInput, sets the state if a change has been made. - * - * @param {SyntheticEvent} event The onChange event. - * - * @returns {void} - */ - handleChange( event ) { - this.props.onChange( event.target.value ); - } - - /** - * Renders the input's label. - * - * @returns {ReactElement} The input label. - */ - renderLabel() { - const { - id, - label, - helpLink, - } = this.props; - return ( - - - { label } - - { helpLink } - - ); - } - - /** - * Renders the input's error message list. - * - * @returns {ReactElement} The error list. - */ - renderErrorMessages() { - const errorMessages = [ ...this.props.errorMessages ]; - return ( - ! isEmpty( errorMessages ) && - - { errorMessages.map( ( message, index ) => - - { message } - - ) } - - ); - } - - /** - * Renders an input field, a label, and if the condition is met, an error message. - * - * @returns {ReactElement} The KeywordField react component including its label and eventual error message. - */ - render() { - const { id, showLabel, keyword, onRemoveKeyword, onBlurKeyword, onFocusKeyword, hasError } = this.props; - // The aria label should not be shown if there is a visible label. - const showAriaLabel = ! showLabel; - - const showRemoveKeywordButton = onRemoveKeyword !== noop; - - return ( - - { showLabel && this.renderLabel() } - { hasError && this.renderErrorMessages() } - - - { showRemoveKeywordButton && ( - - - - ) } - - - ); - } -} - -KeywordInput.propTypes = { - id: PropTypes.string.isRequired, - showLabel: PropTypes.bool, - keyword: PropTypes.string, - onChange: PropTypes.func.isRequired, - onRemoveKeyword: PropTypes.func, - onBlurKeyword: PropTypes.func, - onFocusKeyword: PropTypes.func, - label: PropTypes.string.isRequired, - helpLink: PropTypes.node, - hasError: PropTypes.bool, - errorMessages: PropTypes.arrayOf( - PropTypes.string - ), -}; - -KeywordInput.defaultProps = { - showLabel: true, - keyword: "", - onRemoveKeyword: noop, - onBlurKeyword: noop, - onFocusKeyword: noop, - helpLink: null, - hasError: false, - errorMessages: [], -}; - -export default KeywordInput; diff --git a/packages/yoast-components/composites/Plugin/Shared/tests/KeywordInputTest.js b/packages/yoast-components/composites/Plugin/Shared/tests/KeywordInputTest.js deleted file mode 100644 index f311805387b..00000000000 --- a/packages/yoast-components/composites/Plugin/Shared/tests/KeywordInputTest.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -import renderer from "react-test-renderer"; - -import KeywordInput from "../components/KeywordInput"; - - -describe( KeywordInput, () => { - it( "matches the snapshot by default", () => { - const component = renderer.create( - {} } - onRemoveKeyword={ () => {} } - label="test label" - ariaLabel="test" - /> - ); - - const tree = component.toJSON(); - expect( tree ).toMatchSnapshot(); - } ); - - it( "does not display the error message for a single keyword", () => { - - } ); - - it( "does not display the error message for two words separated by whitespace", () => { - - } ); - - it( "does not displays the error message for comma-separated words", () => { - - } ); - - it( "does displays the error message if submitted as prop", () => { - - } ); -} ); diff --git a/packages/yoast-components/composites/Plugin/Shared/tests/__snapshots__/KeywordInputTest.js.snap b/packages/yoast-components/composites/Plugin/Shared/tests/__snapshots__/KeywordInputTest.js.snap deleted file mode 100644 index 16fba41f1bc..00000000000 --- a/packages/yoast-components/composites/Plugin/Shared/tests/__snapshots__/KeywordInputTest.js.snap +++ /dev/null @@ -1,168 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`KeywordInput matches the snapshot by default 1`] = ` -.c10 { - width: 18px; - height: 18px; - -webkit-flex: none; - -ms-flex: none; - flex: none; -} - -.c5.c5.c5 { - padding: 0 8px; - min-height: 34px; - font-size: 1em; - box-shadow: inset 0 1px 2px rgba( 0,0,0,0.07 ); - border: 1px solid #ddd; - border-radius: 0; -} - -.c5.c5.c5:focus { - border-color: #5b9dd9; - box-shadow: 0 0 2px rgba( 30,140,190,0.8 ); -} - -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; -} - -.c2 { - font-size: var(--yoast-font-size-default); - font-weight: var(--yoast-font-weight-bold); - margin-right: 4px; -} - -.c1 { - margin-bottom: 0.5em; -} - -.c6 { - -webkit-flex: 1 !important; - -ms-flex: 1 !important; - flex: 1 !important; - box-sizing: border-box; - max-width: 100%; - margin: 0; -} - -.c6::-ms-clear { - display: none; -} - -.c6.has-error { - border-color: #dc3232 !important; - background-color: #f9dcdc !important; -} - -.c6.has-error:focus { - box-shadow: 0 0 2px #dc3232 !important; -} - -.c8 { - border: 1px solid transparent; - box-shadow: none; - background: none; - -webkit-flex: 0 0 32px; - -ms-flex: 0 0 32px; - flex: 0 0 32px; - height: 32px; - max-width: 32px; - padding: 0; - cursor: pointer; -} - -.c9::-moz-focus-inner { - border-width: 0; -} - -.c9:focus { - outline: none; - border-color: #0066cd; - color: #000; - background-color: transparent; - box-shadow: 0 0 3px rgba( 8,74,103,0.8 ); -} - -.c11 { - margin-top: 4px; -} - -.c3 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.c3.has-remove-keyword-button .c4 { - padding-right: 40px; -} - -.c3.has-remove-keyword-button .c7 { - margin-left: -32px; -} - -
- - - -
- - -
-
-`; diff --git a/packages/yoast-components/config/defaults.json b/packages/yoast-components/config/defaults.json deleted file mode 100644 index 39e59acbb5f..00000000000 --- a/packages/yoast-components/config/defaults.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "css": { - "breakpoint": { - "tablet": 1355, - "mobile": 800 - }, - "inputField": { - "height": "3em" - } - } -} \ No newline at end of file diff --git a/packages/yoast-components/css-dist/yoast-components-standalone.min.css b/packages/yoast-components/css-dist/yoast-components-standalone.min.css deleted file mode 100644 index 1231b26498c..00000000000 --- a/packages/yoast-components/css-dist/yoast-components-standalone.min.css +++ /dev/null @@ -1 +0,0 @@ -.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute!important;width:1px}body{background:#f1f1f1;font-family:arial,sans-serif;line-height:1.375}.yoast-search-result-editor{font-family:Arial,sans-serif;margin:0 auto;width:640px} \ No newline at end of file diff --git a/packages/yoast-components/css-dist/yoast-components.min.css b/packages/yoast-components/css-dist/yoast-components.min.css deleted file mode 100644 index 504b72deb8a..00000000000 --- a/packages/yoast-components/css-dist/yoast-components.min.css +++ /dev/null @@ -1 +0,0 @@ -.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute!important;width:1px} \ No newline at end of file diff --git a/packages/yoast-components/css/accessibility.css b/packages/yoast-components/css/accessibility.css deleted file mode 100644 index f987ac9c79a..00000000000 --- a/packages/yoast-components/css/accessibility.css +++ /dev/null @@ -1,11 +0,0 @@ -.screen-reader-text { - position: absolute !important; - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - width: 1px; - height: 1px; - border: 0; - padding: 0; - overflow: hidden; - word-wrap: normal !important; -} diff --git a/packages/yoast-components/css/all.css b/packages/yoast-components/css/all.css deleted file mode 100644 index 5be5aa52ee3..00000000000 --- a/packages/yoast-components/css/all.css +++ /dev/null @@ -1 +0,0 @@ -@import "./accessibility.css"; diff --git a/packages/yoast-components/css/standalone.css b/packages/yoast-components/css/standalone.css deleted file mode 100644 index 8766c63d01d..00000000000 --- a/packages/yoast-components/css/standalone.css +++ /dev/null @@ -1,13 +0,0 @@ -@import "./all.css"; - -body { - background: #f1f1f1; - font-family: arial, sans-serif; - line-height: 1.375; /* 22px based on default browser font size 16px. */ -} - -.yoast-search-result-editor { - width: 640px; - margin: 0 auto; - font-family: Arial, sans-serif; -} diff --git a/packages/yoast-components/forms/index.js b/packages/yoast-components/forms/index.js deleted file mode 100644 index 1da35f7ea89..00000000000 --- a/packages/yoast-components/forms/index.js +++ /dev/null @@ -1,11 +0,0 @@ -export { - StyledSection, - StyledSectionBase, - StyledHeading, - Textfield, - Input, - Label, - ProgressBar, - Section, - Textarea, -} from "@yoast/components"; diff --git a/packages/yoast-components/grunt/config/aliases.yaml b/packages/yoast-components/grunt/config/aliases.yaml deleted file mode 100644 index 587048e8cb6..00000000000 --- a/packages/yoast-components/grunt/config/aliases.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# Grunt aliases ---- -# Build everything -build: - - 'build:css' -# Build CSS -'build:css': - - 'postcss:build' - - 'copy:css' - - 'clean:css' - -publish: - - 'copy:publish' diff --git a/packages/yoast-components/grunt/config/clean.js b/packages/yoast-components/grunt/config/clean.js deleted file mode 100644 index af847f4cca6..00000000000 --- a/packages/yoast-components/grunt/config/clean.js +++ /dev/null @@ -1,7 +0,0 @@ -// See https://github.com/gruntjs/grunt-contrib-clean -module.exports = { - css: [ - "css-dist/all.css", - "css-dist/standalone.css", - ], -}; diff --git a/packages/yoast-components/grunt/config/copy.js b/packages/yoast-components/grunt/config/copy.js deleted file mode 100644 index 6a0903d4aba..00000000000 --- a/packages/yoast-components/grunt/config/copy.js +++ /dev/null @@ -1,28 +0,0 @@ -// See https://github.com/gruntjs/grunt-contrib-copy -module.exports = { - css: { - files: [ - { - src: "css-dist/all.css", - dest: "css-dist/yoast-components.min.css", - }, - { - src: "css-dist/standalone.css", - dest: "css-dist/yoast-components-standalone.min.css", - }, - ], - }, - publish: { - files: [ - { - src: [ - ".babelrc", - "**/*", - "!dist/**/*", - "!node_modules/**/*", - ], - dest: "dist/", - }, - ], - }, -}; diff --git a/packages/yoast-components/grunt/config/postcss.js b/packages/yoast-components/grunt/config/postcss.js deleted file mode 100644 index 33977da49ec..00000000000 --- a/packages/yoast-components/grunt/config/postcss.js +++ /dev/null @@ -1,21 +0,0 @@ -const cssnano = require( "cssnano" ); -const autoprefixer = require( "autoprefixer" ); -const postcssImport = require( "postcss-import" ); - -// See https://github.com/C-Lodder/grunt-postcss -module.exports = { - options: { - processors: [ - postcssImport(), - autoprefixer( { browsers: "last 2 versions, IE >= 11" } ), - cssnano(), - ], - }, - build: { - cwd: "css/", - src: [ "all.css", "standalone.css" ], - dest: "css-dist/", - expand: true, - ext: ".css", - }, -}; diff --git a/packages/yoast-components/index.js b/packages/yoast-components/index.js deleted file mode 100644 index 4c69ae63642..00000000000 --- a/packages/yoast-components/index.js +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Composites imports. - */ -// Composites/ConfigurationWizard imports. -import { decodeHTML, getDirectionalStyle, sendRequest } from "@yoast/helpers"; -// Import colors from the style guide. -import { colors } from "@yoast/style-guide"; -// Composites/Plugin imports. -import { Collapsible } from "@yoast/components"; -import { default as ButtonSection } from "./composites/Plugin/Shared/components/ButtonSection"; -import { default as ContentAnalysis } from "./composites/Plugin/ContentAnalysis/components/ContentAnalysis"; -import CornerstoneToggle from "./composites/Plugin/CornerstoneContent/components/CornerstoneToggle"; -// Composites/LinkSuggestions imports. -import { default as LinkSuggestions } from "./composites/LinkSuggestions/LinkSuggestions"; - -const getRtlStyle = getDirectionalStyle; - -/** - * @deprecated since 5.13.1. Use the `OnboardingWizard` from the `@yoast/configuration-wizard` package instead. - * - * @returns {null} returns nothing. - */ -const OnboardingWizard = () => { - console.warn( "Deprecation Warning: Deprecated since 5.13.1. " + - "Use the `OnboardingWizard` from the `@yoast/configuration-wizard` package instead." ); - return null; -}; - -/** - * @deprecated since 5.13.1. Use the `MessageBox` from the `@yoast/configuration-wizard` package instead. - * - * @returns {null} returns nothing. - */ -const MessageBox = () => { - console.warn( "Deprecation Warning: Deprecated since 5.13.1. " + - "Use the `MessageBox` from the `@yoast/configuration-wizard` package instead." ); - return null; -}; - -/** - * @deprecated since 5.13.1. Use the `LoadingIndicator` from the `@yoast/configuration-wizard` package instead. - * - * @returns {null} returns nothing. - */ -const LoadingIndicator = () => { - console.warn( "Deprecation Warning: Deprecated since 5.13.1. " + - "Use the `LoadingIndicator` from the `@yoast/configuration-wizard` package instead." ); - return null; -}; - -export { - OnboardingWizard, - MessageBox, - LinkSuggestions, - ContentAnalysis, - Collapsible, - ButtonSection, - LoadingIndicator, - CornerstoneToggle, - sendRequest, - decodeHTML, - getRtlStyle, - colors, -}; - -export * from "./composites/Plugin/DashboardWidget"; -export * from "./composites/Plugin/ContentAnalysis"; - -export -{ - FixedWidthContainer, - HelpTextWrapper, - SnippetPreview, - SettingsSnippetEditor, - SnippetEditor, - lengthProgressShape, -} from "@yoast/search-metadata-previews"; -export { - ReplacementVariableEditor, - recommendedReplacementVariablesShape, - replacementVariablesShape, -} from "@yoast/replacement-variable-editor"; - -export { default as utils } from "./utils"; -export { localize } from "./utils/i18n"; -export { setTranslations } from "./utils/i18n"; -export { translate } from "./utils/i18n"; -export { default as analysis } from "./composites/Plugin/ContentAnalysis/reducers/contentAnalysisReducer"; -export { ArticleList as WordpressFeed } from "@yoast/components"; -export { SiteSEOReport as SeoAssessment } from "@yoast/analysis-report"; -export { default as KeywordInput } from "./composites/Plugin/Shared/components/KeywordInput"; -export { insightsReducer } from "./redux/reducers/insights"; -export { setWordsForInsights } from "./redux/actions/insights"; -export { - setReadabilityResults, - setSeoResultsForKeyword, - setInclusiveLanguageResults, - setOverallReadabilityScore, - setOverallSeoScore, - setOverallInclusiveLanguageScore, -} from "./composites/Plugin/ContentAnalysis/actions/contentAnalysis"; - -export { - Card, - FullHeightCard, - CardBanner, - CourseDetails as CardDetails, - HelpText, - Icon, - KeywordSuggestions, - WordOccurrenceInsights, - LanguageNotice, - Loader, - ScoreAssessments, - SvgIcon, - SynonymsInput, - UpsellButton, - UpsellLinkButton, - YoastButton, - Modal as YoastModal, - YoastSeoIcon, - Warning as YoastWarning, - StyledSection, - StyledHeading, - StyledSectionBase, -} from "@yoast/components"; diff --git a/packages/yoast-components/jest/__mocks__/@wordpress/i18n.js b/packages/yoast-components/jest/__mocks__/@wordpress/i18n.js deleted file mode 100644 index faa8653a52a..00000000000 --- a/packages/yoast-components/jest/__mocks__/@wordpress/i18n.js +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable require-jsdoc */ - -import { sprintf, setLocaleData } from "@wordpress/i18n"; - -function __( string ) { - return string; -} - -function _x( string ) { - return string; -} - -// Mock works for English, because our source translations are in English. -function _n( single, plural, number ) { - if ( number === 1 ) { - return single; - } - - return plural; -} - -function _nx( single, plural, number ) { - // eslint-disable-next-line no-restricted-syntax - return _n( single, plural, number ); -} - -export { - __, - _x, - _n, - _nx, - setLocaleData, - sprintf, -}; diff --git a/packages/yoast-components/jest/__mocks__/fileMock.js b/packages/yoast-components/jest/__mocks__/fileMock.js deleted file mode 100644 index 0a445d0600c..00000000000 --- a/packages/yoast-components/jest/__mocks__/fileMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = "test-file-stub"; diff --git a/packages/yoast-components/jest/__mocks__/styleMock.js b/packages/yoast-components/jest/__mocks__/styleMock.js deleted file mode 100644 index f053ebf7976..00000000000 --- a/packages/yoast-components/jest/__mocks__/styleMock.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/packages/yoast-components/jest/setupTests.js b/packages/yoast-components/jest/setupTests.js deleted file mode 100644 index c2212b57c11..00000000000 --- a/packages/yoast-components/jest/setupTests.js +++ /dev/null @@ -1,2 +0,0 @@ -import "raf/polyfill"; -import "jest-styled-components"; diff --git a/packages/yoast-components/package.json b/packages/yoast-components/package.json deleted file mode 100644 index d663fc3fddf..00000000000 --- a/packages/yoast-components/package.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "name": "yoast-components", - "version": "5.24.1", - "description": "Yoast Generic Components", - "private": true, - "homepage": "https://github.com/Yoast/", - "repository": { - "type": "git", - "url": "https://github.com/Yoast/javascript.git", - "directory": "packages/yoast-components" - }, - "main": "index.js", - "scripts": { - "start": "echo 'The yoast-components demo app has been moved to javascript/apps/components (https://github.com/Yoast/javascript/tree/develop/apps/components). Please run yarn start there.'", - "test": "jest", - "lint": "eslint . --max-warnings=11", - "prepublishOnly": "grunt publish" - }, - "jest": { - "testURL": "http://localhost", - "moduleNameMapper": { - "\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/jest/__mocks__/fileMock.js", - "\\.(css|less)$": "/jest/__mocks__/styleMock.js", - "^lodash-es$": "lodash" - }, - "unmockedModulePathPatterns": [ - "react", - "/node_modules/react", - "/node_modules/react-dom", - "/node_modules/react-addons-test-utils", - "/node_modules/recompose", - "/node_modules/lodash" - ], - "testRegex": ".*Test.js$", - "coverageDirectory": "coverage", - "setupFilesAfterEnv": [ "/jest/setupTests.js" ], - "collectCoverageFrom": [ - "**/*.js", - "!**/*.*Test.js", - "!grunt/**/*.js", - "!*.js", - "!app/**/*.js", - "!a11y/examples/example.js", - "!utils/helpers/*.js", - "!coverage/**/*.js" - ], - "testEnvironment": "jsdom", - "transform": { - "^.+\\.jsx?$": "babel-jest" - }, - "transformIgnorePatterns": [ - "/node_modules/(?!lodash-es).+\\.js$" - ] - }, - "author": "Yoast", - "license": "GPL-3.0", - "dependencies": { - "@wordpress/a11y": "^1.0.7", - "@wordpress/i18n": "^1.1.0", - "@yoast/analysis-report": "^1.21.0", - "@yoast/components": "^2.19.0", - "@yoast/helpers": "^0.16.0", - "@yoast/replacement-variable-editor": "^1.17.0", - "@yoast/search-metadata-previews": "^2.24.1", - "@yoast/style-guide": "^0.13.0", - "clipboard": "^1.5.15", - "interpolate-components": "^1.1.0", - "jed": "^1.1.1", - "lodash": "^4.17.11", - "prop-types": "^15.6.0", - "react-modal": "^3.1.10", - "react-redux": "^5.0.6", - "react-tabs": "^2.2.1", - "react-transition-group": "^2.3.1", - "redux": "^3.7.2", - "styled-components": "^5.3.6", - "whatwg-fetch": "^1.0.0", - "wicked-good-xpath": "^1.3.0" - }, - "devDependencies": { - "@babel/cli": "^7.17.10", - "@babel/core": "^7.17.10", - "@babel/preset-env": "^7.16.11", - "@babel/plugin-transform-react-jsx": "^7.17.3", - "@lodder/grunt-postcss": "^3.1.1", - "@yoast/browserslist-config": "^1.2.3", - "autoprefixer": "^6.4.0", - "babel-jest": "^22.4.3", - "babel-loader": "^7.1.1", - "babel-plugin-styled-components": "^2.0.6", - "babel-plugin-transform-object-rest-spread": "^6.26.0", - "babel-polyfill": "^6.23.0", - "babel-preset-react": "^6.24.1", - "browserslist": "^4.7.3", - "concurrently": "^3.5.0", - "cssnano": "^5.0.14", - "grunt": "^1.4.1", - "grunt-contrib-clean": "^2.0.0", - "grunt-contrib-copy": "^1.0.0", - "load-grunt-config": "^0.19.2", - "material-ui": "^0.18.6", - "postcss": "^8.4.12", - "postcss-import": "^14.0.2", - "raf": "^3.4.0", - "redux-devtools": "^3.4.1", - "redux-devtools-dock-monitor": "^1.1.3", - "redux-devtools-log-monitor": "^1.4.0", - "redux-mock-store": "^1.2.3", - "stubby": "^0.3.1" - }, - "peerDependencies": { - "material-ui": "^0.18.6", - "react": "^16.12.0", - "react-dom": "^16.12.0" - } -} diff --git a/packages/yoast-components/redux/actions/insights.js b/packages/yoast-components/redux/actions/insights.js deleted file mode 100644 index c35d26a221f..00000000000 --- a/packages/yoast-components/redux/actions/insights.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Action types - */ -export const SET_WORDS_FOR_INSIGHTS = "SET_WORDS_FOR_INSIGHTS"; - -/* - * Action creators - */ - -/** - * An action creator for setting the prominent words for insights. - * - * @param {array} wordsForInsights The prominent words to be used for insights. - * - * @returns {Object} A set words for insights action. - */ -export function setWordsForInsights( wordsForInsights ) { - return { - type: SET_WORDS_FOR_INSIGHTS, - wordsForInsights: wordsForInsights, - }; -} diff --git a/packages/yoast-components/redux/actions/linkSuggestions.js b/packages/yoast-components/redux/actions/linkSuggestions.js deleted file mode 100644 index 219ba087101..00000000000 --- a/packages/yoast-components/redux/actions/linkSuggestions.js +++ /dev/null @@ -1,21 +0,0 @@ -const PREFIX = "LINK_SUGGESTIONS_"; - -export const SET_LINK_SUGGESTIONS = `${ PREFIX }SET_LINK_SUGGESTIONS`; - -/* - * Action creators. - */ - -/** - * An action creator for setting the link suggestions. - * - * @param {Array} linkSuggestions The link suggestions for the text. - * - * @returns {Object} A set link suggestions action. - */ -export function setLinkSuggestions( linkSuggestions ) { - return { - type: SET_LINK_SUGGESTIONS, - linkSuggestions, - }; -} diff --git a/packages/yoast-components/redux/actions/tests/insightsTest.js b/packages/yoast-components/redux/actions/tests/insightsTest.js deleted file mode 100644 index 5baef256ec5..00000000000 --- a/packages/yoast-components/redux/actions/tests/insightsTest.js +++ /dev/null @@ -1,15 +0,0 @@ -import { SET_WORDS_FOR_INSIGHTS, setWordsForInsights } from "../insights"; - -describe( "setWordsForInsights action creator", function() { - it( "creates the setWordsForInsights action", function() { - const wordsForInsights = [ "prominent word 1", "prominent word 2", "prominent word 3", - "prominent word 4", "prominent word 5", "prominent word 6" ]; - - const expected = { - type: SET_WORDS_FOR_INSIGHTS, - wordsForInsights: wordsForInsights, - }; - const actual = setWordsForInsights( wordsForInsights ); - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/redux/actions/tests/linkSuggestionsTest.js b/packages/yoast-components/redux/actions/tests/linkSuggestionsTest.js deleted file mode 100644 index 6789381e5d3..00000000000 --- a/packages/yoast-components/redux/actions/tests/linkSuggestionsTest.js +++ /dev/null @@ -1,16 +0,0 @@ -import { setLinkSuggestions } from "../linkSuggestions"; -import { SET_LINK_SUGGESTIONS } from "../linkSuggestions"; - -describe( "Set link suggestions action creator ", () => { - it( "creates the SET_LINK_SUGGESTIONS action", () => { - const linkSuggestions = [ "link suggestion 1", "link suggestion 2" ]; - const expected = { - type: SET_LINK_SUGGESTIONS, - linkSuggestions, - }; - - const actual = setLinkSuggestions( linkSuggestions ); - - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/redux/reducers/index.js b/packages/yoast-components/redux/reducers/index.js deleted file mode 100644 index 75edde2033e..00000000000 --- a/packages/yoast-components/redux/reducers/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import { combineReducers } from "redux"; - -import { insightsReducer } from "./insights"; -import { linkSuggestionsReducer } from "./linkSuggestions"; - -export default combineReducers( { - insights: insightsReducer, - linkSuggestions: linkSuggestionsReducer, -} ); diff --git a/packages/yoast-components/redux/reducers/insights.js b/packages/yoast-components/redux/reducers/insights.js deleted file mode 100644 index d970213d596..00000000000 --- a/packages/yoast-components/redux/reducers/insights.js +++ /dev/null @@ -1,6 +0,0 @@ -import { combineReducers } from "redux"; -import { wordsForInsightsReducer } from "./prominentWords"; - -export const insightsReducer = combineReducers( { - prominentWords: wordsForInsightsReducer, -} ); diff --git a/packages/yoast-components/redux/reducers/linkSuggestions.js b/packages/yoast-components/redux/reducers/linkSuggestions.js deleted file mode 100644 index 2063660d25f..00000000000 --- a/packages/yoast-components/redux/reducers/linkSuggestions.js +++ /dev/null @@ -1,22 +0,0 @@ -import { SET_LINK_SUGGESTIONS } from "../actions/linkSuggestions"; - -const INITIAL_STATE = []; - -/** - * A reducer for the link suggestions object. - * - * @param {Object} state The current state of the object. - * @param {Object} action The current action received. - * - * @returns {Object} The updated link suggestions object. - */ -function linkSuggestionsReducer( state = INITIAL_STATE, action ) { - switch ( action.type ) { - case SET_LINK_SUGGESTIONS: - return action.linkSuggestions; - default: - return state; - } -} - -export default linkSuggestionsReducer; diff --git a/packages/yoast-components/redux/reducers/prominentWords.js b/packages/yoast-components/redux/reducers/prominentWords.js deleted file mode 100644 index 503926941a7..00000000000 --- a/packages/yoast-components/redux/reducers/prominentWords.js +++ /dev/null @@ -1,23 +0,0 @@ -import { SET_WORDS_FOR_INSIGHTS } from "../actions/insights"; - -/** - * Initial state - */ -const INITIAL_STATE = []; - -/** - * A reducer for the prominent words object. - * - * @param {Object} state The current state of the object. - * @param {Object} action The current action received. - * - * @returns {Object} The updated prominent words object. - */ -export function wordsForInsightsReducer( state = INITIAL_STATE, action ) { - switch ( action.type ) { - case SET_WORDS_FOR_INSIGHTS: - return action.wordsForInsights; - default: - return state; - } -} diff --git a/packages/yoast-components/redux/reducers/tests/indexTest.js b/packages/yoast-components/redux/reducers/tests/indexTest.js deleted file mode 100644 index 262953bbfab..00000000000 --- a/packages/yoast-components/redux/reducers/tests/indexTest.js +++ /dev/null @@ -1,31 +0,0 @@ -import { SET_WORDS_FOR_INSIGHTS } from "../../actions/insights"; -import rootReducer from "../index"; - -jest.mock( "../insights", () => { - return { - insightsReducer: jest.fn( () => { - return { name: "insightsReducer" }; - } ), - }; -} ); - -jest.mock( "../linkSuggestions", () => { - return { - linkSuggestionsReducer: jest.fn( () => { - return { name: "linkSuggestionsReducer" }; - } ), - }; -} ); - -describe( "rootReducer with a SET_PROMINENT_WORDS action ", () => { - it( "returns the correct reducers", () => { - const state = {}; - const action = { - type: SET_WORDS_FOR_INSIGHTS, - }; - const expected = { insights: { name: "insightsReducer" }, linkSuggestions: { name: "linkSuggestionsReducer" } }; - - const actual = rootReducer( state, action ); - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/redux/reducers/tests/insightsTest.js b/packages/yoast-components/redux/reducers/tests/insightsTest.js deleted file mode 100644 index a92febc3554..00000000000 --- a/packages/yoast-components/redux/reducers/tests/insightsTest.js +++ /dev/null @@ -1,23 +0,0 @@ -import { SET_WORDS_FOR_INSIGHTS } from "../../actions/insights"; -import { insightsReducer } from "../insights"; - -jest.mock( "../prominentWords", () => { - return { - wordsForInsightsReducer: jest.fn( () => { - return { name: "wordsForInsightsReducer" }; - } ), - }; -} ); - -describe( "insightsReducer with a SET_WORDS_FOR_INSIGHTS action ", () => { - it( "returns the correct reducers", () => { - const state = {}; - const action = { - type: SET_WORDS_FOR_INSIGHTS, - }; - const expected = { prominentWords: { name: "wordsForInsightsReducer" } }; - - const actual = insightsReducer( state, action ); - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/redux/reducers/tests/linkSuggestionsTest.js b/packages/yoast-components/redux/reducers/tests/linkSuggestionsTest.js deleted file mode 100644 index 3d117d674ec..00000000000 --- a/packages/yoast-components/redux/reducers/tests/linkSuggestionsTest.js +++ /dev/null @@ -1,59 +0,0 @@ -import linkSuggestionsReducer from "../linkSuggestions"; -import { SET_LINK_SUGGESTIONS } from "../../actions/linkSuggestions"; - -describe( "SET_LINK_SUGGESTIONS action", () => { - it( "Sets a default state if the state is undefined", () => { - // eslint-disable-next-line no-undefined - const state = undefined; - const action = { - type: SET_LINK_SUGGESTIONS, - linkSuggestions: [ "linkSuggestion1", "linkSuggestion2" ], - }; - - const expected = [ "linkSuggestion1", "linkSuggestion2" ]; - - const actual = linkSuggestionsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "sets the linking suggestions in an empty state", () => { - const state = []; - const action = { - type: SET_LINK_SUGGESTIONS, - linkSuggestions: [ "linkSuggestion1", "linkSuggestion2" ], - }; - const expected = [ "linkSuggestion1", "linkSuggestion2" ]; - - const actual = linkSuggestionsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites a non-empty state ", () => { - const state = [ "oldSuggestion", "oldSuggestion2" ]; - const action = { - type: SET_LINK_SUGGESTIONS, - linkSuggestions: [ "linkSuggestion1", "linkSuggestion2" ], - }; - const expected = [ "linkSuggestion1", "linkSuggestion2" ]; - - const actual = linkSuggestionsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "Faulty action ", () => { - it( "Doesn't change the state when a faulty action is passed to the reducer", () => { - const state = []; - const action = { - type: "FAULTY", - }; - const expected = state; - - const actual = linkSuggestionsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/redux/reducers/tests/prominentWordsTest.js b/packages/yoast-components/redux/reducers/tests/prominentWordsTest.js deleted file mode 100644 index 1443c030758..00000000000 --- a/packages/yoast-components/redux/reducers/tests/prominentWordsTest.js +++ /dev/null @@ -1,57 +0,0 @@ -import { SET_WORDS_FOR_INSIGHTS } from "../../actions/insights"; -import { wordsForInsightsReducer } from "../prominentWords"; - -describe( "prominentWordsReducer with the SET_PROMINENT_WORDS action", () => { - it( "sets the prominent words in an empty state", () => { - const state = []; - const action = { - type: SET_WORDS_FOR_INSIGHTS, - wordsForInsights: [ "prominent word 1", "prominent word 2", "prominent word 3", "prominent word 4", "prominent word 5" ], - }; - const expected = [ "prominent word 1", "prominent word 2", "prominent word 3", "prominent word 4", "prominent word 5" ]; - - const actual = wordsForInsightsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "overwrites a non-empty state ", () => { - const state = [ "old prominent word 1", "old prominent word 2" ]; - const action = { - type: SET_WORDS_FOR_INSIGHTS, - wordsForInsights: [ "prominent word 1", "prominent word 2", "prominent word 3", "prominent word 4" ], - }; - const expected = [ "prominent word 1", "prominent word 2", "prominent word 3", "prominent word 4" ]; - - const actual = wordsForInsightsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); - - it( "uses the default state when an undefined state is passed", () => { - const action = { - type: SET_WORDS_FOR_INSIGHTS, - wordsForInsights: [ "prominent word 1", "prominent word 2", "prominent word 3", "prominent word 4", "prominent word 5" ], - }; - const expected = [ "prominent word 1", "prominent word 2", "prominent word 3", "prominent word 4", "prominent word 5" ]; - - // eslint-disable-next-line no-undefined - const actual = wordsForInsightsReducer( undefined, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); - -describe( "prominentWordsReducer with a non-existing action ", () => { - it( "doesn't change the state when a non-existing action is passed to the reducer", () => { - const state = [ "prominent word 1", "prominent word 2" ]; - const action = { - type: "NON_EXISTING_ACTION", - }; - const expected = state; - - const actual = wordsForInsightsReducer( state, action ); - - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/packages/yoast-components/renovate.json b/packages/yoast-components/renovate.json deleted file mode 100644 index c1ae388ddb6..00000000000 --- a/packages/yoast-components/renovate.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": [ - "config:base" - ], - "pinVersions": false, - "dependencies": { - "pinVersions": false - }, - "timezone": "Europe/Amsterdam", - "schedule": ["after 10pm and before 5am on every weekday", "every weekend"], - "updateNotScheduled": false -} diff --git a/packages/yoast-components/style-guide/index.js b/packages/yoast-components/style-guide/index.js deleted file mode 100644 index 6d617343d54..00000000000 --- a/packages/yoast-components/style-guide/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { - colors, - breakpoints, - rgba, -} from "@yoast/style-guide"; diff --git a/packages/yoast-components/utils/buildStructuredUrl.js b/packages/yoast-components/utils/buildStructuredUrl.js deleted file mode 100644 index 4f6fdd2a33f..00000000000 --- a/packages/yoast-components/utils/buildStructuredUrl.js +++ /dev/null @@ -1,44 +0,0 @@ -/* External dependencies */ -import { isArray } from "lodash"; - -/** - * Builds a URL based on a string that has variables surrounded by % characters, like so: - * - * https://www.example.com/%category%/%postname%/ - * - * The variables should correspond to a key in the urlParts object. The urlParts - * key values can be either a string or an array. In case of an array, the parts - * will be joined together using a slash. The variable is then replaced by the - * url part's content. Example: - * - * urlParts: { category: [ "transportation", "flying" ], postname: "the-cost-of-flying" } - * urlStructure = "https://www.example.com/%category%/%postname%"/ - * - * Outputs: https://www.example.com/transportation/flying/the-cost-of-flying - * - * @param {string} urlStructure The URL structure. - * @param {object} urlParts The URL parts. - * - * @returns {string} The structured URL. - */ -export default function buildStructuredUrl( urlStructure, urlParts = {} ) { - // Get the URL parts keys. - const partIds = Object.keys( urlParts ); - - let url = urlStructure; - - partIds.forEach( partId => { - const part = urlParts[ partId ]; - - // Get the replacement string: if it's an array, join the values with a slash. - const replacement = isArray( part ) ? part.join( "/" ) : part; - - // Build a string representing the URL structure variable to be replaced. - const variable = `%${ partId }%`; - - // Replace the URL structure variable with the replacement string. - url = url.replace( new RegExp( variable, "g" ), replacement ); - } ); - - return url; -} diff --git a/packages/yoast-components/utils/i18n.js b/packages/yoast-components/utils/i18n.js deleted file mode 100644 index 98b90768b73..00000000000 --- a/packages/yoast-components/utils/i18n.js +++ /dev/null @@ -1,94 +0,0 @@ -import Jed from "jed"; -import React from "react"; -import assign from "lodash/assign"; - -var jed = null; - -/** - * Creates a new Jed object that just passes the en originals. - * - * @returns {Jed} The new Jed object. - */ -function createJed() { - return new Jed( {} ); -} - -/** - * Sets the translations of the global Jed object to the passed translations. - * - * @param {Object} translations The translations to set on the Jed object. - * @returns {void} - */ -export function setTranslations( translations ) { - jed = new Jed( translations ); -} - -/** - * Retrieves the global Jed object. - * - * @returns {Jed} The global Jed object. Will be created if it doesn't exist. - */ -export function getGlobalJed() { - if ( jed === null ) { - jed = createJed(); - } - - return jed; -} - -/** - * Translates a string based on the global Jed object. - * - * @param {string} singleForm The single form to translate. - * @param {string} pluralForm The plural form to translate. - * @param {number} number The number on which to base the single/plural form. - * @returns {string} The translated string. - */ -export function translate( singleForm, pluralForm = "", number = 0 ) { - const localJed = getGlobalJed(); - - if ( pluralForm === "" ) { - return localJed.gettext( singleForm ); - } - - return localJed.ngettext( singleForm, pluralForm, number ); -} - -/** - * A higher order component to add a translate function. - * - * @param {Object} ComposedComponent The original React component. - * @returns {React.Component} The new localized component. - */ -export function localize( ComposedComponent ) { - const componentName = ComposedComponent.displayName || ComposedComponent.name || ""; - const i18nProps = { - translate: translate, - }; - - /** - * The LocalizedComponent Class. - */ - class LocalizedComponent extends React.Component { - /** - * Constructs the LocalizedComponent. - * - * @param {Object} props The props for this localized component. - */ - constructor( props ) { - super( props ); - this.displayName = "Localized" + componentName; - } - - /** - * Renders the LocalizedComponent. - * - * @returns {ReactElement} The ComposedComponent. - */ - render() { - const props = assign( {}, this.props, i18nProps ); - return ; - } - } - return LocalizedComponent; -} diff --git a/packages/yoast-components/utils/index.js b/packages/yoast-components/utils/index.js deleted file mode 100644 index c57f0d72c4c..00000000000 --- a/packages/yoast-components/utils/index.js +++ /dev/null @@ -1,11 +0,0 @@ -import { makeOutboundLink, getCourseFeed, getPostFeed, getFeed } from "@yoast/helpers"; -import buildStructuredUrl from "./buildStructuredUrl"; - - -export default { - getFeed, - getCourseFeed, - getPostFeed, - makeOutboundLink, - buildStructuredUrl, -}; diff --git a/packages/yoast-components/utils/reactUtils.js b/packages/yoast-components/utils/reactUtils.js deleted file mode 100644 index b36affe4817..00000000000 --- a/packages/yoast-components/utils/reactUtils.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Determines the child count based on the children prop. - * - * @param {ReactElement|ReactElement[]} children Component children prop. - * - * @returns {number} Number of children - */ -export function getChildrenCount( children ) { - let count = 0; - if ( children ) { - if ( isNaN( children.length ) ) { - count = 1; - } else { - count = children.length; - } - } - return count; -} diff --git a/packages/yoast-components/utils/tests/buildStructuredUrlTest.js b/packages/yoast-components/utils/tests/buildStructuredUrlTest.js deleted file mode 100644 index ded6f9772ea..00000000000 --- a/packages/yoast-components/utils/tests/buildStructuredUrlTest.js +++ /dev/null @@ -1,30 +0,0 @@ -import buildStructuredUrl from "../buildStructuredUrl"; - -describe( "buildStructuredUrl", () => { - it( "correctly replaces multiple URL parts", () => { - const expected = "https://www.example.com/transportation/flying/the-cost-of-flying/"; - - const actual = buildStructuredUrl( - "https://www.example.com/%category%/%postname%/", - { - category: [ "transportation", "flying" ], - postname: "the-cost-of-flying", - } - ); - - expect( actual ).toEqual( expected ); - } ); - - it( "replaces variables that are present in the urlStructure multiple times", () => { - const expected = "https://www.example.com/transportation/flying/transportation/flying/"; - - const actual = buildStructuredUrl( - "https://www.example.com/%category%/%category%/", - { - category: [ "transportation", "flying" ], - } - ); - - expect( actual ).toEqual( expected ); - } ); -} ); diff --git a/yarn.lock b/yarn.lock index 046f370cc78..2c2f06417fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3353,15 +3353,6 @@ npmlog "^6.0.2" write-file-atomic "^4.0.1" -"@lodder/grunt-postcss@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@lodder/grunt-postcss/-/grunt-postcss-3.1.1.tgz#68d658c25fc97f2ad1306a4f33c02dd622c9733b" - integrity sha512-dgkDAUgjtCCCk7jsIBkDMhcL78y2reQ9YxqBpVJGa/0tX1Eus7GRWEn0QWqfFiHqqc3yrMQN+GtH8PUIZOBmDQ== - dependencies: - diff "^5.0.0" - maxmin "^3.0.0" - picocolors "^1.0.0" - "@mdx-js/react@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.1.5.tgz#8225a867dae6f845ae5b0ec15bb454c23be3f576" @@ -5686,7 +5677,7 @@ resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== -"@types/prop-types@*", "@types/prop-types@^15.7.3": +"@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== @@ -8486,7 +8477,7 @@ arg@^5.0.2: resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.2, argparse@^1.0.7: +argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -8527,19 +8518,12 @@ aria-query@^5.0.0, aria-query@^5.3.0: dependencies: dequal "^2.0.3" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -8671,11 +8655,6 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -8927,16 +8906,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - -async@>=0.2.7: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== - async@^1.5.2, async@~1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -8949,13 +8918,6 @@ async@^2.0.0, async@^2.6.0: dependencies: lodash "^4.17.11" -async@^2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -9012,18 +8974,6 @@ autoprefixer@^10.4.16: picocolors "^1.0.0" postcss-value-parser "^4.2.0" -autoprefixer@^6.4.0: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - autoprefixer@^9.7.2: version "9.8.8" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" @@ -9124,15 +9074,6 @@ b4a@^1.6.4: resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" @@ -9150,20 +9091,6 @@ babel-eslint@^10.0.1: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" -babel-generator@^6.18.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - babel-helper-builder-react-jsx@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" @@ -9173,14 +9100,6 @@ babel-helper-builder-react-jsx@^6.24.1: babel-types "^6.26.0" esutils "^2.0.2" -babel-jest@^22.4.3: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.4.tgz#977259240420e227444ebe49e226a61e49ea659d" - integrity sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ== - dependencies: - babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.4.4" - babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -9222,15 +9141,6 @@ babel-jest@^29.6.2, babel-jest@^29.7.0: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^7.1.1: - version "7.1.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" - integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - babel-loader@^8.2.3: version "8.3.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" @@ -9249,13 +9159,6 @@ babel-loader@^9.0.0, babel-loader@^9.1.3: find-cache-dir "^4.0.0" schema-utils "^4.0.0" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-add-react-displayname@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" @@ -9277,16 +9180,6 @@ babel-plugin-emotion@^10.0.27: find-root "^1.1.0" source-map "^0.5.7" -babel-plugin-istanbul@^4.1.5: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -9309,11 +9202,6 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b" - integrity sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ== - babel-plugin-jest-hoist@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" @@ -9434,7 +9322,7 @@ babel-plugin-syntax-jsx@^6.18.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-s resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= -babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: +babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= @@ -9487,7 +9375,7 @@ babel-plugin-transform-react-jsx@^6.24.1: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-polyfill@^6.23.0, babel-polyfill@^6.26.0: +babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= @@ -9521,14 +9409,6 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-jest@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz#ec9fbd8bcd7dfd24b8b5320e0e688013235b7c39" - integrity sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA== - dependencies: - babel-plugin-jest-hoist "^22.4.4" - babel-plugin-syntax-object-rest-spread "^6.13.0" - babel-preset-jest@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" @@ -9565,7 +9445,7 @@ babel-preset-react@^6.24.1: babel-plugin-transform-react-jsx-source "^6.22.0" babel-preset-flow "^6.23.0" -babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.6.1: +babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -9573,33 +9453,7 @@ babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runti core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.18.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - 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" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.18.0, babel-types@^6.26.0: +babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= @@ -9609,11 +9463,6 @@ babel-types@^6.18.0, babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -9624,11 +9473,6 @@ balanced-match@^2.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== -base16@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" - integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= - base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -9826,11 +9670,6 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -bowser@^1.7.3: - version "1.9.4" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" - integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== - bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -9858,15 +9697,6 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -9912,14 +9742,6 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.7.3: version "4.16.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" @@ -10258,11 +10080,6 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30001204" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001204.tgz#95959fa4ebf08c871eff3274518e382cd0f8a223" - integrity sha512-Q4X8pJp5li4mEiNmQMamOFrWbFB29anrWNe9U9/Qcuh7nseuH4D8XNIq7rHy/dt264SuoVOX+36qRMyhTvGnHQ== - caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001349: version "1.0.30001538" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz" @@ -10319,12 +10136,7 @@ caw@^2.0.0, caw@^2.0.1: tunnel-agent "^0.6.0" url-to-options "^1.0.1" -chain-function@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz#c63045e5b4b663fb86f1c6e186adaf1de402a1cc" - integrity sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg== - -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -10402,11 +10214,6 @@ change-case@^4.1.2: snake-case "^3.0.4" tslib "^2.0.3" -change-emitter@^0.1.2: - version "0.1.6" - resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" - integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -10668,15 +10475,6 @@ client-only@^0.0.1: resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -clipboard@^1.5.15: - version "1.7.1" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b" - integrity sha1-Ng1taUbpmnof7zleQrqStem1oWs= - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - clipboard@^2.0.1: version "2.0.11" resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5" @@ -10754,11 +10552,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -cloneextend@>=0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/cloneextend/-/cloneextend-0.0.3.tgz#df0629ca4845316afd884cf1b61a0cdf4b129f79" - integrity sha1-3wYpykhFMWr9iEzxthoM30sSn3k= - clsx@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" @@ -10790,7 +10583,7 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -coffee-script@^1.10.0, coffee-script@^1.11.1, coffee-script@^1.9.0: +coffee-script@^1.10.0, coffee-script@^1.11.1: version "1.12.7" resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== @@ -10881,7 +10674,7 @@ colorette@^2.0.10, colorette@^2.0.14: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -colors@1.4.0, colors@>=0.6.0: +colors@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -10911,11 +10704,6 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" - integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= - commander@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -11059,21 +10847,6 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -concurrently@^3.5.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.6.1.tgz#2f95baec5c4051294dfbb55b57a3b98a3e2b45ec" - integrity sha512-/+ugz+gwFSEfTGUxn0KHkY+19XPRTXR8+7oUK/HxgiN1n7FjeJmkrbSiXAJfyQ0zORgJYPaenmymwon51YXH9Q== - dependencies: - chalk "^2.4.1" - commander "2.6.0" - date-fns "^1.23.0" - lodash "^4.5.1" - read-pkg "^3.0.0" - rx "2.3.24" - spawn-command "^0.0.2-1" - supports-color "^3.2.3" - tree-kill "^1.1.0" - config-chain@^1.1.11, config-chain@^1.1.12: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" @@ -11505,24 +11278,13 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -cson-parser@^1.0.6, cson-parser@^1.1.0, cson-parser@^1.3.4: +cson-parser@^1.1.0, cson-parser@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/cson-parser/-/cson-parser-1.3.5.tgz#7ec675e039145533bf2a6a856073f1599d9c2d24" integrity sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ= dependencies: coffee-script "^1.10.0" -cson@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/cson/-/cson-3.0.2.tgz#83ee9089db3c254bec1e98e498d9aacf11adcc54" - integrity sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ= - dependencies: - coffee-script "^1.9.0" - cson-parser "^1.0.6" - extract-opts "^3.0.1" - requirefresh "^2.0.0" - safefs "^4.0.0" - cson@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cson/-/cson-4.0.0.tgz#61fe6d6e2e5653f6be5013dede74afe462586a52" @@ -11577,14 +11339,6 @@ css-functions-list@^3.1.0: resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.1.tgz#2eb205d8ce9f9ce74c5c1d7490b66b77c45ce3ea" integrity sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ== -css-in-js-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" - integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== - dependencies: - hyphenate-style-name "^1.0.2" - isobject "^3.0.1" - css-loader@^6.10.0, css-loader@^6.7.1: version "6.10.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" @@ -11870,41 +11624,6 @@ cssnano-preset-default@^5.1.12: postcss-svgo "^5.0.4" postcss-unique-selectors "^5.0.4" -cssnano-preset-default@^5.2.1: - version "5.2.5" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz#267ded811a3e1664d78707f5355fcd89feeb38ac" - integrity sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ== - dependencies: - css-declaration-sorter "^6.0.3" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.0" - postcss-discard-comments "^5.1.1" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.3" - postcss-merge-rules "^5.1.1" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.2" - postcss-minify-selectors "^5.2.0" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.0" - postcss-normalize-repeat-style "^5.1.0" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.0" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.1" - postcss-reduce-initial "^5.1.0" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - cssnano-preset-default@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" @@ -12003,11 +11722,6 @@ cssnano-utils@^3.0.2: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.0.2.tgz#d82b4991a27ba6fec644b39bab35fe027137f516" integrity sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ== -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - cssnano-utils@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" @@ -12028,15 +11742,6 @@ cssnano@^4.1.10: is-resolvable "^1.0.0" postcss "^7.0.0" -cssnano@^5.0.14: - version "5.1.1" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.1.tgz#2df44d26461b95f699096b6830df5107b1a758f4" - integrity sha512-WWfN7jBK/3Uk3oX/jsFbQApDf9DkXj6dOYull5ZaSGskcDggzg3RyDZI4GKKO+00LdfLMEZtY1cwTQUL+YMg2Q== - dependencies: - cssnano-preset-default "^5.2.1" - lilconfig "^2.0.3" - yaml "^1.10.2" - cssnano@^5.0.17: version "5.0.17" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.17.tgz#ff45713c05cfc780a1aeb3e663b6f224d091cabf" @@ -12207,11 +11912,6 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^1.23.0: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - date-fns@^2.19.0: version "2.28.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" @@ -12241,7 +11941,7 @@ dateformat@~4.6.2: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -12635,13 +12335,6 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -12848,7 +12541,7 @@ dom-converter@^0.2.0: dependencies: utila "~0.4" -dom-helpers@^3.2.0, dom-helpers@^3.3.1, dom-helpers@^3.4.0: +dom-helpers@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== @@ -13156,13 +12849,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@>=0.8.4: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== - dependencies: - jake "^10.6.1" - ejs@^3.1.7: version "3.1.8" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" @@ -13177,7 +12863,7 @@ ejs@^3.1.8: dependencies: jake "^10.8.5" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.649: +electron-to-chromium@^1.3.649: version "1.3.698" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz#5de813960f23581a268718a0058683dffa15d221" integrity sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ== @@ -14336,11 +14022,6 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -14536,13 +14217,6 @@ exit@^0.1.2, exit@~0.1.1, exit@~0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -14556,13 +14230,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" @@ -14694,13 +14361,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -14715,7 +14375,7 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-opts@^3.0.1, extract-opts@^3.3.1: +extract-opts@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/extract-opts/-/extract-opts-3.4.0.tgz#ab07a7873896a1a7e350f27e2d52645c2ceba9ac" integrity sha512-M7Y+1cJDkzOWqvGH5F/V2qgkD6+uitW3NV9rQGl+pLSVuXZ4IDDQgxxMeLPKcWUyfypBWczIILiroSuhXG7Ytg== @@ -14901,7 +14561,7 @@ fbjs-css-vars@^1.0.0: resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== -fbjs@^0.8.1, fbjs@^0.8.4: +fbjs@^0.8.4: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" integrity sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s= @@ -14940,7 +14600,7 @@ fetch-retry@^5.0.2: resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== -figures@3.2.0, figures@^3.0.0, figures@^3.2.0: +figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -15026,11 +14686,6 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - filename-reserved-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" @@ -15054,17 +14709,6 @@ filenamify@^4.2.0: strip-outer "^1.0.1" trim-repeated "^1.0.0" -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -15095,15 +14739,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -15361,7 +14996,7 @@ for-in@^1.0.1, for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.3, for-own@^0.1.4: +for-own@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= @@ -15977,21 +15612,6 @@ github-slugger@^1.0.0: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -16082,7 +15702,7 @@ glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" -glob@~5.0.0, glob@~5.0.15: +glob@~5.0.0: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= @@ -16167,11 +15787,6 @@ globals@^13.12.0, globals@^13.19.0: dependencies: type-fest "^0.20.2" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -16354,7 +15969,7 @@ grunt-cli@~1.3.2: nopt "~4.0.1" v8flags "~3.1.1" -grunt-cli@~1.4.2, grunt-cli@~1.4.3: +grunt-cli@~1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.4.3.tgz#22c9f1a3d2780bf9b0d206e832e40f8f499175ff" integrity sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ== @@ -16365,14 +15980,6 @@ grunt-cli@~1.4.2, grunt-cli@~1.4.3: nopt "~4.0.1" v8flags "~3.2.0" -grunt-contrib-clean@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz#3be7ca480da4b740aa5e9d863e2f7e8b24f8a68b" - integrity sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw== - dependencies: - async "^2.6.1" - rimraf "^2.6.2" - grunt-contrib-clean@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz#6b2ed94117e2c7ffe32ee04578c96fe4625a9b6d" @@ -16612,27 +16219,6 @@ grunt@^1.0.3, grunt@^1.1: nopt "~3.0.6" rimraf "~3.0.2" -grunt@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.4.1.tgz#7d1e17db1f9c8108777f7273d6b9359755576f50" - integrity sha512-ZXIYXTsAVrA7sM+jZxjQdrBOAg7DyMUplOMhTaspMRExei+fD0BTwdWXnn0W5SXqhb/Q/nlkzXclSi3IH55PIA== - dependencies: - dateformat "~3.0.3" - eventemitter2 "~0.4.13" - exit "~0.1.2" - findup-sync "~0.3.0" - glob "~7.1.6" - grunt-cli "~1.4.2" - grunt-known-options "~2.0.0" - grunt-legacy-log "~3.0.0" - grunt-legacy-util "~2.0.1" - iconv-lite "~0.4.13" - js-yaml "~3.14.0" - minimatch "~3.0.4" - mkdirp "~1.0.4" - nopt "~3.0.6" - rimraf "~3.0.2" - grunt@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.6.1.tgz#0b4dd1524f26676dcf45d8f636b8d9061a8ede16" @@ -16671,14 +16257,6 @@ gzip-size@^3.0.0: dependencies: duplexer "^0.1.1" -gzip-size@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -16743,11 +16321,6 @@ has-color@~0.1.0: resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -16922,11 +16495,6 @@ history@^5.2.0: dependencies: "@babel/runtime" "^7.7.6" -hoist-non-react-statics@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs= - hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.2.1, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -17298,11 +16866,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -hyphenate-style-name@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -17518,11 +17081,6 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherit@^2.2.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/inherit/-/inherit-2.2.7.tgz#4e238e289bc7adddf8ff5053d0f26a2fcda94b9f" - integrity sha512-dxJmC1j0Q32NFAjvbd6g3lXYLZ49HgzotgbSMwMkoiTXGhC9412Oc24g7A7M9cPPkw/vDsF2cSII+2zJwocUtQ== - inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -17556,14 +17114,6 @@ init-package-json@^3.0.2: validate-npm-package-license "^3.0.4" validate-npm-package-name "^4.0.0" -inline-style-prefixer@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz#8551b8e5b4d573244e66a34b04f7d32076a2b534" - integrity sha1-hVG45bTVcyROZqNLBPfTIHaitTQ= - dependencies: - bowser "^1.7.3" - css-in-js-utils "^2.0.0" - inquirer@^0.11.0: version "0.11.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.11.4.tgz#81e3374e8361beaff2d97016206d359d0b32fa4d" @@ -17713,7 +17263,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.1.1, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.1.1, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -17998,18 +17548,6 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -18022,11 +17560,6 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -18080,13 +17613,6 @@ is-gif@^3.0.0: dependencies: file-type "^10.4.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -18173,13 +17699,6 @@ is-number-object@^1.0.4: resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -18187,11 +17706,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -18263,21 +17777,11 @@ is-png@^1.0.0: resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce" integrity sha1-1XSxK/J1wDUEVVcLDltXqwYgd84= -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -18535,11 +18039,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -18550,19 +18049,6 @@ istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^1.10.1: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - istanbul-lib-instrument@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" @@ -18629,11 +18115,6 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -isutf8@>=1.0.11: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isutf8/-/isutf8-3.1.1.tgz#3f2ac77f49affb23ae54813da1a4ab44aadf1d7b" - integrity sha512-5P2FgGyDsSnRMaLPVGVIgYgMxj50lBujvi5lsVgP1qvMWhxvkmVBWtPcIKgXw9j+/RnmxSvHg3e9tbDnPxx6dw== - iterator.prototype@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" @@ -18654,16 +18135,6 @@ jackspeak@^2.3.5: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - dependencies: - async "0.9.x" - chalk "^2.4.2" - filelist "^1.0.1" - minimatch "^3.0.4" - jake@^10.8.5: version "10.8.5" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" @@ -19594,11 +19065,6 @@ jpegtran-bin@^4.0.0: bin-wrapper "^4.0.0" logalot "^2.0.0" -js-base64@^2.1.9: - version "2.6.4" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" - integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== - js-library-detector@^6.6.0: version "6.7.0" resolved "https://registry.yarnpkg.com/js-library-detector/-/js-library-detector-6.7.0.tgz#5075c71fcf835b71133bca13363b91509a39235a" @@ -19614,11 +19080,6 @@ js-sha256@^0.9.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -19626,13 +19087,6 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@>=1.0.1: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== - dependencies: - argparse "^2.0.1" - js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.3.0, js-yaml@^3.6.0, js-yaml@~3.14.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -19649,15 +19103,6 @@ js-yaml@~3.12.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@~3.4.3: - version "3.4.6" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.4.6.tgz#6be1b23f6249f53d293370fd4d1aaa63ce1b4eb0" - integrity sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA= - dependencies: - argparse "^1.0.2" - esprima "^2.6.0" - inherit "^2.2.2" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -19759,11 +19204,6 @@ jsdom@^20.0.0: ws "^8.11.0" xml-name-validator "^4.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -19944,11 +19384,6 @@ just-diff@^5.0.1: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== -keycode@^2.1.8: - version "2.2.0" - resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" - integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ= - keyv@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" @@ -20266,18 +19701,6 @@ livereload-js@^2.3.0: resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== -load-grunt-config@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/load-grunt-config/-/load-grunt-config-0.19.2.tgz#52090d4a20c6e63f74a7648f249b19e7b7fcec24" - integrity sha1-UgkNSiDG5j90p2SPJJsZ57f87CQ= - dependencies: - cson "~3.0.2" - glob "~5.0.15" - jit-grunt "~0.10.0" - js-yaml "~3.4.3" - load-grunt-tasks "~3.3.0" - lodash "~3.10.1" - load-grunt-config@^1.0.0, load-grunt-config@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/load-grunt-config/-/load-grunt-config-1.0.2.tgz#60cd74364696b1a7c703dd350c39231896a7fb98" @@ -20290,15 +19713,6 @@ load-grunt-config@^1.0.0, load-grunt-config@^1.0.1: load-grunt-tasks "~3.5.2" lodash "~4.17.11" -load-grunt-tasks@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-3.3.0.tgz#be5892909458d93ddf769eb4bc685102080c6321" - integrity sha1-vliSkJRY2T3fdp60vGhRAggMYyE= - dependencies: - arrify "^1.0.0" - multimatch "^2.0.0" - pkg-up "^1.0.0" - load-grunt-tasks@~3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz#0728561180fd20ff8a6927505852fc58aaea0c88" @@ -20345,15 +19759,6 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - loader-utils@^1.1.0: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" @@ -20428,12 +19833,7 @@ lodash-es@^4.2.1: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" integrity sha1-3MHXVS4VCgZABzupyzHXDwMpUOc= -lodash.curry@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" - integrity sha1-JI42By7ekGUB11lmIAqG2riyMXA= - -lodash.debounce@^4.0.4, lodash.debounce@^4.0.8: +lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= @@ -20453,11 +19853,6 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.flow@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" - integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= - lodash.invokemap@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62" @@ -20473,17 +19868,12 @@ lodash.ismatch@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.merge@^4.6.0, lodash.merge@^4.6.2: +lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== @@ -20498,11 +19888,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= - lodash.topath@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" @@ -20523,12 +19908,12 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@^3.10.0, lodash@^3.10.1, lodash@^3.3.1, lodash@~3.10.1: +lodash@^3.10.0, lodash@^3.10.1, lodash@^3.3.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.1.1, lodash@^4.11.0, lodash@^4.14.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.5.1, lodash@^4.7.0, lodash@^4.8.0, lodash@~4.17.10, lodash@~4.17.11, lodash@~4.17.19, lodash@~4.17.20, lodash@~4.17.21: +lodash@^4.1.1, lodash@^4.11.0, lodash@^4.14.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.7.0, lodash@^4.8.0, lodash@~4.17.10, lodash@~4.17.11, lodash@~4.17.19, lodash@~4.17.20, lodash@~4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -20816,28 +20201,6 @@ marky@^1.2.2: resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== -material-ui@^0.18.6: - version "0.18.7" - resolved "https://registry.yarnpkg.com/material-ui/-/material-ui-0.18.7.tgz#b87af16357e6966b36c23d489eb2ed70746d25f8" - integrity sha1-uHrxY1fmlms2wj1InrLtcHRtJfg= - dependencies: - babel-runtime "^6.23.0" - inline-style-prefixer "^3.0.2" - keycode "^2.1.8" - lodash.merge "^4.6.0" - lodash.throttle "^4.1.1" - prop-types "^15.5.7" - react-event-listener "^0.4.5" - react-transition-group "^1.1.2" - recompose "0.24.0" - simple-assign "^0.1.0" - warning "^3.0.0" - -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" @@ -20853,16 +20216,6 @@ maxmin@^2.1.0: gzip-size "^3.0.0" pretty-bytes "^3.0.0" -maxmin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-3.0.0.tgz#3ee9acc8a2b9f2b5416e94f5705319df8a9c71e6" - integrity sha512-wcahMInmGtg/7c6a75fr21Ch/Ks1Tb+Jtoan5Ft4bAI0ZvJqyOw8kkM7e7p8hDSzY805vmxwHT50KcjGwKyJ0g== - dependencies: - chalk "^4.1.0" - figures "^3.2.0" - gzip-size "^5.1.1" - pretty-bytes "^5.3.0" - mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" @@ -21024,25 +20377,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -21122,7 +20456,7 @@ mime-types@^2.1.27: dependencies: mime-db "1.51.0" -mime@1.6.0, mime@^1.2.9: +mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -21250,11 +20584,6 @@ minimist@^1.2.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -21523,11 +20852,6 @@ nanoclone@^0.2.1: resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== - nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -21739,15 +21063,6 @@ node-releases@^2.0.2, node-releases@^2.0.5: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== -node-static@>=0.6.4: - version "0.7.11" - resolved "https://registry.yarnpkg.com/node-static/-/node-static-0.7.11.tgz#60120d349f3cef533e4e820670057eb631882e7f" - integrity sha512-zfWC/gICcqb74D9ndyvxZWaI1jzcoHmf4UTHWQchBNuNMxdBLJMDiUgZ1tjGLEIe/BMhj2DxKD8HOuc2062pDQ== - dependencies: - colors ">=0.6.0" - mime "^1.2.9" - optimist ">=0.3.4" - node-wp-i18n@^1.2.2: version "1.2.5" resolved "https://registry.yarnpkg.com/node-wp-i18n/-/node-wp-i18n-1.2.5.tgz#40d79cea7d78f91bb4addb0208d96c9cb6ead053" @@ -21825,7 +21140,7 @@ normalize-package-data@^4.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -22349,14 +21664,6 @@ object.map@^1.0.0, object.map@^1.0.1: for-own "^1.0.0" make-iterator "^1.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -22494,14 +21801,6 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -optimist@>=0.3.4: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -22875,16 +22174,6 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -22910,11 +22199,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-key@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/parse-key/-/parse-key-0.2.1.tgz#7bcf76595536e36075664be4d687e4bdd910208f" - integrity sha1-e892WVU242B1Zkvk1ofkvdkQII8= - parse-ms@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" @@ -23209,13 +22493,6 @@ pkg-dir@4.2.0, pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -23314,7 +22591,7 @@ postcss-calc@^7.0.1: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-calc@^8.2.0, postcss-calc@^8.2.3: +postcss-calc@^8.2.0: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== @@ -23369,16 +22646,6 @@ postcss-colormin@^5.2.5: colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-colormin@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" - integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - postcss-colormin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" @@ -23414,13 +22681,6 @@ postcss-convert-values@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-convert-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" - integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== - dependencies: - postcss-value-parser "^4.2.0" - postcss-convert-values@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" @@ -23449,11 +22709,6 @@ postcss-discard-comments@^5.0.3: resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz#011acb63418d600fdbe18804e1bbecb543ad2f87" integrity sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q== -postcss-discard-comments@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" - integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== - postcss-discard-comments@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" @@ -23476,11 +22731,6 @@ postcss-discard-duplicates@^5.0.3: resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz#10f202a4cfe9d407b73dfea7a477054d21ea0c1f" integrity sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw== -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - postcss-discard-duplicates@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" @@ -23503,11 +22753,6 @@ postcss-discard-empty@^5.0.3: resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz#ec185af4a3710b88933b0ff751aa157b6041dd6a" integrity sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA== -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - postcss-discard-empty@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" @@ -23530,11 +22775,6 @@ postcss-discard-overridden@^5.0.4: resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz#cc999d6caf18ea16eff8b2b58f48ec3ddee35c9c" integrity sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg== -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - postcss-discard-overridden@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" @@ -23635,14 +22875,6 @@ postcss-merge-longhand@^5.0.6: postcss-value-parser "^4.2.0" stylehacks "^5.0.3" -postcss-merge-longhand@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz#a49e2be6237316e3b55e329e0a8da15d1f9f47ab" - integrity sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.0" - postcss-merge-longhand@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" @@ -23681,16 +22913,6 @@ postcss-merge-rules@^5.0.6: cssnano-utils "^3.0.2" postcss-selector-parser "^6.0.5" -postcss-merge-rules@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" - integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - postcss-merge-rules@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" @@ -23726,13 +22948,6 @@ postcss-minify-font-values@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - postcss-minify-font-values@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" @@ -23766,15 +22981,6 @@ postcss-minify-gradients@^5.0.6: cssnano-utils "^3.0.2" postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-minify-gradients@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" @@ -23814,15 +23020,6 @@ postcss-minify-params@^5.0.5: cssnano-utils "^3.0.2" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" - integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== - dependencies: - browserslist "^4.16.6" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-minify-params@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" @@ -23858,13 +23055,6 @@ postcss-minify-selectors@^5.1.3: dependencies: postcss-selector-parser "^6.0.5" -postcss-minify-selectors@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" - integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== - dependencies: - postcss-selector-parser "^6.0.5" - postcss-minify-selectors@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" @@ -23949,11 +23139,6 @@ postcss-normalize-charset@^5.0.3: resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz#719fb9f9ca9835fcbd4fed8d6e0d72a79e7b5472" integrity sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA== -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - postcss-normalize-charset@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" @@ -23980,13 +23165,6 @@ postcss-normalize-display-values@^5.0.3: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-display-values@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" @@ -24018,13 +23196,6 @@ postcss-normalize-positions@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-positions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" - integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-positions@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" @@ -24056,13 +23227,6 @@ postcss-normalize-repeat-style@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" - integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-repeat-style@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" @@ -24093,13 +23257,6 @@ postcss-normalize-string@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-string@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" @@ -24130,13 +23287,6 @@ postcss-normalize-timing-functions@^5.0.3: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-timing-functions@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" @@ -24168,14 +23318,6 @@ postcss-normalize-unicode@^5.0.4: browserslist "^4.16.6" postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" - integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== - dependencies: - browserslist "^4.16.6" - postcss-value-parser "^4.2.0" - postcss-normalize-unicode@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" @@ -24210,14 +23352,6 @@ postcss-normalize-url@^5.0.5: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - postcss-normalize-url@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" @@ -24247,13 +23381,6 @@ postcss-normalize-whitespace@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-whitespace@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" @@ -24285,14 +23412,6 @@ postcss-ordered-values@^5.0.5: cssnano-utils "^3.0.2" postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" - integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-ordered-values@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" @@ -24327,14 +23446,6 @@ postcss-reduce-initial@^5.0.3: browserslist "^4.16.6" caniuse-api "^3.0.0" -postcss-reduce-initial@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" - integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - postcss-reduce-initial@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" @@ -24368,13 +23479,6 @@ postcss-reduce-transforms@^5.0.4: dependencies: postcss-value-parser "^4.2.0" -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - postcss-reduce-transforms@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" @@ -24480,14 +23584,6 @@ postcss-svgo@^5.0.4: postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - postcss-svgo@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" @@ -24520,13 +23616,6 @@ postcss-unique-selectors@^5.0.4: dependencies: postcss-selector-parser "^6.0.5" -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - postcss-unique-selectors@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" @@ -24541,7 +23630,7 @@ postcss-unique-selectors@^6.0.3: dependencies: postcss-selector-parser "^6.0.15" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -24556,16 +23645,6 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - postcss@^6.0.11, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" @@ -24601,15 +23680,6 @@ postcss@^8.1.6, postcss@^8.2.4, postcss@^8.3.5, postcss@^8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.12: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== - dependencies: - nanoid "^3.3.1" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postcss@^8.4.18, postcss@^8.4.19: version "8.4.19" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" @@ -24678,11 +23748,6 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -24712,7 +23777,7 @@ pretty-bytes@^4.0.2: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= -pretty-bytes@^5.1.0, pretty-bytes@^5.3.0: +pretty-bytes@^5.1.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== @@ -24844,7 +23909,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@^15.0.0, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -25035,11 +24100,6 @@ puppeteer@^9.0.0: unbzip2-stream "^1.3.3" ws "^7.2.3" -pure-color@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" - integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= - pure-rand@^6.0.0: version "6.0.4" resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" @@ -25152,15 +24212,6 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -25251,16 +24302,6 @@ react-autosize-textarea@^7.1.0: line-height "^0.3.1" prop-types "^15.5.6" -react-base16-styling@^0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.5.3.tgz#3858f24e9c4dd8cbd3f702f3f74d581ca2917269" - integrity sha1-OFjyTpxN2MvT9wLz901YHKKRcmk= - dependencies: - base16 "^1.0.0" - lodash.curry "^4.0.1" - lodash.flow "^3.3.0" - pure-color "^1.2.0" - react-chartjs-2@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz#43c1e3549071c00a1a083ecbd26c1ad34d385f5d" @@ -25316,15 +24357,6 @@ react-docgen@^7.0.0: resolve "^1.22.1" strip-indent "^4.0.0" -react-dock@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/react-dock/-/react-dock-0.3.0.tgz#5d9d51cac78ee5819854c3ad180dabe50c420820" - integrity sha512-A0Dfy6enwb6gruxsMXAkZM6hVyJETTcuB4u/CUVPAj4ZH0/ULQacLHmIdUHfYtZYmPCfeEgOa7KyTueSPrIjFg== - dependencies: - "@types/prop-types" "^15.7.3" - lodash.debounce "^4.0.8" - prop-types "^15.7.2" - "react-dom@^0.14.3 || ^15.1.0 || ^16.0.0", react-dom@^16.13.1, react-dom@^16.9.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" @@ -25368,16 +24400,6 @@ react-error-boundary@^3.1.0, react-error-boundary@^3.1.4: dependencies: "@babel/runtime" "^7.12.5" -react-event-listener@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.4.5.tgz#e3e895a0970cf14ee8f890113af68197abf3d0b1" - integrity sha1-4+iVoJcM8U7o+JAROvaBl6vz0LE= - dependencies: - babel-runtime "^6.20.0" - fbjs "^0.8.4" - prop-types "^15.5.4" - warning "^3.0.0" - react-fast-compare@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" @@ -25441,15 +24463,6 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react- resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-json-tree@^0.11.0: - version "0.11.2" - resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.11.2.tgz#af70199fcbc265699ade2aec492465c51608f95e" - integrity sha512-aYhUPj1y5jR3ZQ+G3N7aL8FbTyO03iLwnVvvEikLcNFqNTyabdljo9xDftZndUBFyyyL0aK3qGO9+8EilILHUw== - dependencies: - babel-runtime "^6.6.1" - prop-types "^15.5.8" - react-base16-styling "^0.5.1" - react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -25460,7 +24473,7 @@ react-merge-refs@^1.1.0: resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== -react-modal@^3.1.10, react-modal@^3.8.1: +react-modal@^3.8.1: version "3.12.1" resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.12.1.tgz#38c33f70d81c33d02ff1ed115530443a3dc2afd3" integrity sha512-WGuXn7Fq31PbFJwtWmOk+jFtGC7E9tJVbFX0lts8ZoS5EPi9+WWylUJWLKKVm3H4GlQ7ZxY7R6tLlbSIBQ5oZA== @@ -25510,11 +24523,6 @@ react-portal@^4.1.5: dependencies: prop-types "^15.5.8" -react-pure-render@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-pure-render/-/react-pure-render-1.0.2.tgz#9d8a928c7f2c37513c2d064e57b3e3c356e9fabb" - integrity sha1-nYqSjH8sN1E8LQZOV7Pjw1bp+rs= - react-redux@^5.0.6: version "5.1.2" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.2.tgz#b19cf9e21d694422727bf798e934a916c4080f57" @@ -25624,7 +24632,7 @@ react-style-singleton@^2.2.1: invariant "^2.2.4" tslib "^2.0.0" -react-tabs@^2.2.1, react-tabs@^2.3.0: +react-tabs@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-2.3.1.tgz#05149044a36edf6be7f2b92c64046d5b2cf42e1d" integrity sha512-SIT1Yx2LY5uwQQsCTQ9hXhywNKqyBdGBAzFZvzYUisztVwOWzfNWjZ7QWNOvuayT5/AF0RAHNbRedur8Yiz2pA== @@ -25660,27 +24668,6 @@ react-textarea-autosize@^8.2.0: use-composed-ref "^1.3.0" use-latest "^1.2.1" -react-transition-group@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6" - integrity sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q== - dependencies: - chain-function "^1.0.0" - dom-helpers "^3.2.0" - loose-envify "^1.3.1" - prop-types "^15.5.6" - warning "^3.0.0" - -react-transition-group@^2.3.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.6.0.tgz#3c41cbdd9c044c5f8604d4e8d319e860919c9fae" - integrity sha512-VzZ+6k/adL3pJHo4PU/MHEPjW59/TGQtRsXC+wnxsx2mxjQKNHnDdJL/GpYuPJIsyHGjYbBQfIJ2JNOAdPc8GQ== - dependencies: - dom-helpers "^3.3.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - react-lifecycles-compat "^3.0.4" - react-transition-group@^2.7.1: version "2.9.0" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" @@ -25990,16 +24977,6 @@ rechoir@^0.8.0: dependencies: resolve "^1.20.0" -recompose@0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.24.0.tgz#262e93f974439eb17e7779824d88cce90492a5dd" - integrity sha512-7+UVym5Mfks/ukIDfcAiasrY61YGki8uIs4CmLTGU7UV2lm2ObbhOl913WrlsZKu8x8uA/sLJUOI5hxVga0dIA== - dependencies: - change-emitter "^0.1.2" - fbjs "^0.8.1" - hoist-non-react-statics "^1.0.0" - symbol-observable "^1.0.4" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -26024,59 +25001,6 @@ reduce-css-calc@^2.1.8: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" -redux-devtools-dock-monitor@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redux-devtools-dock-monitor/-/redux-devtools-dock-monitor-1.2.0.tgz#d7a99e9181dafff25e6869c6cc2bce9a9019eb04" - integrity sha512-8Qs47jjs5itZMdhnXVl9sfpb1FPtxQZqs11reKUkJ83xxVsE9plL6FXj+kPjRStppzWUsDLMOLACVx3w/TjiRQ== - dependencies: - "@types/prop-types" "^15.7.3" - parse-key "^0.2.1" - prop-types "^15.7.2" - react-dock "^0.3.0" - -redux-devtools-instrument@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.10.0.tgz#036caf79fa1e5f25ec4bae38a9af4f08c69e323a" - integrity sha512-X8JRBCzX2ADSMp+iiV7YQ8uoTNyEm0VPFPd4T854coz6lvRiBrFSqAr9YAS2n8Kzxx8CJQotR0QF9wsMM+3DvA== - dependencies: - lodash "^4.17.19" - symbol-observable "^1.2.0" - -redux-devtools-log-monitor@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/redux-devtools-log-monitor/-/redux-devtools-log-monitor-1.4.0.tgz#716b9580eda2a331cd359a36aa09e3a1602a854b" - integrity sha1-cWuVgO2iozHNNZo2qgnjoWAqhUs= - dependencies: - lodash.debounce "^4.0.4" - prop-types "^15.0.0" - react-json-tree "^0.11.0" - react-pure-render "^1.0.2" - redux-devtools-themes "^1.0.0" - -redux-devtools-themes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redux-devtools-themes/-/redux-devtools-themes-1.0.0.tgz#c482dce3c5373976045f40134907d9dcb3ae3d5d" - integrity sha1-xILc48U3OXYEX0ATSQfZ3LOuPV0= - dependencies: - base16 "^1.0.0" - -redux-devtools@^3.4.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/redux-devtools/-/redux-devtools-3.7.0.tgz#5bc2d50227d94ce95c79dbfdf2ffc7a23c553553" - integrity sha512-Lnx3UX7mnJij2Xs+RicPK1GyKkbuodrCKtfYmJsN603wC0mc99W//xCAskGVNmRhIXg4e57m2k1CyX0kVzCsBg== - dependencies: - "@types/prop-types" "^15.7.3" - lodash "^4.17.19" - prop-types "^15.7.2" - redux-devtools-instrument "^1.10.0" - -redux-mock-store@^1.2.3: - version "1.5.4" - resolved "https://registry.yarnpkg.com/redux-mock-store/-/redux-mock-store-1.5.4.tgz#90d02495fd918ddbaa96b83aef626287c9ab5872" - integrity sha512-xmcA0O/tjCLXhh9Fuiq6pMrJCwFRaouA8436zcikdIpYWWCjU76CRk+i2bHx8EeiSiMGnB85/lZdU3wIJVXHTA== - dependencies: - lodash.isplainobject "^4.0.6" - redux-multi@^0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/redux-multi/-/redux-multi-0.1.12.tgz#28e1fe5e49672cbc5bd8a07f0b2aeaf0ef8355c2" @@ -26173,13 +25097,6 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -26314,7 +25231,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -26388,17 +25305,12 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requirefresh@^2.0.0, requirefresh@^2.1.0: +requirefresh@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/requirefresh/-/requirefresh-2.3.0.tgz#fb09387b57f5ed335ff4a4beea3d8c0bf2367306" integrity sha512-oskKAg0pSlPnJAkFMrcqrHeCGzYunl4Hkl+N/NW3nnFWDHRg97yb475HtF5ax8LP9i8QvVkenVIhjNb+h+P7nA== @@ -26629,7 +25541,7 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2, rimraf@~3.0.2: dependencies: glob "^7.1.3" -rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -26711,11 +25623,6 @@ rx-lite@^3.1.2: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= -rx@2.3.24: - version "2.3.24" - resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" - integrity sha1-FPlQpCF9fjXapxu8vljv9o6ksrc= - rxjs@^6.4.0: version "6.6.6" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" @@ -26797,7 +25704,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safefs@^4.0.0, safefs@^4.1.0: +safefs@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/safefs/-/safefs-4.2.0.tgz#6d60d3aecc47c3d02b0ecf39ee0a3798cb363218" integrity sha512-1amPBO92jw/hWS+gH/u7z7EL7YxaJ8WecBQl49tMQ6Y6EQfndxNNKwlPqDOcwpUetdmK6nKLoVdjybVScRwq5A== @@ -27238,11 +26145,6 @@ signal-exit@^4.0.1, signal-exit@^4.1.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -simple-assign@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/simple-assign/-/simple-assign-0.1.0.tgz#17fd3066a5f3d7738f50321bb0f14ca281cc4baa" - integrity sha1-F/0wZqXz13OPUDIbsPFMooHMS6o= - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -27514,11 +26416,6 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= - spawnd@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-6.2.0.tgz#255bb3f405d0fbacefa1c5398cec58588c263c81" @@ -28091,18 +26988,6 @@ strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" -stubby@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stubby/-/stubby-0.3.1.tgz#e64b64c9e81cba92916a7d84a7c119e24c5b6701" - integrity sha1-5ktkyegcupKRan2Ep8EZ4kxbZwE= - dependencies: - async ">=0.2.7" - cloneextend ">=0.0.3" - ejs ">=0.8.4" - isutf8 ">=1.0.11" - js-yaml ">=1.0.1" - node-static ">=0.6.4" - style-loader@^3.3.1, style-loader@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" @@ -28167,14 +27052,6 @@ stylehacks@^5.0.3: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" -stylehacks@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" - integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== - dependencies: - browserslist "^4.16.6" - postcss-selector-parser "^6.0.4" - stylehacks@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" @@ -28269,13 +27146,6 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -28419,7 +27289,7 @@ swc-loader@^0.2.3: dependencies: "@swc/counter" "^0.1.3" -symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.2.0: +symbol-observable@^1.0.3, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -28723,17 +27593,6 @@ terser@^5.16.8: commander "^2.20.0" source-map-support "~0.5.20" -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -29031,7 +27890,7 @@ traverse@^0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe" integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg== -tree-kill@^1.1.0, tree-kill@^1.2.2: +tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== @@ -29063,11 +27922,6 @@ trim-repeated@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - ts-api-utils@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" @@ -29922,13 +28776,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= - dependencies: - loose-envify "^1.0.0" - warning@^4.0.2, warning@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" @@ -30207,7 +29054,7 @@ whatwg-encoding@^2.0.0: dependencies: iconv-lite "0.6.3" -whatwg-fetch@1.1.1, whatwg-fetch@^1.0.0: +whatwg-fetch@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" integrity sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk= @@ -30400,11 +29247,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"