From 221181b4601083f703c8eb6c3721e979fa08dbaf Mon Sep 17 00:00:00 2001 From: rubenthoms <69145689+rubenthoms@users.noreply.github.com> Date: Thu, 16 Jun 2022 14:15:41 +0200 Subject: [PATCH] Introducing Webviz Layout Framework (WLF) (#219) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implemented view selector and view selection menu, store * Implemented settings, plugins and view elements * Changed background color of body * Implemented full screen * Adjusted to be usable with Dash backend * Adjusted button style and fixed app demo * Added screenshot function, added active plugin reference to store * Add click actions for Plugin and ViewElements * Added layout (row/column) implementations * Added backdrop component * Implemented new tour * Adjustments to `Overlay` and `ScrollArea` * Added `uuid` types declaration package * Added `Node` and `npm` version output to GitHub workflow. * Adjustments to `package-lock.json` * Pinned `dash` version to `2.4.x` in GitHub workflow * Adjusted package versions for compatibility (React related) * Added Python wrapper around `WebvizPluginPlaceholder` for deprecation Co-authored-by: Jørgen Herje --- .github/workflows/webviz-core-components.yml | 9 + .gitignore | 1 + CHANGELOG.md | 136 +- react/index.html | 8 +- react/package-lock.json | 2815 +++++++++-------- react/package.json | 11 +- react/src/demo/App.tsx | 49 +- .../src/lib/components/Backdrop/Backdrop.tsx | 24 + .../src/lib/components/Backdrop/backdrop.css | 9 + react/src/lib/components/Backdrop/index.ts | 1 + react/src/lib/components/Menu/Menu.tsx | 32 +- .../Menu/components/MenuBar/MenuBar.css | 1 + react/src/lib/components/Overlay/Overlay.css | 4 +- react/src/lib/components/Overlay/Overlay.tsx | 2 +- .../lib/components/ScrollArea/ScrollArea.tsx | 20 +- .../WebvizContentManager.tsx | 392 +++ .../components/WebvizContentManager/index.ts | 5 + .../WebvizPluginLayoutColumn.tsx | 35 + .../WebvizPluginLayoutColumn/index.ts | 2 + .../webviz-plugin-layout-column.css | 5 + .../WebvizPluginLayoutRow.tsx | 36 + .../components/WebvizPluginLayoutRow/index.ts | 2 + .../webviz-plugin-layout-row.css | 5 + .../WebvizPluginLoadingIndicator.tsx | 17 + .../WebvizPluginLoadingIndicator/index.ts | 1 + .../webviz-plugin-loading-indicator.css | 52 + .../WebvizPluginPlaceholder.tsx | 2 +- .../WebvizPluginTour/WebvizPluginTour.tsx | 328 ++ .../WebvizPluginTour/webviz-plugin-tour.css | 46 + .../WebvizPluginWrapper.tsx | 164 + .../components/WebvizPluginWrapper/index.ts | 1 + .../webviz-plugin-wrapper.css | 27 + .../WebvizPluginsWrapper.tsx | 72 + .../FullScreenMenu/full-screen-menu.css | 11 + .../FullScreenMenu/full-screen-menu.tsx | 48 + .../components/FullScreenMenu/index.ts | 0 .../components/WebvizPluginsWrapper/index.ts | 1 + .../webviz-plugins-wrapper.css | 91 + .../WebvizSettings/WebvizSettings.tsx | 94 + .../lib/components/WebvizSettings/index.ts | 2 + .../WebvizSettings/webviz-settings.css | 9 + .../WebvizSettingsDrawer.tsx | 191 ++ .../components/AuthorDialog/author-dialog.tsx | 84 + .../PluginActions/plugin-actions.css | 77 + .../PluginActions/plugin-actions.tsx | 644 ++++ .../components/ViewList/view-list.css | 94 + .../components/ViewList/view-list.tsx | 162 + .../components/ViewSelector/view-selector.css | 36 + .../components/ViewSelector/view-selector.tsx | 167 + .../components/WebvizSettingsDrawer/index.ts | 1 + .../webviz-settings-drawer.css | 44 + .../WebvizSettingsGroup.tsx | 186 ++ .../components/WebvizSettingsGroup/index.ts | 1 + .../webviz-settings-group.css | 48 + .../lib/components/WebvizView/WebvizView.tsx | 76 + react/src/lib/components/WebvizView/index.ts | 2 + .../lib/components/WebvizView/webviz-view.css | 5 + .../WebvizViewElement/WebvizViewElement.tsx | 577 ++++ .../lib/components/WebvizViewElement/index.ts | 1 + .../WebvizViewElement/webviz-view-element.css | 122 + react/src/lib/hooks/usePosition.ts | 31 + react/src/lib/index.ts | 20 + react/src/lib/shared-types/margins.ts | 6 + .../webviz-content/contact-person.ts | 13 + .../webviz-content/deprecation-warning.ts | 11 + .../webviz-content/download-data.ts | 13 + .../webviz-content/drawer-position.ts | 4 + .../webviz-content/full-screen-menu.ts | 5 + .../shared-types/webviz-content/tour-step.ts | 17 + .../lib/shared-types/webviz-content/webviz.ts | 55 + react/src/lib/utils/Animation.ts | 140 + .../utils/downloadFile.ts | 0 .../WebvizPluginPlaceholderWrapper.py | 13 + webviz_core_components/__init__.py | 4 + 74 files changed, 5919 insertions(+), 1501 deletions(-) create mode 100644 react/src/lib/components/Backdrop/Backdrop.tsx create mode 100644 react/src/lib/components/Backdrop/backdrop.css create mode 100644 react/src/lib/components/Backdrop/index.ts create mode 100644 react/src/lib/components/WebvizContentManager/WebvizContentManager.tsx create mode 100644 react/src/lib/components/WebvizContentManager/index.ts create mode 100644 react/src/lib/components/WebvizPluginLayoutColumn/WebvizPluginLayoutColumn.tsx create mode 100644 react/src/lib/components/WebvizPluginLayoutColumn/index.ts create mode 100644 react/src/lib/components/WebvizPluginLayoutColumn/webviz-plugin-layout-column.css create mode 100644 react/src/lib/components/WebvizPluginLayoutRow/WebvizPluginLayoutRow.tsx create mode 100644 react/src/lib/components/WebvizPluginLayoutRow/index.ts create mode 100644 react/src/lib/components/WebvizPluginLayoutRow/webviz-plugin-layout-row.css create mode 100644 react/src/lib/components/WebvizPluginLoadingIndicator/WebvizPluginLoadingIndicator.tsx create mode 100644 react/src/lib/components/WebvizPluginLoadingIndicator/index.ts create mode 100644 react/src/lib/components/WebvizPluginLoadingIndicator/webviz-plugin-loading-indicator.css create mode 100644 react/src/lib/components/WebvizPluginTour/WebvizPluginTour.tsx create mode 100644 react/src/lib/components/WebvizPluginTour/webviz-plugin-tour.css create mode 100644 react/src/lib/components/WebvizPluginWrapper/WebvizPluginWrapper.tsx create mode 100644 react/src/lib/components/WebvizPluginWrapper/index.ts create mode 100644 react/src/lib/components/WebvizPluginWrapper/webviz-plugin-wrapper.css create mode 100644 react/src/lib/components/WebvizPluginsWrapper/WebvizPluginsWrapper.tsx create mode 100644 react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.css create mode 100644 react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.tsx create mode 100644 react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/index.ts create mode 100644 react/src/lib/components/WebvizPluginsWrapper/index.ts create mode 100644 react/src/lib/components/WebvizPluginsWrapper/webviz-plugins-wrapper.css create mode 100644 react/src/lib/components/WebvizSettings/WebvizSettings.tsx create mode 100644 react/src/lib/components/WebvizSettings/index.ts create mode 100644 react/src/lib/components/WebvizSettings/webviz-settings.css create mode 100644 react/src/lib/components/WebvizSettingsDrawer/WebvizSettingsDrawer.tsx create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/AuthorDialog/author-dialog.tsx create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.css create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.tsx create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.css create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.tsx create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.css create mode 100644 react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.tsx create mode 100644 react/src/lib/components/WebvizSettingsDrawer/index.ts create mode 100644 react/src/lib/components/WebvizSettingsDrawer/webviz-settings-drawer.css create mode 100644 react/src/lib/components/WebvizSettingsGroup/WebvizSettingsGroup.tsx create mode 100644 react/src/lib/components/WebvizSettingsGroup/index.ts create mode 100644 react/src/lib/components/WebvizSettingsGroup/webviz-settings-group.css create mode 100644 react/src/lib/components/WebvizView/WebvizView.tsx create mode 100644 react/src/lib/components/WebvizView/index.ts create mode 100644 react/src/lib/components/WebvizView/webviz-view.css create mode 100644 react/src/lib/components/WebvizViewElement/WebvizViewElement.tsx create mode 100644 react/src/lib/components/WebvizViewElement/index.ts create mode 100644 react/src/lib/components/WebvizViewElement/webviz-view-element.css create mode 100644 react/src/lib/hooks/usePosition.ts create mode 100644 react/src/lib/shared-types/margins.ts create mode 100644 react/src/lib/shared-types/webviz-content/contact-person.ts create mode 100644 react/src/lib/shared-types/webviz-content/deprecation-warning.ts create mode 100644 react/src/lib/shared-types/webviz-content/download-data.ts create mode 100644 react/src/lib/shared-types/webviz-content/drawer-position.ts create mode 100644 react/src/lib/shared-types/webviz-content/full-screen-menu.ts create mode 100644 react/src/lib/shared-types/webviz-content/tour-step.ts create mode 100644 react/src/lib/shared-types/webviz-content/webviz.ts create mode 100644 react/src/lib/utils/Animation.ts rename react/src/lib/{components/WebvizPluginPlaceholder => }/utils/downloadFile.ts (100%) create mode 100644 webviz_core_components/WebvizPluginPlaceholderWrapper.py diff --git a/.github/workflows/webviz-core-components.yml b/.github/workflows/webviz-core-components.yml index 41fb668a..a7e252da 100644 --- a/.github/workflows/webviz-core-components.yml +++ b/.github/workflows/webviz-core-components.yml @@ -30,13 +30,22 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: ℹ️ Node and npm versions + run: | + node -v + npm -v + - name: 📦 Install build dependencies run: | npm ci --ignore-scripts --prefix ./react npm run copy-package-json --prefix ./react + pip install "dash<2.5" # Build issue upstream in dash==2.5 pip install .[dependencies] pip install dash[dev] + - name: ℹ️ Installed npm packages (depth = 0) + run: npm list --depth=0 --prefix react/ + - name: 🏗️ Build JavaScript part run: | npm run build --prefix ./react diff --git a/.gitignore b/.gitignore index 23b5889d..37ff758d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ webviz_core_components/**/* !webviz_core_components/__init__.py !webviz_core_components/wrapped_components !webviz_core_components/wrapped_components/* +!webviz_core_components/WebvizPluginPlaceholderWrapper.py react/webviz_core_components/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 05ab9fb0..0838a79b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,178 +7,186 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [UNRELEASED] - YYYY-MM-DD -## Added -- [#207](https://github.com/equinor/webviz-core-components/pull/207) - Added `storybook` and stories for each component. Added publishment of `storybook` to GitHub workflow. Added `storybook` link to README. +### Added + +- [#207](https://github.com/equinor/webviz-core-components/pull/207) - Added `storybook` and stories for each component. Added publishment of `storybook` to GitHub workflow. Added `storybook` link to README. +- [#219](https://github.com/equinor/webviz-core-components/pull/219) - Implemented components required by the new Webviz Layout Framework (WLF) + +### Changed + +- [#219](https://github.com/equinor/webviz-core-components/pull/219) - Pinned `dash` version to `2.4.x`, added more info output to GitHub workflow, switched to React version `16.14.0` in order to comply with non-maintained `react-colorscales` requirements, implemented adjustments to `Overlay` and `ScrollArea` ## [0.5.7] - 2022-05-05 ### Changed -- [#212](https://github.com/equinor/webviz-core-components/pull/212) - Changed `tab` behaviour in `SmartNodeSelector`. When pressing `tab` on the last tag or `shift+tab` on the first one, the default behaviour is no longer prevented. +- [#212](https://github.com/equinor/webviz-core-components/pull/212) - Changed `tab` behaviour in `SmartNodeSelector`. When pressing `tab` on the last tag or `shift+tab` on the first one, the default behaviour is no longer prevented. ## [0.5.6] - 2022-03-14 ### Added -- [#202](https://github.com/equinor/webviz-core-components/pull/202) - Adjusted `z-index` of suggestions of `SmartNodeSelector` to a hard-coded value of `1500`. -- [#201](https://github.com/equinor/webviz-core-components/pull/201) - Implemented wrapper around `MaterialUI's` draggable dialog. Makes a new `Dialog` component available in `Dash`. -- [#210](https://github.com/equinor/webviz-core-components/pull/210) - Added `backdrop` property to `Dialog`. This allows to disable the backdrop behind a dialog and makes all other elements remain clickable. + +- [#202](https://github.com/equinor/webviz-core-components/pull/202) - Adjusted `z-index` of suggestions of `SmartNodeSelector` to a hard-coded value of `1500`. +- [#201](https://github.com/equinor/webviz-core-components/pull/201) - Implemented wrapper around `MaterialUI's` draggable dialog. Makes a new `Dialog` component available in `Dash`. +- [#210](https://github.com/equinor/webviz-core-components/pull/210) - Added `backdrop` property to `Dialog`. This allows to disable the backdrop behind a dialog and makes all other elements remain clickable. ## [0.5.5] - 2022-02-09 ### Changed -- [#197](https://github.com/equinor/webviz-core-components/pull/197) - Updated `@equinor/eds-icons` (and associated `@equinor/eds-core-react` dependencies) in order to use new icons upstream in the application menu. + +- [#197](https://github.com/equinor/webviz-core-components/pull/197) - Updated `@equinor/eds-icons` (and associated `@equinor/eds-core-react` dependencies) in order to use new icons upstream in the application menu. ## [0.5.4] - 2021-12-09 ### Fixed -- [#178](https://github.com/equinor/webviz-core-components/pull/178) - Bug fixes in `SmartNodeSelector`: Placeholder not applied, text width not calculated correctly initially, jump to next node when pressing `Enter`, bug fixes and improvements when navigating with arrows. Node names containing `-` were breaking the code. -- [#191](https://github.com/equinor/webviz-core-components/pull/191) - Removed `pointer` cursor from `webviz-selectors` class. +- [#178](https://github.com/equinor/webviz-core-components/pull/178) - Bug fixes in `SmartNodeSelector`: Placeholder not applied, text width not calculated correctly initially, jump to next node when pressing `Enter`, bug fixes and improvements when navigating with arrows. Node names containing `-` were breaking the code. +- [#191](https://github.com/equinor/webviz-core-components/pull/191) - Removed `pointer` cursor from `webviz-selectors` class. ### Added -- [#178](https://github.com/equinor/webviz-core-components/pull/178) - Implemented case-insensitive and description search in `SmartNodeSelector`. +- [#178](https://github.com/equinor/webviz-core-components/pull/178) - Implemented case-insensitive and description search in `SmartNodeSelector`. Also added export of data types and implemented `OR` operator in nodes as beta feature. Implemented better visual feedback, tab and end/home navigation. Implemented visual feedback and possibility to show all suggestions. ## [0.5.3] - 2021-11-08 ### Changed -- [#181](https://github.com/equinor/webviz-core-components/pull/181) - `SmartNodeSelector` suggestions window is now attached at top level of DOM tree. This improves usability when used in a scroll area. +- [#181](https://github.com/equinor/webviz-core-components/pull/181) - `SmartNodeSelector` suggestions window is now attached at top level of DOM tree. This improves usability when used in a scroll area. ### Fixed -- [#177](https://github.com/equinor/webviz-core-components/pull/177) - Bug fix: Menu missing if using non-existent icon. +- [#177](https://github.com/equinor/webviz-core-components/pull/177) - Bug fix: Menu missing if using non-existent icon. ### Added -- [#182](https://github.com/equinor/webviz-core-components/pull/182) - Added option to wrap `SelectWithLabel` in a `Details` collapsible widget. -- [#174](https://github.com/equinor/webviz-core-components/pull/174) - Implemented `initiallyCollapsed` setting for menu. +- [#182](https://github.com/equinor/webviz-core-components/pull/182) - Added option to wrap `SelectWithLabel` in a `Details` collapsible widget. +- [#174](https://github.com/equinor/webviz-core-components/pull/174) - Implemented `initiallyCollapsed` setting for menu. ## [0.5.2] - 2021-10-08 ### Changed -- [#161](https://github.com/equinor/webviz-core-components/pull/161) - Updated to `Dash 2.0`. -- [#173](https://github.com/equinor/webviz-core-components/pull/173) - Improved menu layout and auto-width. +- [#161](https://github.com/equinor/webviz-core-components/pull/161) - Updated to `Dash 2.0`. +- [#173](https://github.com/equinor/webviz-core-components/pull/173) - Improved menu layout and auto-width. ### Fixed -- [#157](https://github.com/equinor/webviz-core-components/pull/157) - Added utf8 encoding to Python's `open()` calls. -- [#158](https://github.com/equinor/webviz-core-components/pull/158) - Fixed error messages when contact person details not provided to `WebvizPluginPlaceholder`. -- [#159](https://github.com/equinor/webviz-core-components/pull/159) - Call `revokeObjectURL` after using `createObjectURL` in `WebvizPluginPlaceholder`. -- [#160](https://github.com/equinor/webviz-core-components/pull/160) - Bug fix: `Select` property `value` does not return correct type. -- [#172](https://github.com/equinor/webviz-core-components/pull/172) - Bug fix: No margin between plugins. +- [#157](https://github.com/equinor/webviz-core-components/pull/157) - Added utf8 encoding to Python's `open()` calls. +- [#158](https://github.com/equinor/webviz-core-components/pull/158) - Fixed error messages when contact person details not provided to `WebvizPluginPlaceholder`. +- [#159](https://github.com/equinor/webviz-core-components/pull/159) - Call `revokeObjectURL` after using `createObjectURL` in `WebvizPluginPlaceholder`. +- [#160](https://github.com/equinor/webviz-core-components/pull/160) - Bug fix: `Select` property `value` does not return correct type. +- [#172](https://github.com/equinor/webviz-core-components/pull/172) - Bug fix: No margin between plugins. ### Added -- [#154](https://github.com/equinor/webviz-core-components/pull/154) - Implemented new menu component. +- [#154](https://github.com/equinor/webviz-core-components/pull/154) - Implemented new menu component. ## [0.5.1] - 2021-07-12 ### Changed -- [#140](https://github.com/equinor/webviz-core-components/pull/140) - Improved styling of the `Select` component. -- [#145](https://github.com/equinor/webviz-core-components/pull/145) - Added wrapper components for typically used Dash components (Dropdown, Slider, etc) with additional styling. -- [#148](https://github.com/equinor/webviz-core-components/pull/148) - Changed default value of `numSecondsUntilSuggestionsAreShown` to 0.5 in `SmartNodeSelector` component -- [#150](https://github.com/equinor/webviz-core-components/pull/150) - Changed color of single remove button in `SmartNodeSelector` to the same as for the remove all button. -- [#151](https://github.com/equinor/webviz-core-components/pull/151) - `SmartNodeSelector`: Changes to `data` and `delimiter` props are considered now and cause the component to update. +- [#140](https://github.com/equinor/webviz-core-components/pull/140) - Improved styling of the `Select` component. +- [#145](https://github.com/equinor/webviz-core-components/pull/145) - Added wrapper components for typically used Dash components (Dropdown, Slider, etc) with additional styling. +- [#148](https://github.com/equinor/webviz-core-components/pull/148) - Changed default value of `numSecondsUntilSuggestionsAreShown` to 0.5 in `SmartNodeSelector` component +- [#150](https://github.com/equinor/webviz-core-components/pull/150) - Changed color of single remove button in `SmartNodeSelector` to the same as for the remove all button. +- [#151](https://github.com/equinor/webviz-core-components/pull/151) - `SmartNodeSelector`: Changes to `data` and `delimiter` props are considered now and cause the component to update. ### Added -- [#148](https://github.com/equinor/webviz-core-components/pull/148) - Added `lineBreakAfterTag` property to `SmartNodeSelector` which defaults to false. If set to true, tags are separated by a line break. +- [#148](https://github.com/equinor/webviz-core-components/pull/148) - Added `lineBreakAfterTag` property to `SmartNodeSelector` which defaults to false. If set to true, tags are separated by a line break. ## [0.5.0] - 2021-06-06 ### Changed -- [#134](https://github.com/equinor/webviz-core-components/pull/134) - When prereleases are done in GitHub, they will now be published to `npm` using the `next` tag. E.g. `npm install @webviz/core-components` will install the latest official release, while `npm install @webviz/core-components@next` will install the +- [#134](https://github.com/equinor/webviz-core-components/pull/134) - When prereleases are done in GitHub, they will now be published to `npm` using the `next` tag. E.g. `npm install @webviz/core-components` will install the latest official release, while `npm install @webviz/core-components@next` will install the latest prerelease. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Moved `React` code and `Node.js` configuration into `./react/` directory. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Moved `React` code and `Node.js` configuration into `./react/` directory. Adjusted `package.json`, `.gitignore`, `.vscode/launch.js` and GitHub workflow file accordingly. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Tightened `tsconfig` options in order to have a more strict code validation. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Synchronized ECMA Script version in `tsconfig` and `eslint`. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Added automatic removal of unused autogenerated files (`.Rbuildignore`). -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Removed `plotly-cartesian.js` and `package.json` (top level) from `MANIFEST.in`. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Adjusted components according to new `tsconfig` options. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Moved `flexbox.css` into new component folder. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Introduced `DefaultPropsHelper.ts` in order to account for coexistence of TypeScript restrictions and `React`'s `defaultProps`. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - `setup.py` is now reading package data from `package.json` file inside `webviz_core_components`. -- [#121](https://github.com/equinor/webviz-core-components/pull/121) - Changed rendering of `SmartNodeSelector` component when only one node can be selected. -- [#136](https://github.com/equinor/webviz-core-components/pull/136) - Changes to selected tags in `SmartNodeSelector` are now always sent. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Tightened `tsconfig` options in order to have a more strict code validation. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Synchronized ECMA Script version in `tsconfig` and `eslint`. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Added automatic removal of unused autogenerated files (`.Rbuildignore`). +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Removed `plotly-cartesian.js` and `package.json` (top level) from `MANIFEST.in`. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Adjusted components according to new `tsconfig` options. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Moved `flexbox.css` into new component folder. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Introduced `DefaultPropsHelper.ts` in order to account for coexistence of TypeScript restrictions and `React`'s `defaultProps`. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - `setup.py` is now reading package data from `package.json` file inside `webviz_core_components`. +- [#121](https://github.com/equinor/webviz-core-components/pull/121) - Changed rendering of `SmartNodeSelector` component when only one node can be selected. +- [#136](https://github.com/equinor/webviz-core-components/pull/136) - Changes to selected tags in `SmartNodeSelector` are now always sent. ### Added -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Added `Storybook` for demo of components. -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Added `declarations.d.ts` file for ambient declarations for npm modules without type declarations. -- [#130](https://github.com/equinor/webviz-core-components/pull/130) - Added feedback button to `WebvizPluginPlaceholder`. Added `href` and `target` properties to `WebvizToolbarButton`. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Added `Storybook` for demo of components. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Added `declarations.d.ts` file for ambient declarations for npm modules without type declarations. +- [#130](https://github.com/equinor/webviz-core-components/pull/130) - Added feedback button to `WebvizPluginPlaceholder`. Added `href` and `target` properties to `WebvizToolbarButton`. ### Fixed -- [#136](https://github.com/equinor/webviz-core-components/pull/136) - Several bug fixes in `SmartNodeSelector` (exception on entering invalid node name when no metadata given, exception on using several wildcards, +- [#136](https://github.com/equinor/webviz-core-components/pull/136) - Several bug fixes in `SmartNodeSelector` (exception on entering invalid node name when no metadata given, exception on using several wildcards, new tag when pressing enter with single node selection and invalid data, node selected several times when its name is partly contained in other nodes, exception on holding backspace pressed). -- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Removed `selectedNodes` attribute from `SmartNodeSelector` arguments in `usage.py`. -- [#124](https://github.com/equinor/webviz-core-components/pull/124) - `SmartNodeSelector` now returns all selected tags (also invalid and duplicate ones) to parent. -- [#123](https://github.com/equinor/webviz-core-components/pull/123) - Removed unused variables and added types to `SmartNodeSelector` and its tests. +- [#125](https://github.com/equinor/webviz-core-components/pull/125) - Removed `selectedNodes` attribute from `SmartNodeSelector` arguments in `usage.py`. +- [#124](https://github.com/equinor/webviz-core-components/pull/124) - `SmartNodeSelector` now returns all selected tags (also invalid and duplicate ones) to parent. +- [#123](https://github.com/equinor/webviz-core-components/pull/123) - Removed unused variables and added types to `SmartNodeSelector` and its tests. ## [0.4.1] - 2021-05-04 ### Fixed -- [#122](https://github.com/equinor/webviz-core-components/pull/122) - Fixed bug in `WebvizPluginPlaceholder` preventing download button from working. Added tests for `WebvizPluginPlaceholder`. -- [#120](https://github.com/equinor/webviz-core-components/pull/120) - Multiple bug fixes (deletion of currently selected tag not possible; state not dynamically updated; +- [#122](https://github.com/equinor/webviz-core-components/pull/122) - Fixed bug in `WebvizPluginPlaceholder` preventing download button from working. Added tests for `WebvizPluginPlaceholder`. +- [#120](https://github.com/equinor/webviz-core-components/pull/120) - Multiple bug fixes (deletion of currently selected tag not possible; state not dynamically updated; empty or invalid node names no longer allowed; auto resizing not working when initializing tag component) and new tests for these bugs. Also removed unnecessary properties. ## [0.4.0] - 2021-04-26 ### Added -- [#114](https://github.com/equinor/webviz-core-components/pull/114) - Added deprecation warning to `WebvizPluginPlaceholder`. +- [#114](https://github.com/equinor/webviz-core-components/pull/114) - Added deprecation warning to `WebvizPluginPlaceholder`. ### Changed -- [#114](https://github.com/equinor/webviz-core-components/pull/114) - Better alignment of tooltips with icons and pointer cursor when hovering buttons in `WebvizPluginPlaceholder`. -- [#118](https://github.com/equinor/webviz-core-components/pull/118) - Remove `toImage` from default `modeBarButtonsToRemove` in `wcc.Graph`. +- [#114](https://github.com/equinor/webviz-core-components/pull/114) - Better alignment of tooltips with icons and pointer cursor when hovering buttons in `WebvizPluginPlaceholder`. +- [#118](https://github.com/equinor/webviz-core-components/pull/118) - Remove `toImage` from default `modeBarButtonsToRemove` in `wcc.Graph`. ### Fixed -- [#114](https://github.com/equinor/webviz-core-components/pull/114) - Fixed bug in `WebvizPluginPlaceholder` preventing tooltips from being shown. +- [#114](https://github.com/equinor/webviz-core-components/pull/114) - Fixed bug in `WebvizPluginPlaceholder` preventing tooltips from being shown. ## [0.3.2] - 2021-04-09 -- [#115](https://github.com/equinor/webviz-core-components/pull/115) - Removed postinstall script in order to not having npm trying to copy package.json when installing as npm package. -- [#113](https://github.com/equinor/webviz-core-components/pull/113) - Fixed LGTM warnings caused by SmartNodeSelector component's defaultProps definitions. -- [#107](https://github.com/equinor/webviz-core-components/pull/107) - Fixed bug in argument modifier method (when input argument is given as positional). -- [#107](https://github.com/equinor/webviz-core-components/pull/107) - Prevent false positives through LGTM/GitHub CodeQL. +- [#115](https://github.com/equinor/webviz-core-components/pull/115) - Removed postinstall script in order to not having npm trying to copy package.json when installing as npm package. +- [#113](https://github.com/equinor/webviz-core-components/pull/113) - Fixed LGTM warnings caused by SmartNodeSelector component's defaultProps definitions. +- [#107](https://github.com/equinor/webviz-core-components/pull/107) - Fixed bug in argument modifier method (when input argument is given as positional). +- [#107](https://github.com/equinor/webviz-core-components/pull/107) - Prevent false positives through LGTM/GitHub CodeQL. ## [0.3.1] - 2021-03-28 ### Fixed -- [#105](https://github.com/equinor/webviz-core-components/pull/105) - Fixed bug when updating Select values from a Dash callback. +- [#105](https://github.com/equinor/webviz-core-components/pull/105) - Fixed bug when updating Select values from a Dash callback. ## [0.3.0] - 2021-03-26 ### Fixed -- [#99](https://github.com/equinor/webviz-core-components/pull/99) - Fixed bug which prevented using the download button in `WebvizPluginPlaceholder` and started to download when component was mounting. +- [#99](https://github.com/equinor/webviz-core-components/pull/99) - Fixed bug which prevented using the download button in `WebvizPluginPlaceholder` and started to download when component was mounting. ### Added -- [#96](https://github.com/equinor/webviz-core-components/pull/96) - Added publishing of npm package to Github Workflow +- [#96](https://github.com/equinor/webviz-core-components/pull/96) - Added publishing of npm package to Github Workflow ### Changed -- [#100](https://github.com/equinor/webviz-core-components/pull/100) - Adjusted build environment in order to be able to write +- [#100](https://github.com/equinor/webviz-core-components/pull/100) - Adjusted build environment in order to be able to write components in TypeScript and to publish to npm. Also changed all components to TypeScript. ## [0.2.0] - 2021-03-11 ### Changed -- [#86](https://github.com/equinor/webviz-core-components/pull/86) - Refactored and converted code to TypeScript (main component files to JSX), adjusted build environment accordingly and added validation of JS/TS to GitHub workflow +- [#86](https://github.com/equinor/webviz-core-components/pull/86) - Refactored and converted code to TypeScript (main component files to JSX), adjusted build environment accordingly and added validation of JS/TS to GitHub workflow ### Added -- [#87](https://github.com/equinor/webviz-core-components/pull/87) - Added new SmartNodeSelector component and Jest testing framework -- [#76](https://github.com/equinor/webviz-core-components/pull/76) - Python 3.9 support formally added (through CI). +- [#87](https://github.com/equinor/webviz-core-components/pull/87) - Added new SmartNodeSelector component and Jest testing framework +- [#76](https://github.com/equinor/webviz-core-components/pull/76) - Python 3.9 support formally added (through CI). diff --git a/react/index.html b/react/index.html index ceb6a283..4973925e 100644 --- a/react/index.html +++ b/react/index.html @@ -1,14 +1,10 @@ - + - my-dash-component + Webviz-Core-Components Demo
- - - - diff --git a/react/package-lock.json b/react/package-lock.json index 7346f748..0f033b8e 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -19,8 +19,10 @@ "notistack": "^1.0.5", "react-colorscales": "^0.7.3", "react-draggable": "^4.4.4", + "react-is": "^17.0.2", "reactour": "^1.18.3", - "styled-components": "^5.2.1" + "styled-components": "^5.2.1", + "uuid": "^8.3.2" }, "devDependencies": { "@babel/core": "^7.13.10", @@ -41,6 +43,7 @@ "@types/react": "^17.0.3", "@types/react-dom": "^17.0.3", "@types/reactour": "^1.18.1", + "@types/uuid": "^8.3.2", "@typescript-eslint/eslint-plugin": "^4.19.0", "@typescript-eslint/parser": "^4.19.0", "babel-jest": "^26.6.3", @@ -58,10 +61,10 @@ "jest": "^26.6.3", "mini-css-extract-plugin": "^1.3.9", "prop-types": "^15.7.2", - "react": "^17.0.2", + "react": "^16.14.0", "react-docgen": "^5.3.1", - "react-dom": "^17.0.2", - "react-test-renderer": "^17.0.2", + "react-dom": "^16.14.0", + "react-test-renderer": "^16.14.0", "rimraf": "^2.7.1", "style-loader": "^2.0.0", "styled-jsx": "^3.4.4", @@ -103,18 +106,18 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", @@ -123,10 +126,10 @@ "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", + "@babel/parser": "^7.18.5", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -496,9 +499,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1388,9 +1391,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", - "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.16.7", @@ -1439,9 +1442,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", - "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.17.12" @@ -1922,9 +1925,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", @@ -1932,8 +1935,8 @@ "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2016,9 +2019,9 @@ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz", - "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz", + "integrity": "sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA==", "dependencies": { "@emotion/memoize": "^0.7.4" } @@ -3151,7 +3154,7 @@ "node_modules/@mdx-js/mdx/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3338,9 +3341,9 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -3425,18 +3428,18 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.6.tgz", - "integrity": "sha512-AGtzpWOU/B0FxcqFDM7E/KSHQyr6tMbVts77JlAKCIbwqEncD1LIQoz9CyMdbr1jynkep0Ck0JjcDdmp7CXVoQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.9.tgz", + "integrity": "sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -3468,18 +3471,18 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.6.tgz", - "integrity": "sha512-D2khx57WBvQ2Ta/UMCZa8KQwAzVunk/oKmTJd6vau+1bm88wEx3a2seI9tZtC6nVHgHaBYgoH8os+7XpmlYlVQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.9.tgz", + "integrity": "sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -3505,20 +3508,20 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.6.tgz", - "integrity": "sha512-pJz2ltdL8d9/2wX1XOMdXeGwMNoBX5hIXkNfBCvBfOCmeVEXOczPOZARvwx4QTqmMSu1KikhFIGT64wwoETmBg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.9.tgz", + "integrity": "sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/node-logger": "6.5.6", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/node-logger": "6.5.9", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" @@ -3541,29 +3544,29 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.6.tgz", - "integrity": "sha512-18MOB4Cvr10ibRlA58Y2MqaC0EM9NG758iSjweThaU4kZtSBSDn8R2qBLDGQPwEFkww+4+oAFXxR5/J0qO2xEw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.9.tgz", + "integrity": "sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==", "dev": true, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.12.12", "@babel/preset-env": "^7.12.11", "@jest/transform": "^26.6.2", "@mdx-js/react": "^1.6.22", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.6", + "@storybook/docs-tools": "6.5.9", "@storybook/mdx1-csf": "^0.0.1", - "@storybook/node-logger": "6.5.6", - "@storybook/postinstall": "6.5.6", - "@storybook/preview-web": "6.5.6", - "@storybook/source-loader": "6.5.6", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/node-logger": "6.5.9", + "@storybook/postinstall": "6.5.9", + "@storybook/preview-web": "6.5.9", + "@storybook/source-loader": "6.5.9", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", "babel-loader": "^8.0.0", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", @@ -3597,23 +3600,23 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.6.tgz", - "integrity": "sha512-n+kDN/AI6NDJNJjofYXjGBh618Yg17DuRppFdXROnocwndKufuImF+/tRaQ0YLwXmnULpAiFSGbja6F0pc7fOw==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "6.5.6", - "@storybook/addon-backgrounds": "6.5.6", - "@storybook/addon-controls": "6.5.6", - "@storybook/addon-docs": "6.5.6", - "@storybook/addon-measure": "6.5.6", - "@storybook/addon-outline": "6.5.6", - "@storybook/addon-toolbars": "6.5.6", - "@storybook/addon-viewport": "6.5.6", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/node-logger": "6.5.6", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.9.tgz", + "integrity": "sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "6.5.9", + "@storybook/addon-backgrounds": "6.5.9", + "@storybook/addon-controls": "6.5.9", + "@storybook/addon-docs": "6.5.9", + "@storybook/addon-measure": "6.5.9", + "@storybook/addon-outline": "6.5.9", + "@storybook/addon-toolbars": "6.5.9", + "@storybook/addon-viewport": "6.5.9", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/node-logger": "6.5.9", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0" @@ -3680,16 +3683,16 @@ } }, "node_modules/@storybook/addon-links": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.6.tgz", - "integrity": "sha512-a4+9HLc6+M9qv5Fvezoc8AJYze8HDfHlsEFvCY1AtQiyVEmxFRNBdAp6w+/teNzihXWY78EKRcGM0jjyt+9mWg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.9.tgz", + "integrity": "sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.6", + "@storybook/router": "6.5.9", "@types/qs": "^6.9.5", "core-js": "^3.8.2", "global": "^4.4.0", @@ -3716,16 +3719,16 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.6.tgz", - "integrity": "sha512-V+KKoCTMVakExVmNiSu/1AHVsOgxUt62wo/Xm2fJvtRz+y/5LFFCLnENcN7/8qDTya8vgaHY7FR69zHvGiR4SA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.9.tgz", + "integrity": "sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "global": "^4.4.0" @@ -3748,16 +3751,16 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.6.tgz", - "integrity": "sha512-/Bgo+yQSDwriAZ7pnO0kzaiyMg77bBgieEhrPpjb+AMlWIBU2j9rZYVdmi0egYy075Hle3E/hLwjG4FT4QIo5A==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.9.tgz", + "integrity": "sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "global": "^4.4.0", @@ -3782,16 +3785,16 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.6.tgz", - "integrity": "sha512-9FvnuvLj8QdtSeY7QEuqJieNckwhIkSdmovaFzeToRzJso3eAmqoo6I6pp444QVVnMzrCl5As+2uAxhgaDLEXg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.9.tgz", + "integrity": "sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" }, @@ -3813,17 +3816,17 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.6.tgz", - "integrity": "sha512-zjBjMLfeqflHW7W7iFL5EvxtGbUg+4j+yHjONnKKpZteUjrX4fsBBMOL56mQsC0bAJEQCb3w2SFFskYBa4CzIw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.9.tgz", + "integrity": "sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -3848,18 +3851,18 @@ } }, "node_modules/@storybook/addons": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.6.tgz", - "integrity": "sha512-Ktv7Pk4iq+8+6yifXu3bOiC1ii9VXD93mmha7XcrdW+wl8jti9Ll5jLKEN0lAhd+Qupz4R0g9+znpRXk5n0pBg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz", + "integrity": "sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ==", "dev": true, "dependencies": { - "@storybook/api": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/api": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/router": "6.5.9", + "@storybook/theming": "6.5.9", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", @@ -3875,18 +3878,18 @@ } }, "node_modules/@storybook/api": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.6.tgz", - "integrity": "sha512-GHhjb6mji+R+FWytx7MIOKqca49ZXjvnIPpyp5zXAtgdk2Yn2j8C0MRPO1ovh4nHKWVvx6larmhskRxfUjk06g==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz", + "integrity": "sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA==", "dev": true, "dependencies": { - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.6", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -3908,28 +3911,28 @@ } }, "node_modules/@storybook/builder-webpack4": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.6.tgz", - "integrity": "sha512-/nACQ5SoddCs1geGUKXrrXiYDvYdTVXWXc0L6mXawjYANBeWIkAKFlhRpoXGN/KiFuuExO2+UgNCKlUyD0a51Q==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz", + "integrity": "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/preview-web": "6.5.6", - "@storybook/router": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/preview-web": "6.5.9", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", + "@storybook/ui": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", @@ -3982,9 +3985,9 @@ "dev": true }, "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ast": { @@ -4560,7 +4563,7 @@ "node_modules/@storybook/builder-webpack4/node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "dependencies": { "errno": "^0.1.3", @@ -4726,7 +4729,7 @@ "node_modules/@storybook/builder-webpack4/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -4803,7 +4806,7 @@ "node_modules/@storybook/builder-webpack4/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -5051,7 +5054,7 @@ "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -5154,27 +5157,27 @@ "dev": true }, "node_modules/@storybook/builder-webpack5": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.6.tgz", - "integrity": "sha512-inR1xh16barDutfoxv8MCTQTztASLpewDsu6YDs87ifYlYfWuS/NlbY290EWj4D8je1LY53Rpbpkorj/49wCeA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz", + "integrity": "sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/preview-web": "6.5.6", - "@storybook/router": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/preview-web": "6.5.9", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.0.0", "babel-plugin-named-exports-order": "^0.0.2", @@ -5213,20 +5216,20 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/channel-postmessage": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.6.tgz", - "integrity": "sha512-kyYO84hItSE1SaEI1xpMYqJOM3MJ2Y2WHx1Hxu5prq2T2cIgUGURyNf3+5G0BLTf2XGNEN/7YYv9rHmQ9GUz8g==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz", + "integrity": "sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw==", "dev": true, "dependencies": { - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "qs": "^6.10.0", @@ -5238,13 +5241,13 @@ } }, "node_modules/@storybook/channel-websocket": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.6.tgz", - "integrity": "sha512-d09LfP4zVYCCeuCBn+R41jINUBzhRt78tKk5e1wEsMklV5p+l8Zoi3oJD/UQ/EgtMcnC1dKi3WfAPyx3U/wdgg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz", + "integrity": "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==", "dev": true, "dependencies": { - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "telejson": "^6.0.8" @@ -5255,9 +5258,9 @@ } }, "node_modules/@storybook/channels": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.6.tgz", - "integrity": "sha512-rS0Dk9fSiMBsPvkiMo9CuvDCoXbGmYKiX/juS3F4u+sedhH+XtH4jFf49lJWoNVAE6eJPFyXATU4p1mm8Z85kQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz", + "integrity": "sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g==", "dev": true, "dependencies": { "core-js": "^3.8.2", @@ -5270,18 +5273,18 @@ } }, "node_modules/@storybook/client-api": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.6.tgz", - "integrity": "sha512-+PV3eZ0Hr15volHE/ds6pxsoitsHkUuwGMVLUGvX5JuepDlhWOkQzCxPw2BuABJl6x40/w/Pj2DIyTrg37ZThg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.9.tgz", + "integrity": "sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "@types/qs": "^6.9.5", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -5306,9 +5309,9 @@ } }, "node_modules/@storybook/client-logger": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.6.tgz", - "integrity": "sha512-hJzhn5EO0S4fUAZkKzBGNACJfupV9n+7TSIaU4mpVP+/ImS9uPdorAAtyqp5HC6R6vA67POoSgX0+qPgZnWvaw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz", + "integrity": "sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg==", "dev": true, "dependencies": { "core-js": "^3.8.2", @@ -5320,16 +5323,17 @@ } }, "node_modules/@storybook/components": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.6.tgz", - "integrity": "sha512-Qh40wMkqWD3ZbGqxqa0pi5JFWazIbcZWbqUakH9zARgLk+LBrpJvPuu7GmQrDUtJTA33H4tD/4ujt6AibnaQwQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.9.tgz", + "integrity": "sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "6.5.6", + "@storybook/client-logger": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "@types/react-syntax-highlighter": "11.0.5", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", "qs": "^6.10.0", "react-syntax-highlighter": "^15.4.5", "regenerator-runtime": "^0.13.7", @@ -5345,13 +5349,13 @@ } }, "node_modules/@storybook/core": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.6.tgz", - "integrity": "sha512-DS6Q8SrEXBDoDS2K865NoWggSXEg8L9p+jx8sILLkLrr2QXJT0x6YIFSwEh6rGwkahxDV5ikON/rW39Wlxzk1w==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz", + "integrity": "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==", "dev": true, "dependencies": { - "@storybook/core-client": "6.5.6", - "@storybook/core-server": "6.5.6" + "@storybook/core-client": "6.5.9", + "@storybook/core-server": "6.5.9" }, "funding": { "type": "opencollective", @@ -5375,21 +5379,21 @@ } }, "node_modules/@storybook/core-client": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.6.tgz", - "integrity": "sha512-Xmjt95GYYVRp7ra49Y955BLH/FYlOmuLC4aFTGurjmCay7zUqvExxFk9AUKOkyBb1/S/8iQCG59D0ES6YWoMRw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz", + "integrity": "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channel-websocket": "6.5.6", - "@storybook/client-api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channel-websocket": "6.5.9", + "@storybook/client-api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/preview-web": "6.5.6", - "@storybook/store": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/preview-web": "6.5.9", + "@storybook/store": "6.5.9", + "@storybook/ui": "6.5.9", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", @@ -5417,9 +5421,9 @@ } }, "node_modules/@storybook/core-common": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.6.tgz", - "integrity": "sha512-+k+D9CzyFHNAy59jt2sfKnb/KU/nXO1hvBVaJAhdocjrDMvHtwYuXWWQrWYX3/VGp9wCa9TC0JG1kz+DWSYXaQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz", + "integrity": "sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -5444,7 +5448,7 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.5.6", + "@storybook/node-logger": "6.5.9", "@storybook/semver": "^7.3.2", "@types/node": "^14.0.10 || ^16.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -5507,9 +5511,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ast": { @@ -5944,7 +5948,7 @@ "node_modules/@storybook/core-common/node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "dependencies": { "errno": "^0.1.3", @@ -6098,7 +6102,7 @@ "node_modules/@storybook/core-common/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -6184,9 +6188,9 @@ "dev": true }, "node_modules/@storybook/core-events": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.6.tgz", - "integrity": "sha512-bzktgM1i0QPrayH1ANbKb7nYpehSpi5QHWps2vVQbvtpI/pGlTtpde1e87vfAt74Bvsvd3/9IpQkQKteDODAkA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz", + "integrity": "sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q==", "dev": true, "dependencies": { "core-js": "^3.8.2" @@ -6197,23 +6201,23 @@ } }, "node_modules/@storybook/core-server": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.6.tgz", - "integrity": "sha512-65kwbSXsKPl/0BKjGr9RTihv6jYGGIG/prfLscZPtm3u4/Z8ZxCX94rznztxcUatjLlUfKJ8iimizhUOIa0FJA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz", + "integrity": "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.5.6", - "@storybook/core-client": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/builder-webpack4": "6.5.9", + "@storybook/core-client": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/csf-tools": "6.5.6", - "@storybook/manager-webpack4": "6.5.6", - "@storybook/node-logger": "6.5.6", + "@storybook/csf-tools": "6.5.9", + "@storybook/manager-webpack4": "6.5.9", + "@storybook/node-logger": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", - "@storybook/telemetry": "6.5.6", + "@storybook/store": "6.5.9", + "@storybook/telemetry": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", @@ -6269,9 +6273,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/core-server/node_modules/@webassemblyjs/ast": { @@ -6687,7 +6691,7 @@ "node_modules/@storybook/core-server/node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "dependencies": { "errno": "^0.1.3", @@ -6847,7 +6851,7 @@ "node_modules/@storybook/core-server/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -6942,9 +6946,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.6.tgz", - "integrity": "sha512-Gfah+5mEUoVG7v+E23svRjKAh546KCPIcwAvGU3m26j3hNbpvKq8edKDr+CCMfehG8VEGSZWfZPsgX04c/ItcA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz", + "integrity": "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -6976,14 +6980,14 @@ } }, "node_modules/@storybook/docs-tools": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.6.tgz", - "integrity": "sha512-QwOFWVzce4m5fQaC39rSUBVzNplpcSfGyIN3rBBen4wHllj43y7i30A69jSW24M15CKdcJmfDaLwN00s7y3ZHQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz", + "integrity": "sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "core-js": "^3.8.2", "doctrine": "^3.0.0", "lodash": "^4.17.21", @@ -6995,20 +6999,20 @@ } }, "node_modules/@storybook/manager-webpack4": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.6.tgz", - "integrity": "sha512-GaUT1bNmGebq8Ci52M07XF0Zn9Ak7L8ZaKn8rdBJ4VSPhg0vEAeo7trD3aur3+h/3gLQmK64LhiNSOfvZfQDAw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz", + "integrity": "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/core-client": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/theming": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/core-client": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/theming": "6.5.9", + "@storybook/ui": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "babel-loader": "^8.0.0", @@ -7057,9 +7061,9 @@ "dev": true }, "node_modules/@storybook/manager-webpack4/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ast": { @@ -7665,7 +7669,7 @@ "node_modules/@storybook/manager-webpack4/node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "dependencies": { "errno": "^0.1.3", @@ -7831,7 +7835,7 @@ "node_modules/@storybook/manager-webpack4/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -7920,7 +7924,7 @@ "node_modules/@storybook/manager-webpack4/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -8156,7 +8160,7 @@ "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -8259,20 +8263,20 @@ "dev": true }, "node_modules/@storybook/manager-webpack5": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.6.tgz", - "integrity": "sha512-U5OIMs1PNjZZRjOvV2Bo05+1dzvV30o4Lw5sgeyH9Qr08p79nHT4iFSaVF2W01zGja6XlneqFB9hBqBHoocJWQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.9.tgz", + "integrity": "sha512-J1GamphSsaZLNBEhn1awgxzOS8KfvzrHtVlAm2VHwW7j1E1DItROFJhGCgduYYuBiN9eqm+KIYrxcr6cRuoolQ==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/core-client": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/theming": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/core-client": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/theming": "6.5.9", + "@storybook/ui": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", @@ -8312,9 +8316,9 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/manager-webpack5/node_modules/ansi-styles": { @@ -8407,9 +8411,9 @@ } }, "node_modules/@storybook/node-logger": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.6.tgz", - "integrity": "sha512-bT0R0skDWW9iJS8AIG9zfSF8XzTffdc8hRlpXUF9+VQKds+8H9FyoV4tl8ySCuNNunt8Ic9GvW3Fakq49FUcgw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.9.tgz", + "integrity": "sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg==", "dev": true, "dependencies": { "@types/npmlog": "^4.1.2", @@ -8494,9 +8498,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.6.tgz", - "integrity": "sha512-MPrlmVOXbfAiSaGzG1jgUM4l2zXOI9h3pvrh+0dQLJYP3tjO+5RNmJKMjH8c1PkTcAeoHkp1gUYZ0KKy2imRRQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.9.tgz", + "integrity": "sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ==", "dev": true, "dependencies": { "core-js": "^3.8.2" @@ -8507,17 +8511,17 @@ } }, "node_modules/@storybook/preview-web": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.6.tgz", - "integrity": "sha512-fjWfe1ZqtMMS3UFiL6XDYVR0T5QVhXIp/Ax19tuW2VJ/NL/zl4+c9v9lx5jSY5iD5tKwYYRrbH8VS2Pm/CNAzA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.9.tgz", + "integrity": "sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", @@ -8539,24 +8543,24 @@ } }, "node_modules/@storybook/react": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.6.tgz", - "integrity": "sha512-lU2ggvZe9PbKWK4cbwHI6eDT7tlRAqdx489kLrfKhGTUVE8zhc/uosVEMpxbxS/zf1YYnXumr2DH1Uw2S3JeqA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz", + "integrity": "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==", "dev": true, "dependencies": { "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core": "6.5.6", - "@storybook/core-common": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core": "6.5.9", + "@storybook/core-common": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.6", - "@storybook/node-logger": "6.5.6", + "@storybook/docs-tools": "6.5.9", + "@storybook/node-logger": "6.5.9", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "@types/estree": "^0.0.51", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", @@ -8735,19 +8739,21 @@ } }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "node_modules/@storybook/router": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.6.tgz", - "integrity": "sha512-SL9X/+bkJxafH5V9r65liMgs+EvGddMCQ/4JP/p3GIu6+2G3pW613Ww5sqCBCB1R4zoYcsMT7F1q/D5NWByVHg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz", + "integrity": "sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg==", "dev": true, "dependencies": { - "@storybook/client-logger": "6.5.6", + "@storybook/client-logger": "6.5.9", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7" }, "funding": { @@ -8828,13 +8834,13 @@ } }, "node_modules/@storybook/source-loader": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.6.tgz", - "integrity": "sha512-KsV9DU3JucYjWHq55f1bOu52mprgSpTIRUnvK2BojQdjY+kqN2ow0pP/I9FZzNpEKKsGFWdnREfYM5dYHZyvLw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.9.tgz", + "integrity": "sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "estraverse": "^5.2.0", @@ -8854,14 +8860,14 @@ } }, "node_modules/@storybook/store": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.6.tgz", - "integrity": "sha512-ftU40jN5IV26Mj4QjqgsooWFYXDNtcwByH9JrbIlZv7L8HySqVHqeOMrk2Bbt2EkM3urhc5yd0Bbr8EuKlbZVQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.9.tgz", + "integrity": "sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", @@ -8885,13 +8891,13 @@ } }, "node_modules/@storybook/telemetry": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.6.tgz", - "integrity": "sha512-l0vbStCgVA9u0ITvowZ1LNxmf32vAAdnPqSmB9DdA3ZO2wCpttW9rPyg1O4OV8c5uq7QJZ7mrKZ04p9SLo8wrw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz", + "integrity": "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "6.5.6", - "@storybook/core-common": "6.5.6", + "@storybook/client-logger": "6.5.9", + "@storybook/core-common": "6.5.9", "chalk": "^4.1.0", "core-js": "^3.8.2", "detect-package-manager": "^2.0.1", @@ -8979,13 +8985,14 @@ } }, "node_modules/@storybook/theming": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.6.tgz", - "integrity": "sha512-JEKl9gdVD2Ef9xSwRtaq6EpjJD5xe7X2OP/4e61ucrp/rSOk7SOpYUZYQh6PhYLGhnGbgQkedVVc9CUhK8bs6Q==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz", + "integrity": "sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw==", "dev": true, "dependencies": { - "@storybook/client-logger": "6.5.6", + "@storybook/client-logger": "6.5.9", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", "regenerator-runtime": "^0.13.7" }, "funding": { @@ -8998,21 +9005,23 @@ } }, "node_modules/@storybook/ui": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.6.tgz", - "integrity": "sha512-EU/YGczcA/v7jHlXIJ7CytK+FH2X9tlsjQbcQW8niPkwtk/gvG7vTfNhanbDlWMKnDLuFWhyHJ33nrW2mIyqkw==", - "dev": true, - "dependencies": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/router": "6.5.6", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz", + "integrity": "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0" }, @@ -9205,9 +9214,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", + "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -9386,9 +9395,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", - "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==", + "version": "17.0.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.43.tgz", + "integrity": "sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA==", "dev": true }, "node_modules/@types/node-fetch": { @@ -9533,9 +9542,9 @@ "dev": true }, "node_modules/@types/uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz", + "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==", "dev": true, "dependencies": { "source-map": "^0.6.1" @@ -9547,6 +9556,12 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, "node_modules/@types/webpack": { "version": "4.41.32", "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", @@ -9579,9 +9594,9 @@ } }, "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -10048,9 +10063,9 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, "peerDependencies": { "webpack": "4.x.x || 5.x.x", @@ -10058,9 +10073,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "dependencies": { "envinfo": "^7.7.3" @@ -10070,9 +10085,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -10666,7 +10681,7 @@ "node_modules/assert/node_modules/util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, "dependencies": { "inherits": "2.0.1" @@ -10826,7 +10841,7 @@ "node_modules/babel-code-frame/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -10838,7 +10853,7 @@ "node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -11390,7 +11405,7 @@ "node_modules/babel-traverse/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/babel-types": { @@ -11408,7 +11423,7 @@ "node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11626,9 +11641,24 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", @@ -11926,9 +11956,9 @@ } }, "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "dev": true, "funding": [ { @@ -11941,10 +11971,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.3", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" }, "bin": { @@ -12284,9 +12314,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001344", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", - "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "version": "1.0.30001354", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001354.tgz", + "integrity": "sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg==", "dev": true, "funding": [ { @@ -12749,9 +12779,9 @@ } }, "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "node_modules/colorspace": { @@ -12868,7 +12898,7 @@ "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/compute-scroll-into-view": { @@ -13080,9 +13110,9 @@ } }, "node_modules/core-js": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.7.tgz", - "integrity": "sha512-Jt8SReuDKVNZnZEzyEQT5eK6T2RRCXkfTq7Lo09kpm+fHjgGewSbNjV+Wt4yZMhPDdzz2x1ulI5z/w4nxpBseg==", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.1.tgz", + "integrity": "sha512-wfMYHWi1WQjpgZNC9kAlN4ut04TM9fUTdi7CqIoTVM7yaiOUQTklOzfb+oWH3r9edQcT3F887swuVmxrV+CC8w==", "dev": true, "hasInstallScript": true, "funding": { @@ -13091,12 +13121,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz", - "integrity": "sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA==", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.1.tgz", + "integrity": "sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A==", "dev": true, "dependencies": { - "browserslist": "^4.20.3", + "browserslist": "^4.20.4", "semver": "7.0.0" }, "funding": { @@ -13114,9 +13144,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.7.tgz", - "integrity": "sha512-wTriFxiZI+C8msGeh7fJcbC/a0V8fdInN1oS2eK79DMBGs8iIJiXhtFJCiT3rBa8w6zroHWW3p8ArlujZ/Mz+w==", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.1.tgz", + "integrity": "sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg==", "dev": true, "hasInstallScript": true, "funding": { @@ -13437,7 +13467,7 @@ "node_modules/cpy/node_modules/path-type/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { "node": ">=4" @@ -13455,7 +13485,7 @@ "node_modules/cpy/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -14062,7 +14092,7 @@ "node_modules/cssnano/node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { "error-ex": "^1.3.1", @@ -14075,7 +14105,7 @@ "node_modules/cssnano/node_modules/resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, "engines": { "node": ">=4" @@ -14273,7 +14303,7 @@ "node_modules/default-browser-id/node_modules/untildify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "integrity": "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==", "dev": true, "optional": true, "dependencies": { @@ -14354,7 +14384,7 @@ "node_modules/default-gateway/node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "dependencies": { "path-key": "^2.0.0" @@ -14366,7 +14396,7 @@ "node_modules/default-gateway/node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "engines": { "node": ">=4" @@ -14384,7 +14414,7 @@ "node_modules/default-gateway/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { "shebang-regex": "^1.0.0" @@ -14396,7 +14426,7 @@ "node_modules/default-gateway/node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14501,7 +14531,7 @@ "node_modules/del/node_modules/globby/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14643,7 +14673,7 @@ "node_modules/detect-port/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/diff-sequences": { @@ -14978,9 +15008,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.141", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", - "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "version": "1.4.156", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.156.tgz", + "integrity": "sha512-/Wj5NC7E0wHaMCdqxWz9B0lv7CcycDTiHyXCtbbu3pXM9TV2AOp8BtMqkVuqvJNdEvltBG6LxT2Q+BxY4LUCIA==", "dev": true }, "node_modules/elliptic": { @@ -15135,12 +15165,12 @@ } }, "node_modules/error-stack-parser": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", - "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, "dependencies": { - "stackframe": "^1.1.1" + "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { @@ -15447,7 +15477,7 @@ "node_modules/eslint-module-utils/node_modules/p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { "p-limit": "^1.1.0" @@ -15459,7 +15489,7 @@ "node_modules/eslint-module-utils/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, "engines": { "node": ">=4" @@ -15468,7 +15498,7 @@ "node_modules/eslint-module-utils/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -15525,7 +15555,7 @@ "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/eslint-plugin-react": { @@ -16114,7 +16144,7 @@ "node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/expect": { @@ -16221,9 +16251,24 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/express/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -16527,7 +16572,7 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/find-cache-dir": { @@ -16599,7 +16644,7 @@ "node_modules/find-cache-dir/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -17165,14 +17210,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17790,7 +17835,8 @@ "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/hosted-git-info": { "version": "2.8.9", @@ -18188,7 +18234,7 @@ "node_modules/http-proxy-middleware/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -21698,7 +21744,7 @@ "node_modules/load-json-file/node_modules/parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "optional": true, "dependencies": { @@ -21711,7 +21757,7 @@ "node_modules/load-json-file/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true, "engines": { @@ -21721,7 +21767,7 @@ "node_modules/load-json-file/node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "optional": true, "dependencies": { @@ -21897,7 +21943,7 @@ "node_modules/lz-string": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", "dev": true, "bin": { "lz-string": "bin/bin.js" @@ -21949,7 +21995,7 @@ "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -21958,7 +22004,7 @@ "node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, "optional": true, "engines": { @@ -21968,13 +22014,13 @@ "node_modules/map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", "dev": true }, "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "dependencies": { "object-visit": "^1.0.0" @@ -22069,13 +22115,13 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -22121,7 +22167,7 @@ "node_modules/memoizerific": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", "dev": true, "dependencies": { "map-or-similar": "^1.5.0" @@ -22173,7 +22219,7 @@ "node_modules/meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", "dev": true, "optional": true, "dependencies": { @@ -22209,7 +22255,7 @@ "node_modules/meow/node_modules/path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "optional": true, "dependencies": { @@ -22222,7 +22268,7 @@ "node_modules/meow/node_modules/path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "optional": true, "dependencies": { @@ -22237,7 +22283,7 @@ "node_modules/meow/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true, "engines": { @@ -22247,7 +22293,7 @@ "node_modules/meow/node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "optional": true, "dependencies": { @@ -22262,7 +22308,7 @@ "node_modules/meow/node_modules/read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "optional": true, "dependencies": { @@ -22276,7 +22322,7 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "node_modules/merge-stream": { @@ -22297,7 +22343,7 @@ "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "engines": { "node": ">= 0.6" @@ -22386,7 +22432,7 @@ "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "dependencies": { "dom-walk": "^0.1.0" @@ -22431,7 +22477,7 @@ "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "node_modules/minimatch": { @@ -22562,7 +22608,7 @@ "node_modules/move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", "dev": true, "dependencies": { "aproba": "^1.1.1", @@ -22612,7 +22658,7 @@ "node_modules/multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true }, "node_modules/nan": { @@ -22659,7 +22705,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/negotiator": { @@ -22702,7 +22748,7 @@ "node_modules/node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", "dev": true, "dependencies": { "minimatch": "^3.0.2" @@ -22734,19 +22780,19 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "dependencies": { "tr46": "~0.0.3", @@ -22765,7 +22811,7 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node_modules/node-libs-browser": { @@ -22814,7 +22860,7 @@ "node_modules/node-libs-browser/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, "node_modules/node-libs-browser/node_modules/readable-stream": { @@ -22910,7 +22956,7 @@ "node_modules/noms": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -22950,7 +22996,7 @@ "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -23022,7 +23068,7 @@ "node_modules/num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", "dev": true }, "node_modules/nwsapi": { @@ -23034,7 +23080,7 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } @@ -23042,7 +23088,7 @@ "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "dependencies": { "copy-descriptor": "^0.1.0", @@ -23167,7 +23213,7 @@ "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "dependencies": { "isobject": "^3.0.0" @@ -23259,7 +23305,7 @@ "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "dependencies": { "isobject": "^3.0.1" @@ -23321,7 +23367,7 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -23422,7 +23468,7 @@ "node_modules/optionator/node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -23431,7 +23477,7 @@ "node_modules/optionator/node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -23443,13 +23489,13 @@ "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, "optional": true, "engines": { @@ -23480,7 +23526,7 @@ "node_modules/p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true, "engines": { "node": ">=4" @@ -23537,7 +23583,7 @@ "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { "node": ">=4" @@ -23764,7 +23810,7 @@ "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -23779,7 +23825,7 @@ "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, "node_modules/path-exists": { @@ -23794,7 +23840,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -23803,7 +23849,7 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "node_modules/path-key": { @@ -23824,7 +23870,7 @@ "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "node_modules/path-type": { @@ -23855,7 +23901,7 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picocolors": { "version": "0.2.1", @@ -23886,7 +23932,7 @@ "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -23895,7 +23941,7 @@ "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "dependencies": { "pinkie": "^2.0.0" @@ -23992,7 +24038,7 @@ "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -24699,7 +24745,7 @@ "node_modules/pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true, "engines": { "node": ">= 0.8" @@ -24717,7 +24763,7 @@ "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, "engines": { "node": ">= 0.6.0" @@ -24741,7 +24787,7 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "node_modules/promise.allsettled": { @@ -24807,7 +24853,8 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/property-information": { "version": "5.6.0", @@ -24838,7 +24885,7 @@ "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "node_modules/psl": { @@ -24910,7 +24957,7 @@ "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, "engines": { "node": ">=0.6.0", @@ -24918,9 +24965,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -24935,7 +24982,7 @@ "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, "engines": { @@ -24945,7 +24992,7 @@ "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, "engines": { "node": ">=0.4.x" @@ -25151,15 +25198,17 @@ "node_modules/rc-util/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" }, "engines": { "node": ">=0.10.0" @@ -25190,35 +25239,10 @@ "react-dom": ">=0.14" } }, - "node_modules/react-colorscales/node_modules/react-select": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.3.0.tgz", - "integrity": "sha512-g/QAU1HZrzSfxkwMAo/wzi6/ezdWye302RGZevsATec07hI/iSxcpB1hejFIp7V63DJ8mwuign6KmB3VjdlinQ==", - "dependencies": { - "classnames": "^2.2.4", - "prop-types": "^15.5.8", - "react-input-autosize": "^2.1.2" - }, - "peerDependencies": { - "react": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0", - "react-dom": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0" - } - }, - "node_modules/react-colorscales/node_modules/react-select/node_modules/react-input-autosize": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz", - "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==", - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0" - } - }, "node_modules/react-docgen": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.1.tgz", - "integrity": "sha512-TZqD1aApirw86NV6tHrmDoxUn8wlinkVyutFarzbdwuhEurAzDN0y5sSj64o+BrHLPqjwpH9tunpfwgy+3Uyww==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.2.tgz", + "integrity": "sha512-4Z5XYpHsn2bbUfaflxoS30VhUvQLBe4GCwwM5v1e1FUOeDdaoJi6wUGSmYp6OdXYEISEAOEIaSPBk4iezNCKBw==", "dev": true, "dependencies": { "@babel/core": "^7.7.5", @@ -25255,16 +25279,18 @@ "dev": true }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" }, "peerDependencies": { - "react": "17.0.2" + "react": "^16.14.0" } }, "node_modules/react-draggable": { @@ -25325,6 +25351,17 @@ "react": "^16.8.0 || ^17.0.0" } }, + "node_modules/react-input-autosize": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz", + "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==", + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0" + } + }, "node_modules/react-inspector": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", @@ -25342,7 +25379,8 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", @@ -25371,17 +25409,18 @@ "node": ">=0.10.0" } }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "dev": true, + "node_modules/react-select": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.3.0.tgz", + "integrity": "sha512-g/QAU1HZrzSfxkwMAo/wzi6/ezdWye302RGZevsATec07hI/iSxcpB1hejFIp7V63DJ8mwuign6KmB3VjdlinQ==", "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + "classnames": "^2.2.4", + "prop-types": "^15.5.8", + "react-input-autosize": "^2.1.2" }, "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + "react": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0", + "react-dom": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0" } }, "node_modules/react-syntax-highlighter": { @@ -25401,20 +25440,27 @@ } }, "node_modules/react-test-renderer": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", - "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", + "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", "dev": true, "dependencies": { "object-assign": "^4.1.1", - "react-is": "^17.0.2", - "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.2" + "prop-types": "^15.6.2", + "react-is": "^16.8.6", + "scheduler": "^0.19.1" }, "peerDependencies": { - "react": "17.0.2" + "react": "^16.14.0" } }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/react-transition-group": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", @@ -25465,7 +25511,8 @@ "node_modules/reactour/node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/read-pkg": { "version": "5.2.0", @@ -25572,7 +25619,7 @@ "node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -25614,7 +25661,7 @@ "node_modules/redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", "dev": true, "optional": true, "dependencies": { @@ -25641,7 +25688,7 @@ "node_modules/redent/node_modules/strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", "dev": true, "optional": true, "dependencies": { @@ -25799,7 +25846,7 @@ "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, "engines": { "node": ">= 0.10" @@ -25936,7 +25983,7 @@ "node_modules/remark-mdx/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -26001,7 +26048,7 @@ "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "node_modules/renderkid": { @@ -26029,7 +26076,7 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, "engines": { "node": ">=0.10" @@ -26038,7 +26085,7 @@ "node_modules/repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dev": true, "optional": true, "dependencies": { @@ -26051,7 +26098,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -26075,7 +26122,7 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "node_modules/resolve": { @@ -26119,7 +26166,7 @@ "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, @@ -26135,7 +26182,7 @@ "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { "node": ">= 4" @@ -26154,13 +26201,13 @@ "node_modules/rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", "dev": true }, "node_modules/rgba-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", "dev": true }, "node_modules/rimraf": { @@ -26220,7 +26267,7 @@ "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, "dependencies": { "aproba": "^1.1.1" @@ -26241,7 +26288,7 @@ "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "dependencies": { "ret": "~0.1.10" @@ -26477,7 +26524,7 @@ "node_modules/sane/node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "dependencies": { "remove-trailing-separator": "^1.0.1" @@ -26489,7 +26536,7 @@ "node_modules/sane/node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "dependencies": { "path-key": "^2.0.0" @@ -26501,7 +26548,7 @@ "node_modules/sane/node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "engines": { "node": ">=4" @@ -26519,7 +26566,7 @@ "node_modules/sane/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { "shebang-regex": "^1.0.0" @@ -26531,7 +26578,7 @@ "node_modules/sane/node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -26540,7 +26587,7 @@ "node_modules/sane/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -26581,9 +26628,9 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -26615,12 +26662,12 @@ "node_modules/scrollparent": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.0.1.tgz", - "integrity": "sha1-cV1bnMV3YPsivczDvvtb/gaxoxc=" + "integrity": "sha512-HSdN78VMvFCSGCkh0oYX/tY4R3P1DW61f8+TeZZ4j2VLgfwvw0bpRSOv4PCVKisktIwbzHCfZsx+rLbbDBqIBA==" }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "node_modules/selfsigned": { @@ -26677,7 +26724,7 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/send/node_modules/ms": { @@ -26698,7 +26745,7 @@ "node_modules/serve-favicon": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", - "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "integrity": "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==", "dev": true, "dependencies": { "etag": "~1.8.1", @@ -26726,7 +26773,7 @@ "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -26783,7 +26830,7 @@ "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { @@ -26795,7 +26842,7 @@ "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "engines": { "node": ">= 0.6" @@ -26819,7 +26866,7 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "node_modules/set-value": { @@ -26861,7 +26908,7 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "node_modules/setprototypeof": { @@ -26951,7 +26998,7 @@ "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, "dependencies": { "is-arrayish": "^0.3.1" @@ -27225,13 +27272,13 @@ "node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/snapdragon/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -27461,7 +27508,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/ssri": { @@ -27485,7 +27532,7 @@ "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true, "engines": { "node": "*" @@ -27513,9 +27560,9 @@ } }, "node_modules/stackframe": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", - "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true }, "node_modules/state-toggle": { @@ -27531,7 +27578,7 @@ "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "dependencies": { "define-property": "^0.2.5", @@ -27747,13 +27794,13 @@ "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true }, "node_modules/string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", "dev": true }, "node_modules/string-length": { @@ -27888,7 +27935,7 @@ "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -28404,9 +28451,9 @@ } }, "node_modules/terser": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", - "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -28422,15 +28469,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "engines": { @@ -28551,7 +28598,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/throat": { @@ -28621,7 +28668,7 @@ "node_modules/timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, "node_modules/tiny-warning": { @@ -28638,13 +28685,13 @@ "node_modules/to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "engines": { "node": ">=4" } @@ -28652,7 +28699,7 @@ "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "dependencies": { "kind-of": "^3.0.2" @@ -28753,13 +28800,13 @@ "node_modules/trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", "dev": true }, "node_modules/trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", "dev": true, "optional": true, "engines": { @@ -28947,7 +28994,7 @@ "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -29050,7 +29097,7 @@ "node_modules/tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, "node_modules/type-check": { @@ -29102,7 +29149,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "node_modules/typedarray-to-buffer": { @@ -29115,9 +29162,9 @@ } }, "node_modules/typescript": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -29128,9 +29175,9 @@ } }, "node_modules/uglify-js": { - "version": "3.15.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", - "integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.0.tgz", + "integrity": "sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==", "dev": true, "optional": true, "bin": { @@ -29260,13 +29307,13 @@ "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "dev": true }, "node_modules/uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", "dev": true }, "node_modules/unique-filename": { @@ -29407,7 +29454,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { "node": ">= 0.8" @@ -29416,13 +29463,13 @@ "node_modules/unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "dev": true }, "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "dependencies": { "has-value": "^0.3.1", @@ -29504,14 +29551,14 @@ "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "dependencies": { "punycode": "1.3.2", @@ -29558,7 +29605,7 @@ "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, "node_modules/use": { @@ -29623,7 +29670,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "node_modules/util.promisify": { @@ -29650,13 +29697,13 @@ "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", "dev": true }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "engines": { "node": ">= 0.4.0" @@ -29674,7 +29721,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -29682,7 +29728,7 @@ "node_modules/uuid-browser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", - "integrity": "sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=", + "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", "dev": true }, "node_modules/v8-compile-cache": { @@ -29706,9 +29752,9 @@ } }, "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -29727,7 +29773,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "engines": { "node": ">= 0.8" @@ -29828,9 +29874,9 @@ } }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -29864,7 +29910,7 @@ "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "optional": true, "dependencies": { @@ -30147,7 +30193,7 @@ "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "optional": true, "dependencies": { @@ -30187,9 +30233,9 @@ } }, "node_modules/webpack": { - "version": "5.72.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", - "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -30234,18 +30280,18 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", "colorette": "^2.0.14", "commander": "^7.0.0", - "execa": "^5.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", @@ -30258,6 +30304,10 @@ "engines": { "node": ">=10.13.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "peerDependencies": { "webpack": "4.x.x || 5.x.x" }, @@ -30392,7 +30442,7 @@ "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "dependencies": { "remove-trailing-separator": "^1.0.1" @@ -30703,7 +30753,7 @@ "node_modules/webpack-dev-server/node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "dependencies": { "errno": "^0.1.3", @@ -30788,7 +30838,7 @@ "node_modules/webpack-dev-server/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -30838,7 +30888,7 @@ "node_modules/webpack-dev-server/node_modules/resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", "dev": true, "dependencies": { "resolve-from": "^3.0.0" @@ -30850,7 +30900,7 @@ "node_modules/webpack-dev-server/node_modules/resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, "engines": { "node": ">=4" @@ -30917,7 +30967,7 @@ "node_modules/webpack-dev-server/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -30941,7 +30991,7 @@ "node_modules/webpack-dev-server/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -31259,7 +31309,7 @@ "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "node_modules/wide-align": { @@ -31368,9 +31418,9 @@ } }, "node_modules/winston/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "node_modules/winston/node_modules/readable-stream": { @@ -31428,7 +31478,7 @@ "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "node_modules/worker-farm": { @@ -31502,7 +31552,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/write-file-atomic": { @@ -31518,9 +31568,9 @@ } }, "node_modules/ws": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", - "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -31541,7 +31591,7 @@ "node_modules/x-default-browser": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz", - "integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=", + "integrity": "sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==", "dev": true, "bin": { "x-default-browser": "bin/x-default-browser.js" @@ -31665,15 +31715,15 @@ } }, "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", "dev": true }, "@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", @@ -31682,10 +31732,10 @@ "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", + "@babel/parser": "^7.18.5", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -31960,9 +32010,9 @@ } }, "@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==" + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.17.12", @@ -32537,9 +32587,9 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", - "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.16.7", @@ -32570,9 +32620,9 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", - "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.17.12" @@ -32906,9 +32956,9 @@ } }, "@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", "requires": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", @@ -32916,8 +32966,8 @@ "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", "debug": "^4.1.0", "globals": "^11.1.0" } @@ -32982,9 +33032,9 @@ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, "@emotion/is-prop-valid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz", - "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz", + "integrity": "sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA==", "requires": { "@emotion/memoize": "^0.7.4" } @@ -33823,7 +33873,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -33945,9 +33995,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -34015,18 +34065,18 @@ } }, "@storybook/addon-actions": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.6.tgz", - "integrity": "sha512-AGtzpWOU/B0FxcqFDM7E/KSHQyr6tMbVts77JlAKCIbwqEncD1LIQoz9CyMdbr1jynkep0Ck0JjcDdmp7CXVoQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.9.tgz", + "integrity": "sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -34042,18 +34092,18 @@ } }, "@storybook/addon-backgrounds": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.6.tgz", - "integrity": "sha512-D2khx57WBvQ2Ta/UMCZa8KQwAzVunk/oKmTJd6vau+1bm88wEx3a2seI9tZtC6nVHgHaBYgoH8os+7XpmlYlVQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.9.tgz", + "integrity": "sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -34063,49 +34113,49 @@ } }, "@storybook/addon-controls": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.6.tgz", - "integrity": "sha512-pJz2ltdL8d9/2wX1XOMdXeGwMNoBX5hIXkNfBCvBfOCmeVEXOczPOZARvwx4QTqmMSu1KikhFIGT64wwoETmBg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.9.tgz", + "integrity": "sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/node-logger": "6.5.6", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/node-logger": "6.5.9", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" } }, "@storybook/addon-docs": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.6.tgz", - "integrity": "sha512-18MOB4Cvr10ibRlA58Y2MqaC0EM9NG758iSjweThaU4kZtSBSDn8R2qBLDGQPwEFkww+4+oAFXxR5/J0qO2xEw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.9.tgz", + "integrity": "sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==", "dev": true, "requires": { "@babel/plugin-transform-react-jsx": "^7.12.12", "@babel/preset-env": "^7.12.11", "@jest/transform": "^26.6.2", "@mdx-js/react": "^1.6.22", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.6", + "@storybook/docs-tools": "6.5.9", "@storybook/mdx1-csf": "^0.0.1", - "@storybook/node-logger": "6.5.6", - "@storybook/postinstall": "6.5.6", - "@storybook/preview-web": "6.5.6", - "@storybook/source-loader": "6.5.6", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/node-logger": "6.5.9", + "@storybook/postinstall": "6.5.9", + "@storybook/preview-web": "6.5.9", + "@storybook/source-loader": "6.5.9", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", "babel-loader": "^8.0.0", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", @@ -34119,39 +34169,39 @@ } }, "@storybook/addon-essentials": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.6.tgz", - "integrity": "sha512-n+kDN/AI6NDJNJjofYXjGBh618Yg17DuRppFdXROnocwndKufuImF+/tRaQ0YLwXmnULpAiFSGbja6F0pc7fOw==", - "dev": true, - "requires": { - "@storybook/addon-actions": "6.5.6", - "@storybook/addon-backgrounds": "6.5.6", - "@storybook/addon-controls": "6.5.6", - "@storybook/addon-docs": "6.5.6", - "@storybook/addon-measure": "6.5.6", - "@storybook/addon-outline": "6.5.6", - "@storybook/addon-toolbars": "6.5.6", - "@storybook/addon-viewport": "6.5.6", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/node-logger": "6.5.6", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.9.tgz", + "integrity": "sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==", + "dev": true, + "requires": { + "@storybook/addon-actions": "6.5.9", + "@storybook/addon-backgrounds": "6.5.9", + "@storybook/addon-controls": "6.5.9", + "@storybook/addon-docs": "6.5.9", + "@storybook/addon-measure": "6.5.9", + "@storybook/addon-outline": "6.5.9", + "@storybook/addon-toolbars": "6.5.9", + "@storybook/addon-viewport": "6.5.9", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/node-logger": "6.5.9", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0" } }, "@storybook/addon-links": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.6.tgz", - "integrity": "sha512-a4+9HLc6+M9qv5Fvezoc8AJYze8HDfHlsEFvCY1AtQiyVEmxFRNBdAp6w+/teNzihXWY78EKRcGM0jjyt+9mWg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.9.tgz", + "integrity": "sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.6", + "@storybook/router": "6.5.9", "@types/qs": "^6.9.5", "core-js": "^3.8.2", "global": "^4.4.0", @@ -34162,32 +34212,32 @@ } }, "@storybook/addon-measure": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.6.tgz", - "integrity": "sha512-V+KKoCTMVakExVmNiSu/1AHVsOgxUt62wo/Xm2fJvtRz+y/5LFFCLnENcN7/8qDTya8vgaHY7FR69zHvGiR4SA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.9.tgz", + "integrity": "sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/addon-outline": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.6.tgz", - "integrity": "sha512-/Bgo+yQSDwriAZ7pnO0kzaiyMg77bBgieEhrPpjb+AMlWIBU2j9rZYVdmi0egYy075Hle3E/hLwjG4FT4QIo5A==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.9.tgz", + "integrity": "sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "global": "^4.4.0", @@ -34196,32 +34246,32 @@ } }, "@storybook/addon-toolbars": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.6.tgz", - "integrity": "sha512-9FvnuvLj8QdtSeY7QEuqJieNckwhIkSdmovaFzeToRzJso3eAmqoo6I6pp444QVVnMzrCl5As+2uAxhgaDLEXg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.9.tgz", + "integrity": "sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" } }, "@storybook/addon-viewport": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.6.tgz", - "integrity": "sha512-zjBjMLfeqflHW7W7iFL5EvxtGbUg+4j+yHjONnKKpZteUjrX4fsBBMOL56mQsC0bAJEQCb3w2SFFskYBa4CzIw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.9.tgz", + "integrity": "sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -34230,18 +34280,18 @@ } }, "@storybook/addons": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.6.tgz", - "integrity": "sha512-Ktv7Pk4iq+8+6yifXu3bOiC1ii9VXD93mmha7XcrdW+wl8jti9Ll5jLKEN0lAhd+Qupz4R0g9+znpRXk5n0pBg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz", + "integrity": "sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ==", "dev": true, "requires": { - "@storybook/api": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/api": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/router": "6.5.9", + "@storybook/theming": "6.5.9", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", @@ -34249,18 +34299,18 @@ } }, "@storybook/api": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.6.tgz", - "integrity": "sha512-GHhjb6mji+R+FWytx7MIOKqca49ZXjvnIPpyp5zXAtgdk2Yn2j8C0MRPO1ovh4nHKWVvx6larmhskRxfUjk06g==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz", + "integrity": "sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA==", "dev": true, "requires": { - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.6", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -34274,28 +34324,28 @@ } }, "@storybook/builder-webpack4": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.6.tgz", - "integrity": "sha512-/nACQ5SoddCs1geGUKXrrXiYDvYdTVXWXc0L6mXawjYANBeWIkAKFlhRpoXGN/KiFuuExO2+UgNCKlUyD0a51Q==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz", + "integrity": "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==", "dev": true, "requires": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/preview-web": "6.5.6", - "@storybook/router": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/preview-web": "6.5.9", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", + "@storybook/ui": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", @@ -34335,9 +34385,9 @@ "dev": true }, "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "@webassemblyjs/ast": { @@ -34815,7 +34865,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -34958,7 +35008,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -35007,7 +35057,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -35168,7 +35218,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pkg-dir": { @@ -35280,27 +35330,27 @@ } }, "@storybook/builder-webpack5": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.6.tgz", - "integrity": "sha512-inR1xh16barDutfoxv8MCTQTztASLpewDsu6YDs87ifYlYfWuS/NlbY290EWj4D8je1LY53Rpbpkorj/49wCeA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz", + "integrity": "sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ==", "dev": true, "requires": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/preview-web": "6.5.6", - "@storybook/router": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/preview-web": "6.5.9", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", - "@storybook/theming": "6.5.6", + "@storybook/store": "6.5.9", + "@storybook/theming": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.0.0", "babel-plugin-named-exports-order": "^0.0.2", @@ -35326,22 +35376,22 @@ }, "dependencies": { "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true } } }, "@storybook/channel-postmessage": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.6.tgz", - "integrity": "sha512-kyYO84hItSE1SaEI1xpMYqJOM3MJ2Y2WHx1Hxu5prq2T2cIgUGURyNf3+5G0BLTf2XGNEN/7YYv9rHmQ9GUz8g==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz", + "integrity": "sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw==", "dev": true, "requires": { - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "qs": "^6.10.0", @@ -35349,22 +35399,22 @@ } }, "@storybook/channel-websocket": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.6.tgz", - "integrity": "sha512-d09LfP4zVYCCeuCBn+R41jINUBzhRt78tKk5e1wEsMklV5p+l8Zoi3oJD/UQ/EgtMcnC1dKi3WfAPyx3U/wdgg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz", + "integrity": "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==", "dev": true, "requires": { - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", "core-js": "^3.8.2", "global": "^4.4.0", "telejson": "^6.0.8" } }, "@storybook/channels": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.6.tgz", - "integrity": "sha512-rS0Dk9fSiMBsPvkiMo9CuvDCoXbGmYKiX/juS3F4u+sedhH+XtH4jFf49lJWoNVAE6eJPFyXATU4p1mm8Z85kQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz", + "integrity": "sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g==", "dev": true, "requires": { "core-js": "^3.8.2", @@ -35373,18 +35423,18 @@ } }, "@storybook/client-api": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.6.tgz", - "integrity": "sha512-+PV3eZ0Hr15volHE/ds6pxsoitsHkUuwGMVLUGvX5JuepDlhWOkQzCxPw2BuABJl6x40/w/Pj2DIyTrg37ZThg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.9.tgz", + "integrity": "sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "@types/qs": "^6.9.5", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -35401,9 +35451,9 @@ } }, "@storybook/client-logger": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.6.tgz", - "integrity": "sha512-hJzhn5EO0S4fUAZkKzBGNACJfupV9n+7TSIaU4mpVP+/ImS9uPdorAAtyqp5HC6R6vA67POoSgX0+qPgZnWvaw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz", + "integrity": "sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg==", "dev": true, "requires": { "core-js": "^3.8.2", @@ -35411,16 +35461,17 @@ } }, "@storybook/components": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.6.tgz", - "integrity": "sha512-Qh40wMkqWD3ZbGqxqa0pi5JFWazIbcZWbqUakH9zARgLk+LBrpJvPuu7GmQrDUtJTA33H4tD/4ujt6AibnaQwQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.9.tgz", + "integrity": "sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ==", "dev": true, "requires": { - "@storybook/client-logger": "6.5.6", + "@storybook/client-logger": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "@types/react-syntax-highlighter": "11.0.5", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", "qs": "^6.10.0", "react-syntax-highlighter": "^15.4.5", "regenerator-runtime": "^0.13.7", @@ -35428,31 +35479,31 @@ } }, "@storybook/core": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.6.tgz", - "integrity": "sha512-DS6Q8SrEXBDoDS2K865NoWggSXEg8L9p+jx8sILLkLrr2QXJT0x6YIFSwEh6rGwkahxDV5ikON/rW39Wlxzk1w==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz", + "integrity": "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==", "dev": true, "requires": { - "@storybook/core-client": "6.5.6", - "@storybook/core-server": "6.5.6" + "@storybook/core-client": "6.5.9", + "@storybook/core-server": "6.5.9" } }, "@storybook/core-client": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.6.tgz", - "integrity": "sha512-Xmjt95GYYVRp7ra49Y955BLH/FYlOmuLC4aFTGurjmCay7zUqvExxFk9AUKOkyBb1/S/8iQCG59D0ES6YWoMRw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz", + "integrity": "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/channel-websocket": "6.5.6", - "@storybook/client-api": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/channel-websocket": "6.5.9", + "@storybook/client-api": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/preview-web": "6.5.6", - "@storybook/store": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/preview-web": "6.5.9", + "@storybook/store": "6.5.9", + "@storybook/ui": "6.5.9", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", @@ -35466,9 +35517,9 @@ } }, "@storybook/core-common": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.6.tgz", - "integrity": "sha512-+k+D9CzyFHNAy59jt2sfKnb/KU/nXO1hvBVaJAhdocjrDMvHtwYuXWWQrWYX3/VGp9wCa9TC0JG1kz+DWSYXaQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz", + "integrity": "sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -35493,7 +35544,7 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.5.6", + "@storybook/node-logger": "6.5.9", "@storybook/semver": "^7.3.2", "@types/node": "^14.0.10 || ^16.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -35540,9 +35591,9 @@ } }, "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "@webassemblyjs/ast": { @@ -35919,7 +35970,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -36049,7 +36100,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -36114,32 +36165,32 @@ } }, "@storybook/core-events": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.6.tgz", - "integrity": "sha512-bzktgM1i0QPrayH1ANbKb7nYpehSpi5QHWps2vVQbvtpI/pGlTtpde1e87vfAt74Bvsvd3/9IpQkQKteDODAkA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz", + "integrity": "sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q==", "dev": true, "requires": { "core-js": "^3.8.2" } }, "@storybook/core-server": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.6.tgz", - "integrity": "sha512-65kwbSXsKPl/0BKjGr9RTihv6jYGGIG/prfLscZPtm3u4/Z8ZxCX94rznztxcUatjLlUfKJ8iimizhUOIa0FJA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz", + "integrity": "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.5.6", - "@storybook/core-client": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/builder-webpack4": "6.5.9", + "@storybook/core-client": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/csf-tools": "6.5.6", - "@storybook/manager-webpack4": "6.5.6", - "@storybook/node-logger": "6.5.6", + "@storybook/csf-tools": "6.5.9", + "@storybook/manager-webpack4": "6.5.9", + "@storybook/node-logger": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", - "@storybook/telemetry": "6.5.6", + "@storybook/store": "6.5.9", + "@storybook/telemetry": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", @@ -36176,9 +36227,9 @@ }, "dependencies": { "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "@webassemblyjs/ast": { @@ -36537,7 +36588,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -36675,7 +36726,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -36751,9 +36802,9 @@ } }, "@storybook/csf-tools": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.6.tgz", - "integrity": "sha512-Gfah+5mEUoVG7v+E23svRjKAh546KCPIcwAvGU3m26j3hNbpvKq8edKDr+CCMfehG8VEGSZWfZPsgX04c/ItcA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz", + "integrity": "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -36773,14 +36824,14 @@ } }, "@storybook/docs-tools": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.6.tgz", - "integrity": "sha512-QwOFWVzce4m5fQaC39rSUBVzNplpcSfGyIN3rBBen4wHllj43y7i30A69jSW24M15CKdcJmfDaLwN00s7y3ZHQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz", + "integrity": "sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==", "dev": true, "requires": { "@babel/core": "^7.12.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "core-js": "^3.8.2", "doctrine": "^3.0.0", "lodash": "^4.17.21", @@ -36788,20 +36839,20 @@ } }, "@storybook/manager-webpack4": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.6.tgz", - "integrity": "sha512-GaUT1bNmGebq8Ci52M07XF0Zn9Ak7L8ZaKn8rdBJ4VSPhg0vEAeo7trD3aur3+h/3gLQmK64LhiNSOfvZfQDAw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz", + "integrity": "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==", "dev": true, "requires": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/core-client": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/theming": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/core-client": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/theming": "6.5.9", + "@storybook/ui": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "babel-loader": "^8.0.0", @@ -36837,9 +36888,9 @@ "dev": true }, "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "@webassemblyjs/ast": { @@ -37334,7 +37385,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -37477,7 +37528,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -37535,7 +37586,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -37696,7 +37747,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pkg-dir": { @@ -37801,20 +37852,20 @@ } }, "@storybook/manager-webpack5": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.6.tgz", - "integrity": "sha512-U5OIMs1PNjZZRjOvV2Bo05+1dzvV30o4Lw5sgeyH9Qr08p79nHT4iFSaVF2W01zGja6XlneqFB9hBqBHoocJWQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.9.tgz", + "integrity": "sha512-J1GamphSsaZLNBEhn1awgxzOS8KfvzrHtVlAm2VHwW7j1E1DItROFJhGCgduYYuBiN9eqm+KIYrxcr6cRuoolQ==", "dev": true, "requires": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.6", - "@storybook/core-client": "6.5.6", - "@storybook/core-common": "6.5.6", - "@storybook/node-logger": "6.5.6", - "@storybook/theming": "6.5.6", - "@storybook/ui": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/core-client": "6.5.9", + "@storybook/core-common": "6.5.9", + "@storybook/node-logger": "6.5.9", + "@storybook/theming": "6.5.9", + "@storybook/ui": "6.5.9", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", @@ -37841,9 +37892,9 @@ }, "dependencies": { "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true }, "ansi-styles": { @@ -37917,9 +37968,9 @@ } }, "@storybook/node-logger": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.6.tgz", - "integrity": "sha512-bT0R0skDWW9iJS8AIG9zfSF8XzTffdc8hRlpXUF9+VQKds+8H9FyoV4tl8ySCuNNunt8Ic9GvW3Fakq49FUcgw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.9.tgz", + "integrity": "sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -37981,26 +38032,26 @@ } }, "@storybook/postinstall": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.6.tgz", - "integrity": "sha512-MPrlmVOXbfAiSaGzG1jgUM4l2zXOI9h3pvrh+0dQLJYP3tjO+5RNmJKMjH8c1PkTcAeoHkp1gUYZ0KKy2imRRQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.9.tgz", + "integrity": "sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ==", "dev": true, "requires": { "core-js": "^3.8.2" } }, "@storybook/preview-web": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.6.tgz", - "integrity": "sha512-fjWfe1ZqtMMS3UFiL6XDYVR0T5QVhXIp/Ax19tuW2VJ/NL/zl4+c9v9lx5jSY5iD5tKwYYRrbH8VS2Pm/CNAzA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.9.tgz", + "integrity": "sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/channel-postmessage": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/channel-postmessage": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", @@ -38014,24 +38065,24 @@ } }, "@storybook/react": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.6.tgz", - "integrity": "sha512-lU2ggvZe9PbKWK4cbwHI6eDT7tlRAqdx489kLrfKhGTUVE8zhc/uosVEMpxbxS/zf1YYnXumr2DH1Uw2S3JeqA==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz", + "integrity": "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==", "dev": true, "requires": { "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core": "6.5.6", - "@storybook/core-common": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core": "6.5.9", + "@storybook/core-common": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.6", - "@storybook/node-logger": "6.5.6", + "@storybook/docs-tools": "6.5.9", + "@storybook/node-logger": "6.5.9", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.6", + "@storybook/store": "6.5.9", "@types/estree": "^0.0.51", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", @@ -38057,9 +38108,9 @@ }, "dependencies": { "@types/node": { - "version": "16.11.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", - "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==", + "version": "16.11.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.40.tgz", + "integrity": "sha512-7bOWglXUO6f21NG3YDI7hIpeMX3M59GG+DzZuzX2EkFKYUnRoxq3EOg4R0KNv2hxryY9M3UUqG5akwwsifrukw==", "dev": true } } @@ -38148,13 +38199,15 @@ } }, "@storybook/router": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.6.tgz", - "integrity": "sha512-SL9X/+bkJxafH5V9r65liMgs+EvGddMCQ/4JP/p3GIu6+2G3pW613Ww5sqCBCB1R4zoYcsMT7F1q/D5NWByVHg==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz", + "integrity": "sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg==", "dev": true, "requires": { - "@storybook/client-logger": "6.5.6", + "@storybook/client-logger": "6.5.9", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7" } }, @@ -38208,13 +38261,13 @@ } }, "@storybook/source-loader": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.6.tgz", - "integrity": "sha512-KsV9DU3JucYjWHq55f1bOu52mprgSpTIRUnvK2BojQdjY+kqN2ow0pP/I9FZzNpEKKsGFWdnREfYM5dYHZyvLw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.9.tgz", + "integrity": "sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "estraverse": "^5.2.0", @@ -38226,14 +38279,14 @@ } }, "@storybook/store": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.6.tgz", - "integrity": "sha512-ftU40jN5IV26Mj4QjqgsooWFYXDNtcwByH9JrbIlZv7L8HySqVHqeOMrk2Bbt2EkM3urhc5yd0Bbr8EuKlbZVQ==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.9.tgz", + "integrity": "sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA==", "dev": true, "requires": { - "@storybook/addons": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/core-events": "6.5.6", + "@storybook/addons": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/core-events": "6.5.9", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", @@ -38249,13 +38302,13 @@ } }, "@storybook/telemetry": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.6.tgz", - "integrity": "sha512-l0vbStCgVA9u0ITvowZ1LNxmf32vAAdnPqSmB9DdA3ZO2wCpttW9rPyg1O4OV8c5uq7QJZ7mrKZ04p9SLo8wrw==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz", + "integrity": "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==", "dev": true, "requires": { - "@storybook/client-logger": "6.5.6", - "@storybook/core-common": "6.5.6", + "@storybook/client-logger": "6.5.9", + "@storybook/core-common": "6.5.9", "chalk": "^4.1.0", "core-js": "^3.8.2", "detect-package-manager": "^2.0.1", @@ -38320,32 +38373,35 @@ } }, "@storybook/theming": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.6.tgz", - "integrity": "sha512-JEKl9gdVD2Ef9xSwRtaq6EpjJD5xe7X2OP/4e61ucrp/rSOk7SOpYUZYQh6PhYLGhnGbgQkedVVc9CUhK8bs6Q==", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz", + "integrity": "sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw==", "dev": true, "requires": { - "@storybook/client-logger": "6.5.6", + "@storybook/client-logger": "6.5.9", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", "regenerator-runtime": "^0.13.7" } }, "@storybook/ui": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.6.tgz", - "integrity": "sha512-EU/YGczcA/v7jHlXIJ7CytK+FH2X9tlsjQbcQW8niPkwtk/gvG7vTfNhanbDlWMKnDLuFWhyHJ33nrW2mIyqkw==", - "dev": true, - "requires": { - "@storybook/addons": "6.5.6", - "@storybook/api": "6.5.6", - "@storybook/channels": "6.5.6", - "@storybook/client-logger": "6.5.6", - "@storybook/components": "6.5.6", - "@storybook/core-events": "6.5.6", - "@storybook/router": "6.5.6", + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz", + "integrity": "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.9", + "@storybook/api": "6.5.9", + "@storybook/channels": "6.5.9", + "@storybook/client-logger": "6.5.9", + "@storybook/components": "6.5.9", + "@storybook/core-events": "6.5.9", + "@storybook/router": "6.5.9", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.6", + "@storybook/theming": "6.5.9", "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0" } @@ -38491,9 +38547,9 @@ } }, "@types/eslint": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", + "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", "dev": true, "requires": { "@types/estree": "*", @@ -38662,9 +38718,9 @@ "dev": true }, "@types/node": { - "version": "17.0.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", - "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==", + "version": "17.0.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.43.tgz", + "integrity": "sha512-jnUpgw8fL9kP2iszfIDyBQtw5Mf4/XSqy0Loc1J9pI14ejL83XcCEvSf50Gs/4ET0I9VCCDoOfufQysj0S66xA==", "dev": true }, "@types/node-fetch": { @@ -38811,9 +38867,9 @@ "dev": true }, "@types/uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz", + "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -38825,6 +38881,12 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, "@types/webpack": { "version": "4.41.32", "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", @@ -38857,9 +38919,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -39249,25 +39311,25 @@ } }, "@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "requires": {} }, @@ -39716,7 +39778,7 @@ "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, "requires": { "inherits": "2.0.1" @@ -39844,7 +39906,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -39853,7 +39915,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -40296,7 +40358,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -40316,7 +40378,7 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", "dev": true } } @@ -40482,8 +40544,17 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -40737,15 +40808,15 @@ } }, "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.3", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" }, "dependencies": { @@ -41028,9 +41099,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001344", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", - "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "version": "1.0.30001354", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001354.tgz", + "integrity": "sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg==", "dev": true }, "capture-exit": { @@ -41377,9 +41448,9 @@ "dev": true }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "colorspace": { @@ -41480,7 +41551,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -41661,18 +41732,18 @@ } }, "core-js": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.7.tgz", - "integrity": "sha512-Jt8SReuDKVNZnZEzyEQT5eK6T2RRCXkfTq7Lo09kpm+fHjgGewSbNjV+Wt4yZMhPDdzz2x1ulI5z/w4nxpBseg==", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.1.tgz", + "integrity": "sha512-wfMYHWi1WQjpgZNC9kAlN4ut04TM9fUTdi7CqIoTVM7yaiOUQTklOzfb+oWH3r9edQcT3F887swuVmxrV+CC8w==", "dev": true }, "core-js-compat": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz", - "integrity": "sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA==", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.1.tgz", + "integrity": "sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A==", "dev": true, "requires": { - "browserslist": "^4.20.3", + "browserslist": "^4.20.4", "semver": "7.0.0" }, "dependencies": { @@ -41685,9 +41756,9 @@ } }, "core-js-pure": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.7.tgz", - "integrity": "sha512-wTriFxiZI+C8msGeh7fJcbC/a0V8fdInN1oS2eK79DMBGs8iIJiXhtFJCiT3rBa8w6zroHWW3p8ArlujZ/Mz+w==", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.1.tgz", + "integrity": "sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg==", "dev": true }, "core-util-is": { @@ -41947,7 +42018,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true } } @@ -41961,7 +42032,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -42356,7 +42427,7 @@ "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -42366,7 +42437,7 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true } } @@ -42591,7 +42662,7 @@ "untildify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "integrity": "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==", "dev": true, "optional": true, "requires": { @@ -42656,7 +42727,7 @@ "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "requires": { "path-key": "^2.0.0" @@ -42665,7 +42736,7 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true }, "semver": { @@ -42677,7 +42748,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -42686,7 +42757,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "which": { @@ -42766,7 +42837,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } @@ -42876,7 +42947,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -43171,9 +43242,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.141", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", - "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "version": "1.4.156", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.156.tgz", + "integrity": "sha512-/Wj5NC7E0wHaMCdqxWz9B0lv7CcycDTiHyXCtbbu3pXM9TV2AOp8BtMqkVuqvJNdEvltBG6LxT2Q+BxY4LUCIA==", "dev": true }, "elliptic": { @@ -43300,12 +43371,12 @@ } }, "error-stack-parser": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", - "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, "requires": { - "stackframe": "^1.1.1" + "stackframe": "^1.3.4" } }, "es-abstract": { @@ -43676,7 +43747,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -43685,13 +43756,13 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } @@ -43738,7 +43809,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -44062,7 +44133,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -44158,9 +44229,18 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -44409,7 +44489,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -44465,7 +44545,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pkg-dir": { @@ -44896,14 +44976,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -45699,7 +45779,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -48325,7 +48405,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "optional": true, "requires": { @@ -48335,14 +48415,14 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "optional": true, "requires": { @@ -48485,7 +48565,7 @@ "lz-string": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==", "dev": true }, "make-dir": { @@ -48527,26 +48607,26 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, "optional": true }, "map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -48618,13 +48698,13 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "mem": { @@ -48657,7 +48737,7 @@ "memoizerific": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", "dev": true, "requires": { "map-or-similar": "^1.5.0" @@ -48708,7 +48788,7 @@ "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", "dev": true, "optional": true, "requires": { @@ -48738,7 +48818,7 @@ "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "optional": true, "requires": { @@ -48748,7 +48828,7 @@ "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "optional": true, "requires": { @@ -48760,14 +48840,14 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "optional": true, "requires": { @@ -48779,7 +48859,7 @@ "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "optional": true, "requires": { @@ -48792,7 +48872,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { @@ -48810,7 +48890,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "microevent.ts": { @@ -48877,7 +48957,7 @@ "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "requires": { "dom-walk": "^0.1.0" @@ -48909,7 +48989,7 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "minimatch": { @@ -49010,7 +49090,7 @@ "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", "dev": true, "requires": { "aproba": "^1.1.1", @@ -49056,7 +49136,7 @@ "multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true }, "nan": { @@ -49094,7 +49174,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "negotiator": { @@ -49134,7 +49214,7 @@ "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", "dev": true, "requires": { "minimatch": "^3.0.2" @@ -49152,19 +49232,19 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -49182,7 +49262,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-libs-browser": { @@ -49231,7 +49311,7 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, "readable-stream": { @@ -49315,7 +49395,7 @@ "noms": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -49351,7 +49431,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-url": { @@ -49402,7 +49482,7 @@ "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", "dev": true }, "nwsapi": { @@ -49414,12 +49494,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -49515,7 +49595,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "requires": { "isobject": "^3.0.0" @@ -49580,7 +49660,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -49627,7 +49707,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -49706,13 +49786,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -49723,13 +49803,13 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, "optional": true }, @@ -49753,7 +49833,7 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true }, "p-each-series": { @@ -49791,7 +49871,7 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-limit": { @@ -49977,7 +50057,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, "path-browserify": { @@ -49989,7 +50069,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, "path-exists": { @@ -50001,13 +50081,13 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "path-key": { @@ -50025,7 +50105,7 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "path-type": { @@ -50050,7 +50130,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "picocolors": { "version": "0.2.1", @@ -50072,13 +50152,13 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -50156,7 +50236,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true }, "postcss": { @@ -50764,7 +50844,7 @@ "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true }, "prismjs": { @@ -50776,7 +50856,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true }, "process-nextick-args": { @@ -50794,7 +50874,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise.allsettled": { @@ -50871,7 +50951,7 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "psl": { @@ -50944,13 +51024,13 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -50959,13 +51039,13 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "dev": true }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true }, "querystringify": { @@ -51138,12 +51218,13 @@ } }, "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" } }, "react-clientside-effect": { @@ -51162,34 +51243,12 @@ "chroma-js": "^1.3.4", "rc-slider": "^8.4.0", "react-select": "^1.2.1" - }, - "dependencies": { - "react-select": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.3.0.tgz", - "integrity": "sha512-g/QAU1HZrzSfxkwMAo/wzi6/ezdWye302RGZevsATec07hI/iSxcpB1hejFIp7V63DJ8mwuign6KmB3VjdlinQ==", - "requires": { - "classnames": "^2.2.4", - "prop-types": "^15.5.8", - "react-input-autosize": "^2.1.2" - }, - "dependencies": { - "react-input-autosize": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz", - "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==", - "requires": { - "prop-types": "^15.5.8" - } - } - } - } } }, "react-docgen": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.1.tgz", - "integrity": "sha512-TZqD1aApirw86NV6tHrmDoxUn8wlinkVyutFarzbdwuhEurAzDN0y5sSj64o+BrHLPqjwpH9tunpfwgy+3Uyww==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.2.tgz", + "integrity": "sha512-4Z5XYpHsn2bbUfaflxoS30VhUvQLBe4GCwwM5v1e1FUOeDdaoJi6wUGSmYp6OdXYEISEAOEIaSPBk4iezNCKBw==", "dev": true, "requires": { "@babel/core": "^7.7.5", @@ -51220,13 +51279,14 @@ "requires": {} }, "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" } }, "react-draggable": { @@ -51275,6 +51335,14 @@ "use-sidecar": "^1.0.5" } }, + "react-input-autosize": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz", + "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==", + "requires": { + "prop-types": "^15.5.8" + } + }, "react-inspector": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", @@ -51311,14 +51379,14 @@ "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", "dev": true }, - "react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "dev": true, + "react-select": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.3.0.tgz", + "integrity": "sha512-g/QAU1HZrzSfxkwMAo/wzi6/ezdWye302RGZevsATec07hI/iSxcpB1hejFIp7V63DJ8mwuign6KmB3VjdlinQ==", "requires": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + "classnames": "^2.2.4", + "prop-types": "^15.5.8", + "react-input-autosize": "^2.1.2" } }, "react-syntax-highlighter": { @@ -51335,15 +51403,23 @@ } }, "react-test-renderer": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", - "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", + "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", "dev": true, "requires": { "object-assign": "^4.1.1", - "react-is": "^17.0.2", - "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.2" + "prop-types": "^15.6.2", + "react-is": "^16.8.6", + "scheduler": "^0.19.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } } }, "react-transition-group": { @@ -51471,7 +51547,7 @@ "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -51509,7 +51585,7 @@ "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", "dev": true, "optional": true, "requires": { @@ -51530,7 +51606,7 @@ "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", "dev": true, "optional": true, "requires": { @@ -51654,7 +51730,7 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, "remark-external-links": { @@ -51759,7 +51835,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -51811,7 +51887,7 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "renderkid": { @@ -51836,13 +51912,13 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dev": true, "optional": true, "requires": { @@ -51852,7 +51928,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -51870,7 +51946,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { @@ -51902,7 +51978,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "dev": true }, "ret": { @@ -51914,7 +51990,7 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, "reusify": { @@ -51926,13 +52002,13 @@ "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", "dev": true }, "rgba-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", "dev": true }, "rimraf": { @@ -51972,7 +52048,7 @@ "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, "requires": { "aproba": "^1.1.1" @@ -51995,7 +52071,7 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "requires": { "ret": "~0.1.10" @@ -52191,7 +52267,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -52200,7 +52276,7 @@ "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "requires": { "path-key": "^2.0.0" @@ -52209,7 +52285,7 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true }, "semver": { @@ -52221,7 +52297,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -52230,13 +52306,13 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -52270,9 +52346,9 @@ } }, "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -52297,12 +52373,12 @@ "scrollparent": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.0.1.tgz", - "integrity": "sha1-cV1bnMV3YPsivczDvvtb/gaxoxc=" + "integrity": "sha512-HSdN78VMvFCSGCkh0oYX/tY4R3P1DW61f8+TeZZ4j2VLgfwvw0bpRSOv4PCVKisktIwbzHCfZsx+rLbbDBqIBA==" }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { @@ -52353,7 +52429,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -52378,7 +52454,7 @@ "serve-favicon": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", - "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "integrity": "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==", "dev": true, "requires": { "etag": "~1.8.1", @@ -52405,7 +52481,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -52453,7 +52529,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { @@ -52465,7 +52541,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } @@ -52485,7 +52561,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "set-value": { @@ -52520,7 +52596,7 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "setprototypeof": { @@ -52595,7 +52671,7 @@ "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, "requires": { "is-arrayish": "^0.3.1" @@ -52773,13 +52849,13 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true } } @@ -53019,7 +53095,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "ssri": { @@ -53040,7 +53116,7 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true }, "stack-utils": { @@ -53061,9 +53137,9 @@ } }, "stackframe": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", - "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true }, "state-toggle": { @@ -53075,7 +53151,7 @@ "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "requires": { "define-property": "^0.2.5", @@ -53274,13 +53350,13 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", "dev": true }, "string-length": { @@ -53382,7 +53458,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true }, "strip-final-newline": { @@ -53789,9 +53865,9 @@ } }, "terser": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", - "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -53815,15 +53891,15 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "dependencies": { @@ -53892,7 +53968,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { @@ -53961,7 +54037,7 @@ "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, "tiny-warning": { @@ -53978,18 +54054,18 @@ "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", "dev": true }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -54070,13 +54146,13 @@ "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", "dev": true }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", "dev": true, "optional": true }, @@ -54207,7 +54283,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } @@ -54290,7 +54366,7 @@ "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, "type-check": { @@ -54327,7 +54403,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typedarray-to-buffer": { @@ -54340,15 +54416,15 @@ } }, "typescript": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", "dev": true }, "uglify-js": { - "version": "3.15.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", - "integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.0.tgz", + "integrity": "sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==", "dev": true, "optional": true }, @@ -54445,13 +54521,13 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "dev": true }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", "dev": true }, "unique-filename": { @@ -54553,19 +54629,19 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "dev": true }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "requires": { "has-value": "^0.3.1", @@ -54632,13 +54708,13 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "dev": true }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "requires": { "punycode": "1.3.2", @@ -54648,7 +54724,7 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true } } @@ -54717,7 +54793,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "util.promisify": { @@ -54735,13 +54811,13 @@ "utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "utrie": { @@ -54755,13 +54831,12 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "uuid-browser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", - "integrity": "sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=", + "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", "dev": true }, "v8-compile-cache": { @@ -54782,9 +54857,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -54802,7 +54877,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "vendors": { @@ -54881,9 +54956,9 @@ } }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -54914,7 +54989,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "optional": true, "requires": { @@ -55157,7 +55232,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "optional": true, "requires": { @@ -55189,9 +55264,9 @@ "dev": true }, "webpack": { - "version": "5.72.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", - "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -55258,18 +55333,18 @@ } }, "webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", "colorette": "^2.0.14", "commander": "^7.0.0", - "execa": "^5.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", @@ -55367,7 +55442,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -55622,7 +55697,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, "requires": { "errno": "^0.1.3", @@ -55686,7 +55761,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pkg-dir": { @@ -55727,7 +55802,7 @@ "resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", "dev": true, "requires": { "resolve-from": "^3.0.0" @@ -55736,7 +55811,7 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true }, "schema-utils": { @@ -55790,7 +55865,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -55808,7 +55883,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -56031,7 +56106,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "wide-align": { @@ -56077,9 +56152,9 @@ }, "dependencies": { "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "readable-stream": { @@ -56158,7 +56233,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "worker-farm": { @@ -56219,7 +56294,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { @@ -56235,16 +56310,16 @@ } }, "ws": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", - "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "dev": true, "requires": {} }, "x-default-browser": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz", - "integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=", + "integrity": "sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==", "dev": true, "requires": { "default-browser-id": "^1.0.4" diff --git a/react/package.json b/react/package.json index d2f56815..02dc416c 100644 --- a/react/package.json +++ b/react/package.json @@ -53,8 +53,10 @@ "notistack": "^1.0.5", "react-colorscales": "^0.7.3", "react-draggable": "^4.4.4", + "react-is": "^17.0.2", "reactour": "^1.18.3", - "styled-components": "^5.2.1" + "styled-components": "^5.2.1", + "uuid": "^8.3.2" }, "devDependencies": { "@babel/core": "^7.13.10", @@ -75,6 +77,7 @@ "@types/react": "^17.0.3", "@types/react-dom": "^17.0.3", "@types/reactour": "^1.18.1", + "@types/uuid": "^8.3.2", "@typescript-eslint/eslint-plugin": "^4.19.0", "@typescript-eslint/parser": "^4.19.0", "babel-jest": "^26.6.3", @@ -92,10 +95,10 @@ "jest": "^26.6.3", "mini-css-extract-plugin": "^1.3.9", "prop-types": "^15.7.2", - "react": "^17.0.2", + "react": "^16.14.0", "react-docgen": "^5.3.1", - "react-dom": "^17.0.2", - "react-test-renderer": "^17.0.2", + "react-dom": "^16.14.0", + "react-test-renderer": "^16.14.0", "rimraf": "^2.7.1", "style-loader": "^2.0.0", "styled-jsx": "^3.4.4", diff --git a/react/src/demo/App.tsx b/react/src/demo/App.tsx index 32b89a0f..911b09cd 100644 --- a/react/src/demo/App.tsx +++ b/react/src/demo/App.tsx @@ -9,12 +9,7 @@ import { Button } from "@material-ui/core"; import React from "react"; -import { - WebvizPluginPlaceholder, - SmartNodeSelector, - Menu, - Dialog, -} from "../lib"; +import { WebvizPluginPlaceholder, SmartNodeSelector, Dialog } from "../lib"; const steps = [ { @@ -53,48 +48,6 @@ const App: React.FC = () => { return (
- - {currentPage.url.split("#").length === 1 && ( -
-

webviz-core-components - Demo page

Please select a - component from the menu to view its demo application. -
- )} {currentPage.url.split("#")[1] === "dialog" && ( <>

Dialog

diff --git a/react/src/lib/components/Backdrop/Backdrop.tsx b/react/src/lib/components/Backdrop/Backdrop.tsx new file mode 100644 index 00000000..165f06b2 --- /dev/null +++ b/react/src/lib/components/Backdrop/Backdrop.tsx @@ -0,0 +1,24 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import "./backdrop.css"; + +export type BackdropProps = { + opacity: number; +}; + +export const Backdrop: React.FC = (props: BackdropProps) => { + return ( +
+ ); +}; + +Backdrop.propTypes = { + opacity: PropTypes.number.isRequired, +}; diff --git a/react/src/lib/components/Backdrop/backdrop.css b/react/src/lib/components/Backdrop/backdrop.css new file mode 100644 index 00000000..7ee469d3 --- /dev/null +++ b/react/src/lib/components/Backdrop/backdrop.css @@ -0,0 +1,9 @@ +.Webviz__Backdrop { + position: fixed; + background-color: white; + z-index: 1198; + width: 100vw; + height: 100vh; + top: 0; + left: 0; +} diff --git a/react/src/lib/components/Backdrop/index.ts b/react/src/lib/components/Backdrop/index.ts new file mode 100644 index 00000000..034ae01f --- /dev/null +++ b/react/src/lib/components/Backdrop/index.ts @@ -0,0 +1 @@ +export { Backdrop } from "./Backdrop"; diff --git a/react/src/lib/components/Menu/Menu.tsx b/react/src/lib/components/Menu/Menu.tsx index d00b1753..ae0caf63 100644 --- a/react/src/lib/components/Menu/Menu.tsx +++ b/react/src/lib/components/Menu/Menu.tsx @@ -2,6 +2,8 @@ import React from "react"; import PropTypes from "prop-types"; import useSize from "@react-hook/size"; +import { useStore } from "../WebvizContentManager"; + import { TopMenu } from "./components/TopMenu/TopMenu"; import { MenuBar } from "./components/MenuBar/MenuBar"; import { MenuDrawer } from "./components/MenuDrawer/MenuDrawer"; @@ -23,6 +25,8 @@ import { } from "./types/navigation"; import "./Menu.css"; +import { StoreActions } from "../WebvizContentManager/WebvizContentManager"; +import { Margins } from "lib/shared-types/margins"; export type ParentProps = { url: string; @@ -141,6 +145,8 @@ export const Menu: React.FC = (props) => { const menuDrawerPosition = props.menuDrawerPosition || "left"; const showLogo = props.showLogo || false; + const webvizContentStore = useStore(); + const [open, setOpen] = React.useState(false); const [pinned, setPinned] = React.useState( localStorage.getItem("pinned") === "true" || @@ -190,7 +196,12 @@ export const Menu: React.FC = (props) => { }, [props.navigationItems, windowSize.width]); React.useEffect(() => { - const bodyMargins = { left: 16, top: 16, right: 16, bottom: 16 }; + const bodyMargins: Margins = { + left: 16, + top: 16, + right: 16, + bottom: 16, + }; if (!pinned) { if (props.menuBarPosition === "left") { @@ -204,9 +215,9 @@ export const Menu: React.FC = (props) => { } } else { if (props.menuDrawerPosition === "left") { - bodyMargins.left += menuDrawerWidth; - } else if (props.menuBarPosition === "right") { - bodyMargins.right += menuDrawerWidth; + bodyMargins.left = menuDrawerWidth + menuContentSpacing; + } else if (props.menuDrawerPosition === "right") { + bodyMargins.right = menuDrawerWidth + menuContentSpacing; } } @@ -214,6 +225,19 @@ export const Menu: React.FC = (props) => { document.body.style.marginTop = bodyMargins.top + "px"; document.body.style.marginRight = bodyMargins.right + "px"; document.body.style.marginBottom = bodyMargins.bottom + "px"; + + if (webvizContentStore) { + webvizContentStore.dispatch({ + type: StoreActions.SetMenuPosition, + payload: { + pinned: pinned, + menuBarPosition: menuBarPosition as MenuBarPosition, + menuDrawerPosition: + menuDrawerPosition as MenuDrawerPosition, + bodyMargins: bodyMargins, + }, + }); + } }, [ menuBarWidth, menuDrawerWidth, diff --git a/react/src/lib/components/Menu/components/MenuBar/MenuBar.css b/react/src/lib/components/Menu/components/MenuBar/MenuBar.css index 0d27e9b0..1350710a 100644 --- a/react/src/lib/components/Menu/components/MenuBar/MenuBar.css +++ b/react/src/lib/components/Menu/components/MenuBar/MenuBar.css @@ -4,6 +4,7 @@ display: flex; align-items: center; padding: 16px; + z-index: 100; } .Menu__MenuBar > * { diff --git a/react/src/lib/components/Overlay/Overlay.css b/react/src/lib/components/Overlay/Overlay.css index edf42714..2de47c53 100644 --- a/react/src/lib/components/Overlay/Overlay.css +++ b/react/src/lib/components/Overlay/Overlay.css @@ -1,9 +1,9 @@ -.Overlay { +.WebvizOverlay { width: 100vw; height: 100vh; position: fixed; left: 0; top: 0; background-color: black; - z-index: 999; + z-index: 1010; } diff --git a/react/src/lib/components/Overlay/Overlay.tsx b/react/src/lib/components/Overlay/Overlay.tsx index 0c08121f..46465b3f 100644 --- a/react/src/lib/components/Overlay/Overlay.tsx +++ b/react/src/lib/components/Overlay/Overlay.tsx @@ -50,7 +50,7 @@ export const Overlay: React.FC = (props) => { return (
0 ? "block" : "none", opacity: opacity, diff --git a/react/src/lib/components/ScrollArea/ScrollArea.tsx b/react/src/lib/components/ScrollArea/ScrollArea.tsx index 14621e94..14b97f64 100644 --- a/react/src/lib/components/ScrollArea/ScrollArea.tsx +++ b/react/src/lib/components/ScrollArea/ScrollArea.tsx @@ -195,7 +195,25 @@ export const ScrollArea: React.FC = (props) => { React.useEffect(() => { const scroll = (e: WheelEvent) => { - e.preventDefault(); + const target = e.target as HTMLElement | undefined; + + const parentElement = target?.parentElement as + | HTMLElement + | undefined; + + const targetScrollHeightLargerThanItsVisibleHeight = + target && target.scrollHeight > target.clientHeight; + + const parentScrollHeightLargerThanItsVisibleHeight = + parentElement && + parentElement.scrollHeight > parentElement.clientHeight; + + if ( + targetScrollHeightLargerThanItsVisibleHeight || + parentScrollHeightLargerThanItsVisibleHeight + ) { + return; + } e.stopPropagation(); setScrollPosition({ y: Math.max( diff --git a/react/src/lib/components/WebvizContentManager/WebvizContentManager.tsx b/react/src/lib/components/WebvizContentManager/WebvizContentManager.tsx new file mode 100644 index 00000000..60e87c8c --- /dev/null +++ b/react/src/lib/components/WebvizContentManager/WebvizContentManager.tsx @@ -0,0 +1,392 @@ +import React from "react"; + +import PropTypes from "prop-types"; + +import { + MenuBarPosition, + MenuDrawerPosition, +} from "../Menu/types/menu-position"; + +import { DrawerPosition } from "../../shared-types/webviz-content/drawer-position"; +import { Margins } from "../../shared-types/margins"; +import { PluginData, View } from "../../shared-types/webviz-content/webviz"; +import { ContactPerson } from "../../shared-types/webviz-content/contact-person"; +import { DeprecationWarning } from "../../shared-types/webviz-content/deprecation-warning"; +import { FullScreenAction } from "../../shared-types/webviz-content/full-screen-menu"; +import { TourStep } from "../../shared-types/webviz-content/tour-step"; + +type ActionMap< + M extends { + [index: string]: { + [key: string]: + | ContactPerson + | DeprecationWarning[] + | string + | Margins + | number + | null + | boolean + | React.RefObject + | View[] + | ((action: string) => void) + | FullScreenAction[] + | TourStep[]; + } | null; + } +> = { + [Key in keyof M]: M[Key] extends undefined + ? { + type: Key; + } + : { + type: Key; + payload: M[Key]; + }; +}; + +export enum StoreActions { + RegisterPlugin = "register_plugin", + UnregisterPlugin = "unregister_plugin", + SetActiveView = "set_active_view", + SetActivePlugin = "set_active_plugin", + SetActivePluginAndView = "set_active_plugin_and_view", + SetMenuPosition = "set_menu_position", + SetActivePluginWrapperRef = "set_active_plugin_wrapper_ref", + SetBackdropOpacity = "set_backdrop_opacity", + SetFullScreenActions = "set_full_screen_actions", + SetFullScreenActionsCallback = "set_full_screen_actions_callback", + SetActiveViewDownloadCallback = "set_download_callback", + SetOpenSettingsGroupId = "set_open_settings_group_id", + SetSettingsDrawerOpen = "set_settings_drawer_open", + IncrementViewUpdates = "increment_view_updated", +} + +export type StoreState = { + activePluginId: string; + bodyMargins: Margins; + position: DrawerPosition; + pluginsData: PluginData[]; + activePluginWrapperRef: React.RefObject | null; + openSettingsGroupId: string; + settingsDrawerOpen: boolean; + externalTrigger: boolean; + backdropOpacity: number; + fullScreenActionsCallback: (action: string) => void; + activeViewDownloadCallback: () => void; + fullScreenActions: FullScreenAction[]; + viewUpdates: number; +}; + +type Payload = { + [StoreActions.RegisterPlugin]: { + id: string; + name: string; + views: View[]; + initiallyActiveViewId: string; + deprecationWarnings?: DeprecationWarning[]; + contactPerson?: ContactPerson; + screenshotFilename?: string; + feedbackUrl?: string; + tourSteps?: TourStep[]; + }; + [StoreActions.UnregisterPlugin]: { + id: string; + }; + [StoreActions.SetActiveView]: { + viewId: string; + }; + [StoreActions.SetActivePlugin]: { + pluginId: string; + }; + [StoreActions.SetActivePluginAndView]: { + pluginId: string; + viewId: string; + }; + [StoreActions.SetMenuPosition]: { + pinned: boolean; + menuBarPosition: MenuBarPosition; + menuDrawerPosition: MenuDrawerPosition; + bodyMargins: Margins; + }; + [StoreActions.SetActivePluginWrapperRef]: { + ref: React.RefObject; + }; + [StoreActions.SetBackdropOpacity]: { + opacity: number; + }; + [StoreActions.SetFullScreenActions]: { + actions: FullScreenAction[]; + }; + [StoreActions.SetFullScreenActionsCallback]: { + callback: (action: string) => void; + }; + [StoreActions.SetActiveViewDownloadCallback]: { + callback: () => void; + }; + [StoreActions.SetOpenSettingsGroupId]: { + settingsGroupId: string; + }; + [StoreActions.SetSettingsDrawerOpen]: { + settingsDrawerOpen: boolean; + externalTrigger: boolean; + }; + [StoreActions.IncrementViewUpdates]: null; +}; + +export type Actions = ActionMap[keyof ActionMap]; + +const setInitialState = (): StoreState => { + return { + activePluginId: "", + pluginsData: [], + bodyMargins: { left: 0, right: 0, top: 0, bottom: 0 }, + position: DrawerPosition.Left, + activePluginWrapperRef: null, + openSettingsGroupId: "", + settingsDrawerOpen: false, + backdropOpacity: 0, + fullScreenActions: [], + fullScreenActionsCallback: () => { + return; + }, + activeViewDownloadCallback: () => { + return; + }, + viewUpdates: 0, + externalTrigger: false, + }; +}; + +export const StoreReducer = ( + state: StoreState, + action: Actions +): StoreState => { + if (action.type === StoreActions.RegisterPlugin) { + return { + ...state, + activePluginId: !state.pluginsData.find( + (plugin) => plugin.id === state.activePluginId + ) + ? action.payload.id + : state.activePluginId, + pluginsData: [ + ...state.pluginsData, + { + id: action.payload.id, + name: action.payload.name, + views: action.payload.views, + activeViewId: action.payload.initiallyActiveViewId, + contactPerson: action.payload.contactPerson, + deprecationWarnings: action.payload.deprecationWarnings, + screenshotFilename: action.payload.screenshotFilename, + feedbackUrl: action.payload.feedbackUrl, + tourSteps: action.payload.tourSteps, + }, + ], + }; + } + if (action.type === StoreActions.UnregisterPlugin) { + return { + ...state, + activePluginId: + state.activePluginId === action.payload.id + ? state.pluginsData.find((_, index) => index === 0)?.id || + "" + : state.activePluginId, + pluginsData: state.pluginsData.filter( + (plugin) => plugin.id !== action.payload.id + ), + }; + } + if (action.type === StoreActions.SetActiveView) { + return { + ...state, + pluginsData: [ + ...state.pluginsData.map((plugin) => + plugin.id === state.activePluginId + ? { ...plugin, activeViewId: action.payload.viewId } + : plugin + ), + ], + }; + } + if (action.type === StoreActions.SetActivePluginAndView) { + return { + ...state, + activePluginId: action.payload.pluginId, + pluginsData: [ + ...state.pluginsData.map((plugin) => + plugin.id === action.payload.pluginId + ? { ...plugin, activeViewId: action.payload.viewId } + : plugin + ), + ], + }; + } + if (action.type === StoreActions.SetActivePlugin) { + return { ...state, activePluginId: action.payload.pluginId }; + } + if (action.type === StoreActions.SetMenuPosition) { + let position = DrawerPosition.Left; + if (action.payload.pinned) { + position = action.payload + .menuDrawerPosition as string as DrawerPosition; + } else { + if ( + action.payload.menuBarPosition === MenuBarPosition.Top || + action.payload.menuBarPosition === MenuBarPosition.Bottom + ) { + position = action.payload + .menuDrawerPosition as string as DrawerPosition; + } else { + position = action.payload + .menuBarPosition as string as DrawerPosition; + } + } + return { + ...state, + position: position, + bodyMargins: action.payload.bodyMargins, + }; + } + if (action.type === StoreActions.SetActivePluginWrapperRef) { + return { + ...state, + activePluginWrapperRef: action.payload.ref, + }; + } + if (action.type === StoreActions.SetBackdropOpacity) { + return { ...state, backdropOpacity: action.payload.opacity }; + } + if (action.type === StoreActions.SetFullScreenActions) { + return { ...state, fullScreenActions: action.payload.actions }; + } + if (action.type === StoreActions.SetFullScreenActionsCallback) { + return { ...state, fullScreenActionsCallback: action.payload.callback }; + } + if (action.type === StoreActions.SetActiveViewDownloadCallback) { + return { + ...state, + activeViewDownloadCallback: action.payload.callback, + }; + } + if (action.type === StoreActions.SetOpenSettingsGroupId) { + return { + ...state, + openSettingsGroupId: action.payload.settingsGroupId, + }; + } + if (action.type === StoreActions.SetSettingsDrawerOpen) { + return { + ...state, + settingsDrawerOpen: action.payload.settingsDrawerOpen, + externalTrigger: action.payload.externalTrigger, + }; + } + if (action.type === StoreActions.IncrementViewUpdates) { + return { + ...state, + viewUpdates: state.viewUpdates + 1, + }; + } + return state; +}; + +type StoreContext = { + state: StoreState; + dispatch: React.Dispatch; +}; + +const storeContext = React.createContext(undefined); + +type WebvizContentManagerParentProps = { + activeViewId: string; + activePluginId: string; +}; + +type WebvizContentManagerProps = { + id: string; + activePluginId?: string; + activeViewId?: string; + initiallyActivePluginId?: string; + initiallyActiveViewId?: string; + children?: React.ReactNode; + setProps?: (props: WebvizContentManagerParentProps) => void; +}; + +export const WebvizContentManager: React.FC = ( + props +) => { + const [state, dispatch] = React.useReducer( + StoreReducer, + null, + setInitialState + ); + const [lastHref, setLastHref] = React.useState(""); + + React.useEffect(() => { + const href = window.location.href; + const data = JSON.parse(sessionStorage.getItem(href) || "{}"); + if (href !== lastHref && Object.keys(data).length === 2) { + dispatch({ + type: StoreActions.SetActivePluginAndView, + payload: { + pluginId: data.activePluginId, + viewId: data.activeViewId, + }, + }); + + if (props.setProps) { + props.setProps({ + activeViewId: data.activeViewId, + activePluginId: data.activePluginId, + }); + } + } else { + const activePluginId = state.activePluginId; + const activeViewId = state.pluginsData.find( + (plugin) => plugin.id === state.activePluginId + )?.activeViewId; + + if (activePluginId && activeViewId) { + sessionStorage.setItem( + href, + JSON.stringify({ + activePluginId: activePluginId, + activeViewId: activeViewId, + }) + ); + } + } + setLastHref(href); + }, [state.pluginsData]); + + React.useEffect(() => { + if (props.setProps) { + props.setProps({ + activeViewId: + state.pluginsData.find( + (plugin) => plugin.id === state.activePluginId + )?.activeViewId || "", + activePluginId: state.activePluginId, + }); + } + }, [state.pluginsData, state.activePluginId]); + + return ( + + {props.children} + + ); +}; + +export const useStore = (): StoreContext => + React.useContext(storeContext as React.Context); + +WebvizContentManager.propTypes = { + id: PropTypes.string.isRequired, + activePluginId: PropTypes.string, + activeViewId: PropTypes.string, + children: PropTypes.node, + setProps: PropTypes.func, +}; diff --git a/react/src/lib/components/WebvizContentManager/index.ts b/react/src/lib/components/WebvizContentManager/index.ts new file mode 100644 index 00000000..fb9428d8 --- /dev/null +++ b/react/src/lib/components/WebvizContentManager/index.ts @@ -0,0 +1,5 @@ +export { + WebvizContentManager, + StoreActions, + useStore, +} from "./WebvizContentManager"; diff --git a/react/src/lib/components/WebvizPluginLayoutColumn/WebvizPluginLayoutColumn.tsx b/react/src/lib/components/WebvizPluginLayoutColumn/WebvizPluginLayoutColumn.tsx new file mode 100644 index 00000000..531a808a --- /dev/null +++ b/react/src/lib/components/WebvizPluginLayoutColumn/WebvizPluginLayoutColumn.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { v4 as uuidv4 } from "uuid"; + +import "./webviz-plugin-layout-column.css"; + +export type WebvizPluginLayoutColumnProps = { + id?: string; + hidden?: boolean; + flexGrow?: number; + children?: React.ReactNode; +}; + +export const WebvizPluginLayoutColumn: React.FC = + (props) => { + return ( +
+ {props.children} +
+ ); + }; + +WebvizPluginLayoutColumn.propTypes = { + id: PropTypes.string, + hidden: PropTypes.bool, + flexGrow: PropTypes.number, + children: PropTypes.node, +}; diff --git a/react/src/lib/components/WebvizPluginLayoutColumn/index.ts b/react/src/lib/components/WebvizPluginLayoutColumn/index.ts new file mode 100644 index 00000000..c51f9c21 --- /dev/null +++ b/react/src/lib/components/WebvizPluginLayoutColumn/index.ts @@ -0,0 +1,2 @@ +export { WebvizPluginLayoutColumn } from "./WebvizPluginLayoutColumn"; +export { WebvizPluginLayoutColumnProps } from "./WebvizPluginLayoutColumn"; diff --git a/react/src/lib/components/WebvizPluginLayoutColumn/webviz-plugin-layout-column.css b/react/src/lib/components/WebvizPluginLayoutColumn/webviz-plugin-layout-column.css new file mode 100644 index 00000000..4d857112 --- /dev/null +++ b/react/src/lib/components/WebvizPluginLayoutColumn/webviz-plugin-layout-column.css @@ -0,0 +1,5 @@ +.Webviz_PluginLayout__Column { + display: flex; + flex-direction: column; + flex-wrap: wrap; +} diff --git a/react/src/lib/components/WebvizPluginLayoutRow/WebvizPluginLayoutRow.tsx b/react/src/lib/components/WebvizPluginLayoutRow/WebvizPluginLayoutRow.tsx new file mode 100644 index 00000000..af5a99e8 --- /dev/null +++ b/react/src/lib/components/WebvizPluginLayoutRow/WebvizPluginLayoutRow.tsx @@ -0,0 +1,36 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { v4 as uuidv4 } from "uuid"; + +import "./webviz-plugin-layout-row.css"; + +export type WebvizPluginLayoutRowProps = { + id?: string; + hidden?: boolean; + flexGrow?: number; + children?: React.ReactNode; +}; + +export const WebvizPluginLayoutRow: React.FC = ( + props +) => { + return ( +
+ {props.children} +
+ ); +}; + +WebvizPluginLayoutRow.propTypes = { + id: PropTypes.string, + hidden: PropTypes.bool, + flexGrow: PropTypes.number, + children: PropTypes.node, +}; diff --git a/react/src/lib/components/WebvizPluginLayoutRow/index.ts b/react/src/lib/components/WebvizPluginLayoutRow/index.ts new file mode 100644 index 00000000..6ef3728b --- /dev/null +++ b/react/src/lib/components/WebvizPluginLayoutRow/index.ts @@ -0,0 +1,2 @@ +export { WebvizPluginLayoutRow } from "./WebvizPluginLayoutRow"; +export { WebvizPluginLayoutRowProps } from "./WebvizPluginLayoutRow"; diff --git a/react/src/lib/components/WebvizPluginLayoutRow/webviz-plugin-layout-row.css b/react/src/lib/components/WebvizPluginLayoutRow/webviz-plugin-layout-row.css new file mode 100644 index 00000000..99096056 --- /dev/null +++ b/react/src/lib/components/WebvizPluginLayoutRow/webviz-plugin-layout-row.css @@ -0,0 +1,5 @@ +.Webviz_PluginLayout__Row { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} diff --git a/react/src/lib/components/WebvizPluginLoadingIndicator/WebvizPluginLoadingIndicator.tsx b/react/src/lib/components/WebvizPluginLoadingIndicator/WebvizPluginLoadingIndicator.tsx new file mode 100644 index 00000000..37442300 --- /dev/null +++ b/react/src/lib/components/WebvizPluginLoadingIndicator/WebvizPluginLoadingIndicator.tsx @@ -0,0 +1,17 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import "./webviz-plugin-loading-indicator.css"; + +export type WebvizPluginLoadingIndicatorProps = { + id?: string; +}; + +export const WebvizPluginLoadingIndicator: React.FC = + (props) => { + return
; + }; + +WebvizPluginLoadingIndicator.propTypes = { + id: PropTypes.string, +}; diff --git a/react/src/lib/components/WebvizPluginLoadingIndicator/index.ts b/react/src/lib/components/WebvizPluginLoadingIndicator/index.ts new file mode 100644 index 00000000..a646875e --- /dev/null +++ b/react/src/lib/components/WebvizPluginLoadingIndicator/index.ts @@ -0,0 +1 @@ +export { WebvizPluginLoadingIndicator } from "./WebvizPluginLoadingIndicator"; diff --git a/react/src/lib/components/WebvizPluginLoadingIndicator/webviz-plugin-loading-indicator.css b/react/src/lib/components/WebvizPluginLoadingIndicator/webviz-plugin-loading-indicator.css new file mode 100644 index 00000000..a4188d2a --- /dev/null +++ b/react/src/lib/components/WebvizPluginLoadingIndicator/webviz-plugin-loading-indicator.css @@ -0,0 +1,52 @@ +.WebvizPluginLoadingIndicator { + width: 100%; + height: 100%; + min-height: 30vh; +} + +.WebvizPluginLoadingIndicator:after { + content: ""; + box-sizing: border-box; + position: absolute; + top: 50%; + left: 50%; + width: 24px; + height: 24px; + margin-top: -12px; + margin-left: -12px; + border-radius: 50%; + border: 2px solid #ccc; + border-top-color: #007079; + animation: fadeinFull 1s, spinner 1s linear infinite; + z-index: 1000; +} + +@keyframes spinner { + to { + transform: rotate(360deg); + } +} + +@keyframes fadeinTransparent { + 0% { + opacity: 0; + } + 40% { + opacity: 0; + } + 100% { + opacity: 0.7; + } +} + +@keyframes fadeinFull { + 0% { + opacity: 0; + } + 40% { + opacity: 0; + } + 100% { + opacity: 1; + } +} diff --git a/react/src/lib/components/WebvizPluginPlaceholder/WebvizPluginPlaceholder.tsx b/react/src/lib/components/WebvizPluginPlaceholder/WebvizPluginPlaceholder.tsx index 836dd60d..31f1b8b4 100644 --- a/react/src/lib/components/WebvizPluginPlaceholder/WebvizPluginPlaceholder.tsx +++ b/react/src/lib/components/WebvizPluginPlaceholder/WebvizPluginPlaceholder.tsx @@ -29,7 +29,7 @@ import { import WebvizToolbarButton from "./components/WebvizToolbarButton"; import WebvizContentOverlay from "./components/WebvizContentOverlay"; -import downloadFile from "./utils/downloadFile"; +import downloadFile from "../../utils/downloadFile"; import "./webviz_plugin_component.css"; diff --git a/react/src/lib/components/WebvizPluginTour/WebvizPluginTour.tsx b/react/src/lib/components/WebvizPluginTour/WebvizPluginTour.tsx new file mode 100644 index 00000000..27b270e3 --- /dev/null +++ b/react/src/lib/components/WebvizPluginTour/WebvizPluginTour.tsx @@ -0,0 +1,328 @@ +import { Button, MobileStepper } from "@material-ui/core"; +import useSize from "@react-hook/size"; +import React from "react"; +import * as ReactDOM from "react-dom"; +import { StoreActions, useStore } from "../WebvizContentManager"; +import { Icon } from "@equinor/eds-core-react"; +import { arrow_back, arrow_forward } from "@equinor/eds-icons"; +Icon.add({ arrow_back, arrow_forward }); + +import "./webviz-plugin-tour.css"; +import { Point } from "lib/shared-types/point"; + +export type WebvizPluginTourProps = { + open: boolean; + onClose: () => void; +}; + +export const WebvizPluginTour: React.FC = ( + props: WebvizPluginTourProps +) => { + const [elementBoundingClientRect, setElementBoundingClientRect] = + React.useState(); + const [currentTourStep, setCurrentTourStep] = React.useState(0); + const [clippingPathPoints, setClippingPathPoints] = React.useState( + [] + ); + const [contentPosition, setContentPosition] = React.useState<{ + left: "auto" | number; + top: "auto" | number; + right: "auto" | number; + bottom: "auto" | number; + }>({ + left: "auto", + top: "auto", + right: "auto", + bottom: "auto", + }); + + const store = useStore(); + const webvizPluginTourRef = React.useRef(null); + const intervalRef = + React.useRef | null>(null); + + const windowSize = useSize(webvizPluginTourRef.current); + + const pluginData = store.state.pluginsData.find( + (el) => el.id === store.state.activePluginId + ); + const tourSteps = pluginData?.tourSteps; + + React.useEffect(() => { + return () => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + }; + }, []); + + React.useEffect(() => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + if (tourSteps && props.open) { + if (document.getElementById(tourSteps[currentTourStep].elementId)) { + intervalRef.current = setInterval(() => { + const element = document.getElementById( + tourSteps[currentTourStep].elementId + ); + if (!element) { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + return; + } + setElementBoundingClientRect( + element.getBoundingClientRect() + ); + element.scrollIntoView({ + block: "nearest", + inline: "start", + }); + }, 100); + } + setElementBoundingClientRect( + document + .getElementById(tourSteps[currentTourStep].elementId) + ?.getBoundingClientRect() + ); + } + }, [tourSteps, currentTourStep, store.state.viewUpdates, props.open]); + + React.useEffect(() => { + if (props.open && tourSteps) { + handleChangeTourStep(0); + return; + } + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + }, [props.open, tourSteps]); + + React.useEffect(() => { + if (elementBoundingClientRect) { + setClippingPathPoints([ + { x: 0, y: 0 }, + { x: 0, y: windowSize[1] }, + { x: elementBoundingClientRect.left, y: windowSize[1] }, + { + x: elementBoundingClientRect.left, + y: elementBoundingClientRect.top, + }, + { + x: elementBoundingClientRect.right, + y: elementBoundingClientRect.top, + }, + { + x: elementBoundingClientRect.right, + y: elementBoundingClientRect.bottom, + }, + { + x: elementBoundingClientRect.left, + y: elementBoundingClientRect.bottom, + }, + { x: elementBoundingClientRect.left, y: windowSize[1] }, + { x: windowSize[0], y: windowSize[1] }, + { x: windowSize[0], y: 0 }, + ]); + + const spacing = { + left: elementBoundingClientRect.left, + top: elementBoundingClientRect.top, + right: windowSize[0] - elementBoundingClientRect.right, + bottom: windowSize[1] - elementBoundingClientRect.bottom, + }; + const maxSpacing = Math.max(...Object.values(spacing)); + const margin = 16; + if (spacing.left === maxSpacing) { + setContentPosition({ + left: "auto", + bottom: "auto", + right: + windowSize[0] - elementBoundingClientRect.left + margin, + top: elementBoundingClientRect.top, + }); + } else if (spacing.top === maxSpacing) { + setContentPosition({ + left: elementBoundingClientRect.left, + top: "auto", + right: "auto", + bottom: + windowSize[1] - elementBoundingClientRect.top + margin, + }); + } else if (spacing.right === maxSpacing) { + setContentPosition({ + left: elementBoundingClientRect.right + margin, + top: elementBoundingClientRect.top, + right: "auto", + bottom: "auto", + }); + } else if (spacing.bottom === maxSpacing) { + setContentPosition({ + left: elementBoundingClientRect.left, + top: elementBoundingClientRect.bottom + margin, + right: "auto", + bottom: "auto", + }); + } + } + }, [windowSize, elementBoundingClientRect]); + + const handleChangeTourStep = React.useCallback( + (newTourStep: number) => { + if (!tourSteps) { + return; + } + if ( + tourSteps[newTourStep].viewId !== pluginData?.activeViewId && + tourSteps[newTourStep].viewId !== "" + ) { + store.dispatch({ + type: StoreActions.SetActiveView, + payload: { viewId: tourSteps[newTourStep].viewId }, + }); + } + if (tourSteps[newTourStep].settingsGroupId) { + store.dispatch({ + type: StoreActions.SetSettingsDrawerOpen, + payload: { + settingsDrawerOpen: true, + externalTrigger: true, + }, + }); + store.dispatch({ + type: StoreActions.SetOpenSettingsGroupId, + payload: { + settingsGroupId: + tourSteps[newTourStep].settingsGroupId || "", + }, + }); + } + setCurrentTourStep(newTourStep); + }, + [tourSteps, pluginData?.activeViewId] + ); + + return ReactDOM.createPortal( +
+ {elementBoundingClientRect && props.open && ( + <> +
+ {pluginData && ( +
+ + + {pluginData.views.find( + (view) => + tourSteps && + view.id === + tourSteps[currentTourStep] + .viewId + )?.name || "Shared settings"} + +
+ )} + {tourSteps && tourSteps[currentTourStep].content} + {tourSteps && tourSteps.length > 1 && ( + 30 ? "progress" : "dots" + } + steps={tourSteps.length} + position="bottom" + activeStep={currentTourStep} + nextButton={ + + } + backButton={ + + } + /> + )} +
+ props.onClose()} + className="WebvizPluginTour__SVG" + > + + + + + + + `${point.x} ${point.y}`) + .join(",")} + /> + + + + + + + )} +
, + document.body + ); +}; diff --git a/react/src/lib/components/WebvizPluginTour/webviz-plugin-tour.css b/react/src/lib/components/WebvizPluginTour/webviz-plugin-tour.css new file mode 100644 index 00000000..cd760025 --- /dev/null +++ b/react/src/lib/components/WebvizPluginTour/webviz-plugin-tour.css @@ -0,0 +1,46 @@ +.WebvizPluginTour { + position: fixed; + z-index: 999999; + pointer-events: none; + left: 0px; + top: 0px; + width: 100vw; + height: 100vh; +} + +.WebvizPluginTour__SVG { + z-index: 1; +} + +.WebvizPluginTour__Mask { + fill: currentColor; + opacity: 0.5; +} + +.WebvizPluginTour__ClipPath { + pointer-events: auto; + clip-path: url(#WebvizPluginTour__ClipPath); + opacity: 0.5; +} + +.WebvizPluginTour__View { + display: flex; + align-items: center; + justify-content: stretch; + margin-bottom: 8px; +} + +.WebvizPluginTour__View > span { + display: block; + margin-left: 16px; +} + +.WebvizPluginTour__Content { + position: fixed; + background-color: rgb(255, 255, 255); + padding: 16px; + border-radius: 4px; + z-index: 2; + pointer-events: all; + min-width: 300px; +} diff --git a/react/src/lib/components/WebvizPluginWrapper/WebvizPluginWrapper.tsx b/react/src/lib/components/WebvizPluginWrapper/WebvizPluginWrapper.tsx new file mode 100644 index 00000000..e3238c09 --- /dev/null +++ b/react/src/lib/components/WebvizPluginWrapper/WebvizPluginWrapper.tsx @@ -0,0 +1,164 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { camera, fullscreen_exit } from "@equinor/eds-icons"; +import { Icon } from "@equinor/eds-core-react"; +Icon.add({ camera, fullscreen_exit }); + +import { + useStore, + StoreActions, +} from "../WebvizContentManager/WebvizContentManager"; +import { View, ViewPropTypes } from "../../shared-types/webviz-content/webviz"; +import { + ContactPerson, + ContactPersonPropTypes, +} from "../../shared-types/webviz-content/contact-person"; +import { + DeprecationWarning, + DeprecationWarningPropTypes, +} from "../../shared-types/webviz-content/deprecation-warning"; + +import { + TourStep, + TourStepPropTypes, +} from "../../shared-types/webviz-content/tour-step"; + +import "./webviz-plugin-wrapper.css"; + +export type WebvizPluginWrapperProps = { + id: string; + name: string; + views: View[]; + initiallyActiveViewId: string; + children?: React.ReactNode; + screenshotFilename?: string; + contactPerson?: ContactPerson; + deprecationWarnings?: DeprecationWarning[]; + feedbackUrl?: string; + stretch?: boolean; + tourSteps?: TourStep[]; + persistence?: boolean | string | number; + persisted_props?: string[]; + persistence_type?: "local" | "session" | "memory"; +}; + +export const WebvizPluginWrapper: React.FC = ( + props: WebvizPluginWrapperProps +) => { + const store = useStore(); + const [active, setActive] = React.useState(false); + + const wrapperRef = React.useRef(null); + + React.useEffect(() => { + store.dispatch({ + type: StoreActions.IncrementViewUpdates, + payload: null, + }); + }, [props.children]); + + React.useEffect(() => { + store.dispatch({ + type: StoreActions.RegisterPlugin, + payload: { + id: props.id, + name: props.name, + views: props.views, + initiallyActiveViewId: props.initiallyActiveViewId, + contactPerson: props.contactPerson, + deprecationWarnings: props.deprecationWarnings, + screenshotFilename: props.screenshotFilename, + feedbackUrl: props.feedbackUrl, + tourSteps: props.tourSteps, + }, + }); + + return () => { + store.dispatch({ + type: StoreActions.UnregisterPlugin, + payload: { id: props.id }, + }); + }; + }, []); + + React.useLayoutEffect(() => { + const isActive = store.state.activePluginId === props.id; + setActive(isActive); + if (isActive) { + store.dispatch({ + type: StoreActions.SetActivePluginWrapperRef, + payload: { ref: wrapperRef }, + }); + } + }, [store.state.activePluginId, props.id]); + + const handlePluginClick = React.useCallback(() => { + store.dispatch({ + type: StoreActions.SetActivePlugin, + payload: { pluginId: props.id }, + }); + }, [props.id]); + + return ( +
handlePluginClick()} + style={{ flexGrow: props.stretch ? 4 : 0 }} + > +
+ {props.children} +
+
+ ); +}; + +WebvizPluginWrapper.propTypes = { + id: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + views: PropTypes.arrayOf(PropTypes.shape(ViewPropTypes).isRequired) + .isRequired, + initiallyActiveViewId: PropTypes.string.isRequired, + children: PropTypes.node, + screenshotFilename: PropTypes.string, + contactPerson: PropTypes.shape(ContactPersonPropTypes), + deprecationWarnings: PropTypes.arrayOf( + PropTypes.shape(DeprecationWarningPropTypes).isRequired + ), + stretch: PropTypes.bool, + feedbackUrl: PropTypes.string, + tourSteps: PropTypes.arrayOf(PropTypes.shape(TourStepPropTypes).isRequired), + /** + * Used to allow user interactions in this component to be persisted when + * the component - or the page - is refreshed. If `persisted` is truthy and + * hasn't changed from its previous value, a `value` that the user has + * changed while using the app will keep that change, as long as + * the new `value` also matches what was given originally. + * Used in conjunction with `persistence_type`. + */ + persistence: PropTypes.oneOfType([ + PropTypes.bool, + PropTypes.string, + PropTypes.number, + ]), + + /** + * Properties whose user interactions will persist after refreshing the + * component or the page. + */ + persisted_props: PropTypes.arrayOf( + PropTypes.oneOf(["children"]).isRequired + ), + + /** + * Where persisted user changes will be stored: + * memory: only kept in memory, reset on page refresh. + * local: window.localStorage, data is kept after the browser quit. + * session: window.sessionStorage, data is cleared once the browser quit. + */ + persistence_type: PropTypes.oneOf(["local", "session", "memory"]), +}; diff --git a/react/src/lib/components/WebvizPluginWrapper/index.ts b/react/src/lib/components/WebvizPluginWrapper/index.ts new file mode 100644 index 00000000..dd416102 --- /dev/null +++ b/react/src/lib/components/WebvizPluginWrapper/index.ts @@ -0,0 +1 @@ +export { WebvizPluginWrapper } from "./WebvizPluginWrapper"; diff --git a/react/src/lib/components/WebvizPluginWrapper/webviz-plugin-wrapper.css b/react/src/lib/components/WebvizPluginWrapper/webviz-plugin-wrapper.css new file mode 100644 index 00000000..8754cca8 --- /dev/null +++ b/react/src/lib/components/WebvizPluginWrapper/webviz-plugin-wrapper.css @@ -0,0 +1,27 @@ +.WebvizPluginWrapper { + opacity: 0.8; + border: 4px transparent solid; + border-bottom: 1px rgb(202, 202, 202) solid; + border-left: 4px transparent solid; + display: flex; +} + +.WebvizPluginWrapper__Active { + background-color: rgba(255, 255, 255, 1); + opacity: 1; + border-left-color: #007085; +} + +.WebvizPluginWrapper__FullScreenContainer { + padding-top: 16px; + padding-bottom: 16px; + border: 4px transparent solid; + border-bottom-width: 1px; + flex-grow: 4; + display: flex; +} + +.WebvizPluginWrapper__DashContent { + display: flex; + flex-grow: 4; +} diff --git a/react/src/lib/components/WebvizPluginsWrapper/WebvizPluginsWrapper.tsx b/react/src/lib/components/WebvizPluginsWrapper/WebvizPluginsWrapper.tsx new file mode 100644 index 00000000..a8c4bde4 --- /dev/null +++ b/react/src/lib/components/WebvizPluginsWrapper/WebvizPluginsWrapper.tsx @@ -0,0 +1,72 @@ +import React from "react"; +import { useStore } from "../WebvizContentManager/WebvizContentManager"; +import { Snackbar, Slide } from "@material-ui/core"; + +import "./webviz-plugins-wrapper.css"; +import PropTypes from "prop-types"; +import { Backdrop } from "../Backdrop"; +import { FullScreenMenu } from "./components/FullScreenMenu/full-screen-menu"; + +export type WebvizPluginsWrapperProps = { + id: string; + children?: React.ReactNode; +}; + +export const WebvizPluginsWrapper: React.FC = ( + props +) => { + const store = useStore(); + const [notificationVisible, setNotificationVisible] = + React.useState(false); + const [activePluginId, setActivePluginId] = React.useState( + store.state.activePluginId + ); + + const notificationTimer = + React.useRef | null>(null); + + React.useEffect(() => { + return () => { + if (notificationTimer.current) { + clearTimeout(notificationTimer.current); + } + }; + }, []); + + React.useEffect(() => { + if (activePluginId !== store.state.activePluginId) { + if (notificationTimer.current) { + clearTimeout(notificationTimer.current); + } + notificationTimer.current = setTimeout(() => { + setNotificationVisible(false); + }, 2000); + setNotificationVisible(true); + setActivePluginId(store.state.activePluginId); + } + }, [store.state.activePluginId, activePluginId]); + + return ( +
+ + + +
{`Now active: ${ + store.state.pluginsData.find( + (plugin) => plugin.id === store.state.activePluginId + )?.name || "Unknown" + }`}
+
+ {props.children} +
+ ); +}; + +WebvizPluginsWrapper.propTypes = { + id: PropTypes.string.isRequired, + children: PropTypes.node, +}; diff --git a/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.css b/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.css new file mode 100644 index 00000000..49518438 --- /dev/null +++ b/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.css @@ -0,0 +1,11 @@ +.WebvizFullScreenMenu { + position: fixed; + top: 0; + right: 0; + background-color: #f8f8f8; + padding: 12px; + border-bottom-left-radius: 16px; + cursor: pointer; + display: none; + z-index: 1200; +} diff --git a/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.tsx b/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.tsx new file mode 100644 index 00000000..bd43ae37 --- /dev/null +++ b/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/full-screen-menu.tsx @@ -0,0 +1,48 @@ +import { IconButton, Tooltip } from "@material-ui/core"; +import * as edsIcons from "@equinor/eds-icons"; +import { IconData } from "@equinor/eds-icons"; +import { Icon } from "@equinor/eds-core-react"; +import React from "react"; +import { useStore } from "../../../WebvizContentManager/WebvizContentManager"; + +import "./full-screen-menu.css"; + +export type FullScreenMenuProps = { + opacity: number; +}; + +export const FullScreenMenu: React.FC = ( + props: FullScreenMenuProps +) => { + const store = useStore(); + return ( +
+ {store.state.fullScreenActions.map((action) => { + const icon: IconData | undefined = Object.values(edsIcons).find( + (el) => el.name === action.icon + ); + return ( + + store.state.fullScreenActionsCallback && + store.state.fullScreenActionsCallback( + action.actionName + ) + } + > + + + + + ); + })} +
+ ); +}; diff --git a/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/index.ts b/react/src/lib/components/WebvizPluginsWrapper/components/FullScreenMenu/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/react/src/lib/components/WebvizPluginsWrapper/index.ts b/react/src/lib/components/WebvizPluginsWrapper/index.ts new file mode 100644 index 00000000..cd70fe4c --- /dev/null +++ b/react/src/lib/components/WebvizPluginsWrapper/index.ts @@ -0,0 +1 @@ +export { WebvizPluginsWrapper } from "./WebvizPluginsWrapper"; diff --git a/react/src/lib/components/WebvizPluginsWrapper/webviz-plugins-wrapper.css b/react/src/lib/components/WebvizPluginsWrapper/webviz-plugins-wrapper.css new file mode 100644 index 00000000..15dfaa06 --- /dev/null +++ b/react/src/lib/components/WebvizPluginsWrapper/webviz-plugins-wrapper.css @@ -0,0 +1,91 @@ +.WebvizPluginsWrapper { + height: 100vh; + overflow: auto; + width: 100%; + display: flex; + flex-direction: column; +} + +.WebvizPluginsWrapper__Notification { + background-color: rgb(20, 20, 20); + color: white; + padding: 12px; + border-radius: 4px; + -webkit-box-shadow: 0px 10px 21px -5px rgba(0, 0, 0, 0.33); + -moz-box-shadow: 0px 10px 21px -5px rgba(0, 0, 0, 0.33); + box-shadow: 0px 10px 21px -5px rgba(0, 0, 0, 0.33); +} + +.dash-graph { + width: 100%; + height: 100%; +} + +*[data-dash-is-loading="true"], +.dash-loading { + pointer-events: none; + position: relative; + cursor: progress; +} + +*[data-dash-is-loading="true"]:before, +.dash-loading:before { + animation: fadeinTransparent 4s; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + background-color: white; + z-index: 999; + opacity: 0.7; +} + +*[data-dash-is-loading="true"]:after, +.dash-loading:after { + content: ""; + box-sizing: border-box; + position: absolute; + top: 50%; + left: 50%; + width: 24px; + height: 24px; + margin-top: -12px; + margin-left: -12px; + border-radius: 50%; + border: 2px solid #ccc; + border-top-color: #007079; + animation: fadeinFull 4s, spinner 1s linear infinite; + z-index: 1000; +} + +@keyframes spinner { + to { + transform: rotate(360deg); + } +} + +@keyframes fadeinTransparent { + 0% { + opacity: 0; + } + 40% { + opacity: 0; + } + 100% { + opacity: 0.7; + } +} + +@keyframes fadeinFull { + 0% { + opacity: 0; + } + 40% { + opacity: 0; + } + 100% { + opacity: 1; + } +} diff --git a/react/src/lib/components/WebvizSettings/WebvizSettings.tsx b/react/src/lib/components/WebvizSettings/WebvizSettings.tsx new file mode 100644 index 00000000..a346304a --- /dev/null +++ b/react/src/lib/components/WebvizSettings/WebvizSettings.tsx @@ -0,0 +1,94 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { ScrollArea } from "../ScrollArea"; + +import { + useStore, + StoreActions, +} from "../WebvizContentManager/WebvizContentManager"; + +import "./webviz-settings.css"; + +export type WebvizSettingsProps = { + visible: boolean; + width: number; + children?: React.ReactNode; +}; + +export const WebvizSettings: React.FC = ( + props: WebvizSettingsProps +) => { + const [activeGroupId, setActiveGroupId] = React.useState(""); + const store = useStore(); + + React.useEffect(() => { + if (store.state.openSettingsGroupId !== activeGroupId) { + setActiveGroupId(store.state.openSettingsGroupId); + } + }, [store.state.openSettingsGroupId]); + + React.useEffect(() => { + if (activeGroupId !== "") { + return; + } + React.Children.forEach(props.children, (child, index) => { + if (React.isValidElement(child)) { + if (index === 0) { + setActiveGroupId(child.props._dashprivate_layout.props.id); + return; + } + } + }); + }, [props.children, activeGroupId]); + + const handleGroupToggle = React.useCallback( + (id: string) => { + const groupId = id === activeGroupId ? "-" : id; + store.dispatch({ + type: StoreActions.SetOpenSettingsGroupId, + payload: { + settingsGroupId: groupId, + }, + }); + setActiveGroupId(groupId); + }, + [activeGroupId] + ); + + return ( +
+ + {props.children && + React.Children.map(props.children, (child) => { + if (React.isValidElement(child)) { + return React.cloneElement(child, { + _dashprivate_layout: { + ...child.props._dashprivate_layout, + props: { + ...child.props._dashprivate_layout + .props, + open: + activeGroupId === + child.props._dashprivate_layout + .props.id, + onToggle: handleGroupToggle, + }, + }, + }); + } + return child; + })} + +
+ ); +}; + +WebvizSettings.propTypes = { + visible: PropTypes.bool.isRequired, + width: PropTypes.number.isRequired, + children: PropTypes.node, +}; diff --git a/react/src/lib/components/WebvizSettings/index.ts b/react/src/lib/components/WebvizSettings/index.ts new file mode 100644 index 00000000..1c60d096 --- /dev/null +++ b/react/src/lib/components/WebvizSettings/index.ts @@ -0,0 +1,2 @@ +export { WebvizSettings } from "./WebvizSettings"; +export { WebvizSettingsProps } from "./WebvizSettings"; diff --git a/react/src/lib/components/WebvizSettings/webviz-settings.css b/react/src/lib/components/WebvizSettings/webviz-settings.css new file mode 100644 index 00000000..eb25067d --- /dev/null +++ b/react/src/lib/components/WebvizSettings/webviz-settings.css @@ -0,0 +1,9 @@ +.WebvizSettings { + flex-grow: 4; + border-top: 1px #ccc solid; + transition: opacity 1s ease-in-out; +} + +.WebvizSettings .ScrollArea { + height: 100%; +} diff --git a/react/src/lib/components/WebvizSettingsDrawer/WebvizSettingsDrawer.tsx b/react/src/lib/components/WebvizSettingsDrawer/WebvizSettingsDrawer.tsx new file mode 100644 index 00000000..9f19d91d --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/WebvizSettingsDrawer.tsx @@ -0,0 +1,191 @@ +import React from "react"; +import useSize from "@react-hook/size"; +import { settings, chevron_right, chevron_left } from "@equinor/eds-icons"; +import { Icon } from "@equinor/eds-core-react"; +Icon.add({ settings, chevron_right, chevron_left }); + +import { Button, Tooltip } from "@material-ui/core"; + +import { DrawerPosition } from "../../shared-types/webviz-content/drawer-position"; + +import { useStore } from "../WebvizContentManager"; +import { ViewSelector } from "./components/ViewSelector/view-selector"; + +import { WebvizSettings } from "../WebvizSettings"; +import { PluginActions } from "./components/PluginActions/plugin-actions"; + +import { SnackbarProvider } from "notistack"; + +import PropTypes from "prop-types"; + +import "./webviz-settings-drawer.css"; +import { StoreActions } from "../WebvizContentManager/WebvizContentManager"; + +type Position = { + left: number | "auto"; + top: number | "auto"; + right: number | "auto"; + bottom: number | "auto"; +}; + +export type WebvizSettingsDrawerProps = { + id: string; + children?: React.ReactNode; +}; + +export const WebvizSettingsDrawer: React.FC = ( + props +) => { + const [position, setPosition] = React.useState({ + left: "auto", + top: "auto", + right: "auto", + bottom: "auto", + }); + const store = useStore(); + const drawerRef = React.useRef(null); + const drawerSize = useSize(drawerRef); + const [oldDrawerSize, setOldDrawerSize] = React.useState(0); + const expandedWidth = 320; + const collapsedWidth = 64; + + React.useLayoutEffect(() => { + if (drawerRef.current && store.state.externalTrigger) { + drawerRef.current.classList.remove( + "WebvizSettingsDrawer__Transition" + ); + window.setTimeout(() => { + if (drawerRef.current) { + drawerRef.current.classList.add( + "WebvizSettingsDrawer__Transition" + ); + } + }, 1000); + } + }, [store.state.settingsDrawerOpen, store.state.externalTrigger]); + + React.useLayoutEffect(() => { + let top: "auto" | number = 0; + let bottom: "auto" | number = "auto"; + let left: "auto" | number = "auto"; + let right: "auto" | number = "auto"; + + if (store.state.bodyMargins.top > 16) { + top = store.state.bodyMargins.top - 50; + } else if (store.state.bodyMargins.bottom > 16) { + top = "auto"; + bottom = store.state.bodyMargins.bottom - 50; + } + if (store.state.position === DrawerPosition.Left) { + left = Math.max(store.state.bodyMargins.left - 50, 0); + } else if (store.state.position === DrawerPosition.Right) { + right = Math.max(store.state.bodyMargins.right - 50, 0); + } + setPosition({ + left: left, + top: top, + right: right, + bottom: bottom, + }); + }, [store.state.bodyMargins, store.state.position]); + + React.useLayoutEffect(() => { + const bodyMargins = { ...store.state.bodyMargins }; + if (store.state.position === DrawerPosition.Left) { + bodyMargins.left = bodyMargins.left - 50 + drawerSize[0]; + bodyMargins.right = 0; + } else if (store.state.position === DrawerPosition.Right) { + bodyMargins.left = 0; + bodyMargins.right = bodyMargins.right - 50 + drawerSize[0]; + } + document.body.style.marginLeft = bodyMargins.left + "px"; + document.body.style.marginRight = bodyMargins.right + "px"; + document.body.style.marginTop = "0px"; + document.body.style.marginBottom = "0px"; + setOldDrawerSize(drawerSize[0]); + }, [ + drawerSize, + store.state.position, + store.state.bodyMargins, + oldDrawerSize, + ]); + + const handleToggleOpenClick = React.useCallback(() => { + store.dispatch({ + type: StoreActions.SetSettingsDrawerOpen, + payload: { + settingsDrawerOpen: !store.state.settingsDrawerOpen, + externalTrigger: false, + }, + }); + }, [store]); + + return ( +
+ {React.Children.count(props.children) > 0 && ( +
+ + + +
+ )} + + + {props.children} + + + + +
+ ); +}; + +WebvizSettingsDrawer.propTypes = { + id: PropTypes.string.isRequired, + children: PropTypes.node, +}; diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/AuthorDialog/author-dialog.tsx b/react/src/lib/components/WebvizSettingsDrawer/components/AuthorDialog/author-dialog.tsx new file mode 100644 index 00000000..735b05ef --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/AuthorDialog/author-dialog.tsx @@ -0,0 +1,84 @@ +import React from "react"; + +import { + Avatar, + Dialog, + DialogTitle, + IconButton, + List, + ListItem, + ListItemAvatar, + ListItemText, +} from "@material-ui/core"; + +import { close, email, person, phone } from "@equinor/eds-icons"; +import { Icon } from "@equinor/eds-core-react"; + +Icon.add({ + close, + email, + person, + phone, +}); + +import { ContactPerson } from "../../../../shared-types/webviz-content/contact-person"; + +type AuthorDialogProps = { + author: ContactPerson; + open: boolean; + onClose: () => void; +}; + +export const AuthorDialog: React.FC = ( + props: AuthorDialogProps +) => { + const { author, open, onClose } = props; + + return ( + onClose()}> + + {"Author"} + onClose()} + style={{ + position: "absolute", + right: 8, + top: 8, + color: "#ccc", + }} + > + + + + {author && ( + + + + + + + + + + + + + + + + + + + + + + + + + + + )} + + ); +}; diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.css b/react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.css new file mode 100644 index 00000000..c6006b83 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.css @@ -0,0 +1,77 @@ +.WebvizPluginActions { + background-color: rgba(196, 196, 196, 0.22); + display: flex; + align-items: stretch; + justify-content: space-between; +} + +.WebvizPluginActions__Spacer { + flex-grow: 4; +} + +.WebvizPluginActions__Button_Badge > .MuiBadge-colorPrimary { + color: #ffff; + background-color: orange; +} + +.WebvizPluginActions__Button { + cursor: pointer; + padding: 12px; + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; +} + +.WebvizPluginActions__Button::after { + content: ""; + border-radius: 0; + background-color: rgba(196, 196, 196, 0.22); + width: 0px; + height: 0px; + position: absolute; + left: 50%; + top: 50%; + margin-left: 0px; + margin-top: 0px; + transition-duration: 0.1s; + display: block; +} + +.WebvizPluginActions__Button:hover { + background-color: rgba(196, 196, 196, 0.22); +} + +.WebvizPluginActions__Button:active::after { + border-radius: 50px; + width: 100px; + height: 100px; + margin-left: -50px; + margin-top: -50px; + transition: all 0.05s ease-in-out; +} + +.WebvizCameraFlash { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-color: #fff; + z-index: 5000; +} + +.WebvizPluginActions__TourViewTitle { + font-weight: bold; + margin-bottom: 8px; + display: flex; + align-items: center; +} + +.WebvizPluginActions__TourViewTitle > span { + display: block; + margin-left: 8px; + font-size: 1rem; + line-height: 1rem; +} diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.tsx b/react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.tsx new file mode 100644 index 00000000..285d67d9 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/PluginActions/plugin-actions.tsx @@ -0,0 +1,644 @@ +import React from "react"; + +import { Badge, Tooltip } from "@material-ui/core"; + +import { + camera, + comment_solid, + download, + fullscreen, + fullscreen_exit, + help, + person, + warning_outlined, + view_carousel, +} from "@equinor/eds-icons"; +import { Icon } from "@equinor/eds-core-react"; +Icon.add({ + camera, + comment_solid, + download, + fullscreen, + fullscreen_exit, + help, + person, + warning_outlined, + view_carousel, +}); + +import { Animation } from "../../../../utils/Animation"; +import { StoreActions, useStore } from "../../../WebvizContentManager"; +import { AuthorDialog } from "../AuthorDialog/author-dialog"; + +import { useSnackbar } from "notistack"; +import html2canvas from "html2canvas"; +import downloadFile from "../../../../utils/downloadFile"; + +import "./plugin-actions.css"; +import { WebvizPluginTour } from "../../../../components/WebvizPluginTour/WebvizPluginTour"; + +type PluginActionsProps = { + open: boolean; +}; + +type OpenCloseAnimationParameters = { + marginBottom: number; +}; + +type FullScreenAnimationParameters = { + left: number; + top: number; + height: number; + width: number; + backdropOpacity: number; + paddingTop: number; +}; + +type FlashAnimationParameters = { + opacity: number; +}; + +export const PluginActions: React.FC = ( + props: PluginActionsProps +) => { + const [marginBottom, setMarginBottom] = React.useState(0); + const [open, setOpen] = React.useState(props.open); + const [openAuthorDialog, setOpenAuthorDialog] = + React.useState(false); + const [tourIsOpen, setTourIsOpen] = React.useState(false); + + const { enqueueSnackbar } = useSnackbar(); + + const openCloseAnimation = + React.useRef | null>(null); + const fullScreenAnimation = + React.useRef | null>(null); + const flashAnimation = + React.useRef | null>(null); + + const store = useStore(); + + const pluginData = store.state.pluginsData.find( + (el) => el.id === store.state.activePluginId + ); + const deprecationWarnings = pluginData?.deprecationWarnings; + const numDeprecationWarnings = deprecationWarnings?.length || 0; + const feedbackUrl = pluginData?.feedbackUrl; + const tourSteps = pluginData?.tourSteps; + const showDownload = pluginData?.views.find( + (view) => view.id === pluginData?.activeViewId + )?.showDownload; + + const closedHeight = 7 * (12 * 2 + 24); + + React.useLayoutEffect(() => { + if (props.open === open) { + return; + } + if (openCloseAnimation.current) { + openCloseAnimation.current.reset(); + } + + openCloseAnimation.current = + new Animation( + 900, + 20, + [ + { + t: 0, + state: { marginBottom: 0 }, + }, + { + t: 2 / 3, + state: { marginBottom: -closedHeight }, + }, + { + t: 1, + state: { marginBottom: 0 }, + }, + ], + Animation.Bezier, + (values, t) => { + if (t === 2 / 3) { + setOpen(!open); + } + setMarginBottom(values.marginBottom); + } + ); + + openCloseAnimation.current.start(); + }, [props.open]); + + const handleScreenShotClick = React.useCallback(() => { + if (store.state.activePluginWrapperRef?.current) { + if (flashAnimation.current) { + flashAnimation.current.reset(); + } + + const flash = document.body.appendChild( + document.createElement("div") + ); + flash.className = "WebvizCameraFlash"; + + const fullScreenContainer = + store.state.activePluginWrapperRef?.current.getElementsByClassName( + "WebvizPluginWrapper__FullScreenContainer" + )[0] as HTMLDivElement; + + flashAnimation.current = new Animation( + 200, + 10, + [ + { + t: 0, + state: { opacity: 0 }, + }, + { + t: 0.5, + state: { opacity: 1 }, + }, + { t: 1, state: { opacity: 0 } }, + ], + Animation.Bezier, + (values, t) => { + if ( + store.state.activePluginWrapperRef?.current && + fullScreenContainer + ) { + if (t === 0.5) { + const viewElements = Array.from( + store.state.activePluginWrapperRef.current.getElementsByClassName( + "WebvizViewElement__Content" + ) + ); + const viewElementActions = Array.from( + store.state.activePluginWrapperRef.current.getElementsByClassName( + "WebvizViewElement__Actions" + ) + ); + viewElements.forEach((el) => + el.classList.replace( + "WebvizViewElement__Content", + "WebvizViewElement__Content__flat" + ) + ); + viewElementActions.forEach((el) => + el.classList.replace( + "WebvizViewElement__Actions", + "WebvizViewElement__Actions__hidden" + ) + ); + const actions = + fullScreenContainer.getElementsByClassName( + "WebvizFullScreenMenu" + ); + for (const action of actions) { + (action as HTMLDivElement).style.display = + "none"; + } + flash.style.opacity = "0"; + html2canvas(fullScreenContainer, { + scrollX: -window.scrollX, + scrollY: -window.scrollY, + }).then((canvas) => + canvas.toBlob((blob) => { + if (blob !== null) { + downloadFile({ + filename: + pluginData?.screenshotFilename || + "webviz_screenshot.png", + data: blob, + mimeType: "image/png", + }); + } + }) + ); + flash.style.opacity = "1"; + viewElements.forEach((el) => + el.classList.replace( + "WebvizViewElement__Content__flat", + "WebvizViewElement__Content" + ) + ); + viewElementActions.forEach((el) => + el.classList.replace( + "WebvizViewElement__Actions__hidden", + "WebvizViewElement__Actions" + ) + ); + for (const action of actions) { + (action as HTMLDivElement).style.display = + "block"; + } + } + if (t === 1) { + document.body.removeChild(flash); + return; + } + flash.style.opacity = values.opacity.toString(); + } + } + ); + flashAnimation.current.start(); + } + }, [store.state.activePluginWrapperRef, pluginData]); + + const handleFullScreenClick = React.useCallback(() => { + if (fullScreenAnimation.current) { + fullScreenAnimation.current.reset(); + } + if (store.state.activePluginWrapperRef?.current) { + const rect = + store.state.activePluginWrapperRef.current.getBoundingClientRect(); + + const contentWidthWithPadding = parseInt( + getComputedStyle(store.state.activePluginWrapperRef.current) + ?.width || "0" + ); + const contentHeightWithPadding = parseInt( + getComputedStyle(store.state.activePluginWrapperRef.current) + ?.height || "0" + ); + + Object.assign(store.state.activePluginWrapperRef.current.style, { + width: `${contentWidthWithPadding}px`, + height: `${contentHeightWithPadding}px`, + }); + + const fullScreenContainer = Array.from( + store.state.activePluginWrapperRef.current.getElementsByClassName( + "WebvizPluginWrapper__FullScreenContainer" + ) + ).find((_, index) => index === 0) as HTMLDivElement | undefined; + + if (fullScreenContainer) { + Object.assign(fullScreenContainer.style, { + position: "fixed", + left: `${rect.left}px`, + top: `${rect.top}px`, + width: `${contentWidthWithPadding - 32}px`, + height: `${contentHeightWithPadding - 32}px`, + "z-index": "1199", + "background-color": "#fff", + }); + } + + const initialFullScreenContainerPadding = + (fullScreenContainer && + getComputedStyle(fullScreenContainer)?.paddingTop) || + "0"; + + store.dispatch({ + type: StoreActions.SetFullScreenActions, + payload: { + actions: [ + { + actionName: "screenshot", + icon: "camera", + tooltip: "Save screenshot", + }, + { + actionName: "leave_fullscreen", + icon: "fullscreen_exit", + tooltip: "Leave full screen", + }, + ], + }, + }); + store.dispatch({ + type: StoreActions.SetFullScreenActionsCallback, + payload: { + callback: (action: string) => { + if (action === "screenshot") { + handleScreenShotClick(); + } else if (action === "leave_fullscreen") { + handleLeaveFullScreenClick(); + } + }, + }, + }); + + fullScreenAnimation.current = + new Animation( + 600, + 10, + [ + { + t: 0, + state: { + left: rect.left, + top: rect.top, + height: contentHeightWithPadding - 32, + width: contentWidthWithPadding - 32, + backdropOpacity: 0, + paddingTop: parseInt( + initialFullScreenContainerPadding + ), + }, + }, + { + t: 1, + state: { + left: 0, + top: 0, + height: + window.innerHeight - + (parseInt( + initialFullScreenContainerPadding + ) + + 56), + width: window.innerWidth, + backdropOpacity: 1, + paddingTop: + parseInt( + initialFullScreenContainerPadding + ) + 56, + }, + }, + ], + Animation.Bezier, + (values, t) => { + store.dispatch({ + type: StoreActions.SetBackdropOpacity, + payload: { opacity: values.backdropOpacity }, + }); + if (fullScreenContainer) { + if (t === 1) { + Object.assign(fullScreenContainer.style, { + left: "0px", + top: "0px", + width: "100vw", + height: `calc(100vh - ${ + parseInt( + initialFullScreenContainerPadding + ) + 56 + }px)`, + "padding-top": `${ + parseInt( + initialFullScreenContainerPadding + ) + 56 + }px`, + }); + return; + } + Object.assign(fullScreenContainer.style, { + left: `${values.left}px`, + top: `${values.top}px`, + width: `${values.width}px`, + height: `${values.height}px`, + "padding-top": `${values.paddingTop}px`, + }); + } + } + ); + fullScreenAnimation.current.start(); + } + }, [store.state.activePluginWrapperRef, fullScreenAnimation.current]); + + const handleLeaveFullScreenClick = React.useCallback(() => { + if (fullScreenAnimation.current) { + fullScreenAnimation.current.reset(); + } + if (store.state.activePluginWrapperRef?.current) { + const rect = + store.state.activePluginWrapperRef.current.getBoundingClientRect(); + + const contentWidthWithoutPadding = parseInt( + getComputedStyle(store.state.activePluginWrapperRef.current) + ?.width || "0" + ); + + const contentHeightWithoutPadding = + parseInt( + getComputedStyle(store.state.activePluginWrapperRef.current) + ?.height || "0" + ) - 32; + + const fullScreenContainer = Array.from( + store.state.activePluginWrapperRef.current.getElementsByClassName( + "WebvizPluginWrapper__FullScreenContainer" + ) + ).find((_, index) => index === 0) as HTMLDivElement | undefined; + + const initialFullScreenContainerPadding = + (fullScreenContainer && + getComputedStyle(fullScreenContainer)?.paddingTop) || + "0"; + + fullScreenAnimation.current = + new Animation( + 600, + 10, + [ + { + t: 0, + state: { + left: 0, + top: 0, + height: + window.innerHeight - + (parseInt( + initialFullScreenContainerPadding + ) + + 56), + width: window.innerWidth, + backdropOpacity: 1, + paddingTop: parseInt( + initialFullScreenContainerPadding + ), + }, + }, + { + t: 1, + state: { + left: rect.left, + top: rect.top, + height: contentHeightWithoutPadding, + width: contentWidthWithoutPadding, + backdropOpacity: 0, + paddingTop: + parseInt( + initialFullScreenContainerPadding + ) - 56, + }, + }, + ], + Animation.Bezier, + (values, t) => { + store.dispatch({ + type: StoreActions.SetBackdropOpacity, + payload: { opacity: values.backdropOpacity }, + }); + if (fullScreenContainer) { + if (t === 1) { + Object.assign(fullScreenContainer.style, { + left: "", + top: "", + width: "", + height: "", + position: "", + "padding-top": "", + "z-index": "", + "background-color": "", + }); + if ( + store.state.activePluginWrapperRef?.current + ) { + Object.assign( + store.state.activePluginWrapperRef + .current.style, + { + width: "", + height: "", + } + ); + } + return; + } + Object.assign(fullScreenContainer.style, { + left: `${values.left}px`, + top: `${values.top}px`, + width: `${values.width}px`, + height: `${values.height}px`, + "padding-top": `${values.paddingTop}px`, + }); + } + } + ); + fullScreenAnimation.current.start(); + } + }, [store.state.activePluginWrapperRef, fullScreenAnimation.current]); + + const handleDeprecationWarningsClick = React.useCallback(() => { + if (!deprecationWarnings) { + return; + } + for (const warning of deprecationWarnings) { + enqueueSnackbar(warning.message, { + variant: "warning", + action: ( + + More info + + ), + anchorOrigin: { + vertical: "bottom", + horizontal: "right", + }, + }); + } + }, [deprecationWarnings]); + + const handleDownloadClick = () => { + store.state.activeViewDownloadCallback(); + }; + + const openInNewTab = (url: string) => { + const newWindow = window.open(url, "_blank", "noopener,noreferrer"); + if (newWindow) newWindow.opener = null; + }; + + return ( +
+
handleFullScreenClick()} + > + + + +
+
handleScreenShotClick()} + > + + + +
+ {showDownload && ( +
+ + + +
+ )} +
+ {numDeprecationWarnings > 0 && ( +
+ + + + + +
+ )} + {pluginData?.contactPerson && ( +
setOpenAuthorDialog(true)} + > + + + +
+ )} + {tourSteps && ( +
setTourIsOpen(true)} + > + + + +
+ )} + {feedbackUrl && ( +
openInNewTab(feedbackUrl)} + > + + + +
+ )} + {pluginData?.contactPerson && ( + setOpenAuthorDialog(false)} + author={pluginData.contactPerson} + /> + )} + {tourSteps && ( + setTourIsOpen(false)} + /> + )} +
+ ); +}; diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.css b/react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.css new file mode 100644 index 00000000..edc75aa2 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.css @@ -0,0 +1,94 @@ +.WebvizViewList { + position: absolute; + max-width: 40vw; + background-color: white; + border: 1px #ccc solid; + border-radius: 4px; + z-index: 1300; + -webkit-box-shadow: 1px 2px 6px -1px rgba(0, 0, 0, 0.33); + box-shadow: 1px 2px 6px -1px rgba(0, 0, 0, 0.33); +} + +.WebvizViewList__Content { + z-index: 1; + width: 100%; + height: 100%; + background-color: white; + position: relative; + box-sizing: border-box; + padding-top: 8px; +} + +.WebvizViewList__Below { + margin-left: -151px; +} + +.WebvizViewList__Aside { + margin-top: -20px; +} + +.WebvizViewList__Arrow { + position: absolute; + background-color: white; + transform: rotateZ(45deg); + width: 20px; + height: 20px; + clip: rect(); + border: 1px #ccc solid; +} + +.WebvizViewList__ArrowBelow { + left: 50%; + margin: -11px; + top: 0px; +} + +.WebvizViewList__ArrowAside { + left: -10px; + margin: 0px; + top: 8px; +} + +.WebvizViewList__Group { + padding-left: 40px; + margin-top: 8px; + margin-bottom: 8px; + border-bottom: 1px #ccc solid; + border-top: 1px #ccc solid; + background-color: rgb(248, 248, 248); +} + +.WebvizViewList__Group:first-child { + margin-top: 0px; +} + +.WebvizViewList__GroupTitle { + font-weight: bold; + display: flex; + align-items: center; + height: 24px; + padding: 8px; +} + +.WebvizViewList__Item { + padding: 8px; + cursor: pointer; + border: 1px transparent solid; + display: flex; + align-items: center; + height: 24px; +} + +.WebvizViewList__Item:hover { + background-color: rgba(196, 196, 196, 0.22); +} + +.WebvizViewList__Item > div:first-child { + min-width: 40px; +} + +.WebvizViewList__Item__Text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.tsx b/react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.tsx new file mode 100644 index 00000000..2acd9e59 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/ViewList/view-list.tsx @@ -0,0 +1,162 @@ +import React from "react"; +import { Icon } from "@equinor/eds-core-react"; +import { check } from "@equinor/eds-icons"; +Icon.add({ check }); + +import { View } from "../../../../shared-types/webviz-content/webviz"; + +import { Point } from "../../../../shared-types/point"; + +import "./view-list.css"; +import { Tooltip } from "@material-ui/core"; + +export type ViewListProps = { + open: boolean; + location: "below" | "aside"; + views: View[]; + activeViewId: string; + anchorElement: HTMLElement | null; + onActiveViewChange: (viewId: string) => void; +}; + +export const ViewList: React.FC = (props: ViewListProps) => { + const [mainPosition, setMainPosition] = React.useState({ + x: 0, + y: 0, + }); + const [viewGroups, setViewGroups] = React.useState< + { + group: string; + views: View[]; + }[] + >([]); + + React.useLayoutEffect(() => { + if (props.anchorElement) { + const rect = props.anchorElement.getBoundingClientRect(); + if (props.location === "below") { + setMainPosition({ + x: rect.left + rect.width / 2, + y: rect.bottom + 20, + }); + } else { + setMainPosition({ + x: rect.right + 40, + y: Math.max(8, rect.top + rect.height / 2), + }); + } + } + }, [props.anchorElement]); + + React.useEffect(() => { + const viewList: { + group: string; + views: View[]; + }[] = []; + + const traversed_groups: string[] = []; + + props.views.forEach((view) => { + if (view.group === "") { + viewList.push({ + group: "", + views: [view], + }); + } else if (!traversed_groups.includes(view.group)) { + viewList.push({ + group: view.group, + views: props.views.filter((el) => el.group === view.group), + }); + traversed_groups.push(view.group); + } + }); + setViewGroups(viewList); + }, [props.views]); + + return ( +
+
+
+ {viewGroups.map((el) => { + if (el.group === "") { + return ( + +
+ props.onActiveViewChange(el.views[0].id) + } + > +
+ {el.views[0].id === + props.activeViewId && ( + + )} +
+
+ {el.views[0].name} +
+
+
+ ); + } else { + return ( +
+
+ {el.group} +
+ {el.views.map((view) => ( + +
+ props.onActiveViewChange( + view.id + ) + } + > +
+ {view.id === + props.activeViewId && ( + + )} +
+
+ {view.name} +
+
+
+ ))} +
+ ); + } + })} +
+
+ ); +}; diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.css b/react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.css new file mode 100644 index 00000000..dfc0c497 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.css @@ -0,0 +1,36 @@ +.WebvizViewSelector { + display: flex; + align-items: center; + border-radius: 4px; + cursor: pointer; + justify-content: space-evenly; + padding-left: 20px; + padding-right: 16px; + overflow: hidden; + transition: height 1s ease-in-out, opacity 0.5s ease-in-out; +} + +.WebvizViewSelector * { + display: block; +} + +.WebvizViewSelector:hover { + background-color: rgba(196, 196, 196, 0.22); +} + +.WebvizViewSelector > div { + transition: opacity 1s ease-in-out; +} + +.WebvizViewSelector__ViewName { + color: #007079; + flex-grow: 4; + text-align: center; + font-weight: bold; + font-size: 1rem; + line-height: 1rem; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding-left: 12px; +} diff --git a/react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.tsx b/react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.tsx new file mode 100644 index 00000000..67bf5628 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/components/ViewSelector/view-selector.tsx @@ -0,0 +1,167 @@ +import React from "react"; + +import { view_carousel, chevron_down } from "@equinor/eds-icons"; +import { Icon } from "@equinor/eds-core-react"; +Icon.add({ view_carousel, chevron_down }); + +import { StoreActions, useStore } from "../../../WebvizContentManager"; + +import "./view-selector.css"; +import { ViewList } from "../ViewList/view-list"; +import { Overlay } from "../../../Overlay"; +import ReactDOM from "react-dom"; +import { Tooltip } from "@material-ui/core"; + +type ViewSelectorProps = { + open: boolean; + width: number; +}; + +export const ViewSelector: React.FC = ( + props: ViewSelectorProps +) => { + const store = useStore(); + const [menuOpen, setMenuOpen] = React.useState(false); + const [isCollapsed, setIsCollapsed] = React.useState(false); + const transitionTimer = + React.useRef | null>(null); + + const viewCarouselRef = React.useRef(null); + const viewNameRef = React.useRef(null); + const [popupContainer, setPopupContainer] = + React.useState(null); + + React.useEffect(() => { + const container = document.createElement("div"); + document.body.appendChild(container); + setPopupContainer(container); + + return () => { + document.body.removeChild(container); + }; + }, []); + + React.useEffect(() => { + if (popupContainer) { + if (menuOpen) { + const ViewListElements = () => ( + <> + setMenuOpen(false)} + /> + + plugin.id === store.state.activePluginId + )?.views || [] + } + activeViewId={ + store.state.pluginsData.find( + (plugin) => + plugin.id === store.state.activePluginId + )?.activeViewId || "" + } + anchorElement={ + props.open + ? viewNameRef.current + : viewCarouselRef.current + } + location={props.open ? "below" : "aside"} + onActiveViewChange={handleSelectViewClick} + /> + + ); + ReactDOM.render(, popupContainer); + } else { + ReactDOM.render(<>, popupContainer); + } + } + }, [ + menuOpen, + popupContainer, + props.open, + store.state.activePluginId, + store.state.pluginsData, + ]); + + React.useEffect(() => { + return () => { + if (transitionTimer.current) { + clearTimeout(transitionTimer.current); + } + }; + }, []); + + React.useLayoutEffect(() => { + if (transitionTimer.current) { + clearTimeout(transitionTimer.current); + } + if (!props.open) { + transitionTimer.current = setTimeout( + () => setIsCollapsed(true), + 1000 + ); + } else { + setIsCollapsed(false); + } + }, [props.open, props.width]); + + const handleSelectViewClick = React.useCallback( + (view: string) => { + if (store) { + store.dispatch({ + type: StoreActions.SetActiveView, + payload: { viewId: view }, + }); + } + }, + [store] + ); + + const plugin = store.state.pluginsData.find( + (plugin) => plugin.id === store.state.activePluginId + ); + + const activeViewName = + plugin?.views.find((elm) => elm.id === plugin.activeViewId)?.name || + "No active view"; + + return ( + +
1 ? 56 : 0, + opacity: plugin?.views && plugin.views.length > 1 ? 1 : 0, + }} + onClick={() => setMenuOpen(true)} + > +
+ +
+
+ {plugin?.views && plugin.views.length > 1 && activeViewName} +
+
+ +
+
+
+ ); +}; diff --git a/react/src/lib/components/WebvizSettingsDrawer/index.ts b/react/src/lib/components/WebvizSettingsDrawer/index.ts new file mode 100644 index 00000000..b5ce9e66 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/index.ts @@ -0,0 +1 @@ +export { WebvizSettingsDrawer } from "./WebvizSettingsDrawer"; diff --git a/react/src/lib/components/WebvizSettingsDrawer/webviz-settings-drawer.css b/react/src/lib/components/WebvizSettingsDrawer/webviz-settings-drawer.css new file mode 100644 index 00000000..61ec48b0 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsDrawer/webviz-settings-drawer.css @@ -0,0 +1,44 @@ +.WebvizSettingsDrawer { + position: fixed; + background-color: #f8f8f8; + height: 100vh; + overflow: hidden; + top: 0; + left: 0; + z-index: 99; + display: flex; + flex-direction: column; + align-items: stretch; +} + +.WebvizSettingsDrawer__Transition { + transition: width 1s ease-in-out; +} + +.WebvizSettingsDrawer__Left { + -webkit-box-shadow: inset -14px 1px 18px -18px rgba(0, 0, 0, 0.32); + box-shadow: inset -14px 1px 18px -18px rgba(0, 0, 0, 0.32); +} + +.WebvizSettingsDrawer__Right { + -webkit-box-shadow: inset 14px 1px 18px -18px rgba(0, 0, 0, 0.32); + box-shadow: inset 14px 1px 18px -18px rgba(0, 0, 0, 0.32); +} + +.WebvizSettingsDrawer__TopButtons { + text-align: right; + margin-top: 22px; + margin-bottom: 10px; +} + +.WebvizSettingsDrawer__ToggleOpen, +.WebvizSettingsDrawer__ToggleOpen:hover { + transform: rotateY(180deg); + transition: transform 0.5s ease-in-out; +} + +.WebvizSettingsDrawer__ToggleClose, +.WebvizSettingsDrawer__ToggleClose:hover { + transform: rotateY(0deg); + transition: transform 0.5s ease-in-out; +} diff --git a/react/src/lib/components/WebvizSettingsGroup/WebvizSettingsGroup.tsx b/react/src/lib/components/WebvizSettingsGroup/WebvizSettingsGroup.tsx new file mode 100644 index 00000000..596b4e8b --- /dev/null +++ b/react/src/lib/components/WebvizSettingsGroup/WebvizSettingsGroup.tsx @@ -0,0 +1,186 @@ +import { Icon } from "@equinor/eds-core-react"; +import { chevron_down, chevron_up, world } from "@equinor/eds-icons"; +import { IconButton, Tooltip } from "@material-ui/core"; +import useSize from "@react-hook/size"; +import React from "react"; + +import "./webviz-settings-group.css"; +import PropTypes from "prop-types"; +import { useStore } from "../WebvizContentManager/WebvizContentManager"; + +Icon.add({ chevron_down, chevron_up, world }); + +export type WebvizSettingsGroupProps = { + id: string; + title: string; + open?: boolean; + viewId: string; + visibleInViews?: string[]; + notVisibleInViews?: string[]; + pluginId: string; + alwaysOpen?: boolean; + children?: React.ReactNode; + onToggle?: (id: string) => void; +}; + +export const WebvizSettingsGroup: React.FC = ( + props +) => { + const store = useStore(); + const contentRef = React.useRef(null); + const contentSize = useSize(contentRef); + const [isCompletelyVisible, setIsCompletelyVisible] = + React.useState( + (props.open !== undefined && props.open) || + (props.alwaysOpen !== undefined && props.alwaysOpen) + ); + const completelyVisibleTimeoutRef = + React.useRef | null>(null); + + const activePlugin = store.state.pluginsData.find( + (plugin) => plugin.id === store.state.activePluginId + ); + + let visible = true; + + // Is this settings group part of the current plugin? + if ( + props.pluginId !== store.state.activePluginId && + props.pluginId !== "" + ) { + visible = false; + } + + // Is the currently active plugin defined? + + if (visible && activePlugin === undefined) { + visible = false; + } + + // Is this settings group part of the current view or is it a shared setting? + if ( + visible && + activePlugin && + ((activePlugin.activeViewId !== props.viewId && props.viewId !== "") || + (props.visibleInViews && + !props.visibleInViews.includes(activePlugin.activeViewId)) || + (props.notVisibleInViews && + props.notVisibleInViews.includes(activePlugin.activeViewId))) + ) { + visible = false; + } + + React.useEffect(() => { + return () => { + if (completelyVisibleTimeoutRef.current) { + clearTimeout(completelyVisibleTimeoutRef.current); + } + }; + }, []); + + React.useEffect(() => { + if (props.alwaysOpen) { + return; + } + if (completelyVisibleTimeoutRef.current) { + clearTimeout(completelyVisibleTimeoutRef.current); + } + if (props.open) { + completelyVisibleTimeoutRef.current = setTimeout( + () => setIsCompletelyVisible(true), + 500 + ); + } else { + setIsCompletelyVisible(false); + } + }, [props.open, props.alwaysOpen]); + + const makeTitle = React.useCallback( + (children: React.ReactElement): React.ReactElement => { + if (props.alwaysOpen) { + return children; + } + return ( + + {children} + + ); + }, + [props.open, props.title, props.alwaysOpen] + ); + + return ( +
+ {makeTitle( +
props.onToggle && props.onToggle(props.id)} + > + {props.viewId === "" && ( +
+ +
+ )} +
+ {props.title} +
+ {!props.alwaysOpen && ( +
+ + + +
+ )} +
+ )} +
+
{props.children}
+
+
+ ); +}; + +WebvizSettingsGroup.propTypes = { + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + open: PropTypes.bool, + viewId: PropTypes.string.isRequired, + pluginId: PropTypes.string.isRequired, + visibleInViews: PropTypes.arrayOf(PropTypes.string.isRequired), + notVisibleInViews: PropTypes.arrayOf(PropTypes.string.isRequired), + alwaysOpen: PropTypes.bool, + children: PropTypes.node, + onToggle: PropTypes.func, +}; diff --git a/react/src/lib/components/WebvizSettingsGroup/index.ts b/react/src/lib/components/WebvizSettingsGroup/index.ts new file mode 100644 index 00000000..90b9143c --- /dev/null +++ b/react/src/lib/components/WebvizSettingsGroup/index.ts @@ -0,0 +1 @@ +export { WebvizSettingsGroup } from "./WebvizSettingsGroup"; diff --git a/react/src/lib/components/WebvizSettingsGroup/webviz-settings-group.css b/react/src/lib/components/WebvizSettingsGroup/webviz-settings-group.css new file mode 100644 index 00000000..8e8a9e26 --- /dev/null +++ b/react/src/lib/components/WebvizSettingsGroup/webviz-settings-group.css @@ -0,0 +1,48 @@ +.WebvizSettingsGroup__Title { + display: flex; + align-items: center; + padding-left: 20px; + padding-right: 4px; + cursor: pointer; +} + +.WebvizSettingsGroup__GlobalIcon { + display: flex; + align-items: center; + margin-right: 8px; +} + +.WebvizSettingsGroup__Label { + display: flex; + align-items: center; + padding-left: 8px; + padding-right: 8px; +} + +.WebvizSettingsGroup__TitleText { + flex-grow: 4; + text-align: left; + font-weight: bold; + line-height: 1em; +} + +.WebvizSettingsGroup__FlatContent { + padding: 8px; + padding-top: 16px; + padding-bottom: 16px; +} + +.WebvizSettingsGroup__Content { + -webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.32) inset; + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.32) inset; + border-bottom: 1px #ccc solid; + background-color: rgba(208, 208, 208, 0.35); + transition: height 0.3s ease-in-out; +} + +.WebvizSettingsGroup__Content > div { + padding-left: 20px; + padding-top: 16px; + padding-bottom: 16px; + padding-right: 20px; +} diff --git a/react/src/lib/components/WebvizView/WebvizView.tsx b/react/src/lib/components/WebvizView/WebvizView.tsx new file mode 100644 index 00000000..3ce3ce75 --- /dev/null +++ b/react/src/lib/components/WebvizView/WebvizView.tsx @@ -0,0 +1,76 @@ +import React from "react"; +import PropTypes from "prop-types"; + +import { + useStore, + StoreActions, +} from "../WebvizContentManager/WebvizContentManager"; + +import downloadFile from "../../utils/downloadFile"; + +import { + DownloadData, + DownloadDataPropTypes, +} from "../../shared-types/webviz-content/download-data"; + +import "./webviz-view.css"; + +export type ParentProps = { + data_requested: number | null; +}; + +export type WebvizViewProps = { + id: string; + showDownload: boolean; + download?: DownloadData; + setProps?: (props: ParentProps) => void; + children?: React.ReactNode; +}; + +export const WebvizView: React.FC = (props) => { + const [downloadRequests, setDownloadRequested] = React.useState(0); + + const store = useStore(); + + React.useEffect(() => { + if (props.download !== null && props.download !== undefined) { + downloadFile({ + filename: props.download.filename, + data: props.download.content, + mimeType: props.download.mime_type, + }); + if (props.setProps) { + props.setProps({ data_requested: null }); + } + } + }, [props.download, props.setProps]); + + React.useEffect(() => { + store.dispatch({ + type: StoreActions.SetActiveViewDownloadCallback, + payload: { + callback: () => { + const requests = downloadRequests + 1; + setDownloadRequested(requests); + if (props.setProps) { + props.setProps({ data_requested: requests }); + } + }, + }, + }); + }, [props.setProps, downloadRequests]); + + return ( +
+ {props.children} +
+ ); +}; + +WebvizView.propTypes = { + id: PropTypes.string.isRequired, + showDownload: PropTypes.bool.isRequired, + children: PropTypes.node, + download: PropTypes.shape(DownloadDataPropTypes), + setProps: PropTypes.func, +}; diff --git a/react/src/lib/components/WebvizView/index.ts b/react/src/lib/components/WebvizView/index.ts new file mode 100644 index 00000000..b3509555 --- /dev/null +++ b/react/src/lib/components/WebvizView/index.ts @@ -0,0 +1,2 @@ +export { WebvizView } from "./WebvizView"; +export { WebvizViewProps } from "./WebvizView"; diff --git a/react/src/lib/components/WebvizView/webviz-view.css b/react/src/lib/components/WebvizView/webviz-view.css new file mode 100644 index 00000000..4f58a7cf --- /dev/null +++ b/react/src/lib/components/WebvizView/webviz-view.css @@ -0,0 +1,5 @@ +.WebvizView { + width: 100%; + height: 100%; + display: flex; +} diff --git a/react/src/lib/components/WebvizViewElement/WebvizViewElement.tsx b/react/src/lib/components/WebvizViewElement/WebvizViewElement.tsx new file mode 100644 index 00000000..14ab7acd --- /dev/null +++ b/react/src/lib/components/WebvizViewElement/WebvizViewElement.tsx @@ -0,0 +1,577 @@ +import { Icon } from "@equinor/eds-core-react"; +import { IconButton, Tooltip } from "@material-ui/core"; +import { + settings, + download, + camera, + fullscreen, + fullscreen_exit, +} from "@equinor/eds-icons"; +import React from "react"; + +import { Animation } from "../../utils/Animation"; +import { Dialog } from "../Dialog"; +import PropTypes from "prop-types"; +import { + DownloadData, + DownloadDataPropTypes, +} from "../../shared-types/webviz-content/download-data"; +import html2canvas from "html2canvas"; +import downloadFile from "../../utils/downloadFile"; + +import "./webviz-view-element.css"; +import { + useStore, + StoreActions, +} from "../WebvizContentManager/WebvizContentManager"; + +Icon.add({ settings, download, camera, fullscreen, fullscreen_exit }); + +export type ParentProps = { + data_requested: number | null; +}; + +export type WebvizViewElementProps = { + id: string; + flexGrow?: number; + hidden?: boolean; + showDownload?: boolean; + screenshotFilename?: string; + download?: DownloadData; + setProps?: (props: ParentProps) => void; + children?: React.ReactNode; +}; + +type FullScreenAnimationParameters = { + left: number; + top: number; + height: number; + width: number; + backdropOpacity: number; + paddingTop: number; +}; + +type FlashAnimationParameters = { + opacity: number; +}; + +export const WebvizViewElement: React.FC = (props) => { + const store = useStore(); + //const [isLoading, setIsLoading] = React.useState(false); + const [isHovered, setIsHovered] = React.useState(false); + const [settingsVisible, setSettingsVisible] = + React.useState(false); + const [isFullScreen, setIsFullScreen] = React.useState(false); + const [downloadRequests, setDownloadRequested] = React.useState(0); + const [fullScreenContainerStyle, setFullScreenContainerStyle] = + React.useState({}); + const [contentStyle, setContentStyle] = React.useState( + {} + ); + const [spacerStyle, setSpacerStyle] = React.useState( + {} + ); + const contentRef = React.useRef(null); + const fullScreenContainerRef = React.useRef(null); + const fullScreenAnimation = + React.useRef | null>(null); + const flashAnimation = + React.useRef | null>(null); + + React.useEffect(() => { + if (props.download !== null && props.download !== undefined) { + downloadFile({ + filename: props.download.filename, + data: props.download.content, + mimeType: props.download.mime_type, + }); + if (props.setProps) { + props.setProps({ data_requested: null }); + } + } + }, [props.download]); + + const handleFullScreenClick = React.useCallback(() => { + if (fullScreenAnimation.current) { + fullScreenAnimation.current.reset(); + } + if (contentRef.current && fullScreenContainerRef.current) { + const rect = contentRef.current.getBoundingClientRect(); + + const contentWidth = contentRef.current.offsetWidth; + const contentWidthWithoutPadding = parseInt( + getComputedStyle(contentRef.current)?.width || "0" + ); + + const contentHeight = contentRef.current.offsetHeight; + const contentHeightWithoutPadding = parseInt( + getComputedStyle(contentRef.current)?.height || "0" + ); + + const style: React.CSSProperties = { + position: "fixed", + left: rect.left, + top: rect.top, + width: contentWidth, + height: contentHeight, + zIndex: 1199, + padding: parseInt( + getComputedStyle(contentRef.current)?.padding || "0" + ), + backgroundColor: "white", + boxShadow: "1px 2px 6px -1px rgba(0, 0, 0, 0.33)", + }; + + setIsFullScreen(true); + setFullScreenContainerStyle(style); + setContentStyle({ + zIndex: "auto", + flexGrow: 0, + }); + + setSpacerStyle({ + width: contentWidthWithoutPadding, + height: contentHeightWithoutPadding, + }); + + store.dispatch({ + type: StoreActions.SetFullScreenActions, + payload: { + actions: [ + { + actionName: "screenshot", + icon: "camera", + tooltip: "Save screenshot", + }, + { + actionName: "leave_fullscreen", + icon: "fullscreen_exit", + tooltip: "Leave full screen", + }, + ], + }, + }); + + store.dispatch({ + type: StoreActions.SetFullScreenActionsCallback, + payload: { + callback: (action: string) => { + if (action === "screenshot") { + handleScreenShotClick(); + } else if (action === "leave_fullscreen") { + handleLeaveFullScreenClick(); + } + }, + }, + }); + + Array.from( + fullScreenContainerRef.current.getElementsByClassName( + "dash-graph" + ) + ).forEach( + (el) => ((el as HTMLDivElement).style.visibility = "hidden") + ); + + fullScreenAnimation.current = + new Animation( + 600, + 10, + [ + { + t: 0, + state: { + left: rect.left, + top: rect.top, + height: contentHeight, + width: contentWidth, + backdropOpacity: 0, + paddingTop: parseInt( + getComputedStyle(contentRef.current) + ?.padding || "0" + ), + }, + }, + { + t: 1, + state: { + left: 0, + top: 0, + height: window.innerHeight, + width: window.innerWidth, + backdropOpacity: 1, + paddingTop: 70, + }, + }, + ], + Animation.Bezier, + (values, t) => { + store.dispatch({ + type: StoreActions.SetBackdropOpacity, + payload: { opacity: values.backdropOpacity }, + }); + if (t === 1) { + setFullScreenContainerStyle({ + ...style, + left: 0, + top: 0, + width: "100vw", + height: "100vh", + paddingTop: 70, + }); + setIsHovered(false); + if (fullScreenContainerRef.current) { + Array.from( + fullScreenContainerRef.current.getElementsByClassName( + "dash-graph" + ) + ).forEach( + (el) => + (( + el as HTMLDivElement + ).style.visibility = "visible") + ); + } + return; + } + setFullScreenContainerStyle({ + ...style, + left: values.left, + top: values.top, + width: values.width, + height: values.height, + paddingTop: values.paddingTop, + }); + } + ); + fullScreenAnimation.current.start(); + } + }, [ + fullScreenContainerStyle, + fullScreenAnimation.current, + contentRef.current, + store, + ]); + + const handleLeaveFullScreenClick = React.useCallback(() => { + if (fullScreenAnimation.current) { + fullScreenAnimation.current.reset(); + } + if (contentRef.current && fullScreenContainerRef.current) { + const rect = contentRef.current.getBoundingClientRect(); + + const contentWidth = contentRef.current.offsetWidth; + const contentHeight = contentRef.current.offsetHeight; + + const style: React.CSSProperties = { + position: "fixed", + zIndex: 1199, + backgroundColor: "#fff", + boxShadow: "1px 2px 6px -1px rgba(0, 0, 0, 0.33)", + padding: parseInt( + getComputedStyle(contentRef.current)?.padding || "0" + ), + }; + + Array.from( + fullScreenContainerRef.current.getElementsByClassName( + "dash-graph" + ) + ).forEach( + (el) => ((el as HTMLDivElement).style.visibility = "hidden") + ); + + fullScreenAnimation.current = + new Animation( + 600, + 10, + [ + { + t: 0, + state: { + left: 0, + top: 0, + height: window.innerHeight, + width: window.innerWidth, + backdropOpacity: 1, + paddingTop: 70, + }, + }, + { + t: 1, + state: { + left: rect.left, + top: rect.top, + height: contentHeight, + width: contentWidth, + backdropOpacity: 0, + paddingTop: parseInt( + getComputedStyle(contentRef.current) + ?.padding || "0" + ), + }, + }, + ], + Animation.Bezier, + (values, t) => { + store.dispatch({ + type: StoreActions.SetBackdropOpacity, + payload: { opacity: values.backdropOpacity }, + }); + if (t === 1) { + setFullScreenContainerStyle({}); + setContentStyle({}); + setSpacerStyle({}); + setIsFullScreen(false); + if (fullScreenContainerRef.current) { + Array.from( + fullScreenContainerRef.current.getElementsByClassName( + "dash-graph" + ) + ).forEach( + (el) => + (( + el as HTMLDivElement + ).style.visibility = "visible") + ); + } + return; + } + setFullScreenContainerStyle({ + ...style, + left: values.left, + top: values.top, + width: values.width, + height: values.height, + paddingTop: values.paddingTop, + }); + } + ); + fullScreenAnimation.current.start(); + } + }, [ + fullScreenContainerStyle, + fullScreenAnimation.current, + contentRef.current, + store, + ]); + + const handleScreenShotClick = () => { + if (fullScreenContainerRef.current) { + if (flashAnimation.current) { + flashAnimation.current.reset(); + } + + const flash = document.body.appendChild( + document.createElement("div") + ); + flash.className = "WebvizCameraFlash"; + + flashAnimation.current = new Animation( + 200, + 10, + [ + { + t: 0, + state: { opacity: 0 }, + }, + { + t: 0.5, + state: { opacity: 1 }, + }, + { t: 1, state: { opacity: 0 } }, + ], + Animation.Bezier, + (values, t) => { + if (fullScreenContainerRef.current) { + if (t === 0.5) { + const actions: Element[] = []; + if (isFullScreen) { + actions.push( + ...Array.from( + fullScreenContainerRef.current.getElementsByClassName( + "WebvizFullScreenMenu" + ) + ) + ); + actions.forEach( + (action) => + (( + action as HTMLDivElement + ).style.display = "none") + ); + } + flash.style.opacity = "0"; + html2canvas(fullScreenContainerRef.current, { + scrollX: -window.scrollX, + scrollY: -window.scrollY, + }).then((canvas) => + canvas.toBlob((blob) => { + if (blob !== null) { + downloadFile({ + filename: + props.screenshotFilename || + "webviz_screenshot.png", + data: blob, + mimeType: "image/png", + }); + } + }) + ); + if (isFullScreen) { + actions.forEach( + (action) => + (( + action as HTMLDivElement + ).style.display = "block") + ); + } + flash.style.opacity = "1"; + } + if (t === 1) { + document.body.removeChild(flash); + return; + } + flash.style.opacity = values.opacity.toString(); + } + } + ); + flashAnimation.current.start(); + } + }; + + const settings: React.ReactElement[] = []; + const content: React.ReactNode[] = []; + + React.Children.forEach(props.children, (child) => { + if ( + React.isValidElement(child) && + typeof child.props === "object" && + Object.keys(child.props).includes("_dashprivate_layout") && + child.props._dashprivate_layout.type === "WebvizSettingsGroup" + ) { + settings.push(child); + return; + } + content.push(child); + }); + + const handleDownloadClick = React.useCallback(() => { + const requests = downloadRequests + 1; + setDownloadRequested(requests); + if (props.setProps) { + props.setProps({ data_requested: requests }); + } + }, [setDownloadRequested, props.setProps]); + + if (props.hidden) { + return null; + } + + return ( +
setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > +
+
+
+ {content} +
+
+
+ {settings.length > 0 && ( +
+ + setSettingsVisible(true)} + > + + + +
+ )} +
+ {props.showDownload && ( +
+ + handleDownloadClick()}> + + + +
+ )} +
+ + + + + +
+
+ + + + + +
+
+ { + if (dialogProps.open === false) { + setSettingsVisible(false); + } + }} + > +
+ {settings.map((setting) => { + return React.cloneElement(setting, { + ...setting.props, + }); + })} +
+
+
+ ); +}; + +WebvizViewElement.propTypes = { + id: PropTypes.string.isRequired, + flexGrow: PropTypes.number, + hidden: PropTypes.bool, + showDownload: PropTypes.bool, + screenshotFilename: PropTypes.string, + download: PropTypes.shape(DownloadDataPropTypes), + setProps: PropTypes.func, + children: PropTypes.node, +}; diff --git a/react/src/lib/components/WebvizViewElement/index.ts b/react/src/lib/components/WebvizViewElement/index.ts new file mode 100644 index 00000000..b0ac7296 --- /dev/null +++ b/react/src/lib/components/WebvizViewElement/index.ts @@ -0,0 +1 @@ +export { WebvizViewElement } from "./WebvizViewElement"; diff --git a/react/src/lib/components/WebvizViewElement/webviz-view-element.css b/react/src/lib/components/WebvizViewElement/webviz-view-element.css new file mode 100644 index 00000000..62152281 --- /dev/null +++ b/react/src/lib/components/WebvizViewElement/webviz-view-element.css @@ -0,0 +1,122 @@ +.WebvizViewElement { + margin: 16px; + position: relative; + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: stretch; +} + +.WebvizViewElement__Backdrop { + position: fixed; + background-color: white; + z-index: 1299; + opacity: 0; + display: none; + width: 100vw; + height: 100vh; + top: 0; + left: 0; +} + +.WebvizViewElement__Content { + -webkit-box-shadow: 1px 2px 6px -1px rgba(0, 0, 0, 0.33); + box-shadow: 1px 2px 6px -1px rgba(0, 0, 0, 0.33); + background-color: white; + padding: 16px; + transition: width 5s ease-in-out; + z-index: 1; + flex-grow: 1; +} + +.WebvizViewElement__Content__Spacer { + display: block; + padding: 0px; +} + +.WebvizViewElement__Content__flat { + background-color: white; + padding: 16px; + z-index: 1; +} + +.WebvizViewElement__SettingsContainer { + max-height: 40vh; + width: 600px; + display: flex; + flex-direction: column; + align-items: stretch; +} + +.WebvizViewElement__SettingsContainer__Content { + padding-right: 24px; +} + +.WebvizViewElement__FullScreenContainer { + box-sizing: border-box; +} + +.WebvizViewElement__FullScreenActions { + position: fixed; + top: 0; + right: 0; + background-color: #f8f8f8; + padding: 12px; + border-bottom-left-radius: 16px; + cursor: pointer; + display: none; +} + +.WebvizViewElement__FullScreenActions:hover { + background-color: rgba(196, 196, 196, 0.22); +} + +.WebvizViewElement__Actions, +.WebvizViewElement__Actions__hover { + position: absolute; + right: 8px; + top: -12px; + background-color: #fcfcfc; + -webkit-box-shadow: 1px 2px 6px -1px rgba(0, 0, 0, 0.1); + box-shadow: 1px 2px 6px -1px rgba(0, 0, 0, 0.1); + border: 1px #ccc solid; + overflow: hidden; + display: flex; + align-items: center; + z-index: 100; + height: 24px; + border-radius: 8px; +} + +.WebvizViewElement__Actions { + opacity: 0; +} + +.WebvizViewElement__Actions__hover { + opacity: 1; +} + +.WebvizViewElement__Actions__hidden { + display: none; +} + +.WebvizViewElement__Actions > div { + opacity: 0.5; +} + +.WebvizViewElement__Actions__hover > div { + opacity: 1; +} + +.WebvizViewElement__ActionsContent > div { + text-align: center; +} + +.WebvizViewElement__ActionsContent .VerticalScrollBar { + width: 4px; + border-radius: 2px; +} + +.WebvizViewElement__Actions__Spacer { + flex-grow: 4; +} diff --git a/react/src/lib/hooks/usePosition.ts b/react/src/lib/hooks/usePosition.ts new file mode 100644 index 00000000..071b3053 --- /dev/null +++ b/react/src/lib/hooks/usePosition.ts @@ -0,0 +1,31 @@ +import { useEffect, useState, useRef } from "react"; + +import { Point } from "../shared-types/point"; + +export const usePosition = (ref: React.RefObject): Point => { + const [position, setPosition] = useState({ x: 0, y: 0 }); + const intervalRef = useRef | null>(null); + + useEffect(() => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + if (ref.current) { + intervalRef.current = setInterval(() => { + if (!ref.current) { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + return; + } + const boundingClientRect = ref.current.getBoundingClientRect(); + setPosition({ + x: boundingClientRect.left, + y: boundingClientRect.top, + }); + }); + } + }, [ref]); + + return position; +}; diff --git a/react/src/lib/index.ts b/react/src/lib/index.ts index 659fe918..a07b0a3c 100644 --- a/react/src/lib/index.ts +++ b/react/src/lib/index.ts @@ -21,12 +21,32 @@ import { Menu } from "./components/Menu"; import { Overlay } from "./components/Overlay"; import { ScrollArea } from "./components/ScrollArea"; import { Dialog } from "./components/Dialog"; +import { WebvizContentManager } from "./components/WebvizContentManager"; +import { WebvizPluginsWrapper } from "./components/WebvizPluginsWrapper"; +import { WebvizPluginWrapper } from "./components/WebvizPluginWrapper"; +import { WebvizSettingsDrawer } from "./components/WebvizSettingsDrawer"; +import { WebvizView } from "./components/WebvizView"; +import { WebvizViewElement } from "./components/WebvizViewElement"; +import { WebvizSettingsGroup } from "./components/WebvizSettingsGroup"; +import { WebvizPluginLayoutColumn } from "./components/WebvizPluginLayoutColumn/WebvizPluginLayoutColumn"; +import { WebvizPluginLayoutRow } from "./components/WebvizPluginLayoutRow/WebvizPluginLayoutRow"; +import { WebvizPluginLoadingIndicator } from "./components/WebvizPluginLoadingIndicator"; import "./components/FlexBox/flexbox.css"; import "./components/Layout"; export { + WebvizContentManager, + WebvizPluginWrapper, + WebvizPluginsWrapper, + WebvizSettingsDrawer, + WebvizView, + WebvizViewElement, WebvizPluginPlaceholder, + WebvizSettingsGroup, + WebvizPluginLayoutColumn, + WebvizPluginLayoutRow, + WebvizPluginLoadingIndicator, ColorScales, Select, SmartNodeSelector, diff --git a/react/src/lib/shared-types/margins.ts b/react/src/lib/shared-types/margins.ts new file mode 100644 index 00000000..6314998e --- /dev/null +++ b/react/src/lib/shared-types/margins.ts @@ -0,0 +1,6 @@ +export type Margins = { + left: number; + top: number; + right: number; + bottom: number; +}; diff --git a/react/src/lib/shared-types/webviz-content/contact-person.ts b/react/src/lib/shared-types/webviz-content/contact-person.ts new file mode 100644 index 00000000..aa4b04fe --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/contact-person.ts @@ -0,0 +1,13 @@ +import PropTypes from "prop-types"; + +export type ContactPerson = { + name: string; + email: string; + phone: string; +}; + +export const ContactPersonPropTypes = { + name: PropTypes.string.isRequired, + email: PropTypes.string.isRequired, + phone: PropTypes.string.isRequired, +}; diff --git a/react/src/lib/shared-types/webviz-content/deprecation-warning.ts b/react/src/lib/shared-types/webviz-content/deprecation-warning.ts new file mode 100644 index 00000000..ac305ccf --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/deprecation-warning.ts @@ -0,0 +1,11 @@ +import PropTypes from "prop-types"; + +export type DeprecationWarning = { + message: string; + url: string; +}; + +export const DeprecationWarningPropTypes = { + message: PropTypes.string.isRequired, + url: PropTypes.string.isRequired, +}; diff --git a/react/src/lib/shared-types/webviz-content/download-data.ts b/react/src/lib/shared-types/webviz-content/download-data.ts new file mode 100644 index 00000000..fe06412e --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/download-data.ts @@ -0,0 +1,13 @@ +import PropTypes from "prop-types"; + +export type DownloadData = { + filename: string; + content: string; + mime_type: string; +}; + +export const DownloadDataPropTypes = { + filename: PropTypes.string.isRequired, + content: PropTypes.string.isRequired, + mime_type: PropTypes.string.isRequired, +}; diff --git a/react/src/lib/shared-types/webviz-content/drawer-position.ts b/react/src/lib/shared-types/webviz-content/drawer-position.ts new file mode 100644 index 00000000..c1a60d2a --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/drawer-position.ts @@ -0,0 +1,4 @@ +export enum DrawerPosition { + Left = "left", + Right = "right", +} diff --git a/react/src/lib/shared-types/webviz-content/full-screen-menu.ts b/react/src/lib/shared-types/webviz-content/full-screen-menu.ts new file mode 100644 index 00000000..03a214b7 --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/full-screen-menu.ts @@ -0,0 +1,5 @@ +export type FullScreenAction = { + actionName: string; + icon: string; + tooltip: string; +}; diff --git a/react/src/lib/shared-types/webviz-content/tour-step.ts b/react/src/lib/shared-types/webviz-content/tour-step.ts new file mode 100644 index 00000000..e071dcfe --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/tour-step.ts @@ -0,0 +1,17 @@ +import PropTypes from "prop-types"; + +export type TourStep = { + elementId: string; + viewId: string; + settingsGroupId?: string | null; + viewElementId?: string | null; + content: string; +}; + +export const TourStepPropTypes = { + elementId: PropTypes.string.isRequired, + viewId: PropTypes.string.isRequired, + settingsGroupId: PropTypes.string, + viewElementId: PropTypes.string, + content: PropTypes.string.isRequired, +}; diff --git a/react/src/lib/shared-types/webviz-content/webviz.ts b/react/src/lib/shared-types/webviz-content/webviz.ts new file mode 100644 index 00000000..779a4538 --- /dev/null +++ b/react/src/lib/shared-types/webviz-content/webviz.ts @@ -0,0 +1,55 @@ +import PropTypes from "prop-types"; + +import { ContactPerson } from "./contact-person"; +import { DeprecationWarning } from "./deprecation-warning"; +import { TourStep } from "./tour-step"; + +export type ViewElement = { + id: string; + layout: React.ReactNode; + settings?: React.ReactNode; +}; + +export const ViewElementPropTypes = { + id: PropTypes.string.isRequired, + layout: PropTypes.node.isRequired, + settings: PropTypes.node, +}; + +export type SettingsGroup = { + id: string; + title: string; + content: React.ReactNode; +}; + +export const SettingsGroupPropTypes = { + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + content: PropTypes.node.isRequired, +}; + +export type View = { + id: string; + name: string; + group: string; + showDownload: boolean; +}; + +export const ViewPropTypes = { + id: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + group: PropTypes.string.isRequired, + showDownload: PropTypes.bool.isRequired, +}; + +export type PluginData = { + id: string; + name: string; + activeViewId: string; + views: View[]; + screenshotFilename?: string; + contactPerson?: ContactPerson; + deprecationWarnings?: DeprecationWarning[]; + feedbackUrl?: string; + tourSteps?: TourStep[]; +}; diff --git a/react/src/lib/utils/Animation.ts b/react/src/lib/utils/Animation.ts new file mode 100644 index 00000000..b8e66b44 --- /dev/null +++ b/react/src/lib/utils/Animation.ts @@ -0,0 +1,140 @@ +export class Animation { + private duration: number; + private states: { t: number; state: T }[]; + private transitionFunction: (t: number) => number; + private animationFunction: (values: T, t: number) => void; + private animationInterval: ReturnType | null; + private deltaT: number; + private currentTime: number; + + constructor( + durationMs: number, + deltaTMs: number, + states: { t: number; state: T }[], + transitionFunction: (t: number) => number, + animationFunction: (values: T, t: number) => void + ) { + this.duration = durationMs; + this.deltaT = deltaTMs; + this.states = states; + this.transitionFunction = transitionFunction; + this.animationInterval = null; + this.animationFunction = animationFunction; + this.currentTime = 0; + + if ( + !states.find((state) => state.t === 0) || + !states.find((state) => state.t === 1) + ) { + throw "You must define a start and an end state (t=0, t=1)."; + } + } + + start(): void { + this.currentTime = 0; + this.animationInterval = setInterval( + () => this.handleAnimationStep(), + this.deltaT + ); + } + + stop(): void { + if (this.animationInterval) { + clearInterval(this.animationInterval); + } + } + + reset(): void { + if (this.animationInterval) { + clearInterval(this.animationInterval); + } + this.currentTime = 0; + } + + handleAnimationStep(): void { + this.animationFunction( + this.getState(this.currentTime), + this.currentTime / this.duration + ); + if (this.currentTime + this.deltaT <= this.duration) { + this.currentTime += this.deltaT; + } else { + this.currentTime = this.duration; + if (this.animationInterval) { + clearInterval(this.animationInterval); + } + } + } + + private findPreviousState(t: number): number { + let closestT = 0; + this.states.forEach((state) => { + if (state.t <= t && t < 1 && t - state.t < t - closestT) { + closestT = state.t; + } + }); + return closestT; + } + + private findNextState(t: number): number { + let closestT = 1; + this.states.forEach((state) => { + if (state.t > t && state.t - t < closestT - t) { + closestT = state.t; + } + }); + if (t === 1) { + return 1; + } + return closestT; + } + + getState(time: number): T { + const values: { [key: string]: number } = {}; + const currentT = time / this.duration; + + const previousStateT = this.findPreviousState(currentT); + const previousState = this.states.find( + (state) => state.t === previousStateT + )?.state; + const nextStateT = this.findNextState(currentT); + const nextState = this.states.find( + (state) => state.t === nextStateT + )?.state; + + if ( + previousState && + nextState && + nextStateT !== undefined && + previousStateT !== undefined + ) { + Object.keys(previousState).forEach((key) => { + const delta = nextState[key] - previousState[key]; + values[key] = + previousState[key] + + ((this.transitionFunction(currentT) - + this.transitionFunction(previousStateT)) / + (this.transitionFunction(nextStateT) - + this.transitionFunction(previousStateT))) * + delta; + }); + } + + return values as T; + } + + static QuadEaseInOut(t: number): number { + if (t <= 0.5) { + return t * t; + } + return -(t - 1) * (t - 1) + 1; + } + + static Linear(t: number): number { + return t; + } + + static Bezier(t: number): number { + return t * t * (3 - 2 * t); + } +} diff --git a/react/src/lib/components/WebvizPluginPlaceholder/utils/downloadFile.ts b/react/src/lib/utils/downloadFile.ts similarity index 100% rename from react/src/lib/components/WebvizPluginPlaceholder/utils/downloadFile.ts rename to react/src/lib/utils/downloadFile.ts diff --git a/webviz_core_components/WebvizPluginPlaceholderWrapper.py b/webviz_core_components/WebvizPluginPlaceholderWrapper.py new file mode 100644 index 00000000..0bfb2dde --- /dev/null +++ b/webviz_core_components/WebvizPluginPlaceholderWrapper.py @@ -0,0 +1,13 @@ +from functools import wraps +import logging + +from .WebvizPluginPlaceholder import WebvizPluginPlaceholder + + +class WebvizPluginPlaceholderWrapper(WebvizPluginPlaceholder): + @wraps(WebvizPluginPlaceholder) + def __init__(self, *args, **kwargs) -> None: + super().__init__(*args, **kwargs) + logging.debug( + "WebvizPluginPlaceholder has been deprecated. Please consider switching to the Webviz Layout Framework." + ) diff --git a/webviz_core_components/__init__.py b/webviz_core_components/__init__.py index 73f78803..81d26632 100644 --- a/webviz_core_components/__init__.py +++ b/webviz_core_components/__init__.py @@ -14,6 +14,10 @@ from .wrapped_components import * from .wrapped_components import __all__ as wrapped_components +from .WebvizPluginPlaceholderWrapper import ( + WebvizPluginPlaceholderWrapper as WebvizPluginPlaceholder, +) + __all__ += wrapped_components try: